Jim Hawkins wrote:
On Wed, 21 Jul 2010, Stuart Winter wrote:
I'm not too familiar with why the kernel firmware stuff gets built but I
suspect it's just because support for a specific driver is compiled in,
or is compiled as a module, so the corresponding fw is built and
packaged/installed when "make modules_install" is run.
Some of the firmwares needed by the drivers are not created as part of the
kernel build. They are binary blobs (often extracted from the Windows
drivers) which get uploaded to the hardware by the Linux kernel drivers to
make the devices operate as intended. As such, the legality of
distributing some of them is a bit dubious.
Is this why for the Globalscale GuruPlug's wifi drivers, I had to copy the
debian /lib/firmware/mrvl files
r...@guruslack:/lib/firmware/mrvl# l
total 512
-rwxr-xr-x 1 root root 2616 2010-05-27 23:54 helper_sd.bin*
-rw-r--r-- 1 root root 278640 2010-05-27 23:54 sd8688.bin
-rwxr-xr-x 1 root root 222572 2010-05-27 23:54 sd8688_ap.bin*
-rw-r--r-- 1 root root 2616 2010-05-27 23:54 sd8688_helper.bin
in order to get the wifi access point functionality working? I couldnt find
these in the standard kernel and it kept complaining every time I loaded the
uap8xxx driver that it couldnt find the firmware.
Here is what a good boot looks like after I copied the firmware
[ 59.381185] uap_probe: vendor=0x02DF device=0x9104 class=0 function=1
[ 59.401417] uap_sdio mmc0:0001:1: firmware: requesting mrvl/helper_sd.bin
[ 59.424156] uap_sdio mmc0:0001:1: firmware: requesting mrvl/sd8688_ap.bin
[ 59.718283] UAP FW is active
one set of binaries is for access point, one set is for client (I believe).
My /etc/rc.uap:
#!/bin/sh
# rc.uap: start/stop/restart Marvell access point subsystem.
#
# Load the kernel module and configure the access point
# for the Marvell wireless adapter in the Guru Plug PC
# using the binary (uaputl) copied from the Debian distribution
# that came with the Guru Plug PC since no source could be found
# as well as the firmware files that were not found with the
# standard kernels.
#
# Make sure to set up your dhcpd.
#
# This script sets up the wireless network as a separate network and
# assumes all your wireless devices will be NAT'ed out to your
# wired network.
#
# John O'Donnell <[email protected]>
#
# The IP address of the access point
UAPIP=192.168.100.1
SSID=Pinguinista
PROTOCOL=32
WPA_PASSPHRASE=SomeUberSuperSecretPassword
CIPHER="8 8"
NATDEV=eth2
UAPDEV=uap0
CHANNEL=6
uap_start() {
if [ -x /usr/bin/uaputl ]; then
modprobe uap8xxx
ifconfig ${UAPDEV} ${UAPIP} up
uaputl sys_cfg_radio_ctl 0 # Radio on
uaputl sys_cfg_channel ${CHANNEL}
uaputl sys_cfg_ssid ${SSID}
uaputl sys_cfg_protocol ${PROTOCOL}
uaputl sys_cfg_wpa_passphrase ${WPA_PASSPHRASE}
uaputl sys_cfg_cipher ${CIPHER}
uaputl bss_start
# Set firewall to NAT these clients
iptables -t nat -A POSTROUTING -o ${NATDEV} -j MASQUERADE
# Set leds
echo 1 > `eval ls /sys/class/leds/guruplug\:green\:health/brightness`
echo 1 > `eval ls /sys/class/leds/guruplug\:green\:wmode/brightness`
echo 0 > `eval ls /sys/class/leds/guruplug\:red\:health/brightness`
echo 0 > `eval ls /sys/class/leds/guruplug\:red\:wmode/brightness`
# Startup DHCPD
/etc/rc.d/rc.dhcpd start
fi
}
uap_stop() {
if [ -x /usr/bin/uaputl ]; then
/etc/rc.d/rc.dhcpd stop
ifconfig ${UAPDEV} ${UAPIP} down
uaputl bss_stop
uaputl sys_cfg_radio_ctl 1 # Radio off
iptables -t nat -D POSTROUTING -o ${NATDEV} -j MASQUERADE
modprobe -r uap8xxx
# Set leds
echo 0 > `eval ls /sys/class/leds/guruplug\:green\:health/brightness`
echo 0 > `eval ls /sys/class/leds/guruplug\:green\:wmode/brightness`
echo 0 > `eval ls /sys/class/leds/guruplug\:red\:health/brightness`
echo 0 > `eval ls /sys/class/leds/guruplug\:red\:wmode/brightness`
fi
}
uap_status() {
echo
"--------------------------------------------------------------------------"
uaputl sys_info # display system info
uaputl sta_list # display list of clients
echo
"--------------------------------------------------------------------------"
exit 0
}
uap_restart() {
uap_stop
uap_start
}
case "$1" in
'start')
uap_start
;;
'stop')
uap_stop
;;
'status')
uap_status
;;
'restart')
uap_restart
;;
*)
echo "usage $0 start|stop|restart"
esac
--
=== Never ask a geek why, just nod your head and slowly back away.===
+================================+==================================+
| John O'Donnell | |
| (Sr. Systems Engineer, | http://juanisan.homeip.net |
| Net Admin, Programmer, etc.) | E-Mail: [email protected] |
+================================+==================================+
No man is useless who has a friend, and if we are loved we are
indispensable. -- Robert Louis Stevenson
_______________________________________________
ARMedslack mailing list
[email protected]
http://lists.armedslack.org/mailman/listinfo/armedslack