GPS tracker Holux m241

I bought a m241 Holux GPS logger for 40-50 euro, it just allows you to record where you have been and log waypoint with a button. It’s a good tracker with no official support for Linux, so it might have been a bad choice for me.

Good things

  • You can make waypoints
  • Works very well for tracking
  • Bluetooth, you can sync it, and listen to the full nmea dump)
  • Good enough storage (131037 points) (36 hours)
  • USB serial GPS, works wonderfull for syncing and listening to full nmea dump.
  • cheeeeap…
  • Runs on one AA battery, (about 8 hours on a fresh 2400mAh)

Bad things

  • doesn’t shut down when batteries runs out, corrupting the log (Very Bad!)
  • need special software for syncing (hard to use when in a internet café)
  • looks like an old roll of film but doesn’t fit in a filmcanister.
  • the iblue 747 hacker tools doesn’t work, so you can’t capture more than lat/lon/ele/time (it’s enough for most purposes)
  • slow syncing, transfers at 38400bps is slow even with small files (ooh the joy of POTS modems)

I recommend it if you run Windows, otherwise I would like to find something with better Linux/Mac support.

Actually you can log more data than you say.
BT747 ( will let you change the data you log and it works on linux too.
It is likely more robust towards log corruption too.
If you need to sync on the go: use bluetooth - BT747 works on PDAs. It also works from the net but from this is allowed for evaluation purposes only. The hard thing if you do not use bluetooth is that you need to install the USB driver - this is available alread on several linux setups, but not for windows machines.

Yes you are right it’s 131037 points, about 36 hours of logging, but waypoints take about 10-20 points (WRONG, edit: as pointed out nellow this is wrong)

BT747 isn’t working for the m241 when I use it at least, but the m241 is different from the other mtk models so I guessed it just didn’t support changing log interval. Have you done it yourself?

I wrote BT747, and a kind user sent me a M241 so that I can 100% confirm that it works with this device.

To use it (besides correct installation):

  1. You need to connect using 38400 baud;
  2. You can set the device type to Holux M241 (top bar menu/device) to make sure that logs are always interpreted correctly - this is not required for device configuration (the device is automatically recognized).

Some things can not be changed permanently - ‘on boot’ the holux checks certain settings and changes them to one of the predefined ones - the log interval setting is one of them, the same goes for distance and speed log conditions, fix interval and other stuff.
The logged fields can be changed though and is maintained between on/offs.

The log format is slightly different from the other models: the position and height (altitude) is less precise.
By default: 4 bytes for the UTC time, 4 bytes for lat, 4 for lon, three for the height and finally a byte for the checksum - a total of 16 bytes per position. On the other models this is 4 + 8 + 8 + 4 + 2 = 26 bytes. The other fields are the same size.
To log a waypoint (and to gain 2 bytes to be logged with every position as on the other models), the M241 writes a specific string to the log indicating that the next position is a waypoint. This string is 16 bytes (the same size as a normal position record). So a waypoint takes 16 bytes + the position record - by default 32 bytes (2 positions, not 10-20!). So on other models you need 28 bytes per position if you want waypoints.
So for similar information and same memory, the holux logs 130000 positions and the other models 74000. The main tradeoff is in the precision of the position - the height not being an real precision issue.

Once you change the logged fields, the original software becomes incompatible and BT747 will be mandatory. GPSBabel has been using the doc I wrote and added support for MTK devices - the holux will be supported too and is reported to be supported in the ‘CVS’ version - it may be compatible with the changed format but I do not vouch for that.

Well first a big** thank you** :laughing::lol::lol::lol::lol: for getting that protocol to work in other places than the shit that is Holux software. Does this mean it has always worked for the m241? Then I’ll try to get it working again at some point, but setting up bt747 on Mac/Linux wasn’t exactly a desktop experience. But once it’s running I’m sure it’s useable,

Waypoints, true I’m wrong. They are only one extra trackpoint field + the HOLUXGR241WAYPNT string. What I was thinking of was stop/start.

Start/stop takes alot I believe not sure exactly how it relates to log_blocks and such have to investigate.

Now the CVS version of GPSbabel will download the log in binary format for you, so you can experiment on it yourself. Twice, in the months I’ve had this device, the data.bin has been a truncated version of what I should have gotten, this has coincided with me running out of batteries. So I try very hard to shut off the device by “stop” then “off”, not to corrupt it.

GPSbabel isn’t that stellar in parsing the m241-bin format yet,

  1. doesn’t handle checksums that great (one bad chksum and it junks the track)
  2. doesn’t handle start/stop
  3. doesn’t handle waypoints (since it is based on mtk code which are for loggers without waypoints)
  4. given this I’m sure it can’t handle other log formats

perl is your friend in these situations… :slight_smile:

Would be nice if they installed a compression hardware in these loggers there is much to gain by just using a standard low footprint compressor… Oh well to much ram perhaps… :slight_smile:

-It did not always work for the Holux M-241 but I got it working not long after the M241 popped up. Waypoint extraction was added about a month ago.

  • I’ll check on start/stop but it should not take that many records.
  • Other software (than BT747) does not always get all the data - there are several reasons for this. It could be that some memory useage indicators are wrong indeed, but BT747 checks if the last block downloaded is full or not and if it is not, it downloads the next block too ;-).
  • BT747 tries to recover from checksum errors and skips the bad positions.
  • I only recently added ‘waypoint’ documentation the the ‘this protocol’ spreadsheet, so GPSbabel did not pick it up yet.
  • Perl is quite often my friend too, but in this case, BT747 is a better one ;-).

What do you mean by ‘doesn’t handle start/stop’ - how would you like that to be handled? I skip that information because it does not necessarily indicate a track split. I think you mean the ‘data corruption’ but you could mean something else.

“data curroption” ha sonly happened when I loose power unexpectantly, not while pressing the start/stop button, not sure about the on/off switch though I have to check some time.

Start/stop means pressing the start/stop button. I don’t know if there is a difference between doing that and shutting down the logger, I woulod have to try it out. But the start stop info is enough to do a new in GPX. When visualizing GPX files you usually connect the trackpoints, and if you don’t do a trkseg this will result in a very long line.

This is what I do, I attach my Holux via USB it will automatically fetch everything, or I can click an app and have it fetched via Bluetooth. Images from my camera is fetched and sorts out the one that matters to the GPS track, this transfer usually finnishes before the Holuxtransfer though…

I don’t use bt747 because:

  • doesn’t transfer automatically
  • to hard to set up (not saying gpsbabel is easier… :slight_smile:
  • GUI only…

I might be wrong, please correct me(?)

BT747 is currently as you say.
While it lacks the features that you value in the application that you are using, there might be other features that you value in BT747:

  • Can download over bluetooth in internet cafe when downloading over the net (I should find an appropriate site for that);
  • Slow download is compensated through the incremental download (it only downloads what is not downloaded yet);
  • Better error recovery;
  • Possibility to change the log format.

Also note, that BT747 runs on a PDA and I’ll probably get it (= the core code + limited gui) running on J2ME environments too - the initial interface for J2ME will be limited: it needs to be built from scratch for J2ME.

By the way: a dowload is only 3 clicks away:

  • Start the app;
  • Click connect (assuming you have set up the connection correctly in a previous run);
  • Click get log.

To convert to an output file, one extra click per output type.

Does BT747 support USB on windows, because in that case it would be really interesting. I never see internet cafés with bluetooth. But this would mean that I would have to make my own website service where I can upload everything directly from bt747 on to the net. Hmmm would be nice.

Bah… I could try to get it to work on j2me then, but I’m guessing the service provider nerfed the bluetooth in java support.

BT747 suports ‘USB’ on windos - i.e., it actual connects over the virtual serial link, whatever the kind is (USB, bluetooth).

On PC, the problem is with the USB driver that has to be installed - but maybe with bluetooth the problem is that you need to pair the device with the device.

When I say J2ME, this means that you’ll install the app on your phone and connect to your device locally. Your phone needs to have ‘JSR82’ to have access to bluetooth. I succeeded in getting BT747 to “work” on a Symbian phone using Superwaba (as Symbian app), but Superwaba does not support bluetooth on Symbian ;-(.

The service provider can not block that BT phone functionality if it is on the phone - they can block a service that concerns their network such as a using the phone as a “regular modem”.

Hmm, well they can block file access, and require signed apps for some features. I’m just guessing since they have disabled file access they can disable other things as well. In my case it’s the operator “3”, which is known for their evilness all over… :slight_smile:

If the phone is proposed by the ‘service provider’ thatn the phone features can be adjusted by this service provider. I suppose that you are sure that the survice provider blocks file access - generally when a person comes to me with that kind of observation I can show that it is a setting that they can change on their phone. My phone asks for approval by application of file access and bt access but this can be disallowed alltogether and might be the case by default simply to protect the dumb user.
I am in FR - I am not sure what operators you have in SE although I go there from time to time (in the deep south, only once where you are :wink: ).

If you want to try the first development version of a J2ME version, follow the next link where I posted the necessary information. That way you can check if your phone has the required functionality too.
Link to message regarding J2ME version.

The J2ME version is now released and useable - you can test it on your phone and find out if you are really limited.

Will do. :slight_smile:

The Desktop version has been release and can be installed from the web by going to

I know I’m beng a pesky user now, but the GPS software in general is so bad from a user perspective so your application really is better than alot of other things out there. :wink: So see this post as love towards your app not something else… :slight_smile:

I’ve tried these combination:

Linux: USB (/dev/ttyUSB0) Bluetooth (/dev/rfcomm0 already connected with rfcomm bind 00:1b:C1:04:13:31)
Doesn’t work with your app but with gpsbabel

MacOSX Bluetooth
Doesn’t work with your app.

works very nicely…

Strange things**
First of all I think you application need to be split up in two parts, first is “log downloading” and the other is “device configuration”, it might help you organize the different settings and tabs a little more.

There really is no feedback that something went wrong neither on Linux nor MacOSX, you need to put some kind of feedback like “Couldn’t find bluetooth device, you can try to do this: bla bla bla”.

At the connect button I left the baudrate on 115200 and it still worked, I was under the impression that you needed to 38400 for the m241.

Output settings tab
Various what? “good color” “bad color”?

Advanced settings tab
First of I would say that the settings in tab one are very advanced, these actually seem simpler.

I’m guessing “Flash settings” Should say “Logging to Flash”.

There are lots of settings filled out in the “Flash settings”, many are set to one, e.g. GSA, but I know my m241 does not log those values.

The names are very hard to understand if you know nothing about NMEA, perhaps put some help in there?

GLL - Geographic Position, Latitude/Longitude

RMC - Recommended Minimum Specific GPS/TRANSIT Data <---- I have no idea what this means… :wink:

VTG - Track Made Good and Ground Speed “How far you have traveled and current speed”

GGA - Global Positioning System Fix Data

GSA - GPS DOP and Active Satellites <— My interpretation of this is (which might very well be wrong): If these values are high your data is guarnteed to be bad, if low you data might be bad anyways. It only indicates how the sattelites are positioned and how that effects your position, you might still have radio interference that might mess things up.

ZDA - UTC Date/Time and Local Time Zone Offset (Log the timezone you have setup in the device)

GSV - GPS Satellites in View

Advanced Filesettings
What does this mean?

The set button*
There is a warning that says “this will brick your device please press abort”. Not a very useful button is it… :slight_smile: