# Offiziellen Ralink Treiber für die RT2500 (PCI) installieren

## hannibal_fg

Hi.

Der im Kernel enthaltene Treiber für die Karte (rt2500pci) funktioniert soweit recht gut.

Leider kann er nicht mit den (offiziellen Ralink-) Treibern unter Windows XP mithalten.

Unter Windows ist der Empfang fast doppelt so gut. (WinXP - ~90% | Gentoo Linux - ~ 50%)

Teilweise kommt es auch vor, dass ich unter Linux keinen Empfang habe, unter WinXP aber schon.

Also habe ich nach anderen Treibern gesucht und bin auf diese Wikiseite gestoßen:

http://de.gentoo-wiki.com/Rt2500

Dort wird unter "Ralink Original-Treiber manuell installieren" beschrieben, wie man sich den offiziellen Treiber installiert.

Das habe ich auch versucht. Leider spuckt 'make -C /pfad/zum/kernel/source SUBDIRS=$PWD modules' einen Fehler aus, mit dem ich nichts anfangen kann:

```
make -C /usr/src/linux-2.6.25-gentoo-r7 SUBDIRS=$PWD modules

make: Entering directory `/usr/src/linux-2.6.25-gentoo-r7'

  CC [M]  /home/felix/Desktop/RT2500-Linux-STA-1.4.6.6/Module/rtmp_main.o

In Datei, eingefügt von /home/felix/Desktop/RT2500-Linux-STA-1.4.6.6/Module/rtmp_main.c:38:

/home/felix/Desktop/RT2500-Linux-STA-1.4.6.6/Module/rt_config.h:62:40: Fehler: linux/config.h: Datei oder Verzeichnis nicht gefunden

/home/felix/Desktop/RT2500-Linux-STA-1.4.6.6/Module/rtmp_main.c: In Funktion »RT2500_probe«:

/home/felix/Desktop/RT2500-Linux-STA-1.4.6.6/Module/rtmp_main.c:133: Fehler: Implizite Deklaration der Funktion »SET_MODULE_OWNER«

/home/felix/Desktop/RT2500-Linux-STA-1.4.6.6/Module/rtmp_main.c:181: Fehler: »struct net_device« hat kein Element namens »get_wireless_stats«

/home/felix/Desktop/RT2500-Linux-STA-1.4.6.6/Module/rtmp_main.c:197: Fehler: »dev_base« nicht deklariert (erste Benutzung in dieser Funktion)

/home/felix/Desktop/RT2500-Linux-STA-1.4.6.6/Module/rtmp_main.c:197: Fehler: (Jeder nicht deklarierte Bezeichner wird nur einmal aufgeführt

/home/felix/Desktop/RT2500-Linux-STA-1.4.6.6/Module/rtmp_main.c:197: Fehler: für jede Funktion in der er auftritt.)

/home/felix/Desktop/RT2500-Linux-STA-1.4.6.6/Module/rtmp_main.c:197: Fehler: »struct net_device« hat kein Element namens »next«

/home/felix/Desktop/RT2500-Linux-STA-1.4.6.6/Module/rtmp_main.c: In Funktion »RT2500_open«:

/home/felix/Desktop/RT2500-Linux-STA-1.4.6.6/Module/rtmp_main.c:268: Fehler: »SA_SHIRQ« nicht deklariert (erste Benutzung in dieser Funktion)

/home/felix/Desktop/RT2500-Linux-STA-1.4.6.6/Module/rtmp_main.c:268: Warnung: Übergabe des Arguments 2 von »request_irq« von inkompatiblem Zeigertyp

/home/felix/Desktop/RT2500-Linux-STA-1.4.6.6/Module/rtmp_main.c: In Funktion »rt2500_init_module«:

/home/felix/Desktop/RT2500-Linux-STA-1.4.6.6/Module/rtmp_main.c:783: Fehler: Implizite Deklaration der Funktion »pci_module_init«

make[1]: *** [/home/felix/Desktop/RT2500-Linux-STA-1.4.6.6/Module/rtmp_main.o] Fehler 1

make: *** [_module_/home/felix/Desktop/RT2500-Linux-STA-1.4.6.6/Module] Fehler 2

make: Leaving directory `/usr/src/linux-2.6.25-gentoo-r7'
```

Er scheint eine Headerdatei nicht finden zu können und hat deswegen wohl eine Funktion nicht zur Verfügung.

Der Pfad zu den Kernelquellen ist aber auf jeden fall richtig. (Dort kann ich auch make menuconfig usw. ausführen)

Hab den Befehl mal etwas abgewandelt. Leider weiß ich nicht ob das was bringt (habe keine '*.ko' Datei gefunden).

```
make -C /usr/src/linux-2.6.25-gentoo-r7

make: Entering directory `/usr/src/linux-2.6.25-gentoo-r7'

  CHK     include/linux/version.h

  CHK     include/linux/utsrelease.h

  CALL    scripts/checksyscalls.sh

  CHK     include/linux/compile.h

dnsdomainname: Unknown host

  LD      vmlinux.o

  MODPOST vmlinux.o

WARNING: modpost: Found 14 section mismatch(es).

To see full details build your kernel with:

'make CONFIG_DEBUG_SECTION_MISMATCH=y'

  GEN     .version

  CHK     include/linux/compile.h

dnsdomainname: Unknown host

  UPD     include/linux/compile.h

  CC      init/version.o

  LD      init/built-in.o

  LD      .tmp_vmlinux1

  KSYM    .tmp_kallsyms1.S

  AS      .tmp_kallsyms1.o

  LD      .tmp_vmlinux2

  KSYM    .tmp_kallsyms2.S

  AS      .tmp_kallsyms2.o

  LD      vmlinux

  SYSMAP  System.map

  SYSMAP  .tmp_System.map

  CC      arch/x86/boot/version.o

  LD      arch/x86/boot/setup.elf

  OBJCOPY arch/x86/boot/setup.bin

  OBJCOPY arch/x86/boot/compressed/vmlinux.bin

  GZIP    arch/x86/boot/compressed/vmlinux.bin.gz

  LD      arch/x86/boot/compressed/piggy.o

  LD      arch/x86/boot/compressed/vmlinux

  OBJCOPY arch/x86/boot/vmlinux.bin

  BUILD   arch/x86/boot/bzImage

Root device is (3, 2)

Setup is 11288 bytes (padded to 11776 bytes).

System is 2512 kB

Kernel: arch/x86/boot/bzImage is ready  (#10)

  Building modules, stage 2.

  MODPOST 27 modules

make: Leaving directory `/usr/src/linux-2.6.25-gentoo-r7'
```

Der ndiswrapper soll angeblich nicht so gut sein. Deswegen habe ich da bis jetzt die Finger von gelassen.

----------

## firefly

welchen kernel verwendest du?

----------

## hannibal_fg

```
$ uname -a

Linux laptop 2.6.25-gentoo-r7 #8 Sun Sep 21 19:55:37 CEST 2008 i686 Intel(R) Celeron(R) M processor 1.40GHz GenuineIntel GNU/Linux
```

----------

## Anarcho

Nun,

dein zweiter Befehl hat einfach ganz normal ein Kernel-Image erzeugt. Das wird dir nicht viel weiter helfen.

----------

## hannibal_fg

 *Anarcho wrote:*   

> Nun,
> 
> dein zweiter Befehl hat einfach ganz normal ein Kernel-Image erzeugt. Das wird dir nicht viel weiter helfen.

 

Stimmt. Ich brauche ja das Modul.

Was muss ich machen, um den ersten Befehl (aus der Anleitung) zum laufen zu bringen?

```
Fehler: linux/config.h: Datei oder Verzeichnis nicht gefunden
```

-> Wie sag ich ihm, wo er die Datei findet?

----------

## Anarcho

Versuche mal in der Datei rt_config.h die folgende Ersetzung:

#include <linux/config.h> in #include <linux/autoconf.h>

----------

## hannibal_fg

Danke für den Tipp. Scheint, als wäre ich jetzt schon einen Schritt weiter.

```
# make -C /usr/src/linux-2.6.25-gentoo-r7 SUBDIRS=$PWD modules

make: Entering directory `/usr/src/linux-2.6.25-gentoo-r7'

  CC [M]  /home/felix/RT2500-Linux-STA-1.4.6.6/Module/rtmp_main.o

/home/felix/RT2500-Linux-STA-1.4.6.6/Module/rtmp_main.c: In Funktion »RT2500_probe«:

/home/felix/RT2500-Linux-STA-1.4.6.6/Module/rtmp_main.c:133: Fehler: Implizite Deklaration der Funktion »SET_MODULE_OWNER«

/home/felix/RT2500-Linux-STA-1.4.6.6/Module/rtmp_main.c:181: Fehler: »struct net_device« hat kein Element namens »get_wireless_stats«

/home/felix/RT2500-Linux-STA-1.4.6.6/Module/rtmp_main.c:197: Fehler: »dev_base« nicht deklariert (erste Benutzung in dieser Funktion)

/home/felix/RT2500-Linux-STA-1.4.6.6/Module/rtmp_main.c:197: Fehler: (Jeder nicht deklarierte Bezeichner wird nur einmal aufgeführt

/home/felix/RT2500-Linux-STA-1.4.6.6/Module/rtmp_main.c:197: Fehler: für jede Funktion in der er auftritt.)

/home/felix/RT2500-Linux-STA-1.4.6.6/Module/rtmp_main.c:197: Fehler: »struct net_device« hat kein Element namens »next«

/home/felix/RT2500-Linux-STA-1.4.6.6/Module/rtmp_main.c: In Funktion »RT2500_open«:

/home/felix/RT2500-Linux-STA-1.4.6.6/Module/rtmp_main.c:268: Fehler: »SA_SHIRQ« nicht deklariert (erste Benutzung in dieser Funktion)

/home/felix/RT2500-Linux-STA-1.4.6.6/Module/rtmp_main.c:268: Warnung: Übergabe des Arguments 2 von »request_irq« von inkompatiblem Zeigertyp

/home/felix/RT2500-Linux-STA-1.4.6.6/Module/rtmp_main.c: In Funktion »rt2500_init_module«:

/home/felix/RT2500-Linux-STA-1.4.6.6/Module/rtmp_main.c:783: Fehler: Implizite Deklaration der Funktion »pci_module_init«

make[1]: *** [/home/felix/RT2500-Linux-STA-1.4.6.6/Module/rtmp_main.o] Fehler 1

make: *** [_module_/home/felix/RT2500-Linux-STA-1.4.6.6/Module] Fehler 2

make: Leaving directory `/usr/src/linux-2.6.25-gentoo-r7'
```

Leider kann ich damit noch weniger anfangen. Haben die Devs von Ralink nicht sauber gearbeitet?

Was fehlt ihm jetzt?

In Zeile 133 steht einfach nur:

```
SET_MODULE_OWNER(net_dev);
```

Z.180 - Z.183:

```
#if WIRELESS_EXT >= 12

    net_dev->get_wireless_stats = RT2500_get_wireless_stats;

   net_dev->wireless_handlers = (struct iw_handler_def *) &rt2500_iw_handler_def;

#endif
```

Z.197 - Z.203:

```
            for (device = dev_base; device != NULL; device = device->next)

            {

                if (strncmp(device->name, slot_name, 4) == 0)

                {

                    break;

                }

            }
```

usw. 

Leider erkenn ich in keiner der Stellen einen Fehler.

Wahrscheinlich fehlt wieder eine Headerdatei. Leider weiß ich nicht, wie man das herausfindet (welche nun fehlt).

----------

## firefly

scheinbar sind die treiber von ralink nicht mehr kompatible zu deiner verwendeten kernel version.

DU hast dann 2 Möglichkeiten:

1. Versuch es mit einem neueren Kernel, eventuell hat dieser ne aktuellere Version.

oder 2. versuch es mal mit dem wireless-compat paket, welches die aktuellen entwicklungen im wireless sektor nach ältere kernel-versionen backported.

----------

## Anarcho

Du könntest es mal mit den treiber von http://rt2x00.serialmonkey.com probieren, aber wohl den CSV Snapshot, siehe:

http://rt2x00.serialmonkey.com/phpBB/viewtopic.php?f=5&t=4771&start=0&st=0&sk=t&sd=a

----------

## firefly

 *Anarcho wrote:*   

> Du könntest es mal mit den treiber von http://rt2x00.serialmonkey.com probieren, aber wohl den CSV Snapshot, siehe:
> 
> http://rt2x00.serialmonkey.com/phpBB/viewtopic.php?f=5&t=4771&start=0&st=0&sk=t&sd=a

 

funktioniert nur, wenn die CVS-Version noch kompatible zum 2.6.25 kernel ist  :Smile: 

----------

## hannibal_fg

Ist nicht das Kernel Modul rt2500pci aus dem serialmonkey Projekt entstanden?

Dann hätte ich den gleichen Treiber - nur eine etwas neuer Version (wenn es denn funktioniert).

Ich möchte damit eigentlich "nur" die gleichen Empfangserbebnisse wie unter WinXP erzielen.

Gibt es da eine andere Möglichkeit? Oder einen anderen Grund, warum es da solche Leistungsunterschiede gibt?

----------

## Anarcho

 *hannibal_fg wrote:*   

> Ist nicht das Kernel Modul rt2500pci aus dem serialmonkey Projekt entstanden?
> 
> Dann hätte ich den gleichen Treiber - nur eine etwas neuer Version (wenn es denn funktioniert).
> 
> Ich möchte damit eigentlich "nur" die gleichen Empfangserbebnisse wie unter WinXP erzielen.
> ...

 

Warum stellst du diese Frage nicht im Serialmonkey Forum? Da dürfte die Chance auf eine Antwort höher sein.

----------

