Thank-you Charles. This is EXACTLY the information I was looing for. I should be able to decode the exact operational methods from the annotations and the true binary code seems to be there as well (Havn't verified that yet, but it looks like)
My next question though. Is there any way to actually send the hex/binary directly to the CM15. Knowing what to change and how to change it is fine, but if I cannot send this to the CM15, it won't help to be able to change the binary.
I'm sure there is a simple method, but I can't seem to find it in the Documentation for VB, script, or any of the other places I have looked. Obviously, I can miss the easy things, seeing I missed this file ::) ,but maybe someone else isn't as blind as me?
TIA (Thanks in Advance....)
How to Patch the CM15A EEPROM Memory
It's completely undocumented, not well tested, slow going, and you're on your own if you do it. But you download to the CM15A the same way you would download to the old CM11A, i.e., you send 19-byte packets, each consisting of a 1-byte header (0xFB), a 2-byte Hi|Lo hex EEPROM address, and a 16-byte block of EEPROM code. The 16-byte block has to be aligned with a 16-byte EEPROM page boundary, i.e., 0x0000, 0x0010, 0x0020, etc. You can use the 'ahcmd sendrawplc' command in the ActiveHome Pro Software Development Kit to accomplish this from the command prompt.
Steps:
- 1.) Download to the CM15A the original program which is to be patched.
- 2.) Look up the resulting ahpeeprom_w.txt and ahpeeprom_w.bin files in folder: C:\Documents and Settings\All Users\Application Data\Active Home Professional\
- 3.) Make whatever changes you want to the binary image file (and remember where you made them).
- 4.) For each 16-byte page which includes a change, download the entire page as described above.
Example:
Suppose you change the value of the byte at EEPROM location 0x0123. Then you would download the 16 bytes beginning at address 0x0120 including your change:
ahcmd sendrawplc FB 01 20 X0 X1 X2 CC X4 X5 X6 X7 X8 X9 XA XB XC XD XE XF
where CC is your changed hex byte and the XN's represent the other bytes in that page.
Notes:
- Each byte has to be entered as two hex digits (with leading zero if necessary).
- Wait a few seconds between sending each page - ahcmd returns before it's actually ready to accept the next command..
- Someone could probably write a BASIC program for doing this. If any major changes are made, the initial jump to the start of the timers needs to be nulled out until everything else is downloaded, else all hell will break loose.
Have fun!
[TTA Edit: Formatted for improved readability and added to User-Submitted Work-Arounds [Updated: 2007/06/15] (http://www.x10community.com/forums/index.php?topic=12198.msg68850#msg68850).]