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.

 

i’m Watch Sensors

After almost a year the IMWatch developer site has finally released a library to access the sensors. They even released an example application but no documentation ???

Fortunately there are some tools to decompile java apps.

Below are the prototypes for the two undocumented functions the you’ll need to use to get access to the sensors.

public SensorServiceInstance(int updateInterval)
public SimpleShakeDetector(Context context, OnShakeListener listener, int updateInterval)

The important argument here is the updateInterval. It’s an int but what does it represent. A few tests show it’s the number of milliseconds between samples. Reading the decompiled code implies that this value must be greater than zero but has no other limits.

The application I’m writing needs to have a 200Hz update rate so I tried setting this value to 5 ms. This doesn’t get the required update rate. It seems the practical lower limit to updateInterval is 100ms which doesn’t even match the game update interval for the Android standard sensors updates. 10 Hz isn’t even the lowest rate I can use for my application.

Digging deeper into the sources looks like they have included a native i2c library to access the sensors. I might be able to use that to get direct access and increase the update rate. Stay posted for a blog post on where I get with that.

The full decompile source is available here.

Once again IMWatch has underwhelmed with no documentation and a marginally functional sensor library.  Another release, another fail.

Lenovo Thinkpad Tablet

The Lenovo Thinkpad 3G Android Tablet has been a lemon since it got released. When initially released the GPS in the tablet didn’t work. The ICS update fixed the GPS issues but caused more problems with 3G and Wifi. Here’s a link Lenovo Wifi and 3G issues.

Today I updated the tablet to ThinkPadTablet_A400_03_0070_0132_ROW and the 3G would no longer connect. I tried a Telus SIM card and a Bell SIM card. After 45 minutes on the phone with Telus tech support and 2 phone calls to Lenovo ( 1 that ended with the CSR hanging up on me for using big words ) the tablet would still not register on the Network.

With no resolution forthcoming from Lenovo I decided to ask the Great Google to help. Luckily some European customers have had a similar issue ( check post 28 which is an English translation of a German post ).  The steps below are from those posts with Canadian cell providers instead of the European ones.

You will need a 2G SIM-Card. I used speakout wireless but Rogers or Fido should work too. You don’t need an internet plan for this to work. Anywhere below where I mention Telus you can also substitute Bell.

  1. activate 3G (mobile broadband connection)
  2. activate 2G only (go to: setting -> mobile connections and activate “use only 2G”)
  3. press the reset button (the one between sim card slot and sd card slot
  4. After the reboot you should have a 2G internet connection with the speakout card
  5. reactivate 3G (go to: settings -> mobile connections and deactivate “use only 2G”)
  6. you should now have a 3G connection with the speakout SIM-Card
  7. you should be able to switch between 3G and Wi-Fi without any problems
  8. Turn the tablet off.
  9. Take out your speakout SIM-Card and insert your Telus SIM-Card
  10. Turn the tablet on again.
  11. The Telus SIM-Card should work now.

Overall I really can’t recommend this tablet as one of the primary reasons I purchased it was for the 3G functionality. I’ve already spent more time diagnosing this tablet than it is worth.  The other business class value add from Lenovo can be had from other manufacturers for less. The business features also seem to make the tablet mush slower than comparable devices.

i’m Watch

This was the second device I purchased as a small accelerometer based computer.  So far I’m really not impressed by this device.

A lot of time and effort has gone into the look and finish of this watch. Too bad there wasn’t equivalent effort for funtionality

 

 

Pros

  • Polished interface

Cons

  • Poor battery life – another watch with phone like battery endurance.
  • Incomplete Android OS – no sensor libraries.
  • Poor developer support – many known issues not published
  • Outrageous pricing ( they seriously have one listed for $21000 )
  • Cloud based configuration

This one has been a fail pretty much since day 1. I ordered the watch in February and it didn’t show up until October. During that time they were pushing hard to have developers create apps for the device. I didn’t bother with their SDK as I needed hardware accelerometers for my software.

When the watch arrived I installed the latest version of the software, installed the SDK and started to write my first program for it. I hooked it up to the computer and tried to find it with adb, nothing. After messing around for a while I fired off an email to developer tech support. They informed me there is currently no adb support. Nice a new paper weight.

A month later on their site I find a new OS version that includes adb support. Excellent now maybe I’ll be able to use it. By downloading and installing adb for this device you void your warranty ??? You don’t really own a device until you’ve void the warranty so I installed the new developer rom.

For some odd reason adb on the watch only supports network mode.

A couple hours later I’ve written a shiny new app to talk to the sensors. But no matter how hard I try I can’t SensorManager.getSensors() to return a sensor. I start digging around the logs and find this.

 
W/HAL (20912): load: module=/system/lib/hw/sensors.imwatch.so error=Cannot load library: load_library[984]: Library '/system/lib/hw/sensors.imwatch.so' not found

So another email off to tech support Ticket: #EFB-458-37919 and they inform me they are trying to get that fixed for the next software update. So back on the shelf it goes.

At least it’s taught me something new. Howto generate a screen capture using adb.

adb pull /dev/graphics/fb0
ffmpeg -vframes 1 -f rawvideo -pix_fmt rgb24 -s 240x240 -i fb0 fb0.png

WiMM one

I’ve been working with this device for about 9 months now. I’ve been writing some software for a medical accelerometer device for a couple of different research projects. Once the results of those studies get published I’ll link to them here.

 

 

Pros

  • Small form factor – 32×36×12.5mm
  • Lightweight – 22 grams and ~30 grams with the strap
  • Water resistant – I fully submerged it for about 5 seconds ( accidentaly )
  • Wifi – used to automatically upload data
  • adb support – standard
  • Standard sensors – the module has most of the sensors you’ll find in current phones

Cons

  • Poor battery life – never more than 48 hours
  • Incomplete Sensor API implementation – Accelerometer problem
  • Cloud based configuration – should be an option not a requirement
  • power  button – the module needs to be removed from the strap to get to the power button

Of all of the small form factor android devices I’ve been working with this is my favourite. As a developer device it’s great as it has all of the hardware sensors you’ll have in a phone and lots of great code examples. The hardware form factor is also interesting because of its’s size and that and i2c interfaces is accessible.

As a consumer device it still has some annoying quirks. I’ve never had the battery last more than 48 hours and typical was around 36. A watch that needs plugging in everyday has limited usefulness in my book. For my particular application it wasn’t a problem as it wasn’t ever used untethered for extensive periods.

Data entry is one of the most painful experiences on this device. I’m not talking about writing a novel here just try to get a wpa key entered. It’s got a rotating dial with the alaphabet and numbers, takes a long time to get from Aa to Zz.

Unfortunately it looks like it may no longer be being produced. Ted Ladd who was head of WIMM Developer Relations now lists his job as a university professor. I also contacted WiMM and they’ve stated “We’ve decided to move in a different strategic direction, which I can’t discuss”. I hope it’s a WiMM two.

Edit:

It looks like WiMM is discontinuing their support for WiMM one developers. I found a version of the WiMM addon package.  I also did a recursive get of the documentation before they take that down. I also have a copy of their “Opensource Package”

Here are the sdk and the usb setup instructions for windows.