How to enable USB-Serial Port adapter (RS-232) in Ubuntu Linux

Though some might argue that Serial port are things in the past, it is still the most popular port for those who are into electronic DIY. Building electronic device with serial port interface is cheaper than buiding one that uses USB. That is the reason why people still sell USB-Serial adapter to those electronic DIY enthusiast.

Here’s how to enable USB-Serial port adapter in Ubuntu Linux (with credit to Freeman from RepRap forum)


Linux DIY USB Serial Port Adaptor

First plug in the USB-Serial Port adaptor to one of your USB port. Wait for a couple of second, then run “dmesg”. You should see these message at the end of dmesg output.


usb 1-1: new full speed USB device using uhci_and address 2
usb 1-1: configuration #1 chosen from 1 choice

After that, unplug the device and type “lsusb”. You will see a list of output similar to this.

Bus 003 Device 001: ID 0000:0000
Bus 002 Device 007: ID 03f0:4f11 Hewlett-Packard
Bus 002 Device 006: ID 05e3:1205 Genesys Logic, Inc. Afilias Optical Mouse H3003
Bus 002 Device 004: ID 15d9:0a33

Plug in the USB-Serial Port converter back, and run “lsusb” again, and you shall see an additional line, like this.


Bus 003 Device 001: ID 0000:0000
Bus 002 Device 007: ID 03f0:4f11 Hewlett-Packard
Bus 001 Device 002: ID 4348:5523 --- --- --- (notice the additional line!)
Bus 002 Device 006: ID 05e3:1205 Genesys Logic, Inc. Afilias Optical Mouse H3003
Bus 002 Device 004: ID 15d9:0a33

Now we know the vendor id and the product id of the USB-Serial Port converter, this will enable us to load the linux kernel module “usbserial” to activate the device, like this :


sudo modprobe usbserial vendor=0x4348 product=0x5523

Run “dmesg” again and you shall see lines similar like this :

usbserial_generic 1-1:1.0: generic converter detected
usb 1-1: generic converter now attached to ttyUSB0
usbcore: registered new interface driver usbserial_generic

As you can see, the new serial port device is mapped to /dev/ttyUSB0. You can instruct Ubuntu to load this module automatically by include the line : “usbserial vendor=0×4348 product=0×5523″ inside “/etc/modules” file.

Bonus: What application benefits from usb-serial port adaptor?
For starters, there are modems which uses RS-232 serial port. Some home-made devices includes Infrared remote control which uses LIRC which also depends on the serial port.

I use the adaptor to hook up my morse keyer in order to send morse code through the internet using Xchat CWIRC plugin. The site has an excellent circuit diagram to build such interface.

You can see my home-made morse code oscillator here : My Homemade Morse Code Practice Oscillator

Where can I get USB to Serial port converter?
You can get it from your local computer stores or order it online !

44 thoughts on “How to enable USB-Serial Port adapter (RS-232) in Ubuntu Linux

  1. “How to enable USB-Serial Port adapter (RS-232) in Ubuntu Linux” is very well written and enabled me (complete newcomer) to get COM2 recognised by the SeaClear.exe navigation program running under wine. Unfortunately the prog. is not receiving and NMEA input from my GPS, and any advice on what I should do next would be appreciated. Other problem – using nano I added the “usbserial vendor…” line to the “/etc/modules” file, but couldn’t work out how to save the addition. Could you help, please? Thanks a million.

  2. Amazing info.

    I was wondering if somebody could tell me how to map ttyusb# to a ttys# and make it persistant.

  3. @Toby

    I’m assuming your talking about under wine?
    If so it’s very easy, add the following to wine.conf

    [serialports]
    Com1=/dev/ttyUSB0

    Obviously you can change Com1 to 2 3 4 etc

  4. Thanks! Your clear instructions were easy to follow, and they work!

    So what is the right way to make this happen on every boot?

  5. the correct way is written on the blog post, as follows:

    “As you can see, the new serial port device is mapped to /dev/ttyUSB0. You can instruct Ubuntu to load this module automatically by include the line : “usbserial vendor=0×4348 product=0×5523? inside “/etc/modules” file.”

  6. Thank you very much!

    What could be the substitute of ‘usbserial’ in ubuntu 9.04?
    this module is no longer available from the command shell.

  7. George, usbserial is not supposed to be run from the command shell. rather, it should be included in the /etc/modules file, read the article slowly and carefully.

  8. hope someone can help me – how can one statically assign usb serial so they map to the ttyUSBX everytime. i have 4 of these usb serial dongles and I have configured ser2net for specific tcp port to ttyUSBX (so i can telnet to the console of switches)… but once i restart PC; for eg usb serial dongle 1 which is ttyUSB0 may on next reboot may become ttyUSB1 and thus when i telnet to that port actually have consoled to another unit (as ser2net config file maps specific TCP port to ttyUSB). thanks for your help in advance.

  9. I’m having trouble configuring arduinoBT
    I tried to do the same steps that this site but I had no success.
    obs: I’m using Ubuntu 4.10 LTS 32bits
    and the following error appears:
    ubuntu32bits@ubuntu32bits-laptop:~$ lsusb
    Bus 008 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
    Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
    Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
    Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
    Bus 004 Device 003: ID 03eb:2104 Atmel Corp. AVR ISP mkII
    Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
    Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
    Bus 002 Device 003: ID 03f0:3d17 Hewlett-Packard LaserJet P1005
    Bus 002 Device 002: ID 5986:0137 Acer, Inc
    Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
    Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

    command:sudo modprobe usbserial Atmel = 0x03eb RS232= 0×2104
    FATAL: Error inserting usbserial (/lib/modules/2.6.32-24-generic/kernel/drivers/usb/serial/usbserial.ko): Unknown symbol in module, or unknown parameter (see dmesg)
    dmesg
    17308] usb 4-2: config 1 interface 0 altsetting 0 endpoint 0×82 is Bulk; changing to Interrupt
    [ 297.317317] usb 4-2: config 1 interface 0 altsetting 0 endpoint 0×2 is Bulk; changing to Interrupt
    [ 297.344460] usb 4-2: configuration #1 chosen from 1 choice
    [ 1332.091589] usbserial: Unknown parameter `Atmel’
    [ 1492.323389] usbserial: Unknown parameter `Atmel’
    [ 1511.087014] usbserial: Unknown parameter `Atmel’
    [ 1726.664078] usbserial: Unknown parameter `Atmel’
    [ 1745.794821] usbserial: Unknown parameter `Atmel’
    [ 1789.904073] usb 2-1: new high speed USB device using ehci_hcd and address 3
    [ 1790.056180] usb 2-1: configuration #1 chosen from 1 choice

  10. Hello guys ,
    the information here is indeed really useful and i wouldnt have wasted a day looking for drivers , had i known it would work so easily .. However my question is that , I am trying to connect a zigbee through this serial port , so can i directly write /dev/ttyUSB0 instead of the file for the Serial (i.e. /dev/ttyS0
    or do i need to convert it somehow ?

    i am a beginner to Linux too so please forgive me if my questions are stupid.

    Looking forward for some help !!

  11. Many thanks! It worked right off! Also with libelium’s help to add X-CTU com port. I have been trying to get X-CTU to see my USB com to configure XBee mod for days. Now I finally can get back to work. Nice!

    I sometimes need to run 2 USB serial coms. Both being from the same manufacturer, they both show the same address. Even though they are USB0 and USB1 they both have the same numbers so get the same address. Any way to change address of one so both work simultaneously?

  12. If you’d like to take your videos along with you anywhere, make sure you first convert them to 3GP format so that they can be read on handheld devices including Mp3 players, iPhone and other cellphones

    Plato Video to 3GP Converter is software enabling you to convert your avi, mpeg, flv 3gp, rm, divx, xvid, wmv, asf, mov, qt, swf to 3GP format. It supports batch conversion and likewise provides the possible ways to convert merely a element of your video by setting a start point and a breakpoint around the source file.

    You can even customize the output quality of your 3GP file. Observe that the chosen parameters might be unspent in an account for future use.

  13. Hi, I’m a newcomer and my eeepc doesn’t recognize when I plug my etrex (garmin gps) to the pc via a serial usb converter. So I followed the instructions but I do not know the meaning of the last command:

    As you can see, the new serial port device is mapped to /dev/ttyUSB0. You can instruct Ubuntu to load this module automatically by include the line : “usbserial vendor=0×4348 product=0×5523? inside “/etc/modules” file.

    what should I exactly type? Sorry if the question may sound silly, but I’m really a newcomer and don’t know how to get it work. Thank you very much for any answer!

  14. I ran dmesg | grep usb to get the usb portion of the listing making it easier to determine if the adapter was connected. The usb portion of the dmesg listing was not at the end but stuck somewhere in the middle of the output. I am running Ubuntu 8.04. Got the adapter connected. Thanks.

  15. I haven’t tested it yet but hopefully this will allow me to program my HP 48GX calculator from Ubuntu. The calculator was made long before USB and many modern computers like my netbook are no longer equipped with serial ports. For those of us who use Linux, instructions like these are invaluable! Thanks for taking the time to write up this novice-friendly guide.

  16. Mypapit

    Wow! Thank you so much for the sharing this info. I’m just a linux layman but I use it exclusively and sometimes have trouble with other people’s explanations of commands via the terminal.

    Your’s got my serial apt up and running within minutes!
    Kudos my friend. Thanks again!

  17. Thanks to you Mypapit, I can run my RS232 serial microchip picstart programmer under linux using mplabx and usb.
    My old Windows ME laptop finally died and I am resisting the wine solution.
    Cheers Lester

  18. Any help is greatly appreciate on my situation. I’m running RHEL open source and I have to use two usb 2 seral adapters. The first one I was able to configure but the second I can’t. I’m running a virtual machine of windows XP, certain software requirements only run on XP, and everytime I plug in the second adapter I get this message:

    USB redirection error: Could not auto-redirect USB Device at 3-16: usbredirhost error: resetting device: -5

  19. Hola MyPapit,
    I am trying to interface an Icom AIS receiver with my Ubuntu 12.04 controlled plotter. The plotter program is OpenCPN.

    Your instructions are helpful and clear, but am still having problem. Apparently Ubuntu is recognizing the USB to RS232 converter. Using your suggested command lsusb, I see the device. I’m just not getting a data stream from the Icom. So I still don’t know if the problem is in the hardware or the software.

    Can you offer any suggestions?

    I am N7NST and still have active license but inactive for years now. Writing to you from Puerto Armuelles, Panama and headed for Ecuador.
    73 Jim

  20. Hello to anyone:

    Trying to communicate to my Microchip dev board with REDHAT LINUX via USB to RS232 port.

    Wrote C code to open port, read, and write. Having issues with writing to the USB port.

    Can someone help with an email to [email protected] if you have a link to some other code that has worked with REDHAT linux to just open USB port for serial text communcations. It so simple, it should work.

    Thank you so very much…

  21. I just couldn’t depart your site before suggesting that I actually enjoyed the standard information a person provide for your visitors? Is gonna be back often in order to check up on new posts cgcbegfedbaeddbk

  22. I’m looking to try SLIP with a my RS232 board (192.168.5.2) and a Win7x64 machine (192.168.5.1).

    I have a PL2303HX based usb/rs232 cable (VID067B/PID2303), which I understand is not only winx64 compatible but also works under linux..

    Plugging it into an Ubuntu 13.04 x86 VM I get the following after typing dmesg:

    [ 629.088155] usb 2-2: new full-speed USB device number 3 using ohci_hcd
    [ 629.542640] usb 2-2: New USB device found, idVendor=067b, idProduct=2303
    [ 629.542642] usb 2-2: New USB device strings: Mfr=1, Product=2, SerialNumber=0
    [ 629.542644] usb 2-2: Product: USB-Serial Controller
    [ 629.542645] usb 2-2: Manufacturer: Prolific Technology Inc.
    [ 629.592541] usbcore: registered new interface driver usbserial
    [ 629.592974] usbcore: registered new interface driver usbserial_generic
    [ 629.593394] usbserial: USB Serial support registered for generic
    [ 629.598196] usbcore: registered new interface driver pl2303
    [ 629.598777] usbserial: USB Serial support registered for pl2303
    [ 629.599219] pl2303 2-2:1.0: pl2303 converter detected
    [ 629.636711] usb 2-2: pl2303 converter now attached to ttyUSB0

    lsusb before:
    Bus 002 Device 002: ID 80ee:0021 VirtualBox USB Tablet
    Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
    Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

    lsusb after adds the line:
    Bus 002 Device 004: ID 067b:2303 Prolific Technology, Inc. PL2303 Serial Port

    So it seems its already attached, so I skip the:
    sudo modprobe usbserial vendor=0x067B product=0×2303 ??

    But if I try to run the SLIP I run:

    sudo apt-get install slirp
    sudo modprobe slip
    sudo slattach -p slip -s 115200 /dev/ttyUSB0 & or sudo slattach -L -s 115200 -p slip /dev/ttyUSB0
    sudo ifconfig sl0 192.168.5.1 pointopoint 192.168.5.2 up

    ifconfig -a (the serial line ip device name is “sl0″
    sl0 Link encap:Serial Line IP
    inet addr:192.168.5.1 P-t-P:192.168.5.2 Mask:255.255.255.255
    UP POINTOPOINT RUNNING NOARP MULTICAST MTU:296 Metric:1
    RX packets:0 errors:0 dropped:0 overruns:0 frame:0
    TX packets:274 errors:0 dropped:0 overruns:0 carrier:0
    collisions:0 txqueuelen:10
    RX bytes:0 (0.0 B) TX bytes:23016 (23.0 KB)

    ?? But the Mask shows 255.255.255.255 ??

    However when I try to ping it, I get no response:
    ping 192.168.5.2

    On the embedded side, I never see receive ANY uart data from ubuntu. Any suggestions?

  23. Pretty portion of content. I just stumbled upon your web site and in accession capital to assert that I acquire actually enjoyed account your blog posts. Any way I will be subscribing in your augment or even I fulfillment you access constantly quickly. defdbbkadcedgfbe

  24. I am using putty i followed all the instruction but it is given me the error

    PUTTY FATAL ERROR
    ———————————
    Unable to open connection to:
    Unable to open serial port

  25. carl abou jaoude,
    You may need to add
    sudo chmod 666 /dev/ttyUSB0
    to let putty work with the device, I needed to do this with CuteCom to make it work. It would see the usb device but would not let me open it until i did the chmod.

  26. Hello,

    I could USB-Serial Port adapter (RS-232) in Xubuntu. I have a python code to get data from an Agilent scope. In windows my command is like this:

    scope = agilent.Scope(port=”COM3″, baud=9600)

    However, once I replace COM3 with ttyUSB0 the following error appears:

    OSError: [Errno 2] No such file or directory: ‘ttyUSB0′

    I also used: scope = agilent.Scope(port=”/dev/ttyUSB0″, baud=9600)
    This time a permission error appears: OSError: [Errno 13] Permission denied: ‘/dev/ttyUSB0′

    I wonder what should be replaced with COM3 when I know that my usb port name in linux is ttyUSB0.

    Any help would be greatly appreciated.

    Thanks

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>