Inventek Systems ISM43362-B81 on MCIMX6UL-EVK

Introduction

This page will show you step-by-step how to interface a Inventek Systems ISM43362-B81 Wi-Fi 2.4Ghz SDIO SIP Module to the NXP MCIMX6UL-EVK.

b81_evb-e1446752628338

Demo

Demo2

Hardware Requirements

NXP MCIMX6UL-EVK base board:

MCIMX6UL-EVK at Digi-Key

Inventek Systems ISM43362-B81 Evaulation Board:

ISM43362-B81-EVB at Digi-Key

MCIMX6UL-EVK_sml

Software Requirements

Modify /boot/uEnv.txt

This will force u-boot to load our customized device tree that is expecting the ISM43362-B81 to be connected over the large mmc interface.

#/boot/uEnv.txt
dtb=imx6ul-14x14-evk-ism43362-b81-evb.dtb`

Add ISM43362-B81’s firmware

We are assuming your microSD is stilll mounted at /media/rootfs/

wget https://raw.githubusercontent.com/rcn-ee/sdk-firmware/master/inventeksys/ISM43362_NVRAM_C1.txt
mkdir -p /media/rootfs/lib/firmware/brcm/
sudo cp -v ISM43362_NVRAM_C1.txt /media/rootfs/lib/firmware/brcm/brcmfmac43362-sdio.txt

Insert microSD and ISM43362-B81 and power up board

debian@arm:~$ dmesg | grep brcm
[   22.217393] usbcore: registered new interface driver brcmfmac
[   22.486704] brcmfmac: brcmf_c_preinit_dcmds: Firmware version = wl0: Apr 22 2013 14:50:00 version 5.90.195.89.6 FWID 01-b30a427d
[   22.694656] brcmfmac: brcmf_cfg80211_reg_notifier: not a ISO3166 code (0x30 0x30)
[   25.208737] brcmfmac: brcmf_p2p_create_p2pdev: timeout occurred
[   27.884778] brcmfmac: brcmf_p2p_create_p2pdev: timeout occurred
debian@arm:~$ sudo ifconfig -a wlan0
wlan0     Link encap:Ethernet  HWaddr c4:7f:51:80:05:e1
          inet6 addr: fe80::c67f:51ff:fe80:5e1/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST DYNAMIC  MTU:1500  Metric:1
          RX packets:1242 errors:0 dropped:2 overruns:0 frame:0
          TX packets:30 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:165088 (161.2 KiB)  TX bytes:5625 (5.4 KiB)

Kernel patch utilized

diff --git a/arch/arm/boot/dts/imx6ul-14x14-evk.dts b/arch/arm/boot/dts/imx6ul-14x14-evk.dts
index 7207280..5687142 100644
--- a/arch/arm/boot/dts/imx6ul-14x14-evk.dts
+++ b/arch/arm/boot/dts/imx6ul-14x14-evk.dts
@@ -35,6 +35,16 @@
            gpio = <&gpio1 9 GPIO_ACTIVE_HIGH>;
            enable-active-high;
        };
+
+       wlreg_on: fixedregulator@100 {
+           compatible = "regulator-fixed";
+           regulator-min-microvolt = <5000000>;
+           regulator-max-microvolt = <5000000>;
+           regulator-name = "wlreg_on";
+           gpio = <&gpio5 1 GPIO_ACTIVE_HIGH>;
+           startup-delay-us = <100>;
+           enable-active-high;
+       };
    };
 };
  
@@ -123,12 +133,17 @@
    status = "okay";
 };
  
+&reg_sd1_vmmc {
+   regulator-always-on;
+};
+
 &usdhc1 {
    pinctrl-names = "default", "state_100mhz", "state_200mhz";
    pinctrl-0 = <&pinctrl_usdhc1>;
    pinctrl-1 = <&pinctrl_usdhc1_100mhz>;
    pinctrl-2 = <&pinctrl_usdhc1_200mhz>;
    cd-gpios = <&gpio1 19 GPIO_ACTIVE_LOW>;
+   no-1-8-v;
    keep-power-in-suspend;
    wakeup-source;
    vmmc-supply = <&reg_sd1_vmmc>;
@@ -317,7 +332,7 @@
    pinctrl_usdhc1: usdhc1grp {
        fsl,pins = <
            MX6UL_PAD_SD1_CMD__USDHC1_CMD       0x17059
-           MX6UL_PAD_SD1_CLK__USDHC1_CLK       0x10059
+           MX6UL_PAD_SD1_CLK__USDHC1_CLK       0x10071
            MX6UL_PAD_SD1_DATA0__USDHC1_DATA0   0x17059
            MX6UL_PAD_SD1_DATA1__USDHC1_DATA1   0x17059
            MX6UL_PAD_SD1_DATA2__USDHC1_DATA2   0x17059
@@ -325,6 +340,7 @@
            MX6UL_PAD_UART1_RTS_B__GPIO1_IO19       0x17059 /* SD1 CD */
            MX6UL_PAD_GPIO1_IO05__USDHC1_VSELECT    0x17059 /* SD1 VSELECT */
            MX6UL_PAD_GPIO1_IO09__GPIO1_IO09        0x17059 /* SD1 RESET */
+           MX6UL_PAD_SNVS_TAMPER1__GPIO5_IO01 0x3029
        >;
    };
  
@@ -336,7 +352,7 @@
            MX6UL_PAD_SD1_DATA1__USDHC1_DATA1 0x170b9
            MX6UL_PAD_SD1_DATA2__USDHC1_DATA2 0x170b9
            MX6UL_PAD_SD1_DATA3__USDHC1_DATA3 0x170b9
-
+           MX6UL_PAD_SNVS_TAMPER1__GPIO5_IO01 0x3029
        >;
    };
  
@@ -348,6 +364,7 @@
            MX6UL_PAD_SD1_DATA1__USDHC1_DATA1 0x170f9
            MX6UL_PAD_SD1_DATA2__USDHC1_DATA2 0x170f9
            MX6UL_PAD_SD1_DATA3__USDHC1_DATA3 0x170f9
+           MX6UL_PAD_SNVS_TAMPER1__GPIO5_IO01 0x3029
        >;
    };