wifiroamd, Intel PRO/Wireless 3945ABG, and Fedora
One of the things that has annoyed me about Fedora has been the decision to switch over to using NetworkManager to manage all network connections.
Now, on the service this has a lot of advantages. A lot of work has gone into it, and it just works for a vast majority of the installations out there. They have made it so the move from wired to wireless and back can be done without the user doing anything. They have also seamlessly tied in Dial-Up Networking if you still need a modem or use a wireless modem. They even have two-click access to your VPN which is pretty cool.
All these are things which are very good for Linux users. The biggest drawback to all this? The need for a user-space program to manage the non-hardwired connections. Which means that in order to be able to have any network running besides the good old twisted-pair copper, you have to have a little applet running as you, and it has to have a systray somewhere to display. Which means you have to be a) logged into the system and b) you have to be running a window manager which supports having a system tray. Now, Fedora gives you lots of choices for the second part now days. You have Gnome, KDE, XFCE, and LXDE. All are perfectly usable window managers. But, they still require you to be logged in to X. And, I do not use any of them.
So, what is a cli-loving Fedora user to do? Well, there is this great program called wifiroamd. It will handle the same basic tasks that NetworkManager handles. It will automatically configure your wifi interface and connect to the wifi networks or the locate hardwired NIC if it cannot. You can configure it to run scripts per connection, so for example, you can change your firewall rules for different networks (shields down at home or the office, but up full at the coffee house), or you could bring up your VPN connection when you start using a given wireless network.
One tip I picked up from the author was that if you have multiple AP's in range, an you want to select once AP over the other, is under the /etc/wifiroamd/connections directory, simply link the AP info you do not want to the one you want:
ln essid:my_home_ap essid:bad_ap
where essid:my_home_ap is your AP with the keys and other information you want, and essid:bad_ap is the one you do not want to connect to. My neighbors have some very powerful AP's which have a habit of showing up high than mine, but I have no problem with them now.
I have been using this set up under Fedora since FC6 days, but when I upgraded to F10, this stopped working. wifiroamd would try to scan for an AP, and not find anything. The change, it turns out, is that when I switched from using the iw3945 driver to the native iwl3945, wifiroamd could no longer see the wireless NIC due to the wpa_supplicant process, but NetworkManager could. Simply stopping and disabling wp_supplicant and NetworkManager, and wifiroamd started working again! I am a happy camper again.