I'm trying to integrate a SparkLan SWDB-104 WiFi module on a compute module 3. This module uses a broadcom chipset (BCM43438). To my knowledge this is the same chipset which was also used on the RPI3.
The module is connected on the secondary SDIO port on the compute module. In order to activate the SDIO interface, I loaded the 'sdio' device tree overlay. Afterwards, 'raspi-gpio get' shows that the pins 22-27 are configured accordingly:
The stock kernel does already include drivers for the BCM43438 chipset. After a short search, I found that it‘s (probably) the 'brcmfmac' driver. After loading the driver with modprobe and checking with lsmod, I get:...
GPIO 20: level=0 fsel=0 func=INPUT
GPIO 21: level=0 fsel=0 func=INPUT
GPIO 22: level=1 fsel=7 alt=3 func=SD1_CLK
GPIO 23: level=1 fsel=7 alt=3 func=SD1_CMD
GPIO 24: level=1 fsel=7 alt=3 func=SD1_DAT0
GPIO 25: level=1 fsel=7 alt=3 func=SD1_DAT1
GPIO 26: level=1 fsel=7 alt=3 func=SD1_DAT2
GPIO 27: level=1 fsel=7 alt=3 func=SD1_DAT3
BANK1 (GPIO 28 to 45):
...
Code: Select all
Module Size Used by
bnep 20480 2
brcmfmac 307200 0
brcmutil 16384 1 brcmfmac
bluetooth 368640 7 bnep
ecdh_generic 28672 1 bluetooth
fuse 106496 3
cfg80211 573440 1 brcmfmac
rfkill 28672 4 bluetooth,cfg80211
joydev 20480 0
evdev 24576 6
snd_bcm2835 32768 1
snd_pcm 98304 1 snd_bcm2835
snd_timer 32768 1 snd_pcm
snd 69632 5 snd_timer,snd_bcm2835,snd_pcm
i2c_bcm2835 16384 0
uio_pdrv_genirq 16384 0
uio 20480 1 uio_pdrv_genirq
fixed 16384 0
i2c_dev 16384 0
ip_tables 24576 0
x_tables 32768 1 ip_tables
ipv6 434176 42
Looking at the dmesg‘ output I see:
It appears to me like the module was detected correctly (brcmfmac43430), but then there are two timeouts reported. I don‘t know wether these timeouts are critical errors. But I don‘t get any wlan interface on Linux. So WiFi is currently unusable on my board.[ 125.365582] mmc-bcm2835 3f300000.sdio: /aliases ID not available
[ 125.365713] mmc-bcm2835 3f300000.sdio: mmc_debug:0 mmc_debug2:0
[ 125.365718] mmc-bcm2835 3f300000.sdio: DMA channel allocated
[ 125.435755] mmc2: queuing unknown CIS tuple 0x80 (2 bytes)
[ 125.437287] mmc2: queuing unknown CIS tuple 0x80 (3 bytes)
[ 125.438816] mmc2: queuing unknown CIS tuple 0x80 (3 bytes)
[ 125.441789] mmc2: queuing unknown CIS tuple 0x80 (7 bytes)
[ 125.539281] mmc2: new high speed SDIO card at address 0001
[ 125.597409] brcmfmac: F1 signature read @0x18000000=0x1541a9a6
[ 125.611178] brcmfmac: brcmf_fw_map_chip_to_name: using brcm/brcmfmac43430-sdio.bin for chip 0x00a9a6(43430) rev 0x000001
[ 125.611346] usbcore: registered new interface driver brcmfmac
[ 129.941845] brcmfmac: brcmf_sdio_htclk: HT Avail timeout (1000000): clkctl 0x50
[ 131.011873] brcmfmac: brcmf_sdio_htclk: HT Avail timeout (1000000): clkctl 0x50
‚rfkill list‘ shows nothing. ‚lshw -short‘ reports:
Code: Select all
/W path Device Class Description
========================================
system Raspberry Pi Compute Module 3 Rev 1.0
/0 bus Motherboard
/0/0 processor cpu
/0/1 processor cpu
/0/2 processor cpu
/0/3 processor cpu
/0/4 memory 875MiB System memory
/1 usb1 bus DWC OTG Controller
/1/1 bus SMC9512/9514 USB Hub
/1/1/1 generic SMSC9512/9514 Fast Ethernet Adapter
/1/1/2 input HP USB Slim Keyboard - Skylab EU
/1/1/3 input USB Optical Mouse
/2 eth0 network Ethernet interface
1) Is the sdio dtoverlay the right one to use? Or do I have to create a custom overlay?
2) Is the driver I used the correct one?
3) Is there anything else that needs to be confgured/setup in Userland to get the wlan interface up and running?
Any inputs are greatly appreciated!