Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 11 Nov 2015 11:51:39 -0800
From:      Alfred Perlstein <alfred@freebsd.org>
To:        Hans Petter Selasky <hps@selasky.org>, usb@freebsd.org
Subject:   Re: usb modem "Can't setup transfer"
Message-ID:  <56439C4B.6060407@freebsd.org>
In-Reply-To: <5642FE24.4050408@selasky.org>
References:  <5642B7E4.505@freebsd.org> <5642FE24.4050408@selasky.org>

next in thread | previous in thread | raw e-mail | index | archive | help


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: <Multi-Tech Systems, Inc.> at
>> usbus3
>> Nov 10 19:19:54 spigot kernel: umodem0: <Multi-Tech Win95 Modem USB> 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: <Multi-Tech Win95 Modem USB> 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: <Multi-Tech Systems, Inc.> at 
usbus3 (disconnected)
Nov 11 11:39:00 spigot kernel: ugen3.3: <Multi-Tech Systems, Inc.> at usbus3
Nov 11 11:39:00 spigot kernel: u3g0: <Multi-Tech Win95 Modem USB> 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: <MultiModemUSB Multi-Tech Systems, Inc.> at usbus3, cfg=0 
md=HOST spd=FULL (12Mbps) pwr=ON (400mA)

   bLength = 0x0012
   bDescriptorType = 0x0001
   bcdUSB = 0x0100
   bDeviceClass = 0x0002  <Communication device>
   bDeviceSubClass = 0x0000
   bDeviceProtocol = 0x0000
   bMaxPacketSize0 = 0x0008
   idVendor = 0x06e0
   idProduct = 0xf107
   bcdDevice = 0x0100
   iManufacturer = 0x0001  <Multi-Tech Systems, Inc.>
   iProduct = 0x0002  <MultiModemUSB>
   iSerialNumber = 0x0000  <no string>
   bNumConfigurations = 0x0002


  Configuration index 0

     bLength = 0x0009
     bDescriptorType = 0x0002
     wTotalLength = 0x0029
     bNumInterfaces = 0x0002
     bConfigurationValue = 0x0001
     iConfiguration = 0x0003  <Multi-Tech NT Modem USB>
     bmAttributes = 0x00a0
     bMaxPower = 0x00c8

     Interface 0
       bLength = 0x0009
       bDescriptorType = 0x0004
       bInterfaceNumber = 0x0000
       bAlternateSetting = 0x0000
       bNumEndpoints = 0x0000
       bInterfaceClass = 0x00ff  <Vendor specific>
       bInterfaceSubClass = 0x00ff
       bInterfaceProtocol = 0x00ff
       iInterface = 0x0004  <Multi-Tech Win95 Modem USB>


     Interface 1
       bLength = 0x0009
       bDescriptorType = 0x0004
       bInterfaceNumber = 0x0001
       bAlternateSetting = 0x0000
       bNumEndpoints = 0x0002
       bInterfaceClass = 0x00ff  <Vendor specific>
       bInterfaceSubClass = 0x00ff
       bInterfaceProtocol = 0x00ff
       iInterface = 0x0005  <Control Interface>

      Endpoint 0
         bLength = 0x0007
         bDescriptorType = 0x0005
         bEndpointAddress = 0x0002  <OUT>
         bmAttributes = 0x0002  <BULK>
         wMaxPacketSize = 0x0010
         bInterval = 0x0000
         bRefresh = 0x0000
         bSynchAddress = 0x0000

      Endpoint 1
         bLength = 0x0007
         bDescriptorType = 0x0005
         bEndpointAddress = 0x0084  <IN>
         bmAttributes = 0x0003  <INTERRUPT>
         wMaxPacketSize = 0x003f
         bInterval = 0x0002
         bRefresh = 0x0000
         bSynchAddress = 0x0000






Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?56439C4B.6060407>