Skip to content
Support

Install on Linux

This content is for the 1.0.0 version. Switch to the latest version for up-to-date documentation.

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.

  • 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.

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.

  1. Extract the archive and open a terminal in the extracted folder. It contains pcu, pcu-cli, and pcu-setup.sh.
  2. Run the setup script as root:
Terminal window
$ sudo bash pcu-setup.sh install

The installer:

  • copies pcu and pcu-cli to /opt/pcu
  • creates the i2c group 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-dev kernel module at every boot (/etc/modules-load.d/pcu-i2c.conf)
  • adds your user to the i2c group
  • installs a desktop entry so pcu appears in your application launcher
  • symlinks pcu-cli into /usr/local/bin so it is on your PATH
  • optionally grants CAP_SYS_RAWIO for CQ40 digital I/O (it prompts, and defaults to No)
  1. Log out and back in so your new i2c group membership takes effect. For a CLI-only session in the current shell, newgrp i2c also works.
  2. Start pcu from your application launcher (search for “pcu”), or run /opt/pcu/pcu. The CLI is available as pcu-cli.

The setup script includes a read-only health check (“doctor”). It needs no root. From the folder you extracted, run:

Terminal window
$ 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:

Terminal window
$ pcu-cli status
pcu 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 hangs

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-cli under sudo. 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:
Terminal window
$ sudo bash pcu-setup.sh caps

On 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.

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.

CommandWhat it does
installInstall or update pcu and set up i2c-group SMBus access. Add --with-portio to also grant CAP_SYS_RAWIO for CQ40 digital I/O.
statusShow install and hardware-access health. No root needed. Exit 0 (ok), 1 (warnings), 2 (problems).
repairRe-apply the i2c setup without a full reinstall. Preserves a prior CAP_SYS_RAWIO grant.
capsGrant CAP_SYS_RAWIO so CQ40 digital I/O (/dev/port) works without sudo.
uninstallRemove pcu. Keeps the shared i2c group, the i2c-dev module, and group membership. Add --yes to skip the confirmation prompt.
versionShow the installed pcu version.
helpShow the command list.

Run the script with no command in a terminal for an interactive menu.

To update, extract the new release and run the installer again:

Terminal window
$ sudo bash pcu-setup.sh install

It 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.