Last edited 3 months ago

WLAN and Bluetooth hardware component

Applicable for STM32MP13x lines, STM32MP15x lines, STM32MP25x lines

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 More info.png and STM32MP15x lines More info.png : Murata 1DX, for STM32MP25x lines More info.png : Murata 1YN WLAN framework

Bluetooth framework

3. Murata 1DX / Murata 1YN[edit source]

  • for STM32MP13x lines More info.png and STM32MP15x lines More info.png

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.

  • for STM32MP25x lines More info.png

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

  • for STM32MP13x lines More info.png and STM32MP15x lines More info.png

that includes the CYW4343W Firmware which is needed by the driver: CYW43430A1.1DX.hcd (firmware)

  • for STM32MP25x lines More info.png

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
  • for STM32MP13x lines More info.png and STM32MP15x lines More info.png

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
  • for STM32MP25x lines More info.png

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

  • for STM32MP13x lines More info.png and STM32MP15x lines More info.png

These provide the CYW4343W firmware and calibration data needed by the wlan driver: brcmfmac43430-sdio.bin (firmware), and brcmfmac43430-sdio.txt (calibration data file)

  • for STM32MP25x lines More info.png

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:

  • for STM32MP13x lines More info.png and STM32MP15x lines More info.png
   cp linux-firmware/brcm/brcmfmac43430-sdio.* $target/rootfs/lib/firmware/brcm/
  • for STM32MP25x lines More info.png
   cp linux-firmware/brcm/brcmfmac43439-sdio.* $target/rootfs/lib/firmware/brcm/
  • for STM32MP13x lines More info.png and STM32MP15x lines More info.png
  • 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 More info.png
  • 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]

  1. [1], 1DX
  2. [2], 1YN
  • Kernel.org wiki

https://wireless.wiki.kernel.org/en/users/drivers/brcm80211