Re: [PATCH] usb: cdc_acm: Add quirk for Uniden UBC125 scanner

2018-06-11 Thread Oliver Neukum
On Mo, 2018-06-11 at 12:39 +0200, Houston Yaroschoff wrote:
> Uniden UBC125 radio scanner has USB interface which fails to work
> with cdc_acm driver:
>   usb 1-1.5: new full-speed USB device number 4 using xhci_hcd
>   cdc_acm 1-1.5:1.0: Zero length descriptor references
>   cdc_acm: probe of 1-1.5:1.0 failed with error -22
> 
> Adding the NO_UNION_NORMAL quirk for the device fixes the issue:
>   usb 1-4: new full-speed USB device number 15 using xhci_hcd
>   usb 1-4: New USB device found, idVendor=1965, idProduct=0018
>   usb 1-4: New USB device strings: Mfr=1, Product=2, SerialNumber=3
>   usb 1-4: Product: UBC125XLT
>   usb 1-4: Manufacturer: Uniden Corp.
>   usb 1-4: SerialNumber: 0001
>   cdc_acm 1-4:1.0: ttyACM0: USB ACM device
> 
> `lsusb -v` of the device:
> 
>   Bus 001 Device 015: ID 1965:0018 Uniden Corporation
>   Device Descriptor:
> bLength18
> bDescriptorType 1
> bcdUSB   2.00
> bDeviceClass2 Communications
> bDeviceSubClass 0
> bDeviceProtocol 0
> bMaxPacketSize064
> idVendor   0x1965 Uniden Corporation
> idProduct  0x0018
> bcdDevice0.01
> iManufacturer   1 Uniden Corp.
> iProduct2 UBC125XLT
> iSerial 3 0001
> bNumConfigurations  1
> Configuration Descriptor:
>   bLength 9
>   bDescriptorType 2
>   wTotalLength   48
>   bNumInterfaces  2
>   bConfigurationValue 1
>   iConfiguration  0
>   bmAttributes 0x80
> (Bus Powered)
>   MaxPower  500mA
>   Interface Descriptor:
> bLength 9
> bDescriptorType 4
> bInterfaceNumber0
> bAlternateSetting   0
> bNumEndpoints   1
> bInterfaceClass 2 Communications
> bInterfaceSubClass  2 Abstract (modem)
> bInterfaceProtocol  0 None
> iInterface  0
> Endpoint Descriptor:
>   bLength 7
>   bDescriptorType 5
>   bEndpointAddress 0x87  EP 7 IN
>   bmAttributes3
> Transfer TypeInterrupt
> Synch Type   None
> Usage Type   Data
>   wMaxPacketSize 0x0008  1x 8 bytes
>   bInterval  10
>   Interface Descriptor:
> bLength 9
> bDescriptorType 4
> bInterfaceNumber1
> bAlternateSetting   0
> bNumEndpoints   2
> bInterfaceClass10 CDC Data
> bInterfaceSubClass  0 Unused
> bInterfaceProtocol  0
> iInterface  0
> Endpoint Descriptor:
>   bLength 7
>   bDescriptorType 5
>   bEndpointAddress 0x81  EP 1 IN
>   bmAttributes2
> Transfer TypeBulk
> Synch Type   None
> Usage Type   Data
>   wMaxPacketSize 0x0040  1x 64 bytes
>   bInterval   0
> Endpoint Descriptor:
>   bLength 7
>   bDescriptorType 5
>   bEndpointAddress 0x02  EP 2 OUT
>   bmAttributes2
> Transfer TypeBulk
> Synch Type   None
> Usage Type   Data
>   wMaxPacketSize 0x0040  1x 64 bytes
>   bInterval   0
>   Device Status: 0x
> (Bus Powered)
> 
> Signed-off-by: Houston Yaroschoff 
Acked-by: Oliver Neukum 
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH] usb: cdc_acm: Add quirk for Uniden UBC125 scanner

2018-06-11 Thread Houston Yaroschoff
Uniden UBC125 radio scanner has USB interface which fails to work
with cdc_acm driver:
  usb 1-1.5: new full-speed USB device number 4 using xhci_hcd
  cdc_acm 1-1.5:1.0: Zero length descriptor references
  cdc_acm: probe of 1-1.5:1.0 failed with error -22

Adding the NO_UNION_NORMAL quirk for the device fixes the issue:
  usb 1-4: new full-speed USB device number 15 using xhci_hcd
  usb 1-4: New USB device found, idVendor=1965, idProduct=0018
  usb 1-4: New USB device strings: Mfr=1, Product=2, SerialNumber=3
  usb 1-4: Product: UBC125XLT
  usb 1-4: Manufacturer: Uniden Corp.
  usb 1-4: SerialNumber: 0001
  cdc_acm 1-4:1.0: ttyACM0: USB ACM device

`lsusb -v` of the device:

  Bus 001 Device 015: ID 1965:0018 Uniden Corporation
  Device Descriptor:
bLength18
bDescriptorType 1
bcdUSB   2.00
bDeviceClass2 Communications
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize064
idVendor   0x1965 Uniden Corporation
idProduct  0x0018
bcdDevice0.01
iManufacturer   1 Uniden Corp.
iProduct2 UBC125XLT
iSerial 3 0001
bNumConfigurations  1
Configuration Descriptor:
  bLength 9
  bDescriptorType 2
  wTotalLength   48
  bNumInterfaces  2
  bConfigurationValue 1
  iConfiguration  0
  bmAttributes 0x80
(Bus Powered)
  MaxPower  500mA
  Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber0
bAlternateSetting   0
bNumEndpoints   1
bInterfaceClass 2 Communications
bInterfaceSubClass  2 Abstract (modem)
bInterfaceProtocol  0 None
iInterface  0
Endpoint Descriptor:
  bLength 7
  bDescriptorType 5
  bEndpointAddress 0x87  EP 7 IN
  bmAttributes3
Transfer TypeInterrupt
Synch Type   None
Usage Type   Data
  wMaxPacketSize 0x0008  1x 8 bytes
  bInterval  10
  Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber1
bAlternateSetting   0
bNumEndpoints   2
bInterfaceClass10 CDC Data
bInterfaceSubClass  0 Unused
bInterfaceProtocol  0
iInterface  0
Endpoint Descriptor:
  bLength 7
  bDescriptorType 5
  bEndpointAddress 0x81  EP 1 IN
  bmAttributes2
Transfer TypeBulk
Synch Type   None
Usage Type   Data
  wMaxPacketSize 0x0040  1x 64 bytes
  bInterval   0
Endpoint Descriptor:
  bLength 7
  bDescriptorType 5
  bEndpointAddress 0x02  EP 2 OUT
  bmAttributes2
Transfer TypeBulk
Synch Type   None
Usage Type   Data
  wMaxPacketSize 0x0040  1x 64 bytes
  bInterval   0
  Device Status: 0x
(Bus Powered)

Signed-off-by: Houston Yaroschoff 
---
 drivers/usb/class/cdc-acm.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/drivers/usb/class/cdc-acm.c b/drivers/usb/class/cdc-acm.c
index 7b366a6c0b49..998b32d0167e 100644
--- a/drivers/usb/class/cdc-acm.c
+++ b/drivers/usb/class/cdc-acm.c
@@ -1758,6 +1758,9 @@ static const struct usb_device_id acm_ids[] = {
{ USB_DEVICE(0x11ca, 0x0201), /* VeriFone Mx870 Gadget Serial */
.driver_info = SINGLE_RX_URB,
},
+   { USB_DEVICE(0x1965, 0x0018), /* Uniden UBC125XLT */
+   .driver_info = NO_UNION_NORMAL, /* has no union descriptor */
+   },
{ USB_DEVICE(0x22b8, 0x7000), /* Motorola Q Phone */
.driver_info = NO_UNION_NORMAL, /* has no union descriptor */
},
-- 
2.11.0

--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html