This utility is currently in development and some features are still missing.
If you notice a bug or would like to see a feature implemented, feel free to
contact me.

RutilT should work with any, Linux wireless extensions compliant, kernel module,
and using it with any of these drivers is supported.
It also features special, extra support for rt2400, rt2500, rt2570, rt61 and
rt73 devices used along the rt2x00 project's legacy drivers (original Ralink's
drivers may work too, but using RutilT with them is unsupported).
The new rt2x00 driver itself will be supported in a future release, please use
the standard tools ("iwconfig", "iwlist" etc...) with this driver at this stage.

Comments of all kind are welcomed, to contact me :
    - spy84464@hotmail.com or,
    - through the rt2x00-dev or rt2x00-general mailing list or,
    - on the forum : http://rt2x00.serialmonkey.com/phpBB2/

Running the program as root is no longer needed :
RutilT includes an "helper", it is a privileged program that allows
underprivileged users to manage wireless devices if they are authorized to.
The helper is launched if root privileges are needed, when a profile is
applied for instance.
By default, the helper is installed setuid (Notice : Like all other setuid
programs and while care has been taken, a potential security risk might
exists.) and launched if the user type in the root password. This does not
require any external software.
This behavior can be changed, you can compile RutilT to use an external program
like gksu or kdesu to launch the helper, which does not need to be setuid
anymore. Since v0.14, a script is used as a proxy for external launchers. By
default, gksu is used, the script falls back on kdesu if it cannot find gksu.
This means that, when root privileges are required, the script is executed and
expected to launch the helper with root privileges.
Of course, you are welcome to tune this script, you may want to use an external
launcher if root's account is disabled on your distribution (like Ubuntu), if
you do not want the helper to be setuid, and/or as a kind of better desktop
integration.
If none of these options suit you, the helper can be completely disabled,
RutilT will have to be run as root directly to change anything.
See the INSTALL file (in the "Compilation options" section) for instructions.

Since v0.09, RutilT can use the dhcp protocol to set your wireless interface
IP address.
It can do when clicking on the "Connect" button in the "Site Survey" tab, or
if it has been enabled when applying a profile. If you are upgrading from a
previous version and want to enable dhcp with your old profiles, just edit them.
By default, RutilT uses the "dhclient" program (and fall back to "dhcpd" if
unavailable) which comes with many distribution and launches it in the
background, but this behavior can be changed, in fact, the script "set_ip.sh"
is executed, feel free to customize it to match your needs, do not forget that
it is executed with root privileges, so beware! Once RutilT installed, you can
find the script in the "/usr/local/share/rutilt/" directory (default
installation path), it also contains some useful piece of information to tune
it.
Static IP settings might be supported in a future release, until then,
"set_ip.sh" can also be modified to set those settings, the script contains
some examples on how to do (Note : those examples may be inaccurate for your
distribution).

Since v0.13, RutilT comes with some command line interface support, mainly to
apply a profile, this can be handy within startup scripts for instance.
Usage :
    rutilt [IFACE_NAME] [OPTIONS...]
Short options can be combined, options with an argument must appear last in this
case. Mandatory arguments to long options are mandatory for short options too.
If IFACE_NAME is specified, rutilt will try to use this network interface and
will not prompt the interface chooser.
Options :
    -h, --help
        display some help and exit
    -v, --version
        output version information and exit
    -t, --hide
        force to start hidden in tray
    -p, --profile PROFILE_NAME
        apply PROFILE_NAME on start (quote PROFILE_NAME if it contains spaces),
        the IP settings of that profile will not be applied.
    -d, --dhcp
        use dhcp (run the set_ip.sh script) on start
    -e, --exit
        exit after processing the command line options (do not start the gui)
        IFACE_NAME must be specified when using this options with --dhcp or
        --profile and the application executed as root.

All Gtk+ specific options are also supported, see the Gtk+ documentation.

Example :
    $ rutilt wlan0 -dep "Home network"
This will apply the profile "Home network" on interface wlan0, then launch
dhclient and exit.


    == Troubleshooting ==
rt2570 :
    - WPA networks are not properly reported in scan results.
    => Upgrade your driver, if the networks are still not properly reported then
       it is certainly a bug, contact me.
    - RutilT seems to fail to configure WPA.
    => If you driver does not support WPA2PSK (even if you are not using it),
       then upgrade it, otherwise contact me.

rt61 or rt73 :
    - I get an error "1" when I launch RutilT.
    => You have three solutions :
        1. Launch RutilT as root, normal users cannot use it.
        2. Upgrade the driver.
        3. Patch the driver.

rt61 :
    - RutilT does not properly set my WEP keys, "iwconfig" reports keys full
    of 0.
    => Upgrade your driver.

General :
    - My previous profiles are not loaded after an upgrade to v0.16 (or later).
    => This is normal, the file used to store them as changed. But the syntax
       within has not, so if you are familiar with XML, you can update the new
       file with previous data. All profiles are stored in
       $HOME/.config/rutilt/, the new file is called : "RutilT_profiles.xml".

If you updated your kernel, make sure you recompiled RutilT and try again before
reporting any problem.

If you contact me, thanks to generate a debug trace and join it to the e-mail,
do _not_ truncate any part, send it as a whole.
To generate a trace, run these commands in RutilT sources directory :
    ./configure.sh --debug <set the options you used the first time as well>
    make
    make install (as root)
    rutilt &> debug.log



    == Known issues ==
The helper does not work on OpenSuse10.2 (and possibly other) by default. An
external launcher should be used.
Technically, this is because I did not manage to encrypt the password using the
blowfish algorithm (I have tried with the crypt() function.). If you can shed
some lights on this problem, I would be glad if you could contact me.


    == Changelog ==
v0.16, add a button to toggle the interface state (up/down) and make it
possible to use RutilT with down interfaces. "dhcpcd" is now handled in the
set_ip.sh script. It has become possible to select a profile when connecting
through the site survey tab, and this is compulsory actually : any connection
to any network now requires a profile. The number of transmitted and received
bytes is now also displayed in mega bytes. A manual page for the helper has
been added, and the installation procedure has been updated to be more Debian
and freedesktop.org friendly. Greatly increase network encryption and
authentication identification with rt2500, rt2570 (and rt2400?). Add a tray
icon menu. Usual bug fixes and code cleaning.

v0.15, fix a lot of bug and potential crash. Update support for rt61, rt2570
and recent kernels. RutilT can now be compile to generate a debug trace.

v0.14, improve the installation/uninstallation process. Add full support for
rt61 and rt73. rt2570 support has been enhanced, mainly to display WPA encrypted
networks properly in scan results. Lot of small tweak to improve stability and
error tolerance have been rolled in. The privileged session internal has been
revamped and a script is now used to switch to root if an external launcher
should be used. Improve WEP support. Fix compilation towards 2.6.19 kernel
sources, as well as several bugs.

v0.13, add command line support, a Unix manual page and a desktop menu
configuration file. As usual, some bugs have been fixed.

v0.12, fix a bug which prevented to set the Tx rate (or set it with an
incorrect value).

v0.11, the current IP address is now displayed in the Link Status tab. The
generic driver for unknown devices have been enhanced, ditto for rt2500.
The user is now asked if dhcp should be used when connecting to a network
through the Site Survey tab. rt2570 support is finally stabilized and has been
enhanced (thanks to Kirk Williams). A tray icon has been added. Support for
WPANONE with rt2500 and rt2570 has been implemented. An option page has been
added to tune RutilT behavior and to set the maximum tx rate. RutilT can now
be compiled to allow everyone to use it as root without the root password. The
wireless extensions dependency has been reduced from v17 to v16. The profiles
are now recorded properly if the application is shutdown with a signal. The
application now has its icons. And, as usual, many bugs have been fixed.

v0.10, fix compilation errors with g++-3.3.

v0.09, rt2400 support has been slightly improved again, this change follow a
big code cleaning. rt2570 support has been completely rewritten and should be
nearly working, however it is still experimental because of the lack of
testing. RutilT now let you set several keys for WEP encrypted network.
A statistics tab has been added to monitor network activity. There is no more
need to enable/disable injection support at compile-time, it is now dynamically
detected. Dhcp support has been integrated. The built-in helper launcher can
now be changed to an external program like gksudo to integrate better with some
distribution, it also removes the need of another setuid program.
Finally, a lot of bugs have been fixed and stability has been improved.

v0.08, injection support is disabled by default again. rt2400 support has been
tweaked, thanks again to Szymon Dziok, and several small bugs have been fixed,
as well as some code cleaning and better WPA support for rt2500.

v0.07, rt2400 support has been fixed, thanks to Szymon Dziok. Among all the
usual tweaks and fixes, the main new feature is privileged mode handling.
This is also the first release since the code has been uploaded on rt2x00 CVS.

v0.06, like with each new version, many tweaks and improvements have been done.
The new major feature is special support for rt2500, it has been
tested and should work well. Special support for rt2400 and rt2570 have
also been implemented but is completely untested and considered experimental.

v0.05, fix compilation bugs on gcc3.3, thanks to Nicolas Favre-Félix, and
improve network interface selection.

v0.04, no new features but a lot of improvements, corrections and
rework, most of the code should be stable now. This version is suitable for
module that do not need special support (compliant to WE 17). Of course, it
still requires wide testing to validate it.

v0.03, almost all files have been modified! The code has been cleaned
or reworked in many place and the application should be more stable and less
buggy. Profiles support has also been added, it is possible to set the
connection parameters with them.

v0.02, the code has been cleaned and a lot of bugs fixed. Errors are also
better handled (they are not print on stderr anymore) but it still incomplete.
I have also had static checks on the wireless extensions headers and gtk one.

v0.01, first release, provide a link and site survey monitor. It is possible to
connect to a network through the site survey tab. Every things need polish
and many bugs are present. It must be considered as an alpha release.
