Boomerang Repair USB EEPROM

From TinyOS Wiki
Jump to: navigation, search

Problem

A Tmote Sky module does not identify itself as a Tmote when plugged into a USB port and does not appear in "motelist", though it does appear as a USB serial device. The leds on the Tmote unit may cycle correctly if it is still running the initial factory program. This mote behaves similarly on multiple machines, though other motes work without issue or problem.

Solution

Ensure that you have the most recent FTDI CDM drivers installed for the device, dated 19th May 2006. You can inspect the driver version for the device by 1) plugging it in, 2) navigating to the Device Manager, 3) expanding the "Universal Serial Bus controllers" branch, 4) edit the properties of "USB Serial Converter", and 5) click on the "Driver" tab. You should see this

Usb-serial-converter-properties.PNG

If you have an older driver installed, update the driver by clicking "Update Driver" and following the instructions using the new FTDI drivers you just downloaded.

Next, download and install the FTDI MProg program, the most recent version os 3.0a. We are going to use the FTDI MProg utility to inspect and modify the USB EEPROM. MProg requires the FTDI CDM drivers be installed.

Run MProg with a device connected. Below is a screenshot of what MProg looks like before you do anything.

Mprog30a-initial.PNG

Execute "Device / Scan", which will report something like the following in the lower window

Number Of Blank Devices = 0
Number Of Programmed Devices = 1

Then select "Tools / Read and Parse" which will read and parse the binary data stored on the USB EEPROM. Below is another screenshot of what that should look like for a healthy Tmote. Your misbehaving Tmote will be reporting different values, but I'm not sure what.

Mprog30a-good-tmote.PNG

To repair your Tmote, first uncheck "Only Program Blank Devices". Then enter similar values as in the attached screenshot for "Device Type", "USB VID / PID", "USB Version Number", "Manufacturer", "Product Description", "Bus Powered", "Max Bus Power", "Serial Number Prefix", etc. Then select "Device / Program" to write the new values. If the "Device / Program" option is disabled, first save the EEPROM template by selecting "File / Save As", then try again.

After programming the new EEPROM, unplug your Tmote and reinsert it. It should work correctly now.