Schlagwort: Raspberry PI

  • Ralink USB WIFI Adapter mit MT7601 Chip am Raspberry Pi unter raspbmc betreiben

    Damit fing alles an

    Vor einiger Zeit habe ich einen günstigen USB WLAN Adapter bei ebay gekauft, den ich am Raspberry Pi betreiben wollte. Nun war es soweit und ich wollte den Wifi Adapter in Betrieb nehmen.

    Am Raspberry Model B Revision 2 angeschlossen wurde der Adapter zwar erkannt, die Eingabe von lsusb führte zu folgendem Ergebnis:

    pi@raspbmc:~$ lsusb
    Bus 001 Device 002: ID 0424:9512 Standard Microsystems Corp. 
    Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
    Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. 
    Bus 001 Device 004: ID 148f:7601 Ralink Technology, Corp.

    Aha, es scheint sich um einen Adapter von Ralink zu handeln.

    ifconfig hingegen hat keinen W-Lan Adapter angezeigt.

    pi@raspbmc:~$ ifconfig

    Nun ging die Suche los und hat mich über einige Webseiten und Foren geführt.

    Die Suche nach der Ralink ID „148f:7601“ brachte es schnell ans Licht. Der WLAN Adapter verwendet einen MT7601 Chip von Ralink, der offenbar nicht vom Kernel direkt unterstützt wird.

    Nun denn, also erstmal nach dem Rechten sehen. Um welches Linux geht es denn genau?

    pi@raspbmc:~$ uname -a
    Linux raspbmc 3.12.31 #2 PREEMPT Wed Oct 29 09:24:56 UTC 2014 armv6l GNU/Linux

    Also suchte ich danach, wie ich einen Treiber für mein raspbmc Linux 3.12.31 kompiliere und wurde hier bei Dodger Tools  fündig. Eine prima Anleitung, der ich nahezu Stück für Stück gefolgt bin. Doch dazu gleich mehr. Erst noch die richtigen Treibersourcen suchen, die ich bei Mediatek gefunden habe. Für die Konfiguration des Network Interfaces habe ich mich dieser Quelle bedient. 

    Nun aber Schritt für Schritt

    Als erstes habe ich die Treibersourcen bei Mediatek auf meinen lokalen Rechner heruntergeladen und anschließend per scp (Secure Copy) auf den Pi übertragen. Dieser Schritt war notwendig, da Mediatek für den Download eine E-Mail Adresse wissen wollte. Die Datei DPO_MT7601U_LinuxSTA_3.0.0.4_20130913.tar.bz2 landete in meinem Downloadverzeichnis.

    Auf dem Mac wird dann ein Terminal geöffnet. Unter Windows geht sowas prima mit Putty.

    #ins Verzeichnis Downloads wechseln
    cd Downloads/
    #Treiber auf den Raspberry Pi in das Verzeichnis /tmp kopieren
    scp DPO_MT7601U_LinuxSTA_3.0.0.4_20130913.tar.bz2 pi@192.168.178.38:/tmp

    Anschließend per ssh mit dem PI verbinden und dort geht’s weiter.

    ssh pi@192.168.178.25

    Die IP Adresse müsst ihr natürlich durch die IP Adresse eures PI ersetzen.

    Und weiter gehts auf dem Pi

    Die nachfolgenden Zeilen habe ich dann einzeln auf dem Raspberry Pi ausgeführt. Die Kommentare (Zeilen die mit # beginnen) natürlich nicht.

    #Werde root
    sudo bash
    
    #Die grafische Oberfläche stoppen 
    #(verringert die CPU Last und spart RAM)
    initctl stop xbmc
    
    #Installiere Notwendige Pakete um die Treiber zu bauen
    apt-get -y install build-essential bc gcc make wireless-tools
    
    #Module.symvers aus den Kernel headers herunterladen
    cd /tmp
    wget http://www.mirrorservice.org/sites/raspbmc.com/downloads/bin/kernel/linux-headers-latest.deb.gz
    mkdir x
    dpkg-deb -x linux-headers-latest.deb.gz x
    mv -v x/usr/src/linux-headers-$(uname -r)/Module.symvers /usr/src
    
    #Kernel source laden und vorbereiten
    cd /usr/src
    gKernel=$(uname -r | sed 's/[0-9]*$/y/')
    #der folgende Schritt dauert eine Weile, da nun die Kernel Quellen geladen werden
    wget --no-check-certificate https://github.com/raspberrypi/linux/archive/rpi-$gKernel.tar.gz
    #auspacken des Quellarchives
    tar xzf rpi-*.tar.gz
    mv linux-rpi-*y rpi-linux
    

    Als nächstes habe ich den Treiber aus dem Verzeichnis /tmp nach /usr/src kopiert, dann haben wir alles beieinander. Hier weicht die Anleitung von der Anleitung bei Dodger Tools ab, da wir einen anderen Treiber kompilieren wollen.

    cp /tmp/DPO_MT7601U_LinuxSTA_3.0.0.4_20130913.tar.bz2 /usr/src/
    #Treiber entpacken
    tar xvjf DPO_MT7601U_LinuxSTA_3.0.0.4_20130913.tar.bz2

    Und weiter geht’s wieder mit der Anleitung von Dodger Tools:

    #Kernel konfigurieren
    cd /usr/src/rpi-linux
    make mrproper
    zcat /proc/config.gz > .config
    sed -i 's/CONFIG_CROSS_COMPILE.*/CONFIG_CROSS_COMPILE=""/' .config
    make modules_prepare
    cp /usr/src/Module.symvers .
    
    #Symlinks erstellen, damit die Modul Source die Kernel Source finden
    rm -r /lib/modules/$(uname -r)/build
    rm -r /lib/modules/$(uname -r)/source
    rm -r /usr/src/linux
    ln -s /usr/src/rpi-linux /lib/modules/$(uname -r)/build
    ln -s /usr/src/rpi-linux /lib/modules/$(uname -r)/source
    ln -s /usr/src/rpi-linux /usr/src/linux
    
    

    Hier wieder eine leichte Abweichung wegen des anderen Treibers

    #Modul kompilieren und installieren
    cd /usr/src/DPO_MT7601U_LinuxSTA_3.0.0.4_20130913
    make
    make install
    #Alte Kernel Module entfernen
    rm -r /lib/modules/$(uname -r)/kernel/drivers/net/wireless/rt2x00
    
    #Raspberry pi Rebooten
    reboot 
    
    #Wieder einloggen, Root werden und dann Prüfen, ob ein WLAN Adapter angezeigt wird
    iwconfig

    Yippieh, das hat funktioniert

    Die Ausgabe zeigt:

    root@raspbmc:/usr/src/DPO_MT7601U_LinuxSTA_3.0.0.4_20130913# iwconfig
    ra0 Ralink STA ESSID:"MeineSSID" Nickname:"MT7601STA"
     Mode:Managed Frequency=2.437 GHz Access Point: 10:9A:DD:81:CE:6D 
     Bit Rate=58.5 Mb/s 
     RTS thr:off Fragment thr:off
     Encryption key:1234-ABCD-2345-BCDE-3456-CDEF-4567-DEFG Security mode:open
     Link Quality=79/100 Signal level:-62 dBm Noise level:-81 dBm
     Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
     Tx excessive retries:0 Invalid misc:0 Missed beacon:0
    
    lo no wireless extensions.
    
    eth0 no wireless extensions.

    Jetzt nur noch das Network interface konfigurieren

    nano /etc/network/interfaces

    Dort dann folgendes einfügen (SSID und PASSWORD müssen durch eure Werte ersetzt werden):

    auto ra0
    allow-hotplug ra0
    iface ra0 inet dhcp
    wpa-ssid "ENTER YOUR NETWORK SSID"
    wpa-psk "ENTER YOUR NETWORK PASSWORD"

    Nach einem Reboot des Pi war dieser über WLAN erreichbar und hat eine schöne eigene IP Adresse erhalten:

    ra0 Link encap:Ethernet HWaddr 00:0d:a3:1c:3f:e8 
     inet addr:192.168.178.38 Bcast:192.168.178.255 Mask:255.255.255.0
     inet6 addr: xxxx::xxxx:xxxx:xxxx:xxxx/64 Scope:Link
     UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
     RX packets:126797 errors:0 dropped:5 overruns:0 frame:0
     TX packets:5455 errors:0 dropped:0 overruns:0 carrier:0
     collisions:0 txqueuelen:1000 
     RX bytes:29841593 (28.4 MiB) TX bytes:912324 (890.9 KiB)

    Viel Spaß!