On Tue, 2016-11-15 at 20:13 +0100, Giuseppe Lippolis wrote:
> Dear all,
> I'm porting the Dlink DWR-512 device to LEDE (embedded linux).
> This device embed a 3G modem connected through the usb bus .
> The modem work properly with the option kernel module.
>
> I added these line in the
>
> #define DLINK_PRODUCT_DWM_652 0x3e04
> #define DLINK_PRODUCT_DWM_652_U5 0xce16
> #define DLINK_PRODUCT_DWM_652_U5A 0xce1e
>
> + #define DLINK_ATL_VENDOR_ID 0x20
> 01
> + #define DLINK_PRODUCT_DWM_158 0x7d04
>
> #define QISDA_VENDOR_ID 0x1da5
> #define QISDA_PRODUCT_H21_4512 0x4512
>
> [...]
>
> { USB_DEVICE(ALINK_VENDOR_ID, DLINK_PRODUCT_DWM_652_U5) }, /*
> Yes,
> ALINK_VENDOR_ID */
> { USB_DEVICE(ALINK_VENDOR_ID, DLINK_PRODUCT_DWM_652_U5A) },
> + { USB_DEVICE(DLINK_ATL_VENDOR_ID, DLINK_PRODUCT_DWM_158) },
This will make option grab all the ports, as shown by your dmesg
output. But USB interfaces 0 and 1 are actually cdc-ether and should
*not* be grabbed by option.
You want to limit option to grabbing bInterfaceClass=255 to make sure
it only gets the serial ports.
Dan
> { USB_DEVICE(QISDA_VENDOR_ID, QISDA_PRODUCT_H21_4512) },
> { USB_DEVICE(QISDA_VENDOR_ID, QISDA_PRODUCT_H21_4523) },
>
> And at the end the system work as expected:
>
> [ 11.659320] usbcore: registered new interface driver usbserial
> [ 11.671412] usbcore: registered new interface driver
> usbserial_generic
> [ 11.684835] usbserial: USB Serial support registered for generic
> [ 11.739752] xt_time: kernel timezone is -0000
> [ 11.865508] PPP generic driver version 2.4.2
> [ 11.880069] NET: Registered protocol family 24
> [ 11.919594] usbcore: registered new interface driver option
> [ 11.931155] usbserial: USB Serial support registered for GSM modem
> (1-port)
> [ 11.945724] option 1-1:1.0: no of_node; not parsing pinctrl DT
> [ 11.946566] option 1-1:1.0: GSM modem (1-port) converter detected
> [ 11.959201] option1 ttyUSB0: no of_node; not parsing pinctrl DT
> [ 11.959661] option 1-1:1.1: no of_node; not parsing pinctrl DT
> [ 11.960472] option 1-1:1.1: GSM modem (1-port) converter detected
> [ 11.973103] option1 ttyUSB1: no of_node; not parsing pinctrl DT
> [ 11.973542] option 1-1:1.2: no of_node; not parsing pinctrl DT
> [ 11.974347] option 1-1:1.2: GSM modem (1-port) converter detected
> [ 11.986980] option1 ttyUSB2: no of_node; not parsing pinctrl DT
> [ 11.987462] usb 1-1: GSM modem (1-port) converter now attached to
> ttyUSB2
> [ 12.001470] option 1-1:1.3: no of_node; not parsing pinctrl DT
> [ 12.002354] option 1-1:1.3: GSM modem (1-port) converter detected
> [ 12.015005] option1 ttyUSB3: no of_node; not parsing pinctrl DT
> [ 12.015479] usb 1-1: GSM modem (1-port) converter now attached to
> ttyUSB3
> [ 12.029487] option 1-1:1.4: no of_node; not parsing pinctrl DT
> [ 12.030327] option 1-1:1.4: GSM modem (1-port) converter detected
> [ 12.042978] option1 ttyUSB4: no of_node; not parsing pinctrl DT
> [ 12.043463] usb 1-1: GSM modem (1-port) converter now attached to
> ttyUSB4
> [ 12.057468] option 1-1:1.5: no of_node; not parsing pinctrl DT
> [ 12.058395] option 1-1:1.5: GSM modem (1-port) converter detected
> [ 12.070971] option1 ttyUSB5: no of_node; not parsing pinctrl DT
> [ 12.071482] usb 1-1: GSM modem (1-port) converter now attached to
> ttyUSB5
> [ 12.085484] option 1-1:1.6: no of_node; not parsing pinctrl DT
>
>
> Here the relevant lsusb info:
>
> Bus 001 Device 002: ID 2001:7d04 D-Link Corp.
> Device Descriptor:
> bLength 18
> bDescriptorType 1
> bcdUSB 2.00
> bDeviceClass 2 Communications
> bDeviceSubClass 0
> bDeviceProtocol 0
> bMaxPacketSize0 64
> idVendor 0x2001 D-Link Corp.
> idProduct 0x7d04
> bcdDevice 3.00
> iManufacturer 10 D-Link,Inc
> iProduct 11 D-Link DWM-158
> iSerial 0
> bNumConfigurations 1
> Configuration Descriptor:
> bLength 9
> bDescriptorType 2
> wTotalLength 229
> bNumInterfaces 7
> bConfigurationValue 1
> iConfiguration 0
> bmAttributes 0xa0
> (Bus Powered)
> Remote Wakeup
> MaxPower 500mA
> Interface Association:
> bLength 8
> bDescriptorType 11
> bFirstInterface 0
> bInterfaceCount 2
> bFunctionClass 2 Communications
> bFunctionSubClass 6 Ethernet Networking
> bFunctionProtocol 0
> iFunction 2 COM(comm_if)
> Interface Descriptor:
> bLength 9
> bDescriptorType 4
> bInterfaceNumber 0
> bAlternateSetting 0
> bNumEndpoints 1
> bInterfaceClass 2 Communications
> bInterfaceSubClass 6 Ethernet Networking
> bInterfaceProtocol 0
> iInterface 2 COM(comm_if)
> CDC Header:
> bcdCDC 1.10
> CDC Union:
> bMasterInterface 0
> bSlaveInterface 1
> CDC Ethernet:
> iMacAddress 1 0200FFAAAAAA
> bmEthernetStatistics 0x7f180000
> wMaxSegmentSize 1514
> wNumberMCFilters 0x0000
> bNumberPowerFilters 16
> Endpoint Descriptor:
> bLength 7
> bDescriptorType 5
> bEndpointAddress 0x88 EP 8 IN
> bmAttributes 3
> Transfer Type Interrupt
> Synch Type None
> Usage Type Data
> wMaxPacketSize 0x0040 1x 64 bytes
> bInterval 1
> Interface Descriptor:
> bLength 9
> bDescriptorType 4
> bInterfaceNumber 1
> bAlternateSetting 0
> bNumEndpoints 0
> bInterfaceClass 10 CDC Data
> bInterfaceSubClass 0 Unused
> bInterfaceProtocol 0
> iInterface 3 COM(data_if)
> Interface Descriptor:
> bLength 9
> bDescriptorType 4
> bInterfaceNumber 1
> bAlternateSetting 1
> bNumEndpoints 2
> bInterfaceClass 10 CDC Data
> bInterfaceSubClass 0 Unused
> 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 0x0200 1x 512 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 0x0200 1x 512 bytes
> bInterval 0
> Interface Descriptor:
> bLength 9
> bDescriptorType 4
> bInterfaceNumber 2
> bAlternateSetting 0
> bNumEndpoints 3
> bInterfaceClass 255 Vendor Specific Class
> bInterfaceSubClass 2
> bInterfaceProtocol 1
> iInterface 4 COM(comm_if)
> ** UNRECOGNIZED: 05 24 00 10 01
> ** UNRECOGNIZED: 04 24 02 0f
> ** UNRECOGNIZED: 05 24 06 02 03
> ** UNRECOGNIZED: 05 24 01 03 03
> Endpoint Descriptor:
> bLength 7
> bDescriptorType 5
> bEndpointAddress 0x87 EP 7 IN
> bmAttributes 3
> Transfer Type Interrupt
> Synch Type None
> Usage Type Data
> wMaxPacketSize 0x0040 1x 64 bytes
> bInterval 1
> Endpoint Descriptor:
> bLength 7
> bDescriptorType 5
> bEndpointAddress 0x82 EP 2 IN
> bmAttributes 2
> Transfer Type Bulk
> Synch Type None
> Usage Type Data
> wMaxPacketSize 0x0200 1x 512 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 0x0200 1x 512 bytes
> bInterval 0
> Interface Descriptor:
> bLength 9
> bDescriptorType 4
> bInterfaceNumber 3
> bAlternateSetting 0
> bNumEndpoints 2
> bInterfaceClass 255 Vendor Specific Class
> bInterfaceSubClass 0
> bInterfaceProtocol 0
> iInterface 6 COM(data_if)
> Endpoint Descriptor:
> bLength 7
> bDescriptorType 5
> bEndpointAddress 0x83 EP 3 IN
> bmAttributes 2
> Transfer Type Bulk
> Synch Type None
> Usage Type Data
> wMaxPacketSize 0x0200 1x 512 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 0x0200 1x 512 bytes
> bInterval 0
> Interface Descriptor:
> bLength 9
> bDescriptorType 4
> bInterfaceNumber 4
> bAlternateSetting 0
> bNumEndpoints 2
> bInterfaceClass 255 Vendor Specific Class
> bInterfaceSubClass 0
> bInterfaceProtocol 0
> iInterface 7 COM(data_if)
> Endpoint Descriptor:
> bLength 7
> bDescriptorType 5
> bEndpointAddress 0x84 EP 4 IN
> bmAttributes 2
> Transfer Type Bulk
> Synch Type None
> Usage Type Data
> wMaxPacketSize 0x0200 1x 512 bytes
> bInterval 0
> Endpoint Descriptor:
> bLength 7
> bDescriptorType 5
> bEndpointAddress 0x04 EP 4 OUT
> bmAttributes 2
> Transfer Type Bulk
> Synch Type None
> Usage Type Data
> wMaxPacketSize 0x0200 1x 512 bytes
> bInterval 0
> Interface Descriptor:
> bLength 9
> bDescriptorType 4
> bInterfaceNumber 5
> bAlternateSetting 0
> bNumEndpoints 2
> bInterfaceClass 255 Vendor Specific Class
> bInterfaceSubClass 0
> bInterfaceProtocol 0
> iInterface 8 COM(data_if)
> Endpoint Descriptor:
> bLength 7
> bDescriptorType 5
> bEndpointAddress 0x85 EP 5 IN
> bmAttributes 2
> Transfer Type Bulk
> Synch Type None
> Usage Type Data
> wMaxPacketSize 0x0200 1x 512 bytes
> bInterval 0
> Endpoint Descriptor:
> bLength 7
> bDescriptorType 5
> bEndpointAddress 0x05 EP 5 OUT
> bmAttributes 2
> Transfer Type Bulk
> Synch Type None
> Usage Type Data
> wMaxPacketSize 0x0200 1x 512 bytes
> bInterval 0
> Interface Descriptor:
> bLength 9
> bDescriptorType 4
> bInterfaceNumber 6
> bAlternateSetting 0
> bNumEndpoints 2
> bInterfaceClass 8 Mass Storage
> bInterfaceSubClass 6 SCSI
> bInterfaceProtocol 80 Bulk-Only
> iInterface 9 Mass Storage
> Endpoint Descriptor:
> bLength 7
> bDescriptorType 5
> bEndpointAddress 0x86 EP 6 IN
> bmAttributes 2
> Transfer Type Bulk
> Synch Type None
> Usage Type Data
> wMaxPacketSize 0x0200 1x 512 bytes
> bInterval 0
> Endpoint Descriptor:
> bLength 7
> bDescriptorType 5
> bEndpointAddress 0x06 EP 6 OUT
> bmAttributes 2
> Transfer Type Bulk
> Synch Type None
> Usage Type Data
> wMaxPacketSize 0x0200 1x 512 bytes
> bInterval 0
> Device Qualifier (for other device speed):
> bLength 10
> bDescriptorType 6
> bcdUSB 2.00
> bDeviceClass 2 Communications
> bDeviceSubClass 0
> bDeviceProtocol 0
> bMaxPacketSize0 64
> bNumConfigurations 1
> Device Status: 0x0002
> (Bus Powered)
> Remote Wakeup Enabled
>
>
> Is it possible to register the device in the option.c code?
>
> Regards.
>
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-usb"
> in
> the body of a message to [email protected]
> More majordomo info at http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html