IMU-3000 and Hello World!

Firstly this is a new blog, so, hello world. There, now that's out of the way!

Onto the purpose of this post! I've recently got one of InvenSense's evaluation boards working and I'm told this is usually quite frustrating - and that I should document how I got it to work.

Let me prefix this document with a warning, InvenSense have not done a particularly good job of developing this product's accompanying software and the documentation as a whole is fairly poor. Negativity complete, onto the explaining!

The board in question is an IMU-3000EVB evaluation board (featuring their IMU-3000 3-axis gyroscope and a KXTF9 accelerometer) which presents an I2C interface (the specifics of which I am not currently familiar with, perhaps another post another day...). Conveniently the board was given to me with an interface device "ARM-EVB" or the unhelpful title of "ARM Reference Board". This acts as a USB->I2C interface, allowing their demonstration software to talk to the IMU-3000 etc.

The hardware setup is trivial, but for completeness: You use a USB Mini-B connector from your host computer to the ARM Reference Board, and this board connects to the IMU-3000EVB board via a 20-pin right angled connector. Done!

The software is trickier, this is where their software's quality becomes apparent. QUICK NOTE: If you have Lego Mindstorms installed on your machine, there's a very good chance that you simply CAN NOT use this device. It's clearly terrible design somewhere, but Lego Mindstorms and InvenSense have the same 'style' of device in their products, and it means Windows cannot tell them apart - and Lego gets priority when you connect the USB device, meaning the InvenSense software simply cannot connect to it. Uninstalling the Lego Mindstorms software may help, but the machine I was working on would not let me do that for some reason.

  1. Download their software from here (if this link dies, navigate to their homepage and then their product page - scroll down until you reach the "Triple Axis (X/Y/Z) MEMS Gyroscope" section. The whole page is formed like a table of data, and one of the columns is marked "Software". Even though the Software entry for the IMU-3000 is blank ("N/A"), it is in fact the same software as the MPU-3050, so you can download that one instead!)
  2. Unzip/extract the file you've downloaded and run it. There are two installers provided, one ends in "x64" or similar, this is the one you use on a 64 bit machine, the other if you are on a 32 bit machine. You will be guided through Your Average Installer (TM), nothing unusual here.
  3. When the installation is complete, you may assume you're ready to go - and if the software was written well you'd be right. As that is not the case, you will find that running the program will - on every computer I have tried - result in an error exclaiming that MSVCP100D.DLL is missing! The reason for this is simple: The developers of the software compiled it with Visual Studio 2010, and they did so in Debug mode. The version of the software they distribute is a debug build, so computers don't have the required .DLLs unless they are development computers. If InvenSense ever read this, the solution is to re-compiler the software in "Release" mode. It's trivial to do.
  4. You now need MSVCP100D.DLL from somewhere. I used this website. The site looked a little suspicious to me at first, but I was using an unimportant computer, in a hurry and just tried it - I've had no side effects. If you don't want to risk it, have a look for alternate sources for this file, but it seems legit. Make sure to click 'Download Zip File' and not 'Download MSVCP100D.DLL Fixer' - it would want to run software on your computer and whilst I have no evidence it is harmful, I'd avoid it myself. Better safe than sorry.
  5. When you've downloaded this file, unzip it/extract it, navigate to the extracted folder and you will see a README file and msvcp100d.dll. Ignore the README, it just tries to tell you about the previously mentioned "MSVCP100D.DLL Fixer". Copy msvcp100d.dll, but don't paste it anywhere yet!
    You need to paste the file into the res/bin folder of where you installed their software. By default, the path is:
    C:/Program Files/InvenSense/PC Demo UI Lite v4.1.3 MPU3050/res/bin
    Paste the file in there and the installation is complete!
  6. Plug in your device. From here it gets hard to give a good set of instructions as I only got it to work on a Windows 7 Starter Edition machine. On Windows 7, Windows Update launches and tries to find the appropriate drivers for the device online. Let it do its magic, it may take a while. Do not be alarmed if, as it did for me, Windows Update claims to have find the correct drivers and names them as something to do with GPS. Ignore it, the technology connecting it to the computer is seemingly rebranded hardware/firmware/vendor IDs that means Windows gets the name wrong, but the functionality is correct.
  7. You are, I believe, done! Running their software from the start menu (Listed under InvenSense) will launch a program that initially presents a sword/rapier looking object that moves as you move the device! Huzzah!
Relevant datasheets you may find useful (all found on their products page listed next to the IMU-3000, if these links become broken in the future):
Interesting note:
The ARM reference board acts, generally, as a USB->I2C interface. However, what's interesting to note is that it actually appears to the host computer as a USB->TTL converter, meaning it is usable with serial port libraries. Unfortunately, it appears the USB->TTL conversion is done by the ARM itself, and not within a specialised USB cable (such as those by FTDI), and you cannot therefore 'patch in' and talk directly to it as a USART peripheral embedded in a larger system. I suppose that would be superfluous given its I2C interface, already. Still, interesting!

I hope this helps somebody!


  1. Thanks for your post. The download from Invensense was useful as there is no link on their website. Here are are few other downloads for the 6050 and 9150 I discovered with an educated guess:

  2. No problem, I'm glad I've helped a bit! I recommend posting about your experiences somewhere to build on what I've written, so people can find your new insights via Google!

    I hope your project goes well.


Post a Comment

Popular posts from this blog

Virtualised Build & Test Environments for Embedded Software