1. Article purpose[edit source]
The purpose of this article is to:
- list the WLAN/BT hardware components that might be integrated in the different boards
- link these components to the corresponding software framework(s)
- point to the datasheet(s) of these components
2. Software frameworks[edit source]
Domain | Peripheral | Software components | Comment | ||
---|---|---|---|---|---|
OP-TEE | Linux | STM32Cube | |||
Networking | for STM32MP13x lines and STM32MP15x lines : Murata 1DX, for STM32MP25x lines : Murata 1YN | WLAN framework |
3. Murata 1DX / Murata 1YN[edit source]
The Type 1DX[1] module is an ultra-small module that includes 2.4 GHz WLAN and Bluetooth functionality. Based on the Cypress CYW4343W (previously Broadcom BCM4343W), the module provides high-efficiency RF front end circuits. The module is designed to fit into small spaces and is smaller than a dime. Minimal external circuitry is required to complete a radio design; add an antenna, a power source, clocks, processor, and associated interface hardware, and the radio hardware design is complete. To ease Wi-Fi certification, the Type 1DX module complies with IEEE 802.11b/g/n and Bluetooth Version 4.1 plus EDR, Power Class 1 (10 dBm max) + BLE.
The Type 1YN[2] is a small and high performance module based on Infineon CYW43439 combo chipset which supports Wi-Fi® 802.11b/g/n + Bluetooth® 5.2 BR/EDR/LE up to 65Mbps PHY data rate on Wi-fi® and 3Mbps PHY data rate on Bluetooth®. The WLAN section supports SDIO v2.0 interface and the Bluetooth® section supports high-speed 4-wire UART interface and PCM for audio data. The CYW43439 implements highly sophisticated enhanced collaborative coexistence hardware mechanisms and algorithms, which ensure that WLAN and Bluetooth® collaboration is optimized for maximum performance.
3.1. Linux driver[edit source]
Bindings : Documentation/devicetree/bindings/net/wireless/brcm,bcm4329-fmac.yaml
Documentation/devicetree/bindings/net/broadcom-bluetooth.yaml
Sources:
drivers/net/wireless/broadcom/brcm80211/brcmfmac/of.c
drivers/bluetooth/hci_bcm.c
3.1.1. Pre requisite[edit source]
1DX and 1YN chipset needs 2 pieces of firmware to work:
3.1.1.1. Bluetooth[edit source]
The ST Yocto delivery includes the following recipe:
- meta-st/meta-st-stm32mp/recipes-kernel/linux-firmware/linux-firmware-bluetooth-bcm4343.bb
that includes the CYW4343W Firmware which is needed by the driver: CYW43430A1.1DX.hcd (firmware)
that includes the CYW4343A2 Firmware which is needed by the driver: CYW4343A2_001.003.016.0031.0000.1YN.hcd (firmware)
If the newest firmware versions are requested, they can be retrived as described below :
Clone bluetooth firmware from the Murata git repository:
git clone https://github.com/murata-wireless/cyw-bt-patch
Copy/Rename CYW43430A1.1DX.hcd file in the target (rename needed to be compliant with the broadcom driver):
cp CYW43430A1.1DX.hcd $target/rootfs/lib/firmware/brcm/BCM43430A1.hcd
Copy/Rename CYW4343A2_001.003.016.0031.0000.1YN.hcd file in the target (rename needed to be compliant with the broadcom driver):
cp CYW4343A2_001.003.016.0031.0000.1YN.hcd $target/rootfs/lib/firmware/brcm/BCM4343A2.hcd
3.1.1.2. WLAN[edit source]
The ST Yocto delivery includes the following recipes:
- openembedded-core/meta/recipes-kernel/linux-firmware/linux-firmware_git.bb
- meta-st/meta-st-stm32mp/recipes-kernel/linux-firmware/linux-firmware_git.bbappend
These provide the CYW4343W firmware and calibration data needed by the wlan driver: brcmfmac43430-sdio.bin (firmware), and brcmfmac43430-sdio.txt (calibration data file)
These provide the CYW43439 firmware and calibration data needed by the wlan driver: brcmfmac43439-sdio.bin (firmware), and brcmfmac43439-sdio.txt (calibration data file)
If the newest firmware versions are requested, they can be retrived as described below:
Clone brcm firmware from kernel.org git repository:
git clone git://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git
Firmware is available in the linux-firmware/brcm folder:
cp linux-firmware/brcm/brcmfmac43430-sdio.* $target/rootfs/lib/firmware/brcm/
cp linux-firmware/brcm/brcmfmac43439-sdio.* $target/rootfs/lib/firmware/brcm/
- for STM32MP13x lines and STM32MP15x lines
- At startup, the MURATA 1DX module is loaded and you should see the following dmesg output:
[ 67.306154] brcmfmac: brcmf_c_preinit_dcmds: Firmware version = wl0: Aug 6 2017 23:19:25 version 7.45.98.30 (r666241 CY) FWID 01-f0b000
[ 67.326146] brcmfmac: brcmf_c_preinit_dcmds: CLM version = API: 12.2 Data: 7.11.15 Compiler: 1.24.2 ClmImport: 1.24.1 Creation: 2014-05
[ 67.676323] brcmfmac: brcmf_cfg80211_reg_notifier: not a ISO3166 code (0x30 0x30)
- for STM32MP25x lines
- At startup, the MURATA 1YN module is loaded and you should see the following dmesg output:
[ 96.840123] brcmfmac: brcmf_c_preinit_dcmds: Firmware: BCM43439/5 wl0: Aug 31 2023 01:16:08 version 7.95.64.1 (64b6b2d CY) FWID 01-b73af1f1
4. References[edit source]
- Kernel.org wiki
https://wireless.wiki.kernel.org/en/users/drivers/brcm80211