Part 4 - CD player mod for audio aux-in and steering wheel control
We need to get the audio from the Odroid into the Jag audio system, which will allow you to stream audio via Bluetooth from your phone or use the Android media player to play MP3s from a USB stick, or stream audio via Spotify, get voice Navigation instructions etc etc.
My approach to this is to modify the single slot CD player in the dash to receive the audio from the Odroid, which also allows you to use the steering wheel controls to skip track forwards and backwards. You will be able to switch between the internal CD Audio and the Odroid Aux-in by holding the AUDIO button on the head unit for 2 seconds (this is controlled by the Arduino).
You can also do this bit as a stand alone mod without the complete head unit conversion if you just want to be able to plug in your phone/MP3 player to play tunes (but see the warning below about Analogue vs Digital transport).
It's also possible to do this on the Cassette player, but it's not ideal as there is a bit of mechanical noise from the tape transport especially when using a cheap 'dummy' tape, and the steering wheel button integration doesn't work as it fast-forwards/re-winds the cassette and mutes the audio rather than instantly skipping tracks on a CD. If you have the MiniDisc player, well you're on your own!
If you have the Cassette or MiniDisc player just get a used CD player, they're a drop-in replacement with no configuration required.
WARNING - if your car is equipped with Premium Audio (i.e. has Alpine badges on the front door speakers, subwoofer and an external amplifier using the D2B bus) then the CD player utilises an Analogue L/R line level audio transport internally. If your car has no external amplifier (i.e. the speakers are directly connected to the CD player's internal amplifier) then a Digital SPDIF internal transport is used.
Follow the relevant instructions below depending on how your car is equipped - ANALOGUE if you have PREMIUM AUDIO with separate amplifier, or DIGITAL if you don't:
Remove the three screws on the back of the CD player and prise off the top metal lid. The CD transport mechanism is held in place by 4 screws - remove the screws and lift the transport out and disconnect the ribbon cable connecting it to the main board.
ANALOGUE - isolate the two pins shown using a thin strip of PVC tape - these are the Left and Right line level signals coming from the CD transport board down to the main board.
DIGITAL - isolate the pin shown using a thin strip of PVC tape - this is the SPDIF digital signal coming from the CD transport board down to the main board.
ANALOGUE - Now feed your cable terminated with a 3.5mm stereo jack socket through the back of the CD case and solder the L, R and Ground as shown (pin 22 = Left channel, pin 20 = Right channel). Better quality cables will have a bare copper shield for the ground connection rather than the green wires shown , make sure you insulate it with a piece of heatshrink.
DIGITAL - Now feed your cable terminated with a 3.5mm stereo jack socket through the back of the CD case and solder the SPDIF and Ground as shown (pin 4 = SPDIF). Better quality cables will have a bare copper shield for the ground connection rather than the one shown, make sure you insulate it with a piece of heatshrink.
ANALOGUE - We will then extract the audio L&R feed from the CD transport board through the case, terminated into a 3.5mm jack plug so that we can retain the CD player audio by switching through the relay shield on the Arduino.
Feed your audio cable terminated with a 3.5mm stereo jack plug into the back of the CD case through one of the ventilation holes and secure with a cable tie. Solder the L/R & screen to the three connections shown on the CD transport assembly - this gives you audio out from the CD player.
DIGITAL - We will then extract the audio SPDIF feed from the CD transport board through the case, terminated into a 3.5mm jack plug so that we can retain the CD player audio by switching through the relay shield on the Arduino.
Feed your audio cable terminated with a 3.5mm stereo jack plug into the back of the CD case through one of the ventilation holes and secure with a cable tie. Solder the SPDIF & screen to the 2 connections shown on the CD transport assembly - this gives you audio out from the CD player.
DIGITAL - You need to add an 100k pulldown resistor to the SPDIF line to prevent interference when switching to the aux-input. Connect the resistor as shown, between the SPDIF pin on the SAA chip (bottom pin on the right side) and the Ground pad.
ALL PLAYERS - Reconnect the ribbon cable, place the CD transport back into place and screw back down. Then replace the top cover. You'll now have a CD-Audio out (on the plug) and an AUX-In (on the socket). These will be controlled by the Arduino relay shield but you can just plug the two back together to restore it back to a normal CD player. For the Premium Audio equipped cars a line level L and R signal is used, for standard audio an SPDIF signal is used.
You'll notice the extra connector in the middle which is explained below.....
If you want to use your steering wheel controls to skip tracks, you need to make two more connections. I use a pair of 2 pin JST connectors (normally for use with LiPo batteries on radio controlled models etc), so that the CD player can be plugged into the matching connector on the Arduino. The female connector (left) is used on the CD player, the male connector (right) connects to the Arduino.
The first connection is to the steering wheel audio control resistor ladder network, which outputs a different analogue voltage for every different button that's pressed and allows the Arduino to detect the function and send commands to the Odroid via USB.
There is a small daughter-board that the main connector is mounted to just above the D2B optical connector. Remove the screws securing the daughter-board and unplug it vertically and remove, giving access to the connections. Pass both wires through one of the vent holes on the back of the CD player, then solder the black wire of the JST connector on here, marked REMOCON then put the daughter-board back.
The second connection allows the Arduino to detect whether or not the CD is playing. Near connector CB101 on the CD transport board there is a solder pad - solder the red wire of the JST connector to this pad.
Secure the wires with a cable tie and you are left with a connector tail that can plug into the matching tail from the touchscreen head unit.
It now just remains to get good quality audio out of the Odroid, and into your new Aux-input on the CD player. There is no analogue audio output on the Odroid C2 but there is an SPDIF digital output/
I use a Taishan Fiio D03K SPDIF Digital-To-Analogue Converter (DAC) to convert this to L/R line level audio, which is necessary for Premium Audio equipped cars.
If you just have standard audio on your Jaguar you don't need the DAC as you can feed in the SPDIF directly.
The Odroid SPDIF output is shown here (second pin from the right, behind the HDMI connector). Connect this pin to the centre pin of the Co-axial phono connector SPDIF input of the DAC, or directly to the SPDIF aux-input of the CD player if you've done the digital mod, and the pin to the right (centre of the HDMI socket) is Ground.
Then enjoy your music :-)