Warning:
| Use this at your own risk and only as a last resort. Do not alter the schematic unless you know what you are doing. Before you connect this to the xbox, make sure that the SDA and SCL voltage is at 0V (referenced to Gnd). If you connected the DB9 connector incorectly, then you would see either > +10V or <-10V which would cause damaged to your xbox. |
This is an I2C debugger that is designed for debugging the Coexant video chip in the xbox. This debugger is connected to the handshake line of a PC's serial port.
Why serial port ? Win32 API has supports for sensing as well as toggling serial port handshake lines. This should reduce compatibility problems.
This circuit is based on the JDM programmer and has been modified to use proper grounding. It doubles as a serial EEPROM programmer. Since the programmer software runs on a PC, it can even restore the serial EEPROM even when the xbox no longer boots. IC-Prog is a nice piece of free programming software that can be used with this circuit to program the serial EEPROM.
Note:
The circuit no longer does standalone programming. It is done to use
proper grounding which is very important for in system programming. It
is even more so in the xbox where there are no proper ground connections.
JDM-X Schematic
Note: The I2C signals of the xbox are available on the LPC header.
Photos
ConexantTM
I2C Hacking
Here is a Win32 GUI program written by me for
playing with the Conexant chip in the xbox. The I2C address of this chip
is at 0x8A for writing and 0x8B for reading.
I2C Debugger
The software reads in a register definition file
that defines the I2C subaddress of the internal registers and the different
register fields. The GUI dynamically reformats to show the different fields
in a register and allow for reading/writing of the registers.
Hardware Setting
Adaptor: Select the I2C driver
Port: Select the com port that your JDM-X adaptor
resides on
Register Operations
The numeric fields can handle a different numeric
base than the display preference setting. In fact serveral common formats
are supported.
Bin:
"10100011", '10100011', 10100011b
Hex:
$a3, 0xa3, 0a3h
Dec:
163
The registers values are cached ( [x]Cache Values). If a new register address is selected, the value is fetched from the target ( [x]Auto Read). The [ Read ] and [ Read All ] buttons performs their functions regardless of the cache status. Explicit writes [ Write ] is required to update a register value.
Console Window
The console window in history mode shows a history
of Read (R) and Write (W) commands along with the register address and
value being processed. The console contents can be saved as script files
for replaying in a later session using the [Exec
Script] button. Script files can be also
be dragged and dropped into the console window.
By turning on the R->W check box, register read commands in a script are interpreted as writes. This handy feature allow you to take the entire register dump in a previous saved session and write it to the chip. Since writing to the Autoconfig register (0xB8) would reset some of the register values, select [x]Write Special Register checkbox to filter out any writes to 0xB8 inside a scipt.
The console window also supports multiple selection - by holding the <Control> key down multiple sets of lines can be selected for saving or clearing.
Hint: To clear a selection, hold down the <Control> key and click the selected lines.
Note:
| Please contact your Coexant rep. to get hold of the Conexant datasheet. It is a huge document explaining what all the registers does. Please do not try to contact me for the Conexant datasheet. I will not honor such requests. |
Excel Import:
Here is a quick & dirty way of importing the register dump into
Excel 95. (Should work with later versions)
Make sure you name the register dump with .txt extension.
Now you should have column A of spreadsheet = 'R', column B of the format <Reg>=Value, and column C the values of each fieldsUnzip excel-import.zip from download link and open spreadsheet import.xls. Make a backup copy of the spreadsheet. Excel menu: File/Open - Select Files of type -> Text Files Select the register file you saved, Click [ Open ] button Select [*] Delimited checkbox, Click [Next >] button Check the following options: [x] Space, [x] Semicolon, [x] Treat consecutive delimiters as one. Click [Finish] Excel menu: Tools/Macro - Select Import_Reg macro, Click [Run]
Download Link:
Old fashion software - no fuzz, no mess. No registry entries, no additional
system files are needed. Why can't all software to be written like this
?
To install: Simply unzip i2c in a directory and double click on it to
run.
To uninstall: Simply delete the directory.
| File | Date/Version | Comments |
| i2c.zip | Rev 1.0 13-02-2003 | - Initial functional release:
- Driver for : JDM-X adaptor implemented |
| i2c-10a.zip | Rev 1.0a 15-02-2003 | - Fixed listbox missing last line (hidden outside window) |
| i2c-11.zip | Rev 1.1 19-02-2003 | - Vastly improved speed for "Read All" due to use of multiple byte
I2C Read
- I2C App now remembers hardware setting - Console Window Register mode implemented |
| File | Date/Version | Comments |
| excel-import.zip | Rev 1.0 16-Feb-2003 | Quick & Dirty Reg import macro - Excel 95 |
Setting for the programmer in IC-Prog
Under menu Settings/Hardware:
Programmer = JDM Hardware
Communication (check boxes for the following)
Inverted Data out
Inverted Clock
For programming serial EEPROM
on the xbox
Under menu Settings/Device -> Select I2C EEPROM / 24C02IC-Prog works with buffers in memory. The file commands are used transfer in/out of buffers.
Under menu Settings/Options -> Select Tab I2C -> Hardware Address = 84Command/Read All : Read EEPROM into buffer
Command/Program All : Write buffer into EEPROM