Skip to content
Support

Command Reference

pcu-cli is the command-line tool for reading and configuring In-CarPC vehicle PCs. This page lists every command that ships in the release build, with the exact output each one produces. For flags, JSON output, and scripting, see Scripting and Automation.

Run a command as pcu-cli <command>. Hardware commands need elevated access:

  • Windows: run status, ign, and dio from an elevated (Administrator) terminal. help, version, and driver work without elevation. Without Administrator rights, a hardware command stops with a terse error:

    Terminal window
    ERROR: This program must be run as Administrator.
    Hardware access requires elevated privileges (PawnIO kernel driver).
  • Linux: run with sudo, or set up unprivileged access once with pcu-setup.sh. See Install on Linux. SMBus platforms (CQ20 and CQ40N series) use the i2c group; port-I/O platforms (CQ40 series) need CAP_SYS_RAWIO.

Run with no arguments to open an interactive numbered menu, which is handy when launching by double-click:

Terminal window
$ pcu-cli
Commands:
[1] Status All available readings
[2] Ignition Timer configuration
[3] Digital I/O DI/DO read and control
[4] Driver PawnIO driver management
[h] Help Show CLI usage
[0] Exit
Select:

A short banner is printed above the menu. The [4] Driver entry appears on Windows only. Passing flags but no command (for example pcu-cli --json) runs status.

The [2] Ignition sub-menu offers viewing the timer summary, setting a timer, and [3] Delay unit (minutes or seconds, where supported).

pcu-cli help and the interactive menu adapt to the machine they are run on. On hardware pcu recognises, they list only what that platform actually has:

  • help prints a Detected platform: line naming the machine, then only that platform’s commands and only its timer table.
  • The menu hides the entries that do not apply. [2] Ignition does not appear on a CQ40 series machine; [3] Digital I/O does not appear on a CQ20 or CQ40N series machine.
  • On Linux, the Requires: footer prints only the line that applies: the i2c group note on an SMBus machine, the CAP_SYS_RAWIO note on a port-I/O machine.

The menu numbers do not shift when an entry is hidden, so you will see gaps. That is deliberate: a number means the same thing on every machine, and any guide or note that refers to [3] stays correct.

Detection reads the board identity the BIOS reports. It needs no driver, no elevation, and no hardware access, so pcu-cli help gives you the tailored list even from an ordinary terminal.

On a machine pcu does not recognise, such as a development PC, nothing is hidden and the full command list and every platform’s timer table are shown. That is also what the examples on this page show, so you can see the whole surface in one place.

Read-only overview of the connected hardware. On a platform with ignition timers this includes the MCU identity and the timer summary.

CommandDescription
pcu-cli statusShow platform, MCU identity, and all current hardware readings.
Terminal window
$ pcu-cli status
pcu v1.1.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

The firmware version appears twice: once in the platform block and again in the MCU readings. That is expected.

Read and write the ignition power-sequencing timers. Available on platforms with an ignition MCU: the CQ20 and the CQ40N series. The timer names, how many there are, and the unit they are counted in all come from the connected platform, so ign on a CQ20 lists four seconds-based timers and on a CQ40N lists five.

CommandDescription
pcu-cli ignShow all ignition timer values.
pcu-cli ign get <timer>Read one timer. Shorthand: pcu-cli ign <timer>.
pcu-cli ign set <timer> <value>Write one timer in the platform’s unit (asks to confirm).
pcu-cli ign unitShow the delay unit the timers are counted in (platforms with a selectable unit).
pcu-cli ign unit <minutes|seconds>Change the delay unit (asks to confirm). Stored timer values are plain counts and are not converted.

The timer names differ by platform:

PlatformTimer names
In-CarPC CQ20ign-on-delay, sw-on-delay, sw-off-delay, pw-off-delay
In-CarPC CQ40N seriesign-on-delay, ign-off-delay, pw-off-delay, ups-off-delay, ups-pw-off-delay

See Ignition Timers for each timer’s range, default, and what it controls.

Terminal window
$ pcu-cli ign
pcu v1.1.0 - In-CarPC CQ20 Ignition
----------------------------------------
MCU Firmware : 12
Ignition Mode : On
Anti-Crank Delay : 6s IGN on to DC power
Boot Delay : 4s DC on to power button
Shutdown Delay : 300s (5m) IGN off to ACPI shutdown
Force Off Timeout : 120s (2m) Hard power cut if OS hangs

On a CQ40N the same command lists that platform’s five timers instead, and adds a Delay Unit line showing whether they are currently being counted in minutes or seconds.

Read one timer. The get keyword is optional, so pcu-cli ign sw-off-delay reads the same value:

Terminal window
$ pcu-cli ign get sw-off-delay
Shutdown Delay: 300s (5m)

Writing a timer asks for confirmation, then reads the value back and reports it as verified:

Terminal window
$ pcu-cli ign set sw-off-delay 120
Write Shutdown Delay = 120s (2m)? [y/N] y
Shutdown Delay: 120s (2m) - verified

A value outside the timer’s range is rejected before anything is written, and the tool shows the default and recommended range (exit code 1):

Terminal window
$ pcu-cli ign set sw-off-delay 9000
ERROR: Shutdown Delay must be 3-7200s. Got: 9000
Default: 300s (5m) | Recommended: 30-300s

On a platform without ignition timers (the CQ40 series), the command reports that the feature is unavailable and exits with code 2:

Terminal window
$ pcu-cli ign
ERROR: Ignition timers are not available on In-CarPC CQ40 series.

The CQ40N series counts four of its five timers in a unit you can change between minutes and seconds. pcu-cli ign unit reads that setting, and pcu-cli ign unit minutes or pcu-cli ign unit seconds changes it. The value words are flexible: m, min, mins, minute, and minutes are all accepted, as are s, sec, secs, second, and seconds.

Reading it prints one indented line, Delay unit: minutes or Delay unit: seconds. With --quiet you get the bare word on its own line, which is the form to parse in a script.

The confirmation prompt spells out the consequence before asking, and the prompt is printed to stderr like every other pcu confirmation. After a successful change pcu reads the setting back and reports it as verified, then prints a reminder that the timer values were not converted.

On a platform with no such setting (the CQ20 and the CQ40 series), the command reports that and exits with code 2:

ERROR: This platform has no delay unit setting. Its timers are always counted in seconds.

Monitor digital inputs and the ignition line, and switch digital outputs. Available on the CQ40 series only.

ChannelDirectionDescription
di1, di2Input (read-only)Digital inputs.
do1, do2Output (read/write)Digital outputs.
ignInput (read-only)Ignition / accessory sense line.
CommandDescription
pcu-cli dioShow all digital inputs, outputs, and the ignition line.
pcu-cli dio get <channel>Read one channel. Shorthand: pcu-cli dio di1.
`pcu-cli dio set <do#> <01>`
Terminal window
$ pcu-cli dio
pcu v1.1.0 - In-CarPC CQ40 series Digital I/O
----------------------------------------
DI1 : Low
DI2 : Low
DO1 : Low
DO2 : Low
Ignition (IGN) : On
Note: outputs reset to off on reboot or power loss; the state is not saved.

Read one channel. The channel keyword is optional, so pcu-cli dio di1 reads the same value:

Terminal window
$ pcu-cli dio get di1
DI1: Low

Setting an output warns that outputs drive real hardware, asks to confirm, then reads the state back:

Terminal window
$ pcu-cli dio set do1 1
WARNING: digital outputs drive connected hardware (relays / switches / lamps).
Set DO1 = High? [y/N] y
DO1: High - verified

On a platform without digital I/O (the CQ20, and the CQ40N series, where digital I/O is a later phase), the command reports that the feature is unavailable and exits with code 2:

Terminal window
$ pcu-cli dio
ERROR: Digital I/O is not available on In-CarPC CQ20.

Manage the PawnIO kernel driver. Windows only. See Install on Windows for the full driver setup.

CommandDescription
pcu-cli driver [status|install|uninstall]Check, install, or remove the PawnIO driver.

With no sub-command, pcu-cli driver shows status:

Terminal window
$ pcu-cli driver status
PawnIO driver: v2.2.0 (2026-03-15)
SmbusI801 module: 2025-05-05
Status: Installed

On Linux there is no PawnIO driver; the kernel i2c-dev module is used instead, so the command exits with code 2:

Terminal window
$ pcu-cli driver status
PawnIO is a Windows-only driver. Linux uses the kernel i2c-dev module.

The --json and --quiet flags have no effect on driver; its output is always the text form shown above.

CommandDescription
pcu-cli versionShow version, driver, and supported platforms.
pcu-cli --version, pcu-cli -VSame as version. Runs without elevation.
pcu-cli helpShow command help, timer ranges, flags, and exit codes.

version prints the tool version and build stamp, the driver and module versions (Windows), and the supported-platform list with validated configurations. Add --json for a machine-readable form; see Scripting and Automation. help prints the command reference, including each timer’s range, default, and recommended range. On recognised hardware it covers just that platform; on an unrecognised machine it lists every platform’s timers under a model heading. See Help and the menu match your machine. Timers whose unit is selectable are listed without a unit, because a printed reference cannot know what ign unit is currently set to.

Commands that change hardware ask before writing:

  • pcu-cli ign set <timer> <value> prompts Write <timer> = <value>? [y/N].
  • pcu-cli ign unit <minutes|seconds> explains that the stored values are not converted, then prompts Set the delay unit to <unit>? [y/N].
  • pcu-cli dio set <do#> <0|1> warns about connected hardware, then prompts Set <channel> = <High|Low>? [y/N].
  • pcu-cli driver install / uninstall prompt before running the installer.

Answering anything other than y aborts with exit code 1. Prompts are printed to stderr, so they never mix into piped output. For ign set, ign unit, and dio set, a prompt is skipped when you pass --yes (or -y), when you pass --quiet, or when input is redirected from a pipe or file. For driver install / uninstall, only --yes (or -y) or redirected input skips the prompt; --quiet has no effect on driver. See the redirected-input caution on the scripting page before automating writes.

CodeMeaning
0Success.
1Error, including a rejected value, an aborted confirmation, or a write that did not read back as expected.
2Feature not available on this platform or build.