czwartek, 21 maja 2015

Adapter Wifi Ralink i Raspberry Pi

Kupiłem kilka dni temu nano adapter wifi na usb z aliexpressu - po prostu jakiś najtańszy chiński noname (na allegro sprzedawane są po ok. 15zł). Zapłaciłem niecałe 2 dolary z wysyłką i o dziwo paczka dotarła w 7 dni. Zakupu dokonałem z myślą włożenia modułu do mojego Raspberry Pi 2 B, po to żeby generalnie ułatwić sobie z nim pracę.

Nano adapter wifi który otrzymałem. Wyświetla się jako Ralink


O ile moduł zadziałał bez problemu z Windowsem 8, o tyle w przypadku Raspbiana już tak kolorowo nie było. Problem polega na tym, że nie ma sterowników pod linuxa dla tych najtańszych "dongli". Ale trochę googlowania, pytanie na raspberrypi stackexchange i problem udało się rozwiązać.

Po kolei:

polecenie lsusb wyswietliło moje urządzenie jako 148f:7601, więc zacząłem na jego temat szukać informacji. Na githubie jest projekt ze sterownikami (https://github.com/porjo/mt760) i instrukcją jak je zainstalować, ale w moim przypadku się to nie udawało bo po wywołaniu polecenia make 
dostawałem błąd :
/lib/modules/3.18.7-v7+/build No such file or directory.

Nie jestem mistrzem linuxa, więc nie bardzo wiedziałem co z tym zrobić, pewnie istnieje kilka sposobów żeby to naprawić (chyba coś z linux-update-headers kompilacją modułów itp), ale w moim przypadku pomogło po prostu użycie:

sudo apt-get update
sudo apt-get dist-upgrade
sudo apt-get install rpi-update
sudo rpi-update

Po wykonaniu tych operacji mój kernel został zaktualizowany do aktualnie najnowszej wersji 3.18.13-v7 (wersję kernela można sprawdzić wywołując polecenie uname -a).

Po tym być może udałoby się już wykonać instrukcje z wyżej wspomnianego projektu na githubie ale znacznie łatwiej było skorzystać ze skryptu przygotowanego przez MrEngman'a. Są to skompilowane już sterowniki do dongla i skrypt który je dla nas zainstaluje. Procedura jest bardzo prosta:

Na początek sprawdzamy wersję kernela przy pomocy uname -a i notujemy ją (u mnie było to na przykład 3.18.7-v7 #785). W niektórych wersjach rPi nie ma tego przyrostka "-v7". Sterowniki możeby pobrać poleceniem wget a url to

https://dl.dropboxusercontent.com/u/80256631/mt7601-<wersja kernela>.tar.gz

W moim przypadku było to więc:

https://dl.dropboxusercontent.com/u/80256631/mt7601-3.18.13-v7-785.tar.gz 

Jeżeli nie ma przyrostka v7, to się go nie dodaje. Jeżeli uname -a pokazał np 3.18.11 #782, to url będzie:
https://dl.dropboxusercontent.com/u/80256631/mt7601-3.18.11-782.tar.gz (bez "-v7" i z 782 zamiast 785). Jeżeli pobierze się złą wersję, to sterownik po prostu nie zadziała.

Czyli pobieramy, wypakowujemy i uruchamiamy skrypt ./install.sh:
wget https://dl.dropboxusercontent.com/u/80256631/mt7601-3.18.13-785.tar.gz
tar xzf mt7601-3.18.13-785.tar.gz
./install.sh
Potem restart komputera i powinno działać :)
U mnie działa. Teraz chciałbym zrobić przy jego pomocy Access Point żeby łączyć się przez ssh z telefonu, ale wiem czy z tym dinksem się to uda. Pozdrawiam.




Tutaj link do pytania, w którym gość pomógł mi rozwiązać ten problem: http://raspberrypi.stackexchange.com/questions/31706/error-lib-modules-3-18-7-v7-build-no-such-file-or-directory-when-compiling-d

A tutaj link do tematu w którym udziela się MrEngman i pomaga jeśli są problemy ze skryptem: https://www.raspberrypi.org/forums/viewtopic.php?p=760070#p760070 (poprzednie i kolejne posty)