↓ Archives ↓

Archive → October, 2012

SDIO support for libertas_tf

Here are the required patches and kernel config:
tf-sdio-patches.tar.gz

Assuming you are using the current yocto meta-gumstix layer, then place the patches in ~/yocto/poky/meta-gumstix/recipes-kernel/linux/linux-sakoman-3.5

libertas-tf-sdio.patch
046-122-mac80211-fix-crash-with-single-queue-drivers.patch

Place the new defconfig inĀ 
~/yocto/poky/meta-gumstix/recipes-kernel/linux/linux-sakoman-3.5/overo

Edit the linux-sakoman_3.5.bb recipe to apply the patches:

SRC_URI = "git://www.sakoman.com/git/linux.git;branch=omap-3.5;protocol=git \
           file://libertas-tf-sdio.patch \
           file://046-122-mac80211-fix-crash-with-single-queue-drivers.patch \
           file://defconfig \
           file://${BOOT_SPLASH} \
           "

Clean and rebuild the kernel and modules with the following commands:

$ bitbake -c cleanall -f virtual/kernel
$ bitbake virtual/kernel

Create your SD card, and put the thin firmware in the /lib/firmware directory.
Name them sd8686_helper.bin and sd8686tf.bin
You can get them here:
sd8686_helper.bin
lbtf_sdio-9.0.7.p4.bin

When you boot, you will see the following message at boot, but wlan0 will not be present:

[   16.643249] libertas_tf_sdio: Libertas Thinfirmware SDIO driver 
[   16.650085] libertas_tf_sdio: Copyright cozybit Inc.                         
[   16.655670] libertas_tf_sdio: buildstamp: 6

Then about 30 seconds later, after the firmware finally loads, you will get:

libertas_tf_sdio: 00:19:88:15:b1:be, fw 9.0.7p4, c3
libertas_tf: Marvell WLAN 802.11 thinfirm adapter                
libertas_tf: 00:19:88:15:b1:be, fw 9.0.7p4, cap 0x00000303       
libertas_tf: Marvell WLAN 802.11 thinfirm adapter                
IPv6: ADDRCONF(NETDEV_UP): wlan0: link is not ready

You should then be able to configure the interface, and use it with hostap, etc (assuming network-manager doesn’t get in the way). I have another set of patches which add asynchronous firmware loading, but they need a little clean up.

You may have to delete the /lib/modules/3.5.0/kernel/drivers/net/wireless/libertas directory if the fat firmware module keeps loading (or blacklist it?)

I mainly put these out here for others to try and see if someone can help with the throughput issues. I’m only seeing ~2Mbps one direction, and ~500Kbps the other.