January 04, 2016

Extracting Data from a Holux M-1000C GPS Data Logger using Ubuntu

Photo Credit: Jagro - commons.wikimedia.org
When I'm traveling in the back-country I like to carry a GPS data-logger in a pocket, and forget about it.  The Holux M-1000C (or any of its cousins http://www.dx.com/s/holux+gps+data+logger) just logs GPS coordinates, time, speed, and how many satellites it sees, as often as you want it to.  Every second? Every meter? Whatever resolution you like.  With enough storage capacity to keep 200,000 points before stopping (or overwriting the oldest data) it has enough space to be on all day, every day, for many, many days.  I set it to log a data-point every 10 meters. That's sufficient resolution that I can see on a map where I've been hiking or driving, but not so frequent than you waste space with all the extra data (IMHO).  The down side is, it still needs power.  It has a small lithium-ion battery, like a cell phone, and has enough juice to last ~24 hours.  It means I usually have to charge it in the Suburban every couple of days to make sure it doesn't die.

Once I get back home, I use mtkbabel on Ubuntu to download the coordinates to the computer, and potentially overlay the data in Google Maps.  The problem with that is, I forget the exact syntax every time, and re-learn it a couple of times a year.  So, this blog post is really a way for me to document to myself how to do this next time.

Here is the command to download the data, after it is plugged in with the right USB cable.

user@hostname:~$ mtkbabel -s 38400 -f `date +'%F-%H%M%S'` -t -w -p /dev/ttyACM0
Packet checksum error: expected 0x77, computed 0x5C
MTK Test OK
MTK Firmware: Version: 1, Release: AXN_1.30-B_1.3_C01, Model ID: 005C
Log format: (8000107D) UTC,LATITUDE,LONGITUDE,HEIGHT,SPEED,HEADING,NSAT
Size in bytes of each log record: 27 + (0 * sats_in_view)
Logging TIME interval:       0.00 s
Logging DISTANCE interval:  10.00 m
Logging SPEED limit:         0.00 km/h
Recording method on memory full: (1) OVERLAP
Log status: (000100000010) AUTOLOG_ON,OVERLAP_WHEN_FULL,ENABLE_LOG
Next write address: 1529206 (0x00175576)
Number of records: 58211
Memory health status (failed sectors mask): FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
>> Retrieving 4194304 (0x00400000) bytes of log data from device...
Saved log data:   0.00%
Saved log data:   0.05%
Saved log data:   0.10%
Saved log data:   0.15%
 <.......snip.......>
Saved log data:  37.40%
Saved log data:  37.45%
WARNING: Sector header at offset 0x00180000 is non-written data
Saved log data:  37.50%
Total record count: 58211
user@hostname:~$ 

Here is the command to purge the data logger of data, so you dont download the same data multiple times:

user@hostname:~$ mtkbabel -s 38400 -E -p /dev/ttyACM0
Packet checksum error: expected 0x3C, computed 0x64
MTK Test OK
MTK Firmware: Version: 1, Release: AXN_1.30-B_1.3_C01, Model ID: 005C
>> Erasing log memory...
Log format: (8000107D) UTC,LATITUDE,LONGITUDE,HEIGHT,SPEED,HEADING,NSAT
Size in bytes of each log record: 27 + (0 * sats_in_view)
Logging TIME interval:       0.00 s
Logging DISTANCE interval:  10.00 m
Logging SPEED limit:         0.00 km/h
Recording method on memory full: (1) OVERLAP
Log status: (000100000000) AUTOLOG_OFF,OVERLAP_WHEN_FULL,ENABLE_LOG
Next write address: 512 (0x00000200)
Number of records: 0
Memory health status (failed sectors mask): FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
user@hostname:~$ 

Here is the man page (the manual) for the command I'm using:

NAME

mtkbabel − Tool for managing GPS data loggers based on the MTK chip

SYNOPSIS

mtkbabel [−abcdEfhilmopRrstvw]

DESCRIPTION

mtkbabel is a command line program to operate GPS data loggers based on the MediaTek MTK chip. It was tested on the i-Blue 747 and on the Holux M-241, it should work also with other GPS devices based on the same chip.

The main features are: 
- Command line interface 
- Save data log in GPX and raw binary format 
- If required retrieve all the data, also the old one being overlapped 
- Change logging criteria: time, distance, speed 
- Change log format 
- START/STOP logging 
- Set OVERLAP or STOP method on memory full 
- Erase the internal memory

USAGE

In order to use mtkbabel, please follow these instructions:

1. Attach the GPS data logger device to your computer via USB.

2. Now you have to switch the GPS device (at least the i-Blue 747) into LOG or NAV mode, otherwise the device will not be powered on, and no connection will be possible. Beware that in NAV mode the device goes into sleep mode if not connected to any Bluetooth device.

3. In order to use mtkbabel you have to either be root (not recommended) and/or you must have read/write permissions for the USB device file, usually /dev/ttyUSB0. This device usually has permissions ’crw-rw---- 1 root dialout’, so you can either add your user to the dialout group (in this example) by doing

$ adduser USERNAME dialout

or (not recommended) make the device world-readable/-writable by doing:

$ chmod 666 /dev/ttyUSB0

Another option is to write a udev rules file to change the owner and permissions of /dev/ttyUSB0 according to your requirements.

4. You can now run mtkbabel. For example, if you want to download the track log and the list of waypoints you captured on the device, run:

$ mtkbabel -s 115200 -l off -f foo -w -t

The default speed of 115200 baud should work in most cases and you can omit it, for the Holux M-241 you must use 38400 instead. This will turn off the autolog function, which is always turned on when you switch on the device. The track log will be in the file foo_trk.gpx, the waypoints in the file foo_wpt.gpx (both in GPX format). The file foo.bin will contain the binary log file. Downloading the data from the GPS device can take several minutes, depending on how much data has to be transferred.

In order to delete all data from the GPS device, run:

$ mtkbabel -s 115200 -E

OPTIONS

−a

Read all the log memory (overlapped data).

−b filename.bin

Do not read data from a GPS device, but rather read a previously saved .bin file. Ignore −f option.

−c

Create a GPX file with both tracks and waypoints.

−d debug_level

Debug level: 0..7.

−E

Erase data log memory.

−f

Base name for saved files (.bin and .gpx). If you, for example, use -f gpslog, mtkbabel will create files which are called gpslog.gpx, gpslog_trk.gpx, gpslog_wpt.gpx and gpslog.bin.

−h

Show a help text and exit.

−i

Ignore some error conditions and try to extract as much data as possible from GPS.

−l {on|off}

Turn logging ON/OFF.

−m {stop|overlap}

Set STOP/OVERLAP recording method on memory full.

−o log_format

Enable or disable log fields (FIELD1,−FIELD2,...), available fields: UTC, VALID, LATITUDE, LONGITUDE, HEIGHT, SPEED, HEADING, DSTA, DAGE, PDOP, HDOP, VDOP, NSAT, SID, ELEVATION, AZIMUTH, SNR, RCR, MILLISECOND, DISTANCE.

−p port

Communication port, default: /dev/ttyUSB0.

−R

Recover from disabled log: erase data and reset recording criteria.

−r time:distance:speed

Set logging criteria (zero to disable): every 1-999 seconds, every 10-9999 meters, over 10-999 km/h.

−s speed

Serial port speed, default 115200 baud.

−t

Create a GPX file with tracks.

−v

Show version information and exit.

−w

Create a GPX file with waypoints.

BUGS

Please report any bugs to Niccolo Rigacci <niccolo [AT] rigacci.org>.

LICENCE

mtkbabel is covered by the GNU General Public License (GPL), version 2 or later.

AUTHORS

Niccolo Rigacci <niccolo [AT] rigacci.org>

This manual page was written by Uwe Hermann <uwe [AT] hermann-uwe.de>. It is licensed under the terms of the GNU GPL (version 2 or later).

 ( copied from http://man.cx/mtkbabel(1) )

Here is the manufacturer's web site:
http://www.holux.com/JCore/en/products/products_content.jsp?pno=351

By the way... I bought the Holux M-1000C in 2011.

1 comment:

  1. Thank you for this Guide, GPS Helpline Number Canada is there for you at 1-916-209-6500 for your help tcehnical assistanse..

    ReplyDelete