Home > Hacking, IT, Raspberry Pi > Raspberry Pi project — Car Audio improvement #2

Raspberry Pi project — Car Audio improvement #2

Sunday, May 26th, 2013

I’ve worked a bit on my little side project. The more I think about it, the more I feel like it could be more than just a car audio improvement; it could be a full blown music box, as useful in the car as outside of it.

Here’s an overview of what I currently have in mind. Note that I’m still in the brainstorming process, so I can imagine crazy stuff too.. ;-)


A: Audio Engine

The Audio engine would be the control center for the project. Its responsibilities:

  • Detect plugged-in USB devices and scan them for music to play
  • Receive orders from (B), (C), (F)
  • Fetch music from a configured NAS or other online source (e.g., web radios, etc)
  • Manage the playlist
  • Output audio towards (K)
  • Output song information towards (I)
  • Interpret orders from (N)
  • Expose a Web UI (e.g., Lighttp + python/django)

The Audio Engine could expose its services through Web Services (e.g., restful API)

B: Remote Control Host

This component (custom hardware extension?) could further extend the Audio Engine API by interpreting and forwarding commands received from remote control devices (e.g., RF commands).

To forward commands towards the Audio Engine, it could leverage the Web Services.

C: Bluetooth module

The Bluetooth module could further extend the Audio Engine API by exposing it to paired devices. The paired devices could then send commands towards the bluetooth module, which would interpret and forward the orders towards the Audio Engine.

Related links:

D: Phone application

As an example usage of the Bluetooth module, a smartphone application (e.g., Android, iOS, Windows Phone) could leverage the Bluetooth features to pair with the Rpi and control the Audio Engine. For example:

  • control music playback (play, pause, next, previous, enable/disable random mode, …
  • shutting down the Rpi
  • viewing the current playlist, …

Related links:

E: Remote Control Device

A custom remote control device could be created that would send commands towards the Remote Control Host Device (B).
These commands could be a subset of those of (D).


  • Wired
  • RF
  • IR -> use LIRC (http://www.lirc.org/)

On the

F: A2DP Module

The A2DP module would provide standard A2DP functionality.

Open questions: link with the audio engine? Override the current playlist?

Related links:

G: USB Devices

USB mass storage devices could be automatically detected & scanned by the Audio Engine (A) in order to find & play music present on them.

Open questions: how to detect USB devices as they’re plugged in? Behavior if music is already played from other sources?
Idea: create a list of all possible audio sources and how to react when one of them is added/removed…

H: Car HUD

If we suppose that the Rpi does have a Bluetooth module, it implies that it can connect to the Car. Now, even if the car does not support A2DP, it could still expose some functionality through Bluetooth. One of these might allow for some level of integration with the car’s HUD.

Although, this is more of a bonus than anything, I would place it at the bottom of my goals list for the project…

I: LED Display

A LED display could be added to the project and could be used in different fashions. For example:

J: Online audio

The Audio Engine (A) could fetch music from the Web if it gets Internet access (e.g., via Wi-Fi or Ethernet). There, possibilities are numerous: get music from a NAS, from Web radios, from online music services, etc.

The Internet access could also be used to send information about playing/played music online (e.g., towards LastFM, Facebook, etc).

K: Audio output

The project could either use the onboard audio capabilities or an USB sound card or DAC. From there it could be plugged in different types of speakers.

L: Smartphone music streaming

As explained for (F), if the project supports A2DP, music could be streamed from a smartphone or other device…

M: SD card audio

If audio files are present on the SD card, these could also be played.

N: Voice recognition

Again I consider this as bonus, but it would be nice to be able to plug in a microphone and give orders to the Audio Engine (A) by speaking to it. It could be as “simple” as recognizing orders such as “Play, Pause, Next, …”.

Related links:

The project could go even further than that, for example by providing a full blow Web interface, …

If you enjoyed this post, make sure you subscribe to my RSS feed!


  1. Hi,

    Im about to start up a similar project. My main objective is to be able to use a raspberry pi to interface with my Skoda via the MDI port. However alot of what you have detailed is what i will be doing as well.

    Did you get anywhere with this project?

    Comment by Paul T — 2015-01-13 @ 10:12
  2. Well I must say that it has joined my pile of cool projects that I keep in a corner of my head and will get back to sometime later.. ;-)

    I made a first prototype that I described in the follow-up post: http://www.dsebastien.net/2013/05/28/raspberry-pi-project-car-audio-improvement-3/

    I based my configuration on ArchLinux and described the configuration steps in the Wiki of the Github project here: https://github.com/dsebastien/audioPi/wiki/Base-config—ArchLinux

    Basically, I was moving away from my initial idea of putting the system in my car in favour of putting it in my home in order to create a multi-room audio system. Then I stopped when I encountered sync issues with RTP :(

    Comment by Sébastien — 2015-01-13 @ 10:20
  3. If you take the configuration described in the Github wiki page linked above, you’ll get a working ArchLinux image with PulseAudio and MPD (audio daemon) configured. Once started, you can connect to it using any MPD client and control the music playing.

    If you want to take it further (I’m just writing this from memory so it might not be super accurate :p), you’d need to configure the bluetooth and figure out a way to integrate MPD and bluetooth so that you can control MPD via bluetooth-enabled devices such as smartphones..

    If you’re interesting in the general-purpose audio system rather than embedded in your car, then you could configure smb or nfs mounts towards your music source (e.g., NAS) so that MPD can find/play it..

    Comment by Sébastien — 2015-01-13 @ 10:27

RSS feed for comments on this post. TrackBack URL

Leave a comment