[[Vorlage(Getestet, jammy)]] {{{#!vorlage Wissen [:Pakete installieren: Installation von Programmen] [:Packprogramme: Archive entpacken] [:Terminal: Ein Terminal öffnen] }}} [[Inhaltsverzeichnis(1)]] [[Bild(adb/android-logo.jpg, 64, align=left)]] '''fastboot''' (aus dem [https://developer.android.com/studio/ Android-SDK] {en}) ist eine Software-Schnittstelle, um vom Computer aus Android-Geräte zu "flashen", also z.B. Partitionen zu überschreiben, neu zu erstellen oder Updates einzuspielen. Die Verbindung zum Gerät erfolgt über einen USB-Port. Das Programm ist unter Windows, iOS und Linux nutzbar. fastboot ist ein äußerst mächtiges Programm mit sehr dezidierten Möglichkeiten, das man nicht unbedacht einsetzen sollte; Fehlverwendungen können unübersehbare Folgen haben. = Installation = Es gibt verschiedene Möglichkeiten, das Programm zu installieren[1]. Aus den offiziellen Quellen kann folgendes Paket installiert werden {{{#!vorlage Paketinstallation android-tools-fastboot }}} Alternative kann es aus der Android-SDK-Suite bezogen werden; die beiden Installationsarten schließen sich aber gegenseitig aus: {{{#!vorlage Paketinstallation fastboot }}} == Aktuelle Version == Zur Installation der aktuellsten Version siehe im [:adb/#Aktuelle-Version:adb-Artikel], das Vorgehen ist identisch. [[Vorlage(Fremd, Software,)]] == Vorbereitung == Auch die Hinweise zu [:adb/#udev-Regel:udev-Regeln] und [:adb/#USB-Debugging:USB-Debugging] sind für fastboot identisch mit denen für adb. {{{#!vorlage Warnung Die Verwendung des Programms geschieht aus eigene Gefahr! Vor Verwendung wird die Erstellung eines __kompletten System- und Daten-Backups__ des Geräts dringend empfohlen! Der Eingriff in das Betriebssystem des Geräts stellt immer ein erhebliches potentielles Risiko dar. Daher vorher sehr genau prüfen, ob z.B. das gewählte ROM oder die '''update.zip'''-Dateien für das eigene Gerät geeignet sind; bei Fehlverwendung drohen ggf. schwerwiegende Schäden. Mit dem Einsatz erlöschen ggf. die Garantieansprüche an den Geräte-Hersteller, offizielle Software-Updates sind dann nicht mehr bzw. nur nach Herstellung des Ursprungszustand möglich. Bei Schäden wird jegliche Verantwortung und Haftung abgelehnt! }}} = Verwendung = Um fastboot einsetzen zu können, muss das Gerät in den fastboot-Modus gesetzt werden, z.B. mit dem adb-Befehl `adb reboot fastboot`. Ggf. gibt es auch Tastenkombinationen für das Gerät, die man im Internet recherchieren kann, einige Hinweise liefert der Artikel [https://www.android-user.de/tipp-wie-komme-ich-in-den-fastboot-modus/ Wie komme ich in den fastboot-Modus?] {de} auf Android-Users.de. Der Akku des Geräts muss gut aufgeladen sein, ebenso auf eine sichere Verbindung zwischen Gerät und Computer achten (keine defekten Kabel oder USB-Ports verwenden, kontinuierliche Stromversorgung des PCs sicherstellen, kein versehentliches Abziehen des USB-Kabels)! Samsung verwendet einen eigenen sogenannten Odin-Modus (siehe [:Heimdall:]). Nicht alle Geräte lassen sich ohne Weiteres in den fastboot-Modus versetzen; bei einigen muss zunächst der Bootloader entsperrt werden. Oft funktioniert der undokumentierte Befehl `fastboot oem unlock`, Informationen zum eigenen Gerät aber bitte vor Verwendung im Internet recherchieren. Ggf. wird dabei ein komplettes Reset auf die Werkseinstellungen durchgeführt, ein Grund mehr für ein Backup. Andere Geräte (z.B. ein getestetes Huawei Mediapad x1) lassen sich durch den einfachen Aufruf von `adb reboot bootloader` entsperren, es erscheint im fastboot-Modus eine Meldung Meldung `Device unlocked` auf dem Gerätebildschirm. Das Programm selbst arbeitet von der Kommandozeile[3] aus, die allgemeine Syntax ist {{{#!vorlage Befehl fastboot [OPTION] BEFEHL }}} Zunächst die Verbindung mit dem Befehl {{{#!vorlage Befehl fastboot devices }}} überprüfen. Die Ausgabe sieht etwa so aus: {{{ ???????????? fastboot }}} Ggf. wird auch dieselbe Gerätekennung wie unter adb ausgegeben. == Befehle und Optionen == Die Angaben beziehen sich auf adb in Version 1.0.39; ältere Versionen bieten ggf. nicht alle Optionen; diese Auflistung ist zudem nicht vollständig! {{{#!vorlage Tabelle <-2, rowclass="titel"> Titel der Tabelle +++ Befehl/Option Funktion +++ __Befehle:__ +++ `update DATEINAME` Flash das Gerät mit dem '''update.zip''' neu; setzt den geflashten Slot aktiv; verwendet werden können nur '''.zip'''-Archive. +++ `flashall` Flasht '''boot''', '''system''', '''vendor''', und - wenn vorhanden - '''recovery'''. Wenn das Gerät Slots unterstützt, wird der Slot, auf den geflasht wurde, auf aktiv gesetzt, "Secondary" Images können auf einen inaktiven Slot geflasht werden. +++ `flash PARTITION [DATEINAME]` Schreibt ein Image auf eine Flash-Partition. +++ `erase PARTITION` Löscht die angegebene Flash-Partition. +++ `format[:[fs TYP][:[GRÖSSE]] PARTITION` Formatiert eine Flash-Partition. Dabei kann der Datei-System-Typ und/oder die Größe gegenüber denen der Bootloader-Ausgabe geändert werden. +++ `getvar VARIABEL` Zeigt eine Bootloader-Variabel, `all` listet alle verfügbaren auf (siehe [#Beispiel Beispiel]). +++ `devices [-l]` Listet alle verbundenen Geräte auf, mit `-l` auch den Geräte-Pfad. +++ `continue` Fährt mit dem Autoboot fort. +++ `reboot [bootloader|emergency]` Rebootet das Gerät, ggf. in den Bootloader, oder in einen Notfall-Modus. +++ `reboot-bootloader` Rebootet das Gerät in den Bootloader. +++ `help` Zeigt die Hilfe an +++ __Optionen:__ +++ `-w` Löscht die Benutzerdaten und den Cache (und formatiert neu, wenn der Partitions-Typ das zulässt). +++ `-u` Verhindert das Löschen der Partition bevor sie neu partitioniert wird. +++ `-s BESTIMMTES GERÄT` Angabe eines bestimmten Gerätes. Bei einer USB-Verbindung muss entweder einen Seriennummer (die `serialno`, siehe [#Beispiel Beispiel]) oder der Pfad zum USB-Geräte-Port angegeben werden. Bei Ethernet-Verbindungen muss eine Adresse in der Form `PROTOKOLL:HOSTNAME:[PORT]` angegeben werden, als Protokoll kann `tcp` oder `udp` verwendet werden; auf vielen Geräten (noch) nicht nutzbar. +++ `-p PRODUKT` Angabe eines Produktnamens. +++ `-i HERSTELLER-ID` Angabe einer eigenen USB-Hersteller-ID. +++ `--skip-reboot` Verhindert ein Reboot des Geräts bei Befehlen, die normalerweise einen Reboot auslösen. +++ `--version` Versionsnummer +++ `-h, --help` Hilfe }}} Der Befehl `fastboot -h` zeigt alle verwendbaren Befehle und Optionen der installierten Version. = Beispiel = Ausgabe von {{{#!vorlage Befehl fastboot getvar all }}} für ein Asus Nexus 7 (2012), gerootet, mit twrp-Recovery. {{{ (bootloader) version-bootloader: 4.23 (bootloader) version-baseband: N/A (bootloader) version-hardware: ER3 (bootloader) version-cdma: N/A (bootloader) variant: grouper (bootloader) serialno: 015d4b33e4242613 (bootloader) product: grouper (bootloader) secure: no (bootloader) unlocked: yes (bootloader) uart-on: no (bootloader) partition-size:bootloader: 0x0000000000600000 (bootloader) partition-type:bootloader: emmc (bootloader) partition-size:recovery: 0x0000000000c00000 (bootloader) partition-type:recovery: emmc (bootloader) partition-size:boot: 0x0000000000800000 (bootloader) partition-type:boot: emmc (bootloader) partition-size:system: 0x0000000028a00000 (bootloader) partition-type:system: ext4 (bootloader) partition-size:cache: 0x000000001bb00000 (bootloader) partition-type:cache: ext4 (bootloader) partition-size:userdata: 0x0000000700f00000 (bootloader) partition-type:userdata: ext4 all: finished. total time: 0.248s }}} = Extrahieren von .img-Dateien = Um aus '''update.app'''-Dateien, wie sie z.B. für Huawei-Roms verwendet werden, die '''.img'''-Dateien für bestimmte Partitionen zu extrahieren, kann das Programm [github:marcominetti/split_updata.pl:splitupdate] {en} verwendet werden. Das [:Perl:]-Skript in das Verzeichnis der update-Datei kopieren, und dort im Terminal {{{#!vorlage Befehl ./splitupdate UPDATE.APP }}} ausführen. Die '''.img'''-Dateien werden in den neu erstellten Ordner '''/output/ ''' extrahiert. =Problembehebung= == fastboot hängt == Sollten bei einer Verbindung über USB Befehle wie `fastboot boot`, `fastboot flash` oder `fastboot getvar` nicht innerhalb weniger Sekunden eine Ergebnis-Ausgabe im Terminal oder eine Reaktion auf dem Android-Gerät erzeugen (z.B. "hängt" bei Terminal-Ausgabe `Sending boot.img`), obwohl `fastboot devices` eine fehlerfreie Antwort geliefert hat, kann folgendes helfen: Einen anderen USB-Anschluss am PC verwenden, bevorzugt USB 2.0 oder USB Hub. = Alternativen = * [:adb:], das Schwesterprogramm aus der Android SDK * Für Samsung-Geräte liefert [:Heimdall:] ähnliche Funktionen = Links = * [https://www.droidwiki.org/wiki/Fastboot_(Tool) Fastboot-Artikel] {de} auf DroidWiki.org * [https://forum.xda-developers.com/showthread.php?t=2277112 Anleitung] {en} im xda-Forum * [https://www.xda-developers.com/how-to-discover-hidden-fastboot-commands/ Anleitung zum Finden nicht-dokumentierter Fastboot-Befehle] {en} auf xda-developers.com * [https://forum.xda-developers.com/pixel-xl/help/fastboot-command-syntax-t3532423 fastboot-Befehle] {en} auf xda-developers.com * [https://www.makeuseof.com/tag/use-adb-fastboot-android/ Tipps zur Verwendung] {en} von adb und fastboot. * [https://www.gsp.com/cgi-bin/man.cgi?section=1&topic=fastboot Manpage] {en} für FreeBSD * [https://www.theandroidsoul.com/unlock-bootloader-via-fastboot-android/ Anleitung zum Entsperren des Bootloaders] {en} auf theandroidsoul.com * [https://android.googlesource.com/platform/system/core/+/master/fastboot Offizielle Dokumentation] {en} auf googlesource #tag: Netzwerk, Hardware, Android, Kommunikation