Hello all,
Recently TI has been promoting their new low power flagship processor,
the MSP430 by selling very cheap launchpads, that contain an
usb-connected board to program and test an MSP430. This board seems to
appear as two devices, a standard USB to serial port, managed by
cdc_acm, and a hid device, that actually implements ti's very own
spy-by-wire protocol and other oddities.(There are multiple toolkits
that can use that device fine)
The serial port allows easy communication with the device, but it seems
to be based on a TU4310 that does not always behave well with the linux
kernel cdc_acm part: by default the board comes programmed with a
chipset that just sends through the serial interface, 3 times per
second, a single byte that represents a temperature.
Once the ttyACM0 serial port is set to 2400baud and flow off(required
settings), usually a simple "stty 2400 -ixon</dev/ttyACM0" and cat, or
minicom, it does seem to give out the correct output.
However if one stops the minicom/cat, and waits a bit too long before
reopening it, the device seems to lock up, giving an i/o error for any
further operation, until it is unplugged and plugged again. From what I
can observe, it would seem TI's chipset has some sort of limited buffer
that fills up and then breaks. Catching up the buffer is of course
possible as long as it is still connected. I would assume TI's chipset
is guilty, but any suggestions/patches for a workaround to keep that
buffer empty/stop it from breaking/actually fixing the issue would be
welcome.
Thanks,
Paul-Kenji Cahier Furuya
(Kernel: 2.6.36)
Some debug info from cdc_acm:
The device registering up:
[496243.927062] usb 2-1: new full speed USB device using uhci_hcd and
address 3
[496244.180588] usb 2-1: New USB device found, idVendor=0451, idProduct=f432
[496244.181881] usb 2-1: New USB device strings: Mfr=1, Product=2,
SerialNumber=3
[496244.183797] usb 2-1: Product: Texas Instruments MSP-FET430UIF
[496244.184941] usb 2-1: Manufacturer: Texas Instruments
[496244.186041] usb 2-1: SerialNumber: F4FF41E50F8E4659
[496244.269535] cdc_acm 2-1:1.0: This device cannot do calls on its own.
It is not a modem.
[496244.271597] cdc_acm 2-1:1.0: No union descriptor, testing for
castrated device
[496244.273523] drivers/usb/class/cdc-acm.c: interfaces are valid
[496244.273709] cdc_acm 2-1:1.0: ttyACM0: USB ACM device
[496244.279146] drivers/usb/class/cdc-acm.c: acm_control_msg: rq: 0x22
val: 0x0 len: 0x0 result: 0
[496244.284949] drivers/usb/class/cdc-acm.c: acm_control_msg: rq: 0x20
val: 0x0 len: 0x7 result: 7
[496244.285190] usbcore: registered new interface driver cdc_acm
[496244.285814] cdc_acm: v0.26:USB Abstract Control Model driver for USB
modems and ISDN adapters
Opening the tty:
[496262.269563] drivers/usb/class/cdc-acm.c: Entering acm_tty_open.
[496264.206543] drivers/usb/class/cdc-acm.c: acm_control_msg: rq: 0x22
val: 0x3 len: 0x0 result: 0
[496264.206559] drivers/usb/class/cdc-acm.c: Entering acm_rx_tasklet
[496296.335370] drivers/usb/class/cdc-acm.c: Entering acm_rx_tasklet
[496296.335376] drivers/usb/class/cdc-acm.c: acm_rx_tasklet: sending urb
0xeebeb200, rcv 0xee8ab34c, buf 0xee8ab48c
[496296.335379] drivers/usb/class/cdc-acm.c: acm_rx_tasklet: sending urb
0xeebeb780, rcv 0xee8ab338, buf 0xee8ab478
[496296.335383] drivers/usb/class/cdc-acm.c: acm_rx_tasklet: sending urb
0xeebeb000, rcv 0xee8ab324, buf 0xee8ab464
[496296.335386] drivers/usb/class/cdc-acm.c: acm_rx_tasklet: sending urb
0xeebeb080, rcv 0xee8ab310, buf 0xee8ab450
[496296.335390] drivers/usb/class/cdc-acm.c: acm_rx_tasklet: sending urb
0xeebeb580, rcv 0xee8ab2fc, buf 0xee8ab43c
[496296.335394] drivers/usb/class/cdc-acm.c: acm_rx_tasklet: sending urb
0xeebebf80, rcv 0xee8ab2e8, buf 0xee8ab428
[496296.335397] drivers/usb/class/cdc-acm.c: acm_rx_tasklet: sending urb
0xeebebb00, rcv 0xee8ab2d4, buf 0xee8ab414
[496296.335401] drivers/usb/class/cdc-acm.c: acm_rx_tasklet: sending urb
0xeebebe80, rcv 0xee8ab2c0, buf 0xee8ab400
[496296.335404] drivers/usb/class/cdc-acm.c: acm_rx_tasklet: sending urb
0xeebeb700, rcv 0xee8ab2ac, buf 0xee8ab3ec
[496296.335407] drivers/usb/class/cdc-acm.c: acm_rx_tasklet: sending urb
0xeebeb100, rcv 0xee8ab298, buf 0xee8ab3d8
[496296.335411] drivers/usb/class/cdc-acm.c: acm_rx_tasklet: sending urb
0xed619680, rcv 0xee8ab284, buf 0xee8ab3c4
[496296.335414] drivers/usb/class/cdc-acm.c: acm_rx_tasklet: sending urb
0xed619900, rcv 0xee8ab270, buf 0xee8ab3b0
[496296.335418] drivers/usb/class/cdc-acm.c: acm_rx_tasklet: sending urb
0xef112880, rcv 0xee8ab25c, buf 0xee8ab39c
[496296.335421] drivers/usb/class/cdc-acm.c: acm_rx_tasklet: sending urb
0xef112800, rcv 0xee8ab248, buf 0xee8ab388
[496296.335425] drivers/usb/class/cdc-acm.c: acm_rx_tasklet: sending urb
0xef112b00, rcv 0xee8ab234, buf 0xee8ab374
[496296.335428] drivers/usb/class/cdc-acm.c: acm_rx_tasklet: sending urb
0xef112c80, rcv 0xee8ab220, buf 0xee8ab360
Reading a byte
[496322.249690] drivers/usb/class/cdc-acm.c: Entering acm_read_bulk with
status 0
[496322.249706] drivers/usb/class/cdc-acm.c: Entering acm_rx_tasklet
[496322.249710] drivers/usb/class/cdc-acm.c: acm_rx_tasklet: procesing
buf 0xee8ab388, size = 1
[496322.249718] drivers/usb/class/cdc-acm.c: acm_rx_tasklet: sending urb
0xef112800, rcv 0xee8ab248, buf 0xee8ab388
[496322.249771] drivers/usb/class/cdc-acm.c: Entering acm_tty_write to
write 1 bytes,
[496322.249774] drivers/usb/class/cdc-acm.c: Get 1 bytes...
[496322.249777] drivers/usb/class/cdc-acm.c: acm_write_start susp_count: 0
trying to reopen the ttyACM0 after too much time was waited and the
internal buffer is full:
[496322.483695] drivers/usb/class/cdc-acm.c: acm_control_msg: rq: 0x22
val: 0x0 len: 0x0 result: 0
[496322.485283] drivers/usb/class/cdc-acm.c: acm_ctrl_irq - urb shutting
down with status: -2
[496322.486934] drivers/usb/class/cdc-acm.c: Entering acm_read_bulk with
status -2
[496322.486939] cdc_acm 2-1:1.0: Aborting, acm not ready
[496322.488874] drivers/usb/class/cdc-acm.c: Entering acm_read_bulk with
status -2
lsusb -v of the device:
Bus 002 Device 004: ID 0451:f432 Texas Instruments, Inc. eZ430
Development Tool
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 1.10
bDeviceClass 0 (Defined at Interface level)
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 8
idVendor 0x0451 Texas Instruments, Inc.
idProduct 0xf432 eZ430 Development Tool
bcdDevice 1.00
iManufacturer 1 Texas Instruments
iProduct 2 Texas Instruments MSP-FET430UIF
iSerial 3 F4FF41E50F8E4659
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 85
bNumInterfaces 2
bConfigurationValue 1
iConfiguration 0
bmAttributes 0x80
(Bus Powered)
MaxPower 100mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 3
bInterfaceClass 2 Communications
bInterfaceSubClass 2 Abstract (modem)
bInterfaceProtocol 1 AT-commands (v.25ter)
iInterface 5 MSP430 Application UART
CDC Header:
bcdCDC 1.10
CDC Call Management:
bmCapabilities 0x00
bDataInterface 0
CDC ACM:
bmCapabilities 0x02
line coding and serial state
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 255
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x03 EP 3 OUT
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 255
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x83 EP 3 IN
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 255
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 1
bAlternateSetting 0
bNumEndpoints 2
bInterfaceClass 3 Human Interface Device
bInterfaceSubClass 0 No Subclass
bInterfaceProtocol 0 None
iInterface 4 MSP430 Debug-Interface
HID Device Descriptor:
bLength 9
bDescriptorType 33
bcdHID 1.01
bCountryCode 0 Not supported
bNumDescriptors 1
bDescriptorType 34 Report
wDescriptorLength 694
Report Descriptor: (length is 694)
Item(Global): Usage Page, data= [ 0x00 0xff ] 65280
(null)
Item(Local ): Usage, data= [ 0x01 ] 1
(null)
Item(Main ): Collection, data= [ 0x01 ] 1
Application
Item(Global): Report ID, data= [ 0x01 ] 1
Item(Global): Report Count, data= [ 0x01 ] 1
Item(Global): Report Size, data= [ 0x08 ] 8
Item(Global): Logical Maximum, data= [ 0x01 ] 1
Item(Global): Logical Minimum, data= [ 0x01 ] 1
Item(Local ): Usage, data= [ 0x01 ] 1
(null)
Item(Main ): Input, data= [ 0x02 ] 2
Data Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position
Non_Volatile Bitfield
Item(Global): Report ID, data= [ 0x02 ] 2
Item(Global): Report Count, data= [ 0x02 ] 2
Item(Global): Report Size, data= [ 0x08 ] 8
Item(Global): Logical Maximum, data= [ 0x01 ] 1
Item(Global): Logical Minimum, data= [ 0x01 ] 1
Item(Local ): Usage, data= [ 0x01 ] 1
(null)
Item(Main ): Input, data= [ 0x02 ] 2
Data Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position
Non_Volatile Bitfield
Item(Global): Report ID, data= [ 0x03 ] 3
Item(Global): Report Count, data= [ 0x03 ] 3
Item(Global): Report Size, data= [ 0x08 ] 8
Item(Global): Logical Maximum, data= [ 0x01 ] 1
Item(Global): Logical Minimum, data= [ 0x01 ] 1
Item(Local ): Usage, data= [ 0x01 ] 1
(null)
Item(Main ): Input, data= [ 0x02 ] 2
Data Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position
Non_Volatile Bitfield
Item(Global): Report ID, data= [ 0x04 ] 4
Item(Global): Report Count, data= [ 0x04 ] 4
Item(Global): Report Size, data= [ 0x08 ] 8
Item(Global): Logical Maximum, data= [ 0x01 ] 1
Item(Global): Logical Minimum, data= [ 0x01 ] 1
Item(Local ): Usage, data= [ 0x01 ] 1
(null)
Item(Main ): Input, data= [ 0x02 ] 2
Data Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position
Non_Volatile Bitfield
Item(Global): Report ID, data= [ 0x05 ] 5
Item(Global): Report Count, data= [ 0x05 ] 5
Item(Global): Report Size, data= [ 0x08 ] 8
Item(Global): Logical Maximum, data= [ 0x01 ] 1
Item(Global): Logical Minimum, data= [ 0x01 ] 1
Item(Local ): Usage, data= [ 0x01 ] 1
(null)
Item(Main ): Input, data= [ 0x02 ] 2
Data Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position
Non_Volatile Bitfield
Item(Global): Report ID, data= [ 0x06 ] 6
Item(Global): Report Count, data= [ 0x06 ] 6
Item(Global): Report Size, data= [ 0x08 ] 8
Item(Global): Logical Maximum, data= [ 0x01 ] 1
Item(Global): Logical Minimum, data= [ 0x01 ] 1
Item(Local ): Usage, data= [ 0x01 ] 1
(null)
Item(Main ): Input, data= [ 0x02 ] 2
Data Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position
Non_Volatile Bitfield
Item(Global): Report ID, data= [ 0x07 ] 7
Item(Global): Report Count, data= [ 0x07 ] 7
Item(Global): Report Size, data= [ 0x08 ] 8
Item(Global): Logical Maximum, data= [ 0x01 ] 1
Item(Global): Logical Minimum, data= [ 0x01 ] 1
Item(Local ): Usage, data= [ 0x01 ] 1
(null)
Item(Main ): Input, data= [ 0x02 ] 2
Data Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position
Non_Volatile Bitfield
Item(Global): Report ID, data= [ 0x08 ] 8
Item(Global): Report Count, data= [ 0x08 ] 8
Item(Global): Report Size, data= [ 0x08 ] 8
Item(Global): Logical Maximum, data= [ 0x01 ] 1
Item(Global): Logical Minimum, data= [ 0x01 ] 1
Item(Local ): Usage, data= [ 0x01 ] 1
(null)
Item(Main ): Input, data= [ 0x02 ] 2
Data Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position
Non_Volatile Bitfield
Item(Global): Report ID, data= [ 0x09 ] 9
Item(Global): Report Count, data= [ 0x09 ] 9
Item(Global): Report Size, data= [ 0x08 ] 8
Item(Global): Logical Maximum, data= [ 0x01 ] 1
Item(Global): Logical Minimum, data= [ 0x01 ] 1
Item(Local ): Usage, data= [ 0x01 ] 1
(null)
Item(Main ): Input, data= [ 0x02 ] 2
Data Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position
Non_Volatile Bitfield
Item(Global): Report ID, data= [ 0x0a ] 10
Item(Global): Report Count, data= [ 0x0a ] 10
Item(Global): Report Size, data= [ 0x08 ] 8
Item(Global): Logical Maximum, data= [ 0x01 ] 1
Item(Global): Logical Minimum, data= [ 0x01 ] 1
Item(Local ): Usage, data= [ 0x01 ] 1
(null)
Item(Main ): Input, data= [ 0x02 ] 2
Data Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position
Non_Volatile Bitfield
Item(Global): Report ID, data= [ 0x0b ] 11
Item(Global): Report Count, data= [ 0x0b ] 11
Item(Global): Report Size, data= [ 0x08 ] 8
Item(Global): Logical Maximum, data= [ 0x01 ] 1
Item(Global): Logical Minimum, data= [ 0x01 ] 1
Item(Local ): Usage, data= [ 0x01 ] 1
(null)
Item(Main ): Input, data= [ 0x02 ] 2
Data Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position
Non_Volatile Bitfield
Item(Global): Report ID, data= [ 0x0c ] 12
Item(Global): Report Count, data= [ 0x0c ] 12
Item(Global): Report Size, data= [ 0x08 ] 8
Item(Global): Logical Maximum, data= [ 0x01 ] 1
Item(Global): Logical Minimum, data= [ 0x01 ] 1
Item(Local ): Usage, data= [ 0x01 ] 1
(null)
Item(Main ): Input, data= [ 0x02 ] 2
Data Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position
Non_Volatile Bitfield
Item(Global): Report ID, data= [ 0x0d ] 13
Item(Global): Report Count, data= [ 0x0d ] 13
Item(Global): Report Size, data= [ 0x08 ] 8
Item(Global): Logical Maximum, data= [ 0x01 ] 1
Item(Global): Logical Minimum, data= [ 0x01 ] 1
Item(Local ): Usage, data= [ 0x01 ] 1
(null)
Item(Main ): Input, data= [ 0x02 ] 2
Data Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position
Non_Volatile Bitfield
Item(Global): Report ID, data= [ 0x0e ] 14
Item(Global): Report Count, data= [ 0x0e ] 14
Item(Global): Report Size, data= [ 0x08 ] 8
Item(Global): Logical Maximum, data= [ 0x01 ] 1
Item(Global): Logical Minimum, data= [ 0x01 ] 1
Item(Local ): Usage, data= [ 0x01 ] 1
(null)
Item(Main ): Input, data= [ 0x02 ] 2
Data Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position
Non_Volatile Bitfield
Item(Global): Report ID, data= [ 0x0f ] 15
Item(Global): Report Count, data= [ 0x0f ] 15
Item(Global): Report Size, data= [ 0x08 ] 8
Item(Global): Logical Maximum, data= [ 0x01 ] 1
Item(Global): Logical Minimum, data= [ 0x01 ] 1
Item(Local ): Usage, data= [ 0x01 ] 1
(null)
Item(Main ): Input, data= [ 0x02 ] 2
Data Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position
Non_Volatile Bitfield
Item(Global): Report ID, data= [ 0x10 ] 16
Item(Global): Report Count, data= [ 0x10 ] 16
Item(Global): Report Size, data= [ 0x08 ] 8
Item(Global): Logical Maximum, data= [ 0x01 ] 1
Item(Global): Logical Minimum, data= [ 0x01 ] 1
Item(Local ): Usage, data= [ 0x01 ] 1
(null)
Item(Main ): Input, data= [ 0x02 ] 2
Data Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position
Non_Volatile Bitfield
Item(Global): Report ID, data= [ 0x11 ] 17
Item(Global): Report Count, data= [ 0x11 ] 17
Item(Global): Report Size, data= [ 0x08 ] 8
Item(Global): Logical Maximum, data= [ 0x01 ] 1
Item(Global): Logical Minimum, data= [ 0x01 ] 1
Item(Local ): Usage, data= [ 0x01 ] 1
(null)
Item(Main ): Input, data= [ 0x02 ] 2
Data Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position
Non_Volatile Bitfield
Item(Global): Report ID, data= [ 0x12 ] 18
Item(Global): Report Count, data= [ 0x12 ] 18
Item(Global): Report Size, data= [ 0x08 ] 8
Item(Global): Logical Maximum, data= [ 0x01 ] 1
Item(Global): Logical Minimum, data= [ 0x01 ] 1
Item(Local ): Usage, data= [ 0x01 ] 1
(null)
Item(Main ): Input, data= [ 0x02 ] 2
Data Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position
Non_Volatile Bitfield
Item(Global): Report ID, data= [ 0x20 ] 32
Item(Global): Report Count, data= [ 0x20 ] 32
Item(Global): Report Size, data= [ 0x08 ] 8
Item(Global): Logical Maximum, data= [ 0x01 ] 1
Item(Global): Logical Minimum, data= [ 0x01 ] 1
Item(Local ): Usage, data= [ 0x01 ] 1
(null)
Item(Main ): Input, data= [ 0x02 ] 2
Data Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position
Non_Volatile Bitfield
Item(Global): Report ID, data= [ 0x3f ] 63
Item(Global): Report Count, data= [ 0x3f ] 63
Item(Global): Report Size, data= [ 0x08 ] 8
Item(Global): Logical Maximum, data= [ 0x01 ] 1
Item(Global): Logical Minimum, data= [ 0x01 ] 1
Item(Local ): Usage, data= [ 0x01 ] 1
(null)
Item(Main ): Input, data= [ 0x02 ] 2
Data Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position
Non_Volatile Bitfield
Item(Global): Report ID, data= [ 0x01 ] 1
Item(Global): Report Count, data= [ 0x01 ] 1
Item(Global): Report Size, data= [ 0x08 ] 8
Item(Global): Logical Maximum, data= [ 0x01 ] 1
Item(Global): Logical Minimum, data= [ 0x01 ] 1
Item(Local ): Usage, data= [ 0x01 ] 1
(null)
Item(Main ): Output, data= [ 0x02 ] 2
Data Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position
Non_Volatile Bitfield
Item(Global): Report ID, data= [ 0x02 ] 2
Item(Global): Report Count, data= [ 0x02 ] 2
Item(Global): Report Size, data= [ 0x08 ] 8
Item(Global): Logical Maximum, data= [ 0x01 ] 1
Item(Global): Logical Minimum, data= [ 0x01 ] 1
Item(Local ): Usage, data= [ 0x01 ] 1
(null)
Item(Main ): Output, data= [ 0x02 ] 2
Data Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position
Non_Volatile Bitfield
Item(Global): Report ID, data= [ 0x03 ] 3
Item(Global): Report Count, data= [ 0x03 ] 3
Item(Global): Report Size, data= [ 0x08 ] 8
Item(Global): Logical Maximum, data= [ 0x01 ] 1
Item(Global): Logical Minimum, data= [ 0x01 ] 1
Item(Local ): Usage, data= [ 0x01 ] 1
(null)
Item(Main ): Output, data= [ 0x02 ] 2
Data Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position
Non_Volatile Bitfield
Item(Global): Report ID, data= [ 0x04 ] 4
Item(Global): Report Count, data= [ 0x04 ] 4
Item(Global): Report Size, data= [ 0x08 ] 8
Item(Global): Logical Maximum, data= [ 0x01 ] 1
Item(Global): Logical Minimum, data= [ 0x01 ] 1
Item(Local ): Usage, data= [ 0x01 ] 1
(null)
Item(Main ): Output, data= [ 0x02 ] 2
Data Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position
Non_Volatile Bitfield
Item(Global): Report ID, data= [ 0x05 ] 5
Item(Global): Report Count, data= [ 0x05 ] 5
Item(Global): Report Size, data= [ 0x08 ] 8
Item(Global): Logical Maximum, data= [ 0x01 ] 1
Item(Global): Logical Minimum, data= [ 0x01 ] 1
Item(Local ): Usage, data= [ 0x01 ] 1
(null)
Item(Main ): Output, data= [ 0x02 ] 2
Data Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position
Non_Volatile Bitfield
Item(Global): Report ID, data= [ 0x06 ] 6
Item(Global): Report Count, data= [ 0x06 ] 6
Item(Global): Report Size, data= [ 0x08 ] 8
Item(Global): Logical Maximum, data= [ 0x01 ] 1
Item(Global): Logical Minimum, data= [ 0x01 ] 1
Item(Local ): Usage, data= [ 0x01 ] 1
(null)
Item(Main ): Output, data= [ 0x02 ] 2
Data Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position
Non_Volatile Bitfield
Item(Global): Report ID, data= [ 0x07 ] 7
Item(Global): Report Count, data= [ 0x07 ] 7
Item(Global): Report Size, data= [ 0x08 ] 8
Item(Global): Logical Maximum, data= [ 0x01 ] 1
Item(Global): Logical Minimum, data= [ 0x01 ] 1
Item(Local ): Usage, data= [ 0x01 ] 1
(null)
Item(Main ): Output, data= [ 0x02 ] 2
Data Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position
Non_Volatile Bitfield
Item(Global): Report ID, data= [ 0x08 ] 8
Item(Global): Report Count, data= [ 0x08 ] 8
Item(Global): Report Size, data= [ 0x08 ] 8
Item(Global): Logical Maximum, data= [ 0x01 ] 1
Item(Global): Logical Minimum, data= [ 0x01 ] 1
Item(Local ): Usage, data= [ 0x01 ] 1
(null)
Item(Main ): Output, data= [ 0x02 ] 2
Data Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position
Non_Volatile Bitfield
Item(Global): Report ID, data= [ 0x09 ] 9
Item(Global): Report Count, data= [ 0x09 ] 9
Item(Global): Report Size, data= [ 0x08 ] 8
Item(Global): Logical Maximum, data= [ 0x01 ] 1
Item(Global): Logical Minimum, data= [ 0x01 ] 1
Item(Local ): Usage, data= [ 0x01 ] 1
(null)
Item(Main ): Output, data= [ 0x02 ] 2
Data Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position
Non_Volatile Bitfield
Item(Global): Report ID, data= [ 0x0a ] 10
Item(Global): Report Count, data= [ 0x0a ] 10
Item(Global): Report Size, data= [ 0x08 ] 8
Item(Global): Logical Maximum, data= [ 0x01 ] 1
Item(Global): Logical Minimum, data= [ 0x01 ] 1
Item(Local ): Usage, data= [ 0x01 ] 1
(null)
Item(Main ): Output, data= [ 0x02 ] 2
Data Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position
Non_Volatile Bitfield
Item(Global): Report ID, data= [ 0x0b ] 11
Item(Global): Report Count, data= [ 0x0b ] 11
Item(Global): Report Size, data= [ 0x08 ] 8
Item(Global): Logical Maximum, data= [ 0x01 ] 1
Item(Global): Logical Minimum, data= [ 0x01 ] 1
Item(Local ): Usage, data= [ 0x01 ] 1
(null)
Item(Main ): Output, data= [ 0x02 ] 2
Data Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position
Non_Volatile Bitfield
Item(Global): Report ID, data= [ 0x0c ] 12
Item(Global): Report Count, data= [ 0x0c ] 12
Item(Global): Report Size, data= [ 0x08 ] 8
Item(Global): Logical Maximum, data= [ 0x01 ] 1
Item(Global): Logical Minimum, data= [ 0x01 ] 1
Item(Local ): Usage, data= [ 0x01 ] 1
(null)
Item(Main ): Output, data= [ 0x02 ] 2
Data Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position
Non_Volatile Bitfield
Item(Global): Report ID, data= [ 0x0d ] 13
Item(Global): Report Count, data= [ 0x0d ] 13
Item(Global): Report Size, data= [ 0x08 ] 8
Item(Global): Logical Maximum, data= [ 0x01 ] 1
Item(Global): Logical Minimum, data= [ 0x01 ] 1
Item(Local ): Usage, data= [ 0x01 ] 1
(null)
Item(Main ): Output, data= [ 0x02 ] 2
Data Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position
Non_Volatile Bitfield
Item(Global): Report ID, data= [ 0x0e ] 14
Item(Global): Report Count, data= [ 0x0e ] 14
Item(Global): Report Size, data= [ 0x08 ] 8
Item(Global): Logical Maximum, data= [ 0x01 ] 1
Item(Global): Logical Minimum, data= [ 0x01 ] 1
Item(Local ): Usage, data= [ 0x01 ] 1
(null)
Item(Main ): Output, data= [ 0x02 ] 2
Data Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position
Non_Volatile Bitfield
Item(Global): Report ID, data= [ 0x0f ] 15
Item(Global): Report Count, data= [ 0x0f ] 15
Item(Global): Report Size, data= [ 0x08 ] 8
Item(Global): Logical Maximum, data= [ 0x01 ] 1
Item(Global): Logical Minimum, data= [ 0x01 ] 1
Item(Local ): Usage, data= [ 0x01 ] 1
(null)
Item(Main ): Output, data= [ 0x02 ] 2
Data Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position
Non_Volatile Bitfield
Item(Global): Report ID, data= [ 0x10 ] 16
Item(Global): Report Count, data= [ 0x10 ] 16
Item(Global): Report Size, data= [ 0x08 ] 8
Item(Global): Logical Maximum, data= [ 0x01 ] 1
Item(Global): Logical Minimum, data= [ 0x01 ] 1
Item(Local ): Usage, data= [ 0x01 ] 1
(null)
Item(Main ): Output, data= [ 0x02 ] 2
Data Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position
Non_Volatile Bitfield
Item(Global): Report ID, data= [ 0x11 ] 17
Item(Global): Report Count, data= [ 0x11 ] 17
Item(Global): Report Size, data= [ 0x08 ] 8
Item(Global): Logical Maximum, data= [ 0x01 ] 1
Item(Global): Logical Minimum, data= [ 0x01 ] 1
Item(Local ): Usage, data= [ 0x01 ] 1
(null)
Item(Main ): Output, data= [ 0x02 ] 2
Data Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position
Non_Volatile Bitfield
Item(Global): Report ID, data= [ 0x12 ] 18
Item(Global): Report Count, data= [ 0x12 ] 18
Item(Global): Report Size, data= [ 0x08 ] 8
Item(Global): Logical Maximum, data= [ 0x01 ] 1
Item(Global): Logical Minimum, data= [ 0x01 ] 1
Item(Local ): Usage, data= [ 0x01 ] 1
(null)
Item(Main ): Output, data= [ 0x02 ] 2
Data Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position
Non_Volatile Bitfield
Item(Global): Report ID, data= [ 0x20 ] 32
Item(Global): Report Count, data= [ 0x20 ] 32
Item(Global): Report Size, data= [ 0x08 ] 8
Item(Global): Logical Maximum, data= [ 0x01 ] 1
Item(Global): Logical Minimum, data= [ 0x01 ] 1
Item(Local ): Usage, data= [ 0x01 ] 1
(null)
Item(Main ): Output, data= [ 0x02 ] 2
Data Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position
Non_Volatile Bitfield
Item(Global): Report ID, data= [ 0x3f ] 63
Item(Global): Report Count, data= [ 0x3f ] 63
Item(Global): Report Size, data= [ 0x08 ] 8
Item(Global): Logical Maximum, data= [ 0x01 ] 1
Item(Global): Logical Minimum, data= [ 0x01 ] 1
Item(Local ): Usage, data= [ 0x01 ] 1
(null)
Item(Main ): Output, data= [ 0x02 ] 2
Data Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position
Non_Volatile Bitfield
Item(Global): Report ID, data= [ 0xff ] 255
Item(Global): Report Count, data= [ 0xff ] 255
Item(Global): Report Size, data= [ 0x08 ] 8
Item(Global): Logical Maximum, data= [ 0x01 ] 1
Item(Global): Logical Minimum, data= [ 0x01 ] 1
Item(Local ): Usage, data= [ 0x01 ] 1
(null)
Item(Main ): Output, data= [ 0x02 ] 2
Data Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position
Non_Volatile Bitfield
Item(Global): Report ID, data= [ 0xc8 ] 200
Item(Global): Report Count, data= [ 0x01 ] 1
Item(Global): Report Size, data= [ 0x08 ] 8
Item(Global): Logical Maximum, data= [ 0x01 ] 1
Item(Global): Logical Minimum, data= [ 0x01 ] 1
Item(Local ): Usage, data= [ 0x01 ] 1
(null)
Item(Main ): Feature, data= [ 0x02 ] 2
Data Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position
Non_Volatile Bitfield
Item(Global): Report ID, data= [ 0xc9 ] 201
Item(Global): Report Count, data= [ 0x02 ] 2
Item(Global): Report Size, data= [ 0x08 ] 8
Item(Global): Logical Maximum, data= [ 0x01 ] 1
Item(Global): Logical Minimum, data= [ 0x01 ] 1
Item(Local ): Usage, data= [ 0x01 ] 1
(null)
Item(Main ): Feature, data= [ 0x02 ] 2
Data Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position
Non_Volatile Bitfield
Item(Global): Report ID, data= [ 0xca ] 202
Item(Global): Report Count, data= [ 0x02 ] 2
Item(Global): Report Size, data= [ 0x08 ] 8
Item(Global): Logical Maximum, data= [ 0x01 ] 1
Item(Global): Logical Minimum, data= [ 0x01 ] 1
Item(Local ): Usage, data= [ 0x01 ] 1
(null)
Item(Main ): Feature, data= [ 0x02 ] 2
Data Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position
Non_Volatile Bitfield
Item(Global): Report ID, data= [ 0xcb ] 203
Item(Global): Report Count, data= [ 0x01 ] 1
Item(Global): Report Size, data= [ 0x08 ] 8
Item(Global): Logical Maximum, data= [ 0x01 ] 1
Item(Global): Logical Minimum, data= [ 0x01 ] 1
Item(Local ): Usage, data= [ 0x01 ] 1
(null)
Item(Main ): Feature, data= [ 0x02 ] 2
Data Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position
Non_Volatile Bitfield
Item(Global): Report ID, data= [ 0xcc ] 204
Item(Global): Report Count, data= [ 0x01 ] 1
Item(Global): Report Size, data= [ 0x08 ] 8
Item(Global): Logical Maximum, data= [ 0x01 ] 1
Item(Global): Logical Minimum, data= [ 0x01 ] 1
Item(Local ): Usage, data= [ 0x01 ] 1
(null)
Item(Main ): Feature, data= [ 0x02 ] 2
Data Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position
Non_Volatile Bitfield
Item(Global): Report ID, data= [ 0xcd ] 205
Item(Global): Report Count, data= [ 0x01 ] 1
Item(Global): Report Size, data= [ 0x08 ] 8
Item(Global): Logical Maximum, data= [ 0x01 ] 1
Item(Global): Logical Minimum, data= [ 0x01 ] 1
Item(Local ): Usage, data= [ 0x01 ] 1
(null)
Item(Main ): Feature, data= [ 0x02 ] 2
Data Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position
Non_Volatile Bitfield
Item(Global): Report ID, data= [ 0xd2 ] 210
Item(Global): Report Count, data= [ 0x01 ] 1
Item(Global): Report Size, data= [ 0x08 ] 8
Item(Global): Logical Maximum, data= [ 0x01 ] 1
Item(Global): Logical Minimum, data= [ 0x01 ] 1
Item(Local ): Usage, data= [ 0x01 ] 1
(null)
Item(Main ): Feature, data= [ 0x02 ] 2
Data Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position
Non_Volatile Bitfield
Item(Global): Report ID, data= [ 0xd3 ] 211
Item(Global): Report Count, data= [ 0x01 ] 1
Item(Global): Report Size, data= [ 0x08 ] 8
Item(Global): Logical Maximum, data= [ 0x01 ] 1
Item(Global): Logical Minimum, data= [ 0x01 ] 1
Item(Local ): Usage, data= [ 0x01 ] 1
(null)
Item(Main ): Feature, data= [ 0x02 ] 2
Data Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position
Non_Volatile Bitfield
Item(Main ): End Collection, data=none
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x81 EP 1 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 1
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x01 EP 1 OUT
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 1
Device Status: 0x0000
(Bus Powered)
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html