[mdlug] Attempts at manually restarting wireless kernal module
Peter Bart
petertheplumber at att.net
Mon Dec 14 05:49:31 EST 2009
On Sun, 2009-12-13 at 00:19 -0500, Drew wrote:
> 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.
>
I would be very interested in what you find. I may have the same
trouble,openSUSE 11.1/Gnome and my wireless just stops working after a
while. I use notebooks; with two different wireless cards; so there are
suspend/resume cycles involved. Usually a <service network stop>
<service network start> is enough to get things going. Sometimes I have
to <service network stop> <modprobe -r iwl4965> <modprobe iwl4965>
<service network start> My understanding is that modprobe -r removes the
wireless driver, and modprobe inserts it. I believe I found it on
openSUSE's forum as a temporary work around.
--
Best Regards,
Peter The Plumber
More information about the mdlug
mailing list