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ß!