Projects/EasyWifi

From Mandriva

Jump to: navigation, search
EasyWifi

This topic describes the status of wireless tools in Mandriva Linux, the progress made among releases, and explains technical choices.

Contents


[edit]

Introduction

Other operating systems have a simple, graphical UI to detect, configure, and connect to wireless networks.

This is much trickier on linux, because of:

  • must be root to do so
  • different drivers/cards use different commands (wireless extensions, wlan-ng)
  • many setup tools are desktop-specific (KDE, Gnome, WindowMaker...)

DrakConnect has a rudimentary setup tool, which would work fine for a stationary machine, but isn't so convenient for laptop/mobile use:

  • doesn't list available networks
  • doesn't remember settings for each network used
  • doesn't handle movement from one network into another automatically
  • doesn't report wifi status to user
  • only configurable by root

It would be nice to have a simpler, and more user-friendly system.

Development information on the EasyWifi project can be found on the Development page.

[edit]

Wireless tools on the desktop

Drakroam and NetApplet allow to show wireless status, quickly switch between wireless networks and configure them if not already done.

Image:desktop.png

[edit]

Plans

  • dbus integration would allow user to be notified when changing networks
  • make the GUI a bit tidier and more intuitive
[edit]

Status in Mandriva Linux 2006

[edit]

New user interface

Drakroam has been revamped to get a better user interface, and to use the wpa_supplicant daemon if available. Drakroam v2006 aims to be simple, and yet features leading options, such as WPA authentication.

After discussions on the mailing lists, a draft about Drakroam UI has been written.

NetApplet supports wireless networks since Mandriva Linux 2006.

[edit]

Brain-storming and critics on NetworkManager

RedHat's NetworkManager provides a nice wireless tool, but it makes the system-wide configuration confuse. See some NetworkManager critics (2006).

[edit]

Tools Created for Mandriva Linux 2006

To make EasyWifi a reality in Mandriva Linux 2006, some new tools had to be developed, and hardware support depended on technical choices.

[edit]

Wireless roaming

Drakroam was written for 10.1 by AustinActon, to ease wireless configuration and allow access point roaming. Unfortunately, it hasn't been tested a lot at Mandriva, so it wasn't directly available from the Mandriva Control Center. It has been enhanced a bit in 2005 LE, but actually it happened to be broken.

At the beginning of Mandriva Linux 2006]] development, drakroam allowed to list and connect to wireless networks, and primary settings such as WEP keys can be edited. It supported wlandetect and waproamd to implement access point roaming. However, both are unmaintained or deprecated now. They had to be be replaced by the wpasupplicant_ daemon, which can perform access point roaming and supports a wide range of authentication methods.

[edit]

Wireless monitoring

Drakroam used iwlist scanning results to get the list of detected access points. This required to fork frequently to get results, and was subject to parsing errors depending on the driver. Other wireless monitoring tools such as NetworkManager directly use iwlib to get scanning results. If these scanning results have to be shared by multiple interfaces, a daemon is needed to send scanning results to all listening interfaces (monitoring applet, configuration tools). This "spurious" daemon can be avoided by using wpasupplicant_ control interface. It allows to perform a lot of wireless related actions, as well as getting scanning results. It can be controlled by using the wpa_cli program, or by using a UNIX domain socket in /var/run/wpa_supplicant/

[edit]

Wireless applet

An applet listing available wireless networks and their link quality can be added to allow quick network switching. While the wireless applet from the NetworkManager project uses a daemon, it isn't necessary to do so if wpasupplicant_ is used as a roaming daemon. It would be good to use wpasupplicant_ by default for any wireless interface, since it handles many authentication methods, can perform roaming, and be queried using a socket (an old-fashionned alternative to D-Bus).

[edit]

wpa_supplicant and supported wireless cards

All wireless cards supporting generic wireless extensions are supported by wpa_supplicant, it even provides some drivers for cards that don't fully implement generic wireless extensions. So, most cards should be supported.

[edit]

Kernel issues

WE-18 is needed to add generic WPA support in the wireless drivers, instead of using the private _WPA_SUPPLICANT_ ioctl.

Another concern is that the broadly used ipw2100 and ipw2200 drivers are currently unsynchronysed. They claim to use the same wireless layer, but their latest releases don't use the same snapshot of this layer. Since there is only one wpasupplicant_ driver (ipw) for both ipw2100 and ipw2200 kernel modules, we should probably patch ipw2100 drivers to use the latest available API. Anyway, this problem will be solved when both drivers use WE-18, which should happen quite soon.

Finally, our kernel needs some drivers to be updated, since it uses old versions for a few wireless drivers, such as orinoco.

[edit]

HIG concerns

Drakroam v2005 wasn't really user-friendly. The presence of two network lists is quite confusing, and using numbers instead of graphics for wireless quality level is quite "cold". DrakRoamUI suggestions have been made by John Keller and Fabrice Facorat, and helped to get the new UI of Drakroam v2006.

[edit]

Wireless configuration tool

drakconnect doesn't scale to edit settings for multiple wireless networks. A configuration tool can be built on top of drakroam. Wireless settings would be moved from drakconnect to this wireless specific tool, since most users have to configure a couple of wireless networks on their systems. Current wireless configuration step in drakconnect could be kept for users reluctant to wpa_supplicant. A checkbox in drakconnect would allow the user to choose between the old way (i.e. configuring wireless settings in drakconnect), or the roaming + wpa way (using drakroam to edit wpasupplicant_ settings).

[edit]

NetApplet

NetApplet basically allows to find which interface is connected to a network, and to connect/disconnect network interfaces. In 2005 LE, NetApplet was quite ressources-hungry. It read configuration files frequently, and forked to get route status every second or so (as notified by Couriousous).

It has been enhanced after 2005 LE release so that it reads network configuration (mostly ifcfg files and netprofiles) only on SIGHUP receival. It now uses /proc/net/route to get route status. This approach is better because it needs less ressources, it is quite simple, but still it could be improved. For example, managing IPv6 networks would require to handle /proc/net/ipv6_route as well.

The most annoying issue is that it polls frequently procfs, while it could be avoided by using rtnetlink events to watch route modifications. It's the way the hal daemon does it. Since about 2.5.21, the kernel allows any user (not only root), to receive route updates notifications on this netlink. It's a bit more difficult to implement, either some perl-XS code (bindings to C functions) has to be written, or hal notifications have to be watched for using D-Bus (since hal is enabled by default nowadays).

[edit]

Status in Mandriva Linux 2005

Drakroam v2005 is the initial wireless tool for Mandriva. It has been written by Austin Acton for the 10.1 release. Then, Drakroam v2005 has been integrated in the Mandriva Control Center.

Personal tools