All of lore.kernel.org
 help / color / mirror / Atom feed
* Fastboot
@ 2021-03-06  0:10 Jonas Vautherin
  2021-03-06  2:20 ` Fastboot Sean Anderson
  0 siblings, 1 reply; 12+ 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] 12+ 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; 12+ 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] 12+ 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; 12+ 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] 12+ 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; 12+ 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] 12+ 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; 12+ 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] 12+ 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; 12+ 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] 12+ 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; 12+ 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] 12+ 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; 12+ 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] 12+ messages in thread

* Fastboot
  2021-03-11  0:56             ` Fastboot Jonas Vautherin
@ 2021-03-13  0:15               ` Jonas Vautherin
  0 siblings, 0 replies; 12+ 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] 12+ messages in thread

* Re: fastboot.
  2009-05-29 20:30 ` fastboot John Rigby
@ 2009-05-29 20:45   ` John Rigby
  0 siblings, 0 replies; 12+ messages in thread
From: John Rigby @ 2009-05-29 20:45 UTC (permalink / raw)
  To: Kenneth Johansson; +Cc: linuxppc-dev

[-- Attachment #1: Type: text/plain, Size: 2551 bytes --]

One more thing.  You can get another speed up if you can do burst reads from
NOR.  This requires using the fifo in the local bus controller.  On the
ADS5121 board you need a cpld change to increment the address lines.  With
the cpld as shipped you end up reading bursts that have the first 4 bytes
repeated because the address lines do not increment.  I don't know if this
is feature or bug with the 5121 but I do know you can work around it in the
cpld.

With burst access working you should be able to speed up the kernel copy and
also the jffs2 mount and filesystem access.

I also found that coping an uncompressed kernel was faster than
decompressing a compressed kernel.  But your mileage may vary if you have
the data cache on.  I found that working around all the problems with
turning data cache on were going to take more time than I had.

John

On Fri, May 29, 2009 at 2:30 PM, John Rigby <jcrigby@gmail.com> wrote:

> Kenneth,
>
> I did some fastboot work for 5121 a few months ago.  U-boot, kernel and
> JFFS2 rootfs in NOR.  My reset to userland time was 2.0 seconds, where
> userland was first command executed in first rc.whatever file, so it
> included the time for /sbin/init to get up and start running the rc scripts.
>
> I did some profiling and noticed that the JFFS2 boot time was a significant
> hunk (not just the first time but everytime).  I ran sumtool on the JFFS2
> image and it dropped 600 ms from the boot time so my final time was 1.4
> seconds.  The sumtool program has been around for a few years but it was
> news to mean when I found it.
>
> John
>
>
> On Fri, May 29, 2009 at 5:13 AM, Kenneth Johansson <kenneth@southpole.se>wrote:
>
>> http://www.cambridgewireless.co.uk/news/article/default.aspx?objid=36792
>>
>> Anybody know what they mean by booting here.
>>
>> I have started the ads5121 board using u-boot and kernel in NOR flash
>> and root file system on a compact flash card connected to the IDE
>> interface in 2.05 second until init is started from the rootfs.
>>
>> This was fast enough for what was needed I did not try to optimize
>> further but since I already was in the domain where changes impacted
>> only a few milliseconds I have a hard time imagining going down to less
>> than a second.
>>
>> So I guess the only way is to skip u-boot and run linux kernel directly
>> out of NOR. Anyone know what MontaVista is doing ??
>>
>> _______________________________________________
>> Linuxppc-dev mailing list
>> Linuxppc-dev@ozlabs.org
>> https://ozlabs.org/mailman/listinfo/linuxppc-dev
>>
>
>

[-- Attachment #2: Type: text/html, Size: 3462 bytes --]

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: fastboot.
  2009-05-29 11:13 fastboot Kenneth Johansson
@ 2009-05-29 20:30 ` John Rigby
  2009-05-29 20:45   ` fastboot John Rigby
  0 siblings, 1 reply; 12+ messages in thread
From: John Rigby @ 2009-05-29 20:30 UTC (permalink / raw)
  To: Kenneth Johansson; +Cc: linuxppc-dev

[-- Attachment #1: Type: text/plain, Size: 1567 bytes --]

Kenneth,

I did some fastboot work for 5121 a few months ago.  U-boot, kernel and
JFFS2 rootfs in NOR.  My reset to userland time was 2.0 seconds, where
userland was first command executed in first rc.whatever file, so it
included the time for /sbin/init to get up and start running the rc scripts.

I did some profiling and noticed that the JFFS2 boot time was a significant
hunk (not just the first time but everytime).  I ran sumtool on the JFFS2
image and it dropped 600 ms from the boot time so my final time was 1.4
seconds.  The sumtool program has been around for a few years but it was
news to mean when I found it.

John

On Fri, May 29, 2009 at 5:13 AM, Kenneth Johansson <kenneth@southpole.se>wrote:

> http://www.cambridgewireless.co.uk/news/article/default.aspx?objid=36792
>
> Anybody know what they mean by booting here.
>
> I have started the ads5121 board using u-boot and kernel in NOR flash
> and root file system on a compact flash card connected to the IDE
> interface in 2.05 second until init is started from the rootfs.
>
> This was fast enough for what was needed I did not try to optimize
> further but since I already was in the domain where changes impacted
> only a few milliseconds I have a hard time imagining going down to less
> than a second.
>
> So I guess the only way is to skip u-boot and run linux kernel directly
> out of NOR. Anyone know what MontaVista is doing ??
>
> _______________________________________________
> Linuxppc-dev mailing list
> Linuxppc-dev@ozlabs.org
> https://ozlabs.org/mailman/listinfo/linuxppc-dev
>

[-- Attachment #2: Type: text/html, Size: 2140 bytes --]

^ permalink raw reply	[flat|nested] 12+ messages in thread

* fastboot.
@ 2009-05-29 11:13 Kenneth Johansson
  2009-05-29 20:30 ` fastboot John Rigby
  0 siblings, 1 reply; 12+ messages in thread
From: Kenneth Johansson @ 2009-05-29 11:13 UTC (permalink / raw)
  To: linuxppc-dev

http://www.cambridgewireless.co.uk/news/article/default.aspx?objid=36792

Anybody know what they mean by booting here. 

I have started the ads5121 board using u-boot and kernel in NOR flash
and root file system on a compact flash card connected to the IDE
interface in 2.05 second until init is started from the rootfs.

This was fast enough for what was needed I did not try to optimize
further but since I already was in the domain where changes impacted
only a few milliseconds I have a hard time imagining going down to less
than a second. 

So I guess the only way is to skip u-boot and run linux kernel directly
out of NOR. Anyone know what MontaVista is doing ?? 

^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2021-03-13  0:15 UTC | newest]

Thread overview: 12+ 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
  -- strict thread matches above, loose matches on Subject: below --
2009-05-29 11:13 fastboot Kenneth Johansson
2009-05-29 20:30 ` fastboot John Rigby
2009-05-29 20:45   ` fastboot John Rigby

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.