= Centrino WLAN =

Nachdem sich Intel recht lange ziemlich zickig angestellt hat, was
die Unterstützung seines WLAN-Chips IPW2100 unter Linux anbetrifft,
scheint es seit Anfang 2004 eine echte Lösung zu geben. Leider ist
diese nicht in den Standard-Kernel eingebunden und im Moment ist es
auch noch fraglich, ob es "Plug & Play"-Lösungen geben wird, da
eine benötigte Firmware von Intel nur aus dem Internet mit dem
Akzeptieren einer besonderen Lizenz zu bekommen ist.
Nichtsdestotrotz ist der geneigte Bastler in der Lage, seinen
Centrino-Laptop zu benutzen, ohne eine zusätzliche WLAN-Karte zu
brauchen.

== Links ==

* http://ipw2100.sourceforge.net/ - Homepage des Treibers

== Installation "the Debian way" ==

Unter
http://www.uni-koeln.de/rrzk/netze/wlan/linux/debian/ruehmkorf.html
habe ich eine gute Anleitung gefunden. Danach installiert man (ab
Debian Sarge) lediglich das Debian-Paket ''ipw2100'' (bzw
''ipw2200'') sowie das zu seinem Kernel passende Paket mit den
Kernel-Headern. Dann gibt es das Tool '''module-assistant''', das
alles für einen erledigt. :-)

== Installation "von Hand" ==

Zuerst mal sollte man sich die o.g. Homepage ansehen und sich einen
Überblick über die benötigten Pakete verschaffen. Da dort allgemein
von ziemlich neuen Kernel-Versionen ausgegangen wird, habe ich
direkt einen 2.6.x-Kernel als Basis genommen.

Im Prinzip habe ich einen Kernel übersetzt und installiert wie
unter DebianKernelKompilieren beschrieben (d.h. sowohl der Kernel
selber als auch die Sourcen waren auf dem System installiert). In
diesem Falle kann man in das entpackte Source-Verzeichnis des
Treibers gehen und diesen mit

  make
  make install

installieren. Fertig! Wer das Modul lieber (wie es sich gehört) in
seinem Kernel-Paket hat, kann natürlich auch den Kernel mit Hilfe
der mitgelieferten Doku entsprechend patchen und neu übersetzen.

=== Firmware installieren ===

Wie in INSTALL beschrieben, muss man sich die Firmware-Dateien von
Intel besorgen. Diese sollten dann (nach dem Auspacken des
ZIP-Paketes von Intel) nach ''/usr/lib/hotplug/firmware/'' kopiert
werden. Der Treiber kann diese dann automatisch laden:

<pre>
  unzip 96377_96377.zip
  mv ipw2100-*.fw /usr/lib/hotplug/firmware/
</pre>

Ist der Treiber kompiliert und der neue Kernel hochgefahren, kann
man mit '''modconf''' das Modul auswählen und installieren. Danach
sollte mit '''iwconfig''' die Karte angezeigt werden. Ggf. muss
noch in ''/etc/network/interfaces'' eine Konfiguration für die
Karte hinterlegt werden. An dieser Stelle könnten auch Befehle
eingebaut werden, um WLAN-Einstellungen vorzunehmen.

== Erfahrungen ==

Ich betreibe meinen Laptop jetzt eine Weile ohne Probleme im
Infrastrukturmodus, also an einem Access Point ohne
WEP-Verschlüsselung. Bisher habe ich keinerlei Probleme bemerkt,
würde den Treiber für diese Umgebung also als stabil bezeichnen.
Auch mit WEP gibt es bereits einige Erfahrungen und noch keine
Probleme. - ThomasBayen

== Tips und Tricks ==

=== Hoch- und Runterfahren ===

Im Gegensatz zu einer PCMCIA-Karte ist das WLAN bei einem
Centrino-Rechner fest eingebaut und deshalb immer eingeschaltet. Da
das Strom verbraucht, kann es sinnvoll sein, die Karte
herunterfahren zu können. Zu diesem Zweck habe ich sie wieder
deinstalliert und folgendes Start- / Stop - Skript nach
'''/etc/init.d/wlan''' geschrieben (abgeleitet vom
Debian-skeleton-file):

  #! /bin/sh 
  #
  # wlan
  # -TB-
  #
  # Dieses Init-Skript faehrt mein WLAN hoch und runter. So kann
der Laptop
  # Strom sparen, wenn ich gar kein WLAN haben will.

  set -e

  PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
  #DAEMON=/usr/sbin/daemon
  NAME=wlan
  DESC="WLAN"

  #PIDFILE=/var/run/$NAME.pid
  SCRIPTNAME=/etc/init.d/$NAME

  # Gracefully exit if the package has been removed.
  #test -x $DAEMON || exit 0

  # Read config file if it is present.
  #if [ -r /etc/default/$NAME ]

  #then
  #     . /etc/default/$NAME
  #fi

  case "$1" in
    start)
        echo -n "Starting $DESC: $NAME"
        modprobe ipw2100
        ifup eth1
        #start-stop-daemon --start --quiet --pidfile $PIDFILE \
        #       --exec $DAEMON
        echo "."
        ;;
    stop)
        echo -n "Stopping $DESC: $NAME"
        ifdown eth1
        rmmod ipw2100
        #start-stop-daemon --stop --quiet --pidfile $PIDFILE \
        #       --exec $DAEMON
        echo "."
        ;;
    switch)
        if (lsmod | grep ipw2100 >/dev/null)
        then
          echo "WLAN wird ausgeschaltet"
          /etc/init.d/wlan stop
        else
          echo "WLAN wird eingeschaltet"
          /etc/init.d/wlan start
        fi
   ;;
   #reload)
        #
        #       If the daemon can reload its config files on the
fly
        #       for example by sending it SIGHUP, do it here.
        #
        #       If the daemon responds to changes in its config
file
        #       directly anyway, make this a do-nothing entry.
        #
        # echo -n "Reloading $DESC configuration..."
        # start-stop-daemon --stop --signal 1 --quiet --pidfile \
        #       $PIDFILE --exec $DAEMON
        # echo "done."
    #;;
    restart|force-reload)
        #
        #       If the "reload" option is implemented, move the
"force-reload"
        #       option to the "reload" entry above. If not,
"force-reload" is
        #       just the same as "restart".
        #
        echo -n "Restarting $DESC: $NAME"
        ifdown eth1
        rmmod ipw2100
        #start-stop-daemon --stop --quiet --oknodo --pidfile \
        #       $PIDFILE --exec $DAEMON
        sleep 1
        modprobe ipw2100
        ifup eth1
        #start-stop-daemon --start --quiet --pidfile \
        #       $PIDFILE --exec $DAEMON
        echo "."
        ;;
    *)
        # echo "Usage: $SCRIPTNAME
{start|stop|restart|reload|force-reload}" >&2
        echo "Usage: $SCRIPTNAME
{start|stop|restart|force-reload|switch}" >&2
        exit 1
        ;;
  esac

  exit 0

=== Deinstallieren ===

Ein kleines Problem ist noch, dafür zu sorgen, daß das Modul beim
Hochfahren nicht schon von selbst geladen wird. In einem ''Debian
Woody'' geht das z.B., indem man mit '''modconf''' das Modul
entfernt. Mein neu aufgesetztes ''Debian Sarge'' ist da allerdings
etwas anders (und Suse, Redhat, etc. dürften da ähnlich sein),
indem es durch eine automatische Hardwareerkennung das Modul
automatisch lädt - und zwar gleich zweimal... Ich musste daher das
Modul '''ipw2100''' in folgenden zwei Dateien eintragen:

  /etc/hotplug/blacklist.d/ipw2100       # Datei neu erzeugen und
"ipw2100" hineinschreiben
  /etc/discover.conf                     # Am Ende "skip ipw2100"
ergänzen

=== komfortabel hoch- und runterfahren ===

Damit man zum Hoch- und Runterfahren nicht jedesmal eine
Root-Konsole benötigt, dachte ich mir, dass es nett wäre, ein
einfaches Icon dafür zu haben. Dieses Problem hat zwei Teile: 

* Die Erlaubnis für den Benutzer, das überhaupt zu machen
* Die Erzeugung eines Icons, um den Befehl auszuführen

Das Debian-Paket '''sudo''' muss installiert sein. In die Datei
''/etc/sudoers'' kommt folgende Zeile:

  myusername  ALL=(root) NOPASSWD: /etc/init.d/wlan

Damit darf das Skript mit der Kommandozeile '''sudo -u root
/etc/init.d/wlan start''' vom User ''myusername'' gestartet werden.
Noch schöner wäre natürlich ein Icon. Dieses kann man auf dem
Desktop durch Druck auf die rechte Maustaste und das Menü "Neu
erstellen / Datei / Verknüfung zu Programm" erzeugen. Ein eigenes
Icon "WLAN" erzeugt dann die Datei ''~/Desktop/WLAN.desktop''. Es
hat bei mir folgenden Inhalt:

<pre>
 [Desktop Entry]
 Comment=WLAN ein-/ausschalten
 Comment[de]=WLAN ein-/ausschalten

 Encoding=UTF-8
 Exec=sudo -u root /etc/init.d/wlan switch
 GenericName=WLAN-Umschaltung
 GenericName[de]=WLAN-Umschaltung
 Icon=cache
 MimeType=
 Name=WLAN
 Name[de]=WLAN
 Path=
 StartupNotify=false
 Terminal=false
 TerminalOptions=
 Type=Application
 X-DCOP-ServiceType=
 X-KDE-SubstituteUID=false
 X-KDE-Username= 
</pre>

==== '''switch'''-Option ====

Ich benutze hier im Icon die "switch"-Option, die ich in obiges
Startskript "hineingemogelt" habe. Damit kann ich mit einem Icon
das WLAN ein- und wieder ausschalten. Dafür sollte man aber
irgendwas haben, das einem den derzeitigen Status anzeigt. Das kann
z.B. ''gkrellm'' oder sowas sein, bei meinem Laptop gibt es eine
WLAN-LED, die mir anzeigt, ob das Kernelmodul geladen ist oder
nicht. Wer keine solche Anzeige hat, kann auch zwei getrennte Icons
zum Ein- und Ausschalten machen, indem er "switch" durch "start"
bzw. "stop" ersetzt.

[{Tag Hardware WirelessLAN}]