EDF Wi-Fi Yocto Integration
Introduction
This page describes the Wi-Fi integration in EDF at the Yocto Project build level. It covers the machine and distro feature flags, kernel driver configuration, wireless daemon selection, firmware packaging, and image-level integration. Use this information to understand the default Wi-Fi configuration shipped in EDF images, or to customize it for your own builds.
For runtime Wi-Fi setup on a running EDF system, see EDF Wi-Fi setup.
Overview
The Yocto wifi feature flag controls Wi-Fi support in EDF, gating
all related configuration at the machine, distro, kernel, and image levels. When
both the machine and distro enable the wifi feature (COMBINED_FEATURES),
the build system automatically:
Enables USB Wi-Fi kernel drivers (Atheros, Broadcom, MediaTek, Ralink, Realtek)
Adds the required crypto options for
iwdInstalls
iwdas the wireless daemonInstalls matching firmware packages for all enabled drivers
Includes
wireless-regdbfor regulatory domain compliance
Machine Feature
The wifi machine feature is enabled for all common EDF machine
configurations in the following machine conf files:
amd-cortexa53-common.confamd-cortexa53-mali-common.confamd-cortexa72-common.confamd-cortexa78-common.confamd-cortexa78-mali-common.confamd-cortexa9thf-neon-common.conf
Each file adds wifi to MACHINE_FEATURES:
MACHINE_FEATURES += "fpga-overlay efi usbgadget wifi"
The wifi distro feature is already enabled by default through Poky’s
DISTRO_FEATURES_DEFAULT and does not need to be set explicitly in the
EDF distro configuration.
When both machine and distro features include wifi, the resulting
COMBINED_FEATURES contains wifi, which gates all later Wi-Fi
integration points.
Wireless Daemon Selection
EDF uses iwd (iNet wireless daemon) instead of the legacy
wpa_supplicant. This is set at the distro level in
conf/distro/amd-edf.conf:
# Use iwd instead of the default wpa-supplicant. iwd is a more modern
# wireless daemon; wpa-supplicant is considered legacy.
WIRELESS_DAEMON = "iwd"
Setting WIRELESS_DAEMON at the distro level ensures consistent daemon
selection across all recipes that consume this variable, including
packagegroup-base-wifi.
Kernel configuration
USB Wi-Fi Drivers
EDF enables a broad set of USB Wi-Fi drivers through two mechanisms,
both gated on COMBINED_FEATURES wifi:
Upstream kernel cache feature (
wifi-usb.scc): Atheros ATH9K_HTC, Broadcom BRCMFMAC_USB, MediaTek MT7601U, Ralink RT2500USB/RT73USB/RT2800USB, and Realtek RTL8187/RTL8XXXU/RTL8192CU.Supplemental fragment (
wifi-usb-extra.cfg): additional chipsets not covered by the upstream scc – Atheros CARL9170, the full MediaTek mt76 USB stack (MT7610U through MT7925U Wi-Fi 6E), Ralink RT5370/RT5572/RT3573, Realtek RTW88 USB (8822B/C, 8723D, 8821C), and RTW89 Wi-Fi 6 USB (8851BU, 8852BU).
The wifi-usb-extra.cfg fragment and the iwd-crypto kernel feature are
provided by meta-xilinx and available to all linux-xlnx consumers.
The EDF layer enables them in linux-xlnx-edf.inc:
# USB wifi drivers (upstream scc + supplemental fragment)
SRC_URI += "${@bb.utils.contains('COMBINED_FEATURES', 'wifi', \
' file://wifi-usb-extra.cfg', '', d)}"
KERNEL_FEATURES:append = "${@bb.utils.contains('COMBINED_FEATURES', \
'wifi', \
' features/iwd/iwd-crypto.scc features/wifi/wifi-usb.scc', \
'', d)}"
Crypto Requirements (iwd)
iwd requires kernel support for Diffie-Hellman key operations, symmetric
ciphers (AES, DES, CBC), hash algorithms (HMAC, MD5, SHA1,
SHA512), and the user-space crypto API (CONFIG_CRYPTO_USER_API_HASH,
CONFIG_CRYPTO_USER_API_SKCIPHER). The meta-xilinx layer provides an
iwd-crypto.cfg kernel fragment that enables all required options and their
dependencies. The fragment is classified as kconf non-hardware through
iwd-crypto.scc for the kernel config audit system, and is gated on
COMBINED_FEATURES wifi.
Firmware Packages
EDF installs per-chip firmware subpackages for all enabled USB Wi-Fi
drivers, gated on COMBINED_FEATURES wifi. The firmware packages are defined
in edf-image-common.inc and use fine-grained subpackages where possible to
minimize rootfs size.
The full list of firmware packages:
WIFI_FIRMWARE_INSTALL = " \
linux-firmware-ath9k \
linux-firmware-bcm43143 \
linux-firmware-bcm43242a \
linux-firmware-bcm43569 \
linux-firmware-bcm4373 \
linux-firmware-carl9170 \
linux-firmware-mt7601u \
linux-firmware-mt7610 \
linux-firmware-mt7662 \
linux-firmware-mt7663 \
linux-firmware-mt7921 \
linux-firmware-mt7925 \
linux-firmware-ralink \
linux-firmware-rtl8188 \
linux-firmware-rtl8192cu \
linux-firmware-rtl8192eu \
linux-firmware-rtl8723 \
linux-firmware-rtl8821 \
linux-firmware-rtl8822 \
linux-firmware-rtw88 \
linux-firmware-rtw89 \
"
Several of the MediaTek and Realtek subpackages (mt7610, mt7662,
mt7663, mt7921, mt7925, rtl8192eu, rtw88, rtw89) are
defined in a linux-firmware_%.bbappend in meta-amd-edf, since the
upstream linux-firmware recipe does not split them into individual
packages. This approach replaced the linux-firmware-mediatek catch-all and
reduced the MediaTek firmware footprint from approximately 31 MB to 4 MB.
Image Integration
Wi-Fi packages are added to EDF images through edf-image-common.inc:
AMD-EDF_IMAGE_FULL_INSTALL = " \
...
packagegroup-base-wifi \
${@bb.utils.contains('COMBINED_FEATURES', 'wifi', \
'${WIFI_FIRMWARE_INSTALL}', '', d)} \
"
packagegroup-base-wifi is an OE-Core package group that pulls in the
wireless daemon (iwd in EDF) and wireless-regdb when the
wifi feature is active. The firmware install list is added so that it can be
customized independently.
EDF images also include usb-modeswitch and usb-modeswitch-data.
Some USB devices (including certain Wi-Fi adapters such as those based on
Realtek RTL8851BU) enumerate as mass storage on plugin and require a mode switch
to activate their primary function. usb-modeswitch handles this
automatically through udev rules. This package is installed unconditionally
because it also supports non-Wi-Fi devices (cellular modems, USB Ethernet).
Customization
Disabling Wi-Fi Entirely
Remove wifi from MACHINE_FEATURES in your machine configuration or
add the following to local.conf:
MACHINE_FEATURES:remove = "wifi"
This disables all Wi-Fi kernel drivers, firmware, and user-space packages in a single setting.
Adding a New USB Wi-Fi Driver
To add support for a new USB Wi-Fi chipset:
Add the kernel config option to
wifi-usb-extra.cfg:CONFIG_NEW_DRIVER=m
Identify the required firmware files and add the corresponding
linux-firmwaresubpackage toWIFI_FIRMWARE_INSTALLinedf-image-common.inc. If no upstream subpackage exists, create one in thelinux-firmware_%.bbappend.Rebuild the kernel and image:
$ MACHINE=<machine> bitbake virtual/kernel -c cleansstate $ MACHINE=<machine> bitbake edf-linux-disk-image
Using wpa_supplicant Instead
To revert to wpa_supplicant instead of iwd, override the distro
setting in local.conf:
WIRELESS_DAEMON = "wpa-supplicant"
Note
The iwd-crypto.cfg kernel fragment is still applied but is
harmless when using wpa_supplicant. The crypto options it enables are
general-purpose and do not interfere with wpa_supplicant operation.
Supported chipsets
The following table lists all USB Wi-Fi chipsets enabled in EDF, grouped by vendor:
Vendor |
Chipset |
Kernel driver |
Firmware package |
|---|---|---|---|
Atheros |
AR9271, AR7010 |
ATH9K_HTC |
linux-firmware-ath9k |
Atheros |
AR9170 |
CARL9170 |
linux-firmware-carl9170 |
Broadcom |
BCM43143 |
BRCMFMAC_USB |
linux-firmware-bcm43143 |
Broadcom |
BCM43242A |
BRCMFMAC_USB |
linux-firmware-bcm43242a |
Broadcom |
BCM43569 |
BRCMFMAC_USB |
linux-firmware-bcm43569 |
Broadcom |
BCM4373 |
BRCMFMAC_USB |
linux-firmware-bcm4373 |
MediaTek |
MT7601U |
MT7601U |
linux-firmware-mt7601u |
MediaTek |
MT7610U/E, MT7650E |
MT76x0U |
linux-firmware-mt7610 |
MediaTek |
MT7612U |
MT76x2U |
linux-firmware-mt7662 |
MediaTek |
MT7663U |
MT7663U |
linux-firmware-mt7663 |
MediaTek |
MT7921U (Wi-Fi 6) |
MT7921U |
linux-firmware-mt7921 |
MediaTek |
MT7925U (Wi-Fi 6E) |
MT7925U |
linux-firmware-mt7925 |
Ralink |
RT2500, RT2501 |
RT2500USB |
linux-firmware-ralink |
Ralink |
RT2600, RT2700 |
RT73USB |
linux-firmware-ralink |
Ralink |
RT2800, RT3x00, RT5370, RT5572, RT3573 |
RT2800USB |
linux-firmware-ralink |
Realtek |
RTL8187 |
RTL8187 |
(no firmware needed) |
Realtek |
RTL8188CUS/RTL8192CU |
RTL8192CU |
linux-firmware-rtl8192cu |
Realtek |
RTL8192EU |
RTL8XXXU |
linux-firmware-rtl8192eu |
Realtek |
RTL8188EU and others |
RTL8XXXU |
linux-firmware-rtl8188 |
Realtek |
RTL8723DU |
RTW88_8723DU |
linux-firmware-rtl8723, linux-firmware-rtw88 |
Realtek |
RTL8821CU |
RTW88_8821CU |
linux-firmware-rtl8821 |
Realtek |
RTL8822BU/CU |
RTW88_8822BU/CU |
linux-firmware-rtl8822 |
Realtek |
RTL8851BU (Wi-Fi 6) |
RTW89_8851BU |
linux-firmware-rtw89 |
Realtek |
RTL8852BU (Wi-Fi 6) |
RTW89_8852BU |
linux-firmware-rtw89 |
Next Steps
Wi-Fi support is enabled by default in EDF images, so no additional configuration is needed for a standard build. To build an EDF Linux disk image with Wi-Fi included, follow the existing build instructions in Operating System Integration and Development.
After flashing and booting the image, see EDF Wi-Fi setup for connecting to a Wi-Fi network at runtime.
References
EDF Wi-Fi setup – runtime Wi-Fi setup guide