Fastboot

Sean Anderson seanga2 at gmail.com
Sat Mar 6 03:20:12 CET 2021


On 3/5/21 7:10 PM, Jonas Vautherin wrote:
> Hello!
> 
> I am learning about Fastboot, and I would like to run it from u-boot and
> detect it from my host computer (I have the tools on my host, that's
> working with other devices).
> 
> I am using a pocketbeagle and I built an image using Yocto. I can get into
> the u-boot prompt at boot time, and I get the following output:
> 
> ```
> Rebooting... reboot: Restarting system
> 
> U-Boot SPL 2020.07 (Jul 06 2020 - 19:22:53 +0000)
> Trying to boot from MMC1
> 
> 
> U-Boot 2020.07 (Jul 06 2020 - 19:22:53 +0000)
> 
> CPU  : AM335X-GP rev 2.1
> Model: TI AM335x PocketBeagle
> DRAM:  512 MiB
> WDT:   Started with servicing (60s timeout)
> NAND:  0 MiB
> MMC:   OMAP SD/MMC: 0
> Loading Environment from FAT... *** Warning - bad CRC, using default
> environment
> 
> <ethaddr> not set. Validating first E-fuse MAC
> Net:   No ethernet found.
> Hit any key to stop autoboot:  2
> ```
> 
> If I hit a key here, I get the u-boot prompt (`=>`) where I find
> "fastboot". The thing is that none of the fastboot commands I run have any
> output:

This is normal. There will be output only when you issue commands.

> 
> * fastboot usb 0
> * fastboot usb
> * fastboot udp
> 
> Now, fastboot udp is not enabled in my defconfig, but the udp gadget
> support is, and the usb fastboot gadget is enabled, too. From my host, I
> just don't see anything in the `dmesg` output.
> 
> Here are a few questions:
> 
> * Does fastboot usb go over ethernet? If yes, I guess that the "Net: No
> ethernet found." message is an issue that I need to fix such that a new usb
> network interface is created by my host, but from my tests with this
> proprietary device I own, it does not seem to be enumerated as a network
> interface.

Only udp goes over ethernet (though I suppose you could use a
usb-ethernet gadget/dongle).

> * In readthedocs [1], it mentions that "The CONFIG_USB_GADGET_VENDOR_NUM
> must be one of the numbers supported by the fastboot client." In my setup,
> it is set to 0x0451, and I did not find what is supposed to be supported in
> fastboot.cpp [2]. So from the host, I also tried `fastboot -i 0x0451
> devices`. Is that an issue?

The fastboot client detects devices with two bulk endpoints and the
correct interface (see match_fastboot and filter_usb_device). Generally,
you will only have to specify the vid/pid/serial if you have multiple
devices plugged in at once.

> * I thought that maybe I should start USB, because the output of `usb tree`
> says "USB is stopped. Please issue 'usb start' first.". But running `usb
> start` errors with "Bus usb at 47401800: Port not available.". Is that related
> to fastboot at all, i.e. should I be concerned about that? And how can I
> debug it?

That's probably why your fastboot isn't working :)

You can try debugging it by enabling debug messages. If you want less than
a firehose, you can try setting the default log level to info, and then
setting it to debug before running usb start. See [1] for details.

[1] https://u-boot.readthedocs.io/en/latest/develop/logging.html

--Sean

> Thanks in advance for the help!
> Jonas
> 
> [1]: https://u-boot.readthedocs.io/en/latest/android/fastboot.html
> [2]:
> https://android.googlesource.com/platform/system/core/+/master/fastboot/fastboot.cpp
> 



More information about the U-Boot mailing list