Interesting Implications

Home:
erbbysam.com

Social:
Tweet
Vote on Hacker News

Historical:
August 3, 2014
WebRTC Security - an overview & privacy/MiTM concerns (including a MiTM example)
January 19, 2014
Bitcoins for BOINC
November 14, 2013
Book Review - Getting Started with WebRTC
August 5, 2013
Secure Distributed CSP - secure scheduling using homomorphic encryption & constraint satisfaction & a (small) paper error
May 5, 2013
5/5/2013 - State of WebRTC DataChannel Support
May 4, 2013
The most awesome plugin you have never heard of - Ming
March 17, 2013
What happened to Blink Personal

Fork this blog:
github.com/erbbysam/blog
<-- back

Why the EZ430-Chronos isn't a "real" development environment - 2011-02-22 11:51:04

The EZ430-Chronos looks like a great buy. $50 for a full development environment! Well, it is a bit too good to be true.

EZ430-Chronos

The ez430-chronos kit comes with a CC1111(USB/RF device) with is programmed with a RF to serial converter program specifically designed for pair and operate with the built in ez430-chronos watch program and therefore cannot work for any new application without a reprogramming. In order to flash the CC1111 with a RF to serial program (software available for download for free), requires the ability to reprogram it, which costs $50 for a kit called "CC-debugger".

However, there is hope... via simple python scripts and modifying the watch source code I was able to override the acceleration & time data communication to communication parameters back and forth (a bit of a hack).

To recompile the watch code I needed to use the "Platinum" version of TI's Code Composer Studio (CCS) because the free version that comes with the watch has a 4kb compile limit which is smaller than the base watch code. There is a 30 days free trial available on that so I was able to use that, but that isn't a long term fix obviously. Also, the price on that is absurd. $2-3K for non-student versions. Therefore you can't even recompile the code that comes on the watch without spending a huge amount of money.

If the EZ430-Chronos was a "real" development environment and wanted to compete with other cheap development environments then it should either provide everything you need to reprogram the pieces (CCS & CC-debugger) or it should clearly state that "you're going to be seriously limited unless you purchase the following". Because they do neither of these things it appears that TI is using the EZ430-Chronos as a loss leader and are forcing you to buy all of these other peices to make it work as advertise.

If you are looking for the files to modify in the "Sports Watch" source code in order to send raw data (as opposed to the sensor/time reprogramming data) over the preprogrammed C1111 here is a short list:

~Texas Instruments\eZ430-Chronos\Software Projects\Chronos Watch\CCS\Sports Watch\simpliciti\Applications\application\End Device\main_ED_BM.c line 18

~Texas Instruments\eZ430-Chronos\Software Projects\Chronos Watch\CCS\Sports Watch\logic\rfsimpliciti.c

If there is any interest I can post my source code here.

Nick - 2011-04-13 03:54:47
Hey great article,
I've been working on the watch for awhile now and I'm not very good at programming but is there a way to turn the raw data from the watch into a keyboard command on my PC? (example: if I'm shaking the watch and the accelerometer sends data to my PC through the RF access point, first, how do I find that data? and how do make it so that as the watch is shaking, it will tell my computer to hold down the "w" key.)

e-mail me plz and thanks

Ben - 2011-04-23 00:01:00
Hey, fantastic post. I've been trying to send customized data from the ez430 to the computer, and I'm frustrated that I didn't come upon your post earlier. I suppose TI will probably not be doing us a favor by adding this information to the wiki.

Can you possibly send me the code you used to send raw data over to the computer? Are there any special flags that need to be sent before the specialized cc1111 firmware decides to pass the rest on to the computer?

So far I've been successful getting openchronos and other small test applications working with the mspgcc4 toolchain, and I have been able to write custom applications to read of the usb serial port with the pre-built cc1111 firmware, but I have not yet gotten an end-to-end rf app working. Any help would be greatly appreciated. Thanks!

Ed - 2011-06-10 16:30:11
Hi erbbysam,

Really interesting post. I'm working with an eZ430-Chronos, trying to make it send packets to the RF Access Point, so as to get the RSSI value.
At the moment i'm looking at the Control Center DLL, the COM port management (bool BM_OpenCOM, void BM_CloseCOM, etc), to combine it with the RF_Toggle_LED_Demo.c example, but i get to nothing.
Could you post your source code please? Any help would be appreciated
Thanks!

erbbysam - 2011-08-10 19:20:34
Just a warning, some of the code posted below is provided under (c) copyright 2010 by UMass Amherst along with Texas Instruments.

From the paper I (co)wrote related to this using the EZ430-Chronos to do a simple RSA computation:

The user runs the transmit.py[appendix B] script on a computer with the CC1111 connected. Then the user inserts his string he wishes to encrypt with his secret key and puts his watch in “sync” mode. Then he runs the transfer. When the transfer is completed the watch will receive a command from the computer to start the encryption. After this, the user runs receive.py[appendix A] and puts his watch into “ACC” mode. The output in the program will be the output of the encryption function.

The watch code itself must be compiled using a non-trial version of Code Composer Studio by Texas Instruments and can be found online here: 
http://www.erbbysam.com/assests/code/CS466logic.zip
[md5=8f7153aa994c22444a0fb748d38ea91c]

The python code for the computer side communication, tested in Ubuntu 9.10, can be found online here:
http://www.erbbysam.com/assests/code/CS466python.zip
[md5=2945051062fae231fb48e5f11018db64]

Communication Protocol
Because we could not reprogram the CC1111 we were forced to override the existing communication protocol system within the watch. The “sync” commands that we use to send out the data are normally used to set the watch time. We however, have taken over the minute value transferred as our own unsigned 8 bit value. Transferring back is done in a similar manner with the “acc” commands which are normally used to transfer the acceleration values out of the watch to the computer. We override the y axis as our information and use the x and z axis bytes as preset values and counters to insure that we are getting back “good” data similar to ordering udp packets. Also, the receive.py[appendix A]  script is set to loop the data coming in because we do occasionally lose packets. The file rfsimplitciti.c[appendix D]  on the watch serves as our main file and contains the code that we modified to allow for the hack that is our communication system.

Cryptology
This is contained on the watch and is run within rfsimplitciti.c[appendix C]. The RSA implementation is found within modexp.c[appendix D]

Another side note, we never got this to work well with any large amount of data.

@Nick:
I believe there are pythons scripts that exist to turn the incoming data into commands, or you could write your own :)

@Ben:
good luck...

@Ed:
posted.

Dwayne - 2011-08-29 12:51:56
Very good article.  I'm very interesting this this kit.  I missed out on the half-price TI Deal (they'd run out of coupons).

SourceForge has a project up at http://sourceforge.net/projects/ez430chronos/files/

This makes use of the free tools, I think, to reprogram the watch.  I haven't got one yet, I'm planning to.

7 - 2011-10-16 03:20:53
I have chronos watch as well. I just hope that it will give use more freedom to compile using the free version of CCS. 

I have an application in my mind and I would like to add it on the stock Sports Watch source codes. In the end, I need to modify some things on the driver folder and it suddenly complains that limit has been reached. I hope some flexible abstractions are provided so that there will be no more modifications on the driver side. 

For now, I will download first the trial version of CCS to overcome the compile limit size.

Alex - 2012-03-10 16:12:30
Great post! I'd be really interested in your source code.

I'm pretty new to programming kits like this (I am a Computer Engineer, however).  The ez430 seemed like the perfect tool for me. I want to make / buy a small, very simple device with >= 5 buttons and a simple display, to use as a time tracker.

I want to press one button to track when I am working out, and press another button to track when I am reading, etc.

I have looked at other development kits, such as Arduino, SparkFun and Beagle Board, and they all seem like they would get too big (I want this thing to be convenient and small, so I can keep it in my pocket or on my wrist all the time). Can you point out the cheap development environments that you alluded to in the post?

My ez430 is currently in the mail. I wanted to program it as mentioned, and then have it automatically sync with my computer through wireless. It seems like this will either not be possible or may be very difficult. What is the path that you think I should take?

Mahmut - 2013-02-23 16:11:40
Hi guys,

I don't know if anyone is going to read this, but I have to try. Is anyone got erbbysam's code running ? I replaced his logic folder with custom logic folder, but I get some strange errors. If anyone could send me a whole project it would be great. Thank's a lot.

The views expressed here are strictly my own. © 2007-2014 Sam Erb