netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* cxacru: USB ethernet port of CX82310-based ADSL routers?
@ 2010-08-31 21:13 Ondrej Zary
  2010-08-31 22:15 ` Simon Arlott
  0 siblings, 1 reply; 4+ messages in thread
From: Ondrej Zary @ 2010-08-31 21:13 UTC (permalink / raw)
  To: cxacru; +Cc: accessrunner-general, netdev, Kernel development list

Hello,
I have an ADSL router based on Conexant CX82310 chip. This chip provides both
ethernet and USB interfaces. The ethernet interface is often internally
connected to a 5-port switch (in my case too). The USB interface works as an
ethernet card in Windows (using proprietary driver). In Linux, the cxacru
driver binds to the device but does not work (no wonder - it's doing firmware
things in an attempt to bring an ADSL modem up).

I captured a log from Windows (device connect, DHCP and disconnect):
http://www.rainbow-software.org/linux_files/cx82310/cx-run-dhcp.log

The commands seem to match the enums in cxacru
driver (and go to endpoint 1):
0x84, 0x85, 0x90, 0x91, 0x92, 0x99 (unknown)
Data goes to/from endpoint 2 as ethernet frames (with something at the
beginning).

I wonder how to implement support for this device in cxacru driver. Or would
be a separate driver better?


lsusb output:

Bus 001 Device 003: ID 0572:cb01 Conexant Systems (Rockwell), Inc. GeekADSL Promax Q31 ADSL Modem
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               1.10
  bDeviceClass          255 Vendor Specific Class
  bDeviceSubClass         0 
  bDeviceProtocol         0 
  bMaxPacketSize0        64
  idVendor           0x0572 Conexant Systems (Rockwell), Inc.
  idProduct          0xcb01 GeekADSL Promax Q31 ADSL Modem
  bcdDevice            1.00
  iManufacturer           1 -
  iProduct                2 USB NET CARD
  iSerial                 3 00000060
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength           67
    bNumInterfaces          1
    bConfigurationValue     1
    iConfiguration          0 
    bmAttributes         0xc0
      Self Powered
    MaxPower               80mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           7
      bInterfaceClass         0 (Defined at Interface level)
      bInterfaceSubClass      0 
      bInterfaceProtocol      0 
      iInterface              0 
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval               4
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x01  EP 1 OUT
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval               4
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x82  EP 2 IN
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval               1
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x02  EP 2 OUT
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval               1
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x83  EP 3 IN
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval               1
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x03  EP 3 OUT
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval               1
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x84  EP 4 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0008  1x 8 bytes
        bInterval               4
Device Status:     0x0001
  Self Powered


-- 
Ondrej Zary

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: cxacru: USB ethernet port of CX82310-based ADSL routers?
  2010-08-31 21:13 cxacru: USB ethernet port of CX82310-based ADSL routers? Ondrej Zary
@ 2010-08-31 22:15 ` Simon Arlott
  2010-08-31 22:48   ` Ondrej Zary
  0 siblings, 1 reply; 4+ messages in thread
From: Simon Arlott @ 2010-08-31 22:15 UTC (permalink / raw)
  To: Ondrej Zary; +Cc: accessrunner-general, netdev, Kernel development list

On 31/08/10 22:13, Ondrej Zary wrote:
> Hello,
> I have an ADSL router based on Conexant CX82310 chip. This chip provides both
> ethernet and USB interfaces. The ethernet interface is often internally
> connected to a 5-port switch (in my case too). The USB interface works as an
> ethernet card in Windows (using proprietary driver). In Linux, the cxacru
> driver binds to the device but does not work (no wonder - it's doing firmware
> things in an attempt to bring an ADSL modem up).
> 
> I captured a log from Windows (device connect, DHCP and disconnect):
> http://www.rainbow-software.org/linux_files/cx82310/cx-run-dhcp.log
> 
> The commands seem to match the enums in cxacru
> driver (and go to endpoint 1):
> 0x84, 0x85, 0x90, 0x91, 0x92, 0x99 (unknown)
> Data goes to/from endpoint 2 as ethernet frames (with something at the
> beginning).
> 
> I wonder how to implement support for this device in cxacru driver. Or would
> be a separate driver better?

Support for this shouldn't really go into the cxacru driver, as that's
for an USB ATM interface (it depends on usbatm for actual ATM traffic)
not ethernet.

Unfortunately it doesn't look like a trivial task to auto-detect which
driver should handle it... your device itself claims to be an "ADSL
Modem".

You'd need to know what type of device it was before loading the
firmware, which would further complicate auto-detection as some custom
firmware may be required that attempts to probe the device and then
accepts new firmware. I have no way of testing this on all the types of
existing hardware: http://accessrunner.sourceforge.net/modems.shtml

Does it happen to work as an ADSL modem too if you load the right
firmware?
d275d0fef591e2233654ea591eccb0d15211eb82  cxacru-fw.bin  624192

There should be some flash memory you could try reading, however it
may not contain anything useful.

See "commands for interaction with the flash memory" in cxacru.c and
http://simon.arlott.org/pub/cxacru/raw.c

One possibility is to rewrite the flash to indicate that it's an
ethernet class device, or just handle class 255 differently. It would
be interesting to know what the windows driver does when the device
class is changed. (I don't know which bytes in the flash memory
correspond to that value as mine are all 00, hopefully if you can read
yours you'll have an FF in that area.)

Ignoring 0572:cb01 class 255 in the cxacru probe function would be an
option... but I don't know how many existing users that would affect.

> 
> lsusb output:
> 
> Bus 001 Device 003: ID 0572:cb01 Conexant Systems (Rockwell), Inc. GeekADSL Promax Q31 ADSL Modem
> Device Descriptor:
>   bLength                18
>   bDescriptorType         1
>   bcdUSB               1.10
>   bDeviceClass          255 Vendor Specific Class
>   bDeviceSubClass         0 
>   bDeviceProtocol         0 
>   bMaxPacketSize0        64
>   idVendor           0x0572 Conexant Systems (Rockwell), Inc.
>   idProduct          0xcb01 GeekADSL Promax Q31 ADSL Modem
>   bcdDevice            1.00
>   iManufacturer           1 -
>   iProduct                2 USB NET CARD
>   iSerial                 3 00000060
>   bNumConfigurations      1
>   Configuration Descriptor:
>     bLength                 9
>     bDescriptorType         2
>     wTotalLength           67
>     bNumInterfaces          1
>     bConfigurationValue     1
>     iConfiguration          0 
>     bmAttributes         0xc0
>       Self Powered
>     MaxPower               80mA
>     Interface Descriptor:
>       bLength                 9
>       bDescriptorType         4
>       bInterfaceNumber        0
>       bAlternateSetting       0
>       bNumEndpoints           7
>       bInterfaceClass         0 (Defined at Interface level)
>       bInterfaceSubClass      0 
>       bInterfaceProtocol      0 
>       iInterface              0 
>       Endpoint Descriptor:
>         bLength                 7
>         bDescriptorType         5
>         bEndpointAddress     0x81  EP 1 IN
>         bmAttributes            3
>           Transfer Type            Interrupt
>           Synch Type               None
>           Usage Type               Data
>         wMaxPacketSize     0x0040  1x 64 bytes
>         bInterval               4
>       Endpoint Descriptor:
>         bLength                 7
>         bDescriptorType         5
>         bEndpointAddress     0x01  EP 1 OUT
>         bmAttributes            3
>           Transfer Type            Interrupt
>           Synch Type               None
>           Usage Type               Data
>         wMaxPacketSize     0x0040  1x 64 bytes
>         bInterval               4
>       Endpoint Descriptor:
>         bLength                 7
>         bDescriptorType         5
>         bEndpointAddress     0x82  EP 2 IN
>         bmAttributes            2
>           Transfer Type            Bulk
>           Synch Type               None
>           Usage Type               Data
>         wMaxPacketSize     0x0040  1x 64 bytes
>         bInterval               1
>       Endpoint Descriptor:
>         bLength                 7
>         bDescriptorType         5
>         bEndpointAddress     0x02  EP 2 OUT
>         bmAttributes            2
>           Transfer Type            Bulk
>           Synch Type               None
>           Usage Type               Data
>         wMaxPacketSize     0x0040  1x 64 bytes
>         bInterval               1
>       Endpoint Descriptor:
>         bLength                 7
>         bDescriptorType         5
>         bEndpointAddress     0x83  EP 3 IN
>         bmAttributes            2
>           Transfer Type            Bulk
>           Synch Type               None
>           Usage Type               Data
>         wMaxPacketSize     0x0040  1x 64 bytes
>         bInterval               1
>       Endpoint Descriptor:
>         bLength                 7
>         bDescriptorType         5
>         bEndpointAddress     0x03  EP 3 OUT
>         bmAttributes            2
>           Transfer Type            Bulk
>           Synch Type               None
>           Usage Type               Data
>         wMaxPacketSize     0x0040  1x 64 bytes
>         bInterval               1
>       Endpoint Descriptor:
>         bLength                 7
>         bDescriptorType         5
>         bEndpointAddress     0x84  EP 4 IN
>         bmAttributes            3
>           Transfer Type            Interrupt
>           Synch Type               None
>           Usage Type               Data
>         wMaxPacketSize     0x0008  1x 8 bytes
>         bInterval               4
> Device Status:     0x0001
>   Self Powered
> 
> 

The three versions of the hardware I have are below:

Bus 002 Device 002: ID 0572:cafe Conexant Systems (Rockwell), Inc. AccessRunner ADSL Modem
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               1.10
  bDeviceClass            0 (Defined at Interface level)
  bDeviceSubClass         0 
  bDeviceProtocol         0 
  bMaxPacketSize0        64
  idVendor           0x0572 Conexant Systems (Rockwell), Inc.
  idProduct          0xcafe AccessRunner ADSL Modem
  bcdDevice            0.01
  iManufacturer           1 -
  iProduct                2 ADSL USB MODEM
  iSerial                 3 28217989
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength           67
    bNumInterfaces          1
    bConfigurationValue     1
    iConfiguration          0 
    bmAttributes         0xa0
      (Bus Powered)
      Remote Wakeup
    MaxPower              500mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           7
      bInterfaceClass         0 (Defined at Interface level)
      bInterfaceSubClass      0 
      bInterfaceProtocol      0 
      iInterface              0 
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval               0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x01  EP 1 OUT
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval               0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x82  EP 2 IN
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval               0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x02  EP 2 OUT
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval               0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x83  EP 3 IN
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval               0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x03  EP 3 OUT
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval               0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x84  EP 4 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0008  1x 8 bytes
        bInterval             200
Device Status:     0x0001
  Self Powered

Bus 002 Device 002: ID 0eb0:3457  
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               1.10
  bDeviceClass            0 (Defined at Interface level)
  bDeviceSubClass         0 
  bDeviceProtocol         0 
  bMaxPacketSize0        64
  idVendor           0x0eb0 
  idProduct          0x3457 
  bcdDevice           90.06
  iManufacturer           1 -
  iProduct                2 ADSL USB MODEM
  iSerial                 3 08298061
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength           67
    bNumInterfaces          1
    bConfigurationValue     1
    iConfiguration          0 
    bmAttributes         0xa0
      (Bus Powered)
      Remote Wakeup
    MaxPower              500mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           7
      bInterfaceClass         0 (Defined at Interface level)
      bInterfaceSubClass      0 
      bInterfaceProtocol      0 
      iInterface              0 
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval               0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x01  EP 1 OUT
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval               0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x82  EP 2 IN
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval               0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x02  EP 2 OUT
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval               0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x83  EP 3 IN
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval               0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x03  EP 3 OUT
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval               0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x84  EP 4 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0008  1x 8 bytes
        bInterval             200
Device Status:     0x0001
  Self Powered

Bus 002 Device 005: ID 0572:cb00 Conexant Systems (Rockwell), Inc. E-Tech ADSL Modem v2
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               1.10
  bDeviceClass            0 (Defined at Interface level)
  bDeviceSubClass         0 
  bDeviceProtocol         0 
  bMaxPacketSize0        64
  idVendor           0x0572 Conexant Systems (Rockwell), Inc.
  idProduct          0xcb00 E-Tech ADSL Modem v2
  bcdDevice            0.01
  iManufacturer           1 -
  iProduct                2 ADSL USB MODEM
  iSerial                 3 08298061
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength           67
    bNumInterfaces          1
    bConfigurationValue     1
    iConfiguration          0 
    bmAttributes         0x80
      (Bus Powered)
    MaxPower              500mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           7
      bInterfaceClass         0 (Defined at Interface level)
      bInterfaceSubClass      0 
      bInterfaceProtocol      0 
      iInterface              0 
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval               0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x01  EP 1 OUT
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval               0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x82  EP 2 IN
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval               0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x02  EP 2 OUT
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval               0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x83  EP 3 IN
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval               0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x03  EP 3 OUT
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval               0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x84  EP 4 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0008  1x 8 bytes
        bInterval             200
Device Status:     0x0001
  Self Powered

-- 
Simon Arlott

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: cxacru: USB ethernet port of CX82310-based ADSL routers?
  2010-08-31 22:15 ` Simon Arlott
@ 2010-08-31 22:48   ` Ondrej Zary
  2010-09-01  6:40     ` Simon Arlott
  0 siblings, 1 reply; 4+ messages in thread
From: Ondrej Zary @ 2010-08-31 22:48 UTC (permalink / raw)
  To: Simon Arlott; +Cc: accessrunner-general, netdev, Kernel development list

On Wednesday 01 September 2010 00:15:49 Simon Arlott wrote:
> On 31/08/10 22:13, Ondrej Zary wrote:
> > Hello,
> > I have an ADSL router based on Conexant CX82310 chip. This chip provides
> > both ethernet and USB interfaces. The ethernet interface is often
> > internally connected to a 5-port switch (in my case too). The USB
> > interface works as an ethernet card in Windows (using proprietary
> > driver). In Linux, the cxacru driver binds to the device but does not
> > work (no wonder - it's doing firmware things in an attempt to bring an
> > ADSL modem up).
> >
> > I captured a log from Windows (device connect, DHCP and disconnect):
> > http://www.rainbow-software.org/linux_files/cx82310/cx-run-dhcp.log
> >
> > The commands seem to match the enums in cxacru
> > driver (and go to endpoint 1):
> > 0x84, 0x85, 0x90, 0x91, 0x92, 0x99 (unknown)
> > Data goes to/from endpoint 2 as ethernet frames (with something at the
> > beginning).
> >
> > I wonder how to implement support for this device in cxacru driver. Or
> > would be a separate driver better?
>
> Support for this shouldn't really go into the cxacru driver, as that's
> for an USB ATM interface (it depends on usbatm for actual ATM traffic)
> not ethernet.

That's what I was afraid of...

> Unfortunately it doesn't look like a trivial task to auto-detect which
> driver should handle it... your device itself claims to be an "ADSL
> Modem".

In fact, it does not. The idProduct text is from usb.ids file (which is often 
incorrect). The device says that it's "USB NET CARD" (iProduct). But I don't 
know if Linux can match drivers by iProduct string.

> You'd need to know what type of device it was before loading the
> firmware, which would further complicate auto-detection as some custom
> firmware may be required that attempts to probe the device and then
> accepts new firmware. I have no way of testing this on all the types of
> existing hardware: http://accessrunner.sourceforge.net/modems.shtml
>
> Does it happen to work as an ADSL modem too if you load the right
> firmware?
> d275d0fef591e2233654ea591eccb0d15211eb82  cxacru-fw.bin  624192
>
> There should be some flash memory you could try reading, however it
> may not contain anything useful.
>
> See "commands for interaction with the flash memory" in cxacru.c and
> http://simon.arlott.org/pub/cxacru/raw.c

Thanks, I'll try that, although I doubt that it will help.

> One possibility is to rewrite the flash to indicate that it's an
> ethernet class device, or just handle class 255 differently. It would
> be interesting to know what the windows driver does when the device
> class is changed. (I don't know which bytes in the flash memory
> correspond to that value as mine are all 00, hopefully if you can read
> yours you'll have an FF in that area.)
>
> Ignoring 0572:cb01 class 255 in the cxacru probe function would be an
> option... but I don't know how many existing users that would affect.

Maybe ignoring the device if class is 255 and iProduct is "USB NET CARD" (or 
does not contain "MODEM"?). 

> > lsusb output:
> >
> > Bus 001 Device 003: ID 0572:cb01 Conexant Systems (Rockwell), Inc.
> > GeekADSL Promax Q31 ADSL Modem Device Descriptor:
> >   bLength                18
> >   bDescriptorType         1
> >   bcdUSB               1.10
> >   bDeviceClass          255 Vendor Specific Class
> >   bDeviceSubClass         0
> >   bDeviceProtocol         0
> >   bMaxPacketSize0        64
> >   idVendor           0x0572 Conexant Systems (Rockwell), Inc.
> >   idProduct          0xcb01 GeekADSL Promax Q31 ADSL Modem
This is from usb.ids            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
(random string entered by someone on the internet)

> >   bcdDevice            1.00
> >   iManufacturer           1 -
> >   iProduct                2 USB NET CARD
This is from the device         ^^^^^^^^^^^^

> >   iSerial                 3 00000060
> >   bNumConfigurations      1
> >   Configuration Descriptor:
> >     bLength                 9
> >     bDescriptorType         2
> >     wTotalLength           67
> >     bNumInterfaces          1
> >     bConfigurationValue     1
> >     iConfiguration          0
> >     bmAttributes         0xc0
> >       Self Powered
> >     MaxPower               80mA
> >     Interface Descriptor:
> >       bLength                 9
> >       bDescriptorType         4
> >       bInterfaceNumber        0
> >       bAlternateSetting       0
> >       bNumEndpoints           7
> >       bInterfaceClass         0 (Defined at Interface level)
> >       bInterfaceSubClass      0
> >       bInterfaceProtocol      0
> >       iInterface              0
> >       Endpoint Descriptor:
> >         bLength                 7
> >         bDescriptorType         5
> >         bEndpointAddress     0x81  EP 1 IN
> >         bmAttributes            3
> >           Transfer Type            Interrupt
> >           Synch Type               None
> >           Usage Type               Data
> >         wMaxPacketSize     0x0040  1x 64 bytes
> >         bInterval               4
> >       Endpoint Descriptor:
> >         bLength                 7
> >         bDescriptorType         5
> >         bEndpointAddress     0x01  EP 1 OUT
> >         bmAttributes            3
> >           Transfer Type            Interrupt
> >           Synch Type               None
> >           Usage Type               Data
> >         wMaxPacketSize     0x0040  1x 64 bytes
> >         bInterval               4
> >       Endpoint Descriptor:
> >         bLength                 7
> >         bDescriptorType         5
> >         bEndpointAddress     0x82  EP 2 IN
> >         bmAttributes            2
> >           Transfer Type            Bulk
> >           Synch Type               None
> >           Usage Type               Data
> >         wMaxPacketSize     0x0040  1x 64 bytes
> >         bInterval               1
> >       Endpoint Descriptor:
> >         bLength                 7
> >         bDescriptorType         5
> >         bEndpointAddress     0x02  EP 2 OUT
> >         bmAttributes            2
> >           Transfer Type            Bulk
> >           Synch Type               None
> >           Usage Type               Data
> >         wMaxPacketSize     0x0040  1x 64 bytes
> >         bInterval               1
> >       Endpoint Descriptor:
> >         bLength                 7
> >         bDescriptorType         5
> >         bEndpointAddress     0x83  EP 3 IN
> >         bmAttributes            2
> >           Transfer Type            Bulk
> >           Synch Type               None
> >           Usage Type               Data
> >         wMaxPacketSize     0x0040  1x 64 bytes
> >         bInterval               1
> >       Endpoint Descriptor:
> >         bLength                 7
> >         bDescriptorType         5
> >         bEndpointAddress     0x03  EP 3 OUT
> >         bmAttributes            2
> >           Transfer Type            Bulk
> >           Synch Type               None
> >           Usage Type               Data
> >         wMaxPacketSize     0x0040  1x 64 bytes
> >         bInterval               1
> >       Endpoint Descriptor:
> >         bLength                 7
> >         bDescriptorType         5
> >         bEndpointAddress     0x84  EP 4 IN
> >         bmAttributes            3
> >           Transfer Type            Interrupt
> >           Synch Type               None
> >           Usage Type               Data
> >         wMaxPacketSize     0x0008  1x 8 bytes
> >         bInterval               4
> > Device Status:     0x0001
> >   Self Powered
>
> The three versions of the hardware I have are below:
>
> Bus 002 Device 002: ID 0572:cafe Conexant Systems (Rockwell), Inc.
> AccessRunner ADSL Modem Device Descriptor:
>   bLength                18
>   bDescriptorType         1
>   bcdUSB               1.10
>   bDeviceClass            0 (Defined at Interface level)
>   bDeviceSubClass         0
>   bDeviceProtocol         0
>   bMaxPacketSize0        64
>   idVendor           0x0572 Conexant Systems (Rockwell), Inc.
>   idProduct          0xcafe AccessRunner ADSL Modem
>   bcdDevice            0.01
>   iManufacturer           1 -
>   iProduct                2 ADSL USB MODEM
>   iSerial                 3 28217989
>   bNumConfigurations      1
>   Configuration Descriptor:
>     bLength                 9
>     bDescriptorType         2
>     wTotalLength           67
>     bNumInterfaces          1
>     bConfigurationValue     1
>     iConfiguration          0
>     bmAttributes         0xa0
>       (Bus Powered)
>       Remote Wakeup
>     MaxPower              500mA
>     Interface Descriptor:
>       bLength                 9
>       bDescriptorType         4
>       bInterfaceNumber        0
>       bAlternateSetting       0
>       bNumEndpoints           7
>       bInterfaceClass         0 (Defined at Interface level)
>       bInterfaceSubClass      0
>       bInterfaceProtocol      0
>       iInterface              0
>       Endpoint Descriptor:
>         bLength                 7
>         bDescriptorType         5
>         bEndpointAddress     0x81  EP 1 IN
>         bmAttributes            2
>           Transfer Type            Bulk
>           Synch Type               None
>           Usage Type               Data
>         wMaxPacketSize     0x0040  1x 64 bytes
>         bInterval               0
>       Endpoint Descriptor:
>         bLength                 7
>         bDescriptorType         5
>         bEndpointAddress     0x01  EP 1 OUT
>         bmAttributes            2
>           Transfer Type            Bulk
>           Synch Type               None
>           Usage Type               Data
>         wMaxPacketSize     0x0040  1x 64 bytes
>         bInterval               0
>       Endpoint Descriptor:
>         bLength                 7
>         bDescriptorType         5
>         bEndpointAddress     0x82  EP 2 IN
>         bmAttributes            2
>           Transfer Type            Bulk
>           Synch Type               None
>           Usage Type               Data
>         wMaxPacketSize     0x0040  1x 64 bytes
>         bInterval               0
>       Endpoint Descriptor:
>         bLength                 7
>         bDescriptorType         5
>         bEndpointAddress     0x02  EP 2 OUT
>         bmAttributes            2
>           Transfer Type            Bulk
>           Synch Type               None
>           Usage Type               Data
>         wMaxPacketSize     0x0040  1x 64 bytes
>         bInterval               0
>       Endpoint Descriptor:
>         bLength                 7
>         bDescriptorType         5
>         bEndpointAddress     0x83  EP 3 IN
>         bmAttributes            2
>           Transfer Type            Bulk
>           Synch Type               None
>           Usage Type               Data
>         wMaxPacketSize     0x0040  1x 64 bytes
>         bInterval               0
>       Endpoint Descriptor:
>         bLength                 7
>         bDescriptorType         5
>         bEndpointAddress     0x03  EP 3 OUT
>         bmAttributes            2
>           Transfer Type            Bulk
>           Synch Type               None
>           Usage Type               Data
>         wMaxPacketSize     0x0040  1x 64 bytes
>         bInterval               0
>       Endpoint Descriptor:
>         bLength                 7
>         bDescriptorType         5
>         bEndpointAddress     0x84  EP 4 IN
>         bmAttributes            3
>           Transfer Type            Interrupt
>           Synch Type               None
>           Usage Type               Data
>         wMaxPacketSize     0x0008  1x 8 bytes
>         bInterval             200
> Device Status:     0x0001
>   Self Powered
>
> Bus 002 Device 002: ID 0eb0:3457
> Device Descriptor:
>   bLength                18
>   bDescriptorType         1
>   bcdUSB               1.10
>   bDeviceClass            0 (Defined at Interface level)
>   bDeviceSubClass         0
>   bDeviceProtocol         0
>   bMaxPacketSize0        64
>   idVendor           0x0eb0
>   idProduct          0x3457
>   bcdDevice           90.06
>   iManufacturer           1 -
>   iProduct                2 ADSL USB MODEM
>   iSerial                 3 08298061
>   bNumConfigurations      1
>   Configuration Descriptor:
>     bLength                 9
>     bDescriptorType         2
>     wTotalLength           67
>     bNumInterfaces          1
>     bConfigurationValue     1
>     iConfiguration          0
>     bmAttributes         0xa0
>       (Bus Powered)
>       Remote Wakeup
>     MaxPower              500mA
>     Interface Descriptor:
>       bLength                 9
>       bDescriptorType         4
>       bInterfaceNumber        0
>       bAlternateSetting       0
>       bNumEndpoints           7
>       bInterfaceClass         0 (Defined at Interface level)
>       bInterfaceSubClass      0
>       bInterfaceProtocol      0
>       iInterface              0
>       Endpoint Descriptor:
>         bLength                 7
>         bDescriptorType         5
>         bEndpointAddress     0x81  EP 1 IN
>         bmAttributes            2
>           Transfer Type            Bulk
>           Synch Type               None
>           Usage Type               Data
>         wMaxPacketSize     0x0040  1x 64 bytes
>         bInterval               0
>       Endpoint Descriptor:
>         bLength                 7
>         bDescriptorType         5
>         bEndpointAddress     0x01  EP 1 OUT
>         bmAttributes            2
>           Transfer Type            Bulk
>           Synch Type               None
>           Usage Type               Data
>         wMaxPacketSize     0x0040  1x 64 bytes
>         bInterval               0
>       Endpoint Descriptor:
>         bLength                 7
>         bDescriptorType         5
>         bEndpointAddress     0x82  EP 2 IN
>         bmAttributes            2
>           Transfer Type            Bulk
>           Synch Type               None
>           Usage Type               Data
>         wMaxPacketSize     0x0040  1x 64 bytes
>         bInterval               0
>       Endpoint Descriptor:
>         bLength                 7
>         bDescriptorType         5
>         bEndpointAddress     0x02  EP 2 OUT
>         bmAttributes            2
>           Transfer Type            Bulk
>           Synch Type               None
>           Usage Type               Data
>         wMaxPacketSize     0x0040  1x 64 bytes
>         bInterval               0
>       Endpoint Descriptor:
>         bLength                 7
>         bDescriptorType         5
>         bEndpointAddress     0x83  EP 3 IN
>         bmAttributes            2
>           Transfer Type            Bulk
>           Synch Type               None
>           Usage Type               Data
>         wMaxPacketSize     0x0040  1x 64 bytes
>         bInterval               0
>       Endpoint Descriptor:
>         bLength                 7
>         bDescriptorType         5
>         bEndpointAddress     0x03  EP 3 OUT
>         bmAttributes            2
>           Transfer Type            Bulk
>           Synch Type               None
>           Usage Type               Data
>         wMaxPacketSize     0x0040  1x 64 bytes
>         bInterval               0
>       Endpoint Descriptor:
>         bLength                 7
>         bDescriptorType         5
>         bEndpointAddress     0x84  EP 4 IN
>         bmAttributes            3
>           Transfer Type            Interrupt
>           Synch Type               None
>           Usage Type               Data
>         wMaxPacketSize     0x0008  1x 8 bytes
>         bInterval             200
> Device Status:     0x0001
>   Self Powered
>
> Bus 002 Device 005: ID 0572:cb00 Conexant Systems (Rockwell), Inc. E-Tech
> ADSL Modem v2 Device Descriptor:
>   bLength                18
>   bDescriptorType         1
>   bcdUSB               1.10
>   bDeviceClass            0 (Defined at Interface level)
>   bDeviceSubClass         0
>   bDeviceProtocol         0
>   bMaxPacketSize0        64
>   idVendor           0x0572 Conexant Systems (Rockwell), Inc.
>   idProduct          0xcb00 E-Tech ADSL Modem v2
>   bcdDevice            0.01
>   iManufacturer           1 -
>   iProduct                2 ADSL USB MODEM
>   iSerial                 3 08298061
>   bNumConfigurations      1
>   Configuration Descriptor:
>     bLength                 9
>     bDescriptorType         2
>     wTotalLength           67
>     bNumInterfaces          1
>     bConfigurationValue     1
>     iConfiguration          0
>     bmAttributes         0x80
>       (Bus Powered)
>     MaxPower              500mA
>     Interface Descriptor:
>       bLength                 9
>       bDescriptorType         4
>       bInterfaceNumber        0
>       bAlternateSetting       0
>       bNumEndpoints           7
>       bInterfaceClass         0 (Defined at Interface level)
>       bInterfaceSubClass      0
>       bInterfaceProtocol      0
>       iInterface              0
>       Endpoint Descriptor:
>         bLength                 7
>         bDescriptorType         5
>         bEndpointAddress     0x81  EP 1 IN
>         bmAttributes            2
>           Transfer Type            Bulk
>           Synch Type               None
>           Usage Type               Data
>         wMaxPacketSize     0x0040  1x 64 bytes
>         bInterval               0
>       Endpoint Descriptor:
>         bLength                 7
>         bDescriptorType         5
>         bEndpointAddress     0x01  EP 1 OUT
>         bmAttributes            2
>           Transfer Type            Bulk
>           Synch Type               None
>           Usage Type               Data
>         wMaxPacketSize     0x0040  1x 64 bytes
>         bInterval               0
>       Endpoint Descriptor:
>         bLength                 7
>         bDescriptorType         5
>         bEndpointAddress     0x82  EP 2 IN
>         bmAttributes            2
>           Transfer Type            Bulk
>           Synch Type               None
>           Usage Type               Data
>         wMaxPacketSize     0x0040  1x 64 bytes
>         bInterval               0
>       Endpoint Descriptor:
>         bLength                 7
>         bDescriptorType         5
>         bEndpointAddress     0x02  EP 2 OUT
>         bmAttributes            2
>           Transfer Type            Bulk
>           Synch Type               None
>           Usage Type               Data
>         wMaxPacketSize     0x0040  1x 64 bytes
>         bInterval               0
>       Endpoint Descriptor:
>         bLength                 7
>         bDescriptorType         5
>         bEndpointAddress     0x83  EP 3 IN
>         bmAttributes            2
>           Transfer Type            Bulk
>           Synch Type               None
>           Usage Type               Data
>         wMaxPacketSize     0x0040  1x 64 bytes
>         bInterval               0
>       Endpoint Descriptor:
>         bLength                 7
>         bDescriptorType         5
>         bEndpointAddress     0x03  EP 3 OUT
>         bmAttributes            2
>           Transfer Type            Bulk
>           Synch Type               None
>           Usage Type               Data
>         wMaxPacketSize     0x0040  1x 64 bytes
>         bInterval               0
>       Endpoint Descriptor:
>         bLength                 7
>         bDescriptorType         5
>         bEndpointAddress     0x84  EP 4 IN
>         bmAttributes            3
>           Transfer Type            Interrupt
>           Synch Type               None
>           Usage Type               Data
>         wMaxPacketSize     0x0008  1x 8 bytes
>         bInterval             200
> Device Status:     0x0001
>   Self Powered

All these devices seem to use bDeviceClass 0 and iProduct "ADSL USB MODEM".

-- 
Ondrej Zary

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: cxacru: USB ethernet port of CX82310-based ADSL routers?
  2010-08-31 22:48   ` Ondrej Zary
@ 2010-09-01  6:40     ` Simon Arlott
  0 siblings, 0 replies; 4+ messages in thread
From: Simon Arlott @ 2010-09-01  6:40 UTC (permalink / raw)
  To: Ondrej Zary; +Cc: accessrunner-general, netdev, Kernel development list

On 31/08/10 23:48, Ondrej Zary wrote:
> On Wednesday 01 September 2010 00:15:49 Simon Arlott wrote:
>> On 31/08/10 22:13, Ondrej Zary wrote:
>> > Hello,
>> > I have an ADSL router based on Conexant CX82310 chip. This chip provides
>> > both ethernet and USB interfaces. The ethernet interface is often
>> > internally connected to a 5-port switch (in my case too). The USB
>> > interface works as an ethernet card in Windows (using proprietary
>> > driver). In Linux, the cxacru driver binds to the device but does not
>> > work (no wonder - it's doing firmware things in an attempt to bring an
>> > ADSL modem up).

If you get the firmware loaded, it may implement an existing protocol
for ethernet over USB like all the ATM modems linux supports do.

>> > I wonder how to implement support for this device in cxacru driver. Or
>> > would be a separate driver better?
>>
>> Support for this shouldn't really go into the cxacru driver, as that's
>> for an USB ATM interface (it depends on usbatm for actual ATM traffic)
>> not ethernet.
> 
> That's what I was afraid of...

The firmware loading process is likely to be similar if not identical,
but these devices usually don't respond to the status command after
loading with the ADSL firmware.

>> Unfortunately it doesn't look like a trivial task to auto-detect which
>> driver should handle it... your device itself claims to be an "ADSL
>> Modem".
> 
> In fact, it does not. The idProduct text is from usb.ids file (which is often 
> incorrect). The device says that it's "USB NET CARD" (iProduct). But I don't 
> know if Linux can match drivers by iProduct string.

The probe function could ignore it allowing another driver to take it.

> 
> Maybe ignoring the device if class is 255 and iProduct is "USB NET CARD" (or 
> does not contain "MODEM"?). 
> 
> All these devices seem to use bDeviceClass 0 and iProduct "ADSL USB MODEM".
> 

However, there may be others that don't. I only have three variants of
a generic device rebranded... although they don't appear to have a way
of replacing that string. Ignoring "USB NET CARD" would be reasonable.

-- 
Simon Arlott

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2010-09-01  6:40 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-08-31 21:13 cxacru: USB ethernet port of CX82310-based ADSL routers? Ondrej Zary
2010-08-31 22:15 ` Simon Arlott
2010-08-31 22:48   ` Ondrej Zary
2010-09-01  6:40     ` Simon Arlott

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).