Wi-Fi Driver Selection and Board-Level Configuration#
Driver Overview#
RT-Smart can currently build multiple Wi-Fi drivers simultaneously. Applications uniformly use RT-Thread WLAN, NetMgmt,
lwIP, and the wifi command; the actual chip cannot be determined based on the legacy fixed wlan0 name.
Driver |
Transport |
Registered Model |
Main Configuration |
|---|---|---|---|
Realtek RTL8189FTV |
SDIO |
|
|
Realtek RTL8733BS |
SDIO |
|
|
Broadcom brcmfmac |
SDIO |
|
|
CYW43xx (legacy) |
SDIO |
|
|
RW007 |
SPI Mode 0 |
|
|
AIC8800 series (including DC/DW/DL) |
USB, SDIO |
Specific chip model |
|
ESP-Hosted-FG/NG |
SPI Full-Duplex, SDIO |
|
|
ESP-Hosted-MCU |
SPI Full/Half-Duplex |
|
|
AIC8800 and ESP-Hosted differ considerably in firmware, protocols, and security capabilities. See AIC8800 Wi-Fi Driver User Guide and ESP-Hosted Wi-Fi Coprocessor User Guide, respectively.
Common SDIO Board-Level Configuration#
Realtek, brcmfmac, CYW43xx, AIC8800 SDIO, and ESP-Hosted SDIO share the
SDIO Wi-Fi Board Bus configuration. Select the connected host and configure REG_ON/Reset according to the schematic:
BSP_WIFI_SDIO_HOST_0=y # or BSP_WIFI_SDIO_HOST_1
BSP_WIFI_SDIO_REG_ON_PIN=<gpio> # -1 indicates use of the board's fixed wiring
BSP_WIFI_SDIO_RESET_ACTIVE_LOW=y
BSP_WIFI_SDIO_RESET_PULSE_MS=200
BSP_WIFI_SDIO_POWER_UP_DELAY_MS=50
The selected host must enable the corresponding RT_USING_SDIO0 or RT_USING_SDIO1. The common board-level code resets
the slot only once before probing. Each vendor driver subsequently matches by SDIO manufacturer/product ID, so SDIO drivers
from different vendors can be compiled simultaneously.
Realtek RTL8189FTV/RTL8733BS#
After enabling RT_USING_REALTEK, exactly one Realtek module must be selected:
REALTEK_SDIO_RTL8189FTV=y # SDIO ID 024c:f179
# REALTEK_SDIO_RTL8733BS=y # SDIO ID 024c:b733
These options determine the vendor module compiled into the image and cannot be enabled simultaneously. If the wrong module
is selected, the SDIO host may recognize the card but will not register WLAN. To use vendor interactive commands or obtain
detailed logs, enable REALTEK_INTERACTIVE_CMD and REALTEK_ENABLE_DEBUG respectively; they are recommended to be disabled
for production firmware.
Broadcom brcmfmac#
The new configuration recommends enabling the native RT-Smart brcmfmac port:
RT_USING_BRCMFMAC=y
BRCMFMAC_COUNTRY_CODE="CN"
BRCMFMAC_COUNTRY_REVISION=0
BRCMFMAC_BCM43430A1_NVRAM="nvram.txt"
The target currently provided and verified with the SDK is SDIO ID 02d0:a9a6, chip revision A1, with registered model
BCM43430A1. The driver supports STA, SoftAP, and concurrent single-channel STA + SoftAP, and integrates with RT-Thread
WLAN and lwIP through WLAN offload. In concurrent mode, SoftAP may pause briefly while the STA connects and resumes on the
STA’s channel after the connection is established.
The build system installs fw_bcm43438a1.bin, nvram.txt, and nvram_ap6212.txt into the image’s
/bin/firmware/brcmfmac directory. The default nvram.txt is the K016-CW43 board calibration used by the K230 CanMV Linux
SDK. Change BRCMFMAC_BCM43430A1_NVRAM to nvram_ap6212.txt only when the module and RF design match the AP6212A
V1.0.2 calibration. NVRAM is board-level RF calibration data and cannot be exchanged solely based on the SDIO ID or chip
model.
The driver mapping table also includes other Broadcom/Cypress chips, but the SDK currently does not include the firmware,
NVRAM, or optional CLM blob for these targets. When adapting a new module, the corresponding files for Linux brcmfmac must be
provided and installed in the directory specified by BRCMFMAC_FIRMWARE_PATH.
The legacy RT_USING_CYW43XX remains available for existing board-level configurations, but it is mutually exclusive with
RT_USING_BRCMFMAC because both match the same Broadcom SDIO ID. Both ports provide only Wi-Fi and do not register a
Bluetooth HCI device.
RW007#
RW007 depends on RT-Thread SPI. After enabling RT_USING_RW007, configure it according to the board wiring:
RW007_SPI_BUS_NAME="spi0"
RW007_SPI_MAX_HZ=25000000
RW007_RST_PIN=20
RW007_CS_PIN=63
RW007_INT_BUSY_PIN=62
The driver uses SPI Mode 0, 8-bit, single data line, and registers the slave device as wspi. The GPIO values and
25 MHz above are defaults and do not represent the wiring on all development boards. If initialization fails, first lower the
frequency and verify Reset, CS, INT/BUSY, and FPIOA.
Default Configuration#
k230_canmv_defconfigenables brcmfmac and Realtek;Most CanMV defconfigs with onboard SDIO Wi-Fi enable Realtek and select RTL8189FTV by default;
k230_canmv_rtt_evb_defconfigenables RW007;k230_canmv_01studio_defconfigenables AIC8800 USB/SDIO, andk230_canmv_v3p0_defconfigenables AIC8800 SDIO; DC/DW/DL SDIO cards use the two functionsc8a1:c08dandc8a1:c18d. See their dedicated guide for details;ESP-Hosted has no universal wiring and is usually enabled in a custom defconfig.
A defconfig describes only the build options for that firmware. After replacing a module with the same interface, the chip, SDIO ID, power supply, reset, and pins must still be verified; the driver cannot be determined solely by the development board name.
Network Stack and Network Sharing#
RT-Smart currently allows selection between lwIP 2.1.2 and 2.2.1, with 2.1.2 remaining the default. See the lwIP 2.2.1 User Guide for version selection, SAL/netdev adaptation, and runtime verification.
To allow SoftAP clients to access the Internet through the STA or LAN, enable the DHCP server and
LWIP_USING_NAT. Once NAT is compiled into the firmware, the WLAN layer automatically starts and stops it with SoftAP. See
the IPv4 NAT User Guide for configuration, status commands, and feature limitations.
Device Discovery and Selection#
Each physical radio registers STA/AP management devices and dynamic netdevs. Run:
wifi devices
The model, transport, role, and netdev in the output can be used to confirm the actual binding result. The numbering is
determined by the probing order; applications must not hard-code phy0-sta or wlan0.
When there is only one Wi-Fi device, automatic selection is usually used; when multiple devices are present, selection by transport is available:
wifi -i sdio scan
wifi -i spi join <ssid> <password>
wifi -i usb status
Transport selection cannot distinguish between devices from different vendors on the same SDIO or SPI type. For precise
selection, use the management device or netdev name shown in the wifi devices output.
Troubleshooting#
No WLAN at all: Verify
RT_USING_WIFI, the host controller, power supply, and board-level reset configuration.SDIO is enumerated but no WLAN is available: Check the manufacturer/product ID and the vendor driver actually compiled; for Realtek, also verify the RTL8189FTV/RTL8733BS selection.
AIC8800DC/DW/DL enumerates only one of the
c8a1:c08dorc8a1:c18dfunctions: Check the power supply, reset, and host configuration; the card requires both functions to operate simultaneously.brcmfmac reports that firmware or NVRAM does not exist: Confirm that
/bin/firmware/brcmfmacexists in the image and verifyBRCMFMAC_BCM43430A1_NVRAMagainst the actual board.RW007 does not print its version: Check
RW007_SPI_BUS_NAME, SPI Mode 0, frequency, and the three GPIOs.WLAN is registered but the connection fails: First use
wifi devicesto confirm the model, then check the security mode, country code, and channel against that vendor’s firmware support range.The wrong device is selected after compiling multiple drivers: Specify it precisely with
wifi -i <management device or netdev>, and do not rely on dynamic numbering remaining unchanged between boots.
