* Fastboot @ 2021-03-06 0:10 Jonas Vautherin 2021-03-06 2:20 ` Fastboot Sean Anderson 0 siblings, 1 reply; 9+ messages in thread From: Jonas Vautherin @ 2021-03-06 0:10 UTC (permalink / raw) To: u-boot 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: * 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. * 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? * 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? 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 ^ permalink raw reply [flat|nested] 9+ messages in thread
* Fastboot 2021-03-06 0:10 Fastboot Jonas Vautherin @ 2021-03-06 2:20 ` Sean Anderson 2021-03-07 1:38 ` Fastboot Jonas Vautherin 0 siblings, 1 reply; 9+ messages in thread From: Sean Anderson @ 2021-03-06 2:20 UTC (permalink / raw) To: u-boot 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 > ^ permalink raw reply [flat|nested] 9+ messages in thread
* Fastboot 2021-03-06 2:20 ` Fastboot Sean Anderson @ 2021-03-07 1:38 ` Jonas Vautherin 2021-03-07 2:04 ` Fastboot Sean Anderson 0 siblings, 1 reply; 9+ messages in thread From: Jonas Vautherin @ 2021-03-07 1:38 UTC (permalink / raw) To: u-boot Thanks a lot Sean! I tried to enable logging by using the following CONFIG_: ``` CONFIG_LOG=y CONFIG_SPL_LOG=y CONFIG_TPL_LOG=y CONFIG_LOG_MAX_LEVEL=5 CONFIG_SPL_LOG_MAX_LEVEL=3 CONFIG_TPL_LOG_MAX_LEVEL=3 CONFIG_LOG_DEFAULT_LEVEL=7 CONFIG_LOG_CONSOLE=y CONFIG_SPL_LOG_CONSOLE=y CONFIG_TPL_LOG_CONSOLE=y CONFIG_CMD_LOG=y ``` And I got the "log" function indeed. But it did not have the effect I was hoping for: ``` => log level set 7 => log level Default log level: 0 => usb start starting USB... Bus usb at 47401800: Port not available. ``` First, I don't get why it says "Default log level: 0" after I set it (to whatever number, apparently). And second, it does not seem to bring me more output about the usb issue :-/. Am I missing something? Best, Jonas On Sat, Mar 6, 2021 at 3:20 AM Sean Anderson <seanga2@gmail.com> wrote: > 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 > > > > ^ permalink raw reply [flat|nested] 9+ messages in thread
* Fastboot 2021-03-07 1:38 ` Fastboot Jonas Vautherin @ 2021-03-07 2:04 ` Sean Anderson 2021-03-07 18:31 ` Fastboot Jonas Vautherin 0 siblings, 1 reply; 9+ messages in thread From: Sean Anderson @ 2021-03-07 2:04 UTC (permalink / raw) To: u-boot On 3/6/21 8:38 PM, Jonas Vautherin wrote: > Thanks a lot Sean! > > I tried to enable logging by using the following CONFIG_: > > ``` > CONFIG_LOG=y > CONFIG_SPL_LOG=y > CONFIG_TPL_LOG=y > CONFIG_LOG_MAX_LEVEL=5 You need to increase this. Log levels are only compiled-in if they are less than the max log level. > CONFIG_SPL_LOG_MAX_LEVEL=3 > CONFIG_TPL_LOG_MAX_LEVEL=3 > CONFIG_LOG_DEFAULT_LEVEL=7 > CONFIG_LOG_CONSOLE=y > CONFIG_SPL_LOG_CONSOLE=y > CONFIG_TPL_LOG_CONSOLE=y > > CONFIG_CMD_LOG=y > ``` > > And I got the "log" function indeed. But it did not have the effect I was hoping for: > > ``` > => log level set 7 Use the help function ;) The correct syntax is "log level 7" If you use a newer U-Boot (newer than 2021.01) then the output will be more verbose. E.g. => log level EMERG ALERT CRIT ERR WARNING NOTICE INFO (default) DEBUG --Sean > => log level > Default log level: 0 > => usb start > starting USB... > Bus usb at 47401800: Port not available. > ``` > > First, I don't get why it says "Default log level: 0" after I set it (to whatever number, apparently). And second, it does not seem to bring me more output about the usb issue :-/. > > Am I missing something? > > Best, > Jonas > > On Sat, Mar 6, 2021 at 3:20 AM Sean Anderson <seanga2 at gmail.com <mailto:seanga2@gmail.com>> wrote: > > 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 > > > ^ permalink raw reply [flat|nested] 9+ messages in thread
* Fastboot 2021-03-07 2:04 ` Fastboot Sean Anderson @ 2021-03-07 18:31 ` Jonas Vautherin 2021-03-10 17:43 ` Fastboot Jonas Vautherin 0 siblings, 1 reply; 9+ messages in thread From: Jonas Vautherin @ 2021-03-07 18:31 UTC (permalink / raw) To: u-boot Yes that was it! I had used `log help`, but misunderstood the output. My bad... Below is the debug output I receive, where I don't really get what's happening except for those two lines: ``` uclass_find_device_by_seq() - 1 -1 'usb at 47401800' uclass_find_device_by_seq() - not found ``` But I don't really understand what it means. I spent a lot of time reading the available options in menuconfig, and at that point I cannot say what I am doing wrong. Note that I am using the `am335x_evm_defconfig` defconfig, which I changed to get more logging outputs. Here is the output of `usb start`, let me know if I am missing something obvious from there: ``` => usb start starting USB... Bus usb at 47401800: __of_translate_address() OF: ** translation for device usb at 47401800 ** __of_translate_address() OF: bus is default (na=1, ns=1) on usb at 47400000 __of_translate_address() OF: parent bus is default (na=1, ns=1) on ocp of_translate_one() OF: no ranges, 1:1 translation of_translate_one() OF: with offset: 1195382784 __of_translate_address() OF: parent bus is default (na=1, ns=1) on of_translate_one() OF: no ranges, 1:1 translation of_translate_one() OF: with offset: 1195382784 __of_translate_address() OF: reached root node fdtdec_lookup_phandle() fdtdec_lookup_phandle: phys fdtdec_lookup_phandle() fdtdec_lookup_phandle: ti,ctrl_mod fdtdec_get_addr_size_fixed() fdtdec_get_addr_size_fixed: reg: fdtdec_get_addr_size_fixed() addr=44e10620 fdtdec_get_int() fdtdec_get_int: mentor,multipoint: fdtdec_get_int() 0x1 (1) fdtdec_get_int() fdtdec_get_int: mentor,num-eps: fdtdec_get_int() 0x10 (16) fdtdec_get_int() fdtdec_get_int: mentor,ram-bits: fdtdec_get_int() 0xc (12) fdtdec_get_int() fdtdec_get_int: mentor,power: fdtdec_get_int() 0x1f4 (500) uclass_find_device_by_seq() 0 1 uclass_find_device_by_seq() - 1 -1 'usb at 47401800' uclass_find_device_by_seq() - not found clk_set_defaults() clk_set_defaults(usb at 47401800) clk_set_default_parents() clk_set_default_parents: could not read assigned-clock-parents for 9df24d30 ofnode_read_prop() ofnode_read_prop: assigned-clock-rates: ofnode_read_prop() <not found> musb_core_init() musb-hdrc: hw_ep 0shared, max 64 musb_core_init() musb-hdrc: hw_ep 1tx, max 512 musb_core_init() musb-hdrc: hw_ep 1rx, max 512 musb_core_init() musb-hdrc: hw_ep 2tx, max 512 musb_core_init() musb-hdrc: hw_ep 2rx, max 512 musb_core_init() musb-hdrc: hw_ep 3tx, max 512 musb_core_init() musb-hdrc: hw_ep 3rx, max 512 musb_core_init() musb-hdrc: hw_ep 4tx, max 512 musb_core_init() musb-hdrc: hw_ep 4rx, max 512 musb_core_init() musb-hdrc: hw_ep 5tx, max 512 musb_core_init() musb-hdrc: hw_ep 5rx, max 512 musb_core_init() musb-hdrc: hw_ep 6tx, max 512 musb_core_init() musb-hdrc: hw_ep 6rx, max 512 musb_core_init() musb-hdrc: hw_ep 7tx, max 512 musb_core_init() musb-hdrc: hw_ep 7rx, max 512 musb_core_init() musb-hdrc: hw_ep 8tx, max 512 musb_core_init() musb-hdrc: hw_ep 8rx, max 512 musb_core_init() musb-hdrc: hw_ep 9tx, max 512 musb_core_init() musb-hdrc: hw_ep 9rx, max 512 musb_core_init() musb-hdrc: hw_ep 10tx, max 256 musb_core_init() musb-hdrc: hw_ep 10rx, max 64 musb_core_init() musb-hdrc: hw_ep 11tx, max 256 musb_core_init() musb-hdrc: hw_ep 11rx, max 64 musb_core_init() musb-hdrc: hw_ep 12tx, max 256 musb_core_init() musb-hdrc: hw_ep 12rx, max 64 musb_core_init() musb-hdrc: hw_ep 13shared, max 4096 musb_core_init() musb-hdrc: hw_ep 14shared, max 1024 musb_core_init() musb-hdrc: hw_ep 15shared, max 1024 musb_start() <== devctl 80 musb_stop() HDRC disabled Port not available. usb_init() scan end ``` Best, On Sun, Mar 7, 2021 at 3:04 AM Sean Anderson <seanga2@gmail.com> wrote: > On 3/6/21 8:38 PM, Jonas Vautherin wrote: > > Thanks a lot Sean! > > > > I tried to enable logging by using the following CONFIG_: > > > > ``` > > CONFIG_LOG=y > > CONFIG_SPL_LOG=y > > CONFIG_TPL_LOG=y > > CONFIG_LOG_MAX_LEVEL=5 > > You need to increase this. Log levels are only compiled-in if they are > less than the max log level. > > > CONFIG_SPL_LOG_MAX_LEVEL=3 > > CONFIG_TPL_LOG_MAX_LEVEL=3 > > CONFIG_LOG_DEFAULT_LEVEL=7 > > CONFIG_LOG_CONSOLE=y > > CONFIG_SPL_LOG_CONSOLE=y > > CONFIG_TPL_LOG_CONSOLE=y > > > > CONFIG_CMD_LOG=y > > ``` > > > > And I got the "log" function indeed. But it did not have the effect I > was hoping for: > > > > ``` > > => log level set 7 > > Use the help function ;) > > The correct syntax is "log level 7" > > If you use a newer U-Boot (newer than 2021.01) then the output will be > more verbose. E.g. > > => log level > EMERG > ALERT > CRIT > ERR > WARNING > NOTICE > INFO (default) > DEBUG > > --Sean > > > => log level > > Default log level: 0 > > => usb start > > starting USB... > > Bus usb at 47401800: Port not available. > > ``` > > > > First, I don't get why it says "Default log level: 0" after I set it (to > whatever number, apparently). And second, it does not seem to bring me more > output about the usb issue :-/. > > > > Am I missing something? > > > > Best, > > Jonas > > > > On Sat, Mar 6, 2021 at 3:20 AM Sean Anderson <seanga2@gmail.com <mailto: > seanga2 at gmail.com>> wrote: > > > > 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 > > > > > > > ^ permalink raw reply [flat|nested] 9+ messages in thread
* Fastboot 2021-03-07 18:31 ` Fastboot Jonas Vautherin @ 2021-03-10 17:43 ` Jonas Vautherin 2021-03-10 23:44 ` Fastboot Sean Anderson 0 siblings, 1 reply; 9+ messages in thread From: Jonas Vautherin @ 2021-03-10 17:43 UTC (permalink / raw) To: u-boot Hello! I've made some more tests, but I am stuck and I don't really know what I am missing. Would love to get some insights, if somebody has an idea :-). So my root problem is that I would like to run my pocketbeagle in fastboot mode so that I can flash an image from my laptop over USB (it's a learning experience, I'm new to u-boot). When I go into the u-boot prompt and run `fastboot usb 0` (after I set `log level 7`), I get: ``` => fastboot usb 0 uclass_find_device_by_seq() 0 0 uclass_find_device_by_seq() - not found uclass_find_device_by_seq() 1 0 uclass_find_device_by_seq() - not found cmd_call() Command failed, result=1 ``` Similar for `fastboot usb 1` (I don't know which one is the microB on the pocketbeagle), except the numbers are `0 1` and `1 1` in the log output. If I `dm tree`, for some reason I see only usb1 at 47401800 (according to the `.dts`, usb0 is @47401000). ``` misc 0 [ + ] ti-musb-wrapper `-- usb at 47400000 usb 0 [ ] ti-musb-host `-- usb at 47401800 ``` Looking at the defconfig (I use Yocto, so `bitbake -c menuconfig u-boot), I see that "Default Device Tree for DT control" is (am335x-evm). Opening ./build/tmp/work/pocketbeagle-poky-linux-gnueabi/u-boot/1_2020.07-r0/git/arch/arm/dts/am335x-evm.dts (which I believe is the one corresponding to `am335x-evm` in my defconfig), I see the following for usb: ``` &usb { status = "okay"; }; &usb_ctrl_mod { status = "okay"; }; &usb0_phy { status = "okay"; }; &usb1_phy { status = "okay"; }; &usb0 { status = "okay"; }; &usb1 { status = "okay"; dr_mode = "host"; }; ``` And showing usb0 and usb1 with `fdt print` (after I get the value of $fdt_blob with `bdinfo` and use it with `fdt addr $fdt_blob`), I get: ``` => fdt print /ocp/usb at 47400000/usb at 47401000 usb at 47401000 { compatible = "ti,musb-am33xx"; status = "okay"; reg = <0x47401400 0x00000400 0x47401000 0x00000200>; reg-names = "mc", "control"; interrupts = <0x00000012>; interrupt-names = "mc"; dr_mode = "otg"; mentor,multipoint = <0x00000001>; mentor,num-eps = <0x00000010>; mentor,ram-bits = <0x0000000c>; mentor,power = <0x000001f4>; phys = <0x00000037>; dmas = * 0x9df20aa8 [0x00000168]; dma-names = "rx1", "rx2", "rx3", "rx4", "rx5", "rx6", "rx7", "rx8", "rx 9", "rx10", "rx11", "rx12", "rx13", "rx14", "rx15", "tx1", "tx2", "tx3", "tx4", "tx5", "tx6", "tx7", "tx8", "tx9", "tx10", "tx11", "tx12", "tx13", "tx14", "tx15"; }; ``` and ``` => fdt print /ocp/usb at 47400000/usb at 47401800 usb at 47401800 { compatible = "ti,musb-am33xx"; status = "okay"; reg = <0x47401c00 0x00000400 0x47401800 0x00000200>; reg-names = "mc", "control"; interrupts = <0x00000013>; interrupt-names = "mc"; dr_mode = "host"; mentor,multipoint = <0x00000001>; mentor,num-eps = <0x00000010>; mentor,ram-bits = <0x0000000c>; mentor,power = <0x000001f4>; phys = <0x00000039>; dmas = * 0x9df20e50 [0x00000168]; dma-names = "rx1", "rx2", "rx3", "rx4", "rx5", "rx6", "rx7", "rx8", "rx9", "rx10", "rx11", "rx12", "rx13", "rx14", "rx15", "tx1", "tx2", "tx3", "tx4", "tx5", "tx6", "tx7", "tx8", "tx9", "tx10", "tx11", "tx12", "tx13", "tx14", "tx 15"; }; ``` My understanding is therefore that `usb0` is in "otg" mode, and `usb1` is in "host" mode. But that does not really tell me why `fastboot usb 0` and `fastboot usb 1` failed. I have also tried to edit `am335x-evm.dts` and set both to "peripheral" (I do that in a Yocto patch step and make sure I `bitbake -c cleansstate u-boot` and `bitbake -c clean <my-image>` before I rebuild): ``` &usb0 { status = "okay"; dr_mode = "peripheral"; }; &usb1 { status = "okay"; dr_mode = "peripheral"; }; ``` But that does not change anything in the `fdt print` output: usb0 is still "otg" and usb1 is still "host". Which makes me guess I may be modifying the wrong `am335x-evm.dts`, but I really don't know how I could check that. Again, any hints are appreciated, I'm happy to DuckDuckGo some new keywords or ideas as my goal is to learn about u-boot, but right now I'm just stuck :-). Best Regards, Jonas On Sun, Mar 7, 2021 at 7:31 PM Jonas Vautherin <jonas.vautherin@gmail.com> wrote: > Yes that was it! I had used `log help`, but misunderstood the output. My > bad... Below is the debug output I receive, where I don't really get what's > happening except for those two lines: > > ``` > uclass_find_device_by_seq() - 1 -1 'usb at 47401800' > uclass_find_device_by_seq() - not found > ``` > > But I don't really understand what it means. I spent a lot of time reading > the available options in menuconfig, and at that point I cannot say what I > am doing wrong. Note that I am using the `am335x_evm_defconfig` defconfig, > which I changed to get more logging outputs. > > Here is the output of `usb start`, let me know if I am missing something > obvious from there: > > ``` > => usb start > starting USB... > Bus usb at 47401800: __of_translate_address() OF: ** translation for device > usb at 47401800 ** > __of_translate_address() OF: bus is default (na=1, ns=1) on usb at 47400000 > __of_translate_address() OF: parent bus is default (na=1, ns=1) on ocp > of_translate_one() OF: no ranges, 1:1 translation > of_translate_one() OF: with offset: 1195382784 > __of_translate_address() OF: parent bus is default (na=1, ns=1) on > of_translate_one() OF: no ranges, 1:1 translation > of_translate_one() OF: with offset: 1195382784 > __of_translate_address() OF: reached root node > fdtdec_lookup_phandle() fdtdec_lookup_phandle: phys > fdtdec_lookup_phandle() fdtdec_lookup_phandle: ti,ctrl_mod > fdtdec_get_addr_size_fixed() fdtdec_get_addr_size_fixed: reg: > fdtdec_get_addr_size_fixed() addr=44e10620 > fdtdec_get_int() fdtdec_get_int: mentor,multipoint: fdtdec_get_int() 0x1 > (1) > fdtdec_get_int() fdtdec_get_int: mentor,num-eps: fdtdec_get_int() 0x10 (16) > fdtdec_get_int() fdtdec_get_int: mentor,ram-bits: fdtdec_get_int() 0xc (12) > fdtdec_get_int() fdtdec_get_int: mentor,power: fdtdec_get_int() 0x1f4 (500) > uclass_find_device_by_seq() 0 1 > uclass_find_device_by_seq() - 1 -1 'usb at 47401800' > uclass_find_device_by_seq() - not found > clk_set_defaults() clk_set_defaults(usb at 47401800) > clk_set_default_parents() clk_set_default_parents: could not read > assigned-clock-parents for 9df24d30 > ofnode_read_prop() ofnode_read_prop: assigned-clock-rates: > ofnode_read_prop() <not found> > musb_core_init() musb-hdrc: hw_ep 0shared, max 64 > musb_core_init() musb-hdrc: hw_ep 1tx, max 512 > musb_core_init() musb-hdrc: hw_ep 1rx, max 512 > musb_core_init() musb-hdrc: hw_ep 2tx, max 512 > musb_core_init() musb-hdrc: hw_ep 2rx, max 512 > musb_core_init() musb-hdrc: hw_ep 3tx, max 512 > musb_core_init() musb-hdrc: hw_ep 3rx, max 512 > musb_core_init() musb-hdrc: hw_ep 4tx, max 512 > musb_core_init() musb-hdrc: hw_ep 4rx, max 512 > musb_core_init() musb-hdrc: hw_ep 5tx, max 512 > musb_core_init() musb-hdrc: hw_ep 5rx, max 512 > musb_core_init() musb-hdrc: hw_ep 6tx, max 512 > musb_core_init() musb-hdrc: hw_ep 6rx, max 512 > musb_core_init() musb-hdrc: hw_ep 7tx, max 512 > musb_core_init() musb-hdrc: hw_ep 7rx, max 512 > musb_core_init() musb-hdrc: hw_ep 8tx, max 512 > musb_core_init() musb-hdrc: hw_ep 8rx, max 512 > musb_core_init() musb-hdrc: hw_ep 9tx, max 512 > musb_core_init() musb-hdrc: hw_ep 9rx, max 512 > musb_core_init() musb-hdrc: hw_ep 10tx, max 256 > musb_core_init() musb-hdrc: hw_ep 10rx, max 64 > musb_core_init() musb-hdrc: hw_ep 11tx, max 256 > musb_core_init() musb-hdrc: hw_ep 11rx, max 64 > musb_core_init() musb-hdrc: hw_ep 12tx, max 256 > musb_core_init() musb-hdrc: hw_ep 12rx, max 64 > musb_core_init() musb-hdrc: hw_ep 13shared, max 4096 > musb_core_init() musb-hdrc: hw_ep 14shared, max 1024 > musb_core_init() musb-hdrc: hw_ep 15shared, max 1024 > musb_start() <== devctl 80 > musb_stop() HDRC disabled > Port not available. > usb_init() scan end > ``` > > Best, > > On Sun, Mar 7, 2021 at 3:04 AM Sean Anderson <seanga2@gmail.com> wrote: > >> On 3/6/21 8:38 PM, Jonas Vautherin wrote: >> > Thanks a lot Sean! >> > >> > I tried to enable logging by using the following CONFIG_: >> > >> > ``` >> > CONFIG_LOG=y >> > CONFIG_SPL_LOG=y >> > CONFIG_TPL_LOG=y >> > CONFIG_LOG_MAX_LEVEL=5 >> >> You need to increase this. Log levels are only compiled-in if they are >> less than the max log level. >> >> > CONFIG_SPL_LOG_MAX_LEVEL=3 >> > CONFIG_TPL_LOG_MAX_LEVEL=3 >> > CONFIG_LOG_DEFAULT_LEVEL=7 >> > CONFIG_LOG_CONSOLE=y >> > CONFIG_SPL_LOG_CONSOLE=y >> > CONFIG_TPL_LOG_CONSOLE=y >> > >> > CONFIG_CMD_LOG=y >> > ``` >> > >> > And I got the "log" function indeed. But it did not have the effect I >> was hoping for: >> > >> > ``` >> > => log level set 7 >> >> Use the help function ;) >> >> The correct syntax is "log level 7" >> >> If you use a newer U-Boot (newer than 2021.01) then the output will be >> more verbose. E.g. >> >> => log level >> EMERG >> ALERT >> CRIT >> ERR >> WARNING >> NOTICE >> INFO (default) >> DEBUG >> >> --Sean >> >> > => log level >> > Default log level: 0 >> > => usb start >> > starting USB... >> > Bus usb at 47401800: Port not available. >> > ``` >> > >> > First, I don't get why it says "Default log level: 0" after I set it >> (to whatever number, apparently). And second, it does not seem to bring me >> more output about the usb issue :-/. >> > >> > Am I missing something? >> > >> > Best, >> > Jonas >> > >> > On Sat, Mar 6, 2021 at 3:20 AM Sean Anderson <seanga2@gmail.com >> <mailto:seanga2@gmail.com>> wrote: >> > >> > 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 >> > > >> > >> >> ^ permalink raw reply [flat|nested] 9+ messages in thread
* Fastboot 2021-03-10 17:43 ` Fastboot Jonas Vautherin @ 2021-03-10 23:44 ` Sean Anderson 2021-03-11 0:56 ` Fastboot Jonas Vautherin 0 siblings, 1 reply; 9+ messages in thread From: Sean Anderson @ 2021-03-10 23:44 UTC (permalink / raw) To: u-boot On 3/10/21 12:43 PM, Jonas Vautherin wrote: > Hello! > > I've made some more tests, but I am stuck and I don't really know what > I am missing. Would love to get some insights, if somebody has an idea > :-). So my root problem is that I would like to run my pocketbeagle in > fastboot mode so that I can flash an image from my laptop over USB > (it's a learning experience, I'm new to u-boot). > > When I go into the u-boot prompt and run `fastboot usb 0` (after I set > `log level 7`), I get: > > ``` > => fastboot usb 0 > uclass_find_device_by_seq() 0 0 > uclass_find_device_by_seq() - not found > uclass_find_device_by_seq() 1 0 > uclass_find_device_by_seq() - not found > cmd_call() Command failed, result=1 > ``` > > Similar for `fastboot usb 1` (I don't know which one is the microB on > the pocketbeagle), except the numbers are `0 1` and `1 1` in the log > output. The numbers come from /aliases in the device tree. You should read the datasheet/schematic to figure out which is which :) > > If I `dm tree`, for some reason I see only usb1 at 47401800 (according to > the `.dts`, usb0 is @47401000). > > ``` > misc 0 [ + ] ti-musb-wrapper `-- usb at 47400000 > usb 0 [ ] ti-musb-host `-- usb at 47401800 > ``` > > Looking at the defconfig (I use Yocto, so `bitbake -c menuconfig > u-boot), I see that "Default Device Tree for DT control" is > (am335x-evm). Opening > ./build/tmp/work/pocketbeagle-poky-linux-gnueabi/u-boot/1_2020.07-r0/git/arch/arm/dts/am335x-evm.dts > (which I believe is the one corresponding to `am335x-evm` in my > defconfig), I see the following for usb: > > ``` > &usb { > status = "okay"; > }; > > &usb_ctrl_mod { > status = "okay"; > }; > > &usb0_phy { > status = "okay"; > }; > > &usb1_phy { > status = "okay"; > }; > > &usb0 { > status = "okay"; > }; > > &usb1 { > status = "okay"; > dr_mode = "host"; > }; > ``` > > And showing usb0 and usb1 with `fdt print` (after I get the value of > $fdt_blob with `bdinfo` and use it with `fdt addr $fdt_blob`), I get: > > ``` > => fdt print /ocp/usb at 47400000/usb at 47401000 > usb at 47401000 { > compatible = "ti,musb-am33xx"; > status = "okay"; > reg = <0x47401400 0x00000400 0x47401000 0x00000200>; > reg-names = "mc", "control"; > interrupts = <0x00000012>; > interrupt-names = "mc"; > dr_mode = "otg"; > mentor,multipoint = <0x00000001>; > mentor,num-eps = <0x00000010>; > mentor,ram-bits = <0x0000000c>; > mentor,power = <0x000001f4>; > phys = <0x00000037>; > dmas = * 0x9df20aa8 [0x00000168]; > dma-names = "rx1", "rx2", "rx3", "rx4", "rx5", "rx6", "rx7", "rx8", "rx > 9", "rx10", "rx11", "rx12", "rx13", "rx14", "rx15", "tx1", "tx2", "tx3", "tx4", "tx5", "tx6", "tx7", "tx8", "tx9", "tx10", "tx11", "tx12", "tx13", "tx14", "tx15"; > }; > ``` > > and > > ``` > => fdt print /ocp/usb at 47400000/usb at 47401800 > usb at 47401800 { > compatible = "ti,musb-am33xx"; > status = "okay"; > reg = <0x47401c00 0x00000400 0x47401800 0x00000200>; > reg-names = "mc", "control"; > interrupts = <0x00000013>; > interrupt-names = "mc"; > dr_mode = "host"; > mentor,multipoint = <0x00000001>; > mentor,num-eps = <0x00000010>; > mentor,ram-bits = <0x0000000c>; > mentor,power = <0x000001f4>; > phys = <0x00000039>; > dmas = * 0x9df20e50 [0x00000168]; > dma-names = "rx1", "rx2", "rx3", "rx4", "rx5", "rx6", "rx7", "rx8", "rx9", "rx10", "rx11", "rx12", "rx13", "rx14", "rx15", "tx1", "tx2", "tx3", "tx4", "tx5", "tx6", "tx7", "tx8", "tx9", "tx10", "tx11", "tx12", "tx13", "tx14", "tx > 15"; > }; > ``` > > My understanding is therefore that `usb0` is in "otg" mode, and `usb1` > is in "host" mode. But that does not really tell me why `fastboot usb > 0` and `fastboot usb 1` failed. Yes. The U-Boot driver only supports host and peripheral modes, so no otg device is created. And fastboot cannot work with a USB host. > > I have also tried to edit `am335x-evm.dts` and set both to > "peripheral" (I do that in a Yocto patch step and make sure I `bitbake > -c cleansstate u-boot` and `bitbake -c clean <my-image>` before I > rebuild): > > ``` > &usb0 { > status = "okay"; > dr_mode = "peripheral"; > }; > > &usb1 { > status = "okay"; > dr_mode = "peripheral"; > }; > ``` > > But that does not change anything in the `fdt print` output: usb0 is > still "otg" and usb1 is still "host". Which makes me guess I may be > modifying the wrong `am335x-evm.dts`, but I really don't know how I > could check that. Does cleaning wipe your changes? There should be some yocto way to apply patches; perhaps someone else can comment on that. --Sean > > Again, any hints are appreciated, I'm happy to DuckDuckGo some new keywords or ideas as my goal is to learn about u-boot, but right now I'm just stuck :-). > > Best Regards, > Jonas > > On Sun, Mar 7, 2021 at 7:31 PM Jonas Vautherin <jonas.vautherin at gmail.com <mailto:jonas.vautherin@gmail.com>> wrote: > > Yes that was it! I had used `log help`, but misunderstood the output. My bad... Below is the debug output I receive, where I don't really get what's happening except for those two lines: > > ``` > uclass_find_device_by_seq() - 1 -1 'usb at 47401800' > uclass_find_device_by_seq() - not found > ``` > > But I don't really understand what it means. I spent a lot of time reading the available options in menuconfig, and at that point I cannot say what I am doing wrong. Note that I am using the `am335x_evm_defconfig` defconfig, which I changed to get more logging outputs. > > Here is the output of `usb start`, let me know if I am missing something obvious from there: > > ``` > => usb start > starting USB... > Bus usb at 47401800: __of_translate_address() OF: ** translation for device usb at 47401800 ** > __of_translate_address() OF: bus is default (na=1, ns=1) on usb at 47400000 > __of_translate_address() OF: parent bus is default (na=1, ns=1) on ocp > of_translate_one() OF: no ranges, 1:1 translation > of_translate_one() OF: with offset: 1195382784 > __of_translate_address() OF: parent bus is default (na=1, ns=1) on > of_translate_one() OF: no ranges, 1:1 translation > of_translate_one() OF: with offset: 1195382784 > __of_translate_address() OF: reached root node > fdtdec_lookup_phandle() fdtdec_lookup_phandle: phys > fdtdec_lookup_phandle() fdtdec_lookup_phandle: ti,ctrl_mod > fdtdec_get_addr_size_fixed() fdtdec_get_addr_size_fixed: reg: fdtdec_get_addr_size_fixed() addr=44e10620 > fdtdec_get_int() fdtdec_get_int: mentor,multipoint: fdtdec_get_int() 0x1 (1) > fdtdec_get_int() fdtdec_get_int: mentor,num-eps: fdtdec_get_int() 0x10 (16) > fdtdec_get_int() fdtdec_get_int: mentor,ram-bits: fdtdec_get_int() 0xc (12) > fdtdec_get_int() fdtdec_get_int: mentor,power: fdtdec_get_int() 0x1f4 (500) > uclass_find_device_by_seq() 0 1 > uclass_find_device_by_seq() - 1 -1 'usb at 47401800' > uclass_find_device_by_seq() - not found > clk_set_defaults() clk_set_defaults(usb at 47401800) > clk_set_default_parents() clk_set_default_parents: could not read assigned-clock-parents for 9df24d30 > ofnode_read_prop() ofnode_read_prop: assigned-clock-rates: ofnode_read_prop() <not found> > musb_core_init() musb-hdrc: hw_ep 0shared, max 64 > musb_core_init() musb-hdrc: hw_ep 1tx, max 512 > musb_core_init() musb-hdrc: hw_ep 1rx, max 512 > musb_core_init() musb-hdrc: hw_ep 2tx, max 512 > musb_core_init() musb-hdrc: hw_ep 2rx, max 512 > musb_core_init() musb-hdrc: hw_ep 3tx, max 512 > musb_core_init() musb-hdrc: hw_ep 3rx, max 512 > musb_core_init() musb-hdrc: hw_ep 4tx, max 512 > musb_core_init() musb-hdrc: hw_ep 4rx, max 512 > musb_core_init() musb-hdrc: hw_ep 5tx, max 512 > musb_core_init() musb-hdrc: hw_ep 5rx, max 512 > musb_core_init() musb-hdrc: hw_ep 6tx, max 512 > musb_core_init() musb-hdrc: hw_ep 6rx, max 512 > musb_core_init() musb-hdrc: hw_ep 7tx, max 512 > musb_core_init() musb-hdrc: hw_ep 7rx, max 512 > musb_core_init() musb-hdrc: hw_ep 8tx, max 512 > musb_core_init() musb-hdrc: hw_ep 8rx, max 512 > musb_core_init() musb-hdrc: hw_ep 9tx, max 512 > musb_core_init() musb-hdrc: hw_ep 9rx, max 512 > musb_core_init() musb-hdrc: hw_ep 10tx, max 256 > musb_core_init() musb-hdrc: hw_ep 10rx, max 64 > musb_core_init() musb-hdrc: hw_ep 11tx, max 256 > musb_core_init() musb-hdrc: hw_ep 11rx, max 64 > musb_core_init() musb-hdrc: hw_ep 12tx, max 256 > musb_core_init() musb-hdrc: hw_ep 12rx, max 64 > musb_core_init() musb-hdrc: hw_ep 13shared, max 4096 > musb_core_init() musb-hdrc: hw_ep 14shared, max 1024 > musb_core_init() musb-hdrc: hw_ep 15shared, max 1024 > musb_start() <== devctl 80 > musb_stop() HDRC disabled > Port not available. > usb_init() scan end > ``` > > Best, > > On Sun, Mar 7, 2021 at 3:04 AM Sean Anderson <seanga2 at gmail.com <mailto:seanga2@gmail.com>> wrote: > > On 3/6/21 8:38 PM, Jonas Vautherin wrote: > > Thanks a lot Sean! > > > > I tried to enable logging by using the following CONFIG_: > > > > ``` > > CONFIG_LOG=y > > CONFIG_SPL_LOG=y > > CONFIG_TPL_LOG=y > > CONFIG_LOG_MAX_LEVEL=5 > > You need to increase this. Log levels are only compiled-in if they are > less than the max log level. > > > CONFIG_SPL_LOG_MAX_LEVEL=3 > > CONFIG_TPL_LOG_MAX_LEVEL=3 > > CONFIG_LOG_DEFAULT_LEVEL=7 > > CONFIG_LOG_CONSOLE=y > > CONFIG_SPL_LOG_CONSOLE=y > > CONFIG_TPL_LOG_CONSOLE=y > > > > CONFIG_CMD_LOG=y > > ``` > > > > And I got the "log" function indeed. But it did not have the effect I was hoping for: > > > > ``` > > => log level set 7 > > Use the help function ;) > > The correct syntax is "log level 7" > > If you use a newer U-Boot (newer than 2021.01) then the output will be > more verbose. E.g. > > => log level > EMERG > ALERT > CRIT > ERR > WARNING > NOTICE > INFO (default) > DEBUG > > --Sean > > > => log level > > Default log level: 0 > > => usb start > > starting USB... > > Bus usb at 47401800: Port not available. > > ``` > > > > First, I don't get why it says "Default log level: 0" after I set it (to whatever number, apparently). And second, it does not seem to bring me more output about the usb issue :-/. > > > > Am I missing something? > > > > Best, > > Jonas > > > > On Sat, Mar 6, 2021 at 3:20 AM Sean Anderson <seanga2 at gmail.com <mailto:seanga2@gmail.com> <mailto:seanga2 at gmail.com <mailto:seanga2@gmail.com>>> wrote: > > > > 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 > > > > > > ^ permalink raw reply [flat|nested] 9+ messages in thread
* Fastboot 2021-03-10 23:44 ` Fastboot Sean Anderson @ 2021-03-11 0:56 ` Jonas Vautherin 2021-03-13 0:15 ` Fastboot Jonas Vautherin 0 siblings, 1 reply; 9+ messages in thread From: Jonas Vautherin @ 2021-03-11 0:56 UTC (permalink / raw) To: u-boot Thanks a lot, Sean! From you answer, it seems like what I am trying to do (i.e. applying that patch to am335x.dts to set dr_mode to "peripheral") makes sense, though for some reason it does not get applied. I have been careful in checking that the dts file disappears after I cleansstate u-boot, and that it gets patched in the do_patch step. I have also checked that u-boot.img disappears from the deploy folder when I cleansstate, and gets rebuilt after the patch is applied. And finally, I have made sure that the cleansstate on my image removed it from the deploy folder. Moreover, I have `find build | grep am335x.dts` to check if I was patching the right file (which should be ensured by the fact that I patch it in the bbappend of the u-boot recipe). My fear is that for some reason, it does not use am335x.dts to build the device tree but something else entirely, which would mean that I am patching something that is not used. From u-boot.img, or ideally even from my final image I flash on the sdcard, is there a way for me to see what is used to define the device tree? Best, On Thu, 11 Mar 2021, 00:44 Sean Anderson, <seanga2@gmail.com> wrote: > On 3/10/21 12:43 PM, Jonas Vautherin wrote: > > Hello! > > > > I've made some more tests, but I am stuck and I don't really know what > > I am missing. Would love to get some insights, if somebody has an idea > > :-). So my root problem is that I would like to run my pocketbeagle in > > fastboot mode so that I can flash an image from my laptop over USB > > (it's a learning experience, I'm new to u-boot). > > > > When I go into the u-boot prompt and run `fastboot usb 0` (after I set > > `log level 7`), I get: > > > > ``` > > => fastboot usb 0 > > uclass_find_device_by_seq() 0 0 > > uclass_find_device_by_seq() - not found > > uclass_find_device_by_seq() 1 0 > > uclass_find_device_by_seq() - not found > > cmd_call() Command failed, result=1 > > ``` > > > > Similar for `fastboot usb 1` (I don't know which one is the microB on > > the pocketbeagle), except the numbers are `0 1` and `1 1` in the log > > output. > > The numbers come from /aliases in the device tree. You should read the > datasheet/schematic to figure out which is which :) > > > > > If I `dm tree`, for some reason I see only usb1 at 47401800 (according to > > the `.dts`, usb0 is @47401000). > > > > ``` > > misc 0 [ + ] ti-musb-wrapper `-- usb at 47400000 > > usb 0 [ ] ti-musb-host `-- usb at 47401800 > > ``` > > > > Looking at the defconfig (I use Yocto, so `bitbake -c menuconfig > > u-boot), I see that "Default Device Tree for DT control" is > > (am335x-evm). Opening > > > ./build/tmp/work/pocketbeagle-poky-linux-gnueabi/u-boot/1_2020.07-r0/git/arch/arm/dts/am335x-evm.dts > > (which I believe is the one corresponding to `am335x-evm` in my > > defconfig), I see the following for usb: > > > > ``` > > &usb { > > status = "okay"; > > }; > > > > &usb_ctrl_mod { > > status = "okay"; > > }; > > > > &usb0_phy { > > status = "okay"; > > }; > > > > &usb1_phy { > > status = "okay"; > > }; > > > > &usb0 { > > status = "okay"; > > }; > > > > &usb1 { > > status = "okay"; > > dr_mode = "host"; > > }; > > ``` > > > > And showing usb0 and usb1 with `fdt print` (after I get the value of > > $fdt_blob with `bdinfo` and use it with `fdt addr $fdt_blob`), I get: > > > > ``` > > => fdt print /ocp/usb at 47400000/usb at 47401000 > > usb at 47401000 { > > compatible = "ti,musb-am33xx"; > > status = "okay"; > > reg = <0x47401400 0x00000400 0x47401000 0x00000200>; > > reg-names = "mc", "control"; > > interrupts = <0x00000012>; > > interrupt-names = "mc"; > > dr_mode = "otg"; > > mentor,multipoint = <0x00000001>; > > mentor,num-eps = <0x00000010>; > > mentor,ram-bits = <0x0000000c>; > > mentor,power = <0x000001f4>; > > phys = <0x00000037>; > > dmas = * 0x9df20aa8 [0x00000168]; > > dma-names = "rx1", "rx2", "rx3", "rx4", "rx5", "rx6", "rx7", > "rx8", "rx > > 9", "rx10", "rx11", "rx12", "rx13", "rx14", "rx15", "tx1", "tx2", "tx3", > "tx4", "tx5", "tx6", "tx7", "tx8", "tx9", "tx10", "tx11", "tx12", "tx13", > "tx14", "tx15"; > > }; > > ``` > > > > and > > > > ``` > > => fdt print /ocp/usb at 47400000/usb at 47401800 > > usb at 47401800 { > > compatible = "ti,musb-am33xx"; > > status = "okay"; > > reg = <0x47401c00 0x00000400 0x47401800 0x00000200>; > > reg-names = "mc", "control"; > > interrupts = <0x00000013>; > > interrupt-names = "mc"; > > dr_mode = "host"; > > mentor,multipoint = <0x00000001>; > > mentor,num-eps = <0x00000010>; > > mentor,ram-bits = <0x0000000c>; > > mentor,power = <0x000001f4>; > > phys = <0x00000039>; > > dmas = * 0x9df20e50 [0x00000168]; > > dma-names = "rx1", "rx2", "rx3", "rx4", "rx5", "rx6", "rx7", > "rx8", "rx9", "rx10", "rx11", "rx12", "rx13", "rx14", "rx15", "tx1", "tx2", > "tx3", "tx4", "tx5", "tx6", "tx7", "tx8", "tx9", "tx10", "tx11", "tx12", > "tx13", "tx14", "tx > > 15"; > > }; > > ``` > > > > My understanding is therefore that `usb0` is in "otg" mode, and `usb1` > > is in "host" mode. But that does not really tell me why `fastboot usb > > 0` and `fastboot usb 1` failed. > > Yes. The U-Boot driver only supports host and peripheral modes, so no > otg device is created. And fastboot cannot work with a USB host. > > > > > I have also tried to edit `am335x-evm.dts` and set both to > > "peripheral" (I do that in a Yocto patch step and make sure I `bitbake > > -c cleansstate u-boot` and `bitbake -c clean <my-image>` before I > > rebuild): > > > > ``` > > &usb0 { > > status = "okay"; > > dr_mode = "peripheral"; > > }; > > > > &usb1 { > > status = "okay"; > > dr_mode = "peripheral"; > > }; > > ``` > > > > But that does not change anything in the `fdt print` output: usb0 is > > still "otg" and usb1 is still "host". Which makes me guess I may be > > modifying the wrong `am335x-evm.dts`, but I really don't know how I > > could check that. > > Does cleaning wipe your changes? There should be some yocto way to apply > patches; perhaps someone else can comment on that. > > --Sean > > > > > Again, any hints are appreciated, I'm happy to DuckDuckGo some new > keywords or ideas as my goal is to learn about u-boot, but right now I'm > just stuck :-). > > > > Best Regards, > > Jonas > > > > On Sun, Mar 7, 2021 at 7:31 PM Jonas Vautherin < > jonas.vautherin at gmail.com <mailto:jonas.vautherin@gmail.com>> wrote: > > > > Yes that was it! I had used `log help`, but misunderstood the > output. My bad... Below is the debug output I receive, where I don't really > get what's happening except for those two lines: > > > > ``` > > uclass_find_device_by_seq() - 1 -1 'usb at 47401800' > > uclass_find_device_by_seq() - not found > > ``` > > > > But I don't really understand what it means. I spent a lot of time > reading the available options in menuconfig, and at that point I cannot say > what I am doing wrong. Note that I am using the `am335x_evm_defconfig` > defconfig, which I changed to get more logging outputs. > > > > Here is the output of `usb start`, let me know if I am missing > something obvious from there: > > > > ``` > > => usb start > > starting USB... > > Bus usb at 47401800: __of_translate_address() OF: ** translation for > device usb at 47401800 ** > > __of_translate_address() OF: bus is default (na=1, ns=1) on > usb at 47400000 > > __of_translate_address() OF: parent bus is default (na=1, ns=1) on > ocp > > of_translate_one() OF: no ranges, 1:1 translation > > of_translate_one() OF: with offset: 1195382784 > > __of_translate_address() OF: parent bus is default (na=1, ns=1) on > > of_translate_one() OF: no ranges, 1:1 translation > > of_translate_one() OF: with offset: 1195382784 > > __of_translate_address() OF: reached root node > > fdtdec_lookup_phandle() fdtdec_lookup_phandle: phys > > fdtdec_lookup_phandle() fdtdec_lookup_phandle: ti,ctrl_mod > > fdtdec_get_addr_size_fixed() fdtdec_get_addr_size_fixed: reg: > fdtdec_get_addr_size_fixed() addr=44e10620 > > fdtdec_get_int() fdtdec_get_int: mentor,multipoint: fdtdec_get_int() > 0x1 (1) > > fdtdec_get_int() fdtdec_get_int: mentor,num-eps: fdtdec_get_int() > 0x10 (16) > > fdtdec_get_int() fdtdec_get_int: mentor,ram-bits: fdtdec_get_int() > 0xc (12) > > fdtdec_get_int() fdtdec_get_int: mentor,power: fdtdec_get_int() > 0x1f4 (500) > > uclass_find_device_by_seq() 0 1 > > uclass_find_device_by_seq() - 1 -1 'usb at 47401800' > > uclass_find_device_by_seq() - not found > > clk_set_defaults() clk_set_defaults(usb at 47401800) > > clk_set_default_parents() clk_set_default_parents: could not read > assigned-clock-parents for 9df24d30 > > ofnode_read_prop() ofnode_read_prop: assigned-clock-rates: > ofnode_read_prop() <not found> > > musb_core_init() musb-hdrc: hw_ep 0shared, max 64 > > musb_core_init() musb-hdrc: hw_ep 1tx, max 512 > > musb_core_init() musb-hdrc: hw_ep 1rx, max 512 > > musb_core_init() musb-hdrc: hw_ep 2tx, max 512 > > musb_core_init() musb-hdrc: hw_ep 2rx, max 512 > > musb_core_init() musb-hdrc: hw_ep 3tx, max 512 > > musb_core_init() musb-hdrc: hw_ep 3rx, max 512 > > musb_core_init() musb-hdrc: hw_ep 4tx, max 512 > > musb_core_init() musb-hdrc: hw_ep 4rx, max 512 > > musb_core_init() musb-hdrc: hw_ep 5tx, max 512 > > musb_core_init() musb-hdrc: hw_ep 5rx, max 512 > > musb_core_init() musb-hdrc: hw_ep 6tx, max 512 > > musb_core_init() musb-hdrc: hw_ep 6rx, max 512 > > musb_core_init() musb-hdrc: hw_ep 7tx, max 512 > > musb_core_init() musb-hdrc: hw_ep 7rx, max 512 > > musb_core_init() musb-hdrc: hw_ep 8tx, max 512 > > musb_core_init() musb-hdrc: hw_ep 8rx, max 512 > > musb_core_init() musb-hdrc: hw_ep 9tx, max 512 > > musb_core_init() musb-hdrc: hw_ep 9rx, max 512 > > musb_core_init() musb-hdrc: hw_ep 10tx, max 256 > > musb_core_init() musb-hdrc: hw_ep 10rx, max 64 > > musb_core_init() musb-hdrc: hw_ep 11tx, max 256 > > musb_core_init() musb-hdrc: hw_ep 11rx, max 64 > > musb_core_init() musb-hdrc: hw_ep 12tx, max 256 > > musb_core_init() musb-hdrc: hw_ep 12rx, max 64 > > musb_core_init() musb-hdrc: hw_ep 13shared, max 4096 > > musb_core_init() musb-hdrc: hw_ep 14shared, max 1024 > > musb_core_init() musb-hdrc: hw_ep 15shared, max 1024 > > musb_start() <== devctl 80 > > musb_stop() HDRC disabled > > Port not available. > > usb_init() scan end > > ``` > > > > Best, > > > > On Sun, Mar 7, 2021 at 3:04 AM Sean Anderson <seanga2@gmail.com > <mailto:seanga2@gmail.com>> wrote: > > > > On 3/6/21 8:38 PM, Jonas Vautherin wrote: > > > Thanks a lot Sean! > > > > > > I tried to enable logging by using the following CONFIG_: > > > > > > ``` > > > CONFIG_LOG=y > > > CONFIG_SPL_LOG=y > > > CONFIG_TPL_LOG=y > > > CONFIG_LOG_MAX_LEVEL=5 > > > > You need to increase this. Log levels are only compiled-in if > they are > > less than the max log level. > > > > > CONFIG_SPL_LOG_MAX_LEVEL=3 > > > CONFIG_TPL_LOG_MAX_LEVEL=3 > > > CONFIG_LOG_DEFAULT_LEVEL=7 > > > CONFIG_LOG_CONSOLE=y > > > CONFIG_SPL_LOG_CONSOLE=y > > > CONFIG_TPL_LOG_CONSOLE=y > > > > > > CONFIG_CMD_LOG=y > > > ``` > > > > > > And I got the "log" function indeed. But it did not have the > effect I was hoping for: > > > > > > ``` > > > => log level set 7 > > > > Use the help function ;) > > > > The correct syntax is "log level 7" > > > > If you use a newer U-Boot (newer than 2021.01) then the output > will be > > more verbose. E.g. > > > > => log level > > EMERG > > ALERT > > CRIT > > ERR > > WARNING > > NOTICE > > INFO (default) > > DEBUG > > > > --Sean > > > > > => log level > > > Default log level: 0 > > > => usb start > > > starting USB... > > > Bus usb at 47401800: Port not available. > > > ``` > > > > > > First, I don't get why it says "Default log level: 0" after I > set it (to whatever number, apparently). And second, it does not seem to > bring me more output about the usb issue :-/. > > > > > > Am I missing something? > > > > > > Best, > > > Jonas > > > > > > On Sat, Mar 6, 2021 at 3:20 AM Sean Anderson < > seanga2 at gmail.com <mailto:seanga2@gmail.com> <mailto:seanga2@gmail.com > <mailto:seanga2@gmail.com>>> wrote: > > > > > > 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 > > > > > > > > > > > ^ permalink raw reply [flat|nested] 9+ messages in thread
* Fastboot 2021-03-11 0:56 ` Fastboot Jonas Vautherin @ 2021-03-13 0:15 ` Jonas Vautherin 0 siblings, 0 replies; 9+ messages in thread From: Jonas Vautherin @ 2021-03-13 0:15 UTC (permalink / raw) To: u-boot Finally made it work! I was editing the wrong file: am335x-evm.dts instead of am335x-pocketbeagle.dts. Because in the defconfig, "am335x-evm" was defined as the "default", I thought it would boot there. But there is apparently a mechanism that makes it choose am335x-pocketbeagle.dts instead. I applied the following patch and it just worked: ``` diff --git a/arch/arm/dts/am335x-pocketbeagle.dts b/arch/arm/dts/am335x-pocketbeagle.dts index 62fe5cab9f..3ba1c9c950 100644 --- a/arch/arm/dts/am335x-pocketbeagle.dts +++ b/arch/arm/dts/am335x-pocketbeagle.dts @@ -220,7 +220,7 @@ &usb0 { status = "okay"; - dr_mode = "otg"; + dr_mode = "peripheral"; }; &usb1_phy { ``` I struggled with it, but that was a learning experience. Thanks a lot for the help! On Thu, Mar 11, 2021 at 1:56 AM Jonas Vautherin <jonas.vautherin@gmail.com> wrote: > Thanks a lot, Sean! > > From you answer, it seems like what I am trying to do (i.e. applying that > patch to am335x.dts to set dr_mode to "peripheral") makes sense, though for > some reason it does not get applied. > > I have been careful in checking that the dts file disappears after I > cleansstate u-boot, and that it gets patched in the do_patch step. I have > also checked that u-boot.img disappears from the deploy folder when I > cleansstate, and gets rebuilt after the patch is applied. And finally, I > have made sure that the cleansstate on my image removed it from the deploy > folder. > > Moreover, I have `find build | grep am335x.dts` to check if I was patching > the right file (which should be ensured by the fact that I patch it in the > bbappend of the u-boot recipe). > > My fear is that for some reason, it does not use am335x.dts to build the > device tree but something else entirely, which would mean that I am > patching something that is not used. > > From u-boot.img, or ideally even from my final image I flash on the > sdcard, is there a way for me to see what is used to define the device tree? > > Best, > > On Thu, 11 Mar 2021, 00:44 Sean Anderson, <seanga2@gmail.com> wrote: > >> On 3/10/21 12:43 PM, Jonas Vautherin wrote: >> > Hello! >> > >> > I've made some more tests, but I am stuck and I don't really know what >> > I am missing. Would love to get some insights, if somebody has an idea >> > :-). So my root problem is that I would like to run my pocketbeagle in >> > fastboot mode so that I can flash an image from my laptop over USB >> > (it's a learning experience, I'm new to u-boot). >> > >> > When I go into the u-boot prompt and run `fastboot usb 0` (after I set >> > `log level 7`), I get: >> > >> > ``` >> > => fastboot usb 0 >> > uclass_find_device_by_seq() 0 0 >> > uclass_find_device_by_seq() - not found >> > uclass_find_device_by_seq() 1 0 >> > uclass_find_device_by_seq() - not found >> > cmd_call() Command failed, result=1 >> > ``` >> > >> > Similar for `fastboot usb 1` (I don't know which one is the microB on >> > the pocketbeagle), except the numbers are `0 1` and `1 1` in the log >> > output. >> >> The numbers come from /aliases in the device tree. You should read the >> datasheet/schematic to figure out which is which :) >> >> > >> > If I `dm tree`, for some reason I see only usb1 at 47401800 (according to >> > the `.dts`, usb0 is @47401000). >> > >> > ``` >> > misc 0 [ + ] ti-musb-wrapper `-- usb at 47400000 >> > usb 0 [ ] ti-musb-host `-- >> usb at 47401800 >> > ``` >> > >> > Looking at the defconfig (I use Yocto, so `bitbake -c menuconfig >> > u-boot), I see that "Default Device Tree for DT control" is >> > (am335x-evm). Opening >> > >> ./build/tmp/work/pocketbeagle-poky-linux-gnueabi/u-boot/1_2020.07-r0/git/arch/arm/dts/am335x-evm.dts >> > (which I believe is the one corresponding to `am335x-evm` in my >> > defconfig), I see the following for usb: >> > >> > ``` >> > &usb { >> > status = "okay"; >> > }; >> > >> > &usb_ctrl_mod { >> > status = "okay"; >> > }; >> > >> > &usb0_phy { >> > status = "okay"; >> > }; >> > >> > &usb1_phy { >> > status = "okay"; >> > }; >> > >> > &usb0 { >> > status = "okay"; >> > }; >> > >> > &usb1 { >> > status = "okay"; >> > dr_mode = "host"; >> > }; >> > ``` >> > >> > And showing usb0 and usb1 with `fdt print` (after I get the value of >> > $fdt_blob with `bdinfo` and use it with `fdt addr $fdt_blob`), I get: >> > >> > ``` >> > => fdt print /ocp/usb at 47400000/usb at 47401000 >> > usb at 47401000 { >> > compatible = "ti,musb-am33xx"; >> > status = "okay"; >> > reg = <0x47401400 0x00000400 0x47401000 0x00000200>; >> > reg-names = "mc", "control"; >> > interrupts = <0x00000012>; >> > interrupt-names = "mc"; >> > dr_mode = "otg"; >> > mentor,multipoint = <0x00000001>; >> > mentor,num-eps = <0x00000010>; >> > mentor,ram-bits = <0x0000000c>; >> > mentor,power = <0x000001f4>; >> > phys = <0x00000037>; >> > dmas = * 0x9df20aa8 [0x00000168]; >> > dma-names = "rx1", "rx2", "rx3", "rx4", "rx5", "rx6", "rx7", >> "rx8", "rx >> > 9", "rx10", "rx11", "rx12", "rx13", "rx14", "rx15", "tx1", "tx2", >> "tx3", "tx4", "tx5", "tx6", "tx7", "tx8", "tx9", "tx10", "tx11", "tx12", >> "tx13", "tx14", "tx15"; >> > }; >> > ``` >> > >> > and >> > >> > ``` >> > => fdt print /ocp/usb at 47400000/usb at 47401800 >> > usb at 47401800 { >> > compatible = "ti,musb-am33xx"; >> > status = "okay"; >> > reg = <0x47401c00 0x00000400 0x47401800 0x00000200>; >> > reg-names = "mc", "control"; >> > interrupts = <0x00000013>; >> > interrupt-names = "mc"; >> > dr_mode = "host"; >> > mentor,multipoint = <0x00000001>; >> > mentor,num-eps = <0x00000010>; >> > mentor,ram-bits = <0x0000000c>; >> > mentor,power = <0x000001f4>; >> > phys = <0x00000039>; >> > dmas = * 0x9df20e50 [0x00000168]; >> > dma-names = "rx1", "rx2", "rx3", "rx4", "rx5", "rx6", "rx7", >> "rx8", "rx9", "rx10", "rx11", "rx12", "rx13", "rx14", "rx15", "tx1", "tx2", >> "tx3", "tx4", "tx5", "tx6", "tx7", "tx8", "tx9", "tx10", "tx11", "tx12", >> "tx13", "tx14", "tx >> > 15"; >> > }; >> > ``` >> > >> > My understanding is therefore that `usb0` is in "otg" mode, and `usb1` >> > is in "host" mode. But that does not really tell me why `fastboot usb >> > 0` and `fastboot usb 1` failed. >> >> Yes. The U-Boot driver only supports host and peripheral modes, so no >> otg device is created. And fastboot cannot work with a USB host. >> >> > >> > I have also tried to edit `am335x-evm.dts` and set both to >> > "peripheral" (I do that in a Yocto patch step and make sure I `bitbake >> > -c cleansstate u-boot` and `bitbake -c clean <my-image>` before I >> > rebuild): >> > >> > ``` >> > &usb0 { >> > status = "okay"; >> > dr_mode = "peripheral"; >> > }; >> > >> > &usb1 { >> > status = "okay"; >> > dr_mode = "peripheral"; >> > }; >> > ``` >> > >> > But that does not change anything in the `fdt print` output: usb0 is >> > still "otg" and usb1 is still "host". Which makes me guess I may be >> > modifying the wrong `am335x-evm.dts`, but I really don't know how I >> > could check that. >> >> Does cleaning wipe your changes? There should be some yocto way to apply >> patches; perhaps someone else can comment on that. >> >> --Sean >> >> > >> > Again, any hints are appreciated, I'm happy to DuckDuckGo some new >> keywords or ideas as my goal is to learn about u-boot, but right now I'm >> just stuck :-). >> > >> > Best Regards, >> > Jonas >> > >> > On Sun, Mar 7, 2021 at 7:31 PM Jonas Vautherin < >> jonas.vautherin at gmail.com <mailto:jonas.vautherin@gmail.com>> wrote: >> > >> > Yes that was it! I had used `log help`, but misunderstood the >> output. My bad... Below is the debug output I receive, where I don't really >> get what's happening except for those two lines: >> > >> > ``` >> > uclass_find_device_by_seq() - 1 -1 'usb at 47401800' >> > uclass_find_device_by_seq() - not found >> > ``` >> > >> > But I don't really understand what it means. I spent a lot of time >> reading the available options in menuconfig, and at that point I cannot say >> what I am doing wrong. Note that I am using the `am335x_evm_defconfig` >> defconfig, which I changed to get more logging outputs. >> > >> > Here is the output of `usb start`, let me know if I am missing >> something obvious from there: >> > >> > ``` >> > => usb start >> > starting USB... >> > Bus usb at 47401800: __of_translate_address() OF: ** translation for >> device usb at 47401800 ** >> > __of_translate_address() OF: bus is default (na=1, ns=1) on >> usb at 47400000 >> > __of_translate_address() OF: parent bus is default (na=1, ns=1) on >> ocp >> > of_translate_one() OF: no ranges, 1:1 translation >> > of_translate_one() OF: with offset: 1195382784 >> > __of_translate_address() OF: parent bus is default (na=1, ns=1) on >> > of_translate_one() OF: no ranges, 1:1 translation >> > of_translate_one() OF: with offset: 1195382784 >> > __of_translate_address() OF: reached root node >> > fdtdec_lookup_phandle() fdtdec_lookup_phandle: phys >> > fdtdec_lookup_phandle() fdtdec_lookup_phandle: ti,ctrl_mod >> > fdtdec_get_addr_size_fixed() fdtdec_get_addr_size_fixed: reg: >> fdtdec_get_addr_size_fixed() addr=44e10620 >> > fdtdec_get_int() fdtdec_get_int: mentor,multipoint: >> fdtdec_get_int() 0x1 (1) >> > fdtdec_get_int() fdtdec_get_int: mentor,num-eps: fdtdec_get_int() >> 0x10 (16) >> > fdtdec_get_int() fdtdec_get_int: mentor,ram-bits: fdtdec_get_int() >> 0xc (12) >> > fdtdec_get_int() fdtdec_get_int: mentor,power: fdtdec_get_int() >> 0x1f4 (500) >> > uclass_find_device_by_seq() 0 1 >> > uclass_find_device_by_seq() - 1 -1 'usb at 47401800' >> > uclass_find_device_by_seq() - not found >> > clk_set_defaults() clk_set_defaults(usb at 47401800) >> > clk_set_default_parents() clk_set_default_parents: could not read >> assigned-clock-parents for 9df24d30 >> > ofnode_read_prop() ofnode_read_prop: assigned-clock-rates: >> ofnode_read_prop() <not found> >> > musb_core_init() musb-hdrc: hw_ep 0shared, max 64 >> > musb_core_init() musb-hdrc: hw_ep 1tx, max 512 >> > musb_core_init() musb-hdrc: hw_ep 1rx, max 512 >> > musb_core_init() musb-hdrc: hw_ep 2tx, max 512 >> > musb_core_init() musb-hdrc: hw_ep 2rx, max 512 >> > musb_core_init() musb-hdrc: hw_ep 3tx, max 512 >> > musb_core_init() musb-hdrc: hw_ep 3rx, max 512 >> > musb_core_init() musb-hdrc: hw_ep 4tx, max 512 >> > musb_core_init() musb-hdrc: hw_ep 4rx, max 512 >> > musb_core_init() musb-hdrc: hw_ep 5tx, max 512 >> > musb_core_init() musb-hdrc: hw_ep 5rx, max 512 >> > musb_core_init() musb-hdrc: hw_ep 6tx, max 512 >> > musb_core_init() musb-hdrc: hw_ep 6rx, max 512 >> > musb_core_init() musb-hdrc: hw_ep 7tx, max 512 >> > musb_core_init() musb-hdrc: hw_ep 7rx, max 512 >> > musb_core_init() musb-hdrc: hw_ep 8tx, max 512 >> > musb_core_init() musb-hdrc: hw_ep 8rx, max 512 >> > musb_core_init() musb-hdrc: hw_ep 9tx, max 512 >> > musb_core_init() musb-hdrc: hw_ep 9rx, max 512 >> > musb_core_init() musb-hdrc: hw_ep 10tx, max 256 >> > musb_core_init() musb-hdrc: hw_ep 10rx, max 64 >> > musb_core_init() musb-hdrc: hw_ep 11tx, max 256 >> > musb_core_init() musb-hdrc: hw_ep 11rx, max 64 >> > musb_core_init() musb-hdrc: hw_ep 12tx, max 256 >> > musb_core_init() musb-hdrc: hw_ep 12rx, max 64 >> > musb_core_init() musb-hdrc: hw_ep 13shared, max 4096 >> > musb_core_init() musb-hdrc: hw_ep 14shared, max 1024 >> > musb_core_init() musb-hdrc: hw_ep 15shared, max 1024 >> > musb_start() <== devctl 80 >> > musb_stop() HDRC disabled >> > Port not available. >> > usb_init() scan end >> > ``` >> > >> > Best, >> > >> > On Sun, Mar 7, 2021 at 3:04 AM Sean Anderson <seanga2@gmail.com >> <mailto:seanga2@gmail.com>> wrote: >> > >> > On 3/6/21 8:38 PM, Jonas Vautherin wrote: >> > > Thanks a lot Sean! >> > > >> > > I tried to enable logging by using the following CONFIG_: >> > > >> > > ``` >> > > CONFIG_LOG=y >> > > CONFIG_SPL_LOG=y >> > > CONFIG_TPL_LOG=y >> > > CONFIG_LOG_MAX_LEVEL=5 >> > >> > You need to increase this. Log levels are only compiled-in if >> they are >> > less than the max log level. >> > >> > > CONFIG_SPL_LOG_MAX_LEVEL=3 >> > > CONFIG_TPL_LOG_MAX_LEVEL=3 >> > > CONFIG_LOG_DEFAULT_LEVEL=7 >> > > CONFIG_LOG_CONSOLE=y >> > > CONFIG_SPL_LOG_CONSOLE=y >> > > CONFIG_TPL_LOG_CONSOLE=y >> > > >> > > CONFIG_CMD_LOG=y >> > > ``` >> > > >> > > And I got the "log" function indeed. But it did not have the >> effect I was hoping for: >> > > >> > > ``` >> > > => log level set 7 >> > >> > Use the help function ;) >> > >> > The correct syntax is "log level 7" >> > >> > If you use a newer U-Boot (newer than 2021.01) then the output >> will be >> > more verbose. E.g. >> > >> > => log level >> > EMERG >> > ALERT >> > CRIT >> > ERR >> > WARNING >> > NOTICE >> > INFO (default) >> > DEBUG >> > >> > --Sean >> > >> > > => log level >> > > Default log level: 0 >> > > => usb start >> > > starting USB... >> > > Bus usb at 47401800: Port not available. >> > > ``` >> > > >> > > First, I don't get why it says "Default log level: 0" after >> I set it (to whatever number, apparently). And second, it does not seem to >> bring me more output about the usb issue :-/. >> > > >> > > Am I missing something? >> > > >> > > Best, >> > > Jonas >> > > >> > > On Sat, Mar 6, 2021 at 3:20 AM Sean Anderson < >> seanga2 at gmail.com <mailto:seanga2@gmail.com> <mailto:seanga2@gmail.com >> <mailto:seanga2@gmail.com>>> wrote: >> > > >> > > 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 >> > > > >> > > >> > >> >> ^ permalink raw reply related [flat|nested] 9+ messages in thread
end of thread, other threads:[~2021-03-13 0:15 UTC | newest] Thread overview: 9+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2021-03-06 0:10 Fastboot Jonas Vautherin 2021-03-06 2:20 ` Fastboot Sean Anderson 2021-03-07 1:38 ` Fastboot Jonas Vautherin 2021-03-07 2:04 ` Fastboot Sean Anderson 2021-03-07 18:31 ` Fastboot Jonas Vautherin 2021-03-10 17:43 ` Fastboot Jonas Vautherin 2021-03-10 23:44 ` Fastboot Sean Anderson 2021-03-11 0:56 ` Fastboot Jonas Vautherin 2021-03-13 0:15 ` Fastboot Jonas Vautherin
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox