* 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