Marvell Embedded SDIO Wifi Success
As detailed in the article I wrote back in September of 2007 (http://bec-systems.com/web/content/view/75/9/), getting  embedded wifi modules functioning is not a simple task.  However, due to recent advances in the Linux kernel, it looks like a viable solution for low-mid volume products is emerging.  This article provides a few details on how to get a Zcomax (Zcom) XG-180MU module working with a PXA270 processor.

System Setup

The setup used includes:

  • Zcomax XG-180MU SDIO Wifi module
  • Compulab cm-x270 + sb-x270 system (includes the PXA270 processor)
  • Linux kernel 2.6.24-rc5
  • OpenEmbedded







Support for the Marvell 8385 and 8686 based Wifi chipsets is now included in the mainstream Linux kernel 2.6.24 release candidate source code.  To use this driver, enable the CONFIG_LIBERTAS_SDIO option.  I also had to enable the CONFIG_WIRELESS_EXT option to prevent a compile error, but this is probably required anyway to build a functioning wireless system.

Firmware

The firmware for the Marvell SDIO wifi solutions is downloaded at runtime, so the next challenge is to find firmware files.  I am working on a project that has access to a driver from Marvell, so I was able to extract this firmware from their source code header files.  I'm sure there are other places where this firmware is available.   The firmware files must be placed in the following location:

root@cm-x270:~$ ls /lib/firmware/sd*
/lib/firmware/sd8385.bin /lib/firmware/sd8385_helper.bin

The version of udev used in OpenEmbedded determines the location of the firmware files.  The Libertas Linux driver requests these firmware files, and a userspace component of udev provides these files to the kernel.

Success

The following kernel modules are required:

root@cm-x270:~$ lsmod
Module Size Used by
pxamci 7008 0
libertas_sdio 8488 0
mmc_core 46868 2 pxamci,libertas_sdio
libertas 85288 1 libertas_sdio
ieee80211 29956 1 libertas
ieee80211_crypt 4768 1 ieee80211
root@cm-x270:~$

And the result:

root@cm-x270:~$ modprobe pxamci
root@cm-x270:~$ mmc0: new SDIO card at address 0001
libertas: eth1: Marvell WLAN 802.11 adapter
ifconfig -a
... 
eth1      Link encap:Ethernet  HWaddr 00:60:B3:34:77:66
UP BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)

Very nice!

So it looks like there is finally an embedded Wifi solution for products that sell less than 500,000 units per year.  I also briefly tried this on a AT91SAM9260 system, but it did not work.  So there is still some work to do on the Linux SDHC driver for the AT91SAM9260.

 


LIST OF COMMENTS


1/4. kobi lev
Written by kobi lev
Tuesday, July 01 2008
Website
Hi ! I ahave a running system with 2.6.21 . Do you think it is possible to import the new SDIO stack to it ? Regards,Kobi

2/4. porting to 2.6.21
Written by Cliff Brake
Tuesday, July 01 2008
Website
Hello. I suspect it would be _much_ easier to move your product to the latest kernel vs backporting the Linux SDIO stack and drivers to 2.6.21. -- Cliff

3/4. Zcomax XG-180
Written by Bernhard W?rndl-Aich
Tuesday, July 15 2008
Website
Hi! Where did you get the Zcomax XG-180 from? I try to implement wifi on the Atmel AP7000, but the problem is finding and getting (quite hard as poor student) a suitable module. Regards Bernhard W?rndl-Aichriedler

4/4. any viable solution for ap7000 on ngw100?
Written by mnunes
Friday, July 25 2008
Website
I wanna use the ngw100 on a project but i really need wifi for it, so theres any viable solution to implement wifi on the ap7000?

Add Comments
 
Last Updated ( Wednesday, 09 January 2008 )