.. |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