WiFi/BT Guide

Laird USB WiFi Module

Hint

Make sure to order the right Laird Wifi stick. There are different versions available.

Part Number: 450-00137
(Sterling LWB5+)

This is the tested and supported WiFi USB stick for all our modules.

Danger

On STM32 processors the support for this usb-stick is in experimental state. E.g. Bluetooth is currently not working.

../../_images/sterling-lwb5-usb.png

Setup

The WiFi and Bluetooth drivers for Sterling LWB5+ module have to be enabled in your Yocto BSP.

If you’re not familiar with Yocto first read the Yocto Guide.

  1. Clone the meta-laird-cp layer into the BSP’s directory where to other layers are:
cd <bsp-dir>/<layers-dir>
git clone https://github.com/LairdCP/meta-laird-cp.git
  1. Setup your build directory and add the layer to your build-directory’s conf/bblayers.conf:
(...)
BBLAYERS += "${BSPDIR}/<layers-dir>/meta-laird-cp"
  1. Add lines to conf/local.conf:
(...)
DISTRO_FEATURES_append = " wifi bluetooth"
MACHINE_FEATURES_append = " extmod"

BBMASK += " \
    meta-laird-cp/recipes-packages/openssl \
    meta-laird-cp/recipes-packages/.*/.*openssl10.* \
"

PREFERRED_RPROVIDER_wpa-supplicant = "sterling-supplicant"
PREFERRED_RPROVIDER_wpa-supplicant-cli = "sterling-supplicant"
PREFERRED_RPROVIDER_wpa-supplicant-passphrase = "sterling-supplicant"
PREFERRED_RPROVIDER_wireless-regdb-static = "wireless-regdb"

IMAGE_INSTALL_append = " \
    kernel-module-lwb5p-backports-laird \
    lwb5plus-usb-div-firmware \
    sterling60-firmware-usb-usb \
    sterling-supplicant-lwb \
"
  1. Compile the desired image and bring it to your board.

Usage

Plug-in the USB-stick and boot your previously compiled image.

How WiFi and Bluetooth are connected is described below - Connecting WiFi.

Laird PCIe WiFi Module

Hint

Make sure to order the right Laird Wifi Module card. There are many different versions available.

Part Number: ST60-2230C-P
(Laird 60-2230C-P Series)

It is the only correct working and supported mini-PCIe version on our QSBASE3!

Introduction

../../_images/laird_overview.jpg

You have two options using the Laird WiFi module on QSX(M|P) on QSBASE3:

  • There are precompiled FlashImages in our Download Area with which you can use it out of the box.
  • To enable WiFi / BT support in Yocto see local.conf section in NXP Yocto BSP.

Setup

  1. Mount the Laird PCIe WiFi module to our QSBASE3 baseboard:
../../_images/laird_installed.jpg

Devicetree

When your Yocto build has finished you will get different dtbs in deploy directory.

The following table gives an overview.

Module WiFi Supported .dtb Files
qsxp-ml81 on qsbase3 Laird 60-2230C-P Series imx8mp-qsxp-ml81-qsbase3-laird.dtb
qsxp-mm60 on qsbase3 Laird 60-2230C-P Series imx8mm-qsxm-mm60-qsbase3-laird.dtb

Use the specific dtb file when booting Linux.

Also make sure you load the RootFS corresponding to the Kernel you built, because it includes the WiFi firmware you need!

Note

You can change the baseboard variable in U-Boot to get the specific dtb loaded from eMMC.

EXAMPLE

setenv baseboard qsbase3-laird
Notice: 'fdt_file' changed from 'imx8mp-qsxp-ml81-qsbase3.dtb' to 'imx8mp-qsxp-ml81-qsbase3-laird.dtb'

Ath9k Wifi Module

Devicetree

When your Yocto build has finished you will get different dtbs in deploy directory.

The following table gives an overview.

Note

Silex module is just an example and was tested by us. Any other PCIe module with an ath9k wifi chip should also work.

Module WiFi Supported .dtb Files
tx8m-1620 on lvds-mb Silex SX-PCEAN2 imx8mm-tx8m-1620-lvds-mb-wifi.dtb
tx8m-1610 on mipi-mb Silex SX-PCEAN2 imx8mm-tx8m-1610-mipi-mb-wifi.dtb

Use the specific dtb file when booting Linux.

Also make sure you load the RootFS corresponding to the Kernel you built, because it includes the WiFi firmware you need!

Note

You can change the baseboard variable in U-Boot to get the specific dtb loaded from eMMC.

EXAMPLE

setenv baseboard mipi-mb-wifi
Notice: 'fdt_file' changed from 'imx8mm-tx8m-1610-mipi-mb.dtb' to 'imx8mm-tx8m-1610-mipi-mb-wifi.dtb'

Connecting WiFi

See our Linux WiFi Setup.

Set Up Bluetooth

Note

Steps in this section are only required when using one of the PCIe WiFi/BT modules. With the USB version the hci device is initialized already.

With the devictree the specific UART is enabled to be used as HCI device.

Module tty for HCI
qsxm-mm60 /dev/ttymxc1
qsxp-ml81 /dev/ttymxc2

Warning

If there’s a getty session running on the desired tty you will have to disable it. Otherwise the tty will not be accessible for hci.

Find all running getty sessions (example):

ps | grep getty
1652 root     /sbin/getty -L 115200 ttymxc1 linux
1653 root     /sbin/getty -L 115200 ttymxc2 linux
1660 root     grep getty

You could disable the desired tty by commenting out the line in /etc/inittab:

(...)
# Serial consoles on the standard serial ports
s0:123:respawn:/sbin/getty -L 115200 ttymxc0 linux
# s1:123:respawn:/sbin/getty -L 115200 ttymxc1 linux
# s2:123:respawn:/sbin/getty -L 115200 ttymxc2 linux
(...)

After saving reboot the system.


Attach the Serial Port as HCI device.

hciattach /dev/ttymxc2 any 115200 flow
Setting TTY to N_HCI line discipline
Device setup complete

Connect Bluetooth

View the attached device.

hciconfig
hci0:   Type: Primary  Bus: UART
     BD Address: C0:EE:40:45:59:33  ACL MTU: 1021:7  SCO MTU: 120:6
     DOWN
     RX bytes:704 acl:0 sco:0 events:39 errors:0
     TX bytes:450 acl:0 sco:0 commands:39 errors:0

Bring the device up.

hciconfig hci0 up

Enable e.g. your phone’s BT and scan Bluetooth.

hcitool scanning
Scanning ...
     55:44:33:11:22:66       elmeg D130
     FF:AA:BB:CC:DD:EE       Pixel 4