Tools Hub

Reference documentation for every tool used in the project. Child entries cover each tool in detail. See docs/tools/.

🧰 Toolchain Overview

ToolLocationWrapper / Notes
adb / fastbootsystem (android-tools via pacman)v35.0.2 / adb 1.0.41. Use adb --version, not adb version.
edl.pytools/opt/edl/via tools/edl-run wrapper
decryptBooxUpdateUpxtools/opt/decryptBooxUpdateUpx/via tools/deboox-run wrapper
payload-dumper-gotools/opt/payload-dumper-go/run directly
magiskboottools/opt/magiskbootextracted from Magisk v30.7 APK
Python venvtools/opt/venv/project-local; do not activate manually
TWRP build envDocker image twrp-builder:latestUbuntu 20.04 — ALL TWRP builds run in Docker
Ghidra REDocker image ghidra-re:latestv11.1.2, via tools/ghidra-run
ABL buildtools/abl-build <version>Docker — builds AND signs with qtestsign -v 5. Never use manually.
qtestsigntools/opt/qtestsign/qtestsign.pyMust use -v 5 for SDM636. Default -v 3 is silently rejected by XBL.
udev rules/etc/udev/rules.d/51-android.rulesADB 4ee2, fastboot d00d, EDL 9008, EDL 900e

⚠️ Known Gotchas

  • adb version (no dashes) starts the ADB daemon and hangs in non-interactive scripts. Use adb --version.
  • simg2img with no args reads from stdin and hangs. Check presence with command -v simg2img.
  • Python 3.14 on Arch has no pip. Use python3 -m venv to create a self-contained venv.
  • AIK (Android Image Kitchen) master is Windows-only. Use magiskboot for all boot image operations.
  • newgrp plugdev activates the group in the current shell without a full logout.
  • qcserial must be blacklisted (/etc/modprobe.d/no-qcserial.conf) — it auto-loads on 9008 connect and steals the Sahara HELLO.

More posts