* usb composition without class
@ 2024-06-20 5:58 Giacinto Cifelli
2024-06-20 6:06 ` Greg KH
0 siblings, 1 reply; 7+ messages in thread
From: Giacinto Cifelli @ 2024-06-20 5:58 UTC (permalink / raw)
To: linux-usb
greetings,
question:
on a system (yocto), I have a usb composition that doesn't assign the
class for the interfaces:
|__ Port 1: Dev 2, If 1, Class=, Driver=usbhid, 1.5M
|__ Port 1: Dev 2, If 0, Class=, Driver=usbhid, 1.5M
|__ Port 3: Dev 3, If 10, Class=, Driver=cdc_mbim, 480M
|__ Port 3: Dev 3, If 8, Class=, Driver=cdc_acm, 480M
|__ Port 3: Dev 3, If 6, Class=, Driver=cdc_acm, 480M
|__ Port 3: Dev 3, If 4, Class=, Driver=cdc_acm, 480M
|__ Port 3: Dev 3, If 2, Class=, Driver=cdc_acm, 480M
|__ Port 3: Dev 3, If 11, Class=, Driver=cdc_mbim, 480M
|__ Port 3: Dev 3, If 0, Class=, Driver=cdc_acm, 480M
|__ Port 3: Dev 3, If 9, Class=, Driver=cdc_acm, 480M
|__ Port 3: Dev 3, If 7, Class=, Driver=cdc_acm, 480M
|__ Port 3: Dev 3, If 5, Class=, Driver=cdc_acm, 480M
|__ Port 3: Dev 3, If 3, Class=, Driver=cdc_acm, 480M
|__ Port 3: Dev 3, If 1, Class=, Driver=cdc_acm, 480M
Kernel: Linux version 6.1.35 (oe-user@oe-host) (x86_64-poky-linux-gcc
(GCC) 11.4.0, GNU ld (GNU Binutils) 2.38.20220708) #1 SMP
PREEMPT_DYNAMIC Thu Jun 22 18:03:13 UTC 2023
instead of (arch):
|__ Port 004: Dev 004, If 0, Class=Communications, Driver=cdc_acm, 5000M
|__ Port 004: Dev 004, If 1, Class=CDC Data, Driver=cdc_acm, 5000M
|__ Port 004: Dev 004, If 2, Class=Communications, Driver=cdc_acm, 5000M
|__ Port 004: Dev 004, If 3, Class=CDC Data, Driver=cdc_acm, 5000M
|__ Port 004: Dev 004, If 4, Class=Communications, Driver=cdc_acm, 5000M
|__ Port 004: Dev 004, If 5, Class=CDC Data, Driver=cdc_acm, 5000M
|__ Port 004: Dev 004, If 6, Class=Communications, Driver=cdc_acm, 5000M
|__ Port 004: Dev 004, If 7, Class=CDC Data, Driver=cdc_acm, 5000M
|__ Port 004: Dev 004, If 8, Class=Communications, Driver=cdc_acm, 5000M
|__ Port 004: Dev 004, If 9, Class=CDC Data, Driver=cdc_acm, 5000M
|__ Port 004: Dev 004, If 10, Class=Communications, Driver=cdc_mbim, 5000M
|__ Port 004: Dev 004, If 11, Class=CDC Data, Driver=cdc_mbim, 5000M
Kernel: Linux 6.6.34-1-lts #1 SMP PREEMPT_DYNAMIC Sun, 16 Jun 2024
14:45:31 +0000 x86_64 GNU/Linux
This lack of class creates too many /dev/ttyACMx ports, and
ModemManager tries to access them all, perhaps also blocking the
device, and the whole system doesn't work.
For completeness, the device is:
Bus 002 Device 004: ID 1e2d:0065 Gemalto M2M GmbH LTE Modem
which is supported without any customs in the cdc-acm and cdc_mbim drivers.
I spotted only two options not compiled-in in the yocto .config
(compared with the arch one), but I strongly doubt this is related:
CONFIG_USB_G_MULTI
CONFIG_USB_G_MULTI_CDC
Would you know why the class is not assigned?
Thank you,
Kind Regards,
Giacinto
^ permalink raw reply [flat|nested] 7+ messages in thread* Re: usb composition without class 2024-06-20 5:58 usb composition without class Giacinto Cifelli @ 2024-06-20 6:06 ` Greg KH 2024-06-20 6:32 ` Giacinto Cifelli 0 siblings, 1 reply; 7+ messages in thread From: Greg KH @ 2024-06-20 6:06 UTC (permalink / raw) To: Giacinto Cifelli; +Cc: linux-usb On Thu, Jun 20, 2024 at 07:58:13AM +0200, Giacinto Cifelli wrote: > greetings, > > question: > > on a system (yocto), I have a usb composition that doesn't assign the > class for the interfaces: > |__ Port 1: Dev 2, If 1, Class=, Driver=usbhid, 1.5M > |__ Port 1: Dev 2, If 0, Class=, Driver=usbhid, 1.5M > |__ Port 3: Dev 3, If 10, Class=, Driver=cdc_mbim, 480M > |__ Port 3: Dev 3, If 8, Class=, Driver=cdc_acm, 480M > |__ Port 3: Dev 3, If 6, Class=, Driver=cdc_acm, 480M > |__ Port 3: Dev 3, If 4, Class=, Driver=cdc_acm, 480M > |__ Port 3: Dev 3, If 2, Class=, Driver=cdc_acm, 480M > |__ Port 3: Dev 3, If 11, Class=, Driver=cdc_mbim, 480M > |__ Port 3: Dev 3, If 0, Class=, Driver=cdc_acm, 480M > |__ Port 3: Dev 3, If 9, Class=, Driver=cdc_acm, 480M > |__ Port 3: Dev 3, If 7, Class=, Driver=cdc_acm, 480M > |__ Port 3: Dev 3, If 5, Class=, Driver=cdc_acm, 480M > |__ Port 3: Dev 3, If 3, Class=, Driver=cdc_acm, 480M > |__ Port 3: Dev 3, If 1, Class=, Driver=cdc_acm, 480M > Kernel: Linux version 6.1.35 (oe-user@oe-host) (x86_64-poky-linux-gcc > (GCC) 11.4.0, GNU ld (GNU Binutils) 2.38.20220708) #1 SMP > PREEMPT_DYNAMIC Thu Jun 22 18:03:13 UTC 2023 > > instead of (arch): > |__ Port 004: Dev 004, If 0, Class=Communications, Driver=cdc_acm, 5000M > |__ Port 004: Dev 004, If 1, Class=CDC Data, Driver=cdc_acm, 5000M > |__ Port 004: Dev 004, If 2, Class=Communications, Driver=cdc_acm, 5000M > |__ Port 004: Dev 004, If 3, Class=CDC Data, Driver=cdc_acm, 5000M > |__ Port 004: Dev 004, If 4, Class=Communications, Driver=cdc_acm, 5000M > |__ Port 004: Dev 004, If 5, Class=CDC Data, Driver=cdc_acm, 5000M > |__ Port 004: Dev 004, If 6, Class=Communications, Driver=cdc_acm, 5000M > |__ Port 004: Dev 004, If 7, Class=CDC Data, Driver=cdc_acm, 5000M > |__ Port 004: Dev 004, If 8, Class=Communications, Driver=cdc_acm, 5000M > |__ Port 004: Dev 004, If 9, Class=CDC Data, Driver=cdc_acm, 5000M > |__ Port 004: Dev 004, If 10, Class=Communications, Driver=cdc_mbim, 5000M > |__ Port 004: Dev 004, If 11, Class=CDC Data, Driver=cdc_mbim, 5000M > Kernel: Linux 6.6.34-1-lts #1 SMP PREEMPT_DYNAMIC Sun, 16 Jun 2024 > 14:45:31 +0000 x86_64 GNU/Linux > > This lack of class creates too many /dev/ttyACMx ports, and > ModemManager tries to access them all, perhaps also blocking the > device, and the whole system doesn't work. > > For completeness, the device is: > Bus 002 Device 004: ID 1e2d:0065 Gemalto M2M GmbH LTE Modem > which is supported without any customs in the cdc-acm and cdc_mbim drivers. > > I spotted only two options not compiled-in in the yocto .config > (compared with the arch one), but I strongly doubt this is related: > CONFIG_USB_G_MULTI > CONFIG_USB_G_MULTI_CDC > > Would you know why the class is not assigned? This is just a userspace issue, right? Or are you saying that somehow the same device plugged into two different systems works differently? Note that 6.6 is a year older than 6.1 so perhaps you just need to update your system running 6.1? Odds are there's a quirk for this device in newer kernels. Also, 6.1.35 is VERY old and obsolete and full of known security holes that have been fixed. Please update to the latest 6.1.y release as soon as possible. thanks, greg k-h ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: usb composition without class 2024-06-20 6:06 ` Greg KH @ 2024-06-20 6:32 ` Giacinto Cifelli 2024-06-20 6:40 ` Greg KH 0 siblings, 1 reply; 7+ messages in thread From: Giacinto Cifelli @ 2024-06-20 6:32 UTC (permalink / raw) To: Greg KH; +Cc: linux-usb On Thu, Jun 20, 2024 at 8:06 AM Greg KH <gregkh@linuxfoundation.org> wrote: > On Thu, Jun 20, 2024 at 07:58:13AM +0200, Giacinto Cifelli wrote: > > greetings, > > > > question: > > > > on a system (yocto), I have a usb composition that doesn't assign the > > class for the interfaces: > > |__ Port 3: Dev 3, If 10, Class=, Driver=cdc_mbim, 480M > > |__ Port 3: Dev 3, If 8, Class=, Driver=cdc_acm, 480M > > |__ Port 3: Dev 3, If 6, Class=, Driver=cdc_acm, 480M > > |__ Port 3: Dev 3, If 4, Class=, Driver=cdc_acm, 480M > > |__ Port 3: Dev 3, If 2, Class=, Driver=cdc_acm, 480M > > |__ Port 3: Dev 3, If 11, Class=, Driver=cdc_mbim, 480M > > |__ Port 3: Dev 3, If 0, Class=, Driver=cdc_acm, 480M > > |__ Port 3: Dev 3, If 9, Class=, Driver=cdc_acm, 480M > > |__ Port 3: Dev 3, If 7, Class=, Driver=cdc_acm, 480M > > |__ Port 3: Dev 3, If 5, Class=, Driver=cdc_acm, 480M > > |__ Port 3: Dev 3, If 3, Class=, Driver=cdc_acm, 480M > > |__ Port 3: Dev 3, If 1, Class=, Driver=cdc_acm, 480M > > Kernel: Linux version 6.1.35 (oe-user@oe-host) (x86_64-poky-linux-gcc > > (GCC) 11.4.0, GNU ld (GNU Binutils) 2.38.20220708) #1 SMP > > PREEMPT_DYNAMIC Thu Jun 22 18:03:13 UTC 2023 > > > > instead of (arch): > > |__ Port 004: Dev 004, If 0, Class=Communications, Driver=cdc_acm, 5000M > > |__ Port 004: Dev 004, If 1, Class=CDC Data, Driver=cdc_acm, 5000M > > |__ Port 004: Dev 004, If 2, Class=Communications, Driver=cdc_acm, 5000M > > |__ Port 004: Dev 004, If 3, Class=CDC Data, Driver=cdc_acm, 5000M > > |__ Port 004: Dev 004, If 4, Class=Communications, Driver=cdc_acm, 5000M > > |__ Port 004: Dev 004, If 5, Class=CDC Data, Driver=cdc_acm, 5000M > > |__ Port 004: Dev 004, If 6, Class=Communications, Driver=cdc_acm, 5000M > > |__ Port 004: Dev 004, If 7, Class=CDC Data, Driver=cdc_acm, 5000M > > |__ Port 004: Dev 004, If 8, Class=Communications, Driver=cdc_acm, 5000M > > |__ Port 004: Dev 004, If 9, Class=CDC Data, Driver=cdc_acm, 5000M > > |__ Port 004: Dev 004, If 10, Class=Communications, Driver=cdc_mbim, 5000M > > |__ Port 004: Dev 004, If 11, Class=CDC Data, Driver=cdc_mbim, 5000M > > Kernel: Linux 6.6.34-1-lts #1 SMP PREEMPT_DYNAMIC Sun, 16 Jun 2024 > > 14:45:31 +0000 x86_64 GNU/Linux > > > > This lack of class creates too many /dev/ttyACMx ports, and > > ModemManager tries to access them all, perhaps also blocking the > > device, and the whole system doesn't work. > > > > For completeness, the device is: > > Bus 002 Device 004: ID 1e2d:0065 Gemalto M2M GmbH LTE Modem > > which is supported without any customs in the cdc-acm and cdc_mbim drivers. > > > > I spotted only two options not compiled-in in the yocto .config > > (compared with the arch one), but I strongly doubt this is related: > > CONFIG_USB_G_MULTI > > CONFIG_USB_G_MULTI_CDC > > > > Would you know why the class is not assigned? > > This is just a userspace issue, right? I think the class is assigned by the kernel/driver. > Or are you saying that somehow > the same device plugged into two different systems works differently? correct: the same device works differently in the two systems... in the sense of the class not assigned. The device boots in the same way, the difference is not in the device. > > Note that 6.6 is a year older than 6.1 so perhaps you just need to > update your system running 6.1? Odds are there's a quirk for this > device in newer kernels. I have checked, and there aren't for this device, which was working properly already with the kernels 4.19.x. I haven't submitted any for this modem, but if it turns out that patches are needed, I will be glad to submit them. Only at the moment I have no idea about what is going wrong. > > Also, 6.1.35 is VERY old and obsolete and full of known security holes > that have been fixed. Please update to the latest 6.1.y release as soon > as possible. I think in Yocto they have the habit of adding patches without changing the version number. But in any case I will start to migrate the system... it will take some time, thou. I feel, however, that this won't solve the issue at hand. Any idea why the class is not assigned? > > thanks, > > greg k-h Kind Regards, Giacinto ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: usb composition without class 2024-06-20 6:32 ` Giacinto Cifelli @ 2024-06-20 6:40 ` Greg KH 2024-06-20 9:25 ` Giacinto Cifelli 0 siblings, 1 reply; 7+ messages in thread From: Greg KH @ 2024-06-20 6:40 UTC (permalink / raw) To: Giacinto Cifelli; +Cc: linux-usb On Thu, Jun 20, 2024 at 08:32:39AM +0200, Giacinto Cifelli wrote: > On Thu, Jun 20, 2024 at 8:06 AM Greg KH <gregkh@linuxfoundation.org> wrote: > > On Thu, Jun 20, 2024 at 07:58:13AM +0200, Giacinto Cifelli wrote: > > > greetings, > > > > > > question: > > > > > > on a system (yocto), I have a usb composition that doesn't assign the > > > class for the interfaces: > > > |__ Port 3: Dev 3, If 10, Class=, Driver=cdc_mbim, 480M > > > |__ Port 3: Dev 3, If 8, Class=, Driver=cdc_acm, 480M > > > |__ Port 3: Dev 3, If 6, Class=, Driver=cdc_acm, 480M > > > |__ Port 3: Dev 3, If 4, Class=, Driver=cdc_acm, 480M > > > |__ Port 3: Dev 3, If 2, Class=, Driver=cdc_acm, 480M > > > |__ Port 3: Dev 3, If 11, Class=, Driver=cdc_mbim, 480M > > > |__ Port 3: Dev 3, If 0, Class=, Driver=cdc_acm, 480M > > > |__ Port 3: Dev 3, If 9, Class=, Driver=cdc_acm, 480M > > > |__ Port 3: Dev 3, If 7, Class=, Driver=cdc_acm, 480M > > > |__ Port 3: Dev 3, If 5, Class=, Driver=cdc_acm, 480M > > > |__ Port 3: Dev 3, If 3, Class=, Driver=cdc_acm, 480M > > > |__ Port 3: Dev 3, If 1, Class=, Driver=cdc_acm, 480M > > > Kernel: Linux version 6.1.35 (oe-user@oe-host) (x86_64-poky-linux-gcc > > > (GCC) 11.4.0, GNU ld (GNU Binutils) 2.38.20220708) #1 SMP > > > PREEMPT_DYNAMIC Thu Jun 22 18:03:13 UTC 2023 > > > > > > instead of (arch): > > > |__ Port 004: Dev 004, If 0, Class=Communications, Driver=cdc_acm, 5000M > > > |__ Port 004: Dev 004, If 1, Class=CDC Data, Driver=cdc_acm, 5000M > > > |__ Port 004: Dev 004, If 2, Class=Communications, Driver=cdc_acm, 5000M > > > |__ Port 004: Dev 004, If 3, Class=CDC Data, Driver=cdc_acm, 5000M > > > |__ Port 004: Dev 004, If 4, Class=Communications, Driver=cdc_acm, 5000M > > > |__ Port 004: Dev 004, If 5, Class=CDC Data, Driver=cdc_acm, 5000M > > > |__ Port 004: Dev 004, If 6, Class=Communications, Driver=cdc_acm, 5000M > > > |__ Port 004: Dev 004, If 7, Class=CDC Data, Driver=cdc_acm, 5000M > > > |__ Port 004: Dev 004, If 8, Class=Communications, Driver=cdc_acm, 5000M > > > |__ Port 004: Dev 004, If 9, Class=CDC Data, Driver=cdc_acm, 5000M > > > |__ Port 004: Dev 004, If 10, Class=Communications, Driver=cdc_mbim, 5000M > > > |__ Port 004: Dev 004, If 11, Class=CDC Data, Driver=cdc_mbim, 5000M > > > Kernel: Linux 6.6.34-1-lts #1 SMP PREEMPT_DYNAMIC Sun, 16 Jun 2024 > > > 14:45:31 +0000 x86_64 GNU/Linux > > > > > > This lack of class creates too many /dev/ttyACMx ports, and > > > ModemManager tries to access them all, perhaps also blocking the > > > device, and the whole system doesn't work. > > > > > > For completeness, the device is: > > > Bus 002 Device 004: ID 1e2d:0065 Gemalto M2M GmbH LTE Modem > > > which is supported without any customs in the cdc-acm and cdc_mbim drivers. > > > > > > I spotted only two options not compiled-in in the yocto .config > > > (compared with the arch one), but I strongly doubt this is related: > > > CONFIG_USB_G_MULTI > > > CONFIG_USB_G_MULTI_CDC > > > > > > Would you know why the class is not assigned? > > > > This is just a userspace issue, right? > > I think the class is assigned by the kernel/driver. > > > Or are you saying that somehow > > the same device plugged into two different systems works differently? > > correct: the same device works differently in the two systems... in > the sense of the class not assigned. It's not that it is not assigned, it's that something isn't figuring it out properly. Can you provide the output of 'lsusb -v -d 1e2d:0065' for both systems? > The device boots in the same way, the difference is not in the device. True, but this type of device has had a lot of quirks added to it for the cdc_ether driver for other ones by this vendor, but not for this specific device from what I can tell. So perhaps we got it right in newer kernels, but not older ones? thanks, greg k-h ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: usb composition without class 2024-06-20 6:40 ` Greg KH @ 2024-06-20 9:25 ` Giacinto Cifelli 2024-06-20 9:58 ` Greg KH 0 siblings, 1 reply; 7+ messages in thread From: Giacinto Cifelli @ 2024-06-20 9:25 UTC (permalink / raw) To: Greg KH; +Cc: linux-usb On Thu, Jun 20, 2024 at 8:41 AM Greg KH <gregkh@linuxfoundation.org> wrote: > > > On Thu, Jun 20, 2024 at 07:58:13AM +0200, Giacinto Cifelli wrote: > > > > greetings, > > > > > > > > question: > > > > > > > > on a system (yocto), I have a usb composition that doesn't assign the > > > > class for the interfaces: > > > > |__ Port 3: Dev 3, If 10, Class=, Driver=cdc_mbim, 480M > > > > |__ Port 3: Dev 3, If 8, Class=, Driver=cdc_acm, 480M > > > > |__ Port 3: Dev 3, If 6, Class=, Driver=cdc_acm, 480M > > > > |__ Port 3: Dev 3, If 4, Class=, Driver=cdc_acm, 480M > > > > |__ Port 3: Dev 3, If 2, Class=, Driver=cdc_acm, 480M > > > > |__ Port 3: Dev 3, If 11, Class=, Driver=cdc_mbim, 480M > > > > |__ Port 3: Dev 3, If 0, Class=, Driver=cdc_acm, 480M > > > > |__ Port 3: Dev 3, If 9, Class=, Driver=cdc_acm, 480M > > > > |__ Port 3: Dev 3, If 7, Class=, Driver=cdc_acm, 480M > > > > |__ Port 3: Dev 3, If 5, Class=, Driver=cdc_acm, 480M > > > > |__ Port 3: Dev 3, If 3, Class=, Driver=cdc_acm, 480M > > > > |__ Port 3: Dev 3, If 1, Class=, Driver=cdc_acm, 480M > > > > Kernel: Linux version 6.1.35 (oe-user@oe-host) (x86_64-poky-linux-gcc > > > > (GCC) 11.4.0, GNU ld (GNU Binutils) 2.38.20220708) #1 SMP > > > > PREEMPT_DYNAMIC Thu Jun 22 18:03:13 UTC 2023 > > > > > > > > instead of (arch): > > > > |__ Port 004: Dev 004, If 0, Class=Communications, Driver=cdc_acm, 5000M > > > > |__ Port 004: Dev 004, If 1, Class=CDC Data, Driver=cdc_acm, 5000M > > > > |__ Port 004: Dev 004, If 2, Class=Communications, Driver=cdc_acm, 5000M > > > > |__ Port 004: Dev 004, If 3, Class=CDC Data, Driver=cdc_acm, 5000M > > > > |__ Port 004: Dev 004, If 4, Class=Communications, Driver=cdc_acm, 5000M > > > > |__ Port 004: Dev 004, If 5, Class=CDC Data, Driver=cdc_acm, 5000M > > > > |__ Port 004: Dev 004, If 6, Class=Communications, Driver=cdc_acm, 5000M > > > > |__ Port 004: Dev 004, If 7, Class=CDC Data, Driver=cdc_acm, 5000M > > > > |__ Port 004: Dev 004, If 8, Class=Communications, Driver=cdc_acm, 5000M > > > > |__ Port 004: Dev 004, If 9, Class=CDC Data, Driver=cdc_acm, 5000M > > > > |__ Port 004: Dev 004, If 10, Class=Communications, Driver=cdc_mbim, 5000M > > > > |__ Port 004: Dev 004, If 11, Class=CDC Data, Driver=cdc_mbim, 5000M > > > > Kernel: Linux 6.6.34-1-lts #1 SMP PREEMPT_DYNAMIC Sun, 16 Jun 2024 > > > > 14:45:31 +0000 x86_64 GNU/Linux > > > > > > > > This lack of class creates too many /dev/ttyACMx ports, and > > > > ModemManager tries to access them all, perhaps also blocking the > > > > device, and the whole system doesn't work. > > > > > > > > For completeness, the device is: > > > > Bus 002 Device 004: ID 1e2d:0065 Gemalto M2M GmbH LTE Modem > > > > which is supported without any customs in the cdc-acm and cdc_mbim drivers. > > > > > > > > I spotted only two options not compiled-in in the yocto .config > > > > (compared with the arch one), but I strongly doubt this is related: > > > > CONFIG_USB_G_MULTI > > > > CONFIG_USB_G_MULTI_CDC > > > > > > > > Would you know why the class is not assigned? > > > > > > This is just a userspace issue, right? > > > > I think the class is assigned by the kernel/driver. > > > > > Or are you saying that somehow > > > the same device plugged into two different systems works differently? > > > > correct: the same device works differently in the two systems... in > > the sense of the class not assigned. > > It's not that it is not assigned, it's that something isn't figuring it > out properly. > > Can you provide the output of 'lsusb -v -d 1e2d:0065' for both systems? they seem ok with -v, I don't understand it. yocto: Bus 001 Device 003: ID 1e2d:0065 Cinterion LTE Modem Device Descriptor: bLength 18 bDescriptorType 1 bcdUSB 2.00 bDeviceClass 239 bDeviceSubClass 2 bDeviceProtocol 1 bMaxPacketSize0 64 idVendor 0x1e2d idProduct 0x0065 bcdDevice 3.18 iManufacturer 1 Cinterion iProduct 2 LTE Modem iSerial 3 2de297b0 bNumConfigurations 1 Configuration Descriptor: bLength 9 bDescriptorType 2 wTotalLength 0x01a9 bNumInterfaces 12 bConfigurationValue 1 iConfiguration 0 bmAttributes 0xa0 (Bus Powered) Remote Wakeup MaxPower 500mA Interface Association: bLength 8 bDescriptorType 11 bFirstInterface 0 bInterfaceCount 2 bFunctionClass 2 bFunctionSubClass 2 bFunctionProtocol 1 iFunction 8 CDC Serial Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 0 bNumEndpoints 1 bInterfaceClass 2 bInterfaceSubClass 2 bInterfaceProtocol 1 iInterface 6 CDC Abstract Control Model (ACM) CDC Header: bcdCDC 1.10 CDC Call Management: bmCapabilities 0x00 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 bInterfaceSubClass 0 bInterfaceProtocol 0 iInterface 7 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 bFunctionSubClass 2 bFunctionProtocol 1 iFunction 8 CDC Serial Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 2 bAlternateSetting 0 bNumEndpoints 1 bInterfaceClass 2 bInterfaceSubClass 2 bInterfaceProtocol 1 iInterface 6 CDC Abstract Control Model (ACM) CDC Header: bcdCDC 1.10 CDC Call Management: bmCapabilities 0x00 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 bInterfaceSubClass 0 bInterfaceProtocol 0 iInterface 7 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 bFunctionSubClass 2 bFunctionProtocol 1 iFunction 8 CDC Serial Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 4 bAlternateSetting 0 bNumEndpoints 1 bInterfaceClass 2 bInterfaceSubClass 2 bInterfaceProtocol 1 iInterface 6 CDC Abstract Control Model (ACM) CDC Header: bcdCDC 1.10 CDC Call Management: bmCapabilities 0x00 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 bInterfaceSubClass 0 bInterfaceProtocol 0 iInterface 7 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 bFunctionSubClass 2 bFunctionProtocol 1 iFunction 8 CDC Serial Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 6 bAlternateSetting 0 bNumEndpoints 1 bInterfaceClass 2 bInterfaceSubClass 2 bInterfaceProtocol 1 iInterface 6 CDC Abstract Control Model (ACM) CDC Header: bcdCDC 1.10 CDC Call Management: bmCapabilities 0x00 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 bInterfaceSubClass 0 bInterfaceProtocol 0 iInterface 7 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 bFunctionSubClass 2 bFunctionProtocol 1 iFunction 10 CDC Serial (DIAG) Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 8 bAlternateSetting 0 bNumEndpoints 1 bInterfaceClass 2 bInterfaceSubClass 2 bInterfaceProtocol 1 iInterface 11 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 bInterfaceSubClass 0 bInterfaceProtocol 0 iInterface 12 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 bFunctionSubClass 14 bFunctionProtocol 0 iFunction 0 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 10 bAlternateSetting 0 bNumEndpoints 1 bInterfaceClass 2 bInterfaceSubClass 14 bInterfaceProtocol 0 iInterface 13 MBIM Control CDC Header: bcdCDC 1.10 CDC Union: bMasterInterface 10 bSlaveInterface 11 CDC MBIM: bcdMBIMVersion 1.00 wMaxControlMessage 4096 bNumberFilters 32 bMaxFilterSize 128 wMaxSegmentSize 2048 bmNetworkCapabilities 0x20 8-byte ntb input size CDC MBIM Extended: bcdMBIMExtendedVersion 1.00 bMaxOutstandingCommandMessages 64 wMTU 1500 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x8b EP 11 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 bInterfaceSubClass 0 bInterfaceProtocol 2 iInterface 0 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 11 bAlternateSetting 1 bNumEndpoints 2 bInterfaceClass 10 bInterfaceSubClass 0 bInterfaceProtocol 2 iInterface 14 MBIM Data Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x8e EP 14 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 0x0f EP 15 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 239 bDeviceSubClass 2 bDeviceProtocol 1 bMaxPacketSize0 64 bNumConfigurations 1 Device Status: 0x0000 (Bus Powered) arch: Bus 002 Device 004: ID 1e2d:0065 Gemalto M2M GmbH LTE Modem Device Descriptor: bLength 18 bDescriptorType 1 bcdUSB 3.10 bDeviceClass 239 Miscellaneous Device bDeviceSubClass 2 [unknown] bDeviceProtocol 1 Interface Association bMaxPacketSize0 9 idVendor 0x1e2d Gemalto M2M GmbH idProduct 0x0065 LTE Modem bcdDevice 3.18 iManufacturer 1 Cinterion iProduct 2 LTE Modem iSerial 3 2de297b0 bNumConfigurations 1 Configuration Descriptor: bLength 9 bDescriptorType 2 wTotalLength 0x0215 bNumInterfaces 12 bConfigurationValue 1 iConfiguration 0 bmAttributes 0xa0 (Bus Powered) Remote Wakeup MaxPower 896mA Interface Association: bLength 8 bDescriptorType 11 bFirstInterface 0 bInterfaceCount 2 bFunctionClass 2 Communications bFunctionSubClass 2 Abstract (modem) bFunctionProtocol 1 AT-commands (v.25ter) iFunction 8 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 6 CDC Header: bcdCDC 1.10 CDC Call Management: bmCapabilities 0x00 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 bMaxBurst 0 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 1 bAlternateSetting 0 bNumEndpoints 2 bInterfaceClass 10 CDC Data bInterfaceSubClass 0 [unknown] bInterfaceProtocol 0 iInterface 7 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x81 EP 1 IN bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0400 1x 1024 bytes bInterval 0 bMaxBurst 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x01 EP 1 OUT bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0400 1x 1024 bytes bInterval 0 bMaxBurst 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 8 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 6 CDC Header: bcdCDC 1.10 CDC Call Management: bmCapabilities 0x00 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 bMaxBurst 0 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 3 bAlternateSetting 0 bNumEndpoints 2 bInterfaceClass 10 CDC Data bInterfaceSubClass 0 [unknown] bInterfaceProtocol 0 iInterface 7 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x83 EP 3 IN bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0400 1x 1024 bytes bInterval 0 bMaxBurst 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x02 EP 2 OUT bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0400 1x 1024 bytes bInterval 0 bMaxBurst 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 8 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 6 CDC Header: bcdCDC 1.10 CDC Call Management: bmCapabilities 0x00 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 bMaxBurst 0 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 5 bAlternateSetting 0 bNumEndpoints 2 bInterfaceClass 10 CDC Data bInterfaceSubClass 0 [unknown] bInterfaceProtocol 0 iInterface 7 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x85 EP 5 IN bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0400 1x 1024 bytes bInterval 0 bMaxBurst 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x03 EP 3 OUT bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0400 1x 1024 bytes bInterval 0 bMaxBurst 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 8 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 6 CDC Header: bcdCDC 1.10 CDC Call Management: bmCapabilities 0x00 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 bMaxBurst 0 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 7 bAlternateSetting 0 bNumEndpoints 2 bInterfaceClass 10 CDC Data bInterfaceSubClass 0 [unknown] bInterfaceProtocol 0 iInterface 7 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x87 EP 7 IN bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0400 1x 1024 bytes bInterval 0 bMaxBurst 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x04 EP 4 OUT bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0400 1x 1024 bytes bInterval 0 bMaxBurst 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 10 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 11 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 bMaxBurst 0 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 9 bAlternateSetting 0 bNumEndpoints 2 bInterfaceClass 10 CDC Data bInterfaceSubClass 0 [unknown] bInterfaceProtocol 0 iInterface 12 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x89 EP 9 IN bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0400 1x 1024 bytes bInterval 0 bMaxBurst 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x05 EP 5 OUT bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0400 1x 1024 bytes bInterval 0 bMaxBurst 0 Interface Association: bLength 8 bDescriptorType 11 bFirstInterface 10 bInterfaceCount 2 bFunctionClass 2 Communications bFunctionSubClass 14 [unknown] bFunctionProtocol 0 iFunction 0 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 10 bAlternateSetting 0 bNumEndpoints 1 bInterfaceClass 2 Communications bInterfaceSubClass 14 [unknown] bInterfaceProtocol 0 iInterface 13 CDC Header: bcdCDC 1.10 CDC Union: bMasterInterface 10 bSlaveInterface 11 CDC MBIM: bcdMBIMVersion 1.00 wMaxControlMessage 4096 bNumberFilters 32 bMaxFilterSize 128 wMaxSegmentSize 2048 bmNetworkCapabilities 0x20 8-byte ntb input size CDC MBIM Extended: bcdMBIMExtendedVersion 1.00 bMaxOutstandingCommandMessages 64 wMTU 1500 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x8b EP 11 IN bmAttributes 3 Transfer Type Interrupt Synch Type None Usage Type Data wMaxPacketSize 0x0040 1x 64 bytes bInterval 9 bMaxBurst 0 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 11 bAlternateSetting 0 bNumEndpoints 0 bInterfaceClass 10 CDC Data bInterfaceSubClass 0 [unknown] bInterfaceProtocol 2 iInterface 0 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 11 bAlternateSetting 1 bNumEndpoints 2 bInterfaceClass 10 CDC Data bInterfaceSubClass 0 [unknown] bInterfaceProtocol 2 iInterface 14 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x8e EP 14 IN bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0400 1x 1024 bytes bInterval 0 bMaxBurst 2 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x0f EP 15 OUT bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0400 1x 1024 bytes bInterval 0 bMaxBurst 2 > > > The device boots in the same way, the difference is not in the device. > > True, but this type of device has had a lot of quirks added to it for > the cdc_ether driver for other ones by this vendor, but not for this > specific device from what I can tell. So perhaps we got it right in > newer kernels, but not older ones? it was working in the 4.x series, and I never had issues since. I think it is some compile option for yocto. > > thanks, > > greg k-h ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: usb composition without class 2024-06-20 9:25 ` Giacinto Cifelli @ 2024-06-20 9:58 ` Greg KH 2024-06-20 10:19 ` Giacinto Cifelli 0 siblings, 1 reply; 7+ messages in thread From: Greg KH @ 2024-06-20 9:58 UTC (permalink / raw) To: Giacinto Cifelli; +Cc: linux-usb On Thu, Jun 20, 2024 at 11:25:43AM +0200, Giacinto Cifelli wrote: > On Thu, Jun 20, 2024 at 8:41 AM Greg KH <gregkh@linuxfoundation.org> wrote: > > > > On Thu, Jun 20, 2024 at 07:58:13AM +0200, Giacinto Cifelli wrote: > > > > > greetings, > > > > > > > > > > question: > > > > > > > > > > on a system (yocto), I have a usb composition that doesn't assign the > > > > > class for the interfaces: > > > > > |__ Port 3: Dev 3, If 10, Class=, Driver=cdc_mbim, 480M > > > > > |__ Port 3: Dev 3, If 8, Class=, Driver=cdc_acm, 480M > > > > > |__ Port 3: Dev 3, If 6, Class=, Driver=cdc_acm, 480M > > > > > |__ Port 3: Dev 3, If 4, Class=, Driver=cdc_acm, 480M > > > > > |__ Port 3: Dev 3, If 2, Class=, Driver=cdc_acm, 480M > > > > > |__ Port 3: Dev 3, If 11, Class=, Driver=cdc_mbim, 480M > > > > > |__ Port 3: Dev 3, If 0, Class=, Driver=cdc_acm, 480M > > > > > |__ Port 3: Dev 3, If 9, Class=, Driver=cdc_acm, 480M > > > > > |__ Port 3: Dev 3, If 7, Class=, Driver=cdc_acm, 480M > > > > > |__ Port 3: Dev 3, If 5, Class=, Driver=cdc_acm, 480M > > > > > |__ Port 3: Dev 3, If 3, Class=, Driver=cdc_acm, 480M > > > > > |__ Port 3: Dev 3, If 1, Class=, Driver=cdc_acm, 480M > > > > > Kernel: Linux version 6.1.35 (oe-user@oe-host) (x86_64-poky-linux-gcc > > > > > (GCC) 11.4.0, GNU ld (GNU Binutils) 2.38.20220708) #1 SMP > > > > > PREEMPT_DYNAMIC Thu Jun 22 18:03:13 UTC 2023 > > > > > > > > > > instead of (arch): > > > > > |__ Port 004: Dev 004, If 0, Class=Communications, Driver=cdc_acm, 5000M > > > > > |__ Port 004: Dev 004, If 1, Class=CDC Data, Driver=cdc_acm, 5000M > > > > > |__ Port 004: Dev 004, If 2, Class=Communications, Driver=cdc_acm, 5000M > > > > > |__ Port 004: Dev 004, If 3, Class=CDC Data, Driver=cdc_acm, 5000M > > > > > |__ Port 004: Dev 004, If 4, Class=Communications, Driver=cdc_acm, 5000M > > > > > |__ Port 004: Dev 004, If 5, Class=CDC Data, Driver=cdc_acm, 5000M > > > > > |__ Port 004: Dev 004, If 6, Class=Communications, Driver=cdc_acm, 5000M > > > > > |__ Port 004: Dev 004, If 7, Class=CDC Data, Driver=cdc_acm, 5000M > > > > > |__ Port 004: Dev 004, If 8, Class=Communications, Driver=cdc_acm, 5000M > > > > > |__ Port 004: Dev 004, If 9, Class=CDC Data, Driver=cdc_acm, 5000M > > > > > |__ Port 004: Dev 004, If 10, Class=Communications, Driver=cdc_mbim, 5000M > > > > > |__ Port 004: Dev 004, If 11, Class=CDC Data, Driver=cdc_mbim, 5000M > > > > > Kernel: Linux 6.6.34-1-lts #1 SMP PREEMPT_DYNAMIC Sun, 16 Jun 2024 > > > > > 14:45:31 +0000 x86_64 GNU/Linux > > > > > > > > > > This lack of class creates too many /dev/ttyACMx ports, and > > > > > ModemManager tries to access them all, perhaps also blocking the > > > > > device, and the whole system doesn't work. > > > > > > > > > > For completeness, the device is: > > > > > Bus 002 Device 004: ID 1e2d:0065 Gemalto M2M GmbH LTE Modem > > > > > which is supported without any customs in the cdc-acm and cdc_mbim drivers. > > > > > > > > > > I spotted only two options not compiled-in in the yocto .config > > > > > (compared with the arch one), but I strongly doubt this is related: > > > > > CONFIG_USB_G_MULTI > > > > > CONFIG_USB_G_MULTI_CDC > > > > > > > > > > Would you know why the class is not assigned? > > > > > > > > This is just a userspace issue, right? > > > > > > I think the class is assigned by the kernel/driver. > > > > > > > Or are you saying that somehow > > > > the same device plugged into two different systems works differently? > > > > > > correct: the same device works differently in the two systems... in > > > the sense of the class not assigned. > > > > It's not that it is not assigned, it's that something isn't figuring it > > out properly. > > > > Can you provide the output of 'lsusb -v -d 1e2d:0065' for both systems? > > they seem ok with -v, I don't understand it. Nope, there are major differences, let's look at the start: -yocto: +arch: -Bus 001 Device 003: ID 1e2d:0065 Cinterion LTE Modem +Bus 002 Device 004: ID 1e2d:0065 Gemalto M2M GmbH LTE Modem Ok, this means that for your yocto system you probably do NOT have an updated hw.ids package installed for lsusb to use to figure out a lot of different things in text form. Things like: bLength 18 bDescriptorType 1 - bcdUSB 2.00 - bDeviceClass 239 - bDeviceSubClass 2 - bDeviceProtocol 1 - bMaxPacketSize0 64 - idVendor 0x1e2d - idProduct 0x0065 + bcdUSB 3.10 + bDeviceClass 239 Miscellaneous Device + bDeviceSubClass 2 [unknown] + bDeviceProtocol 1 Interface Association + bMaxPacketSize0 9 + idVendor 0x1e2d Gemalto M2M GmbH + idProduct 0x0065 LTE Modem Class protocol defintions and the like. But what's MOST important here is that right away, you see that on your yocto device you are running at a 2.0 USB speed, not a 3.1 speed, right? Perhaps that's the problem here? The device looks quite different for when it is in a 3.1 supported system, with different configurations possible, and a different length entirely: Configuration Descriptor: bLength 9 bDescriptorType 2 - wTotalLength 0x01a9 + wTotalLength 0x0215 Are you _SURE_ this is the same device? I would suggest getting your yocto system updated and running at full USB 3 speeds and see if that fixes the issues here. hope this helps, greg k-h ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: usb composition without class 2024-06-20 9:58 ` Greg KH @ 2024-06-20 10:19 ` Giacinto Cifelli 0 siblings, 0 replies; 7+ messages in thread From: Giacinto Cifelli @ 2024-06-20 10:19 UTC (permalink / raw) To: Greg KH; +Cc: linux-usb On Thu, Jun 20, 2024 at 11:58 AM Greg KH <gregkh@linuxfoundation.org> wrote: > > On Thu, Jun 20, 2024 at 11:25:43AM +0200, Giacinto Cifelli wrote: > > On Thu, Jun 20, 2024 at 8:41 AM Greg KH <gregkh@linuxfoundation.org> wrote: > > > > > On Thu, Jun 20, 2024 at 07:58:13AM +0200, Giacinto Cifelli wrote: > > > > > > greetings, > > > > > > > > > > > > question: > > > > > > > > > > > > on a system (yocto), I have a usb composition that doesn't assign the > > > > > > class for the interfaces: > > > > > > |__ Port 3: Dev 3, If 10, Class=, Driver=cdc_mbim, 480M > > > > > > |__ Port 3: Dev 3, If 8, Class=, Driver=cdc_acm, 480M > > > > > > |__ Port 3: Dev 3, If 6, Class=, Driver=cdc_acm, 480M > > > > > > |__ Port 3: Dev 3, If 4, Class=, Driver=cdc_acm, 480M > > > > > > |__ Port 3: Dev 3, If 2, Class=, Driver=cdc_acm, 480M > > > > > > |__ Port 3: Dev 3, If 11, Class=, Driver=cdc_mbim, 480M > > > > > > |__ Port 3: Dev 3, If 0, Class=, Driver=cdc_acm, 480M > > > > > > |__ Port 3: Dev 3, If 9, Class=, Driver=cdc_acm, 480M > > > > > > |__ Port 3: Dev 3, If 7, Class=, Driver=cdc_acm, 480M > > > > > > |__ Port 3: Dev 3, If 5, Class=, Driver=cdc_acm, 480M > > > > > > |__ Port 3: Dev 3, If 3, Class=, Driver=cdc_acm, 480M > > > > > > |__ Port 3: Dev 3, If 1, Class=, Driver=cdc_acm, 480M > > > > > > Kernel: Linux version 6.1.35 (oe-user@oe-host) (x86_64-poky-linux-gcc > > > > > > (GCC) 11.4.0, GNU ld (GNU Binutils) 2.38.20220708) #1 SMP > > > > > > PREEMPT_DYNAMIC Thu Jun 22 18:03:13 UTC 2023 > > > > > > > > > > > > instead of (arch): > > > > > > |__ Port 004: Dev 004, If 0, Class=Communications, Driver=cdc_acm, 5000M > > > > > > |__ Port 004: Dev 004, If 1, Class=CDC Data, Driver=cdc_acm, 5000M > > > > > > |__ Port 004: Dev 004, If 2, Class=Communications, Driver=cdc_acm, 5000M > > > > > > |__ Port 004: Dev 004, If 3, Class=CDC Data, Driver=cdc_acm, 5000M > > > > > > |__ Port 004: Dev 004, If 4, Class=Communications, Driver=cdc_acm, 5000M > > > > > > |__ Port 004: Dev 004, If 5, Class=CDC Data, Driver=cdc_acm, 5000M > > > > > > |__ Port 004: Dev 004, If 6, Class=Communications, Driver=cdc_acm, 5000M > > > > > > |__ Port 004: Dev 004, If 7, Class=CDC Data, Driver=cdc_acm, 5000M > > > > > > |__ Port 004: Dev 004, If 8, Class=Communications, Driver=cdc_acm, 5000M > > > > > > |__ Port 004: Dev 004, If 9, Class=CDC Data, Driver=cdc_acm, 5000M > > > > > > |__ Port 004: Dev 004, If 10, Class=Communications, Driver=cdc_mbim, 5000M > > > > > > |__ Port 004: Dev 004, If 11, Class=CDC Data, Driver=cdc_mbim, 5000M > > > > > > Kernel: Linux 6.6.34-1-lts #1 SMP PREEMPT_DYNAMIC Sun, 16 Jun 2024 > > > > > > 14:45:31 +0000 x86_64 GNU/Linux > > > > > > > > > > > > This lack of class creates too many /dev/ttyACMx ports, and > > > > > > ModemManager tries to access them all, perhaps also blocking the > > > > > > device, and the whole system doesn't work. > > > > > > > > > > > > For completeness, the device is: > > > > > > Bus 002 Device 004: ID 1e2d:0065 Gemalto M2M GmbH LTE Modem > > > > > > which is supported without any customs in the cdc-acm and cdc_mbim drivers. > > > > > > > > > > > > I spotted only two options not compiled-in in the yocto .config > > > > > > (compared with the arch one), but I strongly doubt this is related: > > > > > > CONFIG_USB_G_MULTI > > > > > > CONFIG_USB_G_MULTI_CDC > > > > > > > > > > > > Would you know why the class is not assigned? > > > > > > > > > > This is just a userspace issue, right? > > > > > > > > I think the class is assigned by the kernel/driver. > > > > > > > > > Or are you saying that somehow > > > > > the same device plugged into two different systems works differently? > > > > > > > > correct: the same device works differently in the two systems... in > > > > the sense of the class not assigned. > > > > > > It's not that it is not assigned, it's that something isn't figuring it > > > out properly. > > > > > > Can you provide the output of 'lsusb -v -d 1e2d:0065' for both systems? > > > > they seem ok with -v, I don't understand it. > > Nope, there are major differences, let's look at the start: > > -yocto: > +arch: > > -Bus 001 Device 003: ID 1e2d:0065 Cinterion LTE Modem > +Bus 002 Device 004: ID 1e2d:0065 Gemalto M2M GmbH LTE Modem > > Ok, this means that for your yocto system you probably do NOT have an > updated hw.ids package installed for lsusb to use to figure out a lot of > different things in text form. this could actually be the issue. I'll look into it. > Things like: > > bLength 18 > bDescriptorType 1 > - bcdUSB 2.00 > - bDeviceClass 239 > - bDeviceSubClass 2 > - bDeviceProtocol 1 > - bMaxPacketSize0 64 > - idVendor 0x1e2d > - idProduct 0x0065 > + bcdUSB 3.10 > + bDeviceClass 239 Miscellaneous Device > + bDeviceSubClass 2 [unknown] > + bDeviceProtocol 1 Interface Association > + bMaxPacketSize0 9 > + idVendor 0x1e2d Gemalto M2M GmbH > + idProduct 0x0065 LTE Modem > > > Class protocol defintions and the like. > > But what's MOST important here is that right away, you see that on your > yocto device you are running at a 2.0 USB speed, not a 3.1 speed, right? > > Perhaps that's the problem here? The device looks quite different for > when it is in a 3.1 supported system, with different configurations > possible, and a different length entirely: > > Configuration Descriptor: > bLength 9 > bDescriptorType 2 > - wTotalLength 0x01a9 > + wTotalLength 0x0215 > > Are you _SURE_ this is the same device? I would suggest getting your > yocto system updated and running at full USB 3 speeds and see if that > fixes the issues here. thanks for the hints, I will do my homework and let you know if I could fix the issue, It is not the same device, it is the same HW and FW, because it is soldered on the yocto system. As for usb2 vs usb3, it shouldn't be the issue, but i will find a usb2 hub or machine to confirm this, too. thank you again, Greg, Kind Regards, Giacinto ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2024-06-20 10:19 UTC | newest] Thread overview: 7+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2024-06-20 5:58 usb composition without class Giacinto Cifelli 2024-06-20 6:06 ` Greg KH 2024-06-20 6:32 ` Giacinto Cifelli 2024-06-20 6:40 ` Greg KH 2024-06-20 9:25 ` Giacinto Cifelli 2024-06-20 9:58 ` Greg KH 2024-06-20 10:19 ` Giacinto Cifelli
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox