So i finally got working wifi(yay!) on the Nvidia Tegra2 250 Developer board.
I found this atheros ar6k repository by mistake, so i decided to try if i was able to compile the driver and get it working. It works, but you need to modify the sourcecode to replace the paths of the firmware, since they are defined for android, before compiling the driver. I’m also writing this post so i don’t forget how i compiled the driver 🙂
So let’s start supposing you’ve followed my tegra2 Gentoo installation guide or you at least have an ARM crosscompiler, know how to use it, and you use it to compile your tegra2 kernel.
- First you need GIT in your system *AND* a compiled kernel source(and an ARM crosscompiler).
- Then checkout the ar6k repository from here:
# git clone git://nv-tegra.nvidia.com/3rdparty/atheros.git
This will checkout the repository into the directory you are right now.
- cd into the atheros/ar6k_sdk/host directory, and fix the firmware path:
# cd atheros/ar6k_sdk/host
# sed -i -e 's:/system/lib/hw/wlan/:/lib/firmware/:g' os/linux/ar6000_drv.c
Now we compile the module, but you probably need to change the variables definitions to suit your system. For example in my case, the compiled kernel source is at /root/tegra/linux-2.6/ and my crosscompiler is called armv5tel-softfloat-linux-gnueabi-
# make ATH_LINUXPATH=/root/tegra/linux-2.6/ ATH_CROSS_COMPILE_TYPE=armv5tel-softfloat-linux-gnueabi-
If everything went right, you now have a file called ar6000.ko in your os/linux/ . Copy it to your nvidia tegra board.
You’ll also need to copy the firmware files located in atheros/ar6k_sdk/target into the /lib/firmware directory on your tegra system.
Once you’ve copied everything, you can do a ‘insmod ar6000.ko’ in your tegra2 board and some messages will show up on dmesg and a wlan0 interface should appear.
The driver seems to work fine, i was able to connect to my WPA/WPA2 802.11g AP.
Magnus Damm on the comments commented about getting the driver to compile with a >=2.6.35-rc kernel. He says that you need to have CONFIG_WIRELESS_EXT enabled and he also thinks that CONFIG_WEXT_PRIV is also needed.
I can’t try it since the tegra kernel is stuck on 2.6.29, but its good to know 🙂