linux - FT232 USB-Serial not usable with deamon

01
2014-07
  • Athanase

    I am trying to use an USB-Serial converter with a program (a deamon) that is launched at startup on a embedded board (Odroid-XU). The deamon does not work since it fails to open the serial port /dev/ttyUSB0 reporting that the port is already in use (Device or resource busy).

    Thus my first idea was that something uses the serial port shortly after the boot. BUT when I unplug and plug back the USB-Serial adapter, I have the same issue: I cannot use it for a few seconds. I checked with an oscilloscope the output of the TX port and it appears that it receives commands after being plugged or after the boot.

    So what is happening here ? And what would be the solution to avoid that ?

  • Answers
  • Athanase

    I solved my problem using sudo lsof /dev/tty* to find out what process was using the serial port. Then simply removing modemmanager from the boot sequence solved my problem. BTW, I found the answer I needed a bit too late. I should spend more time on superuser.


  • Related Question

    How can I login to Ubuntu using a USB serial port?
  • Questioner

    How can enable remote terminal login into Ubuntu 9.10 using a USB serial port?

    I created device /dev/ttyUSB0 and i want to allow logins using Hyper-Terminal.

    I found some resources but they are related to real hardware rs232 ports. I can't find any information about USB converter.

    So far I have established connection between that USB-serial port and my laptop. I can send text to the port (cp sometext.txt /dev/ttyUSB0) and read it using hyperterminal.

    What do I need to do to enable logins on this port?


  • Related Answers
  • quack quixote

    See the Ubuntu Serial Console HowTo. You'll need to adapt it for your hardware -- instead of ttyS0, which is the first hardware serial port, you'll need to use ttyUSB0. An example of this is below.


    At minimum, you need to configure upstart to start a getty on that port.

    1. Create /etc/init/ttyUSB0.conf and paste the following into it:

      # ttyUSB0 - getty on USB serial port
      #
      # This service maintains a getty on ttyUSB0 from the point the system is
      # started until it is shut down again.
      
      
      start on stopped rc RUNLEVEL=[2345]
      stop on runlevel [!2345]
      
      
      respawn
      exec /sbin/getty -L 115200 ttyUSB0 vt102
      
    2. Start the getty:

      sudo start ttyUSB0
      

    Older Ubuntu versions and distributions that don't use upstart do this by adding a line in /etc/inittab.

    This doesn't consider changes to the bootloader configuration to allow Grub to talk to the serial port; refer to the HowTo for details. I'm not sure if Grub can talk to a USB serial port or if that's limited to hardware ports.

  • Like

    Better approach in Ubuntu 12.04:

    start on (tty-device-added ttyUSB0)
    stop on (runlevel [!2345] or tty-device-removed ttyUSB0)
    
    respawn
    exec /sbin/getty -L 115200 ttyUSB0 vt102
    
    • starting getty when hot plugging in ttyUSB0
    • stop getty when hot plugging out ttyUSB0