Gelöst: RT2500-Karte unter Jacklab (= openSuSE 10.2 mit Kernel 2.6.19-5-rt)

12/03/2008 - 16:03 von Ansgar Strickerschmidt | Report spam
Hallo NG (und v.a. Henning),

ich hatte mich vor geraumer Zeit mal hier an die NG mit einer Frage nach
passender Konfiguration einer rt2500-basierten Karte unter dem im Betreff
genannten SuSE-Derivat gewandt.
Nun, gestern habe ich es zum Laufen bekommen. Ich habe den
rt2500-cvs-daily - Tarball von Serialmonkey benutzt und ohne weitere
Modifikationen kompiliert. Das làuft auf Anhieb durch, und das Modul làdt.
Dann muss man iwpriv benutzen, wie es in der im Treiberpaket enthaltenen
Datei "iwpriv_usage.txt" steht. Mit der einzigen zusàtzlichen Maßgabe, die
nirgends sonst so recht erwàhnt ist: Falls ein $-Zeichen in der
WPA-Passphrase vorkommt, muss dieses mit einem vorangestellten "\" escaped
werden.
Ich habe mir dann einfach den entsprechenden Sechszeiler aus besagter
Textdatei rauskopiert und als Skript an geeigneter Stelle deponiert.
Dieses wird fortan nach(!) dem Hochfahren des Interfaces "ra0" gestartet,
und schon klappt's mit dem Nachbarn, àh, Access Point. :)

Ansgar

Mails an die angegebene Adresse errichen mich - oder auch nicht. Nützliche
Adresse gibt's bei Bedarf!
Mail to the given address may or may not reach me - useful address will be
given when required!
 

Lesen sie die antworten

#1 Henning Paul
12/03/2008 - 16:10 | Warnen spam
Ansgar Strickerschmidt wrote:

Hallo NG (und v.a. Henning),

ich hatte mich vor geraumer Zeit mal hier an die NG mit einer Frage
nach passender Konfiguration einer rt2500-basierten Karte unter dem im
Betreff genannten SuSE-Derivat gewandt.
Nun, gestern habe ich es zum Laufen bekommen. Ich habe den
rt2500-cvs-daily - Tarball von Serialmonkey benutzt und ohne weitere
Modifikationen kompiliert. Das làuft auf Anhieb durch, und das Modul
làdt.



Das ist ja schon mal ganz schön.

Dann muss man iwpriv benutzen, wie es in der im Treiberpaket
enthaltenen Datei "iwpriv_usage.txt" steht. Mit der einzigen
zusàtzlichen Maßgabe, die nirgends sonst so recht erwàhnt ist: Falls
ein $-Zeichen in der WPA-Passphrase vorkommt, muss dieses mit einem
vorangestellten "\" escaped werden.
Ich habe mir dann einfach den entsprechenden Sechszeiler aus besagter
Textdatei rauskopiert und als Skript an geeigneter Stelle deponiert.



Das hat mich massiv gestört, so daß ich das ifup-wireless-Skript
folgendermaßen gepatcht habe:

/etc/sysconfig/network/scripts/ifup-wireless.orig 2006-11-25 13:55:27.000000000 +0100
+++ /etc/sysconfig/network/scripts/ifup-wireless 2007-05-18 17:46:24.000000000 +0200
@@ -159,6 +159,7 @@
applicable_wpa_supplicant()
{
test "$WPA_DRIVER" = "unsupported" && return 1
+ test "$WPA_DRIVER" = "iwpriv" && return 1
case "$WIRELESS_ESSID" in
any|"") return 1;;
esac
@@ -336,6 +337,101 @@
run_iw_tool config essid "$WIRELESS_ESSID"
}

+
+setup_iwprivdev()
+{
+ logger "setup_iwprivdev()"
+ # This is a bit hackish, but should do the job right...
+ if [ -n "$WIRELESS_ESSID" -o -n "$WIRELESS_MODE" ] ; then
+ test -z "$WIRELESS_NICK" && WIRELESS_NICK=`/bin/hostname`
+ fi
+
+ # interface has to be up for iwconfig&iwpriv to work.
+ ifconfig $INTERFACE up
+ sleep 2
+
+ run_iw_tool config mode $WIRELESS_MODE
+
+ # Regular stuff...
+ while read OPT ARG; do
+ run_iw_tool config $OPT "$ARG"
+ done <<-EOL
+nick $WIRELESS_NICK
+nwid $WIRELESS_NWID
+freq $WIRELESS_FREQ
+channel $WIRELESS_CHANNEL
+sens $WIRELESS_SENS
+rate $WIRELESS_RATE
+rts $WIRELESS_RTS
+frag $WIRELESS_FRAG
+$WIRELESS_IWCONFIG_OPTIONS
+EOL
+
+
+ case "$WIRELESS_AUTH_MODE" in
+ open)
+ IWPRIV_AUTH_MODE="OPEN"
+ IWPRIV_ENCRYP_TYPE="SHARED"
+ ;;
+ shared)
+ IWPRIV_AUTH_MODE="SHARED"
+ IWPRIV_ENCRYP_TYPE="WEP"
+ ;;
+ *psk|*PSK)
+ if [ "$WIRELESS_CIPHER_PAIRWISE" = "CCMP" ]; then
+ IWPRIV_AUTH_MODE="WPA2PSK"
+ IWPRIV_ENCRYP_TYPE="AES"
+ else
+ IWPRIV_AUTH_MODE="WPAPSK"
+ IWPRIV_ENCRYP_TYPE="TKIP"
+ fi
+ ;;
+ eap|EAP)
+ ;;
+ esac
+
+
+ iwpriv $INTERFACE set AuthMode="$IWPRIV_AUTH_MODE"
+ logger iwpriv $INTERFACE set AuthMode="$IWPRIV_AUTH_MODE"
+ iwpriv $INTERFACE set EncrypType="$IWPRIV_ENCRYP_TYPE"
+ logger iwpriv $INTERFACE set EncrypType="$IWPRIV_ENCRYP_TYPE"
+ if [ "$WIRELESS_AUTH_MODE" = "psk" ]; then
+ iwpriv $INTERFACE set WPAPSK="$WIRELESS_WPA_PSK"
+ elif [ "$WIRELESS_AUTH_MODE" = "shared" ]; then
+
+ if [ -n "$WIRELESS_KEY_0" -a \
+ -z "$WIRELESS_KEY_1" -a \
+ -z "$WIRELESS_KEY_2" -a \
+ -z "$WIRELESS_KEY_3" ]; then
+ # some drivers (at least madwifi) do not like multiple keys
+ # so we do not use that setting method when we have only one
+ run_iw_tool config key $WIRELESS_SEC_MODE $WIRELESS_KEY_0
+ elif [ -n "$WIRELESS_KEY_0" ]; then
+ ARG="key $WIRELESS_SEC_MODE $WIRELESS_KEY_0 [1]"
+ for i in 1 2 3 ; do
+ eval K=\$WIRELESS_KEY_$i
+ test -n "$K" && ARG="$ARG key $K [$((i+1))]"
+ done
+ run_iw_tool config $ARG
+ if [ $RETVAL -ne 0 ]; then
+ err_mesg "setting encryption key FAILED, aborting interface setup"
+ exit $R_ERROR
+ fi
+ test -z "$WIRELESS_DEFAULT_KEY" && WIRELESS_DEFAULT_KEY=0
+ run_iw_tool config key [$((WIRELESS_DEFAULT_KEY+1))]
+ fi
+ fi
+
+ # ESSID need to be last : most device re-perform the scanning/discovery
+ # when this is set, and things like encryption keys are better be
+ # defined if we want to discover the right set of APs/nodes.
+ test -z "$WIRELESS_ESSID" && WIRELESS_ESSID="any"
+ run_iw_tool config essid "$WIRELESS_ESSID"
+
+ sleep 6
+
+}
+
setup_wlanngdev()
{
wlanctl dot11req_reset setdefaultmib=false
@@ -422,10 +518,15 @@
fi
# some drivers seem to have extensions like wlan-ng,
# although they do not
- case "$HWD_DRIVER" in rtl8180|ipw3945|zd12*)
- setup_iwdev
- return
- ;;
+ case "$HWD_DRIVER" in
+ rtl8180|ipw3945|zd12*)
+ setup_iwdev
+ return
+ ;;
+ rt61|rt73)
+ setup_iwprivdev
+ return
+ ;;
esac
# probe for (and enable) wlan-ng devices
wlanctl-ng $INTERFACE lnxreq_ifstate ifstate=enable >/dev/null 2>&1
@@ -682,12 +783,16 @@
ndiswrapper|*.sys)
WPA_DRIVER=wext
;;
+ rt61|rt73)
+ WPA_DRIVER=iwpriv
+ PREFER_WPA_SUPPLICANT=no
+ ;;
*)
WPA_DRIVER=unsupported
PREFER_WPA_SUPPLICANT=no
;;
esac
- if need_wpa_supplicant ; then
+ if need_wpa_supplicant && applicable_wpa_supplicant; then
info_mesg "configuration requires wpa_supplicant"
if [ "$WPA_DRIVER" = "unsupported" ]; then
message "`printf " %-9s warning: WPA configured but may be unsupported" $INTERFACE`"


Du müsstest jetzt zu rt61 und rt73 noch Dein Kernelmodul hinzufügen.

Dieses wird fortan nach(!) dem Hochfahren des Interfaces "ra0"
gestartet,



Ja, die legacy-Treiber lassen die Konfiguration nur zu, wenn das Interface schon "up" ist.

Gruß
Henning

Ähnliche fragen