]>
Commit | Line | Data |
---|---|---|
3aab70af SS |
1 | FastBoot Version 0.4 |
2 | ---------------------- | |
3 | ||
4 | The fastboot protocol is a mechanism for communicating with bootloaders | |
5 | over USB. It is designed to be very straightforward to implement, to | |
6 | allow it to be used across a wide range of devices and from hosts running | |
7 | Linux, Windows, or OSX. | |
8 | ||
9 | ||
10 | Basic Requirements | |
11 | ------------------ | |
12 | ||
13 | * Two bulk endpoints (in, out) are required | |
14 | * Max packet size must be 64 bytes for full-speed and 512 bytes for | |
15 | high-speed USB | |
16 | * The protocol is entirely host-driven and synchronous (unlike the | |
17 | multi-channel, bi-directional, asynchronous ADB protocol) | |
18 | ||
19 | ||
20 | Transport and Framing | |
21 | --------------------- | |
22 | ||
23 | 1. Host sends a command, which is an ascii string in a single | |
24 | packet no greater than 64 bytes. | |
25 | ||
26 | 2. Client response with a single packet no greater than 64 bytes. | |
27 | The first four bytes of the response are "OKAY", "FAIL", "DATA", | |
28 | or "INFO". Additional bytes may contain an (ascii) informative | |
29 | message. | |
30 | ||
31 | a. INFO -> the remaining 60 bytes are an informative message | |
32 | (providing progress or diagnostic messages). They should | |
33 | be displayed and then step #2 repeats | |
34 | ||
35 | b. FAIL -> the requested command failed. The remaining 60 bytes | |
36 | of the response (if present) provide a textual failure message | |
37 | to present to the user. Stop. | |
38 | ||
39 | c. OKAY -> the requested command completed successfully. Go to #5 | |
40 | ||
41 | d. DATA -> the requested command is ready for the data phase. | |
42 | A DATA response packet will be 12 bytes long, in the form of | |
43 | DATA00000000 where the 8 digit hexidecimal number represents | |
44 | the total data size to transfer. | |
45 | ||
46 | 3. Data phase. Depending on the command, the host or client will | |
47 | send the indicated amount of data. Short packets are always | |
48 | acceptable and zero-length packets are ignored. This phase continues | |
49 | until the client has sent or received the number of bytes indicated | |
50 | in the "DATA" response above. | |
51 | ||
52 | 4. Client responds with a single packet no greater than 64 bytes. | |
53 | The first four bytes of the response are "OKAY", "FAIL", or "INFO". | |
54 | Similar to #2: | |
55 | ||
56 | a. INFO -> display the remaining 60 bytes and return to #4 | |
57 | ||
58 | b. FAIL -> display the remaining 60 bytes (if present) as a failure | |
59 | reason and consider the command failed. Stop. | |
60 | ||
61 | c. OKAY -> success. Go to #5 | |
62 | ||
63 | 5. Success. Stop. | |
64 | ||
65 | ||
66 | Example Session | |
67 | --------------- | |
68 | ||
69 | Host: "getvar:version" request version variable | |
70 | ||
71 | Client: "OKAY0.4" return version "0.4" | |
72 | ||
73 | Host: "getvar:nonexistant" request some undefined variable | |
74 | ||
75 | Client: "OKAY" return value "" | |
76 | ||
77 | Host: "download:00001234" request to send 0x1234 bytes of data | |
78 | ||
79 | Client: "DATA00001234" ready to accept data | |
80 | ||
81 | Host: < 0x1234 bytes > send data | |
82 | ||
83 | Client: "OKAY" success | |
84 | ||
85 | Host: "flash:bootloader" request to flash the data to the bootloader | |
86 | ||
87 | Client: "INFOerasing flash" indicate status / progress | |
88 | "INFOwriting flash" | |
89 | "OKAY" indicate success | |
90 | ||
91 | Host: "powerdown" send a command | |
92 | ||
93 | Client: "FAILunknown command" indicate failure | |
94 | ||
95 | ||
96 | Command Reference | |
97 | ----------------- | |
98 | ||
99 | * Command parameters are indicated by printf-style escape sequences. | |
100 | ||
101 | * Commands are ascii strings and sent without the quotes (which are | |
102 | for illustration only here) and without a trailing 0 byte. | |
103 | ||
104 | * Commands that begin with a lowercase letter are reserved for this | |
105 | specification. OEM-specific commands should not begin with a | |
106 | lowercase letter, to prevent incompatibilities with future specs. | |
107 | ||
108 | "getvar:%s" Read a config/version variable from the bootloader. | |
109 | The variable contents will be returned after the | |
110 | OKAY response. | |
111 | ||
112 | "download:%08x" Write data to memory which will be later used | |
113 | by "boot", "ramdisk", "flash", etc. The client | |
114 | will reply with "DATA%08x" if it has enough | |
115 | space in RAM or "FAIL" if not. The size of | |
116 | the download is remembered. | |
117 | ||
118 | "verify:%08x" Send a digital signature to verify the downloaded | |
119 | data. Required if the bootloader is "secure" | |
120 | otherwise "flash" and "boot" will be ignored. | |
121 | ||
122 | "flash:%s" Write the previously downloaded image to the | |
123 | named partition (if possible). | |
124 | ||
125 | "erase:%s" Erase the indicated partition (clear to 0xFFs) | |
126 | ||
127 | "boot" The previously downloaded data is a boot.img | |
128 | and should be booted according to the normal | |
129 | procedure for a boot.img | |
130 | ||
131 | "continue" Continue booting as normal (if possible) | |
132 | ||
133 | "reboot" Reboot the device. | |
134 | ||
135 | "reboot-bootloader" Reboot back into the bootloader. | |
136 | Useful for upgrade processes that require upgrading | |
137 | the bootloader and then upgrading other partitions | |
138 | using the new bootloader. | |
139 | ||
140 | "powerdown" Power off the device. | |
141 | ||
142 | ||
143 | ||
144 | Client Variables | |
145 | ---------------- | |
146 | ||
147 | The "getvar:%s" command is used to read client variables which | |
148 | represent various information about the device and the software | |
149 | on it. | |
150 | ||
151 | The various currently defined names are: | |
152 | ||
153 | version Version of FastBoot protocol supported. | |
154 | It should be "0.3" for this document. | |
155 | ||
156 | version-bootloader Version string for the Bootloader. | |
157 | ||
158 | version-baseband Version string of the Baseband Software | |
159 | ||
160 | product Name of the product | |
161 | ||
162 | serialno Product serial number | |
163 | ||
164 | secure If the value is "yes", this is a secure | |
165 | bootloader requiring a signature before | |
166 | it will install or boot images. | |
167 | ||
168 | Names starting with a lowercase character are reserved by this | |
169 | specification. OEM-specific names should not start with lowercase | |
170 | characters. |