Reference documentation for every tool used in the project. Child entries cover each tool in detail. See docs/tools/.
🧰 Toolchain Overview
| Tool | Location | Wrapper / Notes |
|---|---|---|
| adb / fastboot | system (android-tools via pacman) | v35.0.2 / adb 1.0.41. Use adb --version, not adb version. |
| edl.py | tools/opt/edl/ | via tools/edl-run wrapper |
| decryptBooxUpdateUpx | tools/opt/decryptBooxUpdateUpx/ | via tools/deboox-run wrapper |
| payload-dumper-go | tools/opt/payload-dumper-go/ | run directly |
| magiskboot | tools/opt/magiskboot | extracted from Magisk v30.7 APK |
| Python venv | tools/opt/venv/ | project-local; do not activate manually |
| TWRP build env | Docker image twrp-builder:latest | Ubuntu 20.04 — ALL TWRP builds run in Docker |
| Ghidra RE | Docker image ghidra-re:latest | v11.1.2, via tools/ghidra-run |
| ABL build | tools/abl-build <version> | Docker — builds AND signs with qtestsign -v 5. Never use manually. |
| qtestsign | tools/opt/qtestsign/qtestsign.py | Must use -v 5 for SDM636. Default -v 3 is silently rejected by XBL. |
| udev rules | /etc/udev/rules.d/51-android.rules | ADB 4ee2, fastboot d00d, EDL 9008, EDL 900e |
⚠️ Known Gotchas
adb version(no dashes) starts the ADB daemon and hangs in non-interactive scripts. Useadb --version.simg2imgwith no args reads from stdin and hangs. Check presence withcommand -v simg2img.- Python 3.14 on Arch has no pip. Use
python3 -m venvto create a self-contained venv. - AIK (Android Image Kitchen) master is Windows-only. Use
magiskbootfor all boot image operations. newgrp plugdevactivates the group in the current shell without a full logout.qcserialmust be blacklisted (/etc/modprobe.d/no-qcserial.conf) — it auto-loads on 9008 connect and steals the Sahara HELLO.