wget command
Synopsis
wget [address] [host:]path
wget [address] url # lwIP only
Description
The wget command is used to download a file from an HTTP(S) server. In order to use HTTPS you will need to compile wget with lwIP support.
Legacy syntax
The legacy syntax is supported by the legacy network stack (CONFIG_NET=y) as well as by the lwIP base network stack (CONFIG_NET_LWIP=y). It supports HTTP only.
By default the destination port is 80 and the source port is pseudo-random. On the legacy nework stack the environment variable httpdstp can be used to set the destination port
- address
memory address for the data downloaded
- host
IP address (or host name if CONFIG_CMD_DNS is enabled) of the HTTP server, defaults to the value of environment variable serverip.
- path
path of the file to be downloaded.
New syntax (lwIP only)
In addition to the syntax described above, wget accepts URLs if the network stack is lwIP.
- address
memory address for the data downloaded
- url
HTTP or HTTPS URL, that is: http[s]://<host>[:<port>]/<path>.
Examples
Example with the legacy network stack
In the example the following steps are executed:
setup client network address
download a file from the HTTP server
=> setenv autoload no
=> dhcp
BOOTP broadcast 1
*** Unhandled DHCP Option in OFFER/ACK: 23
*** Unhandled DHCP Option in OFFER/ACK: 23
DHCP client bound to address 192.168.1.105 (210 ms)
=> wget ${loadaddr} 192.168.1.254:/index.html
HTTP/1.0 302 Found
Packets received 4, Transfer Successful
Example with lwIP
In the example the following steps are executed:
setup client network address
download a file from the HTTPS server
=> dhcp
DHCP client bound to address 10.0.2.15 (3 ms)
=> wget https://download.rockylinux.org/pub/rocky/9/isos/aarch64/Rocky-9.4-aarch64-minimal.iso
##########################################################################
##########################################################################
##########################################################################
[...]
1694892032 bytes transferred in 492181 ms (3.3 MiB/s)
Bytes transferred = 1694892032 (65060000 hex)
Configuration
The command is only available if CONFIG_CMD_WGET=y. To enable lwIP support set CONFIG_NET_LWIP=y.
TCP Selective Acknowledgments in the legacy network stack can be enabled via CONFIG_PROT_TCP_SACK=y. This will improve the download speed. Selective Acknowledgments are enabled by default with lwIP.
Note
U-Boot currently has no way to verify certificates for HTTPS. A place to store the root CA certificates is needed, and then MBed TLS would need to walk the entire chain. Therefore, man-in-the middle attacks are possible and HTTPS should not be relied upon for payload authentication.
Return value
The return value $? is 0 (true) on success and 1 (false) otherwise.