This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

OMAPL-137 does not recognize ttyACM dev

Hi,

I am working with a based-OMAPL137 Spectrum Digital board, with its USB ports in particular. I want to connect a device through the USB port (USB A, no microUSB or OTG)  that it is recognized as a ttyACM device on a PC Linux host. So, my goal is extrapolate that behaviour to OMAPL137 file-system. I am using DaVinci-PSP-SDK-03.20.00.14 distribution, with the 2.6.33 kernel version. I have done modifications at the kernel configuration by means the menuconfig command. Basically, I have followed the instructions located at the documentation kernel (acm.txt). That file details that three modules are needed to use ACM devices:

    usbcore.ko
    uhci-hcd.ko ohci-hcd.ko or ehci-hcd.ko
    cdc-acm.ko

Making this operation, the result is the same. I can not see the ttyACM device.

Moreover, when I load the modules written above, I get the next messages (see below). It seems like a couple of messages missing, I mean, messages like "acm.c: probing config 1" or/and "ttyACM0: USB ACM device" or something like that.

root@172.16.3.100:/dev# usb 1-1: new full speed USB device using ohci and address 2
usb 1-1: New USB device found, idVendor=04b4, idProduct=f232
usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=128
usb 1-1: Product: USBUART
usb 1-1: Manufacturer: Cypress Semiconductor
usb 1-1: SerialNumber: 151F06C8000E1410

Also, a set of messages are displayed when I disconnect and connect the device:


T:  Bus=02 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  3 Spd=12  MxCh= 0
D:  Ver= 2.00 Cls=02(comm.) Sub=00 Prot=00 MxPS= 8 #Cfgs=  1
P:  Vendor=04b4 ProdID=f232 Rev= 0.01
S:  Manufacturer=Cypress Semiconductor
S:  Product=USBUART
S:  SerialNumber=151F06C8000E1410
C:* #Ifs= 2 Cfg#= 1 Atr=c0 MxPwr=100mA
I:* If#= 0 Alt= 0 #EPs= 1 Cls=02(comm.) Sub=02 Prot=00 Driver=(none)
E:  Ad=81(I) Atr=03(Int.) MxPS=   8 Ivl=10ms
I:* If#= 1 Alt= 0 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=(none) --> should be ACM if everything was OK!!
E:  Ad=82(I) Atr=02(Bulk) MxPS=  64 Ivl=0ms
E:  Ad=03(O) Atr=02(Bulk) MxPS=  64 Ivl=0ms

What can I do to see the device under /dev folder? Any suggestion or advise would be appreciated! Thanks in advance!

Regards

Óscar

  • No experience with that device. Google gives up a little. The VID and PID corresponds to a Cypress cy3240 USB-I2C bridge. It appears that device can be reprogrammed to be a USB-UART adaptor. I would guess that it is custom code implementing a standard ACM device. The Linux ACM driver does not include the VID=0x04b4 and PID=0xf232. The driver could eb modified to include those IDs. Problem is that the driver might need some capability flags. If the Linux PC driver recognizes your device, then it's driver must have been patched. Can you get the source for the PC Linux ACM driver?

  • Solved problem!

    Finally, I had to add some characteristics of the device like vendor ID and product ID at the kernel file structure. Specifically, I made that changes at /kernelroot/drivers/usb/class/cdc-acm.c. Also, the ACM option has to be enabled at the kernel configuration.

    When I plugged the device on the SpectrumDigital board, I got the following messages:

    usb 2-1: New USB device found, idVendor=04b4, idProduct=f232
    usb 2-1: New USB device strings: Mfr=1, Product=2, SerialNumber=128
    usb 2-1: Product: USBUART
    usb 2-1: Manufacturer: Cypress Semiconductor
    usb 2-1: SerialNumber: 151F06C8000E1410
    cdc_acm 2-1:1.0: This device cannot do calls on its own. It is not a modem.
    cdc_acm 2-1:1.0: ttyACM0: USB ACM device

    And right now, I already see ttyACM0 device under /dev folder. Thanks for your tips Norman, which were very useful!

    Regards

    Óscar