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:
Executable
+30
@@ -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" "$@"
|
||||
Executable
+40
@@ -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"
|
||||
Reference in New Issue
Block a user