Xbox 360 Chatpad Propeller Interface
Greg P
Posts: 58
I borrowed an Xbox 360 to monitor the serial communication between its wireless remote
and an attached Chatpad keyboard using an Intronix Logicport logic analyzer ( a wonderful
product by the way !)
For an overview see: nuxx.net/gallery/v/acquired_stuff/xbox_360_chatpad/
I was able to record the back and forth communication between the Chatpad & Xbox
occurring at 19.2Kbaud. I then wrote some quick Visual Basic code to emulate an Xbox.
That worked ! Next I experimented with the the handshaking, reducing it ultimately
to its bare essentials:
1) A 5-byte "initialization" Xbox command, with an expected 12-byte Chatpad reply.
2) A periodic (at least every 4 seconds) 5-byte "stay awake" Xbox command to the Chatpad.
3) An 8-byte "keycode" message sent by the Chatpad whenever a key is pressed.
Finally, I was able to modify a full duplex serial object to handle 1) thru 3) above transparently.
Just use a start() method to define which two pins will handle serial tx & rx to the Chatpad
and the standard rxcheck() method to retrieve keystrokes. The 8-byte 'keycode' message
is decoded by the cog using several 'keycode' lookup tables in hub memory. Only the
decoded keystrokes are sent to the rx_buffer for access via rxcheck().
The character lookup tables may be modified as desired. I have tried to closely match
it entries to the characters recognized by the Parallax Serial Terminal software. You can
use the "orange", "green", "people", and "shift" keys to select alternative characters.
I have chosen to use the "people" key to select some special operations recognized by
the Parallax Serial Terminal like "clear screen", "clear below", "beep". The backspace
and enter keys work with the Serial Terminal.
I have not yet posted this code to the Object Exchange. I would like someone who is
interested in the Chatpad to first try out my code and give me the "thumbs up" that they
got it to work satisfactorily. Suggestions for improvements welcome.
The Chatpad is available online for somewhere between $22 and $25. For that price you also
get a headset with mono-speaker and mic. This too could be easily interfaced to the Propeller.
Its speaker resistance measured 250 ohms.
OK ... I didn't see the attached Propeller code in Preview mode ...
... if code is not available, bear with me I'll figure it out eventually.
Post Edited (Greg P) : 9/12/2009 7:44:14 PM GMT
and an attached Chatpad keyboard using an Intronix Logicport logic analyzer ( a wonderful
product by the way !)
For an overview see: nuxx.net/gallery/v/acquired_stuff/xbox_360_chatpad/
I was able to record the back and forth communication between the Chatpad & Xbox
occurring at 19.2Kbaud. I then wrote some quick Visual Basic code to emulate an Xbox.
That worked ! Next I experimented with the the handshaking, reducing it ultimately
to its bare essentials:
1) A 5-byte "initialization" Xbox command, with an expected 12-byte Chatpad reply.
2) A periodic (at least every 4 seconds) 5-byte "stay awake" Xbox command to the Chatpad.
3) An 8-byte "keycode" message sent by the Chatpad whenever a key is pressed.
Finally, I was able to modify a full duplex serial object to handle 1) thru 3) above transparently.
Just use a start() method to define which two pins will handle serial tx & rx to the Chatpad
and the standard rxcheck() method to retrieve keystrokes. The 8-byte 'keycode' message
is decoded by the cog using several 'keycode' lookup tables in hub memory. Only the
decoded keystrokes are sent to the rx_buffer for access via rxcheck().
The character lookup tables may be modified as desired. I have tried to closely match
it entries to the characters recognized by the Parallax Serial Terminal software. You can
use the "orange", "green", "people", and "shift" keys to select alternative characters.
I have chosen to use the "people" key to select some special operations recognized by
the Parallax Serial Terminal like "clear screen", "clear below", "beep". The backspace
and enter keys work with the Serial Terminal.
I have not yet posted this code to the Object Exchange. I would like someone who is
interested in the Chatpad to first try out my code and give me the "thumbs up" that they
got it to work satisfactorily. Suggestions for improvements welcome.
The Chatpad is available online for somewhere between $22 and $25. For that price you also
get a headset with mono-speaker and mic. This too could be easily interfaced to the Propeller.
Its speaker resistance measured 250 ohms.
OK ... I didn't see the attached Propeller code in Preview mode ...
... if code is not available, bear with me I'll figure it out eventually.
Post Edited (Greg P) : 9/12/2009 7:44:14 PM GMT
Comments
bothering to thank you for all your hard work. I guess OBC's on holiday.
You have cracked a really nice input device for the Propeller here.
Thanks a bunch.
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
--Steve
Propeller Tools
Actually, I worked late and caught the thread in the early evening.
Even checked the game exchange over here for a used Chatpad. No dice.
Awesome work indeed! Are those pics yours? If not, how much modification did you have to do to make the connections?
OBC
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
New to the Propeller?
Visit the: The Propeller Pages @ Warranty Void.
No, the pictures are not mine, but they are indeed an excellent set of photos.
Note this photo:
nuxx.net/gallery/v/acquired_stuff/xbox_360_chatpad/IMG_9006.jpg.html
All 7 electrical connections are available as separate color-coded wires between
the Xbox plug and the PCB board. This includes the mic & speaker.
I did have to route a separate soldered 4-wire ribbon cable from within the
Chatpad out to my logic analyzer to capture the data communication because
the Chatpad and its remote control fit so tightly together.
Also, note that a T6 torx screwdriver is required to open the Chatpad. If you don't
mind destroying the Xbox remote plug you could just solder directly to it without
opening the unit. My Chatpad object code has a description section which identifies
the 7 pins of the internal PCB connector as well as the 4 blades and stereo plug
which interface to the Xbox remote. The four blades are for +3.3v, gnd, tx, and rx.
I don't think any kind of special 'serial id' numbers are being exchanged between
the chatpad and xbox. I deleted extra handshaking which I determined to be
non-essential. It seems to initialize correctly every time from a cold power off
& USB unplugged start. If others do not encounter problems, I'll post to OBEX.
I just now saw the post ... weird in a way ... I was at a game store today looking for other controllers to hack - and almost bought one of these, refurbished for $20. Guess I'll have to go back now! [noparse]:)[/noparse])
We should post a link to the Hercules software ...
- Howard
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
I am just working up the enthusiasium to sort out a IR to KBD interface, for the XBMC I am trying to sell to the Household Finance Contoller. It's fighting me but I'll prevail ( I want the 80Kg Sony out and a LCD in) Oled would be nice ...
I made a simple AVR kbd interface a while ago, but that was just to bug a guy who hogged the workshop computer.
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Style and grace : Nil point