IBUS interface for my E46 BMW written in Python & Java. This is to be used with the IBUS USB interface which can be acquired from Reslers.de, or from Amazon/eBay.w
There are three main components of the solution:
Android Tablet - Primary front-end device for interacting with the car
Raspberry Pi - Mini-PC that handles communication between the IBUS adapter and the Android device
IBUS USB Adapter - USB adapter that provides USB/UART interface from physical wire in car
There is also an Android Wear (4.4W) component that allows you to control your vehicle from your smart watch!
Android Wear Device - Secondary device that provides quick interactions with the car
- Remove OEM Navigation Head Unit from BMW
- Tap the 12V (red) wire, the GND (black) wire, and the IBUS (red/white/yellow) wire
- Connect IBUS USB adapter to BMW (using 12V, GND, IBUS)
- Install USB 12V - 5V adapter (using 12V, GND)
- Install Raspberry Pi in the dash (and power w/ 5V from adapter)
- Connect IBUS USB adapter to Raspberry Pi via USB cable
- Connect Bluetooth USB dongle to Raspberry Pi
- Connect Ethernet cable to Raspberry Pi (and wire to glove box)
- Install Raspbian (or another OS that supports python)
- One tutorial can be found here
- Install python, python-setuptools
apt-get install python python-setuptools
- Install python modules: pyserial, libbluetooth-dev, pybluz
easy_install pyserial
apt-get install libbluetooth-dev
pip install pybluz
- Install Bluetooth stack and confirm dongle/adapter is supported
- One tutorial can be found here
- Follow the 'accepted answer' instructions to fix a known bug
- Copy
python/
contents to RPi - Update
python/android_service/bt.py
with RPi Bluetooth address
- Update
BluetoothInterface.remoteBluetoothAddress
of 'java-android' with RPi Bluetooth address - Build Android project
java-android/
- Install
android/bin/BMW_RPi_IBUS_Controller.apk
- Update
BluetoothInterface.remoteBluetoothAddress
of 'java-wear' with RPi Bluetooth address
Build Android project java-wear/
- Install
android/bin/IBUSWear.apk.apk
- Install the prerequisites above
- Pair Android device with Raspberry Pi via Bluetooth
- Run as Daemon:
nohup python start.py 2>/dev/null 1>/dev/null &
- Launch Android IBUS app