Hi

I have an unknown-vendor USB-RS232 connector (it sais
MADE IN CHINA and that it supports Windows/Mac/Linux!)

According to lsusb the ID is

        058f:9720       Alcor Micro Corp

I'm trying to use the `generic` driver but when I'm trying
to use /dev/ttyUSB0 nothing happens. The debug messages of
`generic` say "usb_serial_generic_write - already writing".

- I've also tried the pl2303 driver with this ID but I got
  an Oops.

- I also tried the ACM driver because according to acm.txt
  the parameters match. The cdc-acm driver said:
        cdc-acm.c       : This device cannot do calls on its own. It is no 
modem.
        cdc-acm 3-1:1.0: ttyACM0: USB ACM device
  And it is not usable...

So back to `generic`.

Here is the /proc/bus/usb/devices entry: 
#############################################

        T:  Bus=03 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  3 Spd=12  MxCh= 0
        D:  Ver= 1.10 Cls=02(comm.) Sub=00 Prot=00 MxPS= 8 #Cfgs=  1
        P:  Vendor=058f ProdID=9720 Rev= 0.00
        C:* #Ifs= 2 Cfg#= 1 Atr=a0 MxPwr=100mA
        I:  If#= 0 Alt= 0 #EPs= 1 Cls=02(comm.) Sub=02 Prot=01 Driver=(none)
        E:  Ad=83(I) Atr=03(Int.) MxPS=  16 Ivl=1ms
        I:  If#= 1 Alt= 0 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 
Driver=usbserial_generic
        E:  Ad=01(O) Atr=02(Bulk) MxPS=  64 Ivl=0ms
        E:  Ad=82(I) Atr=02(Bulk) MxPS=  64 Ivl=0ms

Here is `lsusb -v` for the device: 
###################################################

        Bus 003 Device 003: ID 058f:9720 Alcor Micro Corp. 
        Device Descriptor:
          bLength                18
          bDescriptorType         1
          bcdUSB               1.10
          bDeviceClass            2 Communications
          bDeviceSubClass         0 
          bDeviceProtocol         0 
          bMaxPacketSize0         8
          idVendor           0x058f Alcor Micro Corp.
          idProduct          0x9720 
          bcdDevice            0.00
          iManufacturer           0 
          iProduct                0 
          iSerial                 0 
          bNumConfigurations      1
          Configuration Descriptor:
            bLength                 9
            bDescriptorType         2
            wTotalLength           67
            bNumInterfaces          2
            bConfigurationValue     1
            iConfiguration          0 
            bmAttributes         0xa0
              Remote Wakeup
            MaxPower              100mA
            Interface Descriptor:
              bLength                 9
              bDescriptorType         4
              bInterfaceNumber        0
              bAlternateSetting       0
              bNumEndpoints           1
              bInterfaceClass         2 Communications
              bInterfaceSubClass      2 Abstract (modem)
              bInterfaceProtocol      1 AT-commands (v.25ter)
              iInterface              0 
              Endpoint Descriptor:
                bLength                 7
                bDescriptorType         5
                bEndpointAddress     0x83  EP 3 IN
                bmAttributes            3
                  Transfer Type            Interrupt
                  Synch Type               None
                  Usage Type               Data
                wMaxPacketSize     0x0010  bytes 16 once
                bInterval               1
                CDC Header:
                  bcdCDC               1.10
                CDC Call Management:
                  bmCapabilities       0x01
                    call management
                  bDataInterface        1
                CDC ACM:
                  bmCapabilities       06
                    sends break
                    line coding and serial state
                CDC Union:
                  bMasterInterface        0
                  bSlaveInterface         1 
            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     0x01  EP 1 OUT
                bmAttributes            2
                  Transfer Type            Bulk
                  Synch Type               None
                  Usage Type               Data
                wMaxPacketSize     0x0040  bytes 64 once
                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  bytes 64 once
                bInterval               0

Here is the dmesg sessions: 
##########################################################
# Here I insmod usbserial 
############################################################
        usbcore: registered new driver usbserial
        /linux-2.6.17.13/$PATH/usb-serial.c: Had to override the open usb 
serial operation with the generic one.
        /linux-2.6.17.13/$PATH/usb-serial.c: Had to override the write usb 
serial operation with the generic one.
        /linux-2.6.17.13/$PATH/usb-serial.c: Had to override the close usb 
serial operation with the generic one.
        /linux-2.6.17.13/$PATH/usb-serial.c: Had to override the write_room usb 
serial operation with the generic one.
        /linux-2.6.17.13/$PATH/usb-serial.c: Had to override the 
chars_in_buffer usb serial operation with the generic one.
        /linux-2.6.17.13/$PATH/usb-serial.c: Had to override the 
read_bulk_callback usb serial operation with the generic one.
        /linux-2.6.17.13/$PATH/usb-serial.c: Had to override the 
write_bulk_callback usb serial operation with the generic one.
        /linux-2.6.17.13/$PATH/usb-serial.c: USB Serial support registered for 
generic
        usbcore: registered new driver usbserial_generic
        /linux-2.6.17.13/$PATH/usb-serial.c: USB Serial Driver core

# Now I plug the device 
##############################################################
        ohci_hcd 0000:00:03.1: wakeup
        usb 3-1: new full speed USB device using ohci_hcd and address 3
        usb 3-1: configuration #1 chosen from 1 choice
        /linux-2.6.17.13/$PATH/usb-serial.c: descriptor matches
        /linux-2.6.17.13/$PATH/usb-serial.c: found interrupt in on endpoint 0
        usbserial_generic 3-1:1.0: generic converter detected
        usbserial_generic 3-1:1.0: Generic device with no bulk out, not allowed.
        usbserial_generic: probe of 3-1:1.0 failed with error -5
        /linux-2.6.17.13/$PATH/usb-serial.c: descriptor matches
        /linux-2.6.17.13/$PATH/usb-serial.c: found bulk out on endpoint 0
        /linux-2.6.17.13/$PATH/usb-serial.c: found bulk in on endpoint 1
        usbserial_generic 3-1:1.1: generic converter detected
        /linux-2.6.17.13/$PATH/usb-serial.c: get_free_serial 1
        /linux-2.6.17.13/$PATH/usb-serial.c: get_free_serial - minor base = 0
        /linux-2.6.17.13/$PATH/usb-serial.c: usb_serial_probe - setting up 1 
port structures for this device
        /linux-2.6.17.13/$PATH/usb-serial.c: usb_serial_probe - registering 
ttyUSB0
        usb 3-1: generic converter now attached to ttyUSB0

# Now I fire up minicom which is setup to use /dev/ttyUSB0 
###########################
        /linux-2.6.17.13/$PATH/usb-serial.c: serial_open
        /linux-2.6.17.13/$PATH/generic.c: usb_serial_generic_open - port 0
        /linux-2.6.17.13/$PATH/usb-serial.c: serial_ioctl - port 0, cmd 0x5401
        /linux-2.6.17.13/$PATH/usb-serial.c: serial_tiocmget - port 0
        /linux-2.6.17.13/$PATH/usb-serial.c: serial_ioctl - port 0, cmd 0x5401
        /linux-2.6.17.13/$PATH/usb-serial.c: serial_ioctl - port 0, cmd 0x5402
        /linux-2.6.17.13/$PATH/usb-serial.c: serial_set_termios - port 0
        /linux-2.6.17.13/$PATH/usb-serial.c: serial_ioctl - port 0, cmd 0x5401
        /linux-2.6.17.13/$PATH/usb-serial.c: serial_tiocmget - port 0
        /linux-2.6.17.13/$PATH/usb-serial.c: serial_tiocmset - port 0
        /linux-2.6.17.13/$PATH/usb-serial.c: serial_ioctl - port 0, cmd 0x5401
        /linux-2.6.17.13/$PATH/usb-serial.c: serial_ioctl - port 0, cmd 0x5402
        /linux-2.6.17.13/$PATH/usb-serial.c: serial_set_termios - port 0
        /linux-2.6.17.13/$PATH/usb-serial.c: serial_ioctl - port 0, cmd 0x5401
        /linux-2.6.17.13/$PATH/usb-serial.c: serial_ioctl - port 0, cmd 0x5401
        /linux-2.6.17.13/$PATH/usb-serial.c: serial_ioctl - port 0, cmd 0x5402
        /linux-2.6.17.13/$PATH/usb-serial.c: serial_set_termios - port 0
        /linux-2.6.17.13/$PATH/usb-serial.c: serial_ioctl - port 0, cmd 0x5401
        /linux-2.6.17.13/$PATH/usb-serial.c: serial_ioctl - port 0, cmd 0x5401
        /linux-2.6.17.13/$PATH/usb-serial.c: serial_ioctl - port 0, cmd 0x5402
        /linux-2.6.17.13/$PATH/usb-serial.c: serial_set_termios - port 0
        /linux-2.6.17.13/$PATH/usb-serial.c: serial_ioctl - port 0, cmd 0x5401
        /linux-2.6.17.13/$PATH/usb-serial.c: serial_ioctl - port 0, cmd 0x540b
        /linux-2.6.17.13/$PATH/usb-serial.c: serial_ioctl - port 0, cmd 0x5401
        /linux-2.6.17.13/$PATH/usb-serial.c: serial_ioctl - port 0, cmd 0x5401
        /linux-2.6.17.13/$PATH/usb-serial.c: serial_ioctl - port 0, cmd 0x5402
        /linux-2.6.17.13/$PATH/usb-serial.c: serial_set_termios - port 0
        /linux-2.6.17.13/$PATH/usb-serial.c: serial_ioctl - port 0, cmd 0x5401
        /linux-2.6.17.13/$PATH/usb-serial.c: serial_ioctl - port 0, cmd 0x5402
        /linux-2.6.17.13/$PATH/usb-serial.c: serial_set_termios - port 0
        /linux-2.6.17.13/$PATH/usb-serial.c: serial_ioctl - port 0, cmd 0x5401
        /linux-2.6.17.13/$PATH/usb-serial.c: serial_write - port 0, 1 byte(s)
        /linux-2.6.17.13/$PATH/generic.c: usb_serial_generic_write - port 0
        generic ttyUSB0: usb_serial_generic_write - length = 1, data = 0d 
        /linux-2.6.17.13/$PATH/generic.c: 
usb_serial_generic_write_bulk_callback - port 0
        /linux-2.6.17.13/$PATH/usb-serial.c: usb_serial_port_softint - port 0
        /linux-2.6.17.13/$PATH/usb-serial.c: usb_serial_port_softint - port 0
        /linux-2.6.17.13/$PATH/usb-serial.c: serial_write - port 0, 1 byte(s)
        /linux-2.6.17.13/$PATH/generic.c: usb_serial_generic_write - port 0
        generic ttyUSB0: usb_serial_generic_write - length = 1, data = 41 
        /linux-2.6.17.13/$PATH/usb-serial.c: serial_write - port 0, 1 byte(s)
        /linux-2.6.17.13/$PATH/generic.c: usb_serial_generic_write - port 0
        /linux-2.6.17.13/$PATH/generic.c: usb_serial_generic_write - already 
writing
# minicom freezes at this point forever....... 
#######################################

# Now I kill -KILL minicom 
###########################################################
        /linux-2.6.17.13/$PATH/usb-serial.c: serial_close - port 0
        /linux-2.6.17.13/$PATH/generic.c: usb_serial_generic_close - port 0
        /linux-2.6.17.13/$PATH/generic.c: generic_cleanup - port 0
        /linux-2.6.17.13/$PATH/generic.c: 
usb_serial_generic_write_bulk_callback - port 0
        /linux-2.6.17.13/$PATH/generic.c: 
usb_serial_generic_write_bulk_callback - nonzero write bulk status received: -2
        /linux-2.6.17.13/$PATH/generic.c: usb_serial_generic_read_bulk_callback 
- port 0
        /linux-2.6.17.13/$PATH/generic.c: usb_serial_generic_read_bulk_callback 
- nonzero read bulk status received: -2
######################################################################################

I suspect that this device is utter cheapware and does as little as possible --
if anything at all.  For example its Name, Manufacturer and Serial are all NULL.

On the other hand, it sais
              bInterfaceProtocol      1 AT-commands (v.25ter)
and on the serial part of the cable, I've attached a modem. Could this be a sign
of connection?

Can anyone help me go further with it?
For example, I can't find where we set `write_urb_busy` to 0.
Perhaps we should just send the data and assume it got there without
any confirmation (?)

(and BTW, should we add 9720 as a recognized ProductID for Alcor?)

Thanks,

jf.


-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys -- and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
Linux-usb-users@lists.sourceforge.net
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-users

Reply via email to