i’m Watch Accelerometer

I tried to get the part number for the accelerometer from im Watch developer support and they refused to give it to me. The response was you don’t need need that information just use the supplied sensor library. I tried to tell them the library would only collect data at 10 Hz and I require 200 Hz. It also wastes time by always sampling the magnetometer and the accelerometer even if you only need the accelerometer data.

After trying for a few days to get the information from developer support I decided to figure it out for myself.

I wrote a little i2c scanner and enumerated the devices on the bus. I found a device at 0x19 and 0x1e. now to figure out what they are. I disassembled the the sensor library supplied by imdeveleoper.it and found the hex constant 0x19 in the initAccel function. So far so good.

I then stepped up my scanner to read all of the registers from 0 to 127. The first register was at 0x7 and the second was at 0xF and then a bunch more upto 0x2F. I had expected some kind of who am I at 0x0. No such luck. I re-read the registers a few times looking for the changing values. The values at 0x28 to 0x2d changed with the orientation of the device. Good I’ve found the accelerator, but which one ?

I started going through accelerometer datasheets and found that the st micro parts had a who_am_i variable at 0xF. I finally found a match, 0x33 in the LIS3DSH datasheet. The changing values also correspond to the locations of the x, y and z values  so I’m pretty sure I’ve found the correct part. EDIT: i’m Watch support finally got back to me and it is actually the LSM303DLHC. The magnetometer and thermometer are both integrated.

So now I get to re-write the imWatch sensor library. The good news is that the accelerometer has a FIFO, can sample at 5KHz and has a temperature sensor. After I’ve re-written the sensor lib I’m going to see what’s hiding in the magnetometer.


8 thoughts on “i’m Watch Accelerometer

  1. Hi there,

    Maybe you could help me. I did try to get in touche with I’mwatch customer care, but it didn’t help.

    Is there a way I can tell if my magnetometer is working? The compass software that comes with my Imwatch doesn’t move!

    Thanks for you help.


  2. Sorry can’t help with a dead device. If you knew how to program you might possibly be able to use the info from this post to diagnose it.

    You’ll need to go through i’m watch tech support. They are pretty responsive but don’t always have the right answer.

  3. Like you did, I’ve tried to collect accelometer data at 100 Hz for research purpose, but the library seemed to have a limitation of frequency. 🙁

    Thanks for good info and I’m so looking forward to seeing your result.

  4. Hi guys, I wrote a simple app to display accelerometer data (After so many changes its exactly like sample app given by I’m Developer). But my ImWatch is simply displaying 0.000 value and logcat output is also 0.0 even after my code is same as provided by I’m Developers.

    I dont know much about it any suggestions ?

  5. The code on the i’m Watch site worked ( in firmware version 2.0 ) as long as you keep the sample rate below 10Hz. I haven’t tried with newer firmware.

  6. Hi Angus, Yesterday, I was unable to get any accelerometer output, compass and other gestures were not working as well. Playing with watch enabling disabling different options somehow compass, different gestures and my app started showing out put. Now I will try your up-sampling code I need two sampling rates 100, and 50 which i am getting on phone. will let you know if i run into some troubles.

  7. I managed to build akkea-jni.c and Android.mk as you described got same results. Then i got libakkea-jni.so files in armeabi folder in libs folder of project. Then
    I tried to copy your code in existing accelerometer app for i’M watch. but i got many error. such as SeismoVector class is not available. I don’t know what to set start time, how to set sampling rate. etc etc. Could you please share the running code, how you are using this all to write full app for accelerometer data.

  8. Hi Muhammad,

    Check this blog entry Sungjae has posted the needed SeismoVector. My code bypasses the i’m Watch code so don’t try to use both at the same time.


Leave a Reply

Your email address will not be published. Required fields are marked *