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

Reply via email to