How-To: Holux M-241 with BT747 v1.52 GPS logger software over Bluetooth
Here’s a new HOW-TO to connect your Holux M-241 GPS logger over Bluetooth on the Mac using the BT747 application.
- If there is already an /Application/GPS folder on your hard drive, (re)move or rename it.
- Enter the following commands in a shell (Terminal):
sudo mkdir /var/lock && sudo chmod 777 /var/lock
You will be asked for your root password. - Turn the M-241 on and use the Bluetooth setup assistant on the Mac to set the device up (see screenshots below). Use passkey 0000 (four zeros). Once the wizard finishes, the M-241 will show up as paired but not connected. There will be no Bluetooth icon shown on the M-241 as for now because the serial port hasn’t been opened yet. If all is set up correctly there’s an entry called tty.HOLUX_M-241-SPPSlave-1 in the /dev directory of your Mac. Open a shell (Terminal) an try to run the command
cat /dev/tty.HOLUX_M-241-SPPSlave-1
and the Bluetooth icon on the the M-241 should appear almost immediately. Wait another 30 seconds and the last position information should be dumped in the shell. Press CTRL-C to abort. If it says “No such file or directory” the device may not have been set up correctly on your Mac. In some cases, the M-241 may be shown as tty.HOLUX_M-241-SPPSlave-0.





- Extract the content of BT747_1.52_xx.zip to /Applications/GPS
- Run the bt747_macosX.command script (double click it in your /Applications/GPS folder), the BT747 application should start
- On the tab labeled “Con” hit the BLUETOOTH button. If everything is fine the application will connect to your M-241.

- Don’t forget to hit the button “Get Log” on the tab labeled “Log” to download the track information from your M-241
- After the log is downloaded, press any of the format buttons to export your position data to that format.
- This is optional:
Create a subdirectory logs in /Applications/GPS
Change to the tab labeled “File”
Change the output dir to /Applications/GPS/logs
Press “Apply&Set the above values”
All your downloaded and converted GPS files will be written to this directory from now on.
If you get a gnu.io.PortInUseException:
Have a look at step 2 above.
I’m using the default Java Runtime Environment (JRE) on Mac OS X 10.5.4 which at this time happens to be 1.5.0_13-b05-237.
You may also be interested to read:
- How to use the Holux M-241 on the Mac over Bluetooth
Today, my Holux M-241 GPS Logger was giving me a hard time. I wanted to connect it to my Macintosh over Bluetooth and the BT747... - Review: Geotagging software comparison for the Mac
Here’s a review of geotagging tools available as of today (July ‘08). I tested all of them personally and tried to come up with a...








Don’t miss my recent article about the geotagging workflow on the mac:
http://www.trick77.com/2008/07.....n-the-mac/
Thanks for the great tutorial. However, I can’t seem to get BT747 to remember the output dir setting between sessions. Is there a file that I can modify? Or do I need to change the permission on certain files to make the settings stick? Thanks!
Hi, after failing to get it working with the previous method, I tried your new HOW-TO and I’m getting the following report in Terminal when clicking on “Bluetooth” in the Applet - any ideas, cheers:
181 - null
Info: trying to open /dev/cu.SLAB_USBtoUART
java.lang.UnsatisfiedLinkError: no rxtxSerial in java.library.path thrown while loading gnu.io.RXTXCommDriver
—————————
>>>>>>> CAUGHT UNHANDLED EXCEPTION IN SuperWaba EVENT THREAD:
java.lang.UnsatisfiedLinkError: no rxtxSerial in java.library.path
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1753)
at java.lang.Runtime.loadLibrary0(Runtime.java:822)
at java.lang.System.loadLibrary(System.java:993)
at gnu.io.CommPortIdentifier.(CommPortIdentifier.java:83)
at gps.port.GPSRxTxPort.openPort(Unknown Source)
at gps.GPSrxtx.setBluetoothAndOpen(Unknown Source)
at bt747.model.Controller.setBluetooth(Unknown Source)
at bt747.waba_view.GPSconctrl.GPS_setChannel(Unknown Source)
at bt747.waba_view.GPSconctrl.onEvent(Unknown Source)
at waba.ui.Control.postEvent(Control.java:611)
at waba.ui.Button.onEvent(Button.java:203)
at waba.ui.Control.postEvent(Control.java:611)
at waba.ui.Window._postEvent(Window.java:574)
at waba.applet.SWEventThread.handleOneEvent(SWEventThread.java:84)
at waba.applet.SWEventThread.run(SWEventThread.java:48)
at java.lang.Thread.run(Thread.java:613)
David, it looks like you’re not using the latest version (v1.52). This problem occured in v1.48 because of an error in the start script.
Doh! Thanks Jan - not sure how I managed to use the wrong one - perhaps I deleted the new instead of an older download. Anyway, thanks, it’s working well now :)
Help!
I have followed your instructions, and everything worked until I started BT747. I got a response from my GPS, but I keep getting the message below when I force it to use the right port (Qstarz 1000P) or the same message but for the USB driver when I don’t. Any ideas! This is on an Intel Mac Mini with 10.5.4.
Info: trying to open /dev/tty.iBT-GPS-SPPslave-1
gnu.io.NoSuchPortException
at gnu.io.CommPortIdentifier.getPortIdentifier(CommPortIdentifier.java:218)
at gps.connection.GPSRxTxPort.openPort(Unknown Source)
at gps.connection.GPSrxtx.setBluetoothAndOpen(Unknown Source)
at bt747.model.Controller.setBluetooth(Unknown Source)
at bt747.waba_view.GPSconctrl.GPS_setChannel(Unknown Source)
at bt747.waba_view.GPSconctrl.onEvent(Unknown Source)
at waba.ui.Control.postEvent(Control.java:611)
at waba.ui.Button.onEvent(Button.java:203)
at waba.ui.Control.postEvent(Control.java:611)
at waba.ui.Window._postEvent(Window.java:574)
at waba.applet.SWEventThread.handleOneEvent(SWEventThread.java:84)
at waba.applet.SWEventThread.run(SWEventThread.java:48)
at java.lang.Thread.run(Thread.java:613)
Andrew, if you list (using Terminal) all the files in the /dev directory, do you see an entry with the name
tty.iBT-GPS-SPPslave-1
and if yes, what happens if you use the cat command on that device?
I found the error. The entry for the Qstarz Q1000P should be tty.iBT-GPS-SPPSlave-1 with a capital S on Slave otherwise it won’t work. Once I changed the command script it was fine. I didn’t think OSX was case sensitive like that.
Many thanks for your help
you might want to check out gpsbabel for getting the tracks off the m241… Support for the m241 hasn’t made it to the release yet, but if you grab the source from CVS and compile it, it works quite nicely… It’s also got a gui front-end (nicer than bt747), which last I checked didn’t have the options for the m241, but it’s not too difficult to add them in…
im getting an error when i click Get Log:
ERROR:
Could not open
/BT747/BT747/log.bin
Check path & if Card is writeable…
any ideas?
Hi,
in the documents there you tell something about setting waypoints using “the button”. On my M-241 I only have two buttons, one for menu and one for enter. I cannot get any waypoint using these two buttons. How do I get waypoints?
thanx, great work
I have the same problem Michael on August 28th, 2008 reported
You have to set an existing path for the data file and make sure you don’t forget to press the save button in the dialog. Maybe step #9 isn’t as optional as I initially thought.
Thanks 77
It works !!
Summary:
First select a writable folder (I use my desktop)
Second press the save button
Third press the transformation (I use GPX)
Hi, I’m sure I’m using the latest version of BT747 (version 1.55.2) but I keep getting the error below. Has it re-appeared in version 1.55? Version 1.52.xx doesn’t seem to be available for download any longer from sourceforge.
Info: trying to open /dev/tty.HOLUX_M-241-SPPSlave-1
java.lang.UnsatisfiedLinkError: /Applications/GPS/lib/rxtx-2.1-7-bins-r2/Mac_OS_X/librxtxSerial.jnilib: thrown while loading gnu.io.RXTXCommDriver
—————————
>>>>>>> CAUGHT UNHANDLED EXCEPTION IN SuperWaba EVENT THREAD:
java.lang.UnsatisfiedLinkError: /Applications/GPS/lib/rxtx-2.1-7-bins-r2/Mac_OS_X/librxtxSerial.jnilib:
at java.lang.ClassLoader$NativeLibrary.load(Native Method)
at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1822)
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1739)
at java.lang.Runtime.loadLibrary0(Runtime.java:823)
at java.lang.System.loadLibrary(System.java:1030)
at gnu.io.CommPortIdentifier.(CommPortIdentifier.java:83)
at gps.connection.GPSRxTxPort.openPort(Unknown Source)
at gps.connection.GPSrxtx.setBluetoothAndOpen(Unknown Source)
at bt747.model.Controller.setBluetooth(Unknown Source)
at bt747.waba_view.GPSconctrl.GPS_setChannel(Unknown Source)
at bt747.waba_view.GPSconctrl.onEvent(Unknown Source)
at waba.ui.Control.postEvent(Control.java:611)
at waba.ui.Button.onEvent(Button.java:203)
at waba.ui.Control.postEvent(Control.java:611)
at waba.ui.Window._postEvent(Window.java:574)
at waba.applet.SWEventThread.handleOneEvent(SWEventThread.java:84)
at waba.applet.SWEventThread.run(SWEventThread.java:48)
at java.lang.Thread.run(Thread.java:637)
Your problem is strange because this is reported working by a Mac User.
You can try the latest version from the debug_release too if you like.
A search on the net may give us a solution:
http://www.arduino.cc/cgi-bin/.....1204208692
Apparently removing an input manager solves the problem there - I do not know what that is however.
Another solution seems to be using Java 5 (setting in the java preferences)?
Let us know if anything there helps.
Hi,
I am trying to follow this guide, the first steps are ok but I cannot launch bt747! When I run the bt747_macosX.command script, I get this error:
/Applications/GPS/bt747_macosX.command: line 53: javaw: command not found
I am running mac os x 10.4.11 with J2SE5.0
thanks if anybody could help!
I’m using the default JVM in Mac OS X 10.5.5 and I’m able to start the bt747_macosX.command script by just double clicking it in the folder. I’m using bt747 1.60. If you know the path to your java or javaw you can always hardcode it into the script. It looks like in your setup the script can’t detect neither of the needed JVM start executables.
Hi jan,
thanks for your fast answer: first of all I forgot to write the version of bt747 that I was using: 1.60.11_en.
Anyway yesterday I kept searching, and I’ve found this website:
http://bt747.free.fr/content/
which allows to install the software through a ‘Java Web Start’ system. Apart a different (in my opinion better) graphical interface, if worked like a charm with my holux M-241. Downloaded 1 hour ago my test path and was perfect in google earth, also waypoints.
I thought was right to write back my experience, but still thanks a lot for your nice guide (and the other interesting articles!).
Hi Jan
Brilliant! This how to and also your GPS-Aperture Workflow is amazing! Everyting works fine but I have a question.
I have no skills with automator but it would be very nice to have a automator skript to connect the Holux-241. Now I always open terminal and copy/paste your commands and I ask myself if there isn’t a better way to do this. If you can explain me a better way I would be very happy.
Thank you
maze
[...] Eine Anleitung zur Verwendung des Holux M-241 am Mac unter OS X findet man bei Trick 77 [...]
I’m 99% of the way there with my Holux talking nicely over bluetooth to my mac via the Version 1.60.11 of the BT747 software all thanks to this terrific post. I had a look at the PC software (via parallels) but it looks even more nasty than the open source method!
My problem comes with trying to shut the thing down. If it hangs or seems to hang I try to quit it but no matter what I have a waba.applet.Applet icon in my dock and no force quitting will get rid of it till I reboot. Once this has happened, there is no way to reconnect to the Holux until I’ve rebooted.
Is there some Java magic I need to know?
Also my Holux, seems to turn itself off from time to time without telling me that the battery is low. I’m using some NIMH batteries which I haven’t used for a while and have only just recharged recently. It’s possible that the batteries are a bit suspect right?
I haven’t seen such a Java problem on my Mac but you may want to ask the developer of BT747 himself by visiting his web site and forum over at:
http://bt747.free.fr/content/?q=forum
The battery indicator problem seems to be battery related OR related to the battery algorithm in the Holux. It may have been optimized for non-rechargeable batteries.