Skip to content

aselafernando/headunit-desktop

 
 

Repository files navigation

HeadUnit Desktop

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.

Known Limitations

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

Options

Command line

Option Description
--lazy-loading Loading plugins in a separate thread (volume-control plugin seems to struggle with this)

Configuration file

Located at "~/.config/HeadUnit Desktop/HeadUnit Desktop.conf" where ~ is the home directory of the user the application is running under

Compiling on Debian 13

Tested on x86_64 and arm64 (RPi 4 - using in-built Bluetooth & Wi-Fi)

Build tools

apt-get -y install build-essential automake git cmake protobuf-compiler

Qt6 packages

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

Audio packages

apt-get -y install pipewire wireplumber pipewire-audio gstreamer1.0-pipewire

Bluetooth codecs

apt-get -y install libfreeaptx0 libsbc1 libaacs0 libvo-aacenc0 libspa-0.2-bluetooth libldacbt-abr2 libldacbt-enc2 liblc3-1 libopus0 fdkaac

Volume control plugin

apt-get -y install libpulse-dev

I2C light sensor plugin

apt-get -y install libi2c-dev

USB connection listener plugin

apt-get -y install libusb-dev

GPSD plugin

apt-get -y install libgps-dev gpsd

Welle.IO DAB plugin

apt-get -y install libfftw3-dev libmpg123-dev libfaad-dev librtlsdr-dev libairspy-dev libsoapysdr-dev libmp3lame-dev

Compile Instructions

  1. Clone the repository git clone --recursive https://github.com/aselafernando/headunit-desktop.git

  2. Install the dependencies above

cd headunit-desktop/scripts
sudo ./builddep.sh
  1. Run the following, if your CPU is aarch64 it will auto add CONFIG+=rpi
cd headunit-desktop/scripts
./build.sh

About

HeadUnit Desktop is a car PC software built with Qt 6 and QML

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • C++ 61.8%
  • QML 33.9%
  • QMake 2.1%
  • C 1.3%
  • Shell 0.9%