10 KiB
Executable File
OreBolt OS v1.7 -- Architecture
1. Target hardware
| Component | Spec |
|---|---|
| Device | Aigo Eros Q family: HiFiWalker H2, Surfans F20, Phinistec Z6, Agptek H3 |
| SoC | Ingenic X1000E (JZ4760 family), MIPS32r2, little-endian, hard-float |
| Memory | 64 MB DDR2 (typical, some revisions 128 MB) |
| Display | 320 x 240 RGB565 LCD (ILI9341-class controller) |
| Audio DAC | ESS ES9018K2M |
| Headphone amp | MAX97220 |
| Storage | MicroSD (boot), 8 MB SPI flash (bootloader) |
| USB | USB-C (newer revisions) or Micro-USB (older revisions) |
| Bluetooth | BLE (varies by revision; some have no BT) |
SoC note: The H2 and its siblings use the Ingenic X1000E (JZ4760 family). The two SoCs share a peripheral family but differ in clock tree, GPIO banks, and USB PHY -- see HEADERS.md Section 4 for details.
2. Software stack
+----------------------------------------------------------+
| 17 OreBolt OS modules (LVGL UI panels, *.mod) |
| vault nettaps deploy studio probe vterm pauto |
| extract noise reset retro scalpel rfid glitch |
| pwdb proxalarm(unified) bitchat(AGPL) |
+----------------------------------------------------------+
| retro_input_mapper (standalone uinput daemon, hardened)|
+----------------------------------------------------------+
| liblvgl.so (MIT) liborebolt.a (GPL-2.0+) |
| LVGL v8.3.11 UI panic_purge, forensics, HID, |
| radio_mux, ui_frame_graphics |
+----------------------------------------------------------+
| H2 stock Linux kernel 3.10.14 (Ingenic X1000E BSP) |
| + OreBolt OS init scripts (S98retro-input, S99broker, |
| bt_input_daemon.sh) |
+----------------------------------------------------------+
| Ingenic X1000E hardware (MIPS32r2, FPU, LCD, SD, USB, |
| SPI flash, BT, audio codec) |
+----------------------------------------------------------+
3. Module inventory (17 modules, v1.7)
| ID | Module | License | Purpose |
|---|---|---|---|
| 0 | vault | GPL-2.0+ | Crypto Security Token Vault (PIN auth, dual USB/BLE identity) |
| 1 | nettap | GPL-2.0+ | USB Virtual Network Tap (time-windowed packet capture) |
| 2 | scalpel | GPL-2.0+ | Acoustic Scalpel Live Sound Synthesizer |
| 3 | deploy | GPL-2.0+ | Flash Storage Manager (statvfs + manual sync) |
| 4 | studio | GPL-2.0+ | UAC2 Mixer Console (4-channel, USB Consumer Control HID) |
| 5 | probe | GPL-2.0+ | I2C Bus Hardware Scanner |
| 6 | vterm | GPL-2.0+ | FreeDOS Emulation Bridge |
| 7 | pauto | GPL-2.0+ | Payload Automation (HID keystroke injector) |
| 8 | extract | GPL-2.0+ | Mass Storage Extractor (recursive /mnt/target_media copy) |
| 9 | noise | GPL-2.0+ | USB Hardware TRNG Stream (getrandom via CDC ACM) |
| 10 | system (reset.mod) | GPL-2.0+ | System Tools: operational purge, Hiby Player restore, reboot. Detects user-installed Rockbox for reboot-to-Rockbox option. |
| 11 | retro | GPL-2.0+ | Universal Retro Game Launcher (17-type ROM database) |
| 12 | rfid | GPL-2.0+ | RFID/NFC reader module (stub) |
| 13 | glitch | GPL-2.0+ | Hardware glitch injector (stub) |
| 14 | pwdb | GPL-2.0+ | Password database (stub) |
| 15 | proxalarm | GPL-2.0+ | Unified proximity alarm / radar. 3-layer architecture: bledsp (BLE + WiFi stub RSSI scanning), proxvec (kinematics + alarm FSM), radar_ui (LVGL canvas radar display). NEXT key cycles RF source (BLE/WIFI). |
| 16 | bitchat | AGPL-3.0-only | Mesh chat networking (stub). Independent C implementation of the BitChat protocol. Not affiliated with, sponsored by, or endorsed by Permissionless Tech, LLC. |
| -- | retro_input_mapper | GPL-2.0+ | Integrated uinput gamepad daemon (hardened build) |
4. Build pipeline
build.sh
Phase 0 host dep check + KERNEL_HEADERS probe
Phase 1 toolchain verification (mipsel-linux-musl-*)
Phase 2 workspace integrity check (17 modules + headers + scripts)
Phase 3 overlay/ tree creation
Phase 4 permission fixups on init scripts
Phase 5 H2 Core v6.5 build (LVGL clone + liblvgl.so + h2_test + 17 modules + mapper)
Phase 6 OreBolt OS v1.7 build (liborebolt.a + 150-payload matrix)
Phase 7 artifact verification (MIPS LE ELF check + AGPL marker check)
Phase 8 optional --deploy [--backup-stock] to SD card
5. Headers sourcing
+-----------------------------+
| KERNEL_HEADERS env var |
| (default /opt/fiio-m3k-linux)|
+--------------+--------------+
|
+------------------+------------------+
v v
+-----------------------+ +------------------------+
| FiiO M3K GPL kernel | | Ingenic XBurst BSP |
| (primary, same X1000E)| | (fallback, raw SDK) |
+-----------------------+ +------------------------+
|
v
+-----------------------+
| Makefiles add -I: |
| include/uapi |
| include |
| arch/mips/include |
| arch/mips/include/ |
| asm/mach-jz4760 |
+-----------------------+
|
v
+-----------------------+
| Rockbox tree |
| (OPTIONAL, bare-metal |
| reference only) |
+-----------------------+
See HEADERS.md for the full strategy.
6. Licensing tiers
+-------------------+ +-------------------+ +-------------------+
| LVGL (MIT) | | liborebolt.a | | bitchat.mod |
| | | (GPL-2.0+) | | (AGPL-3.0-only) |
| shared lib | | static archive | | separate .mod |
+-------------------+ +-------------------+ +-------------------+
| | |
+----------+------------+ |
v |
+-------------------+ |
| 15 userland .mod | |
| (GPL-2.0+) |<--- bitchat links TO ----+
+-------------------+ them (not vice versa)
The AGPL boundary is the single bitchat.mod binary. bitchat links
to liblvgl.so and liborebolt.a; those libraries do not become AGPL
just because bitchat links against them. See LICENSE.md
Section 4 for the full boundary analysis.
7. Firmware coexistence (SD-card-only)
OreBolt OS and the stock Hiby Player both boot from the FAT32 MicroSD card. The 8 MB SPI flash holds only the bootloader and is never modified by OreBolt OS.
| Environment | SD card presence | Boot method |
|---|---|---|
| Hiby Player (stock) | Factory files in /usr/bin/ (hiby_player), /etc/, /res/ | Stock bootloader loads kernel + stock init |
| OreBolt OS | /apps/*.mod, /usr/bin/h2_test, /usr/lib/liblvgl.so, /etc/init.d/S99broker | Stock bootloader loads kernel, S99broker starts h2_test |
If a user has separately installed Rockbox on the same SD card (a third-party, user-managed firmware), the System Tools module detects its presence and offers a reboot option. OreBolt OS does not ship, bundle, or install Rockbox. The user installs and manages Rockbox independently.
Switching between Hiby Player and OreBolt OS is a matter of which
files are on the SD card. The System Tools module (reset.mod,
displayed as "system" in the menu) handles the stock restore. The
stock firmware backup is created at deploy time with --backup-stock.
8. Filesystem layout on the device
/
├── usr/
│ ├── bin/
│ │ ├── h2_test # OreBolt OS launcher
│ │ ├── retro_input_mapper # uinput gamepad daemon
│ │ ├── enable_vault_usb.sh # ConfigFS USB gadget setup
│ │ └── enable_vault_ble.sh # BT bringup
│ └── lib/
│ └── liblvgl.so # LVGL v8.3.11
├── apps/
│ ├── vault.mod
│ ├── nettaps.mod
│ ├── ... (13 GPL modules)
│ └── bitchat.mod # AGPL
├── etc/init.d/
│ ├── S98retro-input
│ ├── S99broker
│ └── bt_input_daemon.sh
├── data/
│ ├── payloads/
│ │ ├── linux/01..50.dd # 50 Linux HID payloads
│ │ ├── macos/51..62.dd # 12 macOS HID payloads
│ │ ├── windows/01..50.dd # 50 Windows HID payloads
│ │ ├── lnx_*_profile_*.macro # 200 Linux macro profiles
│ │ ├── win_*_profile_*.macro # 200 Windows macro profiles
│ │ └── mac_*_profile_*.macro # 200 macOS macro profiles
│ ├── vault/
│ │ ├── payloads/Provision.txt # operator-edited quick-launch list
│ │ ├── syslog.log # rotating log
│ │ └── failures.dat # binary failure log
│ ├── stock_backup/ # Stock firmware snapshot (--backup-stock)
│ │ ├── usr/bin/ # Stock binaries (hiby_player)
│ │ ├── etc/ # Stock init configuration
│ │ ├── res/ # Stock resources
│ │ └── setting/ # Stock player settings
│ ├── forensics_bin/
│ ├── roms/ # Retro game ROM directories
│ │ ├── nes/ snes/ gb/ gbc/ gba/
│ │ ├── genesis/ sms/ gg/
│ │ └── pce/ atari2600/ ngp/
│ └── vterm/freedos/bin/
9. Boot sequence
- H2 bootloader (SPI flash) loads kernel from SD card.
- Linux boots, mounts rootfs, runs
/etc/init.d/rcS. S98retro-inputstartsretro_input_mapper.S99brokerstartsh2_testwithOREBOLT_VERSION=1.7andOREBOLT_TARGET_SOC=X1000Eenv vars.h2_testinitializes LVGL via fbdev, registers all 17 modules, and enters the LVGL tick loop.bt_input_daemon.shbrings up hci0 for BLE pairing.- bitchat.mod advertises its AGPL source URL via the first mesh HELLO.