← Algengar spurningar

Algengar spurningar eru skrifaðar á ensku og hollensku; þær birtast á ensku.

Algengar spurningar

Hardware and kernel diagnostics

FAQ › EUZOS Desktop › Diagnostics · Nederlands

What is it?

EUZOS has no external tools: every look inside the PC is a console command of the kernel itself. This page covers the diagnostics of the hardware (PCI, USB, chipset, ACPI/AML, battery, SDIO), of the kernel (threads, memory, cores, performance, processes, the log, the clock, CMOS) and of unknown devices (DriverEnricher), plus boot diagnostics and the lock watchdog. Most commands exist in both editions; the exceptions are marked.

You type them in the console, or over SSH (ssh <pc> '<command>'; see Console).

How do I…?

How do I see which hardware the PC has?

pci lists every PCI device (network and Wi-Fi chips are marked). usb lists every USB device per port, with speed, vendor:product and driver; usbports shows the raw state of every USB port. chipset shows the PCIe ports of an Intel chipset (series 7/8/9, via RCBA).

How do I find out why a device does not work?

drivers lists the devices without a driver, exactly what DriverEnricher reports to EUZOS. drivers text shows the report as it is sent; drivers send sends it now. For a USB pointer (touchscreen, pen, mouse) use usb hid (add all or fields for more). For ACPI devices, aml <path> evaluates an object such as \_SB.PCI0.SDHC._STA.

How do I check the battery?

battery shows charge, state (charging/discharging), rate, voltage, remaining/full/design capacity, health, cycles and the AC adapter. battery read reads it again right now; battery ec dumps the embedded controller bytes.

How do I see what the kernel is doing?

ps lists the kernel threads and their state (with SMP a core column and a line per core). mem shows RAM, heap, threads and processes; mem processes shows RAM, shared memory, CPU time and kind per process (useful for Chromium). log [n] shows the last n lines of the log (default 30; over SSH everything).

How do I use all processor cores?

They are on by default (x86-64; ARM64 uses one core). smp boot off writes off to \EOS\FW\SMP.TXT: one core from the next boot on; smp boot on removes the file again. smp on starts the other cores now. smp shows the state and why. If SMP stops a PC from booting, hold S while switching on: one core for that one boot, nothing is written (docs/SMP.md, "Rescue").

How do I run a test program?

run <name> loads \EOS\BIN\<NAME>.ELF from the stick and starts it (max 8 letters/digits). Put the program there with ssh <pc> 'put EOS/BIN/NAME.ELF'. process <name> [n] starts one of the built-in ring-3 test programs. kill <id> stops a process.

How do I fix the clock?

date shows date and time (UTC) and the source (NTP or the RTC, possibly corrected by \EOS\FW\TIME.TXT, legacy name TIJD.TXT). date ntp fetches the time from the network again.

What do I do when a PC hangs at boot?

Put \EOS\FW\BOOTDIAG.TXT on the stick: the boot loader and kernel then draw a coloured block after every early phase, so a photo shows where booting stops. A trial kernel (try) that hangs on a lock for 20 s writes a report to \EOS\HANG.TXT and reboots by itself into the committed kernel; the next boot puts it in the log. See Boot.

How do I reboot or power off cleanly?

reboot quiets every device step by step, shows each step and keeps the last one in a CMOS byte; poweroff does the same and then ACPI S5. cmos shows all CMOS bytes and the reboot settings. If nothing responds anymore, hold Ctrl+Alt+Esc for 3 seconds: an emergency reboot, which skips most of those steps on a PS/2 keyboard. Releasing a key cancels it, and a short press does nothing.

Details

Clean reboot and power off

restart::before_reboot quiets the PC the way Windows and Linux do: stop the threads that touch hardware, optional _TTS(5), flush the stick, put input devices and I2C controllers to sleep, take Wi-Fi and SDHC down, optional _PTS(5), stop xHCI, AHCI and PCI bus mastering, interrupts off, then the reset methods. The number of the last step reached goes into a CMOS byte (default 0x7E) and is reported on the next boot, which shows whether the PC died before or after the reset. poweroff reads SLP_TYPa/b from \_S5, does the same steps, clears wake sources and writes PM1a/b_CNT (or the hardware-reduced sleep register; PSCI SYSTEM_OFF on ARM64). If the PC is not off after 3 s, the screen says to hold the power button.

DriverEnricher

Devices without a working driver (PCI, USB, ACPI, identified-but-undriven Wi-Fi chips) plus the device model (SMBIOS), the processor and the build are sent to the profile server, so EUZOS can add drivers. Never serial numbers, MAC/IP addresses or user names. One random inventory id per installation is kept in \EOS\FW\DRIVERS.TXT. The thread drivers waits 30 s after boot, for a network address and for a login (the server only accepts a valid PC token), and sends only when the inventory changed; retries after 1, 5, 15 and 60 minutes. Automatic reporting is on by default in sandbox and local, off in production (then only after consent, Settings › Privacy › "Report unknown devices to EUZOS (DriverEnricher)").

Missing hardware (counts only)

Separate from DriverEnricher and off unless you turn it on (Settings › Privacy › "Report hardware without a driver (counts only)", or drivers missing on). Once a day per ID, a logged-in PC sends only the USB or PCI vendor, device and class codes of hardware without a driver: no serial numbers, names, inventory id, build or model. The profile server checks the PC token but stores only a count per code per day, for 180 days, with no link to an account or PC. drivers missing shows the report exactly as it is sent. See docs/DRIVER-FACTORY.md.

Lock watchdog

kernel/src/watchdog.rs samples the main kernel locks every second (screen, network, browser network, heap, physical pages, scheduler, console, log, terminal). Held 10 samples in a row by the same holder at the same place: a report in the log (lock, holder, place, waiters). A re-entered lock also goes to the screen. A trial kernel stuck for 20 s writes \EOS\HANG.TXT and reboots. With SMP an NMI watchdog reports a core that spins with interrupts off.

Performance switches (perf set)

perf set priority|app|grid|copy on|off switches scheduler and compositor options used while measuring video (docs/CHROMIUM.md, "Choppy video"); perf alone shows them. perf set app on also releases the scheduler's emergency brake.

Reference

Console commands

CommandArgumentsWhat it does
pci—All PCI devices; network and Wi-Fi chips marked
usb—All USB devices (xHCI and EHCI): port, speed, vendor:product, name, driver, slot; devices without a driver; USB Wi-Fi; keyboards, mice, HID pointers; per-slot errors
usb hid[all|fields]USB HID pointers (touchscreen, pen, mouse) in report protocol: descriptor, fields, reports, errors; boot-protocol interfaces. Legacy aliases: alles, velden
usbports—Raw state of every USB port. Legacy alias: usbpoorten
chipset—State of the PCIe ports (Intel chipset with RCBA, series 7/8/9)
aml—ACPI bytecode summary: tables, objects, _OSI queries
aml<path>Evaluate an AML object, e.g. aml \_SB.PCI0.SDHC._STA (value, resources, time)
aml log—The last 40 lines of the AML log
acpi—SCI, GPEs, EC events (_Qxx, Notify), power button, lid
battery—Battery and charger state
battery read—Read the battery again now. Legacy alias: battery lees
battery ec—Dump the embedded controller bytes
sdio—Switch the SD/SDIO controller on (_STA, _PS0) and identify the card (Desktop only)
smp—Cores per MADT, active cores, trampoline, at-boot setting, TLB shootdowns, watchdog reports, per core (x86-64)
smp on—Start the other cores now. Legacy alias: smp aan
smp booton|offoff: write off to \EOS\FW\SMP.TXT (one core from the next boot on); on: delete it (the default: all cores). Legacy aliases: smp opstart aan|uit
ps—Kernel threads and their state
mem—RAM, heap, threads, processes (and per core with SMP)
mem processes—Per process: pid, parent, MiB, shared MiB, CPU ms, name, kind (x86-64). Legacy alias: mem processen
perf—Show the perf switches, then the start measurement
perf video[1-600]Measure video for s seconds (default 30): frames, sound, waiting times, peaks
perf power[1-3600]Power per domain (package, core, graphics, DRAM) over s seconds (default 1): min/avg/max watts; Intel PCs only
perf start—Measure Chromium's start
perf yt—Player diagnostics of Chromium in the log (Desktop, x86-64)
perf neton|offFailed Chromium requests in the log (Desktop, x86-64). Legacy aliases: aan, uit
perf play—Start the video (with sound) in Chromium (Desktop, x86-64). Legacy alias: perf speel
perf setpriority|app|grid|copy on|offSwitch a performance option. Legacy aliases: zet, voorrang, raster, kopie, aan, uit
counter[s]Test thread that counts s seconds (default 30, max 3600). Legacy alias: teller
counter state—The counter's value. Legacy alias: counter stand
counter busy[s]Compute s seconds without pausing (default 10, max 600; needs a preemptive timer). Legacy alias: counter druk
run[+jit] [+camera] [+mic] <name> [arguments]Start \EOS\BIN\<NAME>.ELF; Linux programs get argv; +jit, +camera, +mic grant a permission (Linux programs only, tests) (x86-64)
process<hello|counter|fault|cli|wx|leak|fpu|stack> [n]Built-in ring-3 test program, n at once (1–4) (x86-64). Legacy names: hallo, teller, fout, lek. Legacy command alias: proces
kill<id>Stop a process (id from ps) (x86-64)
package[list]App packages in RAM: name, items, MiB, users, SHA-256. Legacy aliases: pakket, lijst
package load<name>Load \EOS\APP\<NAME>.PAK from the stick. Legacy alias: laad
package receive<name>Only over SSH: ssh <pc> 'package receive <name>' < X.PAK. Legacy alias: ontvang
package remove<name>Remove from the list (gone when no process uses it). Legacy alias: weg
package content<name> [dir]List the files in a package. Legacy alias: inhoud
package start<name> <program> [arguments]Start a program from a package (glibc, dynamic loading)
linuxtraceoff|errors|allSystem calls of Linux programs in the log. Legacy aliases: linuxspoor; uit, fouten, alles
log[n]The last n lines of the log (default 30; over SSH everything)
date[ntp]Date and time (UTC) and their source; ntp: fetch from the network again. Legacy alias: datum
cmos—All CMOS bytes and the reboot settings
reboot—Reboot, every step on the screen, the last one in CMOS (emergency: hold Ctrl+Alt+Esc for 3 s). Legacy alias: herstart
poweroff—ACPI S5 after the same clean steps. Legacy alias: uitzetten
drivers—Devices without a driver, reporting state, model, BIOS, processor
drivers text—The report exactly as sent. Legacy alias: tekst
drivers send—Report now (also when automatic reporting is off). Legacy alias: stuur
drivers on / drivers off—Automatic reporting on/off. Legacy aliases: aan, uit
drivers forget—New inventory id (the server sees a new PC). Legacy alias: vergeet

Related diagnostics on other pages: ahci, nvme, disks in Storage; input, i2c in Input; sound in Sound; camera, privacy in Camera; ip, net, e1000, rtl8168, bcm in Network; stick, try, commit in Boot.

Functions and modules

Function / moduleRole
crate::run_command (kernel/src/main.rs)The dispatcher of every console command
crate::print_pci, crate::print_usb, crate::print_chipsetpci, usb, chipset
crate::usb::hid_lines, crate::usb::port_linesusb hid, usbports
crate::pci_intel::{inspect, describe}Intel chipset PCIe ports
crate::aml::command, crate::aml::bring_up_sdioaml, sdio
crate::sci::commandacpi
crate::battery::commandbattery
crate::arch::smp::commandsmp
crate::sched::command, crate::sched::print_cpusps, per-core lines
crate::proc::{processes_command, command, kill_command, run_command}mem processes, process, kill, run
crate::perf::commandperf
crate::linux::package::commandpackage
crate::linux::TRACElinuxtrace level (0 off, 1 errors, 2 all)
crate::console::log_textlog
crate::rtc::command, crate::net::ntp::syncdate
crate::restart::{before_reboot, before_power_off, report_previous, configure, cmos_command}Clean reboot/power off, report the last step of the previous reboot, read RESET.TXT words, cmos
crate::power_off::commandpoweroff
crate::driverenricher::{command, inventory, pci_claimed, rescan}DriverEnricher
crate::boot_diag::{begin, step}Boot diagnostics blocks
crate::watchdogLock watchdog, HANG.TXT
libs/driverenricher (coverage, privacy)What counts as covered; privacy filter; the report format

Config files

FileKey / contentValuesMeaning
\EOS\FW\SMP.TXTcontentoff (legacy uit), on (legacy aan)off: one core (written by smp boot off). Missing, on or unknown content: all cores
\EOS\FW\DRIVERS.TXTreport (legacy melden)on, off (legacy aan, uit; no line: on in sandbox/local, off in production)Automatic DriverEnricher reporting
\EOS\FW\DRIVERS.TXTid32 hex digitsRandom inventory id per installation
\EOS\FW\DRIVERS.TXTmissingon, off (no line: off, in every environment)Missing-hardware counts
\EOS\FW\DRIVERS.TXTmissing-day, missing-sentUnix day; usb:vvvv:dddd (repeated)What this PC already sent today
\EOS\FW\DRIVERS.TXTsent (legacy verstuurd)SHA-256 hexFingerprint of the last inventory sent
\EOS\FW\RESET.TXTwords in any orderacpi kbd cf9 cf9full efi (reset methods), pts, tts, old, cmos=0xNN, cmos=off (legacy oud, cmos=uit)Reboot behaviour: order of reset methods, _PTS(5), _TTS(5), skip the new quieting steps, CMOS byte for the step number
\EOS\FW\TIME.TXT (legacy name TIJD.TXT)contentminutes, e.g. -120Difference between the RTC and UTC
\EOS\FW\BOOTDIAG.TXTebs=, pause=, reboot=ebs=0..7, ms, sBoot diagnostics mode (see docs/BOOT-DIAGNOSTICS.md)
\EOS\HANG.TXT(written by the kernel)text reportLock report of a hung trial kernel; read and deleted at the next boot
\EOS\BIN\<NAME>.ELF—ELFPrograms for run
\EOS\APP\<NAME>.PAK—packageApp packages for package load

Since 27-10-2026 EUZOS writes English config file names, keys, values and confirmation words (for example WIPE-…, environment= in PROFILE.TXT); the old Dutch names (marked legacy here) are still read and accepted (docs/ENGLISH.md).

API endpoints (called by the kernel)

MethodPathUsed for
POST/api/driverenricher/melding?token=<pc-token>DriverEnricher report. Legacy Dutch route, still called by the kernel; English route: /api/driverenricher/report (see API)

Protocol messages and formats

DriverEnricher report (line format, version 1), text/plain; charset=utf-8; the keys are wire format and stay Dutch:

driverenricher=1
id=<inventory id>
build=<build>
arch=x86_64
cpu=<processor brand string>
model-fabrikant=<manufacturer>
model-product=<product>
model-bios=<BIOS>
apparaat=pci|usb|acpi|wifi        (one block per device)
vendor=… device=… subvendor=… subdevice=… klasse=… subklasse=… progif=… revisie=… bars=…
(usb: product=, bcd=, usbversie=, snelheid=, fabrikant=, naam=, interface=, rapport=)

Without a valid PC token the server answers 401 and reads nothing. Full format, limits and the agent API: docs/DRIVERENRICHER.md.

See also

  • docs/DRIVERENRICHER.md
  • docs/BOOT-DIAGNOSTICS.md
  • docs/SMP.md
  • docs/CHROMIUM.md (perf, linuxtrace, package)
  • docs/USB-EHCI.md
  • FAQ: Console, Boot, Storage, Input