This is a fork of the original headunit-desktop which appears abandoned.
HeadUnit Desktop is a Qt6 based free and open source software that is intended to be run on computers built into cars. HUD is designed to be highly modular and easy to extend even for beginners.
This software is currently under active development and lot of the features are experimental. The main features are currently:
- Android Auto™ client (wired & wireless)
- DAB radio
- Reverse camera support
- I2C light sensor support (can trigger night mode in Android Auto™)
- Car2PC device support
- GPSD support (with geofences for triggers)
- J2534 support
Reverse camera and android auto leverage a gstreamer pipeline with OpenGL rendering to maximise hardware decoding. This is especially required for smooth performance on low power systems like a Rapsberry Pi.
It is currently optimised for a 1024x600 screen.
- When --lazy-loading is enabled, the volume control plugin fails to work
- Restarting the gstreamer pipeline for the reverse-camera plugin is not supported. If the pipeline is modifed in the configuration file, the application must be restarted.
- With wireless Android Auto™, if the phone disconnects unintentionally, occasionally this can cause the application to lock up. Reccommended work around is to configure the systemd watchdog to restart the application if this occurs.
- Media player with a media library and media scanner plugin has not been ported to Qt6 yet
- Requires OpenGL(ES) rendering to allow the Qt6 gstreamer sink qml6glsink for accelerated video decoding. Vulkan currently is unsupported (gstreamer lists vulkan as a "bad plugin")
| Option | Description |
|---|---|
| --lazy-loading | Loading plugins in a separate thread (volume-control plugin seems to struggle with this) |
Located at "~/.config/HeadUnit Desktop/HeadUnit Desktop.conf" where ~ is the home directory of the user the application is running under
Tested on x86_64 and arm64 (RPi 4 - using in-built Bluetooth & Wi-Fi)
apt-get -y install build-essential automake git cmake protobuf-compiler
qt6-base-dev qtchooser qmake6 qt6-base-dev-tools qt6-declarative-dev qt6-multimedia-dev libqt6bluetooth6 qt6-connectivity-dev qt6-charts-dev qt6-serialport-dev qml6-module-qtquick qml6-module-qtquick-layouts qml6-module-qtquick-dialogs qml6-module-qtquick-controls qml6-module-qtquick-window qml6-module-qtmultimedia qml6-module-qt-labs-settings qml6-module-qt-labs-folderlistmodel qml6-module-qt-labs-platform libqt6bluetooth6 qml6-module-qtcharts qml6-module-qt5compat-graphicaleffects qt6-connectivity-dev qml6-module-qtquick-controls libqt6charts6 qt6-charts-dev qml6-module-qtcharts qt6-serialport-dev gstreamer1.0-qt6 libkf6bluezqt-dev qt6-5compat-dev libkf6pulseaudioqt-dev
apt-get -y install pipewire wireplumber pipewire-audio gstreamer1.0-pipewire
apt-get -y install libfreeaptx0 libsbc1 libaacs0 libvo-aacenc0 libspa-0.2-bluetooth libldacbt-abr2 libldacbt-enc2 liblc3-1 libopus0 fdkaac
apt-get -y install libpulse-dev
apt-get -y install libi2c-dev
apt-get -y install libusb-dev
apt-get -y install libgps-dev gpsd
apt-get -y install libfftw3-dev libmpg123-dev libfaad-dev librtlsdr-dev libairspy-dev libsoapysdr-dev libmp3lame-dev
-
Clone the repository
git clone --recursive https://github.com/aselafernando/headunit-desktop.git -
Install the dependencies above
cd headunit-desktop/scripts
sudo ./builddep.sh
- Run the following, if your CPU is aarch64 it will auto add
CONFIG+=rpi
cd headunit-desktop/scripts
./build.sh