title: How to solve error java.io.IOException: Input/output error in nativeavailable for Serial Communication?
body: <p>I have Arm processor which is AllWinner A13 ,RAM- 512mb, and OS- Linaro 13.01 Ubuntu (means debian). Now i m making Serial Communication program for /dev/ttyS0. i made simple program for Two Way Serial Communication in java with netbeans. In my processor i short rx-tx of ttyS0 for loop back coonection checking. Means what ever i send through Serial port that i get return back. but i get error. i installed openjdk-7, librxtx-java on my processor. my code and error is below. If any have idea or solution then please suggest to me.</p>
  
  <pre><code>package serialcomm_linaro;
  
  
  import gnu.io.CommPort;
  import gnu.io.CommPortIdentifier;
  import gnu.io.SerialPort;
  
  import java.io.FileDescriptor;
  import java.io.IOException;
  import java.io.InputStream;
  import java.io.OutputStream;
  
  public class TwoWaySerialComm
  {
      public TwoWaySerialComm()
      {
          super();
      }
  
      void connect ( String portName ) throws Exception
      {
          CommPortIdentifier portIdentifier = CommPortIdentifier.getPortIdentifier(portName);
          if ( portIdentifier.isCurrentlyOwned() )
          {
              System.out.println("Error: Port is currently in use");
          }
          else
          {
              CommPort commPort = portIdentifier.open(this.getClass().getName(),2000);
  
              if ( commPort instanceof SerialPort )
              {
                  SerialPort serialPort = (SerialPort) commPort;
                  serialPort.setSerialPortParams(115200,SerialPort.DATABITS_8,SerialPort.STOPBITS_1,SerialPort.PARITY_NONE);
  
                  InputStream in = serialPort.getInputStream();
                  OutputStream out = serialPort.getOutputStream();
  
                  (new Thread(new SerialReader(in))).start();
                  (new Thread(new SerialWriter(out))).start();
  
              }
              else
              {
                  System.out.println("Error: Only serial ports are handled by this example.");
              }
          }     
      }
  
      /** */
      public static class SerialReader implements Runnable 
      {
          InputStream in;
  
          public SerialReader ( InputStream in )
          {
              this.in = in;
          }
  
          public void run ()
          {
              byte[] buffer = new byte[1024];
              int len = -1;
              try
              {
                  while ( ( len = this.in.read(buffer)) &gt; -1 )
                  {
                      System.out.print(new String(buffer,0,len));
                  }
              }
              catch ( IOException e )
              {
                  e.printStackTrace();
              }            
          }
      }
  
      /** */
      public static class SerialWriter implements Runnable 
      {
          OutputStream out;
  
          public SerialWriter ( OutputStream out )
          {
              this.out = out;
          }
  
          public void run ()
          {
              try
              {                
                  int c = 0;
                  while ( ( c = System.in.read()) &gt; -1 )
                  {
                      this.out.write(c);
                  }                
              }
              catch ( IOException e )
              {
                  e.printStackTrace();
              }            
          }
      }
  
      public static void main ( String[] args )
      {
          try
          {
              (new TwoWaySerialComm()).connect("/dev/ttyS0");
          }
          catch ( Exception e )
          {
              // TODO Auto-generated catch block
              e.printStackTrace();
          }
      }
  }
  </code></pre>
  
  <p>my out is below . In this out i just send 123 and i get return back 23 first and then 1111... more time, and then errore. Instead of 111111.... i want only return back 123.</p>
  
  <pre><code>enter code here
  RXTX Warning:  Removing stale lock file. /var/lock/LCK..ttyS0
  123
  23
  111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
  
  
  
  java.io.IOExcepti on: Input/output error in nativeavailable
          at gnu.io.RXTXPort.nativeavailable(Native Method)
          at gnu.io.RXTXPort$SerialInputStream.read(RXTXPort.java:1429)
          at gnu.io.RXTXPort$SerialInputStream.read(RXTXPort.java:1341)
          at serialcomm_linaro.TwoWaySerialComm$SerialReader.run(TwoWaySerialComm.java:66)
          at java.lang.Thread.run(Thread.java:722)
  </code></pre>