[mdlug] Attempts at manually restarting wireless kernal module
Drew
drew4096 at gmail.com
Sun Dec 13 00:19:08 EST 2009
Per my discussion with a couple of members at today's mdlug, I'm
recapping my efforts at
solving an issue with the wireless card in my desktop computer.
What I need to do:
Remove the module which runs the acx100 wireless card, then put
it back in, without
rebooting the entire system.
Why:
It's the only reliable means I've found so far to restore a
wireless connection after something
(interference from aircraft radar probably) screws up the connection.
Telling when the connection gets screwed up:
I've found that the loss of connection correlates strongly with
the Signal Strength number in
/proc/net/wireless for wlan0. A working connection will have this
number (a) almost always
ending in a decimal point or period ("."), and (b) varying in value
almost every second. When a
connection goes bad, this number becomes *constant* - and is never
zero!. Also, the ending
decimal point/period disappears. A script that I had running in
Fedora 4 watched for this condition
as a signal to restart the module.
Previous handling:
As indicated, I had the problem solved "in software" under
Fedora 4 with a script that watches
for the connection to go bad, then runs other scripts that came with
the driver that I had previously
downloaded, compiled, and installed separately (Fedora 4 itself did
not come with an acx100 driver),
which rmmod'ed then insmod'ed the module. This not only restored the
connection (at least until
it would get jammed again) but allowed downloading already in
progress to continue and eventually
finish.
Current situation:
I'm now running Suse 11 which comes with an acx driver.
Unfortunately, even though it starts up
properly during boot, removing and reinserting the module fails when
attempted from the command line.
dmesg indicates that it is failing to find the card firmware files
(in /lib/firmware). The previous driver
accepted a firmware_dir= parameter, but this version does not. Nor
have I been able to figure out just
how it's managing to find these files during boot.
I've tried the following:
insmod and rmmod, and modprobe. Fails to find firmware.
insmod/rmmod/modprobe with firmware_dir=/lib/firmware. Does not
recognize parameter; "invalid symbol"
Recompiling the previous driver for Suse 11. Fails due to a
missing config.h somewhere; apparently Suse 11
has bad kernel sources.
Creating a new Fedora 4 partition. *Works!* However, there are
other problems with this too numerous
to deal with, including Flash Player refusing to install due to
missing glibc. (Fedora 4 glibc is probably too
out of date for current Flash Player.)
Per suggestion at mdlug:
rcnetwork start, restart, and try-restart. Runs without error,
but does not restore the signal strength
number to a "good" condition (Remains flatlined).
hald, udevd, and udevadm trigger. Does not restore wlan0, nor do
any of them correct the flatline
condition if I leave the module in.
What I am seeking: Any of the following:
What exactly to enter as a parameter, or otherwise how to get
the kernel to know where to find
those firmware files.
How exactly this is being done during boot (when the files *do*
successfully get found).
Generally, how to find out, from the .o or .ko file, what
parameters a kernel module takes.
Where or how to get a log of the commands, with their
parameters, that get executed during
boot - especially those that start kernel modules - as opposed to
just the output which dmesg
gives. To wit, an input equivalent of dmesg.
A way to "restart" a kernel module without removing it.
Something like a modprobe --restart.
Any other way to actually shut down and restart the card itself
(not just the "network"). That
is, restart it at the hardware level.
Thanks;
Drew.
More information about the mdlug
mailing list