* [PATCH net] net: qmi_wwan: add support for Cinterion PLS8 @ 2017-11-23 13:37 Oliver Graute 2017-11-23 14:03 ` Bjørn Mork 0 siblings, 1 reply; 10+ messages in thread From: Oliver Graute @ 2017-11-23 13:37 UTC (permalink / raw) To: bjorn; +Cc: netdev, Oliver Graute When the PLS8 devices show up with PID 0x0061 they will expose both a QMI port and a WWAN interface. Signed-off-by: Oliver Graute <oliver.graute@neuhaus.de> --- drivers/net/usb/qmi_wwan.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/net/usb/qmi_wwan.c b/drivers/net/usb/qmi_wwan.c index 720a3a2..b7ee59d 100644 --- a/drivers/net/usb/qmi_wwan.c +++ b/drivers/net/usb/qmi_wwan.c @@ -1221,6 +1221,7 @@ static int qmi_wwan_resume(struct usb_interface *intf) {QMI_FIXED_INTF(0x0b3c, 0xc00a, 6)}, /* Olivetti Olicard 160 */ {QMI_FIXED_INTF(0x0b3c, 0xc00b, 4)}, /* Olivetti Olicard 500 */ {QMI_FIXED_INTF(0x1e2d, 0x0060, 4)}, /* Cinterion PLxx */ + {QMI_FIXED_INTF(0x1e2d, 0x0061, 3)}, /* Cinterion PLS8 */ {QMI_FIXED_INTF(0x1e2d, 0x0053, 4)}, /* Cinterion PHxx,PXxx */ {QMI_FIXED_INTF(0x1e2d, 0x0082, 4)}, /* Cinterion PHxx,PXxx (2 RmNet) */ {QMI_FIXED_INTF(0x1e2d, 0x0082, 5)}, /* Cinterion PHxx,PXxx (2 RmNet) */ -- 1.9.1 ^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [PATCH net] net: qmi_wwan: add support for Cinterion PLS8 2017-11-23 13:37 [PATCH net] net: qmi_wwan: add support for Cinterion PLS8 Oliver Graute @ 2017-11-23 14:03 ` Bjørn Mork 2017-11-23 15:10 ` Oliver Graute 0 siblings, 1 reply; 10+ messages in thread From: Bjørn Mork @ 2017-11-23 14:03 UTC (permalink / raw) To: Oliver Graute; +Cc: netdev, Oliver Graute Oliver Graute <oliver.graute@gmail.com> writes: > When the PLS8 devices show up with PID 0x0061 they will expose both a > QMI port and a WWAN interface. Please remove the indentation. > Signed-off-by: Oliver Graute <oliver.graute@neuhaus.de> > --- > drivers/net/usb/qmi_wwan.c | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/drivers/net/usb/qmi_wwan.c b/drivers/net/usb/qmi_wwan.c > index 720a3a2..b7ee59d 100644 > --- a/drivers/net/usb/qmi_wwan.c > +++ b/drivers/net/usb/qmi_wwan.c > @@ -1221,6 +1221,7 @@ static int qmi_wwan_resume(struct usb_interface *intf) > {QMI_FIXED_INTF(0x0b3c, 0xc00a, 6)}, /* Olivetti Olicard 160 */ > {QMI_FIXED_INTF(0x0b3c, 0xc00b, 4)}, /* Olivetti Olicard 500 */ > {QMI_FIXED_INTF(0x1e2d, 0x0060, 4)}, /* Cinterion PLxx */ > + {QMI_FIXED_INTF(0x1e2d, 0x0061, 3)}, /* Cinterion PLS8 */ > {QMI_FIXED_INTF(0x1e2d, 0x0053, 4)}, /* Cinterion PHxx,PXxx */ > {QMI_FIXED_INTF(0x1e2d, 0x0082, 4)}, /* Cinterion PHxx,PXxx (2 RmNet) */ > {QMI_FIXED_INTF(0x1e2d, 0x0082, 5)}, /* Cinterion PHxx,PXxx (2 RmNet) */ Are you sure this is correct? The Windows drivers I found for this device appear to think all functions use even interface numbers only, presumably because of a control+data interface layout? And the first 5 functions are supposedly all serial: [Strings] VENDOR_NAME = "Gemalto M2M GmbH" SRC_DSK = "Gemalto M2M GmbH ALSx PLSx LTE USB Driver Disk" DEVICE_NAME = "Gemalto M2M ALSx PLSx LTE USB Modem" SERVICE_DISPLAY_NAME = "Gemalto M2M ALSx PLSx LTE USB Modem Device" USB_VID = "VID_1E2D" USB_PID = "PID_0061" .. [Models] %DEVICE_NAME% = Modem,USB\%USB_VID%&%USB_PID%&MI_00 [Strings] VENDOR_NAME = "Gemalto M2M GmbH" SRC_DSK = "Gemalto M2M GmbH ALSx PLSx LTE USB Driver Disk" DEVICE_NAME_1 = "Gemalto M2M ALSx PLSx LTE USB serial Port 1" DEVICE_NAME_2 = "Gemalto M2M ALSx PLSx LTE USB serial Port 2" DEVICE_NAME_3 = "Gemalto M2M ALSx PLSx LTE USB serial Port 3" DEVICE_NAME_4 = "Gemalto M2M ALSx PLSx LTE USB serial Port 4" SERVICE_DISPLAY_NAME = "Gemalto M2M ALSx PLSx LTE USB Device for serial Communication" USB_VID = "VID_1E2D" USB_PID = "PID_0061" .. [SerialPort] %DEVICE_NAME_1%=PortInstall, USB\%USB_VID%&%USB_PID%&MI_02 %DEVICE_NAME_2%=PortInstall, USB\%USB_VID%&%USB_PID%&MI_04 %DEVICE_NAME_3%=PortInstall, USB\%USB_VID%&%USB_PID%&MI_06 %DEVICE_NAME_4%=PortInstall, USB\%USB_VID%&%USB_PID%&MI_08 The network functions should be on interfaces 10 and 12 according to this driver info: [Strings] VENDOR_NAME = "Gemalto M2M GmbH" SRC_DSK = "Gemalto M2M GmbH ALSx PLSx LTE USB Driver Disk" DEVICE_NAME_1 = "Gemalto M2M ALSx PLSx LTE USB MB Wireless Ethernet Adapter" DEVICE_NAME_2 = "Gemalto M2M ALSx PLSx LTE USB MB Wireless Ethernet Adapter (2nd context)" SERVICE_DISPLAY_NAME = "Gemalto M2M ALSx PLSx LTE USB MB NDIS Miniport" USB_VID = "VID_1E2D" USB_PID = "PID_0061" .. [Models.NTx86.6.1] %DEVICE_NAME_1%=wwan.NTx86.6.1,USB\%USB_VID%&%USB_PID%&MI_0A %DEVICE_NAME_2%=wwan.NTx86.6.1,USB\%USB_VID%&%USB_PID%&MI_0C But I don't know anything about this device. Maybe the layout is configurable without changing the device ID? Do you have any more information you can provide, like for example a verbose lsusb output or the relevant part of /sys/kernel/debug/usb/devices? Bjørn ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH net] net: qmi_wwan: add support for Cinterion PLS8 2017-11-23 14:03 ` Bjørn Mork @ 2017-11-23 15:10 ` Oliver Graute 2017-11-23 18:15 ` Bjørn Mork 0 siblings, 1 reply; 10+ messages in thread From: Oliver Graute @ 2017-11-23 15:10 UTC (permalink / raw) To: netdev On 23/11/17, Bjørn Mork wrote: > Oliver Graute <oliver.graute@gmail.com> writes: > > > When the PLS8 devices show up with PID 0x0061 they will expose both a > > QMI port and a WWAN interface. > > > Please remove the indentation. will do after we clarifed if this patch is really needed > Are you sure this is correct? The Windows drivers I found for this > device appear to think all functions use even interface numbers only, > presumably because of a control+data interface layout? honestly not. I have this change for some time in use with older kernel to get this PLS8 module working. Its pop-ups as usb0 network interface and with 5 /dev/ttyACM interfaces. Its gets an IP address from the provider. back then I also added this two lines: +++ V/drivers/usb/serial/option.c 2015-01-26 15:28:09.676671843 +0100 @@ -338,6 +338,7 @@ static void option_instat_callback(struc #define CINTERION_PRODUCT_PH8 0x0053 #define CINTERION_PRODUCT_AHXX 0x0055 #define CINTERION_PRODUCT_PLXX 0x0060 +#define CINTERION_PRODUCT_PLS8 0x0061 @@ -1251,6 +1252,7 @@ static const struct usb_device_id option { USB_DEVICE(CINTERION_VENDOR_ID, CINTERION_PRODUCT_PLXX), + { USB_DEVICE(CINTERION_VENDOR_ID, CINTERION_PRODUCT_PLS8), > But I don't know anything about this device. Maybe the layout is > configurable without changing the device ID? Do you have any more > information you can provide, like for example a verbose lsusb output or > the relevant part of /sys/kernel/debug/usb/devices? here the output of lsusb -vvv Bus 002 Device 002: ID 1e2d:0061 Device Descriptor: bLength 18 bDescriptorType 1 bcdUSB 2.00 bDeviceClass 0 (Defined at Interface level) bDeviceSubClass 0 bDeviceProtocol 0 bMaxPacketSize0 64 idVendor 0x1e2d idProduct 0x0061 bcdDevice 2.32 iManufacturer 1 Cinterion iProduct 2 LTE Modem iSerial 0 bNumConfigurations 1 Configuration Descriptor: bLength 9 bDescriptorType 2 wTotalLength 497 bNumInterfaces 14 bConfigurationValue 1 iConfiguration 0 bmAttributes 0xe0 Self Powered Remote Wakeup MaxPower 20mA Interface Association: bLength 8 bDescriptorType 11 bFirstInterface 0 bInterfaceCount 2 bFunctionClass 2 Communications bFunctionSubClass 2 Abstract (modem) bFunctionProtocol 1 AT-commands (v.25ter) iFunction 5 CDC Serial Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 0 bNumEndpoints 1 bInterfaceClass 2 Communications bInterfaceSubClass 2 Abstract (modem) bInterfaceProtocol 1 AT-commands (v.25ter) iInterface 3 CDC Abstract Control Model (ACM) CDC Header: bcdCDC 1.20 CDC Call Management: bmCapabilities 0x03 call management use DataInterface bDataInterface 1 CDC ACM: bmCapabilities 0x02 line coding and serial state CDC Union: bMasterInterface 0 bSlaveInterface 1 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x82 EP 2 IN bmAttributes 3 Transfer Type Interrupt Synch Type None Usage Type Data wMaxPacketSize 0x0040 1x 64 bytes bInterval 9 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 1 bAlternateSetting 0 bNumEndpoints 2 bInterfaceClass 10 CDC Data bInterfaceSubClass 0 Unused bInterfaceProtocol 0 iInterface 4 CDC ACM Data 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 Association: bLength 8 bDescriptorType 11 bFirstInterface 2 bInterfaceCount 2 bFunctionClass 2 Communications bFunctionSubClass 2 Abstract (modem) bFunctionProtocol 1 AT-commands (v.25ter) iFunction 5 CDC Serial Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 2 bAlternateSetting 0 bNumEndpoints 1 bInterfaceClass 2 Communications bInterfaceSubClass 2 Abstract (modem) bInterfaceProtocol 1 AT-commands (v.25ter) iInterface 3 CDC Abstract Control Model (ACM) CDC Header: bcdCDC 1.20 CDC Call Management: bmCapabilities 0x03 call management use DataInterface bDataInterface 3 CDC ACM: bmCapabilities 0x02 line coding and serial state CDC Union: bMasterInterface 2 bSlaveInterface 3 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x84 EP 4 IN bmAttributes 3 Transfer Type Interrupt Synch Type None Usage Type Data wMaxPacketSize 0x0040 1x 64 bytes bInterval 9 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 3 bAlternateSetting 0 bNumEndpoints 2 bInterfaceClass 10 CDC Data bInterfaceSubClass 0 Unused bInterfaceProtocol 0 iInterface 4 CDC ACM Data 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 0x02 EP 2 OUT bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0200 1x 512 bytes bInterval 0 Interface Association: bLength 8 bDescriptorType 11 bFirstInterface 4 bInterfaceCount 2 bFunctionClass 2 Communications bFunctionSubClass 2 Abstract (modem) bFunctionProtocol 1 AT-commands (v.25ter) iFunction 5 CDC Serial Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 4 bAlternateSetting 0 bNumEndpoints 1 bInterfaceClass 2 Communications bInterfaceSubClass 2 Abstract (modem) bInterfaceProtocol 1 AT-commands (v.25ter) iInterface 3 CDC Abstract Control Model (ACM) CDC Header: bcdCDC 1.20 CDC Call Management: bmCapabilities 0x03 call management use DataInterface bDataInterface 5 CDC ACM: bmCapabilities 0x02 line coding and serial state CDC Union: bMasterInterface 4 bSlaveInterface 5 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x86 EP 6 IN bmAttributes 3 Transfer Type Interrupt Synch Type None Usage Type Data wMaxPacketSize 0x0040 1x 64 bytes bInterval 9 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 5 bAlternateSetting 0 bNumEndpoints 2 bInterfaceClass 10 CDC Data bInterfaceSubClass 0 Unused bInterfaceProtocol 0 iInterface 4 CDC ACM Data 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 0x03 EP 3 OUT bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0200 1x 512 bytes bInterval 0 Interface Association: bLength 8 bDescriptorType 11 bFirstInterface 6 bInterfaceCount 2 bFunctionClass 2 Communications bFunctionSubClass 2 Abstract (modem) bFunctionProtocol 1 AT-commands (v.25ter) iFunction 5 CDC Serial Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 6 bAlternateSetting 0 bNumEndpoints 1 bInterfaceClass 2 Communications bInterfaceSubClass 2 Abstract (modem) bInterfaceProtocol 1 AT-commands (v.25ter) iInterface 3 CDC Abstract Control Model (ACM) CDC Header: bcdCDC 1.20 CDC Call Management: bmCapabilities 0x03 call management use DataInterface bDataInterface 7 CDC ACM: bmCapabilities 0x02 line coding and serial state CDC Union: bMasterInterface 6 bSlaveInterface 7 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 9 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 7 bAlternateSetting 0 bNumEndpoints 2 bInterfaceClass 10 CDC Data bInterfaceSubClass 0 Unused bInterfaceProtocol 0 iInterface 4 CDC ACM Data Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x87 EP 7 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 Association: bLength 8 bDescriptorType 11 bFirstInterface 8 bInterfaceCount 2 bFunctionClass 2 Communications bFunctionSubClass 2 Abstract (modem) bFunctionProtocol 1 AT-commands (v.25ter) iFunction 6 CDC Serial (DIAG) Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 8 bAlternateSetting 0 bNumEndpoints 1 bInterfaceClass 2 Communications bInterfaceSubClass 2 Abstract (modem) bInterfaceProtocol 1 AT-commands (v.25ter) iInterface 7 CDC Abstract Control Model (ACM) for DIAG CDC Header: bcdCDC 1.10 CDC Call Management: bmCapabilities 0x00 bDataInterface 0 CDC ACM: bmCapabilities 0x00 CDC Union: bMasterInterface 8 bSlaveInterface 9 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x8a EP 10 IN bmAttributes 3 Transfer Type Interrupt Synch Type None Usage Type Data wMaxPacketSize 0x0040 1x 64 bytes bInterval 9 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 9 bAlternateSetting 0 bNumEndpoints 2 bInterfaceClass 10 CDC Data bInterfaceSubClass 0 Unused bInterfaceProtocol 0 iInterface 8 CDC ACM Data for DIAG Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x89 EP 9 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 Association: bLength 8 bDescriptorType 11 bFirstInterface 10 bInterfaceCount 2 bFunctionClass 2 Communications bFunctionSubClass 6 Ethernet Networking bFunctionProtocol 0 iFunction 9 CDC Ethernet (RmNet) Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 10 bAlternateSetting 0 bNumEndpoints 1 bInterfaceClass 2 Communications bInterfaceSubClass 6 Ethernet Networking bInterfaceProtocol 0 iInterface 10 CDC Ethernet Control Model (ECM) for RmNet CDC Header: bcdCDC 1.20 CDC Ethernet: iMacAddress 12 DEADBEEF0000 bmEthernetStatistics 0x00000000 wMaxSegmentSize 1514 wNumberMCFilters 0x0000 bNumberPowerFilters 0 CDC Union: bMasterInterface 10 bSlaveInterface 11 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x8c EP 12 IN bmAttributes 3 Transfer Type Interrupt Synch Type None Usage Type Data wMaxPacketSize 0x0040 1x 64 bytes bInterval 9 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 11 bAlternateSetting 0 bNumEndpoints 0 bInterfaceClass 10 CDC Data bInterfaceSubClass 0 Unused bInterfaceProtocol 0 iInterface 11 CDC Ethernet Data for RmNet Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 11 bAlternateSetting 1 bNumEndpoints 2 bInterfaceClass 10 CDC Data bInterfaceSubClass 0 Unused bInterfaceProtocol 0 iInterface 11 CDC Ethernet Data for RmNet Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x8b EP 11 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 Interface Association: bLength 8 bDescriptorType 11 bFirstInterface 12 bInterfaceCount 2 bFunctionClass 2 Communications bFunctionSubClass 6 Ethernet Networking bFunctionProtocol 0 iFunction 9 CDC Ethernet (RmNet) Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 12 bAlternateSetting 0 bNumEndpoints 1 bInterfaceClass 2 Communications bInterfaceSubClass 6 Ethernet Networking bInterfaceProtocol 0 iInterface 10 CDC Ethernet Control Model (ECM) for RmNet CDC Header: bcdCDC 1.20 CDC Ethernet: iMacAddress 13 DEADBEEF0001 bmEthernetStatistics 0x00000000 wMaxSegmentSize 1514 wNumberMCFilters 0x0000 bNumberPowerFilters 0 CDC Union: bMasterInterface 12 bSlaveInterface 13 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x8e EP 14 IN bmAttributes 3 Transfer Type Interrupt Synch Type None Usage Type Data wMaxPacketSize 0x0040 1x 64 bytes bInterval 9 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 13 bAlternateSetting 0 bNumEndpoints 0 bInterfaceClass 10 CDC Data bInterfaceSubClass 0 Unused bInterfaceProtocol 0 iInterface 11 CDC Ethernet Data for RmNet Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 13 bAlternateSetting 1 bNumEndpoints 2 bInterfaceClass 10 CDC Data bInterfaceSubClass 0 Unused bInterfaceProtocol 0 iInterface 11 CDC Ethernet Data for RmNet Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x8d EP 13 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 0x07 EP 7 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 0 (Defined at Interface level) bDeviceSubClass 0 bDeviceProtocol 0 bMaxPacketSize0 64 bNumConfigurations 1 Device Status: 0x0000 (Bus Powered) Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Device Descriptor: bLength 18 bDescriptorType 1 bcdUSB 2.00 bDeviceClass 9 Hub bDeviceSubClass 0 Unused bDeviceProtocol 1 Single TT bMaxPacketSize0 64 idVendor 0x1d6b Linux Foundation idProduct 0x0002 2.0 root hub bcdDevice 3.09 iManufacturer 3 Linux 3.9.11 ehci_hcd iProduct 2 EHCI Host Controller iSerial 1 ci_hdrc.0 bNumConfigurations 1 Configuration Descriptor: bLength 9 bDescriptorType 2 wTotalLength 25 bNumInterfaces 1 bConfigurationValue 1 iConfiguration 0 bmAttributes 0xe0 Self Powered Remote Wakeup MaxPower 0mA Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 0 bNumEndpoints 1 bInterfaceClass 9 Hub bInterfaceSubClass 0 Unused bInterfaceProtocol 0 Full speed (or root) hub 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 0x0004 1x 4 bytes bInterval 12 Hub Descriptor: bLength 9 bDescriptorType 41 nNbrPorts 1 wHubCharacteristic 0x0009 Per-port power switching Per-port overcurrent protection TT think time 8 FS bits bPwrOn2PwrGood 10 * 2 milli seconds bHubContrCurrent 0 milli Ampere DeviceRemovable 0x00 PortPwrCtrlMask 0xff Hub Port Status: Port 1: 0000.0100 power Device Status: 0x0001 Self Powered Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Device Descriptor: bLength 18 bDescriptorType 1 bcdUSB 2.00 bDeviceClass 9 Hub bDeviceSubClass 0 Unused bDeviceProtocol 1 Single TT bMaxPacketSize0 64 idVendor 0x1d6b Linux Foundation idProduct 0x0002 2.0 root hub bcdDevice 3.09 iManufacturer 3 Linux 3.9.11 ehci_hcd iProduct 2 EHCI Host Controller iSerial 1 ci_hdrc.1 bNumConfigurations 1 Configuration Descriptor: bLength 9 bDescriptorType 2 wTotalLength 25 bNumInterfaces 1 bConfigurationValue 1 iConfiguration 0 bmAttributes 0xe0 Self Powered Remote Wakeup MaxPower 0mA Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 0 bNumEndpoints 1 bInterfaceClass 9 Hub bInterfaceSubClass 0 Unused bInterfaceProtocol 0 Full speed (or root) hub 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 0x0004 1x 4 bytes bInterval 12 Hub Descriptor: bLength 9 bDescriptorType 41 nNbrPorts 1 wHubCharacteristic 0x0009 Per-port power switching Per-port overcurrent protection TT think time 8 FS bits bPwrOn2PwrGood 10 * 2 milli seconds bHubContrCurrent 0 milli Ampere DeviceRemovable 0x00 PortPwrCtrlMask 0xff Hub Port Status: Port 1: 0000.0503 highspeed power enable connect Device Status: 0x0001 Self Powered Best Regards, Oliver ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH net] net: qmi_wwan: add support for Cinterion PLS8 2017-11-23 15:10 ` Oliver Graute @ 2017-11-23 18:15 ` Bjørn Mork 2017-11-23 23:06 ` Reinhard Speyerer ` (2 more replies) 0 siblings, 3 replies; 10+ messages in thread From: Bjørn Mork @ 2017-11-23 18:15 UTC (permalink / raw) To: netdev Oliver Graute <oliver.graute@gmail.com> writes: > On 23/11/17, Bjørn Mork wrote: >> Oliver Graute <oliver.graute@gmail.com> writes: >> >> > When the PLS8 devices show up with PID 0x0061 they will expose both a >> > QMI port and a WWAN interface. >> >> >> Please remove the indentation. > > will do after we clarifed if this patch is really needed > >> Are you sure this is correct? The Windows drivers I found for this >> device appear to think all functions use even interface numbers only, >> presumably because of a control+data interface layout? > > honestly not. I have this change for some time in use with older kernel > to get this PLS8 module working. Its pop-ups as usb0 network interface and > with 5 /dev/ttyACM interfaces. Its gets an IP address from the provider. > > back then I also added this two lines: > > +++ V/drivers/usb/serial/option.c 2015-01-26 15:28:09.676671843 +0100 > @@ -338,6 +338,7 @@ static void option_instat_callback(struc > #define CINTERION_PRODUCT_PH8 0x0053 > #define CINTERION_PRODUCT_AHXX 0x0055 > #define CINTERION_PRODUCT_PLXX 0x0060 > +#define CINTERION_PRODUCT_PLS8 0x0061 > > @@ -1251,6 +1252,7 @@ static const struct usb_device_id option > { USB_DEVICE(CINTERION_VENDOR_ID, CINTERION_PRODUCT_PLXX), > + { USB_DEVICE(CINTERION_VENDOR_ID, CINTERION_PRODUCT_PLS8), This should not be necessary and is wrong given the descriptors in your lsusb outout. All the serial functions look like proper CDC ACM functions which should Just Work with the cdc-acm class driver. No need for any device specific entry for those. >> But I don't know anything about this device. Maybe the layout is >> configurable without changing the device ID? Do you have any more >> information you can provide, like for example a verbose lsusb output or >> the relevant part of /sys/kernel/debug/usb/devices? > > here the output of lsusb -vvv > > Bus 002 Device 002: ID 1e2d:0061 > Device Descriptor: > bLength 18 > bDescriptorType 1 > bcdUSB 2.00 > bDeviceClass 0 (Defined at Interface level) > bDeviceSubClass 0 > bDeviceProtocol 0 > bMaxPacketSize0 64 > idVendor 0x1e2d > idProduct 0x0061 > bcdDevice 2.32 > iManufacturer 1 Cinterion > iProduct 2 LTE Modem > iSerial 0 > bNumConfigurations 1 > Configuration Descriptor: > bLength 9 > bDescriptorType 2 > wTotalLength 497 > bNumInterfaces 14 > bConfigurationValue 1 > iConfiguration 0 > bmAttributes 0xe0 > Self Powered > Remote Wakeup > MaxPower 20mA > Interface Association: > bLength 8 > bDescriptorType 11 > bFirstInterface 0 > bInterfaceCount 2 > bFunctionClass 2 Communications > bFunctionSubClass 2 Abstract (modem) > bFunctionProtocol 1 AT-commands (v.25ter) > iFunction 5 CDC Serial > Interface Descriptor: > bLength 9 > bDescriptorType 4 > bInterfaceNumber 0 > bAlternateSetting 0 > bNumEndpoints 1 > bInterfaceClass 2 Communications > bInterfaceSubClass 2 Abstract (modem) > bInterfaceProtocol 1 AT-commands (v.25ter) > iInterface 3 CDC Abstract Control Model (ACM) > CDC Header: > bcdCDC 1.20 > CDC Call Management: > bmCapabilities 0x03 > call management > use DataInterface > bDataInterface 1 > CDC ACM: > bmCapabilities 0x02 > line coding and serial state > CDC Union: > bMasterInterface 0 > bSlaveInterface 1 OK, this is consistent with the Windows driver files, so I believe your patch could work. The USB interface it identified as QMI is in fact a CDC ACM data interface. > Interface Association: > bLength 8 > bDescriptorType 11 > bFirstInterface 10 > bInterfaceCount 2 > bFunctionClass 2 Communications > bFunctionSubClass 6 Ethernet Networking > bFunctionProtocol 0 > iFunction 9 CDC Ethernet (RmNet) > Interface Descriptor: > bLength 9 > bDescriptorType 4 > bInterfaceNumber 10 > bAlternateSetting 0 > bNumEndpoints 1 > bInterfaceClass 2 Communications > bInterfaceSubClass 6 Ethernet Networking > bInterfaceProtocol 0 > iInterface 10 CDC Ethernet Control Model (ECM) for RmNet > CDC Header: > bcdCDC 1.20 > CDC Ethernet: > iMacAddress 12 DEADBEEF0000 Nice mac address :-) This is also consistent with the Windows drivers. And being a proper CDC ECM class function, it should Just Work with the cdc_ether driver. Except for the "RmNet" part, which I guess is the reason you want to add this device to qmi_wwan. Which is fine, *if* we can be reasonably certain that it does support QMI. The description string is a strong indication, but it would be even better to know this was tested. But adding this to qmi_wwan is not enough. You also need to add a blacklist entry to cdc_ether. Both should use a device+class match, similar to the Novatel entries. This will make the interface numbering irrelevant, and will allow a single entry to match both QMI/rmnet functions. Bjørn ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH net] net: qmi_wwan: add support for Cinterion PLS8 2017-11-23 18:15 ` Bjørn Mork @ 2017-11-23 23:06 ` Reinhard Speyerer 2017-11-24 12:04 ` Oliver Graute 2017-11-24 18:25 ` Bjørn Mork 2017-11-24 12:02 ` Oliver Graute 2017-12-01 12:20 ` Oliver Graute 2 siblings, 2 replies; 10+ messages in thread From: Reinhard Speyerer @ 2017-11-23 23:06 UTC (permalink / raw) To: Bjørn Mork; +Cc: netdev, oliver.graute On Thu, Nov 23, 2017 at 07:15:37PM +0100, Bjørn Mork wrote: > Oliver Graute <oliver.graute@gmail.com> writes: > > On 23/11/17, Bjørn Mork wrote: > >> Oliver Graute <oliver.graute@gmail.com> writes: > >> > >> > When the PLS8 devices show up with PID 0x0061 they will expose both a > >> > QMI port and a WWAN interface. > >> > >> > >> Please remove the indentation. > > > > will do after we clarifed if this patch is really needed > > > >> Are you sure this is correct? The Windows drivers I found for this > >> device appear to think all functions use even interface numbers only, > >> presumably because of a control+data interface layout? > > > > honestly not. I have this change for some time in use with older kernel > > to get this PLS8 module working. Its pop-ups as usb0 network interface and > > with 5 /dev/ttyACM interfaces. Its gets an IP address from the provider. > > > > back then I also added this two lines: > > > > +++ V/drivers/usb/serial/option.c 2015-01-26 15:28:09.676671843 +0100 > > @@ -338,6 +338,7 @@ static void option_instat_callback(struc > > #define CINTERION_PRODUCT_PH8 0x0053 > > #define CINTERION_PRODUCT_AHXX 0x0055 > > #define CINTERION_PRODUCT_PLXX 0x0060 > > +#define CINTERION_PRODUCT_PLS8 0x0061 > > > > @@ -1251,6 +1252,7 @@ static const struct usb_device_id option > > { USB_DEVICE(CINTERION_VENDOR_ID, CINTERION_PRODUCT_PLXX), > > + { USB_DEVICE(CINTERION_VENDOR_ID, CINTERION_PRODUCT_PLS8), > > This should not be necessary and is wrong given the descriptors in your > lsusb outout. All the serial functions look like proper CDC ACM > functions which should Just Work with the cdc-acm class driver. No need > for any device specific entry for those. > > >> But I don't know anything about this device. Maybe the layout is > >> configurable without changing the device ID? Do you have any more > >> information you can provide, like for example a verbose lsusb output or > >> the relevant part of /sys/kernel/debug/usb/devices? > > > > here the output of lsusb -vvv > > > > Bus 002 Device 002: ID 1e2d:0061 > > Device Descriptor: > > bLength 18 > > bDescriptorType 1 > > bcdUSB 2.00 > > bDeviceClass 0 (Defined at Interface level) > > bDeviceSubClass 0 > > bDeviceProtocol 0 > > bMaxPacketSize0 64 > > idVendor 0x1e2d > > idProduct 0x0061 > > bcdDevice 2.32 > > iManufacturer 1 Cinterion > > iProduct 2 LTE Modem > > iSerial 0 > > bNumConfigurations 1 > > Configuration Descriptor: > > bLength 9 > > bDescriptorType 2 > > wTotalLength 497 > > bNumInterfaces 14 > > bConfigurationValue 1 > > iConfiguration 0 > > bmAttributes 0xe0 > > Self Powered > > Remote Wakeup > > MaxPower 20mA > > Interface Association: > > bLength 8 > > bDescriptorType 11 > > bFirstInterface 0 > > bInterfaceCount 2 > > bFunctionClass 2 Communications > > bFunctionSubClass 2 Abstract (modem) > > bFunctionProtocol 1 AT-commands (v.25ter) > > iFunction 5 CDC Serial > > Interface Descriptor: > > bLength 9 > > bDescriptorType 4 > > bInterfaceNumber 0 > > bAlternateSetting 0 > > bNumEndpoints 1 > > bInterfaceClass 2 Communications > > bInterfaceSubClass 2 Abstract (modem) > > bInterfaceProtocol 1 AT-commands (v.25ter) > > iInterface 3 CDC Abstract Control Model (ACM) > > CDC Header: > > bcdCDC 1.20 > > CDC Call Management: > > bmCapabilities 0x03 > > call management > > use DataInterface > > bDataInterface 1 > > CDC ACM: > > bmCapabilities 0x02 > > line coding and serial state > > CDC Union: > > bMasterInterface 0 > > bSlaveInterface 1 > > > > OK, this is consistent with the Windows driver files, so I believe your > patch could work. The USB interface it identified as QMI is in fact a > CDC ACM data interface. > > > > Interface Association: > > bLength 8 > > bDescriptorType 11 > > bFirstInterface 10 > > bInterfaceCount 2 > > bFunctionClass 2 Communications > > bFunctionSubClass 6 Ethernet Networking > > bFunctionProtocol 0 > > iFunction 9 CDC Ethernet (RmNet) > > Interface Descriptor: > > bLength 9 > > bDescriptorType 4 > > bInterfaceNumber 10 > > bAlternateSetting 0 > > bNumEndpoints 1 > > bInterfaceClass 2 Communications > > bInterfaceSubClass 6 Ethernet Networking > > bInterfaceProtocol 0 > > iInterface 10 CDC Ethernet Control Model (ECM) for RmNet > > CDC Header: > > bcdCDC 1.20 > > CDC Ethernet: > > iMacAddress 12 DEADBEEF0000 > > Nice mac address :-) > > This is also consistent with the Windows drivers. And being a proper > CDC ECM class function, it should Just Work with the cdc_ether driver. > Except for the "RmNet" part, which I guess is the reason you want to > add this device to qmi_wwan. Which is fine, *if* we can be reasonably > certain that it does support QMI. The description string is a strong > indication, but it would be even better to know this was tested. > > But adding this to qmi_wwan is not enough. You also need to add a > blacklist entry to cdc_ether. Both should use a device+class match, > similar to the Novatel entries. This will make the interface numbering > irrelevant, and will allow a single entry to match both QMI/rmnet > functions. Hi Bjørn, before posting this problem report https://developer.gemalto.com/threads/ipv6dualstack-problems-pls8-e-revision-03017 in the Gemalto developer forum I tested the qmi_wwan/cdc_ether changes you suggested above and apart from having two working QMI interfaces the IPv6/dualstack problems observed with AT^SWWAN/cdc_ether were also gone when using WDSStartNetworkInterface and the QMI interface in raw IP mode instead. Unfortunately Gemalto does no seems to be willing to provide an alternative USB composition which includes QMI interfaces for the PLS8. Therefore applying the above changes to qmi_wwan/cdc_ether might make the PLS8 network interfaces stop working when Gemalto decides to replace their f_rmnet gadget in CDCECM mode with a f_ecm gadget when releasing a firmware update. Regards, Reinhard ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH net] net: qmi_wwan: add support for Cinterion PLS8 2017-11-23 23:06 ` Reinhard Speyerer @ 2017-11-24 12:04 ` Oliver Graute 2017-11-24 18:25 ` Bjørn Mork 1 sibling, 0 replies; 10+ messages in thread From: Oliver Graute @ 2017-11-24 12:04 UTC (permalink / raw) To: netdev On 24/11/17, Reinhard Speyerer wrote: > before posting this problem report > https://developer.gemalto.com/threads/ipv6dualstack-problems-pls8-e-revision-03017 > in the Gemalto developer forum I tested the qmi_wwan/cdc_ether changes > you suggested above and apart from having two working QMI interfaces > the IPv6/dualstack problems observed with AT^SWWAN/cdc_ether were > also gone when using WDSStartNetworkInterface and the QMI interface in > raw IP mode instead. thx for sharing this information. IPv6 with PLS8-E is also a topic on our side Best Regards, Oliver ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH net] net: qmi_wwan: add support for Cinterion PLS8 2017-11-23 23:06 ` Reinhard Speyerer 2017-11-24 12:04 ` Oliver Graute @ 2017-11-24 18:25 ` Bjørn Mork 2017-11-26 15:16 ` Reinhard Speyerer 1 sibling, 1 reply; 10+ messages in thread From: Bjørn Mork @ 2017-11-24 18:25 UTC (permalink / raw) To: Reinhard Speyerer; +Cc: netdev, oliver.graute Reinhard Speyerer <rspmn@arcor.de> writes: > before posting this problem report > https://developer.gemalto.com/threads/ipv6dualstack-problems-pls8-e-revision-03017 > in the Gemalto developer forum I tested the qmi_wwan/cdc_ether changes > you suggested above and apart from having two working QMI interfaces > the IPv6/dualstack problems observed with AT^SWWAN/cdc_ether were > also gone when using WDSStartNetworkInterface and the QMI interface in > raw IP mode instead. Right. I did not know about the "carrier off" issue. But messed up ethernet headers is a well known problem with all these Qualcomm based modems. Switching them to raw IP mode is often the only way to make them work consistently. Having seen this problem with multiple vendors, where some even have borrowed our workarounds for their own out-of-tree drivers, makes me pretty sure that it isn't easily fixable. It's a Qualcomm bug, and I guess no one is allowed to even look at the code. Much less change it. Which makes sense given the mess it must be... > Unfortunately Gemalto does no seems to be willing to provide an > alternative USB composition which includes QMI interfaces for the > PLS8. Therefore applying the above changes to qmi_wwan/cdc_ether might > make the PLS8 network interfaces stop working when Gemalto decides to > replace their f_rmnet gadget in CDCECM mode with a f_ecm gadget when > releasing a firmware update. I don't think this is necessarily a problem. Only the QMI control channel will stop working should this happen. The qmi_wwan driver will provide the same network device support as cdc_ether, using CDC ECM framing. And to be honest, such a redesign of the modem application for a mature product is very unlikely, isn't it? Why would Gemalto want to do all that extra work, taking the risks involved? For what possible purpose? This is probably the reason they don't want to mess with alternative USB compositions either. In any case, I think it is worth adding this device to qmi_wwan if it works with current firmwares and you, or anyone else, finds it useful. And it does sound like that based on the IPv6 issues you mention.. But I'll leave the decision to you or anyone else with such a device. Bjørn ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH net] net: qmi_wwan: add support for Cinterion PLS8 2017-11-24 18:25 ` Bjørn Mork @ 2017-11-26 15:16 ` Reinhard Speyerer 0 siblings, 0 replies; 10+ messages in thread From: Reinhard Speyerer @ 2017-11-26 15:16 UTC (permalink / raw) To: Bjørn Mork; +Cc: netdev, oliver.graute On Fri, Nov 24, 2017 at 07:25:19PM +0100, Bjørn Mork wrote: > Reinhard Speyerer <rspmn@arcor.de> writes: > > > before posting this problem report > > https://developer.gemalto.com/threads/ipv6dualstack-problems-pls8-e-revision-03017 > > in the Gemalto developer forum I tested the qmi_wwan/cdc_ether changes > > you suggested above and apart from having two working QMI interfaces > > the IPv6/dualstack problems observed with AT^SWWAN/cdc_ether were > > also gone when using WDSStartNetworkInterface and the QMI interface in > > raw IP mode instead. > > Right. I did not know about the "carrier off" issue. But messed up > ethernet headers is a well known problem with all these Qualcomm based > modems. Switching them to raw IP mode is often the only way to make them > work consistently. > > Having seen this problem with multiple vendors, where some even have > borrowed our workarounds for their own out-of-tree drivers, makes me > pretty sure that it isn't easily fixable. It's a Qualcomm bug, and I > guess no one is allowed to even look at the code. Much less change it. > Which makes sense given the mess it must be... > > > Unfortunately Gemalto does no seems to be willing to provide an > > alternative USB composition which includes QMI interfaces for the > > PLS8. Therefore applying the above changes to qmi_wwan/cdc_ether might > > make the PLS8 network interfaces stop working when Gemalto decides to > > replace their f_rmnet gadget in CDCECM mode with a f_ecm gadget when > > releasing a firmware update. > > I don't think this is necessarily a problem. Only the QMI control > channel will stop working should this happen. The qmi_wwan driver will > provide the same network device support as cdc_ether, using CDC ECM > framing. > > And to be honest, such a redesign of the modem application for a mature > product is very unlikely, isn't it? Why would Gemalto want to do all > that extra work, taking the risks involved? For what possible purpose? > This is probably the reason they don't want to mess with alternative USB > compositions either. > > In any case, I think it is worth adding this device to qmi_wwan if it > works with current firmwares and you, or anyone else, finds it useful. > And it does sound like that based on the IPv6 issues you mention.. > > But I'll leave the decision to you or anyone else with such a device. Hi Bjørn, given that the PLS8 USB PID 0x0061 is also used by firmware version 02.x which has been relased quite some time ago I'm afraid switching it from cdc_ether to qmi_wwan in the mainline Linux kernel now might break too many existing/working setups even if only for the changed interface name. Since Gemalto also seems to have moved away from supporting USB compositions with a QMI interface with newer firmware versions in general they might as well reserve the right to reject problem reports submitted to them when not using their AT^SWWAN/CDCECM setup. Therefore I will not submit patches which switch PLS8 with USB PID 0x0061 from the cdc_ether to the qmi_wwan driver. If there are other PLS8 users who don't share my concerns: please feel free to submit the patches yourself. Let's hope that Gemalto is able to fix the AT^SWWAN/CDCECM-specific IPv6/dualstack problems in their forthcoming PLS8 firmware version 04.x or provides an alternative USB composition if the effort for fixing the bugs would be too high. Regards, Reinhard ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH net] net: qmi_wwan: add support for Cinterion PLS8 2017-11-23 18:15 ` Bjørn Mork 2017-11-23 23:06 ` Reinhard Speyerer @ 2017-11-24 12:02 ` Oliver Graute 2017-12-01 12:20 ` Oliver Graute 2 siblings, 0 replies; 10+ messages in thread From: Oliver Graute @ 2017-11-24 12:02 UTC (permalink / raw) To: netdev On 23/11/17, Bjørn Mork wrote: > > This is also consistent with the Windows drivers. And being a proper > CDC ECM class function, it should Just Work with the cdc_ether driver. > Except for the "RmNet" part, which I guess is the reason you want to > add this device to qmi_wwan. Which is fine, *if* we can be reasonably > certain that it does support QMI. The description string is a strong > indication, but it would be even better to know this was tested. > > But adding this to qmi_wwan is not enough. You also need to add a > blacklist entry to cdc_ether. Both should use a device+class match, > similar to the Novatel entries. This will make the interface numbering > irrelevant, and will allow a single entry to match both QMI/rmnet > functions. ok I tried it this way: +++ b/drivers/net/usb/cdc_ether.c @@ -562,6 +562,7 @@ static void usbnet_cdc_zte_status(struct usbnet *dev, struct urb *urb) #define MICROSOFT_VENDOR_ID 0x045e #define UBLOX_VENDOR_ID 0x1546 #define TPLINK_VENDOR_ID 0x2357 +#define CINTERION_VENDOR_ID 0x1e2d static const struct usb_device_id products[] = { /* BLACKLIST !! @@ -821,6 +822,13 @@ static void usbnet_cdc_zte_status(struct usbnet *dev, struct urb *urb) .driver_info = 0, }, +/* Cinterion PLS8 - handled by qmi_wwan */ +{ + USB_DEVICE_AND_INTERFACE_INFO(CINTERION_VENDOR_ID, 0x0061, USB_CLASS_COMM, + USB_CDC_SUBCLASS_ETHERNET, USB_CDC_PROTO_NONE), + .driver_info = 0, +}, + /* WHITELIST!!! * * CDC Ether uses two interfaces, not necessarily consecutive. diff --git a/drivers/net/usb/qmi_wwan.c b/drivers/net/usb/qmi_wwan.c index 720a3a2..93e102e 100644 --- a/drivers/net/usb/qmi_wwan.c +++ b/drivers/net/usb/qmi_wwan.c @@ -1221,6 +1221,7 @@ static int qmi_wwan_resume(struct usb_interface *intf) {QMI_FIXED_INTF(0x0b3c, 0xc00a, 6)}, /* Olivetti Olicard 160 */ {QMI_FIXED_INTF(0x0b3c, 0xc00b, 4)}, /* Olivetti Olicard 500 */ {QMI_FIXED_INTF(0x1e2d, 0x0060, 4)}, /* Cinterion PLxx */ + {QMI_FIXED_INTF(0x1e2d, 0x0061, 3)}, /* Cinterion PLS8 LTE */ {QMI_FIXED_INTF(0x1e2d, 0x0053, 4)}, /* Cinterion PHxx,PXxx */ {QMI_FIXED_INTF(0x1e2d, 0x0082, 4)}, /* Cinterion PHxx,PXxx (2 RmNet) */ {QMI_FIXED_INTF(0x1e2d, 0x0082, 5)}, /* Cinterion PHxx,PXxx (2 RmNet) */ but now I'am missing an ttyACM4 interface and the edc_ether registering is not working anymore. [ 124.310611] usb 2-1: new high-speed USB device number 2 using ci_hdrc [ 124.457029] usb 2-1: New USB device found, idVendor=1e2d, idProduct=0061 [ 124.463938] usb 2-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0 [ 124.471307] usb 2-1: Product: LTE Modem [ 124.475278] usb 2-1: Manufacturer: Cinterion [ 124.536219] cdc_acm 2-1:1.0: ttyACM0: USB ACM device [ 124.563155] cdc_acm 2-1:1.2: ttyACM1: USB ACM device [ 124.589625] cdc_acm 2-1:1.4: ttyACM2: USB ACM device [ 124.613517] cdc_acm 2-1:1.6: ttyACM3: USB ACM device in my working old setup with kernel 3.9.11 it looks like this: [ 129.710622] usb 2-1: new high-speed USB device number 2 using ci_hdrc [ 129.873985] usb 2-1: New USB device found, idVendor=1e2d, idProduct=0061 [ 129.888573] usb 2-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0 [ 129.902973] usb 2-1: Product: LTE Modem [ 129.906927] usb 2-1: Manufacturer: Cinterion [ 129.928389] cdc_acm 2-1:1.0: ttyACM0: USB ACM device [ 129.959324] cdc_acm 2-1:1.2: ttyACM1: USB ACM device [ 129.992714] cdc_acm 2-1:1.4: ttyACM2: USB ACM device [ 130.019416] cdc_acm 2-1:1.6: ttyACM3: USB ACM device [ 130.045248] cdc_acm 2-1:1.8: This device cannot do calls on its own. It is not a modem. [ 130.073929] cdc_acm 2-1:1.8: ttyACM4: USB ACM device [ 130.100982] cdc_ether 2-1:1.10 usb0: register 'cdc_ether' at usb-ci_hdrc.1-1, CDC Ethernet Device, de:ad:be:ef:00:00 [ 130.136438] cdc_ether 2-1:1.12 usb1: register 'cdc_ether' at usb-ci_hdrc.1-1, CDC Ethernet Device, de:ad:be:ef:00:01 Any clue what I'am doing wrong here? Best regards, Oliver ^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [PATCH net] net: qmi_wwan: add support for Cinterion PLS8 2017-11-23 18:15 ` Bjørn Mork 2017-11-23 23:06 ` Reinhard Speyerer 2017-11-24 12:02 ` Oliver Graute @ 2017-12-01 12:20 ` Oliver Graute 2 siblings, 0 replies; 10+ messages in thread From: Oliver Graute @ 2017-12-01 12:20 UTC (permalink / raw) To: netdev; +Cc: bjorn On 23/11/17, Bjørn Mork wrote: > This is also consistent with the Windows drivers. And being a proper > CDC ECM class function, it should Just Work with the cdc_ether driver. > Except for the "RmNet" part, which I guess is the reason you want to > add this device to qmi_wwan. Which is fine, *if* we can be reasonably > certain that it does support QMI. The description string is a strong > indication, but it would be even better to know this was tested. > > But adding this to qmi_wwan is not enough. You also need to add a > blacklist entry to cdc_ether. Both should use a device+class match, > similar to the Novatel entries. This will make the interface numbering > irrelevant, and will allow a single entry to match both QMI/rmnet > functions. I tried the following changes but I still can't get the PLS8 to work with kernel 4.14. Here some more information what I have and what I did. The Module is in this Revsion: Cinterion PLS8-E REVISION 02.011 A-REVISION 01.010.19 --- a/drivers/net/usb/qmi_wwan.c +++ b/drivers/net/usb/qmi_wwan.c @@ -779,6 +779,7 @@ static const struct usb_device_id products[] = { {QMI_FIXED_INTF(0x0b3c, 0xc00a, 6)}, /* Olivetti Olicard 160 */ {QMI_FIXED_INTF(0x0b3c, 0xc00b, 4)}, /* Olivetti Olicard 500 */ {QMI_FIXED_INTF(0x1e2d, 0x0060, 4)}, /* Cinterion PLxx */ + {QMI_FIXED_INTF(0x1e2d, 0x0061, 3)}, /* Cinterion PLS8 */ {QMI_FIXED_INTF(0x1e2d, 0x0053, 4)}, /* Cinterion PHxx,PXxx */ {QMI_FIXED_INTF(0x413c, 0x81a2, 8)}, /* Dell Wireless 5806 Gobi(TM) 4G LTE Mobile Broadband Card */ {QMI_FIXED_INTF(0x413c, 0x81a3, 8)}, /* Dell Wireless 5570 HSPA+ (42Mbps) Mobile Broadband Card */ I tried the value 4 instead of 3. here but both won't work. In my working old setup with Kernel 3.9.11 the value is 3. and this was the only change back then. +++ b/drivers/net/usb/cdc_ether.c @@ -562,6 +562,7 @@ static void usbnet_cdc_zte_status(struct usbnet *dev, struct urb *urb) #define MICROSOFT_VENDOR_ID 0x045e #define UBLOX_VENDOR_ID 0x1546 #define TPLINK_VENDOR_ID 0x2357 +#define CINTERION_VENDOR_ID 0x1e2d static const struct usb_device_id products[] = { /* BLACKLIST !! @@ -821,6 +822,13 @@ static void usbnet_cdc_zte_status(struct usbnet *dev, struct urb *urb) .driver_info = 0, }, +/* Cinterion PLS8 - handled by qmi_wwan */ +{ + USB_DEVICE_AND_INTERFACE_INFO(CINTERION_VENDOR_ID, 0x0061, USB_CLASS_COMM, + USB_CDC_SUBCLASS_ETHERNET, USB_CDC_PROTO_NONE), + .driver_info = 0, +}, This change wasn't necessary in my old setup with the PLS8. Can you explain me why its needed now? This is the output I get with dmesg. [ 747.989455] usb 2-1: USB disconnect, device number 11 [ 748.694818] usb 2-1: new high-speed USB device number 12 using ci_hdrc [ 748.856821] usb 2-1: New USB device found, idVendor=1e2d, idProduct=0061 [ 748.863712] usb 2-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0 [ 748.871112] usb 2-1: Product: LTE Modem [ 748.875109] usb 2-1: Manufacturer: Cinterion [ 748.895201] cdc_acm 2-1:1.0: ttyACM0: USB ACM device [ 748.915099] cdc_acm 2-1:1.2: ttyACM1: USB ACM device [ 748.933204] cdc_acm 2-1:1.4: ttyACM2: USB ACM device [ 748.952976] cdc_acm 2-1:1.6: ttyACM3: USB ACM device Then I try to connect to /dev/ttyACM1 to execute a "ati1" but without success. Best Regards, Oliver ^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2017-12-01 12:22 UTC | newest] Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2017-11-23 13:37 [PATCH net] net: qmi_wwan: add support for Cinterion PLS8 Oliver Graute 2017-11-23 14:03 ` Bjørn Mork 2017-11-23 15:10 ` Oliver Graute 2017-11-23 18:15 ` Bjørn Mork 2017-11-23 23:06 ` Reinhard Speyerer 2017-11-24 12:04 ` Oliver Graute 2017-11-24 18:25 ` Bjørn Mork 2017-11-26 15:16 ` Reinhard Speyerer 2017-11-24 12:02 ` Oliver Graute 2017-12-01 12:20 ` Oliver Graute
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.