BlinkyTape not identifying as TTY device on Linux

Hello friends (especially Ethan and Matt)! I've been happily using my BlinkyTape for some time now, connected to a raspberry pi. I wrote new firmware for it that stores several patterns on the tape, and sending a serial command over the USB TTY connection triggers the selected pattern to play.

This is all part of a more epic home automation/intelligent assistant project, but I'll fill you all in on the details of that later. Anyways, I recently moved the system from a Raspberry Pi to an UDOO (http://shop.udoo.org/usa/product/udoo-quad.html) board running Ubuntu. When I plug the BlinkyTape into the UDOO, it's clearly detected (see dmsg output below), but it appears to be detected as an HID instead of a USB Serial device. This is odd, because when I plug it into a Windows machine, or a raspberry pi (running raspbian) it correctly identifies as USB serial and I can send it serial commands. Since it isn't detected as a USB serial device, a /dev/tty* device is not associated with it, and I can't send serial commands. Do you have any idea why this might be happening!? Thanks!

dmsg Output:
[ 188.417822] usb 2-1.2: new full speed USB device number 11 using fsl-ehci
[ 188.538518] input: Arduino LLC Arduino Leonardo as /devices/platform/fsl-ehci.1/usb2/2-1/2-1.2/2-1.2:1.2/input/input4
[ 188.541804] generic-usb 0003:2341:8036.0007: input,hidraw0: USB HID v1.01 Mouse [Arduino LLC Arduino Leonardo] on usb-fsl-ehci.1-1.2/input2

-Jeremy

Comments

  • Hey Jeremy!

    The HID part is reasonable, it should show up as a USB composite device with both a HID and CDC ACM device (the same as the Leonardo).

    Does an Arduino Leonardo (or other Atmega32u4 based device) work on this machine? If the BlinkyTape is working correctly on other systems, my guess would be that the UDOO doesn't have the CDC ACM driver compiled correctly.

    Cheers,
    Matt
  • Good idea, Matt! I'll hook up a leonardo tonight to see what happens, and will report back. In the meanwhile, if I do need to compile the CDC ACM driver, are you familiar with the steps I would need to take to do that?
  • Blargh... Indeed, I'm following those directions, and the CDC USB driver is not enabled by default. I was able to recompile the kernel with the driver enabled, but when I run "make -j5 tools" (on the download from ftp://ftp.denx.de/pub/u-boot/u-boot-2014.04.tar.bz2) to build the u-boot tools, it says "Makefile:479: *** 'System not configured - see README'. Stop." I think I need to tell it that the board is udoo (which is listed in board folder), but I can't decipher the README instructions regarding how you specify the board... I'll keep working on trying to understand it.
  • Oy, hopefully they will add that module to their default install in the future, it seems like it fits their target market.
  • Got it working! Yay! Here are my exact steps, which were slightly different from the linked steps:

    sudo apt-get install build-essential git libncurses5-dev

    git clone https://github.com/UDOOboard/U-Boot_Unico-2013.git
    cd U-Boot_Unico-2013/
    make -j5 tools
    sudo cp tools/mkimage /usr/local/bin

    cd /usr/src/
    sudo git clone https://github.com/UDOOboard/Kernel_Unico kernel
    cd kernel
    sudo make ARCH=arm UDOO_defconfig
    sudo make ARCH=arm menuconfig
    Device Drivers —> USB support –> USB Modem (CDC ACM) support -> Then Exit and Save when asked.
    sudo make
    sudo make modules_install
    sudo make install
    sudo make -j5 uImage
    sudo mv /boot/uImage /boot/uImage_backup
    sudo cp arch/arm/boot/uImage /boot/
    sudo reboot
    modprobe cdc_acm
    sudo vim /etc/modules
    add "cdc_acm" no quotes.
    sudo usermod -a -G dialout ubuntu
    logout and back in
  • Hi Guys,

    I'm having a similar problem on RHEL 6. The BlinkyTape is recognised by RHEL when it's plugged in, but doesn't create a TTY device:

    Aug 21 08:48:46 A082541 kernel: usb 5-1: new full speed USB device number 7 using uhci_hcd
    Aug 21 08:48:46 A082541 kernel: usb 5-1: New USB device found, idVendor=1d50, idProduct=605e
    Aug 21 08:48:46 A082541 kernel: usb 5-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
    Aug 21 08:48:46 A082541 kernel: usb 5-1: Product: BlinkyTape
    Aug 21 08:48:46 A082541 kernel: usb 5-1: Manufacturer: Blinkinlabs
    Aug 21 08:48:46 A082541 kernel: usb 5-1: configuration #1 chosen from 1 choice
    Aug 21 08:48:46 A082541 kernel: input: Blinkinlabs BlinkyTape as /devices/pci0000:00/0000:00:1a.2/usb5/5-1/5-1:1.2/input/input15
    Aug 21 08:48:46 A082541 kernel: generic-usb 0003:1D50:605E.0008: input,hidraw0: USB HID v1.01 Mouse [Blinkinlabs BlinkyTape ] on usb-0000:00:1a.2-1/input2

    According to Red Hat, the CDC-ACM driver stack is included in the kernel from 2.6.31 and I'm on 2.6.32 so that shouldn't be the issue. Any ideas?

    Thanx - Mark
  • Hey Mark,

    Hmm - this looks a bit tricky. I see a forum page where there's some discussion about RHEL and Arduino Leonard, which is very similar to our board here: http://forum.arduino.cc/index.php/topic,151276.0.html and there's also some buzz about an rxtx package update problem on RHEL...

    Several of the suggestions on that forum page seem pretty good (apparently it may be blacklisted, or one user suggests trying to manually create the ACM port) but I'm not sure it worked for that user.

    Sorry I don't have a guaranteed answer for you (not many users on RHEL) but please let us know what you find.
  • Hi Threeethan,

    Thanks for the response.

    I made a little more progress on the issue after I posted yesterday. I found that the CDC-ACM driver stack wasn't loaded. I loaded it with modprobe but that didn't help. The tty device still wasn't created when the BlinkyTape was plugged in. So then I tried a different machine (RHEL 7). That worked straight away without any additional intervention!?! So, I think the issue may be specific to my RHEL 6 machine rather than some generic in RHEL 6.

    For now I think I'll stick with RHEL 7 (or, better still, my Raspberry Pi :-).

    Thanx - Mark
  • Hey guys,

    I have been trying to get a laser sensor working on UDOO, i dont know why but my UDOO is not creating a device node /dev/ttyUSB* for it. I have compiled the kernel with cdc_acm support enabled, have tried loading the usbserial module again and again but to no avail. I am running ubuntu 13.04 on my UDOO, as ROS has support for ubuntu raring only at the moment. What do i do guys? .. please help
  • Hey Asusrog - on some versions of Ubuntu, the "modemmanager" interferes, and you can remove it with: "sudo aptitude remove modemmanager"

    If that doesn't do it, look through sciguy's instructions and make sure that you've done the equivalent of each (i.e. making sure you're building the modules, modprobing them and setting them up to auto-load, etc.)

    Unfortunately we don't have a Udoo here for testing, so we're very interested to hear about what happens - keep us posted.
  • Thank you for your reply Threeethan. I have tried removing the modem manager and followed the exact steps listed by sciguy. Still havent cracked the problem.
  • Hmm, sorry to hear that - unfortunately without an UDOO board it's really hard to tell what's going on. Are you getting the same messages as sciguy?
  • An FYI to anybody who stumbles upon this...
    I recently reimaged my UDOO with the latest UDOObuntu release. The kernel now includes CDC ACM support by default. You'll still need to run "sudo usermod -a -G dialout ubuntu". Then logout and back in. But that's it!
Sign In or Register to comment.