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)


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=0x4348 product=0x5523” 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 !

36 Replies to “How to enable USB-Serial Port adapter (RS-232) in Ubuntu Linux”

  1. 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 jberry@geifuelcells.com 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…

  2. 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

  3. 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

  4. 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

  5. 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!

  6. 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.

  7. 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.

  8. 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!

  9. 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.

  10. 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?

  11. 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 !!

  12. 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= 0x2104
    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 0x82 is Bulk; changing to Interrupt
    [ 297.317317] usb 4-2: config 1 interface 0 altsetting 0 endpoint 0x2 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

  13. 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.

  14. 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.

  15. 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.

  16. 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.”

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

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

  18. @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

  19. Amazing info.

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

  20. Thanks very much… I really needed it… please some more of this fine tricks.. much appreciated.

  21. “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.

Comments are closed.