Skip to content
Open source recreation of the spi2par, a board that allowed you to use HD44780 compliant LCDs on the Xenium modchip for the OG Xbox
C++ C
Branch: master
Clone or download

README.md

spi2par2019

What is it?

This is a recreation of a legacy Original Xbox adaptor that allowed you to use extremely common and cheap HD44780 compliant character LCD displays with the Xenium modchip SPI interface. The legacy adaptor was called 'spi2par' and has long since been out of production and extremely hard to come by.

I have never had one either, so this design has been made from the ground up.

There are two PCB layouts in this repository:

  1. More faithful to the legacy spi2par design.
  2. An LCD backpack design that takes advantage of the standard pinout of most HD44780 LCD displays to minimise the amount of wiring needed.

These two layouts are shown in the below photo. The LCD backpack has two pin arrangements so can be used on the two common LCD pin header layouts as shown installed. The intent is to make this as open and easily accessible to anyone with minimal experience in soldering and programming. enter image description here

Features

  1. Converts the Xenium SPI interface to HD44780 compliant parallel LCDs. These are extremely cheap and readily available LCD modules.
  2. Software controllable brightness
  3. Software controllable contrast
  4. This feature never existed in the legacy. You can connect two additional wires to the motherboard LPC header, and the board will read fan speed and MB/CPU temperatures directly from the Xbox System Management bus. It will display and update this mid-game. Traditionally the LCD will just pause until you renter the dashboard. Example below: enter image description here

Assembly and Materials Required

There is two ways you can do this. Option 1 is the intended way and has a PCB daughter board to make installation easier.
The second option uses less components but requires more wiring.

Option 1 - Arduino module and PCB adaptor

The standard design

Part Qty Possible Source
Ryzee119's spi2par2019 PCB 1 OSHPark (Bit expensive, 3 boards):
spi2par2019backpack OR
spi2par2019faithful

Elecrow (This is a referral link) ~5USD+shipping for 10 boards:
Download the required zip file from the Gerbers Folder and upload the zip file to their online ordering service. Use the following PCB properties:
2 layers, 45x30mm, 1.6mm thick, HASL, 1oz copper, no castellated holes, any colour you want!
Arduino Pro Micro Leonardo 5V/16Mhz 1 Any clones will work. Make sure they're the 5V/16Mhz variant.
N-Channel MOSFET 2N7002 SOT23 at position Q1 1 Find anywhere convenient
Digikey
Aliexpress
JST SH1.0 10 pin 1mm connector (To connect to Xenium) 1 Digikey: Connector + 3xJumpers OR
Aliexpress: Connector with Jumpers (Get the 10P one)
General Hook-up Wire 26AWG or so A metre or two -

Cost of getting ten made works out to roughly $4-5usd each.

  1. Solder the MOSFET to position Q1.
  2. Solder the Arduino module inplace, note the silkscreen markings for orientation.
  3. If using the LCD backpack design, position the PCB the line up with the LCD header and solder in place.
  4. If using the 'Faithful' design, solder cables to each corresponding point between the LCD and the spi2par2019 PCB.
  5. Program the Arduino as per the programming instructions below.
  6. Wire as per the installation image below. Note the soldered jumper wire between the CS pad on the spi2par2019 PCB and the resistor on the Arduino. This is a stupid design limitation of the Arduino when being used as an SPI Slave so this jumper needs to be added.

Option 2 - Arduino module only

No extra PCB required, no backlight control, slightly harder soldering

Part Qty Possible Source
Arduino Pro Micro Leonardo 5V/16Mhz 1 Any clones will work. Make sure they're the 5V/16Mhz variant.
JST SH1.0 10 pin 1mm connector (To connect to Xenium) 1 Digikey: Connector + 3xJumpers OR
Aliexpress: Connector with Jumpers (Get the 10P one)
General Hook-up Wire 26AWG or so A metre or two -

Cost of getting ten made works out to roughly $3-4usd each.

  1. Program the Arduino as per the programming instructions below.
  2. Wire as per the alternative installation image below. Note the soldered jumper wire between the Pin A2 and the resistor on the Arduino. This is a stupid design limitation of the Arduino when being used as an SPI Slave so this jumper needs to be added.

Programming

  1. Clone this repository to your PC
  2. Download then install the Arduino IDE.
  3. Open spi2par2019.ino
  4. Compile by clicking the tick in the top left.
  5. Confirm it has compiled successfully from the console output.
    enter image description here
  6. Connect a MicroUSB cable between the Arduino Module and the PC.
    enter image description here
  7. Set the Board Type the Arduino Leonardo and the comport correctly. Mine happens to be COM14.
    enter image description here
  8. Click the upload button and confirm successful. The LCD backlight should come on but no text will be displayed until connected to a Xenium or the Xbox SMBus.
    enter image description here

Installation

spi2par2019 connection diagram

Alternative Installation

spi2par2019 connection diagram alt

Further Setup

If using XBMC, there appears to be a bug in the way the large text is printed to the LCD screen when used with a Xenium. This can cause the LCD screen to stop working when the screen saver starts. It is recommended to edit the /system/UserData/LCD.xml file and replace instances of LCD.TimeWide21 or LCD.TimeWide22 with something different. Perhaps LCD.cputemperature and LCD.gputemperature or if you want time, use the standard font (System.Time).

You can’t perform that action at this time.