VW/Audi Concert (etc.) Arduino CD Changer Emulator

Error message

The spam filter installed on this site is currently unavailable. Per site policy, we are unable to accept new submissions until that problem is resolved. Please try resubmitting the form in a couple of minutes.

My long-time faithful automotive companion, the 1982 300SD, is on its way out as a 1998 A8 Quattro comes in. It's just old enough (and low-spec enough) to have come with an ordinary radio instead of a LCD navigation unit. Unlike the 1997 which became the parts car when I got this car, the CD changer at least speaks an ordinary and boring protocol and it can be emulated away for those who would like a line input instead.

I put a JVC KD-BT1 into the 300SD, and that functioned reasonably well for some years, providing bluetooth phone and audio services to a variety of devices. Unfortunately, it performed somewhat poorly at bluetooth audio streaming, and no device until my latest couple of phones could manage skip-free audio playback via bluetooth, which was always a disappointment. I didn't have very good speakers, and it's not really a very good stereo, so I wasn't particularly worried about the playback quality. However, all USDM A8s came with the Bose audio option, which basically means they came with a couple of additional speakers (with a trunk-mounted amplifier to go with them) and a nicely tuned audio stage which makes the most of the relatively modest hardware.

My Concert radio was made by Panasonic (Matsushita) as was the CD changer, which is the key to the success of this operation. My 1997 A8 had the "Delta CC" stereo, which was made by Blaupunkt and which had a CD changer by Alpine. There is some code that might be made to work with Delta CC's CD changer, but I didn't want to be forging new ground here. I just wanted an aux input, and I don't care about CDs. In fact, I would prefer to have the trunk space for other purposes. I might even mount a PC back there, and use this same sort of audio interface but mounted in the trunk, but that's a topic for a later time. This particular job was simply installing an Arduino which would talk to the stereo and pretend to be a CD player, and an audio cable with a stereo miniplug on the end.

Once upon a time there was a project by "spud" called "vwcdpic", a simple PIC-based emulator for various VW/Audi CD changers speaking the Panasonic protocol. This inspired vwcdavr, a port of vwcdpic to some AVR chips (and, by extension, Arduino boards.) Right now what I've accomplished is a relatively straightforward following-of-directions using an Arduino Nano 3 clone with CH340, but there are a couple of questions to be answered before starting this project.

The first question is which AVR to use; the supported hardware is described as "ATMEGAX8", which literally covers any AVR chip whose name is atmegasomething8, including the atmega8! Amazingly, this also includes the attiny85. Logically, unless you are developing a product based on this code, you will probably want one of three devices. If you are planning to mod your stereo and hide the AVR inside, you will probably want an attiny85. This is an 8-pin DIP package which is easy to solder to, but still small enough to tuck inside of fairly cramped devices. If you want Arduino with USB, you will probably want an Arduino Nano. If you want Arduino without USB, you will probably want an Arduino Pro Mini. Both of these arduinos are based on the atmega328. If you use an attiny85, you will need to use the included version for AVRs with only 8 bit timers. Either way, you want the 5 volt version, not the 3.3 volt version.

Another question one might reasonably ask is which power lead to use for an Arduino installation; the answer is to use the "pilot line", or switched power. This is a low-current 12v signal, which is more than adequate to drive an Arduino. This lead gets connected to "VIN" on the Arduino. The other connections are explained in the source code, except for ground. While there appears to be a CD ground connection on some versions of the connector for telephone and navigation audio, the only important thing about where you get ground is to not take it from the audio signal ground or you will create a ground loop which produces noise. There is a spade ground terminal on the back of the radio through which you can poke a slender ground lead before reattaching the female spade connector to it, and there is also a screw post which you could use.

Once the Arduino has been programmed and connected to the appropriate wires, it will turn on every time the stereo is turned on and announce that it's a CD changer. By connecting the serial port (whether USB or not) to a computer, it can be used to control MPD, the Music Player Daemon. This is a "headless" music player, which means it has no interface of its own, and is only controlled remotely. A simple, inexpensive Linux-based computer with an audio interface (either internal, or USB-connected) running MPD and with the Arduino connected to it will then behave as if it were a CD changer, and allow you to select tracks from the head unit. This is within my future plans, but I have no schedule laid out. I am working on a candidate machine, but so far it has not been sufficiently stable. More on that in the future.

Instead of going to all of this hassle, you could easily just buy a VWCDCPIC interface adapter. Tomas Kovacik will sell you one with the appropriate connector already attached for a variety of applications, including the right one for the prefacelift A8. Or you can buy it with just the pins, and use your own mini-iso audio only cable sourced from eBay. This is enough to provide auxiliary input with some later Audi stereo systems, so they are readily available on eBay for very little money. Then you just push the terminals into the right positions in the connector housing, connect the ground somewhere, and plug it into the back of your stereo. There are also a variety of options available on eBay for around $20, most of which come with some kind of built in mp3 player. The mp3 players built into the modules are pretty basic, but they are controllable from the stereo buttons and the devices also do include a simple aux input cable. However, there are multiple generations of module, and getting the right one for your stereo may not be easy.

Add new comment


  • Use [fn]...[/fn] (or <fn>...</fn>) to insert automatically numbered footnotes.
  • You may link to images on this site using a special syntax
  • Web page addresses and e-mail addresses turn into links automatically.
  • To post pieces of code, surround them with <code>...</code> tags. For PHP code, you can use <?php ... ?>, which will also colour it based on syntax.
  • Internal paths in single or double quotes, written as "internal:node/99", for example, are replaced with the appropriate absolute URL or path. Paths to files in single or double quotes, written as "files:somefile.ext", for example, are replaced with the appropriate URL that can be used to download the file.
  • Filtered words will be replaced with the filtered version of the word.
  • Lines and paragraphs break automatically.
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <blockquote> <q>


  • Lines and paragraphs break automatically.
  • To post pieces of code, surround them with <code>...</code> tags. For PHP code, you can use <?php ... ?>, which will also colour it based on syntax.
  • Allowed HTML tags: <a> <em> <strong> <cite> <blockquote> <code> <ul> <ol> <li> <dl> <dt> <dd>

Drinking Game

  • Web page addresses and e-mail addresses turn into links automatically.
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <img> <p> <br> <pre> <h2> <h3> <h4>
  • Images may be embedded like: [image:node_id align=alignment hspace=n vspace=n border=n size=label width=n height=n nolink=(0|1) class=name style=style-data node=id] Leave off any attributes you don't want.
  • [img_assist|...] tags will be displayed, maybe. Please don't make more of them.

Plain text

  • No HTML tags allowed.
  • Web page addresses and e-mail addresses turn into links automatically.
  • Lines and paragraphs break automatically.
This question is for testing whether you are a human visitor and to prevent automated spam submissions.