Connection under Ubuntu

George Riches's picture

I've used BT747 for several years under Windows XP and Vista. However problems with those versions of Windows are getting ever more serious, so I'm migrating to Linux (Ubuntu distribution).

Unfortunately connecting my GPS device (iBlue 747) under Linux didn't go as smoothly as I had hoped. But I've now overcome the problems, so I thought I'd describe the symptoms and the solution here in case anyone else has similar problems.

Running BT747 under linux is easy enough. I can either type sh run_j2se.sh in a terminal window or launch the program from the File Manager (e.g.Nautilus in Ubuntu), by appropriate setting of the File Manager's preferences for executable files.

But after physically connecting my GPS device via a usb port and switching it on, clicking on BT747's Connect box had no effect. The option "USB (for linux, Mac)"

In terminal window I did the following:

  • ls /dev > file1
  • Plug in GPS device
  • ls /dev > file2
  • diff file1 file2

The output showed that the kernel has recognised the GPS device and given it an identifier (ttyACM0 in my case)

So selected File---> Populate Serial Port Menu, to get BT747 to discover the name given to the serial port used for my GPS device. It was /dev/ttyACM0.

Unfortunately the owner of /dev/ttyACM0 had no read access to the port, as the output from the ls -l command showed (my userid is george)

crw-rw---- 1 root dialout 166, 0 Jan 10 11:32 /dev/ttyACM0

A temporary solution is to give the "world" read access:

sudo chmod o+rw /dev/ttyACM0

This allowed the Connect button in BT747 to work and the program to function as it did under Windows.

But that only works until I turned off the device. On turning off, /dev/ttyACM0 disappeared. When I turned the GPS device back on the world had no read access to /dev/ttyACM0 again!

However the ls -l output showed that read access was given the group to which /dev/ttyACM0 belonged. Namely dialout.

So I added my userid (george) to the dialout group by opeing a terminal window and typing

sudo usermod -a -G dialout george

The Capital G is very important!  That added george to the "dialout" group - without changing its membership of any other group. I restarted linux, to force the kernel to update its data about the groups george belonged to.

Now BT747 connects without problem

uname -aLinux machineName

uname -a
Linux machineName 4.8.0-53-generic #56~16.04.1-Ubuntu SMP Tue May 16 01:18:56 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

java -version
openjdk version "1.8.0_131"
OpenJDK Runtime Environment (build 1.8.0_131-8u131-b11-2ubuntu1.16.04.3-b11)
OpenJDK 64-Bit Server VM (build 25.131-b11, mixed mode)

BT747_2.1.11_full $ ./run_j2se.sh

./lib/rxtx-2.2pre2-bins/Linux/x86_64-unknown-linux-gnu
PATH = /home/user_4n6/bin:/home/user_4n6/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games

1382 - BT747 2.1.11 Build:BT747_mdeweerd.11.20170423174734571
1383 - Initial: 1180x575  Screen: 1920x1080 Final: 1180x575
1383 - Linux
1383 - amd64
1384 - 4.8.0-53-generic
1384 - 1.8.0_131
1384 - 64
1384 - Fehlercom.sun.java.swing.plaf.windows.WindowsLookAndFeel
Fehlercom.sun.java.swing.plaf.windows.WindowsClassicLookAndFeel
Erfolgreichcom.sun.java.swing.plaf.nimbus.NimbusLookAndFeel
javax.swing.plaf.metal.MetalLookAndFeel
javax.swing.plaf.nimbus.NimbusLookAndFeel
com.sun.java.swing.plaf.motif.MotifLookAndFeel
com.sun.java.swing.plaf.gtk.GTKLookAndFeel

26105 - Classgps.connection.GPSRxTxPort
WARNING:  RXTX Version mismatch
    Jar version = RXTX-2.2pre1
    native lib Version = RXTX-2.2pre2

When trying with WRONG 115200 this hapens...

86576 - Classgps.connection.GPSRxTxPort
86591 - Port opened
86591 - Attempting saving settings to /home/user_4n6/BT747SettingsJ2SE.pdb
86591 - Writing settings success for /home/user_4n6/BT747SettingsJ2SE.pdb

Of course that fails, h241 can only talk @38400

100841 - Classgps.connection.GPSRxTxPort
Issue when setting parameters:38400 8 1 0
gnu.io.UnsupportedCommOperationException: Invalid Parameter
    at gnu.io.RXTXPort.setSerialPortParams(RXTXPort.java:211)
    at gps.connection.GPSRxTxPort.openPort(Unknown Source)
    at gps.connection.GPSrxtx.myOpenPort(Unknown Source)
    at gps.connection.GPSrxtx.setFreeTextPortAndOpen(Unknown Source)
    at bt747.model.Controller.openFreeTextPort(Unknown Source)
    at bt747.j2se_view.BT747Main.access$300$6e36da35(Unknown Source)
    at bt747.j2se_view.BT747Main$7.actionPerformed(Unknown Source)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348)
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
    at java.awt.Component.processMouseEvent(Component.java:6533)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
    at java.awt.Component.processEvent(Component.java:6298)
    at java.awt.Container.processEvent(Container.java:2236)
    at java.awt.Component.dispatchEventImpl(Component.java:4889)
    at java.awt.Container.dispatchEventImpl(Container.java:2294)
    at java.awt.Component.dispatchEvent(Component.java:4711)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4888)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4525)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4466)
    at java.awt.Container.dispatchEventImpl(Container.java:2280)
    at java.awt.Window.dispatchEventImpl(Window.java:2746)
    at java.awt.Component.dispatchEvent(Component.java:4711)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
    at java.awt.EventQueue.access$500(EventQueue.java:97)
    at java.awt.EventQueue$3.run(EventQueue.java:709)
    at java.awt.EventQueue$3.run(EventQueue.java:703)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:90)
    at java.awt.EventQueue$4.run(EventQueue.java:731)
    at java.awt.EventQueue$4.run(EventQueue.java:729)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
Trying stopbits = 2
Issue when setting parameters:38400 8 2 0
gnu.io.UnsupportedCommOperationException: Invalid Parameter
    at gnu.io.RXTXPort.setSerialPortParams(RXTXPort.java:211)
    at gps.connection.GPSRxTxPort.openPort(Unknown Source)
    at gps.connection.GPSrxtx.myOpenPort(Unknown Source)
    at gps.connection.GPSrxtx.setFreeTextPortAndOpen(Unknown Source)
    at bt747.model.Controller.openFreeTextPort(Unknown Source)
    at bt747.j2se_view.BT747Main.access$300$6e36da35(Unknown Source)
    at bt747.j2se_view.BT747Main$7.actionPerformed(Unknown Source)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348)
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
    at java.awt.Component.processMouseEvent(Component.java:6533)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
    at java.awt.Component.processEvent(Component.java:6298)
    at java.awt.Container.processEvent(Container.java:2236)
    at java.awt.Component.dispatchEventImpl(Component.java:4889)
    at java.awt.Container.dispatchEventImpl(Container.java:2294)
    at java.awt.Component.dispatchEvent(Component.java:4711)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4888)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4525)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4466)
    at java.awt.Container.dispatchEventImpl(Container.java:2280)
    at java.awt.Window.dispatchEventImpl(Window.java:2746)
    at java.awt.Component.dispatchEvent(Component.java:4711)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
    at java.awt.EventQueue.access$500(EventQueue.java:97)
    at java.awt.EventQueue$3.run(EventQueue.java:709)
    at java.awt.EventQueue$3.run(EventQueue.java:703)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:90)
    at java.awt.EventQueue$4.run(EventQueue.java:731)
    at java.awt.EventQueue$4.run(EventQueue.java:729)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
100924 - Port opened

And the H241 FREEZES..... :-(((

I am in group dialout, and GPSbabel works like a charm reading LOGs out. But it lacks the settings... :-(((

Using the data.bin read by GPSbabel works out OK. So the only mysterious thing is the serial connection. Using Putty with ttyUSB0 @38400 works 'out of the box', BTW.

BT747_2.1.11_full $ ll /dev/ttyUSB0 ;groups
crw-rw---- 1 root dialout 188, 0 Nov 11 01:43 /dev/ttyUSB0
user adm tty uucp dialout cdrom sudo dip plugdev lpadmin sambashare

uname -aLinux machineName

uname -a
Linux machineName 4.8.0-53-generic #56~16.04.1-Ubuntu SMP Tue May 16 01:18:56 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

java -version
openjdk version "1.8.0_131"
OpenJDK Runtime Environment (build 1.8.0_131-8u131-b11-2ubuntu1.16.04.3-b11)
OpenJDK 64-Bit Server VM (build 25.131-b11, mixed mode)

BT747_2.1.11_full $ ./run_j2se.sh

./lib/rxtx-2.2pre2-bins/Linux/x86_64-unknown-linux-gnu
PATH = /home/user_4n6/bin:/home/user_4n6/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games

1382 - BT747 2.1.11 Build:BT747_mdeweerd.11.20170423174734571
1383 - Initial: 1180x575  Screen: 1920x1080 Final: 1180x575
1383 - Linux
1383 - amd64
1384 - 4.8.0-53-generic
1384 - 1.8.0_131
1384 - 64
1384 - Fehlercom.sun.java.swing.plaf.windows.WindowsLookAndFeel
Fehlercom.sun.java.swing.plaf.windows.WindowsClassicLookAndFeel
Erfolgreichcom.sun.java.swing.plaf.nimbus.NimbusLookAndFeel
javax.swing.plaf.metal.MetalLookAndFeel
javax.swing.plaf.nimbus.NimbusLookAndFeel
com.sun.java.swing.plaf.motif.MotifLookAndFeel
com.sun.java.swing.plaf.gtk.GTKLookAndFeel

26105 - Classgps.connection.GPSRxTxPort
WARNING:  RXTX Version mismatch
    Jar version = RXTX-2.2pre1
    native lib Version = RXTX-2.2pre2

When trying with WRONG 115200 this hapens...

86576 - Classgps.connection.GPSRxTxPort
86591 - Port opened
86591 - Attempting saving settings to /home/user_4n6/BT747SettingsJ2SE.pdb
86591 - Writing settings success for /home/user_4n6/BT747SettingsJ2SE.pdb

Of course that fails, h241 can only talk @38400

100841 - Classgps.connection.GPSRxTxPort
Issue when setting parameters:38400 8 1 0
gnu.io.UnsupportedCommOperationException: Invalid Parameter
    at gnu.io.RXTXPort.setSerialPortParams(RXTXPort.java:211)
    at gps.connection.GPSRxTxPort.openPort(Unknown Source)
    at gps.connection.GPSrxtx.myOpenPort(Unknown Source)
    at gps.connection.GPSrxtx.setFreeTextPortAndOpen(Unknown Source)
    at bt747.model.Controller.openFreeTextPort(Unknown Source)
    at bt747.j2se_view.BT747Main.access$300$6e36da35(Unknown Source)
    at bt747.j2se_view.BT747Main$7.actionPerformed(Unknown Source)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348)
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
    at java.awt.Component.processMouseEvent(Component.java:6533)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
    at java.awt.Component.processEvent(Component.java:6298)
    at java.awt.Container.processEvent(Container.java:2236)
    at java.awt.Component.dispatchEventImpl(Component.java:4889)
    at java.awt.Container.dispatchEventImpl(Container.java:2294)
    at java.awt.Component.dispatchEvent(Component.java:4711)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4888)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4525)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4466)
    at java.awt.Container.dispatchEventImpl(Container.java:2280)
    at java.awt.Window.dispatchEventImpl(Window.java:2746)
    at java.awt.Component.dispatchEvent(Component.java:4711)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
    at java.awt.EventQueue.access$500(EventQueue.java:97)
    at java.awt.EventQueue$3.run(EventQueue.java:709)
    at java.awt.EventQueue$3.run(EventQueue.java:703)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:90)
    at java.awt.EventQueue$4.run(EventQueue.java:731)
    at java.awt.EventQueue$4.run(EventQueue.java:729)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
Trying stopbits = 2
Issue when setting parameters:38400 8 2 0
gnu.io.UnsupportedCommOperationException: Invalid Parameter
    at gnu.io.RXTXPort.setSerialPortParams(RXTXPort.java:211)
    at gps.connection.GPSRxTxPort.openPort(Unknown Source)
    at gps.connection.GPSrxtx.myOpenPort(Unknown Source)
    at gps.connection.GPSrxtx.setFreeTextPortAndOpen(Unknown Source)
    at bt747.model.Controller.openFreeTextPort(Unknown Source)
    at bt747.j2se_view.BT747Main.access$300$6e36da35(Unknown Source)
    at bt747.j2se_view.BT747Main$7.actionPerformed(Unknown Source)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348)
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
    at java.awt.Component.processMouseEvent(Component.java:6533)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
    at java.awt.Component.processEvent(Component.java:6298)
    at java.awt.Container.processEvent(Container.java:2236)
    at java.awt.Component.dispatchEventImpl(Component.java:4889)
    at java.awt.Container.dispatchEventImpl(Container.java:2294)
    at java.awt.Component.dispatchEvent(Component.java:4711)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4888)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4525)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4466)
    at java.awt.Container.dispatchEventImpl(Container.java:2280)
    at java.awt.Window.dispatchEventImpl(Window.java:2746)
    at java.awt.Component.dispatchEvent(Component.java:4711)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
    at java.awt.EventQueue.access$500(EventQueue.java:97)
    at java.awt.EventQueue$3.run(EventQueue.java:709)
    at java.awt.EventQueue$3.run(EventQueue.java:703)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:90)
    at java.awt.EventQueue$4.run(EventQueue.java:731)
    at java.awt.EventQueue$4.run(EventQueue.java:729)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
100924 - Port opened

And the H241 FREEZES..... :-(((

I am in group dialout, and GPSbabel works like a charm reading LOGs out. But it lacks the settings... :-(((

Using the data.bin read by GPSbabel works out OK. So the only mysterious thing is the serial connection. Using Putty with ttyUSB0 @38400 works 'out of the box', BTW.

BT747_2.1.11_full $ ll /dev/ttyUSB0 ;groups
crw-rw---- 1 root dialout 188, 0 Nov 11 01:43 /dev/ttyUSB0
user adm tty uucp dialout cdrom sudo dip plugdev lpadmin sambashare

uname -aLinux machineName

uname -a
Linux machineName 4.8.0-53-generic #56~16.04.1-Ubuntu SMP Tue May 16 01:18:56 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

java -version
openjdk version "1.8.0_131"
OpenJDK Runtime Environment (build 1.8.0_131-8u131-b11-2ubuntu1.16.04.3-b11)
OpenJDK 64-Bit Server VM (build 25.131-b11, mixed mode)

BT747_2.1.11_full $ ./run_j2se.sh

./lib/rxtx-2.2pre2-bins/Linux/x86_64-unknown-linux-gnu
PATH = /home/user_4n6/bin:/home/user_4n6/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games

1382 - BT747 2.1.11 Build:BT747_mdeweerd.11.20170423174734571
1383 - Initial: 1180x575  Screen: 1920x1080 Final: 1180x575
1383 - Linux
1383 - amd64
1384 - 4.8.0-53-generic
1384 - 1.8.0_131
1384 - 64
1384 - Fehlercom.sun.java.swing.plaf.windows.WindowsLookAndFeel
Fehlercom.sun.java.swing.plaf.windows.WindowsClassicLookAndFeel
Erfolgreichcom.sun.java.swing.plaf.nimbus.NimbusLookAndFeel
javax.swing.plaf.metal.MetalLookAndFeel
javax.swing.plaf.nimbus.NimbusLookAndFeel
com.sun.java.swing.plaf.motif.MotifLookAndFeel
com.sun.java.swing.plaf.gtk.GTKLookAndFeel

26105 - Classgps.connection.GPSRxTxPort
WARNING:  RXTX Version mismatch
    Jar version = RXTX-2.2pre1
    native lib Version = RXTX-2.2pre2

When trying with WRONG 115200 this hapens...

86576 - Classgps.connection.GPSRxTxPort
86591 - Port opened
86591 - Attempting saving settings to /home/user_4n6/BT747SettingsJ2SE.pdb
86591 - Writing settings success for /home/user_4n6/BT747SettingsJ2SE.pdb

Of course that fails, h241 can only talk @38400

100841 - Classgps.connection.GPSRxTxPort
Issue when setting parameters:38400 8 1 0
gnu.io.UnsupportedCommOperationException: Invalid Parameter
    at gnu.io.RXTXPort.setSerialPortParams(RXTXPort.java:211)
    at gps.connection.GPSRxTxPort.openPort(Unknown Source)
    at gps.connection.GPSrxtx.myOpenPort(Unknown Source)
    at gps.connection.GPSrxtx.setFreeTextPortAndOpen(Unknown Source)
    at bt747.model.Controller.openFreeTextPort(Unknown Source)
    at bt747.j2se_view.BT747Main.access$300$6e36da35(Unknown Source)
    at bt747.j2se_view.BT747Main$7.actionPerformed(Unknown Source)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348)
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
    at java.awt.Component.processMouseEvent(Component.java:6533)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
    at java.awt.Component.processEvent(Component.java:6298)
    at java.awt.Container.processEvent(Container.java:2236)
    at java.awt.Component.dispatchEventImpl(Component.java:4889)
    at java.awt.Container.dispatchEventImpl(Container.java:2294)
    at java.awt.Component.dispatchEvent(Component.java:4711)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4888)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4525)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4466)
    at java.awt.Container.dispatchEventImpl(Container.java:2280)
    at java.awt.Window.dispatchEventImpl(Window.java:2746)
    at java.awt.Component.dispatchEvent(Component.java:4711)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
    at java.awt.EventQueue.access$500(EventQueue.java:97)
    at java.awt.EventQueue$3.run(EventQueue.java:709)
    at java.awt.EventQueue$3.run(EventQueue.java:703)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:90)
    at java.awt.EventQueue$4.run(EventQueue.java:731)
    at java.awt.EventQueue$4.run(EventQueue.java:729)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
Trying stopbits = 2
Issue when setting parameters:38400 8 2 0
gnu.io.UnsupportedCommOperationException: Invalid Parameter
    at gnu.io.RXTXPort.setSerialPortParams(RXTXPort.java:211)
    at gps.connection.GPSRxTxPort.openPort(Unknown Source)
    at gps.connection.GPSrxtx.myOpenPort(Unknown Source)
    at gps.connection.GPSrxtx.setFreeTextPortAndOpen(Unknown Source)
    at bt747.model.Controller.openFreeTextPort(Unknown Source)
    at bt747.j2se_view.BT747Main.access$300$6e36da35(Unknown Source)
    at bt747.j2se_view.BT747Main$7.actionPerformed(Unknown Source)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348)
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
    at java.awt.Component.processMouseEvent(Component.java:6533)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
    at java.awt.Component.processEvent(Component.java:6298)
    at java.awt.Container.processEvent(Container.java:2236)
    at java.awt.Component.dispatchEventImpl(Component.java:4889)
    at java.awt.Container.dispatchEventImpl(Container.java:2294)
    at java.awt.Component.dispatchEvent(Component.java:4711)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4888)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4525)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4466)
    at java.awt.Container.dispatchEventImpl(Container.java:2280)
    at java.awt.Window.dispatchEventImpl(Window.java:2746)
    at java.awt.Component.dispatchEvent(Component.java:4711)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
    at java.awt.EventQueue.access$500(EventQueue.java:97)
    at java.awt.EventQueue$3.run(EventQueue.java:709)
    at java.awt.EventQueue$3.run(EventQueue.java:703)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:90)
    at java.awt.EventQueue$4.run(EventQueue.java:731)
    at java.awt.EventQueue$4.run(EventQueue.java:729)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
100924 - Port opened

And the H241 FREEZES..... :-(((

I am in group dialout, and GPSbabel works like a charm reading LOGs out. But it lacks the settings... :-(((

Using the data.bin read by GPSbabel works out OK. So the only mysterious thing is the serial connection. Using Putty with ttyUSB0 @38400 works 'out of the box', BTW.

BT747_2.1.11_full $ ll /dev/ttyUSB0 ;groups
crw-rw---- 1 root dialout 188, 0 Nov 11 01:43 /dev/ttyUSB0
user adm tty uucp dialout cdrom sudo dip plugdev lpadmin sambashare