Disclaimer: Any modifications you make to a vehicle based on the information provided below are done at your own risk.
How to add and AUX input to an RCD300 head unit for about £3
This guide differs from Brind's guide in that it doesn't require a CD changer to be present and doesn't allow you to retain the use of one if there is (although you can still use the single CD player in the head unit).
This will work for and RCD300 (as fitted to my B6) or similar head unit that has unused provision for a CD multichanger (or has a multichanger and you're happy to lose it). It retains the use of the steering wheel volume and mute buttons, plus the 'GALA' (automatic volume increase with speed) and Traffic News interruptions.
Basically, we use a small, very cheap microcontroller to trick the head unit into thinking that there is a CD multichanger, then feed the AUX audio signal (from MP3 player, phone, whatever) into the head unit on the lines that the CD multichanger would feed in audio - just like a 'connects 2' box, but without spending £30.
You will need:
Patience and a desire to learn a tiny bit about programming microcontrollers (they're fun! honest!)
A small tipped soldering iron (+ the ability to use it)
An Arduino Pro Mini 328 5V (£1.56)
A USB Serial 5V TTL interface (£1.18 - or borrow one, you only need it once)
A 12 pin header socket (99p for 10, you only need 1)
A 3.5mm jack plug on about 1M of cable (or a socket, if you wish to dash mount it) - you can chop the plug/wire off someone else's headphones if you think you can get away with it
A small amount of thin insulated wire
A PC (windows or linux) with 'Arduino IDE' installed (free)
The software itself (Arduino 'sketch'), free from here - click on the green 'clone or download' button and download the zip file, then unzip it somewhere on your PC.
(Also attached here:)
The ebay bits from China will usually take 2-3 weeks to arrive in the UK (you can find the same bits from UK suppliers if you want them quicker, but that will obviously cost a bit more).
OK, lets get building:
First, you'll want to solder the 4 pins onto one end of the Arduino board marked 'GND, VCC, RX and TX' (the right hand side on the above picture)
Then connect the USB / serial interface with Black to GND, Red to Vcc, Green to RX and White to TX
Check your connections and plug the USB into your PC
The arduino should have one LED on permanently (Power) and will probably have another one flashing.
Start the Arduino IDE software and check under the 'tools' menu that 'Board' is set to 'Arduino Pro or Pro Mini' and 'Processor' is set to 'ATMega328P (5V, 16Mhz)' and that 'Port' has a tick next to your serial interface (probably 'USB0' or somesuch)
Now open the file (that you saved and unzipped) found at:
..wherever you saved it/vwcdavr/CDC_emulator/cdc_arduino_ported_k9spud_vwcdpic/cdc_arduino_ported_k9spud_vwcdpic.ino
Click the 'tick' ('verify') in the top left of the screen.
At this point it might moan about not having certain 'libraries'... either find 'manage libraries' in the menu and search/install the ones it complained about, or read this guide.
Once it seems happy, you'll see something like:
Code: Select all
Sketch uses 4204 bytes (13%) of program storage space. Maximum is 30720 bytes. Global variables use 265 bytes (12%) of dynamic memory, leaving 1783 bytes for local variables. Maximum is 2048 bytes.
Now, here's a tricky bit... To upload the 'sketch', you need to hold the small button on the Arduino board down (reset button), click 'upload' (or do ctrl+U) and then release the button at exactly the right moment. That 'right moment' is roughly when the progress bar in the bottom right of the Arduino IDE screen is about 5 6ths of the way across. It usually pauses for a split second there anyway. If you fail, you'll get 'out of sync' error messages... don't worry, no harm done, just keep trying, you'll get it.
You'll see it upload the code, it'll then check it, then it'll tell you its all OK. Congratulations! You've just programmed a microcontroller.
If it's showing a steady LED for power and the LED down near pin 13 is flickering wildly (so fast it just looks dim) we're doing well.
Great. Now unplug the USB from the PC and disconnect the USB dongle from the Arduino.
Get your 12 pin socket, and counting from top left to top right (1 - 6) and bottom left to bottom right (7 - 12), cut off pins 1, 3, 5, 7, and 10.
Easiest to solder the wires to the connector first, so get the 3.5mm plug lead, chop the plug off one end and strip the wires back, then solder the GND (usually has no insulation) to pin 2 of the 12 pin socket, the red (RIGHT) to pin 9 and the white (LEFT) to pin 8. Try to make sure that nothing can touch other pins (especially the GND, which can be kept very short), use tape or heatshrink if you're feeling fancy. Pro tip: Stick it to the table with blu-tack to hold it while soldering.
Next take 4 short (5-10cm) lengths of insulated wire and solder to the remaining pins (4, 6, 11, 12).
Grab the Arduino and solder connector pin 4 to Arduino 'RAW' (usually in the corner at the USB interface end)
Connector pin 11 goes to Arduino 11
Connector pin 12 goes to Arduino 13
Connector pin 6 goes to Arduino 8
Take care with the Arduino pin numbers here, they are often printed at a weird angle on the board, so count up from the bottom corner (pin 10) each time to be sure.
Finally, take a longish (40cm) single insulated wire and solder it to 'GND' on the Arduino - this will provide 'earth' for the Arduino via the mounting lugs on the head unit, we use a separate ground to avoid noise/buzzing.
Pop the whole assembly into heatshrink, a small tupperware box or just wrap it in a bit of flame retardant tape (to avoid anything nasty happening when you stuff it behind the dash).
Now we can install it in the vehicle... pop the trim from around the unit, BUT FOR GOD'S SAKE DO NOT UNPLUG THE AIRBAG LIGHT!!! (it creates a fault)
Remove 4 torx screws and slide the unit forward and out, then twist it to the left to expose the sockets on the rear - if you can do all this without unplugging the head unit, it will save you having to re-enter your radio code (assuming you even have it).
Plug your newly made device into the 'B' socket (yes, the one with all the wires in the way) - make super-sure you get it in the right place with all 12 pins lined up correctly. The difference between our pikey 10p socket and the 'proper' (£10?) one is that YOU CAN GET IT WRONG if you're not careful by getting it too high or too low and only connecting half the pins (to the wrong things) I don't know what this would do to either the Arduino or the head unit, but I doubt it would be good news, or that VW would even have a 'fault code' for it.
The last thing to do is decide where your AUX input cable with it's 3.5mm plug is going to come out (bottom left by the glove box works for me) and stuff it all back together, leaving the GND wire from the Arduino sticking out. Cut that GND wire back and strip some back, then wrap it around one of the screws (so it makes good contact with the metal lug) as you put it back in.
Turn on the head unit and press 'CD' (or press it twice if you have a CD in the head unit already), you should see it say 'CD' on the display and have the numbers 1 - 6 down the sides. Now plug in the music player of your choice and enjoy!
Massive thanks to Tomas Kovacik for porting the code that makes this work and K9spud who wrote the original version for PIC. I believe that Tomas was working on integrating a cheap bluetooth module with a view to having the controls on the head unit send commands to a player/phone for stop, play, next etc - which would be very useful. If I can get that working, I'll share the details here.