[Coladam] Reversing AdamNET

Dale Wick dmwick at yahoo.com
Wed Sep 21 23:09:24 CEST 2011


Since AdamCon I've felt inspired to start reversing the AdamNET protocol.  The only documents I have on the protocol are from the various versions of the Adam Technical Manual.  So I used that as a starting point.

The protocol is based on a 62.5k baud serial half duplex protocol.  So in the 6 wire modular cable, there are 4 wires used:
1 (white). +5V power
2 (black). ground (logic)

3 (green). ground

4 (red). ground

5 (yellow). AdamNET reset (active low)

6 (blue). AdamNET bidirectional serial(inverted from TTL serial)

So when the AdamNET is reset, the pin 5 goes low briefly, then remains high the rest of the time.  

The strange thing about this is that although the ATM document mentions the signals several times, it never actually shows the pinout for the AdamNET connector.  I reverse engineered the pin out by taking apart one of my AdamNET keyboards to trace out what the keyboard logic board was up to.  And once I hooked it up to an oscilloscope I found what it was doing exactly.  It is actually pretty similar to i2c 4 wire protocol that I use at work, except that it runs at a fixed baud rate (and is inverted).

I've been working away on using an Arduino Uno to help be debug the parts of the protocol that are documented and are not documented.  Basically when the Adam boots up, it does a reset, then does a roll call on all of the 15 peripheral IDs, and the ones which respond are set up in EOS for use.

I'll post more details of the protocol in my next post.  But I have an Arduino Uno "sketch" (small program) that is build on the NewSoftSerial library for listening in on the AdamNET chatter.  It works fairly well, and all of the data shown corresponds perfectly to the spec from the Adam Technical Manual except for the checksum byte at the end of the extended packets.

I am currently working on a test of my understanding by creating a sketch that replaces the AdamNET keyboard, to see if I understand things correctly.  If I get that working, then I'll be one step closer to my goal of an AdamNET/USB gateway device.  It uses an enhanced version of NewSoftSerial that adds the ability to support half-duplex protocols.


More information about the Coladam mailing list