.. |br| raw:: html
.. _wifi-guide:
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** |br|
(`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.
.. figure:: images/sterling-lwb5-usb.png
:scale: 50 %
:align: left
:figwidth: 100%
Build
~~~~~
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 :ref:`yocto-guide-index`.
1. Clone the *meta-laird-cp* layer into the BSP's directory where to other layers are:
.. prompt::
:prompts: #
cd /
git clone https://github.com/LairdCP/meta-laird-cp.git .
2. Set up your build directory and add the layer to your build-directory's *conf/bblayers.conf*:
For yocto releases 4.0 (kirkstone) and higher:
.. code-block:: text
bitbake-layers add-layer $BSPDIR/meta-laird-cp/meta-laird-cp
For older yocto releases:
.. code-block:: text
bitbake-layers add-layer $BSPDIR/meta-laird-cp/meta-laird-cp-pre-3.4
3. Add lines to *conf/local.conf*:
.. code-block:: text
(...)
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 \
"
4. Compile the desired image and flash 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** |br|
(`Laird 60-2230C-P Series`_)
It is the only correct working and supported mini-PCIe version on our QSBASE3!
Introduction
~~~~~~~~~~~~
.. figure:: images/laird_overview.jpg
:scale: 50 %
:align: left
:figwidth: 100%
You have two options using the Laird WiFi module on **QSX(M|P)** on **QSBASE3**: |br|
- 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 :ref:`yocto-guide/nxp/build:local.conf` section in NXP Yocto BSP.
Setup
~~~~~
1. Mount the Laird PCIe WiFi module to our QSBASE3 baseboard:
.. figure:: images/laird_installed.jpg
:scale: 50 %
:align: left
:figwidth: 100%
Laird Devicetree
~~~~~~~~~~~~~~~~
When your Yocto build has finished you will get different dtbs in deploy directory.
The following table gives an overview.
.. list-table::
:header-rows: 1
* - Module
- WiFi Supported
- FDT overlays
* - qsxp-ml81 on qsbase3
- `Laird 60-2230C-P Series`_
- qsxp-laird
* - qsxp-mm60 on qsbase3
- `Laird 60-2230C-P Series`_
- qsxm-laird
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!**
Ath9k Wifi Module
-----------------
Ath9k 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.
.. list-table::
:header-rows: 1
* - Module
- WiFi Supported
- FDT overlays
* - tx8m-1620 on lvds-mb
- `Silex SX-PCEAN2`_
- tx8m-wifi
* - tx8m-1610 on mipi-mb
- `Silex SX-PCEAN2`_
- tx8m-wifi
Make sure, that the appropriate FDT overlay is loaded:
**EXAMPLE**
.. prompt::
:prompts: U-Boot>
setenv overlays_mipi-mb ${overlays_mipi-mb} tx8m-wifi
saveenv
reset
**Also make sure you load the RootFS corresponding to the Kernel you built, because it includes the WiFi firmware you need!**
Connecting WiFi
---------------
See our :ref:`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.
.. list-table::
:header-rows: 1
* - 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):
.. prompt::
:prompts: #
ps | grep getty
.. code-block:: text
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(s) by commenting out the
corresponding lines in ``/etc/inittab``:
.. code-block:: text
(...)
# 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
(...)
and sending the 'init' process a HUP signal:
.. prompt::
:prompts: #
kill -HUP 1
Attach the Serial Port as HCI device.
.. prompt::
:prompts: #
hciattach /dev/ttymxc2 any 115200 flow
.. code-block:: text
Setting TTY to N_HCI line discipline
Device setup complete
Connect Bluetooth
-----------------
View the attached device.
.. prompt::
:prompts: #
hciconfig
.. code-block:: text
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.
.. prompt::
:prompts: #
hciconfig hci0 up
Enable e.g. your phone's BT and scan Bluetooth.
.. prompt::
:prompts: #
hcitool scanning
.. code-block:: text
Scanning ...
55:44:33:11:22:66 elmeg D130
FF:AA:BB:CC:DD:EE Pixel 4
.. _`Laird 60-2230C-P Series`: https://www.lairdconnect.com/wireless-modules/wifi-modules-bluetooth/60-2230c-series-bluetooth-and-wifi-module
.. _`Silex SX-PCEAN2`: https://www.silextechnology.com/connectivity-solutions/embedded-wireless/sx-pcean2-radio-module
.. _`Sterling LWB5+`: https://www.lairdconnect.com/wireless-modules/wifi-modules-bluetooth/sterling-lwb5-plus-wifi-5-bluetooth-5-module