14 KiB
Executable File
Changelog
All notable changes to OreBolt OS are documented in this file. Format roughly follows Keep-a-Changelog; dates are YYYY-MM-DD.
[v1.7] -- 2026-07-15
System Tools Module Rewrite
The reset module is now a multi-function System Tools menu inspired by Rockbox's tools menu on the Aigo Eros Q platform. The module label in the launcher menu changes from "reset" to "system".
Changed
- reset.c rewritten as System Tools. Four-option scrollable menu: PURGE (operational cleanup), HIBY PLAYER (restore stock firmware from /data/stock_backup/ and reboot), ROCKBOX (reboot if .rockbox/ detected), REBOOT. Confirmation overlays for all destructive actions. Status overlays with error/success states. Rockbox detection is passive only -- OreBolt OS does not ship or install Rockbox.
- build.sh gains --backup-stock flag. Phase 8a snapshots the stock firmware files (usr/bin/, usr/lib/, etc/, res/, setting/) into /data/stock_backup/ before any OreBolt files are written. This enables the "Restore Hiby Player" option in System Tools.
- SD-card-only firmware model. All documentation now reflects that OreBolt OS and Hiby Player coexist through SD card file management alone. The SPI flash bootloader is never modified. SD card is FAT32 single-partition only.
- Device family identifier set to Aigo Eros Q. ARCHITECTURE.md and README.md now lead with "Aigo Eros Q family" as the canonical hardware platform name.
- ARCHITECTURE.md adds Section 7: Firmware coexistence. Table showing which SD card files correspond to which firmware environment, and how switching works.
- ARCHITECTURE.md filesystem layout updated. Now includes /data/stock_backup/, /data/roms/ paths.
- main.c module table: "reset" label changed to "system". The .mod binary filename remains reset.mod for build compatibility.
- Source comments cleaned across all .c/.h files. Version- prefixed comment lines replaced with intentional, self-describing headers. No functional code changed (except reset.c).
- All documentation version bumped to v1.7. README, QUICKSTART, ARCHITECTURE, BUILD_MANIFEST, LICENSE, PREREQUISITES, HEADERS, build.sh, Makefile, Makefile.h2-core-v6.2 (v6.5), S99broker.
- retro.mod (retro game launcher) is properly listed across all documentation with its full feature description.
- S99broker: OREBOLT_VERSION exports 1.7, module count 17.
[v1.6] -- 2026-07-15
The "Unified Radar" Release
v1.6 consolidates the standalone radar.mod (BLE hex grid scanner) and the
wifi.mod adapter stub into the unified proxalarm.mod binary. This
eliminates ~30 KB of duplicate .text on 64 MB RAM devices, removes a
redundant HCI connection, and provides a single source-agnostic RF
scanning API with a WiFi integration stub.
Removed
- radar.mod (orebolt-radar/noise_radar.c). Superseded by
proxalarm's radar_ui canvas renderer (rotating sweep, range rings,
velocity vectors, alarm overlay). The
modules/orebolt-radar/directory is removed. - wifi.mod (orebolt-wifi/wifi.c). The v1.4 stub had no
main()function and could not be fork+exec'd by the launcher. Its purpose (WiFi adapter control) is now served by bledsp's source-agnostic device table and thebledsp_poll_wifi()stub. Themodules/orebolt-wifi/directory is removed.
Changed
- Module count: 17 .mod binaries + 1 standalone daemon (was 19 + 1).
- bledsp upgraded to unified RF scanning layer. New API:
bledsp_source_tenum gainsBLE_SRC_SIM(explicit sim mode).bledsp_get_source()/bledsp_cycle_source()for runtime source selection.bledsp_source_label()returns "BLE", "WIFI", or "SIM".bledsp_poll_wifi()stub with implementation roadmap (nl80211).bledsp_poll()now centralizes the "mark all inactive" step before dispatching toble_poll(),sim_poll(), orbledsp_poll_wifi().
- proxalarm main gains NEXT key handler. NEXT cycles the active RF source between BLE and WIFI at runtime, with live label update.
- H2_MOD_RADAR and H2_MOD_WIFI removed from h2_ui.h enum. Enum renumbered: PROXALARM is now ID 15, BITCHAT is ID 16.
- main.c module table: radar and wifi entries removed, all versions bumped to 1.6.
- Makefile.h2-core-v6.2 -> v6.3. BLUETOOTH_MODULES reduced to
just
proxalarm(wasradar proxalarm). radar and wifi build targets removed. - All documentation updated (ARCHITECTURE.md, README.md, this file). Stale references to radar.mod, wifi.mod, "19 modules" purged. Memory spec corrected to 64 MB (was incorrectly 128 MB).
Added (from earlier v1.6 work, preserved)
- proxalarm -- BLE Proximity Alarm (tripwire detector). Three-layer architecture: bledsp (BLE scanning + RSSI DSP smoothing), proxvec (kinematics engine with per-target state machine and velocity tracking), radar_ui (LVGL canvas radar display). Now unified with WiFi stub.
- Documentation hardening (BitChat nominative fair use analysis, module descriptions aligned to actual implementations).
[v1.5] -- 2026-07-14
The "Implementations" Release
v1.4 shipped 18 module slots with zero functional code -- every module was a build-linkable stub that displayed a label and logged init/deinit. v1.5 provides full implementations for 13 of those 18 modules, adapted to the v1.4 build infrastructure and header API.
Fixed
- emulator_input_mapper build target no longer links against LVGL.
v1.4's
Makefile.h2-core-v6.1compiled the mapper stub with-llvgl, which would break the real standalone uinput daemon. v1.5'sMakefile.h2-core-v6.2builds the mapper with zero LVGL flags or libraries -- it is a pure uinput daemon. - main.c uses the fork/exec launcher model. v1.4's main.c ran a single monolithic LVGL event loop with all modules as stub callbacks. v1.5 uses the fork/exec broker: the launcher shows the module menu, fork+execs the selected .mod binary, and waitpid() blocks until the child exits. Each module binary initializes its own LVGL instance and runs its own event loop.
- h2_ui.h provides both module APIs. Provides both the
init_h2_graphics_runtime()inline bootstrap (for standalone .mod binaries) and theh2_module_tregistration API (for the launcher menu). Also defines H2 input event code constants (H2_KEY_PLAY, H2_KEY_BACK, etc.) used uniformly across all modules. - log_manager.h provides both logging APIs. Provides both the v1.4 structured log level interface (LOG_INF/DBG/ERR macros, log_init/log_write/log_close) and the v1.3 flash-safe timed coalescer (timed_log_init/timed_log_write/timed_log_flush_to_media) with 64KB RAM buffer and configurable windowed disk flush.
- S99broker OREBOLT_VERSION set to 1.5 (was still "1.4").
Changed
- Module count in Makefile: 18 .mod binaries + 1 standalone daemon.
v1.4's Makefile listed 18 entries including emulator_input_mapper
as an LVGL module. v1.5 lists 18 .mod entries (rfid/wifi/glitch/
pwdb/bitchat remain stubs) plus a separate
mappertarget that builds the standalone daemon without LVGL. - Sub-Makefile bumped: Makefile.h2-core-v6.1 -> Makefile.h2-core-v6.2, Makefile.orebolt-v1.4 -> Makefile.orebolt-v1.5.
- Master Makefile updated to reference v6.2 and v1.5 sub-makefiles.
- radar module now links against -lbluetooth for BlueZ HCI calls.
- All restored modules use H2_KEY_BACK/H2_KEY_PLAY constants instead of hardcoded key codes (158/164), and include LOG_INF/LOG_ERR calls.
- vault upgraded to full PIN auth module. The original v1.3/v1.5 entropy-only display has been replaced with the complete Master Manifest vault implementation: 4-digit PIN entry with rotary encoder, non-volatile failure tracking, 300s lockout penalty, and dual wired/wireless identity modes with automatic USB/BLE state enforcement based on cable detection.
- studio upgraded to UAC2 Mixer Console. The original v1.3/v1.5 frequency analyzer has been replaced with the complete Master Manifest studio implementation: 4-channel mixer (GAME/DISCORD/ MIC/MUSIC) with per-channel volume bars, USB Consumer Control HID commands via /dev/hidg1 (vol up/down/mute), NEXT/PREV key channel switching, and hardware mute toggle with visual feedback.
- S99broker now sets system volumes to maximum on boot via
amixer sset 'Master' 100% unmuteandamixer sset 'Headphone' 100% unmute, matching the Master Manifest boot sequence.
Added
- 13 fully functional module implementations:
- vault -- Crypto Security Token Vault Gateway. Full PIN authentication system (default 4-2-9-1) with rotary digit entry, non-volatile failure tracking via /data/vault/failures.dat, 3-attempt lockout with 300s penalty countdown. Dual identity modes: WIRED (USB composite gadget via enable_vault_usb.sh) and WIRELESS BLE (via enable_vault_ble.sh) with automatic switching based on USB cable detection. RAM key purge on BACK exit.
- nettaps -- USB Virtual Network Tap. Selectable time-window coalescer (30s/1m/2m/5m/10m), raw AF_PACKET capture on usb0, IP packet parsing, live LVGL console, flash-safe timed disk flush.
- scalpel -- Acoustic Scalpel Live Sound Synthesizer. NEW module from Master Manifest (Asset V). POSIX-threaded audio synthesis writing to /dev/dsp at 44.1kHz. SINE and SQUARE waveforms with real-time frequency tuning (20 Hz - 20 kHz) via rotary encoder in 10 Hz steps. PLAY toggles waveform.
- deploy -- Flash Storage Manager. statvfs("/") display of total/used/free MB with percentage, manual sync() via PLAY button.
- studio -- Studio Audio Class 2.0 Streaming Control Console. 4-channel mixer (GAME/DISCORD/MIC/MUSIC) with per-channel volume bars, NEXT/PREV key channel switching, PLAY toggles hardware mute. Sends USB Consumer Control HID commands (volume up/down/mute) to host via /dev/hidg1. DAC link status display (PCM 24-bit / 192 kHz).
- probe -- I2C Bus Hardware Scanner. Probes /dev/i2c-0 address space 0x03-0x77, displays responding devices with green highlighting.
- vterm -- FreeDOS Emulation Bridge. fork+exec dosbox with custom config, SIGTERM cleanup on BACK key, waitpid(WNOHANG) monitoring.
- radar -- BLE Device Radar Scanner. BlueZ HCI inquiry with RSSI (primary) or standard inquiry (fallback), 19-cell hexagonal heatmap grid, 3-tier RSSI color coding, auto-repeating scan loop.
- pauto -- Payload Automation (HID Keystroke Injector). Full OreBolt macro command language parser (DELAY, STRING, REM, modifier+key combos), USB HID keycode table (a-z, A-Z, 0-9, punctuation, F1-F12), rotary-scrollable payload picker, 8-byte report via /dev/hidg0.
- extract -- Mass Storage Extractor. Recursive copy from /mnt/target_media to /data/loot_drop/extracted/, skips symlinks, 4KB chunk copy, displays file/dir/byte counts.
- noise -- USB Hardware TRNG Stream. Generates 32-byte true entropy blocks via getrandom(GRND_RANDOM), pipes to host over CDC ACM serial (/dev/ttyGS0) at 100Hz.
- reset -- System Stack Purge/Reset. 3-state machine (CONFIRM->RUNNING->DONE), kills dosbox, brings usb0 down, deletes /data/loot_drop contents, calls sync().
- emulate -- Universal Retro Game Launcher. 17-type ROM database (NES/FDS/SNES/GB/GBC/GBA/Genesis/SMS/GameGear/PCE/ Atari2600/NeoGeoP), recursive /data/roms/ scan, 13-system filter with rapid-rotate cycling, fork+exec emulator launch, BACK kills child with SIGTERM.
- emulator_input_mapper standalone daemon -- fully integrated Full 456-line uinput gamepad translator: rotary encoder to d-pad (V-mode/H-mode toggle, 3s auto-revert), PLAY/BACK to A/B (short) and START/SELECT (long 1.5s), PREV/NEXT to L/R shoulders, combo buttons for X/Y. Creates "H2 Virtual Gamepad" via /dev/uinput. Now built with -fstack-protector-strong -D_FORTIFY_SOURCE=2.
- S98retro-input init script -- Full PID tracking,
daemon existence checks, graceful TERM to KILL escalation (2s timeout),
stale pidfile detection, and
statuscommand. - ROM directory structure created in overlay/data/roms/ for 11 systems: nes, snes, gb, gbc, gba, genesis, sms, gg, pce, atari2600, ngp. Directories are created both at build time (makefile rom-dirs target) and shipped in the overlay tree.
- overlay/data/bt_config/paired_macs.txt -- Trusted accessory MAC allow-list for bt_input_daemon.sh autoconnect.
- overlay/data/chat_config/macros.txt -- 10 pre-defined BitChat mesh command templates (STATUS/ALERT/CMD/TEST/PANIC types).
Still Stubs (5 modules)
The following modules added in v1.4 remain as stubs pending real hardware implementations:
- rfid -- RFID reader (no hardware spec yet)
- wifi -- WiFi management (no driver support yet)
- glitch -- Glitch/fault injection (hardware-dependent)
- pwdb -- Password database (design phase)
- bitchat -- Mesh frontend (liborebolt.a has mod_bitchat_mesh.c with bloom filter, but the .mod UI stub needs real BLE mesh code)
[v1.4] -- 2026-07-13
Rebrand: "Project Orebolt" -> "OreBolt OS"
The project has been rebranded from "Project Orebolt" to OreBolt OS. The v1.4 release is a build-and-licensing cleanup pass. All 18 module .c files are build-linkable stubs. See the full v1.4 changelog for details on the SoC correction, SHA256SUMS fix, and AGPL licensing.
[v1.3] -- 2026-07-13 (pre-cleanup)
Initial public drop. Shipped the overlay tree and all 12 module implementations as standalone fork/exec binaries. Targeted the wrong SoC (T31 instead of X1000E). See v1.4 changelog for cleanup details.