Wicd – NetworkManager that just works
Wicd is an application that manages wired and wireless connections in nice and easy manner. You might say that NetworkManager already does that and is enabled by default, but wicd has several important advantages over NM. Here are few:
- It just works. Really.
- Wicd works in the background as a daemon that connects to the network as soon as system starts up, not only after logging into user’s desktop. (You’ll consider that as a HUGE advantage if for some reason X server won’t start one day and you’d end up stuck in text-mode only, desperately looking for solutions.)
- It doesn’t ask you for a keyring/WEP/WPA passwords over and over. You type it into connection profile only once and forever.
- Allows you to define static IP/DNS configuration without a hassle.
- Did I mention wicd just works?
However, wicd has been designed in Ubuntu users in mind, and installing it in Fedora might be a little pain. Fortunately, there is no need for manual compilation (python power!), and Fedora installation is quite nicely documented in wicd’s wiki. It’s still quite a lot of handwork in command line, tough.
Lazy (almost) RPM solution
I’ve googled around and found the latest wicd 1.4.2 (as of writing this post) packed into single RPM file. It works, but I’ve noticed initscript included in that RPM is not quite Fedora-friendly, hence wicd doesn’t run as a service (which means – doesn’t work at all). To fix this, we need to change /etc/init.d/wicd file:
#! /bin/sh
#
# /etc/init.d/wicd
#
# chkconfig: - 98 02
# description: Wicd is a wireless and wired network manager for Linux.
# Source function library.
. /etc/rc.d/init.d/functions
case "$1" in
start)
echo -n "Starting wicd services: "
daemon /opt/wicd/daemon.py 2> /dev/null
touch /var/lock/subsys/wicd
;;
stop)
echo -n "Shutting down wicd services: "
killall daemon.py 2> /dev/null
rm -f /var/lock/subsys/wicd
;;
status)
if pidofproc daemon.py > /dev/null ; then
echo "wicd is running."
else
status wicd
fi
;;
restart | reload)
$0 stop
$0 start
;;
*)
echo "Usage: wicd {start|stop|status|reload|restart}"
exit 1
;;
esac
Do not forget to make it executable with chmod a+x /etc/init.d/wicd. It might be possible that wicd would still not run and crash complaining (when executed from terminal) something about D-BUS undefined objects etc. I’ve had that issue and figured out that /etc/dbus-1/system.d/wicd.conf file should look more or less like this:
<!-- This configuration file specifies the required security policies
for connection-manager to work. -->
<!DOCTYPE busconfig PUBLIC "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
"http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
<busconfig>
<!-- ../system.conf have denied everything, so we just punch some holes -->
<policy context="default">
<allow own="org.wicd.daemon"/>
<allow send_destination="org.wicd.daemon"/>
<allow send_interface="org.wicd.daemon"/>
<allow receive_sender="org.wicd.daemon"/>
</policy>
</busconfig>
Accessing GUI and tray icon
Wicd should be accessible through Applications -> Internet -> Wicd, however it is also possible to make an icon to appear in tray area by executing /opt/wicd/tray.py, and ideally inserting it into desktop session startup scripts (System -> Preferences -> Personal -> Sessions).
OK, but what is actually wrong about NetworkManager?
I’ve really wanted to get a true fan of NetworkManager lately. After being completely useless in previous Fedora releases, NM managed to impress me after installing Fedora 9 on my laptop. It actually worked! To be fair, I must admit it gained quite a lot of improvements for F9 release and is now in pretty usable state. However, the new and most interesting NM feature for me – support for GPRS/3G connections – turned out to be buggy and not functional at all. I’ve even reported it in bugzilla, but no one seems to be bothered. Other than that, I really hate the idea of being asked for a password each time something fails, also being completely offline once logged out from desktop is just wrong. So, at least for now, I won’t be a true fan of NM and continue using and recommending wicd.
August 15, 2008 at 3:10
I’m a bit late to this comment but let me answer your question for you. (and yes, I fully realize it was rhetorical.)
OK, but what is actually wrong about NetworkManager?
There is NO bridge from problem to solution. As is the case most often, Free Open Source Software is written with the assumption that since it works for the author(s) it will work for everyone. That’s a real problem for those of us who want to advocate Linux to new users. A real big problem. Case on point from a recent experience. One that has repeated itself a couple dozen times in the past six months.
HeliOS Solutions installs Linux on new users computers. Often, and more often than you would imgagine, some people tell us they want UBUNTU installed on their computers. If the hardware profile shows a 845/945 intel chipset, we strongly advice against it because of the “second update bug”. A bug by the way that has existed and went unanswered/unfixed for three years. Most of it has anyway. If they insist on Ubuntu, we tell them there will be no warranty on the install. If they still want ubuntu, one of the FIRST things we do is uninstall Network Manager and install Wicd. Here’s why. (finally)
With Network Manager, there is NO bridge between problem and solution. If it doesn’t work, and it doesn’t work more often than it should…there is nothing telling the new Linux user how to go about making it work. Now this is going to be perceived as an attack on Ubuntu…attack is a bit strong. The fact is, they’ve known about this “issue” for a few years…they’ve decided it’s “good enough” for us. That sucks.
In other distros, and I am personally of late partial to Mandriva, when you set up your install, it walks you through wired AND wireless connections as part of the setup. If your pci card or device is not natively supported, then it is not in the list, but the nsidwrapper option is and if you have a wired connection, it takes you straight to the website that has the exact driver you need to use the wrapper. THAT is new user support.
So our poor New Ubuntu Users, determined to get their wireless working, pull out the shotgun method. They start installing via synaptic every wireless networking tool they can find in hopes of getting wireless up and running. Thats how most people find Wicd. And yes, I rarely have wicd fail. It rocks…wifi radar works well too but not with the “sure every time” connectivity of Wicd.
Thanks for bringing this topic up. And as I look at the date you wrote this I just shake my head. Ubuntu STILL hasn’t fixed Network Manager…or most of their other 3 year old problems.
That’s sad.
h
August 15, 2008 at 6:38
Thanks for you constructive comment, helios. I really enjoyed that bit with setting up wireless adapter at the installation stage in Mandriva. Some other distros still have a long way to go…
September 2, 2008 at 18:56
Helios,
I have a great deal of experience in open source and I appreciate that it sometimes comes complete with it’s own peculiarites and problems. However, this NetworkManager thing is the worst piece of software I have ever come across. Not only does it randomly drop my wireless connection, it also sometimes puts the router into a state whereby not even Windows Vista will connect to it from the same machine (dual boot).
It is inconsistent, and frequently drops itself into a state where you can do nothing with it. It also appears to have several modes of operation which seem to randomly present themselves and eventually, it is impossible to get the thing to connect at all. It is going to /dev/null shortly and I never want to see it again.
This has to be some reflection on the authors because if they cannot get this software anywhere near right after several years then something is sadly lacking. I also question the wisdom of the distributors of Fedora and Ubuntu for including it in their distros.
Sometimes things are better done with shell (or PERL) scripts, or made to rely on manually edited config files. Sometimes the generic GUI approach is not suitable—especially when it appears that the developers couldn’t care less whether it works or not.
Having spent the best part of two days solid in trying to get this rubbish to work, I will be trying wicd or a PERL script. If I have time after that, I may even get round to writing a proper program to drive it all in a proper language like C++.