DragonBoard 820c Board Recovery

This page outlines steps needed to recover your DragonBoard 820c board from a bricked software state. This instruction set is suggested to those who are experiences boot issues due to a corrution in the file system and/or other software components.

There are a couple ways to recover your DragonBoard 820c from a “bricked” state.

SD card Recovery image

In most cases this will be your sure-fire way to recover your board from a software bricked state. A recovery image has been created and made ready to be flashed onto a micro SD card. Simply download the SD card recovery image, and follow the sd card installation instructions found on our Installation page.

Note: For those already familiar with the SD card flashing process, 96Boards build folder can be found here

Fastboot recovery

In many cases, simply re-flashing the bootloader, boot image, and root file system, using the fastboot method is enough. While the generic fastboot method might not always work due to certain complications, the sd card recovery image is always available (as seen above).

Using USB flashing tools

Alternatively, the Dragonboard 820c can also be recovered/flashed over USB, using the Linaro QDL flashing tools. For more information about QDL, including installation instructions, please check this guide.

Connecting the board in USB flashing mode (aka EDL mode)

In order to force the DB820c to boot on USB (EDL mode), you need to configure S1 switch properly. S1 is on the back of the board underneath the micro SD slot.

Warning: putting the device into EDL mode while the device is powered or when USB is plugged can cause damage to the board, the actual root cause is under investigation, and a hardware fix will be implemented in newer board revision.

  • Power off the board and make sure no USB cable is plugged into the board
  • Set switch S1 to ON,OFF,OFF,ON. If you have a P1 board (very unlikely) you need to set to ON,ON,OFF,ON.
  • Connect the micro USB cable (J4) between the Linux PC and the board
  • Power on the device

Flashing the device

Download and unzip the most recent bootloader package from the following link:

http://snapshots.linaro.org/96boards/dragonboard820c/linaro/rescue/latest/

Then run:

cd dragonboard-820c-bootloader-ufs-linux-[BUILD-NUM].zip/
sudo <PATH to qdl>/qdl prog_ufs_firehose_8996_ddr.elf rawprogram.xml patch.xml

It should take a few seconds. And you should eventually get something like below from QDL stdout:

...
...
Update Backup Header with CRC of Backup Header.
LOG: crc start sector 393215, over bytes 92
LOG: Patched sector 393215 with 8FDB38DF
LUN1 is now bootable device
LOG: Inside handlePower() - Requested POWER_RESET
LOG: Issuing bsp_target_reset() after 1 seconds, if this hangs, do you have WATCHDOG enabled?

If you get a log similar to

Waiting for EDL device
/dev/bus/usb/001/044
HELLO version: 0x2 compatible: 0x1 max_len: 1024 mode: 0
READ64 image: 13 offset: 0x0 length: 0x40
<snip>
READ64 image: 13 offset: 0x6d1b0 length: 0xff4
END OF IMAGE image: 13 status: 0
DONE status: 1
qdl: failed to read: Connection timed out

Please ensure you have the latest version of qdl tool which includes following commit 7623ff5e1ece613ba886c9a0b2767c2dd797f725.

UFS provisioning

If the previous step failed, or if you want to reprovision the UFS disk on the board, the qdl flashing tool can also be used. Note that it should be very unlikely that you need to reprovision the UFS disk, and it should be considered as expert zone. In case of doubts, please check with the 96boards forum before running these instructions. Not running these instructions properly can create irreversible damage on the board!

To (re)provision the board, you need to connect the board in “USB flashing mode” as explained in the previous sections, then run the following commands:

cd dragonboard-820c-bootloader-ufs-linux-[BUILD-NUM].zip/
sudo <PATH to qdl>/qdl prog_ufs_firehose_8996_ddr.elf ufs-provision_toshiba.xml

It should take a few seconds. And you should eventually get something like that:

...
...
LOG: LUNum=6 bLUEnable=0 bBootLunID=0 bLUWriteProtect=0 bMemoryType=0 size_in_KB=0 bDataReliability=0 bLogicalBlockSize=12 bProvisioningType=0 wContextCapabilities=0
LOG: LUNum=7 bLUEnable=0 bBootLunID=0 bLUWriteProtect=0 bMemoryType=0 size_in_KB=0 bDataReliability=0 bLogicalBlockSize=12 bProvisioningType=0 wContextCapabilities=0
LOG: Set storage parameters successfully
UFS provisioning succeeded

Booting into fastboot

If the flashing process succeeded, all the right bootloaders and partition table should have been set. And fastboot can now be used to flash Linux root file system. The first thing to try is to get into fastboot, to make sure the flashing completed properly.

  • Power off the board and make sure no USB cable is plugged into the board
  • Set Switch S1 to OFF,OFF,OFF,OFF. If you have a P1 board (very unlikely) you may need to use OFF,ON,OFF,OFF.
  • Connect the micro USB cable (J4) between the Linux PC and the board
  • Power on the device

Execute below command on the PC to confirm that the board has entered fastboot mode:

$ sudo fastboot devices
01234567	fastboot