Skip to content

Add verified tooling and a CM4 development environment - #48

Open
jordanhubbard wants to merge 14 commits into
clockworkpi:masterfrom
jordanhubbard:master
Open

jordanhubbard wants to merge 14 commits into
clockworkpi:masterfrom
jordanhubbard:master

Conversation

@jordanhubbard

@jordanhubbard jordanhubbard commented Sep 22, 2026

Copy link
Copy Markdown

The repository contains the uConsole hardware sources and image instructions, but contributors currently lack a reproducible host build/test entry point, guarded keyboard and modem update flows, verified image metadata, and a development environment that can exercise CM4 images without repeatedly writing physical media.

This change adds those workflows as one integrated development baseline:

  • builds the STM32 keyboard firmware and packages its DFU tools, with device, architecture, re-enumeration, and failure checks before flashing;
  • reduces CM5 modem power control to the documented GPIO sequence and adds a manifest-verified modem updater with CLI and desktop interfaces;
  • records verified CM4/CM5 kernel and OS-image results, fixes the current CM4 panel compile warning, packages the required Quickshell revision, and documents missing PCB design sources;
  • adds a pinned QEMU 10.2.4 CM4 environment which boots the official image through the raspi4b machine, keeps writes in qcow2 overlays, exports new raw images, and exposes QMP, GDB, serial, USB input/network substitutes, and local/VNC display backends;
  • fixes QEMU watchdog and upper-memory behavior and attaches its AXP221 model at the uConsole I2C address, with register-level qtests;
  • adds a Linux/macOS/Windows Tk workbench with explicit clipboard support, guest file access, declarative tasks, and a machine-readable agent CLI for inspecting, modifying, and exporting images;
  • adds read-only hardware inventory capture so emulator results can be compared with a physical CM4 uConsole without storing SSH credentials.

The emulator documentation distinguishes implemented behavior from hardware fidelity. DSI/VC4, CWU50 backlight behavior, configurable battery/charging, the exact STM32 composite USB/DFU device, complete SIM7600 USB/QMI/fastboot behavior, audio, Wi-Fi, and Bluetooth are still future device-model work.

Validation:

  • make check: 42 tests in the headless run, 33 passed and 9 display-dependent tests skipped; ShellCheck passed.
  • Workbench tests: 3 passed under Xvfb, including selection and agent-context clipboard paths.
  • QEMU qtests: watchdog arm/reload/cancel/expiry/poweroff passed; AXP221 ID 0x06 at address 0x34 and unused-address NACK passed.
  • The pinned QEMU source rebuild completed with all three repository patches.
  • The official CM4 image booted to both maintenance and normal systemd/login paths; image upload, checksum verification, export, and exported-image reboot were exercised locally.
  • Host CI passed for commit 432d1f899bd077a322362e17a213228aa7486f73: Linux ran the full headless suite, ShellCheck, and all GUI tests under Xvfb; macOS ran every portable non-GUI suite and ShellCheck; Windows ran the cross-platform emulator/agent tests.

Detailed coverage and captured local evidence are documented in docs/emulator.md, docs/emulator-validation.md, and docs/os-image-verification.md.

Add a reproducible STM32 build, native reset helper, and architecture-specific flashing bundle. Preserve arguments and propagate reset, DFU, and serial re-enumeration errors.

Validation: firmware builds on ARM64; keyboard tests and ShellCheck pass. Physical keyboard flashing remains unverified.
Replace service, APN, and route management with enable and disable operations. Require libgpiod 2.x before accessing GPIO and stop on command failures.

Validation: six mocked power-control tests and ShellCheck pass. Electrical timing and modem detection still require CM5 hardware.
Check bundled firmware hashes and require one selected device before writes. Stop at the first failed partition and reboot only after success. Add the Tk interface, native fastboot build, staged desktop installation, and updated upgrade/downgrade guides.

Validation: nine backend tests and six GUI tests pass; both real firmware packages were verified offline. Native fastboot builds, and the GUI was inspected under Xvfb. Physical modem updates remain unverified.
Separate CM4 and CM5 profiles, correct staging paths, remove unused panel locals, and verify combined Raspberry Pi display overlays. Pin the historical A06 build and document missing A06/R01 source prerequisites.

Validation: full CM4/CM5 image, module, and DTB builds were staged successfully; both shipped display-overlay profiles pass. Target boot and A06/R01 kernel builds remain outstanding.
Record the pinned default-feature build and the asynchronous popup test fix. Add a local Debian packaging tool with ELF and Qt private-ABI dependencies, license notices, and a QML smoke configuration.

Validation: all nine suites pass under Xvfb; an empty suite now fails packaging checks. The package installed in clean Trixie and ran an unprivileged window smoke test. Vendor publication and uConsole Wayland acceptance remain outstanding.
Explain the Gerber archives, placement report, drill data, and available formats. Distinguish manufacturing exports from the editable CAD, purchasing BOM, and mechanical models requested upstream.
Prefer verified HTTPS downloads and record all four archive SHA-256 values and read-only image findings. Add symptom-specific troubleshooting, current build entry points, and the complete upstream issue worklist with external blockers.

Validation: all four downloaded archives match the published checksums; image contents were inspected without booting or flashing. Local build and test evidence is distinguished from outstanding hardware acceptance.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant