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 db845c-trunk_staging-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.
