public inbox for linux-usb@vger.kernel.org
 help / color / mirror / Atom feed
* 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