- Shell 90.7%
- Python 9.3%
Compendium of every fix, workaround, and hardware-enablement hack for Redrix
(HP Elite Dragonfly Chromebook G3) on Artix Linux / OpenRC / XLibre / XFCE.
Includes:
- 15 documented fixes under fixes/, indexed in docs/INDEX.md
- All custom scripts, OpenRC services, and config mirrored under
scripts/ services/ etc/ lib/
- A safe, idempotent restore system (restore/) that rebuilds the custom
layer on a fresh install: dry-run by default, backs up before overwrite,
atomic writes, per-item precondition checks, and no dangerous automation
(never runs grub-mkconfig, never restarts elogind live, never reboots).
Fixes shipped this session:
- BattSwitch charge-mode persistence across reboot (helper state-save +
local.d boot replay hook)
- Microphone volume on Ctrl+Vol with hold-to-repeat and a single
self-replacing OSD (keyd keysym + evdev daemon, backlight-daemon pattern)
Docs: HARDWARE quirk reference, GLOSSARY, CONTRIBUTING conventions.
|
||
|---|---|---|
| battswitch | ||
| bin | ||
| docs | ||
| etc | ||
| fixes | ||
| home/.config/autostart | ||
| lib/elogind/system-sleep | ||
| restore | ||
| scripts | ||
| services | ||
| .gitignore | ||
| CHANGELOG.md | ||
| LICENSE | ||
| README.md | ||
🐦⬛ Redrix Toolkit
Artix Linux bring-up, hardware enablement & fix compendium for the HP Elite Dragonfly Chromebook G3
Artix Linux · OpenRC · XLibre · XFCE · Submarine bootloader · LUKS/LVM
A complete, reproducible record of every fix, workaround, daemon, and hardware-enablement hack required to turn a locked-down ChromeOS device into a fully sovereign Linux machine.
What this is
This repository is the single source of truth for the machine known as Redrix (hostname
$YOURHOSTNAME) — an HP Elite Dragonfly Chromebook G3 reborn as an Artix Linux workstation. It is
both a human-readable compendium of every problem solved during the bring-up and a
machine-executable restore system that can rebuild the entire custom layer on a fresh install
without human babysitting and without bricking anything.
Every entry here was earned the hard way: through evtest captures, drm.debug histograms,
debugfs spelunking, EC firmware archaeology, and a great deal of trial and error. The point of
writing it all down is simple — so it never has to be done again.
Why it exists
Chromebooks are hostile hosts for a general-purpose Linux install. The EC (embedded controller) mediates the keyboard, battery, backlight, and power keys in ways that mainline Linux doesn't expect; the panel has a wake bug below the DRM layer; there is no physical function-row; and the firmware will happily cold-reset the machine to the developer-boot menu on a bad suspend. None of this is documented in one place anywhere. Now it is — for this machine, at least.
Machine profile
| Property | Value |
|---|---|
| Model | HP Elite Dragonfly Chromebook G3 |
| Hostname | $YOURHOSTNAME |
| Codename | Redrix |
| Distro | Artix Linux (rolling) |
| Init | OpenRC |
| Display server | XLibre (X11) |
| Desktop | XFCE |
| Bootloader | Submarine (depthcharge chain) |
| Disk | LUKS on LVM |
| Panel | 2256×1504 (3:2), eDP |
| SoC | Intel Alder Lake (i915) |
| Wi-Fi | Intel AX211 |
| Audio | rt5682s + max98390 (PipeWire) |
| EC tool | ectool at /usr/local/bin/ectool |
Repository layout
redrix-toolkit/
├── README.md ← you are here
├── docs/ ← cross-cutting reference material
│ ├── INDEX.md ← master index of every fix, by subsystem
│ ├── HARDWARE.md ← device/hardware quirk reference
│ ├── GLOSSARY.md ← EC / ChromeOS / Artix terms used throughout
│ └── CONTRIBUTING.md ← conventions for adding new fixes
├── fixes/ ← one self-contained document per fix
│ ├── bootloader-grub-static.md
│ ├── keyd-fkeys-and-launchers.md
│ ├── keyd-powerkey-confirm.md
│ ├── battery-charge-limit-battswitch.md
│ ├── battery-battswitch-persistence.md
│ ├── mic-volume-hold-repeat.md
│ ├── kbd-backlight-idle-fade.md
│ ├── suspend-hard-reset-ec-timeout.md
│ ├── suspend-lock-and-lid.md
│ ├── display-wake-on-lid-open.md
│ ├── tablet-mode-and-osk.md
│ ├── stylus-usi-pen.md
│ ├── cpufreq-auto-cpufreq.md
│ ├── notifications-history.md
│ └── fingerprint-crfpmoc.md
├── scripts/ ← every custom /usr/local/bin script
├── services/ ← every OpenRC init.d service
├── etc/ ← config files, mirrored to their real paths
├── lib/elogind/system-sleep/ ← suspend/resume hooks
└── restore/ ← safe, idempotent restore automation
├── restore.sh ← main entry point (dry-run by default)
├── manifest.tsv ← declarative file→destination map
└── lib/ ← helper functions (logging, backup, checks)
Quick start on a fresh install
⚠️ Read
restore/README.mdbefore running anything. The restore system defaults to a dry run — it will show you exactly what it would do and touch nothing until you explicitly pass--apply.
git clone https://git.selfhostedsovereignty.com/<user>/redrix-toolkit.git
cd redrix-toolkit
# 1. See what would happen — changes nothing:
./restore/restore.sh
# 2. Review the plan, then apply for real:
sudo ./restore/restore.sh --apply
# 3. Or apply a single subsystem at a time:
sudo ./restore/restore.sh --apply --only mic-volume
Every action is idempotent (safe to run repeatedly), backs up anything it overwrites, and verifies preconditions before touching the system. See the restore docs for the full safety model.
Fix index
A living index lives in docs/INDEX.md. Highlights:
- Bootloader — hand-written static grub.cfg protected from regeneration; pacman hook keeps version labels fresh
- Keyboard — full F-row synthesised via keyd (no physical F-keys); launcher & power-key remaps
- Battery — EC charge-limiting (BattSwitch GTK app) with reboot persistence
- Microphone — Ctrl+Vol input-volume control with hold-to-repeat and a single self-replacing OSD
- Backlight — keyboard backlight idle-fade daemon
- Suspend — the EC firmware hard-reset-to-dev-boot bug, root-caused and fixed
- Display — the below-DRM panel wake bug, exhaustively characterised
- Tablet — lid-angle tablet-mode handler + suckless on-screen keyboard
- Stylus — USI pen enablement
- Fingerprint — patched libfprint-crfpmoc fork
Conventions
- Scripts live at
/usr/local/bin/; services at/etc/init.d/; config mirrors its real path underetc/. - Every privileged EC operation resolves
ectoolby absolute path — pkexec/keyd sanitisePATH. - Every fix document states its contingency / rollback first-class, never as an afterthought.
- Nothing here uses systemd. Everything is OpenRC,
local.d, or elogind sleep hooks.
License
Personal configuration and documentation, released for reference. Use at your own risk on your own hardware — these fixes are specific to the HP Elite Dragonfly Chromebook G3 and may not be safe elsewhere.
💜 Support this work
If this compendium saved you hours of Chromebook-Linux suffering, consider throwing something in the tip jar:
CashApp: $thenewdarkages
Built and maintained by youarethecarbontheywanttoreduce · Self-hosted on Selfhosted Sovereignty
FOSS-first · Anti-surveillance · Self-sovereign