Wicd
From ArchWiki
| i18n |
|---|
| English |
| Italiano |
| 简体中文 |
| Türkçe |
Contents |
Introduction
Wicd is a network connection manager that can manage wireless (a la Wifi Radar) and wired interfaces, similar and an alternative to NetworkManager. Wicd is written in Python and GTK+, requiring less dependencies than other network managers.
Installation
Standard Installation
Wicd is available from the standard repositories:
# pacman -S wicd
This will install Wicd and all the necessary dependencies, including dbus, python and gtk2.
You will likely want DHCP, secure wireless management, and GUI icons as well:
# pacman -S dhclient wpa_supplicant hicolor-icon-theme
Other Packages
The wicd-bzr buildscript is available from AUR, which should build the latest development branch.
If you need an alternative version or you just want to roll your own package, you can easily (re)build it using ABS.
Getting Started
Initial Setup
Wicd provides a daemon that must be started before the tool can be used. Also, running multiple network managers will cause problems, so it is important to disable all other network management daemons.
First, stop all previously running network daemons:
# /etc/rc.d/network stop # /etc/rc.d/dhcdbd stop # /etc/rc.d/networkmanager stop
Now, edit /etc/rc.conf as root:
# nano /etc/rc.conf
Disable (!) any devices in the INTERFACES array that you wish to manage with Wicd. For example:
INTERFACES=(!eth0 !wlan0)
Disable (!) any existing network management daemons in the DAEMONS array, including network, dhcdbd, and networkmanager.
Now, add dbus (if not already present) and wicd to the DAEMONS array, in that order. The DAEMONS array should now look something like this:
DAEMONS=(syslog-ng dbus !network !dhcdbd !networkmanager wicd ...)
Note: If you use hal, replace dbus with hal in DAEMONS array, as the hal daemon will automatically start dbus.
Save and close.
Add your account to network group:
# gpasswd -a USERNAME network
Lastly, start the dbus and wicd daemons:
# /etc/rc.d/dbus start # /etc/rc.d/wicd start
Note: In case dbus is already running, you will need to restart it:
# /etc/rc.d/dbus restart
Running Wicd
To load Wicd, run:
$ wicd-client
Or if your desktop environment does not have a notification area, run:
$ wicd-client -n
You can add wicd-client to your DE/WM startup to have the application start when you log in. Note that Wicd doesn't prompt you for a passkey. To use encrypted connections (WPA/WEP), expand the network you want to connect to, click 'Advanced', and enter the relevant info.
Troubleshooting
D-BUS
If you had dbus already running, but for some reason wicd complains about it, restart both.
# /etc/rc.d/dbus stop # we are stopping manually instead of restarting to eliminate possible errors # /etc/rc.d/wicd stop # /etc/rc.d/dbus start # /etc/rc.d/wicd start
Hidden Wireless Networks and Autoconnection HACK
I had problems with my hidden network and the autoconnection function of wicd. It seems that the essid of my hidden network is not "<hidden>", but an empty string. Connect manually to the network and run:
$ iwlist scan
Output of my hidden network:
...
wlan0 Scan completed :
Cell 01 - Address: xx:xx:xx:xx:xx:xx
ESSID:""
Mode:Master
Channel:11
...
If you have the same problems and your iwlist output shows ESSID:"", change /usr/lib/wicd/networking.py:
cd /usr/lib/wicd sed -i.orig -e 's/if CurrentNetwork\["essid"\] == "<hidden>":/if CurrentNetwork\["essid"\] \ == "<hidden>" or CurrentNetwork\["essid"\] == "":/' networking.py
This changes /usr/lib/wicd/networking.py and saves a backup of the original file to /usr/lib/wicd/networking.py.orig.
Based on wicd version 1.4.1-4
Connecting as a Normal User
From wicd 1.6.0 one must change one line in /etc/dbus-1/system.d/wicd.conf to make it work. This may or may not be fixed in a future package. From:
<policy user="root">
<allow own="org.wicd.daemon"/>
<allow send_destination="org.wicd.daemon"/>
<allow send_interface="org.wicd.daemon"/>
<allow send_destination="org.wicd.daemon.wireless"/>
<allow send_interface="org.wicd.daemon.wireless"/>
<allow send_destination="org.wicd.daemon.wired"/>
<allow send_interface="org.wicd.daemon.wired"/>
<allow send_destination="org.wicd.daemon.config"/>
<allow send_interface="org.wicd.daemon.config"/>
</policy>
to
<policy group="network">
<allow own="org.wicd.daemon"/>
<allow send_destination="org.wicd.daemon"/>
<allow send_interface="org.wicd.daemon"/>
<allow send_destination="org.wicd.daemon.wireless"/>
<allow send_interface="org.wicd.daemon.wireless"/>
<allow send_destination="org.wicd.daemon.wired"/>
<allow send_interface="org.wicd.daemon.wired"/>
<allow send_destination="org.wicd.daemon.config"/>
<allow send_interface="org.wicd.daemon.config"/>
</policy>
And then restart dbus and wicd.
/etc/rc.d/dbus stop /etc/rc.d/wicd stop /etc/rc.d/dbus start /etc/rc.d/wicd start