NetBSD-Bugs archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
kern/55240: cdce(4) error "no data interface" when ECM USB IF are preceded by ACM USB IF
>Number: 55240
>Category: kern
>Synopsis: cdce(4) error "no data interface" when ECM USB IF are preceded by ACM USB IF
>Confidential: no
>Severity: serious
>Priority: medium
>Responsible: kern-bug-people
>State: open
>Class: sw-bug
>Submitter-Id: net
>Arrival-Date: Wed May 06 20:45:00 +0000 2020
>Originator: Reinhard Speyerer
>Release: NetBSD 9.0
>Organization:
>Environment:
NetBSD netbsd 9.0 NetBSD 9.0 (GENERIC) #0: Fri Feb 14 00:06:28 UTC 2020 mkrepro%mkrepro.NetBSD.org@localhost:/usr/src/sys/arch/i386/compile/GENERIC i386
>Description:
cdce(4) returns "cdce0: autoconfiguration error: no data interface" when
the ECM USB interfaces of a device are preceded by ACM USB interfaces
instead of binding to the ECM USB interfaces as expected.
>How-To-Repeat:
Connect a wireless module where the ECM USB interfaces are preceded by
ACM USB interfaces (e.g. a Telit HE910) to a USB port and check dmesg(1)
output:
[ 1806.975723] umodem0 at uhub5 port 2 configuration 1 interface 0
[ 1806.975723] umodem0: Telit (0x1bc7) 6 CDC-ACM + 1 CDC-ECM (0x23), rev 2.00/17.30, addr 4, iclass 2/2
[ 1806.975723] umodem0: data interface 1, has no CM over data, has break
[ 1806.975723] umodem0: status change notification available
[ 1806.975723] ucom4 at umodem0
[ 1806.975723] umodem1 at uhub5 port 2 configuration 1 interface 2
[ 1806.975723] umodem1: Telit (0x1bc7) 6 CDC-ACM + 1 CDC-ECM (0x23), rev 2.00/17.30, addr 4, iclass 2/2
[ 1806.975723] umodem1: data interface 3, has no CM over data, has break
[ 1806.975723] umodem1: status change notification available
[ 1806.975723] ucom5 at umodem1
[ 1806.975723] umodem2 at uhub5 port 2 configuration 1 interface 4
[ 1806.975723] umodem2: Telit (0x1bc7) 6 CDC-ACM + 1 CDC-ECM (0x23), rev 2.00/17.30, addr 4, iclass 2/2
[ 1806.975723] umodem2: data interface 5, has no CM over data, has break
[ 1806.975723] umodem2: status change notification available
[ 1806.975723] ucom6 at umodem2
[ 1806.975723] umodem3 at uhub5 port 2 configuration 1 interface 6
[ 1806.975723] umodem3: Telit (0x1bc7) 6 CDC-ACM + 1 CDC-ECM (0x23), rev 2.00/17.30, addr 4, iclass 2/2
[ 1806.975723] umodem3: data interface 7, has no CM over data, has break
[ 1806.975723] umodem3: status change notification available
[ 1806.975723] ucom7 at umodem3
[ 1806.975723] umodem4 at uhub5 port 2 configuration 1 interface 8
[ 1806.975723] umodem4: Telit (0x1bc7) 6 CDC-ACM + 1 CDC-ECM (0x23), rev 2.00/17.30, addr 4, iclass 2/2
[ 1806.975723] umodem4: data interface 9, has no CM over data, has break
[ 1806.975723] umodem4: status change notification available
[ 1806.975723] ucom8 at umodem4
[ 1806.975723] umodem5 at uhub5 port 2 configuration 1 interface 10
[ 1806.975723] umodem5: Telit (0x1bc7) 6 CDC-ACM + 1 CDC-ECM (0x23), rev 2.00/17.30, addr 4, iclass 2/2
[ 1806.975723] umodem5: data interface 11, has no CM over data, has break
[ 1806.975723] umodem5: status change notification available
[ 1806.975723] ucom9 at umodem5
[ 1806.975723] cdce0 at uhub5 port 2 configuration 1 interface 12
[ 1806.975723] cdce0: Telit (0x1bc7) 6 CDC-ACM + 1 CDC-ECM (0x23), rev 2.00/17.30, addr 4
[ 1806.975723] cdce0: autoconfiguration error: no data interface
>Fix:
Apply this patch
--- if_cdce.c.orig 2019-09-01 15:00:36.000000000 +0200
+++ if_cdce.c 2020-05-03 21:55:09.000000000 +0200
@@ -147,4 +147,5 @@
else {
- ud = (const usb_cdc_union_descriptor_t *)usb_find_desc(un->un_udev,
- UDESC_CS_INTERFACE, UDESCSUB_CDC_UNION);
+ ud = (const usb_cdc_union_descriptor_t *)usb_find_desc_if(un->un_udev,
+ UDESC_CS_INTERFACE, UDESCSUB_CDC_UNION,
+ usbd_get_interface_descriptor(uiaa->uiaa_iface));
if (ud == NULL) {
@@ -238,4 +239,5 @@
- ue = (const usb_cdc_ethernet_descriptor_t *)usb_find_desc(dev,
- UDESC_CS_INTERFACE, UDESCSUB_CDC_ENF);
+ ue = (const usb_cdc_ethernet_descriptor_t *)usb_find_desc_if(dev,
+ UDESC_CS_INTERFACE, UDESCSUB_CDC_ENF,
+ usbd_get_interface_descriptor(uiaa->uiaa_iface));
if (!ue || usbd_get_string(dev, ue->iMacAddress, eaddr_str) ||
to the NetBSD 9.0 sources and rebuild the kernel. After reboot:
[ 427.493472] umodem0 at uhub5 port 2 configuration 1 interface 0
[ 427.493472] umodem0: Telit (0x1bc7) 6 CDC-ACM + 1 CDC-ECM (0x23), rev 2.00/17.30, addr 4, iclass 2/2
[ 427.493472] umodem0: data interface 1, has no CM over data, has break
[ 427.493472] umodem0: status change notification available
[ 427.493472] ucom4 at umodem0
...
[ 427.493472] umodem5: data interface 11, has no CM over data, has break
[ 427.493472] umodem5: status change notification available
[ 427.493472] ucom9 at umodem5
[ 427.493472] cdce0 at uhub5 port 2 configuration 1 interface 12
[ 427.493472] cdce0: Telit (0x1bc7) 6 CDC-ACM + 1 CDC-ECM (0x23), rev 2.00/17.30, addr 4
[ 427.513474] cdce0: Ethernet address 00:00:11:12:13:14
Home |
Main Index |
Thread Index |
Old Index