GPS tracker Holux m241

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:

http://www.rigacci.org/wiki/doku.php/doc/appunti/hardware/gps_logger_i_blue_747

The Desktop version has been release and can be installed from the web by going to http://www.bt747.org

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.

MacOSX USB
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:

Thank you for the feedback. Despite the fact that I am subscribed to this topic, I do not get e-mail updates ;-(, so I did not repond earlier.

The English documentation still has to be written - most question are already anwsered in the German Documentation for example.

For the moment, the INFO tab shows the error messages. Some indication of why the connection fails can be found there. On linux, your problem might be the you are running in 64 bit. From the web start, I need to investigate if I can select the right driver automatically somehow. In the zip file I need to do a similar thing - in the “run_j2se.sh” file you’ld need to have ‘RXTXLIBPATH=${RXTXPATH}/Linux/x86_64-unknown-linux-gnu’ .

Regarding the separation of log downloading and log configuration. I am open to suggestions, but I do not really have good ideas on how to do more. Currently, when not connected, all operations that are not possible are greyed out. There are just two buttons related to the log download that are disabled - they are on the first tab. The others are all related to device configuration.
As can be noted, the first three tabs are related to log download and conversion. ‘Device Settings’ and ‘Advanced Device Settings’ are as indicated by the title. Advanced File Settings is related to log conversion again, but these are settings that a regular mortel probably will not touch.

Good Color and Bad Color. There is surely a better way to label those. The ‘Good Color’ is the color that is used in the HTML and KML output formats to indicate the track segments that correspond to valid positions. The ‘Bad Color’ is the color that is used to indicate segments with positions that were not selected. Example: when going through a tunnel, the device would log some invalid positions - invalid being no fix, PDOP to high, … (according to the filter settings). That part would be shown in the ‘Bad Color’.
When the Good color and the bad color are different, this results in bigger files and slower loading - especially for the HTML output.
I’ll need to write some kind of application note on the use of this.

‘Flash Settings’ corresponds to the settings stored in the internal flash of the device - not the flash used to log positions. These settings are the ones that are restored when the device lost power. Next to it is ‘NMEA Output Settings’. The values there after loss of power are the ones you can find in ‘Flash Settings’ (the ones that are absent will be 0). The ‘NMEA Outputs Settings’ are dynamic though : they can be changed and the value is maintained as long as the device has (backup) power.
I had added a tooltip to ‘Flash settings’, but apparently this is not good enough.

These settings are related only to the NMEA sentences sent by the Holux over the bluetooth connection. For example, GSA is used by GPS applications to get the sat positions, number in view and in use, and the position quality. The *DOP values are a good indication of the quality - the smaller the better. Some devices log ‘0.0’ when there is no fix, but this is not the case for MTK. Personally I log HDOP or PDOP, and the number of sattelites in view - but that has to be done through the ‘Log Format’.

I can add tooltips to the GLL, RMC, … buttons. to clarify.

Advanced filesettings:
a) NMEA File settings: this selects the sentences that are written to the ‘NMEA’ output file issued from log conversion.
b) GPX File settings:
i) Do not apply UTC offset: regardless of the UTC offset requested (‘Various’ in ‘Output Settings’) , do not apply this offset to GPX output. This way the GPS remains compliant with GPX specifications (the time is always UTC in GPX).
ii) Make a new track segment…: in stead of making a track appear as a continuous line, break it up in smaller tracksegments whenever a ‘bad position’ (according to filter) was detected.

The set button (Flash settings). The warning message says that it could brick your device. Most do not allow it anyways (Times Left = 0). This is to warn the user who is not really sure about what he is doing, while providing the ‘Advanced’ function to those that want it (and to show the actual settings).

Hi all,
I’ve bought a hullux m241 planning to use it for osm map creation. I was full of hope making precise paths with that device, because it offers a 3 meters precision.
In fact, when importing multiple traces from the same way, there is sometimes 40 meters of difference between the records. I didn’t understood why since I read that thread.
If I understand well, the GPS ship shows position (on the screen) with a «good» precision (±3 meters), but the log is 4 bytes less ? (4 for 8) Is it right ? I can’t beleive it !

I think I just have to put m241 on ebay to buy an other logger ? Or is there a replacement firmware available somewhere ? Or a trick to change the log precision ?

Thanks

If you get ±40 meters you are not going to get a better position with another GPS unit, the Holux m-241 has submeter precision in the stored format. A ~$150 garmin will have a better antenna and chipset, but you can get 2-3 holuxs for that price…