initial aubox skeleton: web-UI, kirin DLOAD, firmware library

- FastAPI Web-UI auf 127.0.0.1:8080 mit Geräte-Live-Erkennung,
  sandboxed File-Browser, Firmware-Library (SQLite + Auto-Identifikation)
- Huawei update.app Parser: extrahiert Hardware-ID, Section-Layout,
  BOOT/SYSTEM-Vorhandensein direkt aus den Headern
- Kirin Download-Mode: hisi-idt-Protokoll-Implementation gegen pyusb
- USB-Erkennung für Huawei (DLOAD/Fastboot-D), Google, MediaTek, Qualcomm EDL
- Huawei-P10-Lite-Workflow (eRecovery + Testpoint-DLOAD-Pfade)
- Docker-Compose mit USB-Passthrough (Major 189) für Re-Enumeration
- udev-Regeln + Setup-Script für Debian/Ubuntu/Pi-OS

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Stefan Hacker
2026-04-26 12:09:39 +02:00
parent d0386b3c53
commit fb3534553b
35 changed files with 1883 additions and 0 deletions
+30
View File
@@ -0,0 +1,30 @@
#!/usr/bin/env bash
# aubox im Container starten, mit USB-Passthrough so dass Re-Enumeration
# (Kirin DLOAD -> Huawei Fastboot-D) korrekt durchläuft.
#
# Wichtig: Wir mounten /dev/bus/usb komplett (nicht ein einzelnes Device),
# damit nach Re-Enumeration das neue Device sichtbar ist. Dazu ist die
# device-cgroup-rule für USB (Major 189) nötig.
#
# udev-Regeln müssen auf dem HOST liegen, nicht im Container. Falls noch
# nicht installiert, einmalig: sudo bash scripts/setup-linux.sh
set -euo pipefail
PROJECT_DIR="$(cd "$(dirname "$0")/.." && pwd)"
IMAGE="${AUBOX_IMAGE:-aubox}"
# Image bauen, falls nicht vorhanden
if ! docker image inspect "$IMAGE" >/dev/null 2>&1; then
echo "Image $IMAGE nicht gefunden — baue..."
docker build -t "$IMAGE" "$PROJECT_DIR"
fi
# USB-Major-Nummer für cgroup-rule
USB_MAJOR=189
exec docker run --rm -it \
--device-cgroup-rule="c ${USB_MAJOR}:* rmw" \
-v /dev/bus/usb:/dev/bus/usb \
-v "${PROJECT_DIR}/loaders:/app/loaders:ro" \
"$IMAGE" "$@"
+40
View File
@@ -0,0 +1,40 @@
#!/usr/bin/env bash
# Setup für Debian/Ubuntu/Mint (inkl. Raspberry Pi OS). Muss als root laufen.
set -euo pipefail
if [[ $EUID -ne 0 ]]; then
echo "Bitte mit sudo aufrufen." >&2
exit 1
fi
apt-get update
apt-get install -y \
android-tools-adb \
android-tools-fastboot \
libusb-1.0-0 \
libusb-1.0-0-dev \
python3 \
python3-pip \
python3-venv \
usbutils
# udev-Regel installieren, damit der normale User ohne sudo auf die
# Hersteller-spezifischen USB-Modi zugreifen kann (Kirin DLOAD, fastboot etc.)
install -m 0644 udev/51-android-unlock.rules /etc/udev/rules.d/
udevadm control --reload-rules
udevadm trigger
# Den aufrufenden User in die plugdev-Gruppe stecken
TARGET_USER="${SUDO_USER:-$USER}"
if [[ -n "$TARGET_USER" && "$TARGET_USER" != "root" ]]; then
usermod -aG plugdev "$TARGET_USER"
fi
# Python-Deps in eine venv im Projektverzeichnis
PROJECT_DIR="$(cd "$(dirname "$0")/.." && pwd)"
sudo -u "$TARGET_USER" python3 -m venv "$PROJECT_DIR/.venv"
sudo -u "$TARGET_USER" "$PROJECT_DIR/.venv/bin/pip" install -r "$PROJECT_DIR/requirements.txt"
echo
echo "Setup fertig. Einmal ab- und neu anmelden, damit plugdev greift."
echo "Dann: source .venv/bin/activate && python -m aubox detect"