Install on Linux
pcu runs on 64-bit Linux. A bundled setup script installs the binaries and configures unprivileged access to the vehicle PC’s SMBus, so the app and CLI run as a normal desktop program without root. pcu is developed and tested on Ubuntu 24.04, but the script is distribution-agnostic.
Requirements
Section titled “Requirements”- A 64-bit Linux system. pcu is developed and tested on Ubuntu 24.04 LTS.
- Root access (
sudo) to run the setup script. - No .NET runtime to install. pcu ships as self-contained binaries.
Install pcu
Section titled “Install pcu”In-CarPC machines shipped with Linux do not come with pcu preinstalled as of July 2026. We
plan to provision it by default soon; until then,
contact In-CarPC support and we will send you the
Linux build. It is a .tar.gz archive.
- Extract the archive and open a terminal in the extracted folder. It contains
pcu,pcu-cli, andpcu-setup.sh. - Run the setup script as root:
$ sudo bash pcu-setup.sh installThe installer:
- copies
pcuandpcu-clito/opt/pcu - creates the
i2cgroup and a udev rule (/etc/udev/rules.d/90-pcu-i2c.rules) that gives that group read/write access to/dev/i2c-* - loads the
i2c-devkernel module at every boot (/etc/modules-load.d/pcu-i2c.conf) - adds your user to the
i2cgroup - installs a desktop entry so pcu appears in your application launcher
- symlinks
pcu-cliinto/usr/local/binso it is on yourPATH - optionally grants
CAP_SYS_RAWIOfor CQ40 digital I/O (it prompts, and defaults to No)
- Log out and back in so your new
i2cgroup membership takes effect. For a CLI-only session in the current shell,newgrp i2calso works. - Start pcu from your application launcher (search for “pcu”), or run
/opt/pcu/pcu. The CLI is available aspcu-cli.
Verify the installation
Section titled “Verify the installation”The setup script includes a read-only health check (“doctor”). It needs no root. From the folder you extracted, run:
$ bash pcu-setup.sh status==> Installation [ OK ] Binaries installed in /opt/pcu [ OK ] CLI on PATH (/usr/local/bin/pcu-cli) [ OK ] Desktop entry present [ OK ] Icon installed
==> SMBus access (i2c) [ OK ] udev rule present [ OK ] modules-load drop-in present [ OK ] i2c-dev module loaded [ OK ] Found 2 /dev/i2c-* node(s) [ OK ] Nodes group 'i2c' (mode 660) [ OK ] Intel I801 SMBus adapter detected
==> Port I/O access (CQ40, optional) [ OK ] /dev/port present No CAP_SYS_RAWIO set -- CQ40 GPIO needs sudo, or grant it: sudo bash pcu-setup.sh caps
==> Group membership [ OK ] Group 'i2c' exists [ OK ] User 'youruser' is in 'i2c' [ OK ] Membership active in this session
All checks passed.The doctor exits 0 when everything passes, 1 if there are warnings, and 2 if it finds problems, so you can use it in scripts.
Then confirm pcu can reach the MCU with pcu-cli status:
$ pcu-cli statuspcu v1.0.0 - In-CarPC CQ20 Status---------------------------------------- Platform : In-CarPC CQ20 (Intel Atom x6425E) MCU Identity : CQ20 MCU Hardware Rev : DTB-IGN-MCU VER:10 Firmware : 12
MCU Firmware : 12 Ignition Mode : On Anti-Crank Delay : 6s anti-crank filter before DC power Boot Delay : 4s DC rails stable before power button Shutdown Delay : 5m IGN off to ACPI shutdown command Force Off Timeout : 2m hard power cut if OS hangsCQ40 series: digital I/O access
Section titled “CQ40 series: digital I/O access”CQ40 digital I/O uses raw x86 port I/O through /dev/port, which the kernel gates
behind the CAP_SYS_RAWIO capability rather than file permissions. You have two
options:
- Run
pcu-cliundersudo. The GUI cannot use this route: it does not self-elevate under Wayland. - Grant the capability once, so both the GUI and CLI can use CQ40 digital I/O without sudo:
$ sudo bash pcu-setup.sh capsOn a system with Secure Boot enabled, kernel lockdown can block /dev/port even for root, so
CAP_SYS_RAWIO may not be enough. See Linux Issues.
File capabilities live on the binary and are lost whenever it is replaced, so re-run
sudo bash pcu-setup.sh caps after every pcu update, or use repair, which re-applies
the configuration and preserves a prior capability grant.
The pcu-setup.sh commands
Section titled “The pcu-setup.sh commands”Run the script again from the extracted release folder for any of these. status needs
no root; the others re-run themselves with sudo when required.
| Command | What it does |
|---|---|
install | Install or update pcu and set up i2c-group SMBus access. Add --with-portio to also grant CAP_SYS_RAWIO for CQ40 digital I/O. |
status | Show install and hardware-access health. No root needed. Exit 0 (ok), 1 (warnings), 2 (problems). |
repair | Re-apply the i2c setup without a full reinstall. Preserves a prior CAP_SYS_RAWIO grant. |
caps | Grant CAP_SYS_RAWIO so CQ40 digital I/O (/dev/port) works without sudo. |
uninstall | Remove pcu. Keeps the shared i2c group, the i2c-dev module, and group membership. Add --yes to skip the confirmation prompt. |
version | Show the installed pcu version. |
help | Show the command list. |
Run the script with no command in a terminal for an interactive menu.
Updating pcu
Section titled “Updating pcu”To update, extract the new release and run the installer again:
$ sudo bash pcu-setup.sh installIt replaces the binaries in /opt/pcu and re-applies the configuration. If you had
granted CAP_SYS_RAWIO for CQ40 digital I/O, re-grant it afterwards with
sudo bash pcu-setup.sh caps (file capabilities reset when a binary is replaced), or
run sudo bash pcu-setup.sh repair, which preserves the previous grant.
