How do I get Java to use the serial port in Linux?

20,544

Solution 1

I know this is an old question but I have created a Java package and native library to allow serial port read and write, currently in synchronous mode only.

It's open source and available on GitHub:

j232 - The Java source code

libj232 - j232's native library.

The wiki page is here.

Note this is a Linux only package and library.

Solution 2

Make sure that you are using a user with permissions to access the serial ports. Some distributions put the serial ports in the uucp group, so make sure that the user belongs to that group.

Solution 3

We've been using the SerialIO libraries for Java serial communications on both Windows and Linux for several years now with great results (and no, I don't work for them :-)):

http://serialio.com/products/serialport/serialport.php

The libraries do not autodetect the available serial ports on Linux though - you have to manually configure them.

Solution 4

It's been a while since I've done this. I remember that you can't just open /dev/ttyS0 as a file and I/O to it.

I remember having the same problem with Sun IO jars also.

The solution I remember settling on was to create a small command-line program in C that echoed stdin to the serial port and serial port in to stdout. Then, I launched this program from my java process. I don't have the code but there are lots of examples on the web for c programs that write to linux serial ports.

Share:
20,544
Phillip Gibb
Author by

Phillip Gibb

Java Programmer and Team Manager fascinated with Film Making, Ultra Endurance activities

Updated on July 09, 2022

Comments

  • Phillip Gibb
    Phillip Gibb almost 2 years

    We make use of a java application that manages a pinpad via the serial port. This works perfectly on windows with the Sun Comm.jar, the supplied dll and the properties file.

    Now we are attempting to use this solution on Linux (actually it does run on various other flavours of linux out in the field) - with Ubuntu server mode.

    After much attempts - blood, sweat and almost tears we have this scenario:

    Java version 1.4.2_17 Linux - Ubuntu Comm libs - Comm3 supplied by sun with the default driver specified

    An external comm test shows the comm ports: /dev/ttyS0 and /dev/ttyS1 But the java application says unable to open port /dev/ttyS1

    (using the RXRT files produces invalid port errors)

    Has anyone been able to use java 1.4.2 on linux for serial port communication and found a solution that I could apply in my scenario?

    greatly appreciated

    Phill

  • Phillip Gibb
    Phillip Gibb about 15 years
    hmmm, I have offered a solution to the guy in New Zealand who are looking for help on this. But I need to wait for tomorrow (11 hrs ahead) to see if they get anywhere. Then I will place my finding here. thanks man
  • David Hofmann
    David Hofmann about 11 years
    Hi tony, I am trying to configure SerialIO in Ubuntu. I get the native lib loaded correctly for my ubuntu 64bit but when I try to open a port I get javax.comm.NoSuchPortException: /dev/ttyUSB0: not found in port list. but the device IS there and it's not used by any other app. Any help will be greately appreciated. Maybe I can make a question that you can answer? Thanks!
  • tonys
    tonys about 11 years
    @DavidHofmann Oooof ... it's been a couple of years since I worked on that stuff - not sure I even have the code anymore :-(. I do remember that exact problem though and I think I had to manually add /dev/tty/USB0: to a config file that I think mapped the USB port to a serial port. Not much help I'm afraid :-(. I'll hunt around and see if I can dig out the original code.