Ct-VDR 6.2 mit WLAN und WPA2 Verschlüsselung - endlich geschafft

  • Liebe Mitstreiter,

    nach diversen Ausflügen zu Mahlzeit und EasyVDR habe ich es mit der neuen Ct-VDR Distri endlich geschafft, meine Edimax Wlan PCI-Karte und WPA2 Preshared-Key Verschlüsselung und dem DHCP Protokoll zum Laufen zu bringen.
    Damit andere mit derselben Hardware davon profitieren können, hier die Lösung die ich herausgefunden habe:

    Hardware ist eine Edimax 7128g PCI-Karte, siehe hier http://www.edimax.com/en/produce_detail.php?pd_id=1&pl1_id=1&pl2_id=44

    Der passende Treiber ist nicht der vom Hersteller, sondern die Weiterentwicklung als open Source von Serialmonkey (http://rt2x00.serialmonkey.com/)
    Alle, die die Karte unter Debian zum Laufen bringen wollen, werden die Adresse sicherlich kennen.
    Was wird alles benötigt:
    - Aktuelle Treiber-Sourcen von Serialmonkey (1.1.0-b2)
    - Die Firmware-Dateien für die Hardware (3 *.bin Dateien) entweder bei serialmonkey oder direkt von Edimax (im Support-Bereich downloadbar)
    - Die Wireless-Tools
    - Das Utility Module-Assistant
    - Aktuelle Online-Quellen für Apt
    - Die Kernel Headers der Version 2.6.18 (sofern nicht zuvor bereits auf einen neueren aktualisiert wurde, dann natürlich die jeweils passenden Headers der jeweiligen Version)

    Was wird NICHT benötigt:
    Wpasupplicant wird für WPA2 NICHT gebraucht, genau richtig gelesen!

    Und noch was Wichtiges: Wie so üblich bei Linux könnt ihr die Anweisungen zur Konfiguration der Karte in der beiliegenden README (bis auf die Build-Anweisungen natürlich) vergessen! Die Anweisungen sind nicht mehr aktuelll. Es hat sich anscheinend noch keiner gefunden, der mit der neuen Version mal neue README schreibt - Schlamperei... Laut Serialmonkey Forum wird das Unterzeichnis /etc/Wireless nicht mehr genutzt und auch die komische Konfigurationsdatei rt61STA.dat ist überflüssig geworden. Seit Mitte 2007 sind die Konfigurationskommandos per iwconfig und iwpriv direkt in /etc/network/interfaces einzutragen! Die Firmware-Dateien gehören von nun an ins Verzeichnis /lib/firmware (bei Ct'VDR zumindest, bei anderen VDR Distris weichen die Verzeichnisse ab).

    - Der Trick mit Lirc und Treiberkompilierung

    1. Wer Lirc zur Fernsteuerung nutzt, sollte bevor es losgeht erst einmal Lirc wieder deinstallieren (vtvdrcfg aufrufen -> Steuerung -> Lirc abwählen)
    Lirc ist ziemlich empfindlich, wenn es um neu kompilierte Module geht. Falls sich irgendwas an dem Modulbestand ändert, lässt sich Lirc zwar hinterher noch starten, reagieren tut's dann aber nicht mehr! Nur so als Warnung. Wer's vergessen hat, muss sich die Lirc-Sourcen downloaden und ebenfalls manuell kompilieren. Ist aber auch kein großes Problem.

    2. Allererste Grundlage für den Einstieg sind aktuelle Online-Quellen für Apt, damit man auch immer die neueste Version für den eigenen Kernel und für die Treiber bekommt.
    Meine Liste sieht so aus (/etc/apt/sources.list):

    deb http://ftp2.de.debian.org/debian etch main contrib non-free
    deb http://security.debian.org/ etch/updates main contrib non-free
    deb http://www.debian-multimedia.org/ etch main
    deb http://e-tobi.net/vdr-experimental etch base addons vdr-multipatch
    deb http://e-tobi.net/vdrdevel-experimental etch vdr-multipatch
    deb-src http://ftp2.de.debian.org/debian etch main contrib non-free
    deb-src http://e-tobi.net/vdr-experimental etch base backports addons vdr-multipatch
    deb-src http://www.debian-multimedia.org/ etch main

    - Wie bekomme ich die Kernel-Headers und Programme zum Kompilieren von Modulen
    1. Dazu erst einmal apt-update aufrufen, um den Software-Bestand auf den neuesten Stand zu bringen.
    2. Jetzt den Modul Assistenten installieren mit apt-get install module-assistant.
    2. Danach die wireless-tools (apt-get install wireless-tools)
    3. Alles, was zum Kompilieren von Sourcen benötigt wird, lädt der Modul Assistent selbständig nach, eine super Sache für Einsteiger wie mich.
    Also jetzt einfach
    a) module-assistant eingeben und Enter drücken
    b) PREPARE und anschließend SELECT auswählen
    c) Jetzt in der Liste nach dem Eintrag rt61 oder rt61pci suchen. Das ist der Treiber für diese Wlan-Karte von Edimax. Wer die USB-Variante besitzt, sollte rt71 auswählen, der Rest ist quasi identisch. In meiner Liste taucht auch RT2500 auf, dies kann der aktuelle Treiber sein, muss aber nicht. Bei meinem ersten Versuch hat der module-assistent einen veralteten Treiber runtergeladen, der die Karte nicht angequatscht hat.
    d) Mit Enter auswählen und dann auf OK.
    e) Jetzt im Menü BUILD auswählen und warten, bis sich der Modul Assistent alles holt, was zum Kompilieren benötigt wird (C++, Kernel-Krempel usw usw.). Danach schnappt sich der Assistent die Treiber aus dem Internet Repository und kompiliert diese. Zum Schluss wird noch gefragt, ob die gebauten Module gleich installiert werden ssollen. Mit OK bestätigen und feddich!

    3. Leider wird bei der Treiberinstallation die Datei /etc/modprobe.conf angelegt. Egal, die Datei mit mcedit öffnen und den Aliaseintrag (alias ra0 rt61) in die Datei /etc/modprobe.d/aliases an das Dateiende übernehmen)
    4. Jetzt die Datei /etc/modprobe.conf löschen
    5. Nach der Installation der Wireless-Tools befinden sich Skripte für das indirekte Aufrufen von iwconfig und iwpriv in folgenden Verzeichnissen:
    a) etc/network/if-pre-up.d
    b) etc/network/if-down.d
    und evt. noch in
    c) etc/network/if-up.d
    Dort steht überall das Script wireless-tools drin
    ALLE EINTRÄGE LÖSCHEN
    Es hat einen Tag gedauert, bis ich diesen Kniff raushatte. Solange diese Scripte noch in den Unterverzeichnissen drin bleiben, bleibt alles, was in der Hauptdatei /etc/network/interfaces steht, nutzlos. Also weg damit und jetzt kommt der Hauptteil:
    6. Mit vi oder mcedit oder oder oder die Datei /etc/network/interfaces öffnen und folgendes eintragen:

    auto ra0
    iface ra0 inet dhcp
    pre-up sleep 60
    pre-up iwconfig ra0 mode managed
    pre-up iwconfig ra0 channel 0
    pre-up iwpriv ra0 set AuthMode=WPAPSK
    pre-up iwpriv ra0 set EncrypType=TKIP
    pre-up iwpriv ra0 set WPAPSK="hier kommt der Schlüssel für den Access Point rein"
    pre-up iwconfig ra0 essid "Name des WLan-Netzes"
    pre-up sleep 60

    Die Sleep-Pausen braucht der Treiber, damit alles zuverlässig initialisiert werden kann.

    Nach einer kurzen Zeit sollte sich die Wlan Karte nun mit einer IP-Adresse aus dem WLAN-Netzwerk melden.

    Zum Schluss noch ein Hinweis zu wpasupplicant und wireless tools.
    Wie in der Treiberdokumentation kurz erwähnt, ist die WPA-Verschlüsselung bei der Karte bislang nur über die obigen iwpriv-Befehle möglich. Probiert man es mit wpasupplicant aus, bleibt der Treiber recht schnell hängen, bis irgendwann die Meldung "cannot set ra0 to managed mode" oder so ähnlich kommt.
    Bei Fragen dürft ihr mir gerne zurückschreiben.

    Ach ja, Edimax hat auch einen Wlan USB Stick, für den Serialmonkey den RT73 Treiber anbietet. Dieser Stick sollten sich genauso installieren lassen.
    Bei meinem alten Board mit USB 1.1 leuchtete die Lampe am Stick jedoch garnicht erst auf, also eher was für neuere Mainboards mit USB 2.0 Support.
    Viel Spaß mit Ct-VDR 6.2, eine super Distri, wenn man sie erst einmal bezwungen hat.
    Andreas

    Comag Twin HD+ PIII Streamdev-Server PIII Streamdev-Client mit DXR3

    Edited once, last by vdr-xxl (September 23, 2008 at 6:59 PM).

  • diese How_To hätte ich vor 4 wochen gut gebrauchen können - trotzdem danke. hab mir anders beholfen: für 30,- einen kleinen wlan-router gekauft und im client-modus an die pci-lankarte gehängt. konfiguriert habe ich ihn vorher mit nem bestehenden system eines anderen rechners, der dvr wird eingerichtet als hinge er am LAN. bin mit der datenrate sehr zufrieden.

    Produktivsystem:
    Server: yaVDR 0.3 0.5 0.6 0.7 im Silverstone Lascala LC16MR; Board: Asus P5N7A-VM S775 GF9300 FSB 1333MHz PCIe Chip: Intel Pentium Dual Core E5200 2.50GHz
    streaming clients: windows-Rechner, Ubuntu-Rechner, 3xRaspberryPI I, 1x RasPi II mit aktuellem Openelec, Kodi + VNSI-PVR auf div. Android-Clients

  • Moin Leute,

    die anfangs verfassten Anweisungen galten ja für die Edimax PCI-WLAN-Karte in Verbindung mit Kernel 2.6.18 aus der c't VDR Version 6.2 und den freien Sourcen des serialmonkey Projekts (rt2x00).

    Für alle, die schon einen neuen Kernel ab 2.6.22 aufwärts installiert haben, müssten bereits ein kompiliertes Modul für diese WLAN-Karte im Treiberverzeichnis haben.

    Mittlerweile habe ich auf Kernel 2.6.24 upgedatet und nutze den serialmonkey Treiber, der dem Kernel beiliegt. Deshalb an dieser Stelle nur ein kleines Informations-Update mit sehr guten Neuigkeiten für alle Benutzer dieser Karte!

    Für den Betrieb an einem Access Point mit WPA(2)-Verschlüsselung muss man natürlich die Firmware-Dateien ins Verzeichnis /lib/firmware kopieren und außerdem die Pakete "wpasupplicant" sowie "wireless-tools" installieren, falls die noch nicht installiert sind.

    Zum Glück hält sich der rt2x00 Treiber jetzt endlich an die Distri-Vorgaben und befolgt genau die Anweisungen, die in der Datei /etc/network/interfaces eingetragen wurden,
    also:
    auto wlan0 inet dhcp (bzw. eine feste IP-Adresse, falls nicht vom DHCP-Server des Routers vergeben)
    und ab jetzt nur noch die entsprechenden Konfigurationsbefehle mit dem Präfix wpa- eintragen, iwpriv-Befehle ignoriert der serialmonkey Treiber oder gibt die Meldung "no private ioctls" aus und bricht ab.

    Welche Befehle man für die Wpa-Verschlüsselung benötigt, kann man dann der Doku zu wpasupplicant (usr/share/doc/wpasupplicant) entnehmen.

    Bei mir sieht die /etc/network/interfaces folgendermaßen aus:

    # The loopback network interface
    auto lo
    iface lo inet loopback
    # The primary network interface
    # allow-hotplug eth0
    # iface eth0 inet dhcp
    auto wlan0
    iface wlan0 inet dhcp
    # lines for setting up wpa with rt2x00 driver > kernel 2.6.22.x
    wpa-driver wext
    wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

    Der letzte Eintrag verweist also auf eine separate Konfig-Datei. Dort sind alle Einstellungen für den Datenaustausch mit dem Access Point eingetragen, wie folgt:

    # WPA-PSK/TKIP

    ctrl_interface=/var/run/wpa_supplicant

    network={
    ssid="Name des WLANs"
    key_mgmt=WPA-PSK
    proto=WPA
    pairwise=TKIP
    group=TKIP
    psk="hier kommt der Schlüsseltext rein"
    }

    Klappt ganz hervorragend!

    Comag Twin HD+ PIII Streamdev-Server PIII Streamdev-Client mit DXR3

    Edited once, last by vdr-xxl (February 22, 2009 at 9:21 PM).

  • Update

    Wer jetzt Debian 5 Codename Lenny aufgespielt hat, kann alles zuvor Geschriebene vergessen. Die Treibermodule sind beim neuen Kernel 2.6.26.x bereits im System enthalten. Die Firmware kann mit "apt-get install firmware-ralink" nachinstalliert werden.
    Die meisten nutzen natürlich eine Verschlüsselung. Bei mir (wie auch bei meinen Nachbarn ) ist es WPA2 mit Preshared-Key (siehe vorherige Beiträge).
    Das eigentlich neue bei Lenny ist, dass jetzt automatisch von den Wireless Extensions (Wext driver) ausgegangen wird. Die Befehle zur Anbindung an den Access Point werden jetzt direkt in die /etc/network/interfaces eingetragen. Auf die Wireless-Tools kann getrost verzichtet werden, wenn man mit verschlüsselten Verbindungen arbeitet. Beispiel:

    Code
    iface wlan0 inet dhcp
     	wpa-ssid "Name des Netzwerks"
            wpa-key-mgmt WPA-PSK
            wpa-pairwise TKIP
            wpa-group TKIP
            wpa-proto WPA
           # plaintext passphrase
     	wpa-psk "Hier kommt der Netzwerkschlüssel rein"

    Das ist alles und schon funktoniert's. Probiert habe ich es mit der Wlan-PCI-Karte von Ralink und mit dem USB-WLAN-Stick (Edimax 7128 mit rt73 Treiber).
    Ein stabiler Open Source Treiber mehr auf der Liste der Wlan-Treiber!
    Viel Spaß weiterhin...
    Andreas

    Comag Twin HD+ PIII Streamdev-Server PIII Streamdev-Client mit DXR3

  • Hallo Andreas,

    vielen Dank erst mal für deine super Anleitung.
    Nachdem ich die gelesen hab, war ich der Meinung, ein Stick mit Ralink Chip ist eine gute Wahl.
    Dem war wohl nicht ganz so. Hab mir von D-Link den DWL-G122 (rev. C1) geholt und wollte ihn nach deiner Anleitung einrichten (wie es im letzen Update beschrieben ist).
    Wie bei dir beschrieben verwende auch ich WPA2. Ich hab die "interfaces" nach deinen Vorgaben aufgebaut (natürlich mit meinen Daten) und wenn ich nun die wlan0 starte, bleibt er beim versuch eine DHCP-Adresse zu beziehen hängen.

    Hast du oder jemand aus dem Protal noch einen Tip für mich? Muss zu meiner Schande gestehen, dass ich bis vor 4 Wochen mit Linux gar nichts am Hut hatte.

    Kurz zu meiner Umgebung:
    CTVDR7 (also Lenny)
    Kernel 2.6.26-2-486
    Standardinstallation mit Samba, openchrome-Treiber
    Via Epia M1000 Boar

    Über Tips, Anregungen oder ein How-To (was traumhaft wär) würde ich mich freuen.

    Viele Grüße

    Spacelord

  • Hi,

    tja was soll ich dazu sagen ausser "shame on me".

    Kaum installiert man wpasupplicant nach klappts auch.

    Vielleicht kann ja einer aus meinen Fehlern lernen.

    Aber trotzdem ein riesen THX für die Anleitung.

    Gruß
    Spacelord

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!