Re: usb modem "Can't setup transfer"
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"
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
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 Selaskywrote: > 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
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
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
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 Leporewrote: > 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
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 Leporewrote: > > > 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"