DasTesnoAparat (or CarPi)
The aim is to find a better solution for car audio than the ancient CD player. By attaching a small Linux box into car's bus one could
- emulate a very large, practically endless CD changer
- view song and other data on the car's built-in display
- browse through large quantities of songs (and other services) via a 2nd (larger) touch screen display
HW
Raspberry Pi http://www.raspberrypi.org/
- with a fast SD card for the OS. Might also store some MP3s there if there's enough space
USB v6 adapter from http://www.reslers.de/IBUS/index.html to get access to the car's I-Bus
Reverse-engineered bus messages http://web.archive.org/web/20041204074622/www.openbmw.org/bus/
- A touch screen for more convenient usage (large playlists etc)
- I prefer to keep the OEM look inside the car so there are 3 options:
- Buy a used original 16/9 display, disassemble it and plant a new 7" screen inside it keeping just the frame and buttons
- Capturing signals from the the original buttons around the display is a major pain but the outcome can be incredible
- Plant a new 7" screen inside a 2DIN radio bezel. This can be actually quite nice but is far from OEM-look
- Keep the original CD player (with its small 1-line text display) as a "status" display and for more involving things attach a larger display to be kept hidden in the glove box or somewhere else
- Actually, a cheap (used) tablet could be an option too
- Its possible to embed one into a 2DIN radio bezel or place it somewhere else
- The tablet could browse and control playlists over WLAN from the Pi
- With some SW its possible to power up/shutdown a tablet automatically depending on if its charging or not
- But are those things really robust enough to be mounted into the dashboard? I really wouldn't like to take the whole thing apart just to reset the tablet
- Buy a used original 16/9 display, disassemble it and plant a new 7" screen inside it keeping just the frame and buttons
- Some components to think about
http://www.cartft.com/catalog/il/1229
- does Linux support USB displays?
- I prefer to keep the OEM look inside the car so there are 3 options:
- USB hard drive for MP3s, podcasts etc
- A nice box for the Pi
- Some future, nice-to-have kind of things:
- 3G dongle for Internet access
- Send an SMS when the car's alarm goes off?
- With some relays controlling of motor and cabin heaters
- BT dongle for streaming audio (A2DP) and calls from my cell phone
BlueZ has support for many BT profiles http://www.bluez.org/
- USB or Bluetooth GPS dongle
- Enables maps and navigation
- USB Wifi stick
- 3G dongle for Internet access
SW
- Fedora and Debian both support arm-linux
- Eventually Android if 256M is enough memory and a cheap resistive touch screen works
I-Bus library for communicating over the bus http://projects.tevs.eu/OpenBM/wiki/Software/Gateway
There something here http://sourceforge.net/projects/ibusmp3/ from 2006, have to see if its usable
This looks much more promising http://projects.tevs.eu/OpenBM/wiki/Software/Gateway
- CDC emulator SW which actually will play the songs from a SD card or from a USB drive, will probably write this myself
The work plan
The order in which I'm going to do stuff is something like this:
- Once Pi arrives, install a distro and check that it works
- Then attach the I-Bus adapter and check that it is recognised by Linux
- Find/write the I-Bus library and try to get a "Hello World" text to the car's current, built-in radio display
Write the CDC emulator SW. Now, we should be able to enjoy virtually endless music from numerous playlists
- Attack the display challenge, try to find a reasonable touch screen and make it work
- If successful, install XBMC or some other media player environment
- Then install GPRS, GPS, BT, Wifi etc
Some random notes for myself
- It seems like touch screens output USB HID mouse events from the touch part?
- To save energy, we need to power-off Pi
- Also, the car stereo expects a response from the CD changer every few seconds via I-Bus, otherwise it thinks that the CDC is not there
- Pi's boot time (20-30 sec) might be too slow to get music playing when the car stereo is up and running
- Thus we might need a small embedded controller that can be powered all the time or woken up quickly to listen for I-Bus messages and then switch the Pi on/off
- Planning to use Arduino for this
Another option is a ?RuuviTracker (http://www.ruuvipenkki.fi/ruuvitracker/Etusivu) but its not available yet
Alternatively, the controller could start when the car gets a signal to unlock the doors and then immediately switch Pi on. This would give us usually some seconds before the user expects to hear music from the speakers