Hallo liebe Linux'erInnen! Ich beschäftige mich seit einiger Zeit mit meiner WLAN-Karte mit dem Chip von Realtek (RTL8180). Erhältlich unter anderem auf der Level1 WPC-0101 oder der Linksys WPC100. Diese Chip wird nicht native vom Kernel unterstützt. Da ich eh den 2.4.22 nutze habe ich PCMCIA neukonfiguriert. Damit meine normale CardBus NIC läuft benötige ich das Modul tulip_cb, dass man nur von pcmcia-cs (http://pcmcia-cs.sf.net), wenn man im Kernel das PCMCIA-Subsystem deaktiviert: # # PCMCIA/CardBus support # # CONFIG_PCMCIA is not set # # Wireless LAN (non-hamradio) # CONFIG_NET_RADIO=y CONFIG_NET_WIRELESS=y Soweit so gut. Die für WLAN nötigen Tools wireless_tools ( http://hpl.hp.com/personal/Jean_Tourrilhes/Linux/ ) und wlan-ng ( http://www.linux-wlan.com ) sind ebenfalls installiert. Die Treiber des Chips finden sich auf der Realtek-Homepage ( http://www.realtek.com.tw/downloads/downloads1-3.aspx?Keyword=8180 ) zumindest für RedHat 7.2 und 9.0 ( ftp://210.51.181.211/cn/wlan/rtl8180l/rtl8180_linuxdrv_v14_rh90.zip ). Die habe ich dann entpackt und der README nacht bearbeitet: [root@Atlas root]# unzip rtl8180_linuxdrv_v14_rh90.zip Archive: rtl8180_linuxdrv_v14_rh90.zip inflating: release/Makefile inflating: release/priv_part.o inflating: release/r8180_export.h inflating: release/r8180_if.c inflating: release/r8180_if.h inflating: release/r8180_pci_init.c inflating: release/r8180_pci_init.h inflating: release/r8180_type.h inflating: release/readme inflating: release/rls_note_1030 inflating: release/wlandown inflating: release/wlanup [root@Atlas root]# cd release/ [root@Atlas release]# vi Makefile Im Makefile muss in jedem Fall das KERNELRELEASE und der INCLUDEPATH angepasst werden #----------------------------------------------- #Specify kernel version and include path #----------------------------------------------- KERNELRELEASE=2.4.22 INCLUDEPATH=-I /usr/src/linux-$(KERNELRELEASE)/include/ Die anderen einstellbaren Sachen wie z.B.IO_FLAGS oder ENDIAN_FLAGS verstehe ich nicht und habe ich nicht verändert. Danach kann Kompeliert werden: [root@Atlas release]# make gcc -O6 -Wall -DMODULE -D__KERNEL__ -DLINUX -I /usr/src/linux-2.4.22/include/ -DRTL_IO_MAP -DRTL_LITTLE_ENDIAN -DRTL_ACT_AS_STA -DRTL8180_DRV_ON_PC -DENABLE_DBG_PRINT -c -o r8180_pci_init.o r8180_pci_init.c In file included from /usr/src/linux-2.4.22/include/asm/semaphore.h:39, from /usr/src/linux-2.4.22/include/linux/fs.h:200, from /usr/src/linux-2.4.22/include/linux/capability.h:17, from /usr/src/linux-2.4.22/include/linux/binfmts.h:5, from /usr/src/linux-2.4.22/include/linux/sched.h:9, from r8180_pci_init.c:26: /usr/src/linux-2.4.22/include/asm/system.h: In function `__set_64bit_var': /usr/src/linux-2.4.22/include/asm/system.h:190: warning: dereferencing type-punned pointer will break strict-aliasing rules /usr/src/linux-2.4.22/include/asm/system.h:190: warning: dereferencing type-punned pointer will break strict-aliasing rules gcc -O6 -Wall -DMODULE -D__KERNEL__ -DLINUX -I /usr/src/linux-2.4.22/include/ -DRTL_IO_MAP -DRTL_LITTLE_ENDIAN -DRTL_ACT_AS_STA -DRTL8180_DRV_ON_PC -DENABLE_DBG_PRINT -c -o r8180_if.o r8180_if.c In file included from /usr/src/linux-2.4.22/include/asm/semaphore.h:39, from /usr/src/linux-2.4.22/include/linux/fs.h:200, from /usr/src/linux-2.4.22/include/linux/capability.h:17, from /usr/src/linux-2.4.22/include/linux/binfmts.h:5, from /usr/src/linux-2.4.22/include/linux/sched.h:9, from r8180_if.c:27: /usr/src/linux-2.4.22/include/asm/system.h: In function `__set_64bit_var': /usr/src/linux-2.4.22/include/asm/system.h:190: warning: dereferencing type-punned pointer will break strict-aliasing rules /usr/src/linux-2.4.22/include/asm/system.h:190: warning: dereferencing type-punned pointer will break strict-aliasing rules --- Generate open part open_part.o --- --- Generate rtl8180 linux driver rtl8180_24x.o on 2.4.22 --- Erstmal beschreibe ich, wie es weitergehen würde, wenn ich keinen Fehler bekomme, da ja vielleicht andere Leute mehr "Glück" haben und die interessiert mein Fehler ja nicht. Diese beiden Konfigurationen müssen in die /etc/pcmcia/wlan-ng.conf eingetragen werden. -------SCHNIPP------- device "rtl8180_24x" class "wlan-ng" module "rtl8180_24x" card "Level1 WPC-0101 11Mb/s 802.11b WLAN Card" manfid 0x0000, 0x024c bind "rtl8180_24x" -------SCHNAPP------- Der erste Eintrag zeigt dem PCMCIA-Daemon, dass es das Modul rtl8180_24x gibt und der zweite weißt der Karte mit der manfid 0x0000, 0x024c das Modul rtl8180_24x zu. Entnehmen kann man diese Informationen cardctl: [root@Atlas release]# cardctl ident Socket 0: product info: "Realtek", "Rtl8180" manfid: 0x0000, 0x024c function: 6 (network) PCI id: 0x10ec, 0x8180 Socket 1: product info: "CardBus", "Fast Ethernet", "V1.0", "" manfid: 0x13d1, 0xab02 function: 6 (network) PCI id: 0x13d1, 0xab02 Nach dem nächsten Neustart des PCMCIA-Daemons (oder des Rechners ;-)) sollt die Karte laufen. Sollte, tut sie bei mir aber nicht :-((( In meinem Syslog werden folgende Infos gespeichert: Nov 7 16:47:23 atlas kernel: cs: cb_alloc(bus 1): vendor 0x10ec, device 0x8180 Nov 7 16:47:23 atlas cardmgr[103]: socket 0: Level1 WPC-0101 11Mb/s 802.11b WLAN Card Nov 7 16:47:23 atlas cardmgr[103]: executing: 'modprobe rtl8180_24x' Nov 7 16:47:24 atlas kernel: Nov 7 16:47:24 atlas kernel: Nov 7 16:47:24 atlas kernel: ******** RTL8180 Wireless Lan Driver 2003-10-17 loaded******** Nov 7 16:47:24 atlas kernel: PCI: No IRQ known for interrupt pin A of device . Nov 7 16:47:24 atlas kernel: PCI: Setting latency timer of device to 64 Nov 7 16:47:24 atlas kernel: RTL8180: : region #0 not a PIO resource, aborting Nov 7 16:47:24 atlas kernel: unregister_netdevice: device wlan%%d/c1a80c00 never was registered Nov 7 16:47:24 atlas kernel: RTL8180: wlan driver load failed Nov 7 16:47:24 atlas kernel: rtl8180: No devices found, RTL8180 Wireless Lan Driver 2003-10-17 unregistered Nov 7 16:47:24 atlas cardmgr[103]: + /lib/modules/2.4.22/pcmcia/rtl8180_24x.o: init_module: No such device Nov 7 16:47:24 atlas cardmgr[103]: + /lib/modules/2.4.22/pcmcia/rtl8180_24x.o: insmod /lib/modules/2.4.22/pcmcia/rtl8180_24x.o failed Nov 7 16:47:24 atlas cardmgr[103]: + /lib/modules/2.4.22/pcmcia/rtl8180_24x.o: insmod rtl8180_24x failed Nov 7 16:47:24 atlas cardmgr[103]: + Hint: insmod errors can be caused by incorrect module parameters, including invalid IO or IRQ parameters. Nov 7 16:47:24 atlas cardmgr[103]: + You may find more information in syslog or the output from dmesg Nov 7 16:47:24 atlas cardmgr[103]: modprobe exited with status 255 Nov 7 16:47:24 atlas cardmgr[103]: executing: 'insmod /lib/modules/2.4.22/pcmcia/rtl8180_24x.o' Nov 7 16:47:24 atlas kernel: Nov 7 16:47:24 atlas kernel: Nov 7 16:47:24 atlas kernel: ******** RTL8180 Wireless Lan Driver 2003-10-17 loaded******** Nov 7 16:47:24 atlas cardmgr[103]: + /lib/modules/2.4.22/pcmcia/rtl8180_24x.o: init_module: No such device Nov 7 16:47:24 atlas kernel: PCI: No IRQ known for interrupt pin A of device . Nov 7 16:47:24 atlas cardmgr[103]: + Hint: insmod errors can be caused by incorrect module parameters, including invalid IO or IRQ parameters. Nov 7 16:47:24 atlas kernel: RTL8180: : region #0 not a PIO resource, aborting Nov 7 16:47:24 atlas cardmgr[103]: + You may find more information in syslog or the output from dmesg Nov 7 16:47:24 atlas kernel: unregister_netdevice: device wlan%%d/c1a80c00 never was registered Nov 7 16:47:24 atlas cardmgr[103]: insmod exited with status 1 Nov 7 16:47:24 atlas kernel: RTL8180: wlan driver load failed Nov 7 16:47:24 atlas kernel: rtl8180: No devices found, RTL8180 Wireless Lan Driver 2003-10-17 unregistered Nov 7 16:47:25 atlas cardmgr[103]: get dev info on socket 0 failed: Resource temporarily unavailable lilo habe ich bereits mit append="pci=biosirq" angepasst (wurde mir vom kernel via syslog befohlen) Ich kann die Fehlermeldung allerdings nur schwer verstehen: Irgendwie werden IRQs über vier Pins vergeben (A,B,C,D). Und das entweder vom BIOS oder vom OS. Im BIOS kann man deswegen solche Kleinigkeiten einstellen, aber egal was ich wähle, immer bekomme ich die gleiche Fehlermeldung. (glaube ich... habe nie ge'diff't) [root@Atlas release]# cat /proc/pci [...] Bus 5, device 0, function 0: Ethernet controller: (rev 17). IRQ 9. Master Capable. Latency=64. Min Gnt=255.Max Lat=255. Bus 1, device 0, function 0: Ethernet controller: (rev 32). Master Capable. Latency=64. Min Gnt=32.Max Lat=64. Es wird also kein IRQ zugewiesen (die erste Karte ist meine normal NIC) Hat jemand nen Rat? Vielen Dank im Vorraus! Moritz PS: Entschuldigung für die extrem lange Mail, aber es gab bisher kaum gut dokumentierte Anleitungen für den RTL8180-Chip und so dachte ich schreibe es mal für andere auf, die vielleicht weniger Probleme haben als ich. PPS: Benutze wie oben schon beschrieben den 2.4.22 mit DevFS und gcc 3.3.2 (nur zur Info) -- NEU FÜR ALLE - GMX MediaCenter - für Fotos, Musik, Dateien... Fotoalbum, File Sharing, MMS, Multimedia-Gruß, GMX FotoService Jetzt kostenlos anmelden unter http://www.gmx.net +++ GMX - die erste Adresse für Mail, Message, More! +++