Blame view

doc/README.android-fastboot 5.79 KB
277b1333b   Alex Kiernan   fastboot: Update ...
1
  ================
3aab70afc   Sebastian Siewior   usb/gadget: add t...
2
  Android Fastboot
277b1333b   Alex Kiernan   fastboot: Update ...
3
  ================
3aab70afc   Sebastian Siewior   usb/gadget: add t...
4
5
6
  
  Overview
  ========
3aab70afc   Sebastian Siewior   usb/gadget: add t...
7

277b1333b   Alex Kiernan   fastboot: Update ...
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
  The protocol that is used over USB and UDP is described in the
  ``README.android-fastboot-protocol`` file in the same directory.
  
  The current implementation supports the following standard commands:
  
  - ``boot``
  - ``continue``
  - ``download``
  - ``erase`` (if enabled)
  - ``flash`` (if enabled)
  - ``getvar``
  - ``reboot``
  - ``reboot-bootloader``
  - ``set_active`` (only a stub implementation which always succeeds)
  
  The following OEM commands are supported (if enabled):
  
  - oem format - this executes ``gpt write mmc %x $partitions``
  
  Support for both eMMC and NAND devices is included.
3aab70afc   Sebastian Siewior   usb/gadget: add t...
28
29
30
  
  Client installation
  ===================
277b1333b   Alex Kiernan   fastboot: Update ...
31
32
33
34
35
36
37
  
  The counterpart to this is the fastboot client which can be found in
  Android's ``platform/system/core`` repository in the fastboot
  folder. It runs on Windows, Linux and OSX. The fastboot client is
  part of the Android SDK Platform-Tools and can be downloaded from:
  
  https://developer.android.com/studio/releases/platform-tools
3aab70afc   Sebastian Siewior   usb/gadget: add t...
38
39
40
  
  Board specific
  ==============
277b1333b   Alex Kiernan   fastboot: Update ...
41
42
43
  
  USB configuration
  -----------------
3aab70afc   Sebastian Siewior   usb/gadget: add t...
44
45
  The fastboot gadget relies on the USB download gadget, so the following
  options must be configured:
277b1333b   Alex Kiernan   fastboot: Update ...
46
47
48
49
50
51
  ::
  
     CONFIG_USB_GADGET_DOWNLOAD
     CONFIG_USB_GADGET_VENDOR_NUM
     CONFIG_USB_GADGET_PRODUCT_NUM
     CONFIG_USB_GADGET_MANUFACTURER
3aab70afc   Sebastian Siewior   usb/gadget: add t...
52

277b1333b   Alex Kiernan   fastboot: Update ...
53
54
55
  NOTE: The ``CONFIG_USB_GADGET_VENDOR_NUM`` must be one of the numbers
  supported by the fastboot client. The list of vendor IDs supported can
  be found in the fastboot client source code.
183cbff70   Barnes, Clifton A   doc: README.andro...
56

277b1333b   Alex Kiernan   fastboot: Update ...
57
58
  General configuration
  ---------------------
3aab70afc   Sebastian Siewior   usb/gadget: add t...
59

277b1333b   Alex Kiernan   fastboot: Update ...
60
61
62
63
64
65
66
67
68
69
70
71
  The fastboot protocol requires a large memory buffer for
  downloads. This buffer should be as large as possible for a
  platform. The location of the buffer and size are set with
  ``CONFIG_FASTBOOT_BUF_ADDR`` and ``CONFIG_FASTBOOT_BUF_SIZE``. These
  may be overridden on the fastboot command line using ``-l`` and
  ``-s``.
  
  Fastboot environment variables
  ==============================
  
  Partition aliases
  -----------------
3aab70afc   Sebastian Siewior   usb/gadget: add t...
72

8a41802f2   Michael Scott   fastboot: check f...
73
74
75
  Fastboot partition aliases can also be defined for devices where GPT
  limitations prevent user-friendly partition names such as "boot", "system"
  and "cache".  Or, where the actual partition name doesn't match a standard
277b1333b   Alex Kiernan   fastboot: Update ...
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
  partition name used commonly with fastboot.
  
  The current implementation checks aliases when accessing partitions by
  name (flash_write and erase functions).  To define a partition alias
  add an environment variable similar to:
  
  ``fastboot_partition_alias_<alias partition name>=<actual partition name>``
  
  for example:
  
  ``fastboot_partition_alias_boot=LNX``
  
  Variable overrides
  ------------------
  
  Variables retrived through ``getvar`` can be overridden by defining
  environment variables of the form ``fastboot.<variable>``. These are
  looked up first so can be used to override values which would
  otherwise be returned. Using this mechanism you can also return types
  for NAND filesystems, as the fully parameterised variable is looked
  up, e.g.
  
  ``fastboot.partition-type:boot=jffs2``
  
  Boot command
  ------------
  
  When executing the fastboot ``boot`` command, if ``fastboot_bootcmd`` is set then
  that will be executed in place of ``bootm <CONFIG_FASTBOOT_BUF_ADDR>``.
8a41802f2   Michael Scott   fastboot: check f...
105

b6dd69a4d   Petr Kulhavy   fastboot: add sup...
106
107
  Partition Names
  ===============
277b1333b   Alex Kiernan   fastboot: Update ...
108
109
110
111
  
  The Fastboot implementation in U-Boot allows to write images into disk
  partitions. Target partitions are referred on the host computer by
  their names.
b6dd69a4d   Petr Kulhavy   fastboot: add sup...
112
113
114
115
116
  
  For GPT/EFI the respective partition name is used.
  
  For MBR the partitions are referred by generic names according to the
  following schema:
277b1333b   Alex Kiernan   fastboot: Update ...
117
    <device type><device index letter><partition index>
b6dd69a4d   Petr Kulhavy   fastboot: add sup...
118

277b1333b   Alex Kiernan   fastboot: Update ...
119
  Example: ``hda3``, ``sdb1``, ``usbda1``
b6dd69a4d   Petr Kulhavy   fastboot: add sup...
120
121
  
  The device type is as follows:
277b1333b   Alex Kiernan   fastboot: Update ...
122
123
124
125
126
127
    * IDE, ATAPI and SATA disks: ``hd``
    * SCSI disks: ``sd``
    * USB media: ``usbd``
    * MMC and SD cards: ``mmcsd``
    * Disk on chip: ``docd``
    * other: ``xx``
b6dd69a4d   Petr Kulhavy   fastboot: add sup...
128

277b1333b   Alex Kiernan   fastboot: Update ...
129
  The device index starts from ``a`` and refers to the interface (e.g. USB
b6dd69a4d   Petr Kulhavy   fastboot: add sup...
130
  controller, SD/MMC controller) or disk index. The partition index starts
277b1333b   Alex Kiernan   fastboot: Update ...
131
  from ``1`` and describes the partition number on the particular device.
b6dd69a4d   Petr Kulhavy   fastboot: add sup...
132
133
134
  
  Writing Partition Table
  =======================
277b1333b   Alex Kiernan   fastboot: Update ...
135

b6dd69a4d   Petr Kulhavy   fastboot: add sup...
136
137
138
139
  Fastboot also allows to write the partition table to the media. This can be
  done by writing the respective partition table image to a special target
  "gpt" or "mbr". These names can be customized by defining the following
  configuration options:
277b1333b   Alex Kiernan   fastboot: Update ...
140
141
142
143
  ::
  
     CONFIG_FASTBOOT_GPT_NAME
     CONFIG_FASTBOOT_MBR_NAME
b6dd69a4d   Petr Kulhavy   fastboot: add sup...
144

3aab70afc   Sebastian Siewior   usb/gadget: add t...
145
146
  In Action
  =========
277b1333b   Alex Kiernan   fastboot: Update ...
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
  
  Enter into fastboot by executing the fastboot command in U-Boot for either USB:
  
  ::
  
     => fastboot usb 0
  
  or UDP:
  
  ::
  
     => fastboot udp
     link up on port 0, speed 100, full duplex
     Using ethernet@4a100000 device
     Listening for fastboot command on 192.168.0.102
3aab70afc   Sebastian Siewior   usb/gadget: add t...
162
163
  
  On the client side you can fetch the bootloader version for instance:
277b1333b   Alex Kiernan   fastboot: Update ...
164
165
166
167
168
169
  
  ::
  
     $ fastboot getvar bootloader-version
     bootloader-version: U-Boot 2014.04-00005-gd24cabc
     finished. total time: 0.000s
3aab70afc   Sebastian Siewior   usb/gadget: add t...
170
171
  
  or initiate a reboot:
277b1333b   Alex Kiernan   fastboot: Update ...
172
173
174
175
  
  ::
  
     $ fastboot reboot
3aab70afc   Sebastian Siewior   usb/gadget: add t...
176
177
178
179
  
  and once the client comes back, the board should reset.
  
  You can also specify a kernel image to boot. You have to either specify
277b1333b   Alex Kiernan   fastboot: Update ...
180
  the an image in Android format *or* pass a binary kernel and let the
3aab70afc   Sebastian Siewior   usb/gadget: add t...
181
182
  fastboot client wrap the Android suite around it. On OMAP for instance you
  take zImage kernel and pass it to the fastboot client:
277b1333b   Alex Kiernan   fastboot: Update ...
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
  ::
  
     $ fastboot -b 0x80000000 -c "console=ttyO2 earlyprintk root=/dev/ram0 mem=128M" boot zImage
     creating boot image...
     creating boot image - 1847296 bytes
     downloading 'boot.img'...
     OKAY [  2.766s]
     booting...
     OKAY [ -0.000s]
     finished. total time: 2.766s
  
  and on the U-Boot side you should see:
  
  ::
  
     Starting download of 1847296 bytes
     ........................................................
     downloading of 1847296 bytes finished
     Booting kernel..
     ## Booting Android Image at 0x81000000 ...
     Kernel load addr 0x80008000 size 1801 KiB
     Kernel command line: console=ttyO2 earlyprintk root=/dev/ram0 mem=128M
        Loading Kernel Image ... OK
     OK
  
     Starting kernel ...