Bah. My current project just went in the toilet (realized the sniffer I was building wouldn't capture the Honda CD changer protocol properly, so I need to redesign it) so I'm going to tear into my chatpad now. I have to send in my 360 for repair anyway (yes, one of the new models is already bad) so I think this is a good time.
Well, I didn't have much luck. I had no problem connecting the 360 chatpad's data lines to a PC's serial port via a MAX232, but when I tried every baud rate I had in the app I normally use, I was only getting back what appeared to be garbage. Nothing seemed to produce consistent results. Of course, I used no parity bits and one stop bit for everything. This could be wrong, but I don't currently know how to determine that without a logic analyzer or DSO, neither of which I have.
I was able to see (thanks to my crappy old scope) that the data appears to be 0-2V. This made me wonder if it was too close to the threshold of the MAX232 and maybe I actually am getting garbage. The data appeared almost consistent, but key presses didn't throw up anything particularly recognizable.
I'll probably poke with this more a bit later, but for now I'm calling it a night.
Oh, here's a couple more photos:
sound negative, but you're probably going to find it difficult to reverse engine the protocol that this thing uses without a scope (at least till someone gets some understanding of it).
My guess would be that it'll use some weird multi-byte protocol (this is Microsoft after all) and they will probably be scan-codes with 'pressed', 'repeat' and 'released' information.
Looking at the keyboard it has an extended character set and there are also the right/left shifts to accomodate.
A few questions to get you thinking:
1). Do the shift lights light when pressed, ie. does it require the 360 to set their state.
2). If you hold a key down do you get the same sequence of data repeated?
3). Do you get one instance of different data when key is released?
PS: for reference on PS2 keyboard operation:
I also wouldn't be surprised if MS does some manner of key exchange between the two devices, then encrypts things, uses a pre-shared key, or who knows what. That'd help keep third party devs from making their own keypads with macros and whatnot.
Hey guys, this is my logic analyzer.
It works pretty good, although i cannot stream digital logic. I have to capture it first before i can see the data. I hope one day i can own one of these bad boys.
Too expensive for anything we do here. But it would be great for what i would like to do.
Im thinking about buying a chatpad really soon. My gf wants to dump me, so all the money im saving by not spending on her anymore i can put forth on the 'puter. O well.
laptop is really bad for this), and the build quality of the board itself just wasn't that great.
Also, the scope probes which come with it are basically just cheap multimeter probes with a BNC connector on the end.
I'd say you can do a lot better buying a Bitscope. Or the ZXbee, but with the Bitscope you at least get a scope as well... Personally I'm probably just going to drop the $1200 on a decent Tek scope (2002B or so) and maybe eventually a better PC-based logic analyzer. (Such as the aforementioned Intronix / pctestinstruments.com one.)
Detailed photos of the HobbyLab which I took are available here.
And for anyone who's interested, here's the layout of the keyboard matrix.
I am thinking that any project to 're-purpose' this keyboard would be better served by having a web page of it's own, rather than existing in a forum discussion list. I would suggest Sourceforge as a suitable location (I have used them before for hardware/firmware projects).
As I see there are 2 halves/alternatives to this project:
1). A keyboard driver that listens on a serial port and speaks 'chatpad' protocol.
2). Alternative firmware for PIC which make it behave like a normal PS/2 keyboard.
I have thought of a pretty goodname (ssshhh top secret) and will register it to set up a project if others think that it is a good idea.
My other projects have be GPL'ed licensed, which prevents commercial exploitation of 'our' work, but still allows openness for others to build on our combined knowledge. I would prefer to work under a similar license.