Part 1 - Touchscreen hardware modification
There several variants of touchscreen head unit dependent on features and car model, however the main physical differences that affect the conversions are between the TV equipped units, and the non-TV units.
On a TV unit the television board underneath the metal back panel can be completely removed, leaving room for the new video driver and Arduino microcontroller board. On the non-TV units the metal back panel isn't removable but there is room on the inside of the case to mount the necessary new boards.
This wiring diagram shows how all the parts connect:
Below is the conversion method based on a TV equipped head unit:
Remove the back metal cover from the back of the head unit which reveals the TV board
Mount the Arduino and RTD boards to the backplate using standoffs as seen here, the 4 channel relay shield then plugs onto the Arduino
Next remove the front plastic bezel and disconnect the two connectors at the bottom to reveal the LCD screen
Unscrew the 4 screws holding the LCD panel in place, disconnect the 2 x backlight inverter cables on the left side and the ribbon cable on the back and remove the old LCD panel and the copper colour ribbon cable you see here
UPDATE: Use a single 220 Ohm 1/4w resistor instead of the original 2 x 120k 5w resistors.
You now need to add the 2 x 120k 5 Watt resistors in series across one of the inverter connectors on the internal LCD driver board. This is a dummy load which prevents the system flagging a fault code as it will detect that the backlight inverter is not connected to the panel. Make sure the unit is not powered when you connect the resistors, as there will be high voltage present on this connector if so!
Now you need a new spacer plate for the new LCD panel to sit on. I use 5mm Acrylic, you can download a DXF here if you wish to laser cut:
this new version doesn't have the cutouts and is sized for the standard 7 inch LCD panels to mount to.
You then need to mount your spacer plate where the original LCD screwed in, using the M3 x 25mm screws, and some spacers. The amount this spacer plate stands off the metal mounting plate is critical, as this holds the new LCD panel in place in the bezel. I DIY made my spacers using cut off pieces of a plastic pen barrel, and took a few adjustments to fit just nicely by test fitting the bezel in place to make sure the LCD is lightly clamped in place by the bezel against the spacer plate
The LCD panel can be stuck to the LCD backplate with double sided tape. There are alignment edges so that the panel can be precisely located on the backplate
And then test fitted into the bezel from behind, it's a nice snug fit
Before the screen can be sandwiched between the bezel and the spacer plate, the LCD ribbon cable extension needs to be attached, and the connector hidden behind the spacer plate. I also located the AR-1100 touch screen controller behind the back plate (but not shown in this pic). The AR-1100 is inside a strip of large diameter heatshrink to insulate it.
The LCD panel is not fixed down, but simply held in place by the bezel. I placed the LCD panel on the red spacer plate, then re-installed the bezel which sandwiched it securely in place. Be very careful when reconnecting the two connectors to the boards mounted to the bezel, the pins are very fragile and easily bent. Your head unit will now look like this
The LCD ribbon cable now can be fed through and connected to the RTD video board - note that it needs to be flipped over, hence the twist in the ribbon.
The USB cable from the AR-1100 touch controller also needs to be fed through to the back panel ready to be connected to the Arduino.
Now that the mechanical modifications are done, the various components need to be connected.
The video signal from the OEM DVD-NAV unit needs to be connected to the VGA input of the RTD video board, so that it can display all the normal car functions such as Climate, Telephone etc when in Jaguar mode. I solder directly to the back of the main input socket to make connections to the RGB, Ground, ACC switched live and permanent live signals. The Sync connection is made elsewhere (in the following image)
The sync signal for the RTD board is picked up from Test Point 79 on the original LCD driver board
These wires are soldered directly to the back of the main head unit connector as shown here. You'll see that the +12V supply goes into the Arduino then is also connected in parallel to the RTD board
Next we need to connect the Arduino to the head unit button matrix so that we can detect when NAV or other buttons have been pressed and act accordingly. There are 8 wires to connect here (the multi-pin socket that the brown wires plug into), which feed into the Arduino inputs as shown on the main wiring diagram - 4 to the Digital inputs, and 4 to the Analogue inputs
In order for the Arduino to control the video input switching between VGA (for the standard Jaguar functions) and the HDMI (for the Odroid input) we need to link the i2c communication bus from the Arduino to the RTD board. Here is where the two wires need to connect (the top left 2 pins on the resistor array)
To allow the resistive touch overlay to be controlled by the Arduino we need to break into the USB cable going to the AR-1100 touch controller. There will be 4 cores in the cable, the Red and Black are the +5v and 0V connections. Cut these two, and the ends going towards the AR-1100 need to connect to the Arduino at pin 13 and GND, with the other ends isolated. The 2 other wires remain unbroken as these are the USB data connections. What this means that the Arduino directly provides power to the touch controller from it's digital output that can be turned off and on
So that the internal Jaguar touch matrix can be switched off by the Arduino when in Android mode we need to break into the 12v power line going to the touch matrix. Break into the wire here, and take to the Normally Closed contacts of the relay board. The trigger for the relay board then connects to Digital output 12 of the Arduino
A twin opto-isolator is used to detect the ACC switched live state to wake/sleep the Arduino which in turn controls the Odroid power state, and also to take a feed from the interior footwell lights so that the system can wake when the car is unlocked via the keyfob.
I solder to the pins on the opto-isolator directly, heatshrinking each connection, then an overall sleeve of heatshrink protects the final package which then fits between the Arduino and the relay shield.