Please see all COVID-19 updates here as some shipments may be delayed due to CDC safety and staffing guidelines. If you have an order or shipping question please refer to our Customer Support page. For technical questions please check out our Forums. Thank you for your continued support.


Replacement: None. There is no direct replacement for the KinetaMap. It had a good run, but it's time to go away. We stopped building this because it was expensive and difficult to build. One day we might revisit the project but for now, this page is for reference only.

KinetaMap is a combination of technologies that allow datalogging and transmission of GPS location and accelerometer data. Kinesiology is a growing field of research where human movement and motion can be analyzed for various applications. KinetaMap has the ability to capture things like pedestrian gait, vehicle braking, or package handling. The logs give you GPS location and the raw acceleration readings - it's up to you to decipher what they mean!

KinetaMap comes with basic firmware that currently supports acceleration and GPS logging. Flip the power switch and GPS will be logged once per second, accelerometer readings (X/Y/Z) at ten times per second. We designed KinetaMap to be as flexible and hackable as possible. It has the LPC2148 USB bootloader built-in which allows updates to the firmware easily and quickly over USB.

KinetaMap contains 1GB of flash that will last for weeks of continuous logging. It attaches to a computer over USB and shows up on any operating system as a flash drive. Quickly move files onto or off the KintaMap without having to remove the flash card. All log files are comma separated text files for easy parsing with Excel, Octave, MatLab, or your favorite data analysis package.

KinetaMap includes a Bluetooth® **module that supports SPP (serial port profile). This allows a computer to wirelessly connect to and download the log files. With a range of 100m, a computer is capable of querying a KinetaMap within a vehicle outside. A computer may also wirelessly modify the configuration and settings internally saved within KinetaMap. KinetaMap has also been tested with Bluetooth® **and Google Maps enabled phones. KinetaMap allows precise location and map directions on your phone!

We're still ironing out the hardware so the specifications may change without notice.

® **enabled) * 110mA active (no Bluetooth®** capability) * 4mA sleep mode * Charging over USB * Charge status LED * SparkFun USB bootloader * USB mass storage (Window, Mac, Linux supported)

Example Projects:

Francesco Ruta, a SparkFun Customer, made some excellent improvements to the KinetaMap v1.1 Firmware. Along with fixing some of the bugs he added a bunch of new functionality, including:

  • Binary Logging
  • NMEA Logging
  • Double Click recognization for Logging Start/Stop
  • Adjustable Frequencies for GPS and Accelerometer Readings
  • Accelerometer Calibration
  • Tools for creating KML map file (Google Earth) and decoding the Accelerometer data
  • Fixed ADC Clock Speed to prevent overclocking

    He also threw in a ReadMe to boot! Thanks Francesco! Here is his code:

  • Firmware KM_1.1.2

  • LPC2148 ARM7
  • EM408 SiRF III GPS
  • ADXL345 triple axis accelerometer
  • Tri-color status LED
  • Bluetooth wireless 100m range
  • 1100mAh LiPo battery
  • 140mA active (Bluetooth* 3.7 x 2.5 x 1.1"
  • 28 x 63 x 94mm
  • 103g (3.6oz)


Looking for answers to technical questions?

We welcome your comments and suggestions below. However, if you are looking for solutions to technical questions please see our Technical Assistance page.

  • The KinetaMap firmware seems to be overclocking the A/D converters. See page 271 the LPC214x user manual (rev 02). The A/D clock should be 4.5 MHz or less. For this hardware setup the crystal oscillator is 12MHz. The PLLCFG register gets set to 0x24 in the bootloader code. Thus, the PLL multiplier is (4 + 1) or 5. The system clock (CCLK) is then 12MHz * 5 = 60MHz. The peripheral clock is also 60MHz because the APBDIV/VPBDIV register is set to 1.
    Now, look at the code where the A/D converters are used:
    AD1CR = 0x00200600 | channel;
    This is the AD1 control register. You are setting the CLKDIV to be 0x06. Thus, the A/D clock is 60MHz / (6 + 1) = 8.57MHz! This is almost double the maximum recommended value. I'm guessing this code came from a Keil code sample where the APBDIV was set to 0x0 instead of 0x1, causing the peripheral clock to be 1/4 of the system clock.
    Since the APB clock is 60MHz, I recommend changing the aforementioned line of code to:
    AD1CR = 0x00200E00 | channel;
    This will result in a 4MHz A/D clock (60 / (14 + 1)).

  • Thanks for the help.
    I fixed a few problems in the firmware and added a couple of features that I needed.
    If you are interested I can write a simple readme and give you the code.
    Hope it helps

    • I'd love to see the adjustments you made to the code. Especially if it is something that will improve the device for everyone.

      • ok, how do I send you the code?
        FYI the code contains the following fixes:
        1)Current data in buffer was discarded when Usb cable was connected
        2)problem when an interrupt occurred when the data was being saved (device froze)
        3)if the '\n' was lost when parsing nmea str no check for buffer overrun, memory was corrupted
        4)yellow led
        In addition, I added the following:
        1)if configured save data in binary mode to save space/improve speed
        2)(attempt to) recognize doubleclick to stop/restart recording data
        3)add fields in the config file to change the freq of gps recording and accel recording; save nmea commands,add accel calib
        4)In the text file, gps data is recorded in a decimal format directly usable in google maps/earth
        5)added a tool to create kml files from the binary data for Google earth (drag&drop) to display the recorded gps path
        6)added a tool to generate txt file with accel data from the binary data (accel data recorded w/ RTC)

  • Hopefully I'm not taking (too much) advantage of your patience but I have another question. I see the following file on the logical disk (3,491,536 bytes; apparently created September 08, 2008, 1:03:37 PM):
    03 Turn the Lights Out.m4p
    I haven't find any description on your web site. What's the use of that file?
    Thx again

    • That one is a mistake and you can definately delete it. It means the guys in production loaded an MP3 onto the card and forgot to delete it before sending it out the door.

  • Forgive me for the second naive question.
    I left the kinetamap horizontal for several minutes. The log contains the following entries for the steady period:
    The GPS is putting me in the middle of the Arizona desert; however, what is really confusing me are the accelerometer readings. I was expecting to see 1g on the z axis and 0 on x and y. I'm not sure why y is always reporting 255 and what's the default scale.
    When in the user guide you say "it?s up to you to decipher what they mean!", I didn't expect to be this cryptic.

    • Ok, so this is kind of a two part question.
      1.) It sounds like you aren't getting an accurate GPS position.
      -The EM-408 requires more than 10 fixed readings before it starts accurately reporting the position. Make sure you wait for this many readings before decoding your position.
      2.) The KinetaMap is reporting "funky" readings.
      -The KinetaMap uses the LIS302 accelerometer. This is an 8 bit digital accelerometer. The initAccel() function in the firmware initializes the device for 5g resolution; however you can change this to up to 16g resoulation if you need it.
      Before you can get accurate measurements from the accelerometer, you'll need to calibrate the accelerometer either in code, or by performing some kind of post-processing on the data. This means you'll have to find out where the '0' point is and properly adjust your readings.

      • ryowens84,
        thanks for the prompt response. Yes I had waited long enough. This is another exzample (from a different location), after more then 100 readings there was an error of more than 25 miles from the physical position of the device.

  • Forgive me for asking a naive question. In the Kinetamap Firmware 1.1 I see these defs:

    define STAT0 (1<<31)

    define STAT1 (1<<16)

    However, if I check the the datasheet (KinetaMap v14 8/1/2008) I see STAT1 pointing to Port 16 P1.16 (as in the define) while STAT0 points to port 12 P1.17. Should these match?

  • Part 2.
    I was able to get the Bluetooth connection up using the pairing key "1234"?
    Bluetooth and USB operation appear to be mutually exclusive. It also seems that the device will not store fix information while the USB is connected.?
    Bluetooth appears to be output only at this time. You get a stream of $CPGGA records over a virtual COM port.?

    • Thank's for letting us know some of the issues with it
      How would you rate it over all?
      How long does the Battery last for?
      Please let everyone know about any issues/points to note about it

  • Part 1.
    If you buy one of these you should know that it will arrive without any documentation at all.
    When you plug in the USB, the Kinetamap appears as removable storage device on which you will find comma delimited files created containing GPS coordinates, battery voltage, and X,Y,and Z readings from the accelerometer. It seems to open a new file each time it is powered on, or the USB is disconnected then connected.?

    • Sorry about that - we don't ship paper with any of our products. You can find the user manual listed above.

  • Chizat: _
    I did have one quick question: Is it possible to use a USB charger for power only and continue logging?_
    Remove the if clause that starts
    if(IOPIN0 & (1<<23))
    from the SparkFun code.
    To log with USB power do the following:
    1. Start with KinetaMap off and unconnected.
    2. Turn on KinetaMap.
    3. Plug in USB cord.
    To access KinetaMap SD card do the following:
    1. Start with KinetaMap off and connected to the USB port.
    2. Turn on KinetaMap.
    Warning: This is only an educated guess. I haven't tried it. If it doesn't work, you need an SD Card writer to get working software on the KinetaMap.

    • Thanks Michael,
      I can see how that would certainly be a decent solution. I am also going to look into the USB functionality to see if I can get it to recognize a data connection vs. only power. I'd like to be able to mount this thing permanently in my car.

  • I've had about a week to hack at the KinetaMap software. In that time I've come up with a few bug fixes/enhancements and a few more questions.
    Most of my changes speed up the data logging and prevent log file corruption. I have permission to release the source if there is any interest.
    Not so coincidentally, my questions are all along the lines of data logging. I'm submitting them as responses to this comment to keep within the 1000 character limit.

    • Question 1:
      Firmware version 1.2 includes the following comment in the change log: "Lowered MAX_BUFFER_SIZE in KinetaMapPins to 400 to prevent 'lock-ups' when trying to save too much data".
      What do the lock-ups look like? Everything seems normal with a few hours at 512 bytes.
      Question 2:
      Commands are sent to the GPS to report GGA/RMC sentences every second, but they aren't logged at a 1 per second rate. I fixed some errors in the UART ISR that could result in data corruption, but I still see seconds without a sentence. Does the EM408 really report one sentence per second?
      Question 3:
      I've noticed that the maximum rate that I can log data to the SD card seems to depend on the file name. My guess is that has to do with the location of the file in the FAT. Initially just the *000 files couldn't log 100 accelerometer samples per second. Now files *000 - *005 can't keep up with the 100 sample per second.
      Has anybody else seen this problem? Is it expected?

      • Ok, here's my attempt at some explanations.
        1.) I had to lower the buffer size because of how much data can be added to the buffer in one 'log.' When I set the max size higher than 400, then I ended up with buffers bigger than 512 bytes, and if this happened the SD card wasn't happy. When there were 'lock-ups' the unit just stopped logging data.
        2.) The EM-408 does report every second, however each message is run through a CRC check, and another manual check to make sure the data is valid. If the GPS message doesn't pass the checks it doesn't get logged. You can probably improve the current checks, or remove the checks altogether if you want to see all of the messages. However if you corrupted messages are logged it's much harder to input the GPS data into online viewing programs.
        3.) Can't help you with this one. Seems very strange and I'll have to do some testing to try and replicate it.

        • Thanks for the prompt response.
          1) I've collected a few hours of data with the buffer at 512 bytes and I haven't seen a lock-up. I'll let you know how things go.
          2) I'll disable all of the checking as see what happens. If corrupt sentences are being thrown out, I'll try to fix that. I already fixed one scenario.
          3) Now only files *000 through *002 seem to have slow writes. The slowness can be seen by looking at the time it takes to complete an sd_raw_sync call (that forces the writes).
          If there's ever another revision of KinetaMap hardware, it would be nice to give the processor and SD card a little extra life after the switch is put in the off position, then all of the syncing can be skipped.
          It looks like I have a lot to investigate. I'll get back to you and even send you my results if you want them.

          • 1) A few more hours and still no lock-ups. I fixed a lock-up like behavior due to settingsString being to short, maybe your change in buffer size moved settingsString and masked the real cause of the lock-up.
            2) The problem is a bug in the checksum calculation. Any sentence with a checksum containing a character 'A'..'F' was miscalculated.
            3) Still no clue. I'm going to ignore this one. It's a non issue when writing 50 samples a second or less.
            Is there somewhere that I can send all of my fixes so they get considered for the next release?

  • Has anybody tried to compile the V1.2 Firmware?
    I get an error indicating that "TIMER_FREQ" is undefined in main.c. Not only is it undefined in main.c, but it doesn't seem to be defined in any file. main.c is the only file containing the string "TIMER_FREQ".
    It's quite possible that I have a set-up issue, but I tried compiling Francesco's code and that seemed to build okay.

    • Sorry about that. It should be fixed now, try downloading the KinetaMap_v1_2.zip folder again.

      • The new package seems to build fine, but FW.SFE is different from the one in the older package. Is the new FW.SFE the one that KinetaMap actually ships with?

  • It may seem like binary is not working at times, it can be caused by running the unit for a short time then shutting it off.
    I ran the unit for a few seconds then shut it off, there were no files. When I leave it running and plugg in the USB it forces a flush of the buffers (thanks to FR) and the data is whole. It threw me off in testing various configuration parameters and so I dug deeper.

  • Can I download firmware from a kinetamap if I lost the file I was working on?
    Also, would it be possible to add a gyroscope for more information?
    I am new at this, but extremely interested in playing with it.

  • GPS Not Logging...Anyone have any ideas?
    Just rec'd my KinetaMap this afternoon. Isn't logging GPS. Upgraded firmware (1.1.2). Now I have a green flashing light (and clear sky) and log_gps = 1 in config file. Logs accelerations on all axes, but nothing on the GPS side.
    Other info: tried first with legacy firmware...no GPS logging then either, then upgraded firmware.
    Battery currently logging 3375-ish
    Here's config file.

    • The first thing I'd do is charge the battery for a while; 3375 seems low.
      If that doesn't fix it, please put the v1.2 firmware on the device (different from the 1.1.2 firmware). This is SparkFun's firmware and I'll be able to help you more if this is one it. Firmware 1.1.2 is from a customer. I think when you received the unit it may have had an older FW version on it.

      • Hi...well, great minds think alike. I did reinstall the 1.2 firmware early this AM. Downloaded from the site. Still no luck with the GPS.
        Here's the current config. Also, after charging all night, highest battery value I get is 3644. I can send a log file if you like. Thanks, DAP

        • I am having similar troubles. I'd say start with this, I know it works but haven't figured out how and why minor changes cause it to not work. So far binary data is not working but everything else is. Don't use the EXEC_BIN_ONLY FW file. I'll keep testing and let you know what I find.

  • I was just trying to upgrade to Francesco's firmware. From what I can see the bootloader will look at the SD card which is a very nice feature. Is this correct?

    • Ok great. All you have to do is download the Firmware KM_1.1.2 zip file from the product description. After unzipping the folder, open the "EXEC" folder and you'll find a file named "FW.SFE." When you plug your KinetaMap into your computer with a USB cable, and power the device, a USB mass storage device will show up on the computer which represents the storage on the KinetaMap. Just put the FW.SFE file into the mass storage device and then unplug the KinetaMap from the computer. The KinetaMap will automatically reset and load the new firmware.
      Good Luck, and let us know if you have any problems!

  • Could someone point me in the right direction on how to upgrade the firmware? thx.

    • Hi,
      What are you trying to do? Do you want to write your own firmware, or upgrade to Francesco Ruta's KM_1.1.2 firmware?

  • My message was too long and wouldn't fit in one post...
    Anyway, I don't know the full consequences of overclocking the A/D block, but I'm guessing it's not good. One of the KinetaMaps I bought has a completely non-functional A/D block and I'm wondering if it got fried.
    Has anyone else noticed a problem with their ADC's?

  • This would be much more useful if the accelerometer data were sampled a bit faster (20Hz-30Hz?).

  • I'd really like to see some figures on battery life.

    • By the looks of it, at 110mA active power draw, and 1100mAh battery, you would have a 10 hour battery life

  • Hi, I'd love to see some pictures of the PCB added! Thx.

  • Thinking of buying one; so I have a few questions...
    I'm looking to put together my own tracking service so the idea would be to collect a number of gps reading, lump them together, say every few minutes and upload them to a server by e-mail or http
    When I compare the KinetaMap with the UberTracker, the KinetaMaps seems like a more mature and newer product; but the UberTracker does the whole trick; however, selection of carriers is not very straightforward on that device. I would be using this on vacation trips and most likely with local SIM cards which means I would have to change carrier in the main.c file, recompile and load new firmware for each trip. Doable, but not so straightforward.
    An alternative would be to use the KinetaMap and a smartphone with software to read GPS positions/acceleromerter readings over Bluetooth, lump together readings, and upload to server; and handle any "no network" situations
    1. With the KinetaMap, did anyone try to read/parse gps log items over Bluetooth while the device is still logging? Would that work?
    2. did anyone try to build an uploader for the data?

  • Hey guys,
    I'm interested in hooking this up to an iPhone to take accelerometer readings from the device. Has anybody tried this and had any luck?
    -Ted Bendixson

  • Could someone please explain how to recompile the firmware to get the FW.SFE file? I'm attempting to change the KM_1.1.2 to send accelerometer data over the bluetooth SPP, i have visual studios set up though my experience with coding is limited.

    • If you're running Windows, install WinARM. Once you do that, open a DOS window, cd to the directory with the makefile, and run the command "make". This will compile the code and generate the FW.SFE file.

  • Downloaded the firmwarev1.3. It crashed kinetamap and now nothing happens no lights, no logging. Tried the other firware but cannot revert. Is there a way to get the firmware that comes with the device? Any help would be appreciated.

    • I've the same problem. After 1 hour of logging the kinetamap crashed.
      I've tried to power on but nothing happens. The only feedback is the red light when I plug the usb to pc.
      Pc doesn't recognize the kinetamap.
      Any help would be appreciated.

  • Can I please have a cheaper version without GPS

  • Is it possible to increase the frequency of accelerometer logging through firmware? I need at least 50Hz per channel.

  • After playing with mine for awhile I made a parser in python that produces .csv files, elevation profiles and .kml files. If it's useful to anyone I put it up on bitbucket. It requires python 2.6, numpy 1.4.0+ and matplotlib 0.99.3+. Directions are included at the top of the .py file.

  • Hi guys,
    I just bouth the KinetaMap and i am seriously confused as to what axis is what. I have the device on the desk right now with the lable facing 'up'. How do the x,y and z axis line up?

    • Both kinetamaps we have, when looking directly at (ie lying flat down so you can read the stickers), +'ve x is going away from you, +'ve z straight down, and +'ve y to the right. It'd be worth doing a few rotational tests just to ensure this is the same for you though

      • Cheers brother! We ran some running tests and they seem to confirm your statements. Im working an an excel program at the moment to get rid of the 65536 reading error.
        I saw your comments about the 65536 thing. It turns out the compiler has problems displaying g readings in the negative zone. A quick way of fixing this is to go (2^16-the very large number)provided that this number is in between 65536 and 32768. Hope this helps :-)

  • Hi all,
    I've just downloaded the v1.3 firmware and expanded the zip file contents. It appears that there are header files missing from this package. Anyone know where to get the full firmware package?

  • I wonder if I can sell a service with the kinetamap under the name of my company, I do not want to be reseller kinetamap but include it in my service.<br />
    I hope to be clear in my explanation.<br />
    <br />
    thank you again

    • Contact techsupport@sparkfun.com for information about using our products for commercial ventures.

  • Hi.
    I'm running the Firmware V1.3 (FW.SFE file into the zip file) and having an issue with the accelerometer readings in the CVS files: they are out of range by far.
    UTC, X, Y, Z, Batt;
    224817, 65514, 65272, 65530, 3666;
    224817, 65511, 65269, 65528, 3666;
    224817, 65514, 65271, 65529, 3672;
    I would expect numbers in the (-127,127) range, but the data is in the range of (0,65535)!
    In the other hand, the GPS works fine.
    As additional info, the problem was present since the beginning. Also, right out of the box, the config file was not set with the default parameters (config menu and BT were set to 1)
    Any hints?
    Thanks in advance!

    • Hi. I seem to be having the same problem as RI with the accelerometer reporting data out of range ie.. 0 or 65500. <br />
      Also when I tried uploading the Firmware V1.3 FW.SFE file thinking that it may have been a firmware problem, the unit has crashed and won't do anything when turned on. No lights at all.<br />
      Also if an updated user manual to include the ADXL345 accelerometer be put up that would be awesome.<br />

  • I'm generally very happy with this tracker but I ran into trouble with the batteries. One unit that I have was extensively used for a few months and I believe that the unit was left on for more than a few days, completely draining the battery. As a result of that the battery is dead so I went to change it ... that sticky tape between the GPS and the battery is quite ... ehm ... sticky.
    Well, to the point. Does anyone have any suggestion about how to modify the firmware, or some hardware trick, to protect the battery by shutting down the unit if the battery voltage is low?
    I just put a new battery in and it is happy as a bunny!

  • Hi,
    As 1.1.3 firmware doesn't work with new accelerometer chip (ADXL345) I made an attempt to implement converter (BASH script) of NMEA logs into KML tracks understandable by Google Earth. It reads CSV file fith RMC strings from standard input and writes lines of KML file into standard output. It ignores non-valid RMC records as well as all GGA ones.
    Unfortunately the script cannot be posted here so I temporally put it into one of my servers
    If the link doesn't work I could email it to everyone interested.
    Below is a simple usage instruction.
    1. Get a script and save it locally as rmc2kml.sh
    2. Make it executable: chmod +x ./rmc2kml.sh
    3. Feed KinetaMapNMEAxxx.csv into it, e.g.
    cat KinetaMapNMEA001.csv | ./rmc2kml.sh > track.kml
    4. Open track.kml in Google Earth
    PS: The script doesn't pretend to be robust and universal -- it is just an attempt to play with tracks in google earth.

  • Hello everyone! I'm brand new to this so please excuse any ridiculous questions. :)
    I need a logger that will record position more often than 1 second. I was thinking (hoping) that I could accomplish such a feat with this board. My intent is to parse out the GPS data and infer position (using the accelerometer data) to fill in the gaps between the 1 second GPS interval. The logic here being if you know where you are now, and you know where you are in a second from now, AND you have the acceleration data between those two points then it seems reasonable that a script could be devised to infer a track between those two points. Right?
    My first question (I guess) would be should I even be looking at this board for this, or can anyone recommend a better way to do this? Second question would be, has anyone out there already written scripts that use accelerometer data to calculate a track between two known GPS points?
    Eternally grateful,

    • What you are trying to do is called dead reckoning. I'm not an expert on this, but normally you need more than just accelerometers, I believe you also need a gyroscope and/or mags for orientation. These sensors combined in one package is called an inertial measurement unit (IMU).

  • I do not see support for the ADXL345 accelerometer in the latest (1.2) firmware -- I still see references to the LIS302 only. The kinetamap I just bought has the ADXL345 and it does not seem to read correct accel values now that I loaded v1.2 from the website. Help! I need to get this up and running as soon as possible.

  • Thanks ryowens84, that should be accurate enough for my project.
    Additionally, is it easy to interrupt internal batteries so as to run on other batteries for occasions when one cannot wait for recharge time?

  • I have seen reference to both LIS302 and ADXL345 accelerometers. These are about 8-bit and 12-bit. What is the resolution in acceleration in KinetaMap.

    • The KinetaMaps originally had the LIS302 accel; but now have the ADXL version. The resolution of KinetaMaps is 12 bits.

  • I'm feeling like a dolt - but i've gone through the manual with no luck. when i turn on the kineta map, i get a solid blue light. no logging is happening on it.
    config hasn't been altered from the factory defaults. any ideas?

    • Maybe you sorted this out already but I just recently got my Kinetamap and run into the same problem.
      Careful read of the manual show that even though it says that the factory settings are power-on and go, the "config_menu=1" means that it is waiting for a menu selection to start doing something.
      I set config_menu=0 and away it went.

    • Is the Blue LED off when you connect the USB cable to the KinetaMap? If not, it might be broken.
      I just looked the code I'm running, which looks just like the SparkFun code as far as the LEDs at boot up are concerned. The sequence should look like this:
      Power Applied
      - Both Blue and Green On
      Initializes serial ports, SD card, and I/O pins
      - Both LEDs Off
      Initialize Interrupts
      - Green On
      Parse the configuration file
      - Green Off and Blue On
      Configure device based on configuration settings
      - Both LEDs Off
      After that there will be some blinking based on what is logged. The SparkFun blink code has some bugs, but it should blink.
      If you delete your config file, does a new default file get written? If so, we know it runs to that point.

  • Hi all - I recently purchased the Kinetamap, very fun little project. I have been looking at both the included firmware and Francesco's additions. Thanks to all involved!
    I would be very interested in seeing any other improvements in functionality.
    I did have one quick question: Is it possible to use a USB charger for power only and continue logging?

Customer Reviews

No reviews yet.