Skip to content

Carputer-project/buildroot-carputer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Carputer headunit OS — Buildroot Linux Distribution

Buildroot 2026.02 configuration for the Carputer in-vehicle infotainment system. Produces a bootable disk image for x86_64 PCs (Dell N7010 / generic Intel hardware).

Quick Start

# Requirements: x86_64 Linux host, ~25GB free disk, 8GB+ RAM
sudo apt install build-essential git wget cpio unzip rsync bc \
  python3 libncurses5-dev parted

# Clone Buildroot
git clone https://github.com/buildroot/buildroot.git -b 2026.02
cd buildroot

# Add Carputer board config + package
mkdir -p board/pc/carputer package/carputer
cp -r /path/to/buildroot-carputer/board/pc/carputer/* board/pc/carputer/
cp -r /path/to/buildroot-carputer/package/carputer/* package/carputer/

# Or use the setup script
bash /path/to/buildroot-carputer/scripts/setup.sh /path/to/buildroot

# Configure and build
make carcomputer_defconfig
make -j$(nproc)

Output: output/images/disk.img — bootable disk image (~1.2GB)

What's Included

Feature Details
Display Weston/Wayland (kiosk mode), Intel GPU acceleration
Qt App Carputer dashboard UI (Qt 5.15, QML) — media, HVAC, gauges, engine profiles
WiFi Broadcom BCM4312 (b43), Intel (iwlwifi), Realtek (rtl8xxxu) drivers
Bluetooth BlueZ 5 — A2DP audio streaming
Audio ALSA + GStreamer — MP3/FLAC playback, HDA Intel unmute at boot
Serial CP210x / CH340 / FTDI USB-UART for ESP32 modules
Screen Mirror MJPEG-over-HTTP streaming (view on iPad/phone at port 5900)
SSH Access Dropbear — root:12345678 (change on first boot)

Hardware Targets

Machine Status Notes
Dell Inspiron N7010 Tested Core i5 M 430, 8GB RAM, 1600x900 LVDS
Generic x86_64 PC Compatible Requires Intel GPU (i915/iris), HDA audio, SATA disk
Proxmox VE VM Tested Use BIOS mode, SATA disk

Deploy to Disk

Option 1: Direct to SATA drive

sudo dd if=output/images/disk.img of=/dev/sda bs=4M status=progress

Option 2: USB boot (for testing)

sudo dd if=output/images/disk.img of=/dev/sdb bs=4M status=progress

Option 3: Network boot (PXE)

See guide/network_boot_guide.md

Deploy Qt App Updates

After building the carputer app separately:

ssh root@192.168.1.100 "systemctl stop carputer"
cat carputer | ssh root@192.168.1.100 "cat > /usr/bin/carputer && chmod +x /usr/bin/carputer"
ssh root@192.168.1.100 "systemctl start carputer"

Image Contents

disk.img
├── Partition table (MBR)
├── Stage 1 bootloader (GRUB)
└── ext4 rootfs /
    ├── /usr/bin/carputer         Qt dashboard app
    ├── /usr/bin/run.sh           Weston launch wrapper
    ├── /etc/carputer/            Engine profiles & config
    ├── /etc/systemd/system/      Custom services
    └── /var/lib/alsa/asound.state Preserved audio config

First Boot

  • Login: root / 12345678
  • IP: 192.168.1.100 (DHCP or static via /etc/systemd/network/)
  • Service: systemctl status carputer
  • Logs: journalctl -u carputer -f

Live System Reference

Setting Value
Default IP 192.168.1.100
Root password 12345678
App binary /usr/bin/carputer
App version /etc/carputer/version.txt
Display Weston/Wayland (1600x900)
Engine profiles /etc/carputer/engine_profiles/ (6 JSON files)

Adding Your Own Hardware Drivers

1. Kernel drivers (built-in or modules)

Edit board/pc/carputer/linux.config.fragment and add the kernel config options.

Examples:

# Enable a driver built into the kernel
CONFIG_MY_DRIVER=y

# Enable as loadable module
CONFIG_MY_DRIVER=m

# Enable dependent subsystem
CONFIG_MY_SUBSYSTEM=y

Finding the right config option:

# From buildroot directory, check kernel help:
make linux-menuconfig
# Navigate: Device Drivers → [your hardware category]
# Find the option, note its name, exit without saving
# Then add it to linux.config.fragment

Important: Use =y for drivers needed at boot (storage, rootfs, network for NFS root) and =m for everything else (modules are loaded automatically when hardware is detected).

2. WiFi/Bluetooth firmware

make menuconfig
# Navigate → Target packages → Hardware handling → Firmware
# Enable linux-firmware and select your chipset:
#   BR2_PACKAGE_LINUX_FIRMWARE_<YOUR_CHIP>=y

Common examples:

BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_9260=y      # Intel AX200/AX201
BR2_PACKAGE_LINUX_FIRMWARE_MT7628=y             # MediaTek WiFi
BR2_PACKAGE_LINUX_FIRMWARE_RTL_88XX=y           # Realtek 8822/8812

3. USB Serial / GPIO adapters

Add USB device IDs to the existing udev rule at board/pc/carputer/overlay/etc/udev/rules.d/99-esp32.rules:

# Your device
SUBSYSTEM=="tty", ATTRS{idVendor}=="<VID>", ATTRS{idProduct}=="<PID>", SYMLINK+="ttyMYDEVICE"

Find your device IDs with lsusb on a running Linux system.

4. Graphics/GPU drivers

For modern Intel (Iris Xe, Arc) or AMD GPUs, change the Mesa driver:

make menuconfig
# Navigate → Target packages → Libraries → Graphics → mesa3d
# Deselect: Gallium driver i915
# Select:   Gallium driver iris       (Tiger Lake+ Intel)
#         Gallium driver radeonsi  (AMD)
#         Gallium driver nouveau   (NVIDIA)

For Raspberry Pi or other ARM boards, see the SBC support notes.

5. Complete example: adding Intel AX210 WiFi

# 1. Kernel fragment (board/pc/carputer/linux.config.fragment)
echo "CONFIG_IWLWIFI=m" >> board/pc/carputer/linux.config.fragment
echo "CONFIG_IWLMVM=m" >> board/pc/carputer/linux.config.fragment

# 2. Firmware (via make menuconfig)
# Enable: BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_9260=y

# 3. Userspace (via make menuconfig)
# Enable: BR2_PACKAGE_IW=y
# Enable: BR2_PACKAGE_WPA_SUPPLICANT=y

# 4. Rebuild
make -j$(nproc)

6. Other customizations

Adding packages:

make menuconfig
# Navigate: Target packages → [category] → [package]
# Save and rebuild: make -j$(nproc)

Changing root password:

# In defconfig:
BR2_TARGET_GENERIC_ROOT_PASSWD="newpassword"

# Or after boot:
passwd

Updating engine profiles: Edit JSON files in board/pc/carputer/overlay/etc/carputer/engine_profiles/ and rebuild.

Repo Structure

board/pc/carputer/
├── carputer_defconfig          → Buildroot configuration
├── linux.config.fragment       → Kernel driver additions
├── genimage-bios.cfg           → Disk image layout
├── post-build.sh               → Post-build hooks
├── post-image.sh               → Post-image (GRUB install)
└── overlay/                    → Root filesystem overlay
    ├── etc/                    → Config files, services, udev rules
    ├── root/                   → Mirror stream script
    └── var/lib/alsa/           → Preserved ALSA state

package/carputer/               → Carputer app Buildroot package
├── Config.in                   → Package dependencies
└── carputer.mk                 → Build recipe (git source)

src/unmute-audio/               → ALSA unmute utility source

guide/                          → User documentation
├── buildroot_workflow.md
├── network_boot_guide.md
├── deploy_via_ssh_pipe.md
├── qemu_testing.md
└── ...

About

Buildroot OS configuration for Carputer in-vehicle infotainment system

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors