On 05/24/2010 11:31 AM, Daniel Kahn Gillmor wrote: > At that point, i'll start looking at the wireless business again. so on my freshly wiped guruplug, i've gone ahead and re-built the uap8xxx.ko module to work with the current sid kernel. It wasn't too bad: as root, i fetched the various build dependencies needed for building modules, thanks to module-assistant: # aptitude install module-assistant # module-assistant prepare Then, i fetched the kernel patchset distributed by marvell [0], and made a simple tarball from drivers/net/wireless/libertas_uap from 0002-Driver-for-Marvell-Libertas-8688-SDIO-micro-AP-suppo.patch (the tarball i created can be found at [1]) As a regular user, i unpacked and built the tarball: $ tar xzf libertas_uap.tgz $ cd libertas_uap $ make CONFIG_LIBERTAS_UAP=m -C /lib/modules/$(uname -r)/build M=$(pwd) And as the superuser again, moved it into place and told the kernel about it: # mkdir /lib/modules/$(uname -r)/kernel/drivers/net/wireless/libertas_uap # cp uap8xxx.ko /lib/modules/$(uname -r)/kernel/drivers/net/wireless/libertas_uap # depmod -a I then placed the 2 firmware blobs (copied from another guruplug) in place: helper_sd.bin and sd8688_ap.bin, both placed in /lib/firmware/mrvl/ I also blacklisted the competing libertas modules by placing a file in /etc/modprobe.d: 0 dkg@moo:~$ cat /etc/modprobe.d/libertas_uap.conf # blacklist competing modules for the same hardware # used by libertas_uap (uap8xxx.ko) blacklist libertas_sdio blacklist libertas 0 dkg@moo:~$ And then i was in business: 0 root@moo:~# ip link show uap0 Device "uap0" does not exist. 255 root@moo:~# modprobe -v uap8xxx insmod /lib/modules/2.6.32-5-kirkwood/kernel/drivers/net/wireless/libertas_uap/uap8xxx.ko 0 root@moo:~# ip link show uap0 4: uap0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000 link/ether 00:24:23:YY:WW:ZZ brd ff:ff:ff:ff:ff:ff 0 root@moo:~# To get to act as an AP, i had to copy /usr/bin/uaputl from another guruplug. It seems to work fine. If no one has gotten the code from marvell, i'll look into replacing uaputl -- it doesn't look too complex. hope folks find this useful, --dkg PS boot your kernel with the verbose option when doing this stuff. it provides useful info about the firmware loading. PPS i find that if you have modprobe uap8xxx.ko when no firmware is available, shutting down tickles a kernel bug: > All processes ended within 1 seconds....done. > [ 1469.217114] default_device_exit: failed to move eth0 to init_net: -22 > [ 1469.223635] kernel BUG at /home/dkg/src/linux/linux-2.6-2.6.32/debian/build/source_armel_none/net/core/dev.c:5608! > [ 1469.234061] Unable to handle kernel NULL pointer dereference at virtual address 00000000 it'd be good to understand why this happens. i can give a full backtrace to anyone who is interested. [0] http://plugcomputer.org/plugwiki/images/c/c6/Guruplug-patchset-2.6.33.2.tar.bz2 [1] http://lair.fifthhorseman.net/~dkg/machines/moo/libertas_uap.tgz
Attachment:
signature.asc
Description: OpenPGP digital signature