Upgrade your classic VW / Audi / Skoda / Seat car radio with modern Bluetooth 5.0 audio streaming while retaining full factory button controls!
This project is an advanced CD Changer (CDC) Emulator built on the powerful dual-core ESP32 microcontroller. Instead of just tricking the radio into opening its AUX port, this system seamlessly bridges the classic Volkswagen SPI/NEC IR data bus with modern high-end Bluetooth modules (like the QCC3034-based Feasycom BT1026D / BT1026D).
When you press "Next Track" on your 20-year-old car radio, the ESP32 intercepts the signal and commands your smartphone to skip the song via Bluetooth!
- 📻 Native Button Integration: Control Spotify, Apple Music, or calls using your factory head unit buttons (Next, Prev, CD1-CD6, Scan).
- 🎶 Smart Bluetooth Integration: Communicates directly with QCC3034/QCC5125 Bluetooth chips via AT commands. No "dumb" AUX cables. The ESP32 knows when music is playing, paused, or disconnected.
- 🌐 Built-in WebUI: Hosts a Wi-Fi Access Point and Dashboard. You can connect from your phone to view real-time protocol diagnostics, raw CDC pulse logs, and device status without needing a USB cable.
- 🧠 Dual-Core FreeRTOS Architecture: VW CDC protocol timings are incredibly strict (~1200μs / 3200μs). We use FreeRTOS "Core Pinning" to lock the CDC SPI interface to
Core 1, while the WebUI and Wi-Fi stack run safely onCore 0. Absolute zero timing jitter.
| Signal Name | ESP32 Pin | Radio Pin | Purpose |
|---|---|---|---|
| CDC SCK | GPIO 18 |
CDC CLOCK |
Hardware SPI Clock out |
| CDC MOSI | GPIO 23 |
DATA IN |
Spoofed display data to Radio |
| CDC DATA OUT | GPIO 4 |
DATA OUT |
Reads button presses (NEC pulses) |
| BT RX | GPIO 16 |
UART TX | Receives AT responses from BT1026 |
| BT TX | GPIO 17 |
UART RX | Sends AT commands to BT1026 |
(Note: Audio L/R/GND from the Bluetooth module goes directly into the Radio's CD audio input pins).
A complete custom PCB layout has been designed for the ESP-WROOM-32D module combined with the BT1026D Bluetooth module.
- ⬇️ Download Gerber Files (Ready for production at JLCPCB / PCBWay)
- Clone this repository:
git clone https://github.com/ValeraBat/VWCDCESP32V2.git- Open the folder in VS Code with the PlatformIO extension installed.
- Hook up your ESP32 via USB and click
Upload and Monitor. - Connect your phone to the ESP32 Wi-Fi network (if enabled in code) and navigate to
http://192.168.4.1to access the WebUI dashboard.
During the development of this project, we separated the pure hardware abstraction layers into standalone, OS-independent libraries. If you want to build a super-cheap version of this emulator on an Arduino Nano, ATmega328, or STM32 (without FreeRTOS or Wi-Fi), you can use our officially published standard libraries:
- VWCDC_Driver: A superloop-based VW CD-Changer emulator.
- BT1026D_Driver: A generalized AT-command interface for QCC audio modules.
Built upon the knowledge gathered by the open-source car-hacking community. Special thanks to original AVR concepts from shyd, tomaskovacik, and recent architectural inspirations from NullString1.

