Re: usb modem "Can't setup transfer"

2015-11-11 Thread Hans Petter Selasky

On 11/11/15 04:37, Alfred Perlstein wrote:

Hello,

A friend gave me a usb modem recently.  The model is:
Multi-Tech Systems - Multi-Modem USB - MT5634ZBA

The Linux driver info is here:
ftp://ftp.multitech.com/usb/usb-linux2.txt

When I plug this device into FreeBSD I get a ugen0 device.

So I tried hacking into the driver itself:

diff --git a/sys/dev/usb/serial/umodem.c b/sys/dev/usb/serial/umodem.c
index c1e8812..9886294 100644
--- a/sys/dev/usb/serial/umodem.c
+++ b/sys/dev/usb/serial/umodem.c
@@ -136,6 +136,7 @@ static const STRUCT_USB_HOST_ID umodem_host_devs[] = {
 {USB_VPI(USB_VENDOR_KYOCERA, USB_PRODUCT_KYOCERA_AHK3001V, 1)},
 {USB_VPI(USB_VENDOR_SIERRA, USB_PRODUCT_SIERRA_MC5720, 1)},
 {USB_VPI(USB_VENDOR_CURITEL, USB_PRODUCT_CURITEL_PC5740, 1)},
+   {USB_VP(0x06e0, 0xf107)},
  };

  /*


Now I get the following:

Nov 10 19:19:54 spigot kernel: ugen3.3:  at
usbus3
Nov 10 19:19:54 spigot kernel: umodem0:  on
usbus3
Nov 10 19:19:54 spigot kernel: umodem0: data interface 1, has CM over
data, has no break
Nov 10 19:19:54 spigot kernel: umodem0: Can't setup transfer
Nov 10 19:19:54 spigot kernel: device_attach: umodem0 attach returned 6

I read the Linux driver and it seems pretty similar, although it does
look like they have a ton more quirks and edge cases the handle.  The
file in Linux I'm looking at is: linux/drivers/usb/class/cdc-acm.c (this
seems to make the most sense given the instructions given at
ftp://ftp.multitech.com/usb/usb-linux2.txt).

I tried turning on sysctl hw.usb.debug=10 however after doing so it
didn't seem to want to probe anymore.

Any ideas?

I can ship this modem to someone if they are interested and have a good
idea how to fix.


Hi,

Can you send the configuration descriptor dump:

usbconfig -d X.Y dump_device_desc dump_curr_config_desc

Maybe the modem fits into the U3G driver.

--HPS
___
freebsd-usb@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/freebsd-usb
To unsubscribe, send any mail to "freebsd-usb-unsubscr...@freebsd.org"


Re: usb modem "Can't setup transfer"

2015-11-11 Thread Alfred Perlstein



On 11/11/15 12:36 AM, Hans Petter Selasky wrote:

On 11/11/15 04:37, Alfred Perlstein wrote:

Hello,

A friend gave me a usb modem recently.  The model is:
Multi-Tech Systems - Multi-Modem USB - MT5634ZBA

The Linux driver info is here:
ftp://ftp.multitech.com/usb/usb-linux2.txt

When I plug this device into FreeBSD I get a ugen0 device.

So I tried hacking into the driver itself:

diff --git a/sys/dev/usb/serial/umodem.c b/sys/dev/usb/serial/umodem.c
index c1e8812..9886294 100644
--- a/sys/dev/usb/serial/umodem.c
+++ b/sys/dev/usb/serial/umodem.c
@@ -136,6 +136,7 @@ static const STRUCT_USB_HOST_ID 
umodem_host_devs[] = {

 {USB_VPI(USB_VENDOR_KYOCERA, USB_PRODUCT_KYOCERA_AHK3001V, 1)},
 {USB_VPI(USB_VENDOR_SIERRA, USB_PRODUCT_SIERRA_MC5720, 1)},
 {USB_VPI(USB_VENDOR_CURITEL, USB_PRODUCT_CURITEL_PC5740, 1)},
+   {USB_VP(0x06e0, 0xf107)},
  };

  /*


Now I get the following:

Nov 10 19:19:54 spigot kernel: ugen3.3:  at
usbus3
Nov 10 19:19:54 spigot kernel: umodem0:  on
usbus3
Nov 10 19:19:54 spigot kernel: umodem0: data interface 1, has CM over
data, has no break
Nov 10 19:19:54 spigot kernel: umodem0: Can't setup transfer
Nov 10 19:19:54 spigot kernel: device_attach: umodem0 attach returned 6

I read the Linux driver and it seems pretty similar, although it does
look like they have a ton more quirks and edge cases the handle.  The
file in Linux I'm looking at is: linux/drivers/usb/class/cdc-acm.c (this
seems to make the most sense given the instructions given at
ftp://ftp.multitech.com/usb/usb-linux2.txt).

I tried turning on sysctl hw.usb.debug=10 however after doing so it
didn't seem to want to probe anymore.

Any ideas?

I can ship this modem to someone if they are interested and have a good
idea how to fix.


Hi,

Can you send the configuration descriptor dump:

usbconfig -d X.Y dump_device_desc dump_curr_config_desc

Maybe the modem fits into the U3G driver.

--HPS


Hans,

Moving it to u3g on -current gives nearly same error:
Nov 11 11:38:48 spigot kernel: u3g0:
Nov 11 11:38:48 spigot kernel:  on usbus3
Nov 11 11:38:49 spigot kernel: u3g0: no ports found
Nov 11 11:38:49 spigot kernel: device_attach: u3g0 attach returned 6
Nov 11 11:38:56 spigot kernel: ugen3.3:  at 
usbus3 (disconnected)

Nov 11 11:39:00 spigot kernel: ugen3.3:  at usbus3
Nov 11 11:39:00 spigot kernel: u3g0:  on usbus3
Nov 11 11:39:00 spigot kernel: u3g0: no ports found
Nov 11 11:39:00 spigot kernel: device_attach: u3g0 attach returned 6



Output from usbconfig is as follows:

/usr/home/alfred # usbconfig -d 3.3 dump_device_desc dump_curr_config_desc
ugen3.3:  at usbus3, cfg=0 
md=HOST spd=FULL (12Mbps) pwr=ON (400mA)


  bLength = 0x0012
  bDescriptorType = 0x0001
  bcdUSB = 0x0100
  bDeviceClass = 0x0002  
  bDeviceSubClass = 0x
  bDeviceProtocol = 0x
  bMaxPacketSize0 = 0x0008
  idVendor = 0x06e0
  idProduct = 0xf107
  bcdDevice = 0x0100
  iManufacturer = 0x0001  
  iProduct = 0x0002  
  iSerialNumber = 0x  
  bNumConfigurations = 0x0002


 Configuration index 0

bLength = 0x0009
bDescriptorType = 0x0002
wTotalLength = 0x0029
bNumInterfaces = 0x0002
bConfigurationValue = 0x0001
iConfiguration = 0x0003  
bmAttributes = 0x00a0
bMaxPower = 0x00c8

Interface 0
  bLength = 0x0009
  bDescriptorType = 0x0004
  bInterfaceNumber = 0x
  bAlternateSetting = 0x
  bNumEndpoints = 0x
  bInterfaceClass = 0x00ff  
  bInterfaceSubClass = 0x00ff
  bInterfaceProtocol = 0x00ff
  iInterface = 0x0004  


Interface 1
  bLength = 0x0009
  bDescriptorType = 0x0004
  bInterfaceNumber = 0x0001
  bAlternateSetting = 0x
  bNumEndpoints = 0x0002
  bInterfaceClass = 0x00ff  
  bInterfaceSubClass = 0x00ff
  bInterfaceProtocol = 0x00ff
  iInterface = 0x0005  

 Endpoint 0
bLength = 0x0007
bDescriptorType = 0x0005
bEndpointAddress = 0x0002  
bmAttributes = 0x0002  
wMaxPacketSize = 0x0010
bInterval = 0x
bRefresh = 0x
bSynchAddress = 0x

 Endpoint 1
bLength = 0x0007
bDescriptorType = 0x0005
bEndpointAddress = 0x0084  
bmAttributes = 0x0003  
wMaxPacketSize = 0x003f
bInterval = 0x0002
bRefresh = 0x
bSynchAddress = 0x



___
freebsd-usb@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/freebsd-usb
To unsubscribe, send any mail to "freebsd-usb-unsubscr...@freebsd.org"


Re: How to access a FTDI usb device with a custom vendor and product id's

2015-11-11 Thread Burton Sampley
I added a line to the table, but it seems to have failed since I used the
VID# instead of the VID# name.  Where are the VID names mapped to the
VID#'s?  Apparently, I know enough about coding to be dangerous.  I'll do
some more digging to try to fix my own error.

Here's a diff of the original source and my modified source:

[/usr/src/sys/dev/usb/serial]$ /usr/bin/diff ./uftdi.c ./uftdi.c.ORIG
914d913
<   UFTDI_DEV(2100, 9e56, 0),
[/usr/src/sys/dev/usb/serial]$

Here's the compile splattage:

===> usb/uftdi (all)
cc  -O2 -pipe  -fno-strict-aliasing -Werror -D_KERNEL -DKLD_MODULE
-nostdinc   -DHAVE_KERNEL_OPTION_HEADERS -include
/usr/obj/usr/src/sys/GENERIC/opt_global.h -I. -I@ -I@/contrib/altq
-fno-common -g -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer
-I/usr/obj/usr/src/sys/GENERIC  -mno-aes -mno-avx -mcmodel=kernel
-mno-red-zone -mno-mmx -mno-sse -msoft-float
 -fno-asynchronous-unwind-tables -ffreestanding -fstack-protector -gdwarf-2
-std=iso9899:1999 -Qunused-arguments  -fstack-protector -Wall
-Wredundant-decls -Wnested-externs -Wstrict-prototypes
 -Wmissing-prototypes -Wpointer-arith -Winline -Wcast-qual  -Wundef
-Wno-pointer-sign -fformat-extensions  -Wmissing-include-dirs
-fdiagnostics-show-option  -Wno-error-tautological-compare
-Wno-error-empty-body  -Wno-error-parentheses-equality
-Wno-error-unused-function   -c
/usr/src/sys/modules/usb/uftdi/../../../dev/usb/serial/uftdi.c -o uftdi.o
/usr/src/sys/modules/usb/uftdi/../../../dev/usb/serial/uftdi.c:914:2:
error: use of undeclared identifier 'USB_VENDOR_2100'
UFTDI_DEV(2100, 9e56, 0),
^
/usr/src/sys/modules/usb/uftdi/../../../dev/usb/serial/uftdi.c:275:13:
note: expanded from macro 'UFTDI_DEV'
  { USB_VPI(USB_VENDOR_##v, USB_PRODUCT_##v##_##p, i) }
^
:167:1: note: expanded from here
USB_VENDOR_2100
^
@/dev/usb/usbdi.h:332:14: note: expanded from macro 'USB_VPI'
  USB_VENDOR(vend), USB_PRODUCT(prod), USB_DRIVER_INFO(info)
 ^
@/dev/usb/usbdi.h:323:40: note: expanded from macro 'USB_VENDOR'
  .match_flag_vendor = 1, .idVendor = (vend)
   ^
/usr/src/sys/modules/usb/uftdi/../../../dev/usb/serial/uftdi.c:914:2:
error: use of undeclared identifier 'USB_PRODUCT_2100_9e56'
/usr/src/sys/modules/usb/uftdi/../../../dev/usb/serial/uftdi.c:275:29:
note: expanded from macro 'UFTDI_DEV'
  { USB_VPI(USB_VENDOR_##v, USB_PRODUCT_##v##_##p, i) }
^
:170:1: note: expanded from here
USB_PRODUCT_2100_9e56
^
@/dev/usb/usbdi.h:332:33: note: expanded from macro 'USB_VPI'
  USB_VENDOR(vend), USB_PRODUCT(prod), USB_DRIVER_INFO(info)
^
@/dev/usb/usbdi.h:326:42: note: expanded from macro 'USB_PRODUCT'
  .match_flag_product = 1, .idProduct = (prod)
 ^
/usr/src/sys/modules/usb/uftdi/../../../dev/usb/serial/uftdi.c:1067:48:
error: invalid application of 'sizeof' to an incomplete type 'const struct
usb_device_id []'
id = usbd_lookup_id_by_info(uftdi_devs, sizeof(uftdi_devs),
  ^~~~
3 errors generated.
*** Error code 1

Stop.
make[5]: stopped in /usr/src/sys/modules/usb/uftdi
*** Error code 1

Stop.
make[4]: stopped in /usr/src/sys/modules/usb
*** Error code 1

Stop.
make[3]: stopped in /usr/src/sys/modules
*** Error code 1

Stop.
make[2]: stopped in /usr/obj/usr/src/sys/GENERIC
*** Error code 1

Stop.
make[1]: stopped in /usr/src
*** Error code 1

Stop.
make: stopped in /usr/src
[/usr/src]$

On Tue, Nov 10, 2015 at 12:20 PM, Hans Petter Selasky 
wrote:

> On 11/10/15 18:14, Burton Sampley wrote:
>
>> Thank you.  I do not have the kernel source on this system, so I will need
>> to setup the kernel source, then modify the table in uftdi.c with the
>> custom entries, then recompile the module and reload it. It may take some
>> time for me to complete these actions.  Should I report back to this email
>> list if this solution resolves my problem?
>>
>
> Hi,
>
> Please keep us updated. Nice to hear some success stories too ;-)
>
> And also there is #bsdusb on EF-net.
>
> --HPS
>



-- 
Your mind is like a parachute, it works much better when it is open.
___
freebsd-usb@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/freebsd-usb
To unsubscribe, send any mail to "freebsd-usb-unsubscr...@freebsd.org"


Re: How to access a FTDI usb device with a custom vendor and product id's

2015-11-11 Thread Warner Losh
On Nov 10, 2015 9:53 AM, "Hans Petter Selasky"  wrote:
>
> On 11/10/15 17:50, Ian Lepore wrote:
>>
>> On Tue, 2015-11-10 at 17:40 +0100, Hans Petter Selasky wrote:
>>>
>>> On 11/10/15 17:28, Burton Sampley wrote:

 SYSFS{idVendor}=="2100", SYSFS{idProduct}=="9e56",
 RUN+="/sbin/modprobe -q
 ftdi_sio vendor=0x2100 product=0x9e56"

 How do I accomplish the same in FreeBSD?  When the cable is plugged
 in, I
 get the following in /var/log/messages:
>>>
>>>
>>> Hi,
>>>
>>> See examples here:
>>>
>>> https://svnweb.freebsd.org/ports/head/multimedia/webcamd/files/webcam
>>> d.conf.in?view=markup
>>>
>>> --HPS
>>
>>
>> But the info in those examples won't cause the uftdi driver to attach
>> to the device (as shown in the linux-based example), that can only
>> happen if the vid/pid are added to the table in the driver itself,
>> right?  I don't remember any mechanism in our usb world for forcing a
>> driver to attach to a device that isn't compiled into the driver's
>> usb_device_id array.
>>
>> On the other hand, if the device is going to be accessed via libusb
>> and/or libftdi, I'm not sure the tty driver needs to attach to it at
>> all; don't those libraries work purely through the ugen device?
>>
>
> Right. This might be a feature for:
>
> https://reviews.freebsd.org/D3458

No. That's different. I need to integrate the code from my talk a few years
ago
that did the right mappings so the device driver knew what to do with the
device.

Warner
> --HPS
>
>
> ___
> freebsd-usb@freebsd.org mailing list
> https://lists.freebsd.org/mailman/listinfo/freebsd-usb
> To unsubscribe, send any mail to "freebsd-usb-unsubscr...@freebsd.org"
___
freebsd-usb@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/freebsd-usb
To unsubscribe, send any mail to "freebsd-usb-unsubscr...@freebsd.org"


Re: How to access a FTDI usb device with a custom vendor and product id's

2015-11-11 Thread Ian Lepore
On Wed, 2015-11-11 at 16:28 -0500, Burton Sampley wrote:
> I added a line to the table, but it seems to have failed since I used
> the
> VID# instead of the VID# name.  Where are the VID names mapped to the
> VID#'s?  Apparently, I know enough about coding to be dangerous. 
>  I'll do
> some more digging to try to fix my own error.
> 
> Here's a diff of the original source and my modified source:
> 
> [/usr/src/sys/dev/usb/serial]$ /usr/bin/diff ./uftdi.c ./uftdi.c.ORIG
> 914d913
> <   UFTDI_DEV(2100, 9e56, 0),
> [/usr/src/sys/dev/usb/serial]$
> 
> Here's the compile splattage:

The VID and PID names are in the file src/sys/dev/usb/usbdevs.

-- Ian
___
freebsd-usb@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/freebsd-usb
To unsubscribe, send any mail to "freebsd-usb-unsubscr...@freebsd.org"


Re: How to access a FTDI usb device with a custom vendor and product id's

2015-11-11 Thread Burton Sampley
Ian,

Thank you for your prompt reply.

Looking at the usbdevs file, I found 0x2100, but there is no entry for
0x9e56, which is my device.  So, I'm assuming that changing uftdi.c to the
correct name for the VID will only solve part of my problem.  I will
further assume that I need to find the correct/proper entry for usbdevs as
well.  Is this a correct assumption?  If so, then how/where can I find the
proper entry for usbdevs?

Here's the 2 closest entries:

/* RT system products */
product RTSYSTEMS CT29B 0x9e54  FTDI compatible adapter
product RTSYSTEMS SERIAL_VX70x9e52  FTDI compatible adapter

For me, what appears to be the last piece of the puzzle is to find the
correct name to place in the 3rd field.  Based on the following:

$ /usr/local/bin/sudo /usr/sbin/usbconfig -d ugen2.3 dump_device_desc
ugen2.3:  at usbus2, cfg=0 md=HOST spd=FULL
(12Mbps) pwr=ON (90mA)

  bLength = 0x0012
  bDescriptorType = 0x0001
  bcdUSB = 0x0200
  bDeviceClass = 0x  
  bDeviceSubClass = 0x
  bDeviceProtocol = 0x
  bMaxPacketSize0 = 0x0008
  idVendor = 0x2100
  idProduct = 0x9e56
  bcdDevice = 0x0600
  iManufacturer = 0x0001  
  iProduct = 0x0002  
  iSerialNumber = 0x0003  
  bNumConfigurations = 0x0001

$

does "CT-62B" look reasonable?


Regards,

-Burton

On Wed, Nov 11, 2015 at 4:38 PM, Ian Lepore  wrote:

> On Wed, 2015-11-11 at 16:28 -0500, Burton Sampley wrote:
> > I added a line to the table, but it seems to have failed since I used
> > the
> > VID# instead of the VID# name.  Where are the VID names mapped to the
> > VID#'s?  Apparently, I know enough about coding to be dangerous.
> >  I'll do
> > some more digging to try to fix my own error.
> >
> > Here's a diff of the original source and my modified source:
> >
> > [/usr/src/sys/dev/usb/serial]$ /usr/bin/diff ./uftdi.c ./uftdi.c.ORIG
> > 914d913
> > <   UFTDI_DEV(2100, 9e56, 0),
> > [/usr/src/sys/dev/usb/serial]$
> >
> > Here's the compile splattage:
>
> The VID and PID names are in the file src/sys/dev/usb/usbdevs.
>
> -- Ian
>



-- 
Your mind is like a parachute, it works much better when it is open.
___
freebsd-usb@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/freebsd-usb
To unsubscribe, send any mail to "freebsd-usb-unsubscr...@freebsd.org"


Re: How to access a FTDI usb device with a custom vendor and product id's

2015-11-11 Thread Ian Lepore
On Wed, 2015-11-11 at 16:57 -0500, Burton Sampley wrote:
> Ian,
> 
> Thank you for your prompt reply.
> 
> Looking at the usbdevs file, I found 0x2100, but there is no entry
> for
> 0x9e56, which is my device.  So, I'm assuming that changing uftdi.c
> to the
> correct name for the VID will only solve part of my problem.  I will
> further assume that I need to find the correct/proper entry for
> usbdevs as
> well.  Is this a correct assumption?  If so, then how/where can I
> find the
> proper entry for usbdevs?
> 
> Here's the 2 closest entries:
> 
> /* RT system products */
> product RTSYSTEMS CT29B 0x9e54  FTDI compatible adapter
> product RTSYSTEMS SERIAL_VX70x9e52  FTDI compatible
> adapter
> 
> For me, what appears to be the last piece of the puzzle is to find
> the
> correct name to place in the 3rd field.  Based on the following:
> 
> $ /usr/local/bin/sudo /usr/sbin/usbconfig -d ugen2.3 dump_device_desc
> ugen2.3:  at usbus2, cfg=0 md=HOST
> spd=FULL
> (12Mbps) pwr=ON (90mA)
> 
>   bLength = 0x0012
>   bDescriptorType = 0x0001
>   bcdUSB = 0x0200
>   bDeviceClass = 0x  
>   bDeviceSubClass = 0x
>   bDeviceProtocol = 0x
>   bMaxPacketSize0 = 0x0008
>   idVendor = 0x2100
>   idProduct = 0x9e56
>   bcdDevice = 0x0600
>   iManufacturer = 0x0001  
>   iProduct = 0x0002  
>   iSerialNumber = 0x0003  
>   bNumConfigurations = 0x0001
> 
> $
> 
> does "CT-62B" look reasonable?
> 

Yep, you'll have to add a new entry to usbdevs for the the 0x9e56
device.  CT62B seems like a good name (can't put the dash in the name
for C syntax reasons).

-- Ian

> 
> Regards,
> 
> -Burton
> 
> On Wed, Nov 11, 2015 at 4:38 PM, Ian Lepore  wrote:
> 
> > On Wed, 2015-11-11 at 16:28 -0500, Burton Sampley wrote:
> > > I added a line to the table, but it seems to have failed since I
> > > used
> > > the
> > > VID# instead of the VID# name.  Where are the VID names mapped to
> > > the
> > > VID#'s?  Apparently, I know enough about coding to be dangerous.
> > >  I'll do
> > > some more digging to try to fix my own error.
> > > 
> > > Here's a diff of the original source and my modified source:
> > > 
> > > [/usr/src/sys/dev/usb/serial]$ /usr/bin/diff ./uftdi.c
> > > ./uftdi.c.ORIG
> > > 914d913
> > > <   UFTDI_DEV(2100, 9e56, 0),
> > > [/usr/src/sys/dev/usb/serial]$
> > > 
> > > Here's the compile splattage:
> > 
> > The VID and PID names are in the file src/sys/dev/usb/usbdevs.
> > 
> > -- Ian
> > 
> 
> 
> 
___
freebsd-usb@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/freebsd-usb
To unsubscribe, send any mail to "freebsd-usb-unsubscr...@freebsd.org"