No description
  • Shell 90.7%
  • Python 9.3%
Find a file
youarethecarbontheywanttoreduce 12d94874da Initial commit: Redrix toolkit — Artix fix compendium + safe restore system
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.
2026-08-05 19:04:52 -04:00
battswitch Initial commit: Redrix toolkit — Artix fix compendium + safe restore system 2026-08-05 18:58:24 -04:00
bin Initial commit: Redrix toolkit — Artix fix compendium + safe restore system 2026-08-05 18:58:24 -04:00
docs Initial commit: Redrix toolkit — Artix fix compendium + safe restore system 2026-08-05 18:58:24 -04:00
etc Initial commit: Redrix toolkit — Artix fix compendium + safe restore system 2026-08-05 18:58:24 -04:00
fixes Initial commit: Redrix toolkit — Artix fix compendium + safe restore system 2026-08-05 18:58:24 -04:00
home/.config/autostart Initial commit: Redrix toolkit — Artix fix compendium + safe restore system 2026-08-05 18:58:24 -04:00
lib/elogind/system-sleep Initial commit: Redrix toolkit — Artix fix compendium + safe restore system 2026-08-05 18:58:24 -04:00
restore Initial commit: Redrix toolkit — Artix fix compendium + safe restore system 2026-08-05 18:58:24 -04:00
scripts Initial commit: Redrix toolkit — Artix fix compendium + safe restore system 2026-08-05 18:58:24 -04:00
services Initial commit: Redrix toolkit — Artix fix compendium + safe restore system 2026-08-05 18:58:24 -04:00
.gitignore Initial commit: Redrix toolkit — Artix fix compendium + safe restore system 2026-08-05 18:58:24 -04:00
CHANGELOG.md Initial commit: Redrix toolkit — Artix fix compendium + safe restore system 2026-08-05 18:58:24 -04:00
LICENSE Initial commit: Redrix toolkit — Artix fix compendium + safe restore system 2026-08-05 18:58:24 -04:00
README.md Initial commit: Redrix toolkit — Artix fix compendium + safe restore system 2026-08-05 19:04:52 -04:00

🐦‍⬛ 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.md before 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 under etc/.
  • Every privileged EC operation resolves ectool by absolute path — pkexec/keyd sanitise PATH.
  • 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