blob: c94047546c5c817fcb04a17f98062fa86e61c0cd [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*
65wingray | Press and hold *Volume Down*, then press and hold *Power*
66stingray | Press and hold *Volume Down*, then press and hold *Power*
Jean-Baptiste Querub4d39b42011-04-11 13:53:58 -070067crespo | Press and hold *Volume Up*, then press and hold *Power*
Jean-Baptiste Queru5da75392011-05-17 14:32:56 -070068crespo4g | Press and hold *Volume Up*, then press and hold *Power*
Jean-Baptiste Querub4d39b42011-04-11 13:53:58 -070069passion | Press and hold the trackball, then press *Power*
70sapphire | Press and hold *Back*, then press *Power*
71dream | Press and hold *Back*, then press *Power*
72
73Also, on devices running froyo or later where adb is enabled,
74the command `adb reboot bootloader` can be used to reboot from
75Android directly into the bootloader with no key combinations.
76
77## Unlocking the bootloader ##
78
79It's only possible to flash a custom system if the bootloader allows it.
80
81This is the default setup on ADP1 and ADP2.
82
Jean-Baptiste Queru35f51012011-12-14 09:32:22 -080083On Nexus One, Nexus S, Nexus S 4G, Xoom, and Galaxy Nexus,
84the bootloader is locked by default. With the device in fastboot mode, the
85bootloader is unlocked with
Jean-Baptiste Querub4d39b42011-04-11 13:53:58 -070086
87 $ fastboot oem unlock
88
89The procedure must be confirmed on-screen, and deletes the user data for
90privacy reasons. It only needs to be run once.
91
Jean-Baptiste Queru93afea92011-12-16 18:25:07 -080092Note that on the Nexus S, Nexus S 4G, Motorola Xoom and on Galaxy Nexus,
93all data on the phone is erased, i.e. both the applications' private data
94and the shared data that is accessible over USB, including photos and
95movies. Be sure to make a backup of any precious files you have before
96unlocking the bootloader.
97
Jean-Baptiste Querub4d39b42011-04-11 13:53:58 -070098On Nexus One, the operation voids the warranty and is irreversible.
99
Jean-Baptiste Queru35f51012011-12-14 09:32:22 -0800100On Nexus S, Nexus S 4G, Xoom, and Galaxy Nexus,
101the bootloader can be locked back with
Jean-Baptiste Querub4d39b42011-04-11 13:53:58 -0700102
103 $ fastboot oem lock
104
Jean-Baptiste Queru93afea92011-12-16 18:25:07 -0800105Note that this erases user data on Xoom (including the shared USB data).
Jean-Baptiste Queru35f51012011-12-14 09:32:22 -0800106
Jean-Baptiste Queru5da75392011-05-17 14:32:56 -0700107## Obtaining proprietary binaries ##
Jean-Baptiste Querub4d39b42011-04-11 13:53:58 -0700108
Jean-Baptiste Queru3e466b02011-10-06 14:34:00 -0700109Starting with IceCreamSandwich, the Android Open-Source Project can't be used
110from pure source code only, and requires additional hardware-related proprietary
111libraries to run, specifically for hardware graphics acceleration.
Jean-Baptiste Querub4d39b42011-04-11 13:53:58 -0700112
Jean-Baptiste Queru3e466b02011-10-06 14:34:00 -0700113Official binaries for Nexus S, Nexus S 4G, Galaxy Nexus, and PandaBoard can be
114downloaded from
Jean-Baptiste Queru5da75392011-05-17 14:32:56 -0700115[Google's Nexus driver page](http://code.google.com/android/nexus/drivers.html),
116which add access to additional hardware capabilities with non-Open-Source code.
Jean-Baptiste Querub4d39b42011-04-11 13:53:58 -0700117
Jean-Baptiste Queru5da75392011-05-17 14:32:56 -0700118There are no official binaries for Nexus One, ADP2 or ADP1.
119
120### Extracting the proprietary binaries ###
Jean-Baptiste Querub4d39b42011-04-11 13:53:58 -0700121
Jean-Baptiste Queru3e466b02011-10-06 14:34:00 -0700122Each set of binaries comes as a self-extracting script in a compressed archive.
Jean-Baptiste Querub4d39b42011-04-11 13:53:58 -0700123After uncompressing each archive, run the included self-extracting script
124from the root of the source tree, confirm that you agree to the terms of the
Jean-Baptiste Queru5da75392011-05-17 14:32:56 -0700125enclosed license agreement, and the binaries and their matching makefiles
Jean-Baptiste Querub4d39b42011-04-11 13:53:58 -0700126will get installed in the `vendor/` hierarchy of the source tree.
127
Jean-Baptiste Queru5da75392011-05-17 14:32:56 -0700128There's an additional step on Nexus S 4G. Build the signapk tool with
129
130 $ make signapk
131
132Then reassemble the proprietary applicatons with
133
134 $ vendor/samsung/crespo4g/reassemble-apks.sh
135
136### Cleaning up when adding proprietary binaries ###
137
138In order to make sure that the newly installed binaries are properly
Jean-Baptiste Querub4d39b42011-04-11 13:53:58 -0700139taken into account after being extracted, the existing output of any previous
140build needs to be deleted with
141
142 $ make clobber
143
144## Picking and building the configuration that matches a device ##
145
146The steps to configure and build the Android Open-Source Project
147are described in the page about [Building](building.html).
148
149The recommended builds for the various devices are available through
Jean-Baptiste Queru3e466b02011-10-06 14:34:00 -0700150the lunch menu, accessed when running the `lunch` command with no arguments:
Jean-Baptiste Querub4d39b42011-04-11 13:53:58 -0700151
Jean-Baptiste Queru37234a52011-05-19 15:24:54 -0700152Device | Branch | Build configuration
153---------|------------------|------------------------
Jean-Baptiste Queru35f51012011-12-14 09:32:22 -0800154maguro | android-4.0.3_r1 | full_maguro-userdebug
155toro | android-4.0.3_r1 | full_toro-userdebug
Jean-Baptiste Queru3e466b02011-10-06 14:34:00 -0700156panda | master | full_panda-eng
Jean-Baptiste Queru35f51012011-12-14 09:32:22 -0800157wingray | android-4.0.3_r1 | full_wingray-userdebug
158stingray | android-4.0.3_r1 | full_stingray-userdebug
159crespo | android-4.0.3_r1 | full_crespo-userdebug
160crespo4g | android-4.0.3_r1 | full_crespo4g-userdebug
Jean-Baptiste Queru8b203372011-11-08 17:54:35 -0800161passion | android-2.3.6_r1 | full_passion-userdebug
Jean-Baptiste Queru37234a52011-05-19 15:24:54 -0700162sapphire | android-2.2.2_r1 | full_sapphire-userdebug
163dream | android-2.2.2_r1 | full_dream-userdebug
Jean-Baptiste Querub4d39b42011-04-11 13:53:58 -0700164
165## Flashing a device ##
166
167Set the device in fastboot mode if necessary (see above).
168
169Because user data is typically incompatible between builds of Android,
170it's typically better to delete it when flashing a new system.
171
172 $ fastboot erase cache
173 $ fastboot erase userdata
174
175An entire Android system can be flashed in a single command: this writes
Jean-Baptiste Queruccdda522011-05-19 10:47:27 -0700176the boot, recovery and system partitions together after verifying that the
Jean-Baptiste Queru61745ea2011-09-08 14:44:15 -0700177system being flashed is compatible with the installed bootloader and radio,
Jean-Baptiste Querub4d39b42011-04-11 13:53:58 -0700178and reboots the system.
179
180 $ fastboot flashall
181
Jean-Baptiste Queru35f51012011-12-14 09:32:22 -0800182On all devices except passion,
Jean-Baptiste Queru3e466b02011-10-06 14:34:00 -0700183the commands above can be replaced with a single command
Jean-Baptiste Querub4d39b42011-04-11 13:53:58 -0700184
185 $ fastboot -w flashall
186
Jean-Baptiste Queru35f51012011-12-14 09:32:22 -0800187Note that filesystems created via fastboot on Motorola Xoom aren't working
188optimally, and it is strongly recommended to re-create them through recovery
189
190 $ adb reboot recovery
191
192Once in recovery, open the menu (press Power + Volume Up), wipe the cache
193partition, then wipe data.
194
Jean-Baptiste Queru3e466b02011-10-06 14:34:00 -0700195### Nexus S, Nexus S 4G and Galaxy Nexus Bootloader and Cell Radio compatibility ###
Jean-Baptiste Querub4d39b42011-04-11 13:53:58 -0700196
Jean-Baptiste Queru3e466b02011-10-06 14:34:00 -0700197On Nexus S, Nexus S 4G, and Galaxy Nexus, each version of Android has only
198been thoroughly tested with on specific version of the underlying bootloader
199and cell radio software.
Jean-Baptiste Querub4d39b42011-04-11 13:53:58 -0700200However, no compatibility issues are expected when running newer systems
Jean-Baptiste Queru5da75392011-05-17 14:32:56 -0700201with older bootloaders and radio images according to the following tables.
202
Jean-Baptiste Querua5dca362011-05-18 10:39:08 -0700203Nexus S (worldwide version "XX"):
Jean-Baptiste Querub4d39b42011-04-11 13:53:58 -0700204
205Android Version | Preferred Bootloader | Preferred Radio | Also possible
206----------------|----------------------|-----------------|--------------
Jean-Baptiste Querucd9c6932011-06-21 07:55:12 -07002072.3 (GRH55) | I9020XXJK1 | I9020XXJK8
2082.3.1 (GRH78) | I9020XXJK1 | I9020XXJK8
2092.3.2 (GRH78C) | I9020XXJK1 | I9020XXJK8
2102.3.3 (GRI40) | I9020XXKA3 | I9020XXKB1 | All previous versions
2112.3.4 (GRJ22) | I9020XXKA3 | I9020XXKD1 | All previous versions
Jean-Baptiste Queru623cc2f2011-07-30 18:43:45 -07002122.3.5 (GRJ90) | I9020XXKA3 | I9020XXKF1 | All previous versions
Jean-Baptiste Querucac01c12011-09-28 17:26:00 -07002132.3.6 (GRK39F) | I9020XXKA3 | I9020XXKF1 | All previous versions
Jean-Baptiste Queruc95d7e62011-12-16 09:57:16 -08002144.0.3 (IML74K) | I9020XXKL1 | I9020XXKI1 | All previous versions
Jean-Baptiste Querub4d39b42011-04-11 13:53:58 -0700215
Jean-Baptiste Querua5dca362011-05-18 10:39:08 -0700216Nexus S (850MHz version "UC"):
217
218Android Version | Preferred Bootloader | Preferred Radio | Also possible
219----------------|----------------------|-----------------|--------------
Jean-Baptiste Querucd9c6932011-06-21 07:55:12 -07002202.3.3 (GRI54) | I9020XXKA3 | I9020UCKB2
2212.3.4 (GRJ22) | I9020XXKA3 | I9020UCKD1 | All previous versions
Jean-Baptiste Queru623cc2f2011-07-30 18:43:45 -07002222.3.5 (GRJ90) | I9020XXKA3 | I9020UCKF1 | All previous versions
Jean-Baptiste Querucac01c12011-09-28 17:26:00 -07002232.3.6 (GRK39C) | I9020XXKA3 | I9020UCKF1 | All previous versions
2242.3.6 (GRK39F) | I9020XXKA3 | I9020UCKF1 | All previous versions
Jean-Baptiste Queruc95d7e62011-12-16 09:57:16 -08002254.0.3 (IML74K) | I9020XXKL1 | I9020UCKF1 | All previous versions
Jean-Baptiste Querua5dca362011-05-18 10:39:08 -0700226
227Nexus S (Korea version "KR"):
228
229Android Version | Preferred Bootloader | Preferred Radio | Also possible
230----------------|----------------------|-----------------|--------------
Jean-Baptiste Querucd9c6932011-06-21 07:55:12 -07002312.3.3 (GRI54) | I9020XXKA3 | I9020KRKB3
2322.3.4 (GRJ22) | I9020XXKA3 | M200KRKC1 | All previous versions
Jean-Baptiste Queru623cc2f2011-07-30 18:43:45 -07002332.3.5 (GRJ90) | I9020XXKA3 | M200KRKC1 | All previous versions
Jean-Baptiste Querucac01c12011-09-28 17:26:00 -07002342.3.6 (GRK39F) | I9020XXKA3 | M200KRKC1 | All previous versions
Jean-Baptiste Queruc95d7e62011-12-16 09:57:16 -08002354.0.3 (IML74K) | I9020XXKL1 | M200KRKC1 | All previous versions
Jean-Baptiste Querua5dca362011-05-18 10:39:08 -0700236
Jean-Baptiste Queru5da75392011-05-17 14:32:56 -0700237Nexus S 4G:
238
239Android Version | Preferred Bootloader | Preferred Radio | Also possible
240----------------|----------------------|-----------------|--------------
2412.3.4 (GRJ06D) | D720SPRKC5 | D720SPRKC9
2422.3.4 (GRJ22) | D720SPRKC5 | D720SPRKD8 | All previous versions
Jean-Baptiste Queru623cc2f2011-07-30 18:43:45 -07002432.3.5 (GRJ90) | D720SPRKC5 | D720SPRKE5 | All previous versions
Jean-Baptiste Queru35f51012011-12-14 09:32:22 -08002442.3.7 (GWK74) | D720SPRKE1 (*) | D720SPRKH1 | All previous versions
Jean-Baptiste Queruc95d7e62011-12-16 09:57:16 -08002454.0.3 (IML74K) | D720SPRKE1 (*) | D720SPRKL1 | All previous versions
Jean-Baptiste Queru5da75392011-05-17 14:32:56 -0700246
Jean-Baptiste Queru3e466b02011-10-06 14:34:00 -0700247Galaxy Nexus (GSM/HSPA+):
248
249Android Version | Preferred Bootloader | Preferred Radio | Also possible
250----------------|----------------------|-----------------|--------------
2514.0.1 (ITL41D) | PRIMEKJ10 | I9250XXKK1
Jean-Baptiste Queru35f51012011-12-14 09:32:22 -08002524.0.2 (ICL53F) | PRIMEKK15 | I9250XXKK6 | All previous versions
Jean-Baptiste Queruc95d7e62011-12-16 09:57:16 -08002534.0.3 (IML74K) | PRIMEKL01 | I9250XXKK6 | All previous versions
Jean-Baptiste Queru35f51012011-12-14 09:32:22 -0800254
255Galaxy Nexus (CDMA/LTE):
256
257Android Version | Preferred Bootloader | Preferred Radio | Preferred CDMA Radio | Also possible
258----------------|----------------------|-----------------|----------------------|--------------
2594.0.1 (ITL41D) | PRIMEKJ10 | I515.EK02 | I515.EK01
2604.0.2 (ICL53F) | PRIMEKK15 | I515.EK02 | I515.EK05 | All previous versions
Jean-Baptiste Queruc95d7e62011-12-16 09:57:16 -08002614.0.3 (IML74K) | PRIMEKL01 | I515.EK04 | I515.EK06 | All previous versions
Jean-Baptiste Queru3e466b02011-10-06 14:34:00 -0700262
263If you're building a new version of Android, if your Nexus S, Nexus S 4G or
264Galaxy Nexus has
Jean-Baptiste Queru5da75392011-05-17 14:32:56 -0700265an older bootloader and radio image that is marked as being also possible in
Jean-Baptiste Querua5dca362011-05-18 10:39:08 -0700266the table above but is not recognized by fastboot, you can locally
Jean-Baptiste Queru5da75392011-05-17 14:32:56 -0700267delete the `version-bootloader` and `version-baseband` lines in
Jean-Baptiste Queru3e466b02011-10-06 14:34:00 -0700268`device/samsung/crespo/board-info.txt` or
269`device/samsung/crespo4g/board-info.txt` or
Jean-Baptiste Queru35f51012011-12-14 09:32:22 -0800270`device/samsung/maguro/board-info.txt` or
271`device/samsung/toro/board-info.txt`
Jean-Baptiste Querucac01c12011-09-28 17:26:00 -0700272
Jean-Baptiste Queru35f51012011-12-14 09:32:22 -0800273(*) As a note, bootloader version D720SPRKE1 for Nexus S 4G erroneously
274reports version D720SPRKE1 as the baseband version instead of the true baseband
275version after flashing a new baseband firmware. To make it report the proper
276version again, the phone needs to be powered down, then booted all the way to
277Android, then rebooted to the bootloader.
278
279## Activating the CDMA radio ##
280
281On the CDMA variant of the Motorola Xoom, the CDMA radio needs to be
282manually re-activated after each factory reset.
283
284 $ adb shell su root radiooptions 8 *22899
Jean-Baptiste Queru93afea92011-12-16 18:25:07 -0800285
286## Restoring a device to its original factory state ##
287
288Factory images for Galaxy Nexus are available from
289[Google's factory image page](http://code.google.com/android/nexus/images.html).
290
291Factory images for the Motorola Xoom are distributed directly by Motorola.
292
293No factory images are available for Nexus S and Nexus One.