Linux cdc-acm-driver

Manavendra Nath Manav mnm.kernel at gmail.com
Thu Mar 1 00:52:09 EST 2012


Hi Johan

On Wed, Feb 29, 2012 at 8:28 PM, Johan Hovold <jhovold at gmail.com> wrote:
> On Sun, Feb 26, 2012 at 04:37:33PM +0100, Stefan Dreyer wrote:
>> Hello Johan,
>>
>> i hope, you can help me. I try to get a barcode-Scanner (Metrologic
>> Focus MS 1690) to work. If i take a look at the Windows driver, this
>> scanner should work in serial-mode as CDC ACM.
>> i have added the device:
>>       { USB_DEVICE(0x0c2e, 0x0720), /*Metro Metrologic MS7120 Barcode Scanner
>> (bi-directional serial mode)  */
>>       },
>>
>> and recompile the module. If i plug the device in, the module cdc-acm is
>> loaded. But no device ttyACM0 appears.
>
> What does lsusb -v say? If it is a cdc-acm device you should not need to
> add the pid/vid to the cdc-acm driver.
>
> What is written to the system logs?
>
>> Is there a possibility to debug the module? I would like to know, what
>> happens.
>
> If your recompiling the module you can enable debugging by changing the
> following "undef"
>
>        #undef DEBUG
>
> to "define", or you can enable dynamic debugging (see
> Documentation/dynamic-debug-howto.txt).
>
> Thanks,
> Johan

Sorry for jumping in the middle of the thread, but I too have a
similar problem with Metrologic Focus MS1690 Barcode scanner.
Currently, I am getting the device as bi-directional serial mode but I
want to make it work as a USB HID Keyboard device. In the
manufacturer's manual there is a barcode to configure the device as
such. After this I can see from dmesg that first the device gets
registered as  USB HID v1.11 Keyboard, the I guess the scanner power
cycles disconnecting the USB  and again gets registered as a new
device.

*** dmesg snip ***
[69818.065741] input: Honeywell Scanning and Mobility Honeywell
Scanning and Mobility Scanner as
/devices/pci0000:00/0000:00:1d.1/usb7/7-1/7-1:1.0/input/input6
[69818.065810] generic-usb 0003:0C2E:0200.0003: input,hidraw2: USB HID
v1.11 Keyboard [Honeywell Scanning and Mobility Honeywell Scanning and
Mobility Scanner] on usb-0000:00:1d.1-1/input0
[69823.804854] usb 7-1: USB disconnect, address 2
[69827.180717] usb 7-1: new low speed USB device using uhci_hcd and address 3
[69827.355585] usb 7-1: New USB device found, idVendor=0c2e, idProduct=0720
[69827.355590] usb 7-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[69827.355593] usb 7-1: Product: Honeywell Scanning and Mobility Scanner
[69827.355596] usb 7-1: Manufacturer: Honeywell Scanning and Mobility

[root at pe1800xs ~]# lsusb -v
Bus 007 Device 003: ID 0c2e:0720 Metro Metrologic MS7120 Barcode
Scanner (bi-dir                                             ectional
serial mode)
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               1.10
  bDeviceClass            0 (Defined at Interface level)
  bDeviceSubClass         0
  bDeviceProtocol         0
  bMaxPacketSize0         8
  idVendor           0x0c2e Metro
  idProduct          0x0720 Metrologic MS7120 Barcode Scanner
(bi-directional se                                             rial
mode)
  bcdDevice            1.00
  iManufacturer           1 Honeywell Scanning and Mobility
  iProduct                2 Honeywell Scanning and Mobility Scanner
  iSerial                 0
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength           41
    bNumInterfaces          1
    bConfigurationValue     1
    iConfiguration          3 POS USB
    bmAttributes         0x80
      (Bus Powered)
    MaxPower              450mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           2
      bInterfaceClass       255 Vendor Specific Class
      bInterfaceSubClass      0
      bInterfaceProtocol      0
      iInterface              0
      ** UNRECOGNIZED:  09 21 11 01 00 01 22 3f 00
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x02  EP 2 OUT
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0008  1x 8 bytes
        bInterval              10
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0008  1x 8 bytes
        bInterval              10
Device Status:     0x0000
  (Bus Powered)

[root at pe1800xs ~]# cat /proc/bus/usb/devices
T:  Bus=07 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  3 Spd=1.5 MxCh= 0
D:  Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs=  1
P:  Vendor=0c2e ProdID=0720 Rev= 1.00
S:  Manufacturer=Honeywell Scanning and Mobility
S:  Product=Honeywell Scanning and Mobility Scanner
C:* #Ifs= 1 Cfg#= 1 Atr=80 MxPwr=450mA
I:* If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=(none)
E:  Ad=02(O) Atr=03(Int.) MxPS=   8 Ivl=10ms
E:  Ad=81(I) Atr=03(Int.) MxPS=   8 Ivl=10ms

How to make this device work on Linux?

Please note this link http://forums.gentoo.org/viewtopic-t-852806.html
says that "They tracked it down to the scanner registering itself as a
keyboard and then power cycling and registering as a custom POS
device. I contacted the manufacturer and they sent me a barcode
(99940) which when scanned locked the device into USB keyboard mode.
It then worked fine as a standard keyboard."

-- 
Manavendra Nath Manav



More information about the Kernelnewbies mailing list