/BMW_E46_Android_RPi_IBUS_Controller

BMW E46 - Nexus 7 in dash, connected (via Bluetooth) to Raspberry Pi, connected to IBUS (via USB Adapter). Supports Android Wear 4.4W w/ full voice commands!

Primary LanguageJava

BMW E46 - Android, Raspberry Pi, IBUS Controller

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

Overview

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

Android_RPi_IBUS_Overview

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

Android_WEAR_IBUS_Overview

Pre-Requisites

1. Car Installation

  • 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)

2. Raspberry Pi

  • Install Raspbian (or another OS that supports python)
  • Install python, python-setuptools
    • apt-get install python python-setuptools
  • Install python modules: pyserial, libbluetooth-dev, pybluz
  • Install Bluetooth stack and confirm dongle/adapter is supported
  • Copy python/ contents to RPi
  • Update python/android_service/bt.py with RPi Bluetooth address

3. Android Mobile / Tablet

  • Update BluetoothInterface.remoteBluetoothAddress of 'java-android' with RPi Bluetooth address
  • Build Android project java-android/
  • Install android/bin/BMW_RPi_IBUS_Controller.apk

4. Android Wear (Optional)

  • Update BluetoothInterface.remoteBluetoothAddress of 'java-wear' with RPi Bluetooth address

Build Android project java-wear/

  • Install android/bin/IBUSWear.apk.apk

How To Get Started

  • 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