Skip to content

🦊 bmw x3 e83 Dashboard application (fuel consumption, music, maps, YouTube, steering wheel controls, IBUS, CAN etc) - made with electron (JavaScript (vanilla))

Notifications You must be signed in to change notification settings

miroslawlis/steering-fox

Repository files navigation

This aplication and hardware was designed to replace default/stock navigation/radio provided by BMW in my x3 e83 (2004).
Not ready yet :)

for serialport: rm -f node_modules/@serialport npm install serialport --build-from-source

How it looks

Dashboard GUI

Music GUI

more to come

Hardware:

  1. Raspbery pi 3B+ - heart of hardware, in short Raspberry sucks, a better alternative is Rock Pi 4 Model B 1GB (cost about this same, and have a lot more features, for example can run on 12V (this will eliminate need steepdown DC converter usage, and eMMC disk can be installed))
  2. Resler USB IBUS interface (I encourage you to try other solutions, cheaper ones @aliexpres :) )
  3. DAC plus soundcard (raspberry pi hat), DYKB PCM5122 Raspberry pi B+ 2/3B HIFI DAC + Sound Card Digital Audio Module
  4. 12v step down DC converter with output set around 5,7V
  5. Bluetooth dongle
  6. Cables (for speakers, HDMI, USB extender 5m+, comon USB extender)
  7. Few realeys (10A will do)
  8. 6,5 inch touchscreen with control board PCB800099-V.9.
  9. Revers camera
  10. GPIO Extension Expansion Board Module for Raspberry pi 3B+

Wiring diargam/schematics

Software:

  1. Raspbian
  2. Node.JS
  3. Electron
  4. more in package.json ;)

Few facts:

  1. GUI was designed for 6,5 inch screen (800 x 480 px)
  2. Image from revers camera is handled by PCB control board (when revers gear is on then revers camera is on and signal send to control board)

Aplication can:

  1. Displays diffrent data from car CAN network like (temperature outside, fuel consumption, avarage speed, altitude, time and more
  2. Play mp3 from disk (USB to do?)
  3. Play YouTube
  4. Displays google map (navigation on to do list)
  5. Manage Wi-Fi connections
  6. Manage Bluetooth conections/devices
  7. Play music via ADSP (egz. music from phone)
  8. Be controlled from steering wheel controls
  9. Allows to do phone calls (to do)

Usage

First install all dependencies:

npm install

Start application without debug logs, logs can be later turn on by setting: debugMode = true

npm start

Start application with debug logs

npm run debug

Rebuild application

npm run prepare

Build application for Raspberry pi 3B+ (linux)

npm run build-linux-arm

Settings

More logs can be show by setting:

lessInfoFromCAN=false

OS settings

Auto shutdown script

This Python script is monitoring PIN 33 status when it's changes it will run sudo shutdown -h now command and close Linux OS Code:

from time import sleep
import RPi.GPIO as GPIO
import os

GPIO.setmode(GPIO.BOARD)
pin=33

GPIO.setup(pin,GPIO.IN,pull_up_down=GPIO.PUD_UP)

while(1):
        if GPIO.input(pin)==1:
                print "Shuting down - ACC power (switched) off"
                os.system("sudo shutdown -h now")
                sleep(.1)

To auto start script: sudo nano /etc/rc.local and at the end add: sudo python /path_to_your_script_file/script.py &

Deployment

Github actions need tag to be present in order to compile release First update version in package.json:

git commit -am 1.0.0

Tag your commit:

git tag 1.0.0

Push your changes to GitHub:

git push && git push --tags

About

🦊 bmw x3 e83 Dashboard application (fuel consumption, music, maps, YouTube, steering wheel controls, IBUS, CAN etc) - made with electron (JavaScript (vanilla))

Topics

Resources

Stars

Watchers

Forks

Packages