Robert Ly | 35f2fda | 2013-01-29 16:27:05 -0800 | [diff] [blame] | 1 | page.title=Building for devices |
| 2 | @jd:body |
| 3 | |
| 4 | <!-- |
Gina Dimino | b12ef50 | 2015-05-12 13:42:28 -0700 | [diff] [blame^] | 5 | Copyright 2015 The Android Open Source Project |
Robert Ly | 35f2fda | 2013-01-29 16:27:05 -0800 | [diff] [blame] | 6 | |
| 7 | Licensed under the Apache License, Version 2.0 (the "License"); |
| 8 | you may not use this file except in compliance with the License. |
| 9 | You may obtain a copy of the License at |
| 10 | |
| 11 | http://www.apache.org/licenses/LICENSE-2.0 |
| 12 | |
| 13 | Unless required by applicable law or agreed to in writing, software |
| 14 | distributed under the License is distributed on an "AS IS" BASIS, |
| 15 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| 16 | See the License for the specific language governing permissions and |
| 17 | limitations under the License. |
| 18 | --> |
| 19 | <div id="qv-wrapper"> |
| 20 | <div id="qv"> |
| 21 | <h2>In this document</h2> |
| 22 | <ol id="auto-toc"> |
| 23 | </ol> |
| 24 | </div> |
| 25 | </div> |
| 26 | |
| 27 | <p>This page complements the main page about |
| 28 | <a href="building-running.html">Building and Running</a> with |
| 29 | information that is specific to individual devices.</p> |
Robert Ly | 40e3b6d | 2013-04-17 18:12:10 -0700 | [diff] [blame] | 30 | |
Gina Dimino | b12ef50 | 2015-05-12 13:42:28 -0700 | [diff] [blame^] | 31 | <h2 class="nexus-devices">Nexus devices</h2> |
| 32 | <p> |
| 33 | It is possible to build for Nexus devices using the AOSP |
| 34 | builds and the relevant hardware-specific binaries. |
| 35 | For a list of available Android builds and the Nexus devices |
| 36 | they can be installed on, see <a |
| 37 | href="build-numbers.html#source-code-tags-and-builds">Source |
| 38 | Code, Tags, and Builds</a>. |
| 39 | </p> |
| 40 | |
| 41 | <p class="note"> |
| 42 | <b>Note:</b> Due to hardware differences, do not use 4.1.1 on a Nexus 7 that |
Robert Ly | 40e3b6d | 2013-04-17 18:12:10 -0700 | [diff] [blame] | 43 | was originally sold with 4.1.2 or newer.</p> |
Gina Dimino | b12ef50 | 2015-05-12 13:42:28 -0700 | [diff] [blame^] | 44 | |
| 45 | <h2 class="other-devices">Other devices</h2> |
Robert Ly | 35f2fda | 2013-01-29 16:27:05 -0800 | [diff] [blame] | 46 | <p>The Motorola Xoom can be used in the Wi-Fi configuration "wingray" |
| 47 | sold in the USA, with Android 4.1.2. Graphics and audio are functional |
| 48 | as well as Wi-Fi and Bluetooth and the orientation sensors.</p> |
Robert Ly | 35f2fda | 2013-01-29 16:27:05 -0800 | [diff] [blame] | 49 | <p>In addition, <a href="http://pandaboard.org">PandaBoard</a> a.k.a. "panda" can be used |
Robert Ly | 40e3b6d | 2013-04-17 18:12:10 -0700 | [diff] [blame] | 50 | in the jb-mr1-dev-plus-aosp branch, but is considered experimental. |
Robert Ly | 35f2fda | 2013-01-29 16:27:05 -0800 | [diff] [blame] | 51 | The specific details to use a PandaBoard with the Android Open-Source Project |
| 52 | are in the file <code>device/ti/panda/README</code> in the source tree.</p> |
Robert Ly | 40e3b6d | 2013-04-17 18:12:10 -0700 | [diff] [blame] | 53 | |
Robert Ly | 35f2fda | 2013-01-29 16:27:05 -0800 | [diff] [blame] | 54 | <h2 id="building-fastboot-and-adb">Building fastboot and adb</h2> |
| 55 | <p>If you don't already have those tools, fastboot and adb can be built with |
| 56 | the regular build system. Follow the instructions on the page about |
| 57 | <a href="building-running.html">Building and Running</a>, and replace the main <code>make</code> command with</p> |
| 58 | <pre><code>$ make fastboot adb |
| 59 | </code></pre> |
Gina Dimino | b12ef50 | 2015-05-12 13:42:28 -0700 | [diff] [blame^] | 60 | |
Robert Ly | 35f2fda | 2013-01-29 16:27:05 -0800 | [diff] [blame] | 61 | <h2 id="booting-into-fastboot-mode">Booting into fastboot mode</h2> |
| 62 | <p>During a cold boot, the following key combinations can be used to boot into fastboot mode, |
| 63 | which is a mode in the bootloader that can be used to flash the devices:</p> |
| 64 | <table> |
| 65 | <thead> |
| 66 | <tr> |
| 67 | <th>Device</th> |
| 68 | <th>Keys</th> |
| 69 | </tr> |
| 70 | </thead> |
| 71 | <tbody> |
| 72 | <tr> |
Bill Yi | cc8fda5 | 2014-12-04 10:59:08 -0800 | [diff] [blame] | 73 | <td>shamu</td> |
| 74 | <td>Press and hold <em>Volume Down</em>, then press and hold <em>Power</em></td> |
| 75 | </tr> |
| 76 | <tr> |
| 77 | <td>fugu</td> |
| 78 | <td>Press and hold <em>Power</em></td> |
| 79 | </tr> |
| 80 | <tr> |
| 81 | <td>volantis</td> |
| 82 | <td>Press and hold <em>Volume Down</em>, then press and hold <em>Power</em></td> |
| 83 | </tr> |
| 84 | <tr> |
Clay Murphy | e75e3fe | 2013-11-06 17:15:35 -0800 | [diff] [blame] | 85 | <td>hammerhead</td> |
| 86 | <td>Press and hold both <em>Volume Up</em> and <em>Volume Down</em>, then press |
| 87 | and hold <em>Power</em></td> |
| 88 | </tr> |
| 89 | <tr> |
Jean-Baptiste Queru | 3b41843 | 2013-07-11 15:44:44 -0700 | [diff] [blame] | 90 | <td>flo</td> |
| 91 | <td>Press and hold <em>Volume Down</em>, then press and hold <em>Power</em></td> |
| 92 | </tr> |
| 93 | <tr> |
| 94 | <td>deb</td> |
| 95 | <td>Press and hold <em>Volume Down</em>, then press and hold <em>Power</em></td> |
| 96 | </tr> |
| 97 | <tr> |
Robert Ly | 35f2fda | 2013-01-29 16:27:05 -0800 | [diff] [blame] | 98 | <td>manta</td> |
| 99 | <td>Press and hold both <em>Volume Up</em> and <em>Volume Down</em>, then press and hold <em>Power</em></td> |
| 100 | </tr> |
| 101 | <tr> |
| 102 | <td>mako</td> |
| 103 | <td>Press and hold <em>Volume Down</em>, then press and hold <em>Power</em></td> |
| 104 | </tr> |
| 105 | <tr> |
| 106 | <td>grouper</td> |
Jean-Baptiste Queru | d8fbf20 | 2013-06-18 14:51:12 -0700 | [diff] [blame] | 107 | <td>Press and hold <em>Volume Down</em>, then press and hold <em>Power</em></td> |
Robert Ly | 35f2fda | 2013-01-29 16:27:05 -0800 | [diff] [blame] | 108 | </tr> |
| 109 | <tr> |
| 110 | <td>tilapia</td> |
Jean-Baptiste Queru | d8fbf20 | 2013-06-18 14:51:12 -0700 | [diff] [blame] | 111 | <td>Press and hold <em>Volume Down</em>, then press and hold <em>Power</em></td> |
Robert Ly | 35f2fda | 2013-01-29 16:27:05 -0800 | [diff] [blame] | 112 | </tr> |
| 113 | <tr> |
| 114 | <td>phantasm</td> |
| 115 | <td>Power the device, cover it with one hand after the LEDs light up and until they turn red</td> |
| 116 | </tr> |
| 117 | <tr> |
| 118 | <td>maguro</td> |
| 119 | <td>Press and hold both <em>Volume Up</em> and <em>Volume Down</em>, then press and hold <em>Power</em></td> |
| 120 | </tr> |
| 121 | <tr> |
| 122 | <td>toro</td> |
| 123 | <td>Press and hold both <em>Volume Up</em> and <em>Volume Down</em>, then press and hold <em>Power</em></td> |
| 124 | </tr> |
| 125 | <tr> |
| 126 | <td>toroplus</td> |
| 127 | <td>Press and hold both <em>Volume Up</em> and <em>Volume Down</em>, then press and hold <em>Power</em></td> |
| 128 | </tr> |
| 129 | <tr> |
| 130 | <td>panda</td> |
| 131 | <td>Press and hold <em>Input</em>, then press <em>Power</em></td> |
| 132 | </tr> |
| 133 | <tr> |
| 134 | <td>wingray</td> |
| 135 | <td>Press and hold <em>Volume Down</em>, then press and hold <em>Power</em></td> |
| 136 | </tr> |
| 137 | <tr> |
| 138 | <td>crespo</td> |
| 139 | <td>Press and hold <em>Volume Up</em>, then press and hold <em>Power</em></td> |
| 140 | </tr> |
| 141 | <tr> |
| 142 | <td>crespo4g</td> |
| 143 | <td>Press and hold <em>Volume Up</em>, then press and hold <em>Power</em></td> |
| 144 | </tr> |
| 145 | </tbody> |
| 146 | </table> |
| 147 | <p>Also, the command <code>adb reboot bootloader</code> can be used to reboot from |
| 148 | Android directly into the bootloader with no key combinations.</p> |
| 149 | <h2 id="unlocking-the-bootloader">Unlocking the bootloader</h2> |
| 150 | <p>It's only possible to flash a custom system if the bootloader allows it.</p> |
| 151 | <p>The bootloader is locked by default. With the device in fastboot mode, the |
| 152 | bootloader is unlocked with</p> |
| 153 | <pre><code>$ fastboot oem unlock |
| 154 | </code></pre> |
| 155 | <p>The procedure must be confirmed on-screen, and deletes the user data for |
| 156 | privacy reasons. It only needs to be run once.</p> |
| 157 | <p>All data on the phone is erased, i.e. both the applications' private data |
| 158 | and the shared data that is accessible over USB, including photos and |
| 159 | movies. Be sure to make a backup of any precious files you have before |
| 160 | unlocking the bootloader.</p> |
| 161 | <p>On Nexus 10, after unlocking the bootloader, the internal storage is |
| 162 | left unformatted and must be formatted with</p> |
| 163 | <pre><code>$ fastboot format cache |
| 164 | $ fastboot format userdata |
| 165 | </code></pre> |
| 166 | <p>The bootloader can be locked back with</p> |
| 167 | <pre><code>$ fastboot oem lock |
| 168 | </code></pre> |
| 169 | <p>Note that this erases user data on Xoom (including the shared USB data).</p> |
| 170 | <h2 id="obtaining-proprietary-binaries">Obtaining proprietary binaries</h2> |
| 171 | <p>The Android Open-Source Project can't be used |
| 172 | from pure source code only, and requires additional hardware-related proprietary |
| 173 | libraries to run, specifically for hardware graphics acceleration.</p> |
Clay Murphy | 8bb8f4a | 2014-06-03 17:23:10 -0700 | [diff] [blame] | 174 | <p>Official binaries for the supported devices running tagged AOSP release |
| 175 | branches can be downloaded from <a |
| 176 | href="https://developers.google.com/android/nexus/drivers">Google's Nexus |
| 177 | driver page</a>. These add access to additional hardware capabilities with |
Clay Murphy | fa783d8 | 2015-05-01 14:26:20 -0700 | [diff] [blame] | 178 | non-open source code. To instead build the AOSP master branch, use the <a |
Clay Murphy | 8bb8f4a | 2014-06-03 17:23:10 -0700 | [diff] [blame] | 179 | href="https://developers.google.com/android/nexus/blobs-preview">Binaries |
| 180 | Preview for Nexus Devices</a>.</p> |
Robert Ly | 40e3b6d | 2013-04-17 18:12:10 -0700 | [diff] [blame] | 181 | <p>When building the master branch for a device, the binaries for the most |
Clay Murphy | 8bb8f4a | 2014-06-03 17:23:10 -0700 | [diff] [blame] | 182 | recent numbered release or with the most recent date are the ones that should |
| 183 | be used.</p> |
Robert Ly | 35f2fda | 2013-01-29 16:27:05 -0800 | [diff] [blame] | 184 | <h3 id="extracting-the-proprietary-binaries">Extracting the proprietary binaries</h3> |
| 185 | <p>Each set of binaries comes as a self-extracting script in a compressed archive. |
| 186 | After uncompressing each archive, run the included self-extracting script |
| 187 | from the root of the source tree, confirm that you agree to the terms of the |
| 188 | enclosed license agreement, and the binaries and their matching makefiles |
| 189 | will get installed in the <code>vendor/</code> hierarchy of the source tree.</p> |
| 190 | <h3 id="cleaning-up-when-adding-proprietary-binaries">Cleaning up when adding proprietary binaries</h3> |
| 191 | <p>In order to make sure that the newly installed binaries are properly |
| 192 | taken into account after being extracted, the existing output of any previous |
| 193 | build needs to be deleted with</p> |
| 194 | <pre><code>$ make clobber |
| 195 | </code></pre> |
| 196 | <h2 id="picking-and-building-the-configuration-that-matches-a-device">Picking and building the configuration that matches a device</h2> |
Clay Murphy | 470853d | 2014-03-25 18:22:02 -0700 | [diff] [blame] | 197 | <p>The steps to configure and build the Android Open Source Project |
| 198 | are described in the <a href="building.html">Building</a> page.</p> |
Robert Ly | 35f2fda | 2013-01-29 16:27:05 -0800 | [diff] [blame] | 199 | <p>The recommended builds for the various devices are available through |
Clay Murphy | 470853d | 2014-03-25 18:22:02 -0700 | [diff] [blame] | 200 | the lunch menu, accessed when running the <code>lunch</code> command with no arguments. Factory images and binaries for Nexus devices can be downloaded from:</p> |
| 201 | <p><a href="https://developers.google.com/android/nexus/images">https://developers.google.com/android/nexus/images</a></p> |
| 202 | <p><a href="https://developers.google.com/android/nexus/drivers">https://developers.google.com/android/nexus/drivers</a></p> |
Robert Ly | 35f2fda | 2013-01-29 16:27:05 -0800 | [diff] [blame] | 203 | <table> |
| 204 | <thead> |
| 205 | <tr> |
Clay Murphy | 470853d | 2014-03-25 18:22:02 -0700 | [diff] [blame] | 206 | <th>Device</th> |
| 207 | <th>Code name</th> |
Robert Ly | 35f2fda | 2013-01-29 16:27:05 -0800 | [diff] [blame] | 208 | <th>Build configuration</th> |
| 209 | </tr> |
| 210 | </thead> |
| 211 | <tbody> |
| 212 | <tr> |
Bill Yi | cc8fda5 | 2014-12-04 10:59:08 -0800 | [diff] [blame] | 213 | <td>Nexus 6</td> |
| 214 | <td>shamu</td> |
| 215 | <td>aosp_shamu-userdebug</td> |
| 216 | </tr> |
| 217 | </tr> |
| 218 | <tr> |
| 219 | <td>Nexus Player</td> |
| 220 | <td>fugu</td> |
| 221 | <td>aosp_fugu-userdebug</td> |
| 222 | </tr> |
| 223 | <tr> |
| 224 | <td>Nexus 9</td> |
| 225 | <td>volantis (flounder)</td> |
| 226 | <td>aosp_flounder-userdebug</td> |
| 227 | </tr> |
| 228 | <tr> |
Clay Murphy | 470853d | 2014-03-25 18:22:02 -0700 | [diff] [blame] | 229 | <td>Nexus 5 (GSM/LTE)</td> |
Clay Murphy | e75e3fe | 2013-11-06 17:15:35 -0800 | [diff] [blame] | 230 | <td>hammerhead</td> |
Clay Murphy | e75e3fe | 2013-11-06 17:15:35 -0800 | [diff] [blame] | 231 | <td>aosp_hammerhead-userdebug</td> |
| 232 | </tr> |
| 233 | <tr> |
Clay Murphy | 470853d | 2014-03-25 18:22:02 -0700 | [diff] [blame] | 234 | <td>Nexus 7 (Wi-Fi)</td> |
| 235 | <td>razor (flo)</td> |
Jean-Baptiste Queru | 3b41843 | 2013-07-11 15:44:44 -0700 | [diff] [blame] | 236 | <td>aosp_flo-userdebug</td> |
| 237 | </tr> |
| 238 | <tr> |
Clay Murphy | 470853d | 2014-03-25 18:22:02 -0700 | [diff] [blame] | 239 | <td>Nexus 7 (Mobile)</td> |
| 240 | <td>razorg (deb)</td> |
Jean-Baptiste Queru | 3b41843 | 2013-07-11 15:44:44 -0700 | [diff] [blame] | 241 | <td>aosp_deb-userdebug</td> |
| 242 | </tr> |
| 243 | <tr> |
Clay Murphy | 470853d | 2014-03-25 18:22:02 -0700 | [diff] [blame] | 244 | <td>Nexus 10</td> |
| 245 | <td>mantaray (manta)</td> |
Robert Ly | 35f2fda | 2013-01-29 16:27:05 -0800 | [diff] [blame] | 246 | <td>full_manta-userdebug</td> |
| 247 | </tr> |
| 248 | <tr> |
Clay Murphy | 470853d | 2014-03-25 18:22:02 -0700 | [diff] [blame] | 249 | <td>Nexus 4</td> |
| 250 | <td>occam (mako)</td> |
Clay Murphy | c0fff38 | 2013-09-23 11:08:07 -0700 | [diff] [blame] | 251 | <td>full_mako-userdebug</td> |
Robert Ly | 40e3b6d | 2013-04-17 18:12:10 -0700 | [diff] [blame] | 252 | </tr> |
| 253 | <tr> |
Clay Murphy | 470853d | 2014-03-25 18:22:02 -0700 | [diff] [blame] | 254 | <td>Nexus 7 (Wi-Fi)</td> |
| 255 | <td>nakasi (grouper)</td> |
Clay Murphy | c0fff38 | 2013-09-23 11:08:07 -0700 | [diff] [blame] | 256 | <td>full_grouper-userdebug</td> |
Robert Ly | 35f2fda | 2013-01-29 16:27:05 -0800 | [diff] [blame] | 257 | </tr> |
| 258 | <tr> |
Clay Murphy | 470853d | 2014-03-25 18:22:02 -0700 | [diff] [blame] | 259 | <td>Nexus 7 (Mobile)</td> |
| 260 | <td>nakasig (tilapia)</td> |
Clay Murphy | c0fff38 | 2013-09-23 11:08:07 -0700 | [diff] [blame] | 261 | <td>full_tilapia-userdebug</td> |
Robert Ly | 35f2fda | 2013-01-29 16:27:05 -0800 | [diff] [blame] | 262 | </tr> |
| 263 | <tr> |
Clay Murphy | 470853d | 2014-03-25 18:22:02 -0700 | [diff] [blame] | 264 | <td>Galaxy Nexus (GSM/HSPA+)</td> |
| 265 | <td>yakju (maguro)</td> |
Clay Murphy | c0fff38 | 2013-09-23 11:08:07 -0700 | [diff] [blame] | 266 | <td>full_maguro-userdebug</td> |
Robert Ly | 35f2fda | 2013-01-29 16:27:05 -0800 | [diff] [blame] | 267 | </tr> |
| 268 | <tr> |
Clay Murphy | 470853d | 2014-03-25 18:22:02 -0700 | [diff] [blame] | 269 | <td>Galaxy Nexus (Verizon)</td> |
| 270 | <td>mysid (toro)</td> |
Jean-Baptiste Queru | d8fbf20 | 2013-06-18 14:51:12 -0700 | [diff] [blame] | 271 | <td>aosp_toro-userdebug</td> |
Robert Ly | 35f2fda | 2013-01-29 16:27:05 -0800 | [diff] [blame] | 272 | </tr> |
| 273 | <tr> |
Clay Murphy | 470853d | 2014-03-25 18:22:02 -0700 | [diff] [blame] | 274 | <td>Galaxy Nexus (Experimental)</td> |
| 275 | <td>mysidspr (toroplus)</td> |
Jean-Baptiste Queru | d8fbf20 | 2013-06-18 14:51:12 -0700 | [diff] [blame] | 276 | <td>aosp_toroplus-userdebug</td> |
Robert Ly | 35f2fda | 2013-01-29 16:27:05 -0800 | [diff] [blame] | 277 | </tr> |
| 278 | <tr> |
Clay Murphy | 470853d | 2014-03-25 18:22:02 -0700 | [diff] [blame] | 279 | <td>PandaBoard (Archived)</td> |
Robert Ly | 35f2fda | 2013-01-29 16:27:05 -0800 | [diff] [blame] | 280 | <td>panda</td> |
Jean-Baptiste Queru | d8fbf20 | 2013-06-18 14:51:12 -0700 | [diff] [blame] | 281 | <td>aosp_panda-userdebug</td> |
Robert Ly | 35f2fda | 2013-01-29 16:27:05 -0800 | [diff] [blame] | 282 | </tr> |
| 283 | <tr> |
Clay Murphy | 470853d | 2014-03-25 18:22:02 -0700 | [diff] [blame] | 284 | <td>Motorola Xoom (U.S. Wi-Fi)</td> |
Robert Ly | 35f2fda | 2013-01-29 16:27:05 -0800 | [diff] [blame] | 285 | <td>wingray</td> |
Robert Ly | 35f2fda | 2013-01-29 16:27:05 -0800 | [diff] [blame] | 286 | <td>full_wingray-userdebug</td> |
| 287 | </tr> |
| 288 | <tr> |
Clay Murphy | 470853d | 2014-03-25 18:22:02 -0700 | [diff] [blame] | 289 | <td>Nexus S</td> |
| 290 | <td>soju (crespo)</td> |
Robert Ly | 35f2fda | 2013-01-29 16:27:05 -0800 | [diff] [blame] | 291 | <td>full_crespo-userdebug</td> |
| 292 | </tr> |
| 293 | <tr> |
Clay Murphy | 470853d | 2014-03-25 18:22:02 -0700 | [diff] [blame] | 294 | <td>Nexus S 4G</td> |
| 295 | <td>sojus (crespo4g)</td> |
Robert Ly | 35f2fda | 2013-01-29 16:27:05 -0800 | [diff] [blame] | 296 | <td>full_crespo4g-userdebug</td> |
| 297 | </tr> |
| 298 | </tbody> |
| 299 | </table> |
| 300 | <p>Do not use 4.1.1 on a Nexus 7 that was originally sold with 4.1.2 |
| 301 | or newer.</p> |
| 302 | <h2 id="flashing-a-device">Flashing a device</h2> |
| 303 | <p>Set the device in fastboot mode if necessary (see above).</p> |
| 304 | <p>An entire Android system can be flashed in a single command: this writes |
| 305 | the boot, recovery and system partitions together after verifying that the |
| 306 | system being flashed is compatible with the installed bootloader and radio, |
| 307 | and reboots the system. This also erases all the user data, similarly to |
| 308 | <code>fastboot oem unlock</code> mentioned earlier.</p> |
| 309 | <pre><code>$ fastboot -w flashall |
| 310 | </code></pre> |
| 311 | <p>Note that filesystems created via fastboot on Motorola Xoom aren't working |
| 312 | optimally, and it is strongly recommended to re-create them through recovery</p> |
| 313 | <pre><code>$ adb reboot recovery |
| 314 | </code></pre> |
| 315 | <p>Once in recovery, open the menu (press Power + Volume Up), wipe the cache |
| 316 | partition, then wipe data.</p> |
Clay Murphy | 62fc041 | 2014-07-10 12:53:18 -0700 | [diff] [blame] | 317 | <h2 id="restoring-a-device-to-its-original-factory-state">Restoring a device to |
| 318 | its original factory state</h2> |
| 319 | <p>Factory images for Nexus 5, Nexus 10, Nexus 4, Nexus Q, Nexus 7, Galaxy |
| 320 | Nexus (GSM/HSPA+ "yakju" and "takju", |
| 321 | and CDMA/LTE "mysid" and "mysidspr"), Nexus S, and Nexus S 4G are available |
| 322 | from <a href="https://developers.google.com/android/nexus/images">Google's |
| 323 | factory image</a> page.</p> |
Jean-Baptiste Queru | d8fbf20 | 2013-06-18 14:51:12 -0700 | [diff] [blame] | 324 | <p>Factory images for the Motorola Xoom are distributed directly by Motorola.</p> |