blob: 451b3e1f31fee9fc91eeea8f3e857b06967a6043 [file] [log] [blame] [view]
Jean-Baptiste Querub4d39b42011-04-11 13:53:58 -07001<!--
2 Copyright 2010 The Android Open Source Project
3
4 Licensed under the Apache License, Version 2.0 (the "License");
5 you may not use this file except in compliance with the License.
6 You may obtain a copy of the License at
7
8 http://www.apache.org/licenses/LICENSE-2.0
9
10 Unless required by applicable law or agreed to in writing, software
11 distributed under the License is distributed on an "AS IS" BASIS,
12 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 See the License for the specific language governing permissions and
14 limitations under the License.
15-->
16
17# Building for devices #
18
Jean-Baptiste Queru3e466b02011-10-06 14:34:00 -070019This page complements the main page about [Building](building.html) with
20information that is specific to individual devices.
Jean-Baptiste Querub4d39b42011-04-11 13:53:58 -070021
Jean-Baptiste Queru35f51012011-12-14 09:32:22 -080022The supported devices with the current release are the Galaxy Nexus, Motorola
23Xoom, and Nexus S.
24
25Galaxy Nexus is supported both in GSM/HSPA+ configuration "maguro" and in
26CDMA/LTE configuration "toro". The GSM/HSPA+ configuration is only supported
27if it was originally sold with a "yakju" operating system.
28
29The Motorola Xoom is supported in the configurations sold in the USA,
30in both variants: Wi-Fi only "wingray" and CDMA or CDMA/LTE "stingray".
31
32Nexus S is supported, both in the GSM configuration "crespo" and in the
33CDMA/WiMAX configuration "crespo4g".
Jean-Baptiste Queru3e466b02011-10-06 14:34:00 -070034
35In addition, [PandaBoard](http://pandaboard.org) a.k.a. "panda" is supported
36in the master branch only, but is currently considered experimental.
37The specific details to use a PandaBoard with the Android Open-Source Project
38are in the file `device/ti/panda/README` in the source tree.
39
Jean-Baptiste Queru3e466b02011-10-06 14:34:00 -070040Nexus One a.k.a. "passion" is obsolete, was experimental in gingerbread and
41unsupported, and can't be used with newer versions of the Android Open-Source
42Project.
43
44Android Developer Phones (ADP1 and ADP2, a.k.a. "dream" and "sapphire") are
45obsolete, were experimental and unsupported in froyo, and can't be used with
46newer versions of the Android Open-Source Project.
Jean-Baptiste Querub4d39b42011-04-11 13:53:58 -070047
48## Building fastboot and adb ##
49
50If you don't already have those tools, fastboot and adb can be built with
51the regular build system. Follow the instructions on the page about
52[building](building.html), and replace the main `make` command with
53
54 $ make fastboot adb
55
56## Booting into fastboot mode ##
57
58During a cold boot, the following key combinations can be used to boot into fastboot mode,
59which is a mode in the bootloader that can be used to flash the devices:
60
61Device | Keys
62---------|------
Jean-Baptiste Queru3e466b02011-10-06 14:34:00 -070063maguro | Press and hold both *Volume Up* and *Volume Down*, then press and hold *Power*
Jean-Baptiste Queru35f51012011-12-14 09:32:22 -080064toro | Press and hold both *Volume Up* and *Volume Down*, then press and hold *Power*
Conley Owens9aaa52a2012-02-03 14:13:27 -080065panda | Press and hold *Input*, then press *Power*
Jean-Baptiste Queru35f51012011-12-14 09:32:22 -080066wingray | Press and hold *Volume Down*, then press and hold *Power*
67stingray | Press and hold *Volume Down*, then press and hold *Power*
Jean-Baptiste Querub4d39b42011-04-11 13:53:58 -070068crespo | Press and hold *Volume Up*, then press and hold *Power*
Jean-Baptiste Queru5da75392011-05-17 14:32:56 -070069crespo4g | Press and hold *Volume Up*, then press and hold *Power*
Jean-Baptiste Querub4d39b42011-04-11 13:53:58 -070070passion | Press and hold the trackball, then press *Power*
71sapphire | Press and hold *Back*, then press *Power*
72dream | Press and hold *Back*, then press *Power*
73
74Also, on devices running froyo or later where adb is enabled,
75the command `adb reboot bootloader` can be used to reboot from
76Android directly into the bootloader with no key combinations.
77
78## Unlocking the bootloader ##
79
80It's only possible to flash a custom system if the bootloader allows it.
81
82This is the default setup on ADP1 and ADP2.
83
Jean-Baptiste Queru35f51012011-12-14 09:32:22 -080084On Nexus One, Nexus S, Nexus S 4G, Xoom, and Galaxy Nexus,
85the bootloader is locked by default. With the device in fastboot mode, the
86bootloader is unlocked with
Jean-Baptiste Querub4d39b42011-04-11 13:53:58 -070087
88 $ fastboot oem unlock
89
90The procedure must be confirmed on-screen, and deletes the user data for
91privacy reasons. It only needs to be run once.
92
Jean-Baptiste Queru93afea92011-12-16 18:25:07 -080093Note that on the Nexus S, Nexus S 4G, Motorola Xoom and on Galaxy Nexus,
94all data on the phone is erased, i.e. both the applications' private data
95and the shared data that is accessible over USB, including photos and
96movies. Be sure to make a backup of any precious files you have before
97unlocking the bootloader.
98
Jean-Baptiste Querub4d39b42011-04-11 13:53:58 -070099On Nexus One, the operation voids the warranty and is irreversible.
100
Jean-Baptiste Queru35f51012011-12-14 09:32:22 -0800101On Nexus S, Nexus S 4G, Xoom, and Galaxy Nexus,
102the bootloader can be locked back with
Jean-Baptiste Querub4d39b42011-04-11 13:53:58 -0700103
104 $ fastboot oem lock
105
Jean-Baptiste Queru93afea92011-12-16 18:25:07 -0800106Note that this erases user data on Xoom (including the shared USB data).
Jean-Baptiste Queru35f51012011-12-14 09:32:22 -0800107
Jean-Baptiste Queru5da75392011-05-17 14:32:56 -0700108## Obtaining proprietary binaries ##
Jean-Baptiste Querub4d39b42011-04-11 13:53:58 -0700109
Jean-Baptiste Queru3e466b02011-10-06 14:34:00 -0700110Starting with IceCreamSandwich, the Android Open-Source Project can't be used
111from pure source code only, and requires additional hardware-related proprietary
112libraries to run, specifically for hardware graphics acceleration.
Jean-Baptiste Querub4d39b42011-04-11 13:53:58 -0700113
Jean-Baptiste Queru3e466b02011-10-06 14:34:00 -0700114Official binaries for Nexus S, Nexus S 4G, Galaxy Nexus, and PandaBoard can be
115downloaded from
Jean-Baptiste Queru5da75392011-05-17 14:32:56 -0700116[Google's Nexus driver page](http://code.google.com/android/nexus/drivers.html),
117which add access to additional hardware capabilities with non-Open-Source code.
Jean-Baptiste Querub4d39b42011-04-11 13:53:58 -0700118
Jean-Baptiste Queru5da75392011-05-17 14:32:56 -0700119There are no official binaries for Nexus One, ADP2 or ADP1.
120
121### Extracting the proprietary binaries ###
Jean-Baptiste Querub4d39b42011-04-11 13:53:58 -0700122
Jean-Baptiste Queru3e466b02011-10-06 14:34:00 -0700123Each set of binaries comes as a self-extracting script in a compressed archive.
Jean-Baptiste Querub4d39b42011-04-11 13:53:58 -0700124After uncompressing each archive, run the included self-extracting script
125from the root of the source tree, confirm that you agree to the terms of the
Jean-Baptiste Queru5da75392011-05-17 14:32:56 -0700126enclosed license agreement, and the binaries and their matching makefiles
Jean-Baptiste Querub4d39b42011-04-11 13:53:58 -0700127will get installed in the `vendor/` hierarchy of the source tree.
128
Jean-Baptiste Queru5da75392011-05-17 14:32:56 -0700129There's an additional step on Nexus S 4G. Build the signapk tool with
130
131 $ make signapk
132
133Then reassemble the proprietary applicatons with
134
135 $ vendor/samsung/crespo4g/reassemble-apks.sh
136
137### Cleaning up when adding proprietary binaries ###
138
139In order to make sure that the newly installed binaries are properly
Jean-Baptiste Querub4d39b42011-04-11 13:53:58 -0700140taken into account after being extracted, the existing output of any previous
141build needs to be deleted with
142
143 $ make clobber
144
145## Picking and building the configuration that matches a device ##
146
147The steps to configure and build the Android Open-Source Project
148are described in the page about [Building](building.html).
149
150The recommended builds for the various devices are available through
Jean-Baptiste Queru3e466b02011-10-06 14:34:00 -0700151the lunch menu, accessed when running the `lunch` command with no arguments:
Jean-Baptiste Querub4d39b42011-04-11 13:53:58 -0700152
Jean-Baptiste Queru37234a52011-05-19 15:24:54 -0700153Device | Branch | Build configuration
154---------|------------------|------------------------
Jean-Baptiste Queru35f51012011-12-14 09:32:22 -0800155maguro | android-4.0.3_r1 | full_maguro-userdebug
156toro | android-4.0.3_r1 | full_toro-userdebug
Jean-Baptiste Queru3e466b02011-10-06 14:34:00 -0700157panda | master | full_panda-eng
Jean-Baptiste Queru35f51012011-12-14 09:32:22 -0800158wingray | android-4.0.3_r1 | full_wingray-userdebug
159stingray | android-4.0.3_r1 | full_stingray-userdebug
160crespo | android-4.0.3_r1 | full_crespo-userdebug
161crespo4g | android-4.0.3_r1 | full_crespo4g-userdebug
Jean-Baptiste Queru8b203372011-11-08 17:54:35 -0800162passion | android-2.3.6_r1 | full_passion-userdebug
Jean-Baptiste Queru37234a52011-05-19 15:24:54 -0700163sapphire | android-2.2.2_r1 | full_sapphire-userdebug
164dream | android-2.2.2_r1 | full_dream-userdebug
Jean-Baptiste Querub4d39b42011-04-11 13:53:58 -0700165
166## Flashing a device ##
167
168Set the device in fastboot mode if necessary (see above).
169
170Because user data is typically incompatible between builds of Android,
171it's typically better to delete it when flashing a new system.
172
173 $ fastboot erase cache
174 $ fastboot erase userdata
175
176An entire Android system can be flashed in a single command: this writes
Jean-Baptiste Queruccdda522011-05-19 10:47:27 -0700177the boot, recovery and system partitions together after verifying that the
Jean-Baptiste Queru61745ea2011-09-08 14:44:15 -0700178system being flashed is compatible with the installed bootloader and radio,
Jean-Baptiste Querub4d39b42011-04-11 13:53:58 -0700179and reboots the system.
180
181 $ fastboot flashall
182
Jean-Baptiste Queru35f51012011-12-14 09:32:22 -0800183On all devices except passion,
Jean-Baptiste Queru3e466b02011-10-06 14:34:00 -0700184the commands above can be replaced with a single command
Jean-Baptiste Querub4d39b42011-04-11 13:53:58 -0700185
186 $ fastboot -w flashall
187
Jean-Baptiste Queru35f51012011-12-14 09:32:22 -0800188Note that filesystems created via fastboot on Motorola Xoom aren't working
189optimally, and it is strongly recommended to re-create them through recovery
190
191 $ adb reboot recovery
192
193Once in recovery, open the menu (press Power + Volume Up), wipe the cache
194partition, then wipe data.
195
Jean-Baptiste Queru3e466b02011-10-06 14:34:00 -0700196### Nexus S, Nexus S 4G and Galaxy Nexus Bootloader and Cell Radio compatibility ###
Jean-Baptiste Querub4d39b42011-04-11 13:53:58 -0700197
Jean-Baptiste Queru3e466b02011-10-06 14:34:00 -0700198On Nexus S, Nexus S 4G, and Galaxy Nexus, each version of Android has only
199been thoroughly tested with on specific version of the underlying bootloader
200and cell radio software.
Jean-Baptiste Querub4d39b42011-04-11 13:53:58 -0700201However, no compatibility issues are expected when running newer systems
Jean-Baptiste Queru5da75392011-05-17 14:32:56 -0700202with older bootloaders and radio images according to the following tables.
203
Jean-Baptiste Querua5dca362011-05-18 10:39:08 -0700204Nexus S (worldwide version "XX"):
Jean-Baptiste Querub4d39b42011-04-11 13:53:58 -0700205
206Android Version | Preferred Bootloader | Preferred Radio | Also possible
207----------------|----------------------|-----------------|--------------
Jean-Baptiste Querucd9c6932011-06-21 07:55:12 -07002082.3 (GRH55) | I9020XXJK1 | I9020XXJK8
2092.3.1 (GRH78) | I9020XXJK1 | I9020XXJK8
2102.3.2 (GRH78C) | I9020XXJK1 | I9020XXJK8
2112.3.3 (GRI40) | I9020XXKA3 | I9020XXKB1 | All previous versions
2122.3.4 (GRJ22) | I9020XXKA3 | I9020XXKD1 | All previous versions
Jean-Baptiste Queru623cc2f2011-07-30 18:43:45 -07002132.3.5 (GRJ90) | I9020XXKA3 | I9020XXKF1 | All previous versions
Jean-Baptiste Querucac01c12011-09-28 17:26:00 -07002142.3.6 (GRK39F) | I9020XXKA3 | I9020XXKF1 | All previous versions
Jean-Baptiste Queruc95d7e62011-12-16 09:57:16 -08002154.0.3 (IML74K) | I9020XXKL1 | I9020XXKI1 | All previous versions
Jean-Baptiste Querub4d39b42011-04-11 13:53:58 -0700216
Jean-Baptiste Querua5dca362011-05-18 10:39:08 -0700217Nexus S (850MHz version "UC"):
218
219Android Version | Preferred Bootloader | Preferred Radio | Also possible
220----------------|----------------------|-----------------|--------------
Jean-Baptiste Querucd9c6932011-06-21 07:55:12 -07002212.3.3 (GRI54) | I9020XXKA3 | I9020UCKB2
2222.3.4 (GRJ22) | I9020XXKA3 | I9020UCKD1 | All previous versions
Jean-Baptiste Queru623cc2f2011-07-30 18:43:45 -07002232.3.5 (GRJ90) | I9020XXKA3 | I9020UCKF1 | All previous versions
Jean-Baptiste Querucac01c12011-09-28 17:26:00 -07002242.3.6 (GRK39C) | I9020XXKA3 | I9020UCKF1 | All previous versions
2252.3.6 (GRK39F) | I9020XXKA3 | I9020UCKF1 | All previous versions
Jean-Baptiste Queruc95d7e62011-12-16 09:57:16 -08002264.0.3 (IML74K) | I9020XXKL1 | I9020UCKF1 | All previous versions
Jean-Baptiste Querua5dca362011-05-18 10:39:08 -0700227
228Nexus S (Korea version "KR"):
229
230Android Version | Preferred Bootloader | Preferred Radio | Also possible
231----------------|----------------------|-----------------|--------------
Jean-Baptiste Querucd9c6932011-06-21 07:55:12 -07002322.3.3 (GRI54) | I9020XXKA3 | I9020KRKB3
2332.3.4 (GRJ22) | I9020XXKA3 | M200KRKC1 | All previous versions
Jean-Baptiste Queru623cc2f2011-07-30 18:43:45 -07002342.3.5 (GRJ90) | I9020XXKA3 | M200KRKC1 | All previous versions
Jean-Baptiste Querucac01c12011-09-28 17:26:00 -07002352.3.6 (GRK39F) | I9020XXKA3 | M200KRKC1 | All previous versions
Jean-Baptiste Queruc95d7e62011-12-16 09:57:16 -08002364.0.3 (IML74K) | I9020XXKL1 | M200KRKC1 | All previous versions
Jean-Baptiste Querua5dca362011-05-18 10:39:08 -0700237
Jean-Baptiste Queru5da75392011-05-17 14:32:56 -0700238Nexus S 4G:
239
240Android Version | Preferred Bootloader | Preferred Radio | Also possible
241----------------|----------------------|-----------------|--------------
2422.3.4 (GRJ06D) | D720SPRKC5 | D720SPRKC9
2432.3.4 (GRJ22) | D720SPRKC5 | D720SPRKD8 | All previous versions
Jean-Baptiste Queru623cc2f2011-07-30 18:43:45 -07002442.3.5 (GRJ90) | D720SPRKC5 | D720SPRKE5 | All previous versions
Jean-Baptiste Queru35f51012011-12-14 09:32:22 -08002452.3.7 (GWK74) | D720SPRKE1 (*) | D720SPRKH1 | All previous versions
Jean-Baptiste Queruc95d7e62011-12-16 09:57:16 -08002464.0.3 (IML74K) | D720SPRKE1 (*) | D720SPRKL1 | All previous versions
Jean-Baptiste Queru5da75392011-05-17 14:32:56 -0700247
Jean-Baptiste Queru3e466b02011-10-06 14:34:00 -0700248Galaxy Nexus (GSM/HSPA+):
249
250Android Version | Preferred Bootloader | Preferred Radio | Also possible
251----------------|----------------------|-----------------|--------------
2524.0.1 (ITL41D) | PRIMEKJ10 | I9250XXKK1
Jean-Baptiste Queru35f51012011-12-14 09:32:22 -08002534.0.2 (ICL53F) | PRIMEKK15 | I9250XXKK6 | All previous versions
Jean-Baptiste Queruc95d7e62011-12-16 09:57:16 -08002544.0.3 (IML74K) | PRIMEKL01 | I9250XXKK6 | All previous versions
Jean-Baptiste Queru35f51012011-12-14 09:32:22 -0800255
256Galaxy Nexus (CDMA/LTE):
257
258Android Version | Preferred Bootloader | Preferred Radio | Preferred CDMA Radio | Also possible
259----------------|----------------------|-----------------|----------------------|--------------
2604.0.1 (ITL41D) | PRIMEKJ10 | I515.EK02 | I515.EK01
2614.0.2 (ICL53F) | PRIMEKK15 | I515.EK02 | I515.EK05 | All previous versions
Jean-Baptiste Queruc95d7e62011-12-16 09:57:16 -08002624.0.3 (IML74K) | PRIMEKL01 | I515.EK04 | I515.EK06 | All previous versions
Jean-Baptiste Queru3e466b02011-10-06 14:34:00 -0700263
264If you're building a new version of Android, if your Nexus S, Nexus S 4G or
265Galaxy Nexus has
Jean-Baptiste Queru5da75392011-05-17 14:32:56 -0700266an older bootloader and radio image that is marked as being also possible in
Jean-Baptiste Querua5dca362011-05-18 10:39:08 -0700267the table above but is not recognized by fastboot, you can locally
Jean-Baptiste Queru5da75392011-05-17 14:32:56 -0700268delete the `version-bootloader` and `version-baseband` lines in
Jean-Baptiste Queru3e466b02011-10-06 14:34:00 -0700269`device/samsung/crespo/board-info.txt` or
270`device/samsung/crespo4g/board-info.txt` or
Jean-Baptiste Queru35f51012011-12-14 09:32:22 -0800271`device/samsung/maguro/board-info.txt` or
272`device/samsung/toro/board-info.txt`
Jean-Baptiste Querucac01c12011-09-28 17:26:00 -0700273
Jean-Baptiste Queru35f51012011-12-14 09:32:22 -0800274(*) As a note, bootloader version D720SPRKE1 for Nexus S 4G erroneously
275reports version D720SPRKE1 as the baseband version instead of the true baseband
276version after flashing a new baseband firmware. To make it report the proper
277version again, the phone needs to be powered down, then booted all the way to
278Android, then rebooted to the bootloader.
279
280## Activating the CDMA radio ##
281
282On the CDMA variant of the Motorola Xoom, the CDMA radio needs to be
283manually re-activated after each factory reset.
284
285 $ adb shell su root radiooptions 8 *22899
Jean-Baptiste Queru93afea92011-12-16 18:25:07 -0800286
287## Restoring a device to its original factory state ##
288
289Factory images for Galaxy Nexus are available from
290[Google's factory image page](http://code.google.com/android/nexus/images.html).
291
292Factory images for the Motorola Xoom are distributed directly by Motorola.
293
294No factory images are available for Nexus S and Nexus One.