These instructions will help you flashing the prebuilt bootloader
and AOSP images(built from sources) on rb5.

First, make sure you have built the AOSP images for RB5 by
running the rb5-userdebug lunch target.


Boot the board into fastboot mode:
----------------------------------
The easiest way to boot into fastboot mode is to run something
like "adb reboot bootloader" from the host, or
"reboot bootloader" on the device.  However, this
functionality may depend on the software installed on the board
to work, so you may need to manually enter fastboot mode as
follows.

To manually enter fastboot mode:
--------------------------------
* To manually boot the board into fastboot mode, press DOWN arrow
  key over serial UART console when restarting the board.

                         OR

* Follow the instructions here
https://www.96boards.org/documentation/consumer/dragonboard/qualcomm-robotics-rb5/installation/board-recovery.md.html#booting-into-fastboot


Flash the board:
----------------
Once the board is in fastboot mode, you can then flash bootloader
binaries and AOSP images by running the following script from
device/linaro/dragonboard/installer/rb5/ directory:

  $ ./flash-all-aosp.sh


Troubleshooting:
----------------
* If you have flashed AOSP images and you can see the boot logs
  on Serial prompt but no UI then try updating the lt9611uxc
  firmware version. Factory shipped RB5 has an older version of
  lt9611uxc firmware flashed on it and it is incompatible with
  upstream kernel. Try updating the firmware version by running
  the following adb shell commands:

  $ adb wait-for-device; adb root; adb shell "echo 1 > /sys/bus/i2c/devices/5-002b/lt9611uxc_firmware"

* Make sure the USB-C cable is connected. As it has to be
  removed to fully power the device down, it is easy to forget
  to reconnect it!

* If you cannot get the board into fastboot mode, or for some
  reason the flash-all-aosp.sh script does not work, you can do
  a full recovery flash of the board using the following
  instructions.


Recovery:
--------
First boot into recovery mode by follwing the recovery
instructions from here:
https://www.96boards.org/documentation/consumer/dragonboard/qualcomm-robotics-rb5/installation/board-recovery.md.html

Then run the recovery script from the
device/linaro/dragonboard/installer/rb5/ directory:

  $ ./recovery.sh

This will do a recovery flash of the ptable and bootloader
binaries.
