Hi all, For a hobby project I'm writing firmware for a LPC214x (ARM7) microcontroller to implement a simple serial-over-USB port.
I think I have the basics covered and the device appears to work under windows, however under linux I'm seeing a "Generic device with no bulk out, not allowed." message. The usbserial eventually does create a /dev/ttyUSB0 file. Is it normal to see the message mentioned above? Or is there anything wrong with the configuration of my device? Or perhaps there is something wrong with the linux kernel driver? I tried to conform to the USB CDC specs. My device has two interfaces, a communication class interface with an interrupt-in endpoint and a data class interface with two bulk (in and out) endpoints. I'm attaching the syslog, dmesg and lsusb -v output. Thanks, Bertrik
Bus 005 Device 004: ID ffff:0005 Device Descriptor: bLength 18 bDescriptorType 1 bcdUSB 1.10 bDeviceClass 2 Communications bDeviceSubClass 0 bDeviceProtocol 0 bMaxPacketSize0 64 idVendor 0xffff idProduct 0x0005 bcdDevice 1.00 iManufacturer 1 LPCUSB iProduct 2 USBSerial iSerial 3 DEADC0DE bNumConfigurations 1 Configuration Descriptor: bLength 9 bDescriptorType 2 wTotalLength 67 bNumInterfaces 2 bConfigurationValue 1 iConfiguration 0 bmAttributes 0xc0 Self Powered MaxPower 100mA Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 0 bNumEndpoints 1 bInterfaceClass 2 Communications bInterfaceSubClass 2 Abstract (modem) bInterfaceProtocol 0 None iInterface 0 CDC Header: bcdCDC 1.10 CDC Call Management: bmCapabilities 0x00 bDataInterface 0 CDC ACM: bmCapabilities 0x02 line coding and serial state CDC Union: bMasterInterface 0 bSlaveInterface 1 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 255 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 1 bAlternateSetting 0 bNumEndpoints 2 bInterfaceClass 10 Data bInterfaceSubClass 0 Unused bInterfaceProtocol 0 iInterface 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x05 EP 5 OUT bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0040 1x 64 bytes bInterval 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x82 EP 2 IN bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0040 1x 64 bytes bInterval 0 Device Status: 0x0000 (Bus Powered) Bus 005 Device 002: ID 04b4:6560 Cypress Semiconductor Corp. CY7C65640 USB-2.0 "TetraHub" Device Descriptor: bLength 18 bDescriptorType 1 bcdUSB 2.00 bDeviceClass 9 Hub bDeviceSubClass 0 Unused bDeviceProtocol 2 TT per port bMaxPacketSize0 64 idVendor 0x04b4 Cypress Semiconductor Corp. idProduct 0x6560 CY7C65640 USB-2.0 "TetraHub" bcdDevice 0.0b iManufacturer 0 iProduct 0 iSerial 0 bNumConfigurations 1 Configuration Descriptor: bLength 9 bDescriptorType 2 wTotalLength 41 bNumInterfaces 1 bConfigurationValue 1 iConfiguration 0 bmAttributes 0xe0 Self Powered Remote Wakeup MaxPower 100mA Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 0 bNumEndpoints 1 bInterfaceClass 9 Hub bInterfaceSubClass 0 Unused bInterfaceProtocol 1 Single TT iInterface 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x81 EP 1 IN bmAttributes 3 Transfer Type Interrupt Synch Type None Usage Type Data wMaxPacketSize 0x0001 1x 1 bytes bInterval 12 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 1 bNumEndpoints 1 bInterfaceClass 9 Hub bInterfaceSubClass 0 Unused bInterfaceProtocol 2 TT per port iInterface 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x81 EP 1 IN bmAttributes 3 Transfer Type Interrupt Synch Type None Usage Type Data wMaxPacketSize 0x0001 1x 1 bytes bInterval 12 Hub Descriptor: bLength 9 bDescriptorType 41 nNbrPorts 4 wHubCharacteristic 0x0089 Per-port power switching Per-port overcurrent protection TT think time 8 FS bits Port indicators bPwrOn2PwrGood 50 * 2 milli seconds bHubContrCurrent 100 milli Ampere DeviceRemovable 0xf0 PortPwrCtrlMask 0xc0 Hub Port Status: Port 1: 0000.0100 power Port 2: 0000.0100 power Port 3: 0000.0100 power Port 4: 0000.0103 power enable connect Device Qualifier (for other device speed): bLength 10 bDescriptorType 6 bcdUSB 2.00 bDeviceClass 9 Hub bDeviceSubClass 0 Unused bDeviceProtocol 0 bMaxPacketSize0 64 bNumConfigurations 1 Device Status: 0x0001 Self Powered Bus 005 Device 001: ID 0000:0000 Device Descriptor: bLength 18 bDescriptorType 1 bcdUSB 2.00 bDeviceClass 9 Hub bDeviceSubClass 0 Unused bDeviceProtocol 1 Single TT bMaxPacketSize0 64 idVendor 0x0000 idProduct 0x0000 bcdDevice 2.06 iManufacturer 3 Linux 2.6.15-19-k7 ehci_hcd iProduct 2 EHCI Host Controller iSerial 1 0000:00:09.2 bNumConfigurations 1 Configuration Descriptor: bLength 9 bDescriptorType 2 wTotalLength 25 bNumInterfaces 1 bConfigurationValue 1 iConfiguration 0 bmAttributes 0xc0 Self Powered MaxPower 0mA Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 0 bNumEndpoints 1 bInterfaceClass 9 Hub bInterfaceSubClass 0 Unused bInterfaceProtocol 0 iInterface 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x81 EP 1 IN bmAttributes 3 Transfer Type Interrupt Synch Type None Usage Type Data wMaxPacketSize 0x0002 1x 2 bytes bInterval 12 Hub Descriptor: bLength 9 bDescriptorType 41 nNbrPorts 4 wHubCharacteristic 0x000a No power switching (usb 1.0) Per-port overcurrent protection TT think time 8 FS bits bPwrOn2PwrGood 10 * 2 milli seconds bHubContrCurrent 0 milli Ampere DeviceRemovable 0xa8 PortPwrCtrlMask 0xe6 Hub Port Status: Port 1: 0000.0100 power Port 2: 0000.0100 power Port 3: 0000.0503 highspeed power enable connect Port 4: 0000.0100 power Device Status: 0x0001 Self Powered
Linux ubuntu 2.6.15-19-k7 #1 SMP PREEMPT Mon Mar 20 18:21:44 UTC 2006 i686 GNU/Linux
Mar 27 19:01:13 localhost kernel: [4295004.967000] usbcore: registered new driver usbserial Mar 27 19:01:13 localhost kernel: [4295004.970000] drivers/usb/serial/usb-serial.c: USB Serial support registered for generic Mar 27 19:01:13 localhost kernel: [4295004.971000] usbserial_generic 5-3.4:1.0: generic converter detected Mar 27 19:01:13 localhost kernel: [4295004.971000] usbserial_generic: probe of 5-3.4:1.0 failed with error -5 Mar 27 19:01:13 localhost kernel: [4295004.972000] usbserial_generic 5-3.4:1.1: generic converter detected Mar 27 19:01:13 localhost kernel: [4295004.974000] usb 5-3.4: generic converter now attached to ttyUSB0 Mar 27 19:01:13 localhost kernel: [4295004.975000] usbcore: registered new driver usbserial_generic Mar 27 19:01:13 localhost kernel: [4295004.975000] drivers/usb/serial/usb-serial.c: USB Serial Driver core
[4295004.967000] usbcore: registered new driver usbserial [4295004.967000] drivers/usb/serial/usb-serial.c: Had to override the open usb serial operation with the generic one. [4295004.967000] drivers/usb/serial/usb-serial.c: Had to override the write usb serial operation with the generic one. [4295004.968000] drivers/usb/serial/usb-serial.c: Had to override the close usb serial operation with the generic one. [4295004.968000] drivers/usb/serial/usb-serial.c: Had to override the write_room usb serial operation with the generic one. [4295004.968000] drivers/usb/serial/usb-serial.c: Had to override the chars_in_buffer usb serial operation with the generic one. [4295004.969000] drivers/usb/serial/usb-serial.c: Had to override the read_bulk_callback usb serial operation with the generic one. [4295004.969000] drivers/usb/serial/usb-serial.c: Had to override the write_bulk_callback usb serial operation with the generic one. [4295004.970000] drivers/usb/serial/usb-serial.c: USB Serial support registered for generic [4295004.971000] drivers/usb/serial/usb-serial.c: descriptor matches [4295004.971000] drivers/usb/serial/usb-serial.c: found interrupt in on endpoint 0 [4295004.971000] usbserial_generic 5-3.4:1.0: generic converter detected [4295004.971000] usbserial_generic 5-3.4:1.0: Generic device with no bulk out, not allowed. [4295004.971000] usbserial_generic: probe of 5-3.4:1.0 failed with error -5 [4295004.972000] drivers/usb/serial/usb-serial.c: descriptor matches [4295004.972000] drivers/usb/serial/usb-serial.c: found bulk out on endpoint 0 [4295004.972000] drivers/usb/serial/usb-serial.c: found bulk in on endpoint 1 [4295004.972000] usbserial_generic 5-3.4:1.1: generic converter detected [4295004.973000] drivers/usb/serial/usb-serial.c: get_free_serial 1 [4295004.973000] drivers/usb/serial/usb-serial.c: get_free_serial - minor base = 0 [4295004.973000] drivers/usb/serial/usb-serial.c: usb_serial_probe - setting up 1 port structures for this device [4295004.973000] drivers/usb/serial/usb-serial.c: usb_serial_probe - registering ttyUSB0 [4295004.974000] usb 5-3.4: generic converter now attached to ttyUSB0 [4295004.975000] usbcore: registered new driver usbserial_generic [4295004.975000] drivers/usb/serial/usb-serial.c: USB Serial Driver core [4295005.013000] drivers/usb/serial/usb-serial.c: serial_open [4295005.013000] drivers/usb/serial/generic.c: usb_serial_generic_open - port 0 [4295005.013000] drivers/usb/serial/usb-serial.c: serial_ioctl - port 0, cmd 0x541e [4295005.013000] drivers/usb/serial/usb-serial.c: serial_close - port 0 [4295005.013000] drivers/usb/serial/generic.c: usb_serial_generic_close - port 0 [4295005.013000] drivers/usb/serial/generic.c: generic_cleanup - port 0 [4295005.013000] drivers/usb/serial/generic.c: usb_serial_generic_read_bulk_callback - port 0 [4295005.013000] drivers/usb/serial/generic.c: usb_serial_generic_read_bulk_callback - nonzero read bulk status received: -2