• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

USRobotics USR5423 USB WLAN adapter (Kernel re-compile)

rgloor

Newbie
Hallo

Bin daran eine meiner ersten Linux Computer aufzusetzen.
(Pentium II, 128MB RAM, 6GB HD).
Da ich im Zimmer meines Sohnes kein Ethernet habe, installierte / erweiterte ich mein WLAN.

Für den PC kaufte ich schon 2 WLAN adapter. Erst ein Netgear WG311 (version 3).
Der verträgt sich aber nicht mit der Hardware des alten Rechners. Also, kaufte ich ein USB Adapter. Da USRobotics eine Weltmarke ist, wird man damit keine Probleme haben. Denkste.

In der Zwischenzeit habe ich von SUSE 10.1 auf openSUSE 10.2 upgegraded. (Resp. Neuinstallation darüber).

Ich will aber nicht mit NDISwrapper arbeiten.

Ich habe viel gesurft und einiges gefunden. Der USR805423 hat ein ZyDAS 1211B chipset.
Dies wird grundsätzlich durch 10.2 unterstützt. (ZD1211rw rw für Rewrite um ZD1211 und ZD1211b zu unterstützen.)

Bei einem lsusb wird der USB WLAN zwar angezeigt, aber von Linux nicht als WLAN erkannt.
Fand eine gute Seite von gentoo über das Thema:

http://gentoo-wiki.com/HARDWARE_USRobotics_Wireless_Adapter_Model_5423

Hab die Kernel-Source auf den PC gespielt und tatsächlich fehlt in
File: /usr/src/linux/drivers/net/wireless/zd1211rw/zd_usb.c
...die Kennung für den USR805423 (0x0baf:0x0121)

Also hab ich ihn ergänzt und versucht nach obiger Anleitung den Kernel neu zu kompilieren.

Die meisten Tipps im net kriegt man, wenn man einen eigenen Kernel komplett neu zusammensetzen will.
Ich möchte aber nur etwas kleines ergänzen.

Irgendwie lief etwas falsch. Ich habe den Kernel neu kompiliert.
(In /usr/src/Linux-2.6.18.2-34 die config datei hinkopiert, checkte mit make xconfig den ZyDAS Eintrag (war schon selektiert, also ohne Änderungen raus.) und lies make all laufen und anschliessend make modules_install
Beim Kernel compilieren wurden zwar verschiedene Meldungen generiert (zu anderen Devices, dass z.B. SCSI Controller gewisse funktionen nicht unterstützt sind und so), aber keine Meldung zu obiger Datei / zu obigem Modul. (Das ist doch ein Modul oder?)

Den neuen Kernel habe ich nach /boot/ kopiert. Den alten in .old umbenannt, einen neuen GRUB Eintrag für den alten Kernel gemacht.

Die Chipset firmware von
http://zd1211.ath.cx/get-firmware
runtergeladen und nach /lib/firmware/zd1211 kopiert.

Aber das ganze lief dann trotzdem nicht. Das System hängte sich auf. Auch nach reboot mit der Selektion des alten Kernels im Boot Loader (GRUB).
Beim neuen reboot selektierte ich den Failsafe modus. Der lief noch.
Also kopierte ich in /boot/ die alten Dateien zurück.

System läuft wieder. Aber Problem mit USR USB WLAN adapter ist noch nicht gelöst.
Kann mir jemand helfen.

Mache ich etwas falsch?
Auf was muss ich achten?
Muss ich noch was mit den firmware dateien machen (etwas kompilieren)?
Wie muss ich vorgehen.

Jede Hilfe wird dankbar angenommen.

Mit freundlichen Grüssen aus der Zentralschweiz,
 
OP
R

rgloor

Newbie
Hallo Freecoffee

Ja ich weiss das ist schlecht. Es war gestern schon ein langer Tag und das Compilieren dauerte ziemlich lange.
Gute Frage.

Sorry. Ich weiss nicht mehr. Möglicherweise Black screen?

Ich habe einiges versucht gehabt. Zuerst wie in einer Anleitung , neuen Kernel bzImage nach /boot/vmlinuz kopiert. Späterer Versuch (wie in Buch: 'Linux' von Michael Kofler), Umbenennung in vmlinuz-2.6.18.34-default. (Jeweils mit vorherigem Umbenennung des Originals).

Muss es nochmals versuchen.

Ich weiss. Hilfreich sind logs, screen shots, etc.

Aber wie komme ich an die notwendigen Log-files, und wie mache ich einfach screen shots (wie unter Windows? Mit ALT-PrintScreen?, resp. nur PrintScreen?).
Und wie kriege ich die dann als brauchbare Datei gesichert? (Danach kann ich sie zum Beispiel via USB-Memory-Stick auf meine Win-Kiste transferieren. Das klappt soweit gut.)

Bis dann,
Gruss,
 
OP
R

rgloor

Newbie
Hallo Freecoffee

Vielleicht ist es das Beste, noch mal sauber von vorn zu beginnen.

Gemäss der Gentoo-Anleitung...

http://gentoo-wiki.com/HARDWARE_USRobotics_Wireless_Adapter_Model_5423

...habe ich in folgender Datei...

File: /usr/src/linux/drivers/net/wireless/zd1211rw/zd_usb.c

...die Modifikationen gemacht (rote Zeile eingefügt):

static struct usb_device_id usb_ids[] = {
/* ZD1211 */
{ USB_DEVICE(0x0ace, 0x1211), .driver_info = DEVICE_ZD1211 },
{ USB_DEVICE(0x07b8, 0x6001), .driver_info = DEVICE_ZD1211 },
{ USB_DEVICE(0x126f, 0xa006), .driver_info = DEVICE_ZD1211 },
{ USB_DEVICE(0x6891, 0xa727), .driver_info = DEVICE_ZD1211 },
{ USB_DEVICE(0x0df6, 0x9071), .driver_info = DEVICE_ZD1211 },
{ USB_DEVICE(0x157e, 0x300b), .driver_info = DEVICE_ZD1211 },
/* ZD1211B */
{ USB_DEVICE(0x0ace, 0x1215), .driver_info = DEVICE_ZD1211B },
{ USB_DEVICE(0x0baf, 0x0121), .driver_info = DEVICE_ZD1211B },
{ USB_DEVICE(0x157e, 0x300d), .driver_info = DEVICE_ZD1211B },
{}
};


Zu dem habe ich wie es weiter in der Anleitung steht die Chipset firmware von...

http://zd1211.ath.cx/get-firmware

...runtergeladen und nach /lib/firmware/zd1211 kopiert.


Wie soll ich nun weiterfahren?
Wie bringe ich diese Veränderungen korrekt zum Laufen?
(Neu kompilieren des Kernels? Alles?)

Vielen Dank im Voraus für gute Anregungen zum weiteren Vorgehen.
 
Im Sourcenverzeichnis (normalerweise /usr/src/linux) ein make cloneconfig ausführen, dann ggf. mittels make xconfig den Treiber aktivieren. Außerdem sollte man unter "General Setup => Local version - append to kernel release" das standardmäßige "-default" ändern, so dass da bspw. steht "-test", dann kommt der eigene Kernel auch nicht dem Standardkernel ins Gehege.
Kompiliert wird das ganze anschließend mit make, bevor die Module mittels "make modules_install" an die richtige Stelle befördert werden.
Nun muss von Hand der Kernel via
Code:
cp arch/i386/boot/bzImage /boot/vmlinuz-<version>
ins /boot-Verzeichnis kopiert werden (die richtige Version bekommst du vorher als Anhang von System.map angezeigt als letzte Ausgabezeile von make modules_install.
Nun wechseln wir ins /boot-Verzeichnis mit "cd /boot" und erzeugen mit
Code:
mkinitrd -k vmlinuz-<version> -i initrd-<version>
die initrd. Zum Abschluss noch den Eintrag in den Bootloader mit YaST oder per Hand in /boot/grub/menu.lst und fertig.
 
OP
R

rgloor

Newbie
Hallo Freecoffee

Ich habe deine Anweisungen befolgt.
Zuerst war ich unsicher bezüglich 'make', da in meiner Linux-Fibel stand 'make all' oder verschiedene andere make-sequenzen.

Schlussendlich habe ich einfach gemäss deiner Anweisung (nach make xconfig und wechsel auf <version>-test) ein einfaches 'make' gemacht.

Den neuen Kernel (bzImage) nach /boot/vmlinuz-<version>-test kopiert.

PS: <version> ist bei mir 2.6.18.2-34

Anschliessend mkinitrd (gem. deinen Angaben) laufen lassen.

=> Dabei ist eine Fehlermeldung aufgetreten, dass die dazugehörige Datei System.map-<version>-test fehlt.
Habe also auch die Datei System.map aus dem /usr/src/linux/ Verzeichnis nach /boot/ kopiert (mit <version>-test).
Nochmals den mkinitrd laufen lassen.
-> Diesmal lief alles sauber durch (ohne Fehlermeldungen).

Nach der Anpassung der menu.lst (GRUB), lief diesmal auch das neu booten problemlos.

Der USB-WLAN-Stick wird erkannt. Aber ist scheinbar falsch eingebunden. Nämlich als eth1 (habe noch eine PCI-NIC im PC = eth0) statt als wlan0. Damit kann ich aber die WLAN configuration nicht durchführen. (ESSID, WPA, etc.).

Ich habe noch eine dmesg gemacht und protokolliert. Da sieht man noch einiges.
Das ist aber ziemlich lang. Soll ich das ganze hier einfügen?

Leider habe ich hier noch nicht rausgefunden, wie man hier ein attachement anhängt. (Vielleicht geht es auch nicht.)

Ich glaube, wir sind nicht mehr so weit weg.
Es wäre schön wenn wir das noch hin kriegen. (Als Weihnachtsgeschenk für meinen Sohn.)

Vielen Dank für deine Hilfe.

Gruss,
 
Das ist alles vollkommen richtig, auch das eth1 stimmt so.
Jetzt schau dir einmal die Ausgabe von /usr/sbin/iwconfig an und von lsusb.
 
OP
R

rgloor

Newbie
Wie konfiguriere ich nun das Teil richtig?
Wenn ich mit YAST den Networkkarten-Manager aufrufe habe ich keine Möglichkeit die WLAN specs zu konfigurieren (ESSID, WPA-Typus, WPA Key, etc.).
Eine als Ethernet ausgewählte Netzkarte lässt sich nur wie eine normale PCI-NIC konfigurieren.
Wenn ich eine neue Karte definiere, drahtlos auswähle und USBus anklicke, dann gibt es in den folgenden Konfigurationsseiten die Konfigurationsmöglichkeiten für ESSID, WEP / WAP, Key, etc.

Ausserdem kann man scheinbar mit iwconfig WPA nicht konfigurieren (sondern nur WEP).

Und irgendwie scheint es mir auch nicht möglich, mit iwconfig einfache Änderungen für die Karte / den Stick zu machen.
Den falschen ESSID (USR9106) kann ich nicht korrigieren.
Ich versuchte es mit:

iwconfig eth1 essid Heim_Netz

(Heim_Netz ist natürlich nicht mein echtes ESSID aber das werde ich hier nicht im Internet verkünden.)
Das ging aber nicht. Beim nächsten Aufruf iwconfig, zeigte sich immer noch die alte, falsche ESSID.

Hast du noch einen guten Tipp für mich?
Gibt es noch irgend ein Protokoll, dass ich machen könnte, dass für deine Analyse hilfreich wäre? (Wenn ja, bitte erklären wie.)

Danke im Voraus.

Gruss,
 
OP
R

rgloor

Newbie
Hallo Freecoffee

Ich war/bin während diesen Konfigurationen als root angemeldet.

Hier noch die Ausgaben von "iwlist scan" (ich sah deine Antwort gestern in einem anderen WLAN thread), iwconfig und ifconfig.

Ausgabe von iwlist scan:
Code:
dino:~ # iwlist scan
lo        Interface doesn't support scanning.

eth0      Interface doesn't support scanning.

sit0      Interface doesn't support scanning.

eth1      Scan completed :
          Cell 01 - Address: 00:C0:49:E7:DE:AE
                    ESSID:"USR9106"
                    Protocol:IEEE 802.11bg
                    Mode:Master
                    Channel:11
                    Encryption key:off
                    Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 6 Mb/s; 9 Mb/s
                              11 Mb/s; 12 Mb/s; 18 Mb/s; 24 Mb/s; 36 Mb/s
                              48 Mb/s; 54 Mb/s
                    Quality=100/100  Signal level=17/100
                    Extra: Last beacon: 596ms ago

dino:~ #

Ausgabe von iwconfig:
Code:
dino:~ # iwconfig
lo        no wireless extensions.

eth0      no wireless extensions.

sit0      no wireless extensions.

eth1      802.11g zd1211  ESSID:off/any
          Mode:Managed  Frequency:2.462 GHz  Access Point: Invalid
          Bit Rate=1 Mb/s
          Encryption key:off
          Link Quality:0  Signal level:0  Noise level:0
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:0  Invalid misc:0   Missed beacon:0

dino:~ #

Ausgabe von ifconfig:
Code:
dino:~ # ifconfig
eth0      Protokoll:Ethernet  Hardware Adresse 00:10:4B:7A:88:5A
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 Sendewarteschlangenlänge:1000
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)
          Interrupt:10 Basisadresse:0x8000

eth1      Protokoll:Ethernet  Hardware Adresse 00:14:C1:1B:FF:B3
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 Sendewarteschlangenlänge:1000
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

lo        Protokoll:Lokale Schleife
          inet Adresse:127.0.0.1  Maske:255.0.0.0
          inet6 Adresse: ::1/128 Gültigkeitsbereich:Maschine
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:80 errors:0 dropped:0 overruns:0 frame:0
          TX packets:80 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 Sendewarteschlangenlänge:0
          RX bytes:5216 (5.0 Kb)  TX bytes:5216 (5.0 Kb)

dino:~ #

Vielleicht hilft dir das. Wie gesagt, etwas ist noch nicht ganz sauber.

Gruss,
 
Oben