Search code examples
androidflashandroid-sourcerom

How do OEMs flash factory Android Images?


I'm trying to flash AOSP onto a Nvidia Tegra K1 dev board: https://developer.nvidia.com/jetson-tk1 Every guide that I've seen to flash Android onto a device requires an existing Android installation. For example, after you build AOSP, you have to put the device into fastboot mode by running

$adb reboot bootloader

As the Jetson does not come with an Android installation, is there a way that factory manufacturers flash their SoCs for the very fist time that I could use?

I have found Jedroid, a Lollipop Android version built specifically for the Jetson, but it is basically composed of precompiled system.img binaries and I need to be able to make a custom Android ROM for my system. I tried running $adb reboot bootloader and then flashing aosp from there, but fastboot hangs and won't detect any device, even when the Jetson is connected through USB.


Solution

  • Many android device bootloaders will enter fastboot mode if a particular key is held down during power-on, which probably has an associated spring-pin test point on the bare board. For an evaluation board, it might be a jumper instead. Lack of a valid image header on the expected flash partitions could also be a trigger.

    As to how the bootloader gets on the NAND/eMMC in the first place, it could be flashed before soldering it on the board, or downloaded with some unique interface such as a lower level bootloader in ROM onboard the SOC, which may be willing to accept code over USB or a serial interface, or in some cases boot from an SD card slot.

    JTAG/SWD can be another option, especially for "brick" recovery.

    Essentially anything below fastboot level is device unique, and even fastboot is not a supported method on all devices commonly running Android today.