123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170 |
- FastBoot Version 0.4
- The fastboot protocol is a mechanism for communicating with bootloaders
- over USB. It is designed to be very straightforward to implement, to
- allow it to be used across a wide range of devices and from hosts running
- Linux, Windows, or OSX.
- Basic Requirements
- * Two bulk endpoints (in, out) are required
- * Max packet size must be 64 bytes for full-speed and 512 bytes for
- high-speed USB
- * The protocol is entirely host-driven and synchronous (unlike the
- multi-channel, bi-directional, asynchronous ADB protocol)
- Transport and Framing
- 1. Host sends a command, which is an ascii string in a single
- packet no greater than 64 bytes.
- 2. Client response with a single packet no greater than 64 bytes.
- The first four bytes of the response are "OKAY", "FAIL", "DATA",
- or "INFO". Additional bytes may contain an (ascii) informative
- message.
- a. INFO -> the remaining 60 bytes are an informative message
- (providing progress or diagnostic messages). They should
- be displayed and then step
- b. FAIL -> the requested command failed. The remaining 60 bytes
- of the response (if present) provide a textual failure message
- to present to the user. Stop.
- c. OKAY -> the requested command completed successfully. Go to
- d. DATA -> the requested command is ready for the data phase.
- A DATA response packet will be 12 bytes long, in the form of
- DATA00000000 where the 8 digit hexidecimal number represents
- the total data size to transfer.
- 3. Data phase. Depending on the command, the host or client will
- send the indicated amount of data. Short packets are always
- acceptable and zero-length packets are ignored. This phase continues
- until the client has sent or received the number of bytes indicated
- in the "DATA" response above.
- 4. Client responds with a single packet no greater than 64 bytes.
- The first four bytes of the response are "OKAY", "FAIL", or "INFO".
- Similar to
- a. INFO -> display the remaining 60 bytes and return to
- b. FAIL -> display the remaining 60 bytes (if present) as a failure
- reason and consider the command failed. Stop.
- c. OKAY -> success. Go to
- 5. Success. Stop.
- Example Session
- Host: "getvar:version" request version variable
- Client: "OKAY0.4" return version "0.4"
- Host: "getvar:nonexistant" request some undefined variable
- Client: "OKAY" return value ""
- Host: "download:00001234" request to send 0x1234 bytes of data
- Client: "DATA00001234" ready to accept data
- Host: < 0x1234 bytes > send data
- Client: "OKAY" success
- Host: "flash:bootloader" request to flash the data to the bootloader
- Client: "INFOerasing flash" indicate status / progress
- "INFOwriting flash"
- "OKAY" indicate success
- Host: "powerdown" send a command
- Client: "FAILunknown command" indicate failure
- Command Reference
- * Command parameters are indicated by printf-style escape sequences.
- * Commands are ascii strings and sent without the quotes (which are
- for illustration only here) and without a trailing 0 byte.
- * Commands that begin with a lowercase letter are reserved for this
- specification. OEM-specific commands should not begin with a
- lowercase letter, to prevent incompatibilities with future specs.
- "getvar:%s" Read a config/version variable from the bootloader.
- The variable contents will be returned after the
- OKAY response.
- "download:%08x" Write data to memory which will be later used
- by "boot", "ramdisk", "flash", etc. The client
- will reply with "DATA%08x" if it has enough
- space in RAM or "FAIL" if not. The size of
- the download is remembered.
- "verify:%08x" Send a digital signature to verify the downloaded
- data. Required if the bootloader is "secure"
- otherwise "flash" and "boot" will be ignored.
- "flash:%s" Write the previously downloaded image to the
- named partition (if possible).
- "erase:%s" Erase the indicated partition (clear to 0xFFs)
- "boot" The previously downloaded data is a boot.img
- and should be booted according to the normal
- procedure for a boot.img
- "continue" Continue booting as normal (if possible)
- "reboot" Reboot the device.
- "reboot-bootloader" Reboot back into the bootloader.
- Useful for upgrade processes that require upgrading
- the bootloader and then upgrading other partitions
- using the new bootloader.
- "powerdown" Power off the device.
- Client Variables
- The "getvar:%s" command is used to read client variables which
- represent various information about the device and the software
- on it.
- The various currently defined names are:
- version Version of FastBoot protocol supported.
- It should be "0.3" for this document.
- version-bootloader Version string for the Bootloader.
- version-baseband Version string of the Baseband Software
- product Name of the product
- serialno Product serial number
- secure If the value is "yes", this is a secure
- bootloader requiring a signature before
- it will install or boot images.
- Names starting with a lowercase character are reserved by this
- specification. OEM-specific names should not start with lowercase
- characters.
|