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