JDM-X I2C Debugger

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.

  • Unzip 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]
  • Now you should have column A of spreadsheet = 'R', column B of the format <Reg>=Value, and column C the values of each fields
    Delete the 0's and save the file under a different name.

    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



    EEPROM Programming

    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 / 24C02
    Under menu Settings/Options -> Select Tab I2C -> Hardware Address = 84

    Command/Read All : Read EEPROM into buffer
    Command/Program All : Write buffer into EEPROM

    IC-Prog works with buffers in memory. The file commands are used transfer in/out of buffers.