This is a cache of https://discuss.96boards.org/t/fail-to-boot-into-fastboot-for-db820c/5176. It is a snapshot of the page at 2024-11-01T08:50:45.254+0000.
Fail to boot into fastboot for db820c - DragonBoard 820c - 96Boards Forum

Fail to boot into fastboot for db820c

My db820c board already has Debian system with 4.11 linux kernel. But I need a system with 4.14 kernel, so I try to re-install the OS.

I followed this guide. When I try to boot into fastboot, I found the board still boots the already available boot image, so I tried the following method:

Note: If the board is not going into fastboot mode and it boots the already available boot image, you can delete the boot partition after login using the command cat /dev/zero > /dev/disk/by-partlabel/boot. Then next time it will boot into fastboot mode directly.

I typed login the board and typed cat /dev/zero > /dev/disk/by-partlabel/boot, it tell me no memory can be used. Then I restart the board, power on the device while holding Vol (-) button, but I get no reaction on my monitor this time.

I also tried to power on the device with S1 set to ‘0000’, but still get no reaction on my monitor.

I also tried this guide to recover my board, but I get wating for QDL tty... in my ubuntu host, and get no reation on my board monitor. Then I tried the following solution:

before running this command:

sudo /qdl prog_ufs_firehose_8996_ddr.elf rawprogram.xml patch.xml

which is used to flash all the bootloader, you will need to run this
command for UFS provisioning:

sudo /qdl --debug prog_ufs_firehose_8996_ddr.elf /UFS_provisioning/Toshiba/provision_toshiba.xml

But I still get wating for QDL tty... in my ubuntu host, and get no reation on my board monitor. It seems that my host cannot find the board (I have already connect with USB).

I guess the error is caused by cat /dev/zero > /dev/disk/by-partlabel/boot, because the board output nothing after I run this command.

Could anybody help me, thanks in advance.

Those are the normal settings you should have for using fastboot, as indicated in the guide you refer to, so should have been so set from the start.
Are you using a serial console adapter?
It is a good idea to monitor the journal on your PC for USB events. The first thing I do is open a terminal and do the following in it:
$ su -
# journalctl -f _KERNEL_SUBSYSTEM=usb
then open a second terminal, for the serial console, and do the following in it:
$ su -
# picocom -b 115200 /dev/ttyUSB0
then open a third terminal for issuing fastboot commands.
However, fastboot is implemented in Little Kernel and it is not clear that you still have that given that you have been playing with qdl. On the other hand, the qdl commands did not seem to work. The commands you quote look like nonsense and, It appears you did not stop ModemManager.

I guess the error is caused by cat /dev/zero > /dev/disk/by-partlabel/boot, because the board output nothing after I
run this command.

The effect of this command is to destroy the boot image (and does indeed
render the system unbootable). This will force the board into fastboot mode
where you can either restore the boot image from your PC (fastboot flash boot boot.img) or simply boot directly (fastboot boot boot.img).

With respect to your original issue of not booting into fastboot, I have now experienced this myself for the first time. It is possible I had not experienced it before as I habitually hold down both the power and volume down buttons at power-up as stated on page 29 of the ‘DragonBoard 820c Hardware Manual’. When I hold down just the volume down button at power-up, sometimes it works and sometimes it does not.

Thanks, but the problem is my board cannot boot into fastboot mode, even after /dev/zero > /dev/disk/by-partlabel/boot.
Note that when I run /dev/zero > /dev/disk/by-partlabel/boot, I get no memory left, I wonder if this is the cause of the error?

Thanks, if I set the S1 to ‘0000’, then journalctl -f _KERNEL_SUBSYSTEM=usb can give the following:

7 06 16:13:17 kcheng-HP-EliteBook-8470w kernel: usb 1-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
7 06 16:13:17 kcheng-HP-EliteBook-8470w kernel: usb 1-1.2: Product: Android
7 06 16:13:17 kcheng-HP-EliteBook-8470w kernel: usb 1-1.2: Manufacturer: Google
7 06 16:13:17 kcheng-HP-EliteBook-8470w kernel: usb 1-1.2: SerialNumber: f65449e6

if I set the S1 to ‘0110’, then journalctl -f _KERNEL_SUBSYSTEM=usb give nothing.
According to the guide for recovery, if I want to recover the board, I need to set the S1 to ‘0110’. But as I mentioned above, this mode cannot be detected by my host computer.
So in this case, how to install OS on my board?

Have you unplugged all cables and SD cards but power and USB micro AB? Normally leaving some of the cables in is OK but for troubleshooting removing everything is the simplest way to avoid mistakes.

Also have you tried a different USB cable? Again, unlikely to be a problem but worth checking; we see people with broken cabling more often that you would think.

Do you see anything in the kernel logs (when a USB device is connected to an ubuntu workstation then messages can be seen in sudo dmesg).

Unlikely.

An error is normal, although I would expect it to be a no space rather than no memory. /dev/zero is an infinitely long file… so you run out of space when you reach the end of the boot partition and cat reports an error.

Thanks, I checked my USB connect situation by journalctl -f _KERNEL_SUBSYSTEM=usb.

If I set the S1 to ‘0000’, then journalctl -f _KERNEL_SUBSYSTEM=usb can give the following:

7 06 16:13:17 kcheng-HP-EliteBook-8470w kernel: usb 1-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
7 06 16:13:17 kcheng-HP-EliteBook-8470w kernel: usb 1-1.2: Product: Android
7 06 16:13:17 kcheng-HP-EliteBook-8470w kernel: usb 1-1.2: Manufacturer: Google
7 06 16:13:17 kcheng-HP-EliteBook-8470w kernel: usb 1-1.2: SerialNumber: f65449e6

However, if I set the S1 to ‘0110’, then journalctl -f _KERNEL_SUBSYSTEM=usb give nothing.

According to the guide for recovery, if I want to recover the board, I need to set the S1 to ‘0110’. But as I mentioned above, this mode cannot be detected by my host computer.
So in this case, how to install OS on my board?

All you have done with the cat /dev/zero command is erase the kernel image.
With S1 set to 0000 you have shown that the board is in fastboot mode by the output in the journal.
When in this state, can you issue the following command from your PC as root
# fastboot -l devices
(I presume you have android tools installed on your PC)

I run fastboot -l devices and get :

f65449e6 fastboot usb:1-1.2

Then you can flash the kernel image with something like
# fastboot flash boot boot-linaro-buster-dragonboard-820c-BUILD.img
and the filesystem with
# fastboot flash rootfs linaro-buster-alip-dragonboard-820c-BUILD.img
Unfortunately, the latter will probably fail as there is no partition called rootfs.
There has been a change in the partition naming scheme since the boards were flashed in the factory.
You will first have to get the latest rescue image from
http://snapshots.linaro.org/96boards/dragonboard820c/linaro/rescue/latest/
and follow the instructions in

and

You will not need to re-provision the ufs. You will only need the command
qdl prog_ufs_firehose_8996_ddr.elf rawprogram.xml patch.xml

@KeCh96: You’ve been saying the board won’t boot into fastboot but all the evidene you have shared tells us that is has booted into fastboot!

I wonder, were you expecting something to come up on the HDMI when you are in fastboot mode (kind of like the splash screen that comes up on a phone)? That doesn’t usually happen on non-phone implementations of fastboot…

Thanks, I run fastboot flash boot boot-linaro-buster-dragonboard-820c-BUILD.img successfully, and fastboot flash rootfs linaro-buster-alip-dragonboard-820c-BUILD.img run into no partition error.

I have downloaded the latest rescue image, but I don’t know how to use it…

I try to follow the recovery guide, I set S1 to ‘1001’, but it stoped at wating for QDL tty... in my ubuntu host.
Note that when I set S1 to ‘0000’ and hold Vol (-) button, the journalctl -f _KERNEL_SUBSYSTEM=usb command shows informations about the board; however, when I set S1 to ‘1001’, the journalctl -f _KERNEL_SUBSYSTEM=usb command shows nothing about the board.

So far I have not connect UART, thus I wonder if connecting UART can solve the problem. I searched on the Internet for how to connect UART, and find the following guide:

  • PIN1 is GND
  • PIN11 is TX
  • PIN13 is RX

But I don’t know where are PIN1 PIN11 PIN13 for db820c? Are these three pins on the J8? If so, which end is PIN1? @danielt

Yes, the pins are on J8. Pin 1 is indicated with white dot on the silkscreen and is draw graphically here:
https://www.96boards.org/pinout/

Note that the pinout diagram shows the standard form factor board (where LS connector is at edge of board). If you look at your DB820C sideways with the ethernet connector on the right then should patch the diagram at the left of the pinout webpage.

I thought I had described the connections quite clearly and with pictures in my App Note here: https://developer.qualcomm.com/download/db410c/uart-usb-adapter-application-note.pdf

Let me know if there are any issues.

-Lawrence-