Εγκατάσταση οδηγού ασύρματης κάρτας Ralink (148f:7601)

ΣΗΜΕΙΩΣΗ: ΑΥΤΗ Η ΔΗΜΟΣΙΕΥΣΗ ΕΧΕΙ ΓΙΝΕΙ ΠΑΝΩ ΑΠΟ ΕΝΑ ΧΡΟΝΟ ΠΡΙΝ!

Κάποιες φορές χρειάζεται να ακολουθήσουμε έξτρα βήματα για να καταφέρουμε να κάνουμε κάποιο υλικό που έχουμε να λειτουργήσει σωστά σε Linux. Ναι, ακόμη και σήμερα εν έτη 2015. Ας μην αρχίσουμε τα «τις πταίει» μιας και είναι σχεδόν προφανές ότι οι εταιρίες που παράγουν αυτό το υλικό δεν ενδιαφέρονται και πολύ να διαθέσουν κάποιον οδηγό για Linux, ή και αν διαθέσουν κάποιον δεν ενδιαφέρονται να τον αναβαθμίσουν ακολουθώντας τις εξελίξεις.

Στον συγκεκριμένο οδηγό(tutorial) θα ασχοληθούμε με μια συγκεκριμένη κάρτα δικτύου της εταιρίας Ralink.

Η εταιρία Ralink φυσικά και δεν είναι η μοναδική που διαθέτει κακούς οδηγούς (drivers) για Linux ή δεν διαθέτει καθόλου. Επειδή όμως με το συγκεκριμένο θέμα ασχολήθηκα πρόσφατα και έφαγα κάμποσο χρόνο για να βρω τελικά την λύση, η οποία μόνο για μέσους χρήστες δεν προτείνεται, γι’ αυτό θα την παραθέσω εδώ με ενεργούς συνδέσμους και τον οδηγό(driver) ήδη patchαρισμενο για να χτιστεί και να εγκατασταθεί σωστά.

Πριν εφαρμόσετε τον οδηγό(tutorial)

Ο συγκεκριμένος οδηγός(tutorial) απευθύνεται σε συγκεκριμένο μοντέλο και chip ασύρματης κάρτας δικτύου. Δεν θα λειτουργήσει για οποιαδήποτε Ralink. Αυτό που μας ενδιαφέρει εδώ είναι το ID της κάρτας. Το βρίσκουμε με μια από τις παρακάτω εντολές σε ένα τερματικό

lsusb

ή

lspci -nnk | grep -iA2 net

η κάρτα μας θα πρέπει να έχει ID [148f:7601] (όπως το γράφω και στον τίτλο).  Εάν δεν έχει τέτοιο ID, τότε η διαδικασία που ακολουθεί πιθανών δεν θα δουλέψει σωστά.

Επίσης, θα πρέπει να έχουμε εγκαταστήσει (αναλόγως τη διανομή Linux που έχουμε) τα εργαλεία εκείνα που απαιτούνται για χτίσιμο και εγκατάσταση ενός module στον πυρήνα Linux. Για παράδειγμα σε Ubuntu τα εργαλεία αυτά βρίσκονται συγκεντρωμένα σε ένα πακέτο ονόματι build-essential. Ενίοτε ίσως χρειαστεί και ο πηγαίος κώδικας του πυρήνα Linux, μερικοί οδηγοί(drivers) τον απαιτούν.

Οπότε ένα

sudo apt-get install linux-headers-$(uname -r) build-essential linux-source

είναι σχεδόν απαραίτητο (το πακέτο linux-headers πιθανότατα θα είναι ήδη εγκατεστημένο, αλλά το δίνουμε και αυτό καλού-κακού).

Φυσικά για να εγκατασταθούν τα παραπάνω πακέτα χρειαζόμαστε μια ενεργή σύνδεση στο Internet. Μέσω Ethernet μπορούμε να επιτύχουμε κάτι τέτοιο.

Στην συνέχεια:

Αφού τελειώσουμε με την εγκατάσταση των παραπάνω κατεβάζουμε τον patchαρισμενο οδηγό με την παρακάτω εντολή (είναι από το προσωπικό μου dropbox)

wget http://dl.dropboxusercontent.com/s/3mv6u9h2f077jv7/Ralink148f7601.tar.gz

Αποσυμπιέζοντας το αρχείο με την εντολή

tar xvzf Ralink148f7601.tar.gz

θα πρέπει να δημιουργηθεί ένας φάκελος με όνομα Ralink148f7601

συνδεόμαστε στον φάκελο και αρχίζουμε να χτίζουμε το module με την εντολή make

cd Ralink148f7601
make

Αφού τελειώσει η διαδικασία χωρίς errors, συνεχίζουμε με την εγκατάσταση του module

sudo make install

και έτσι έχουμε πλέον διαθέσιμο το απαιτούμενο module για να αναγνωριστεί και να λειτουργήσει η ασύρματη κάρτα μας. Θα πρέπει είτε να κάνουμε μια επανεκκίνηση, είτε να επικαλεστούμε το module με την παρακάτω εντολή

sudo modprobe mt7601Usta

μπορεί να χρειαστεί να περιμένουμε μερικά δευτερόλεπτα πριν η ασύρματη κάρτα μας «πάρει μπρος» και αρχίσει να ανιχνεύει δίκτυα.

Ενναλακτικά:

Αν το παραπάνω δεν δουλέψει, άλλος τρόπος να δοκιμάσουμε, αφού απεγκαταστήσουμε πρώτα το συγκεκριμένο module (υπάρχουν οδηγίες παρακάτω για το πως) είναι μέσω ενός άλλου module και αυτό με ενσωματωμένο patch που φιλοξενείται στο Git. Η παρακάτω διαδικασία βρίσκεται στα σχόλια και την κάνω αντιγραφή-επικόλληση όπως είναι:

sudo apt-get install git
git clone https://github.com/porjo/mt7601.git
cd mt7601/src
make
sudo make install
sudo mkdir -p /etc/Wireless/RT2870STA/
sudo cp RT2870STA.dat /etc/Wireless/RT2870STA/
sudo modprobe mt7601Usta

Σημαντικές Σημειώσεις:

  • Θα επισημάνω εδώ ότι η παραπάνω διαδικασία έχει δοκιμαστεί και λειτουργεί μέχρι και την εγκατάσταση του οδηγού(dirver/module), δεν έχω προσωπικά την συγκεκριμένη ασύρματη κάρτα, έως και τον πυρήνα 3.16 χωρίς προβλήματα. Επειδή ο πυρήνας αλλάζει συνεχώς  προσθέτοντας ή αφαιρώντας κώδικα, ίσως ο οδηγός(driver) να χρειαστεί περαιτέρω patching στο μέλλον για να λειτουργήσει σωστά. Κάποιοι έχουν αναφέρει kernel panics μετά την φόρτωση του οδηγού, ενώ άλλοι ότι δεν λειτουργεί καν.
  • Η διαδικασία απεγκατάστασης σε περίπτωση kernel panic είναι να μπορέσουμε να κάνουμε εκκίνηση από κάποιον άλλο πυρήνα (kernel) που δεν περιέχει το συγκεκριμένο module. Γι’ αυτό φροντίστε να έχετε παραπάνω από έναν πυρήνες διαθέσιμους. Σε Ubuntu αυτό γίνεται από το μενού του grub «Advanced options for Ubuntu» και από εκεί μπορούμε να επιλέξουμε τον προγενέστερο πυρήνα ο οποίος δεν περιέχει το module που προκάλεσε το πρόβλημα. Αφού εισέλθουμε σε γραφικό περιβάλλον ανοίγουμε ένα τερματικό και συνδεόμαστε στον φάκελο Ralink148f7601 προσπαθώντας να απεγκαταστήσουμε το module με τις παρακάτω εντολές
cd Ralink148f7601
sudo make uninstall

Αν δεν τα καταφέρουμε, μια άλλη λύση είναι να απεκγαταστήσουμε τον πυρήνα (που περιέχει το module που εμείς χτίσαμε) και να τον εγκαταστήσουμε εκ νέου από τα επίσημα αποθετήρια.

Παράδειγμα για τον πυρήνα του Ubuntu: linux-image-3.13.0-24-generic.

sudo apt-get remove linux-image-3.13.0-24-generic linux-headers-3.13.0-24-generic
sudo apt-get install linux-image-3.13.0-24-generic linux-headers-3.13.0-24-generic

Έτσι θα γίνει μια επανεγκατάσταση του πυρήνα από τα επίσημα αποθετήρια χωρίς αυτός να περιέχει το module που μας προκάλεσε το πρόβλημα.

Αν ούτε το παραπάνω δουλέψει, τότε μπορούμε να δοκιμάσουμε να διαγράψουμε το module χειροκίνητα. Θα βρίσκεται στην διαδρομή /lib/modules/έκδοση-πυρήνα/kernel/drivers/net/wireless/ , οπότε μια εντολή του στύλ

sudo rm /lib/modules/έκδοση-πυρήνα/kernel/drivers/net/wireless/mt7601Usta.ko

θα μας απαλλάξει από το προβληματικό module.

  • Τέλος, αν λειτουργήσει για εσάς η παραπάνω διαδικασία θα χρειαστεί στο μέλλον να την επαναλάβετε. Γι’ αυτό το λόγο μην διαγράψετε τον φάκελο Ralink148f7601. Έπειτα από αναβάθμιση του τρέχοντος πυρήνα (για τον οποίο έχει χτιστεί και ενσωματωθεί το module),  ο νέος πλέον πυρήνας δεν θα το εμπεριέχει. Έχοντας διαθέσιμο τον φάκελο το μόνο που θα έχετε να κάνετε είναι να συνδεθείτε σε αυτόν και να εκτελέσετε πάλι τις εντολές make και sudo make install όπως περιγράφονται παραπάνω.

Αυτά, και περιμένουμε μια πιο μόνιμη λύση για το συγκεκριμένο WiFi chip της Ralink, με έναν οδηγό ο οποίος θα μπορεί να συμπεριληφθεί στους additional drivers (ή όποια άλλη εφαρμογή πρόσθετων/κλειστών οδηγών(drivers) διαθέτει η εκάστοτε διανομή).

7 σκέψεις σχετικά με το “Εγκατάσταση οδηγού ασύρματης κάρτας Ralink (148f:7601)

  1. Ψάχνω τρόπο να εγκαταστήσω το συγκεκριμένο module και σε arm linux καθώς και android. Δυστυχώς εδώ οι οδηγοί είναι ακόμη λιγότεροι και τα patch σχεδόν ανύπαρκτα…

  2. Και σε μένα δεν δούλεψε ο οδηγός (η εγχείρηση πέτυχε, ο ασθενής πέθανε…). Θα χρησιμοποιήσω τον οδηγό του frapedas από πάνω να δούμε τι γίνεται… Πολύ προβληματική κάρτα πάντως…και συμφωνώ μαζί σου, αδιανόητο για το έτος 2015 να καταφεύγουμε σε τέτοιες λύσεις…

      1. Ωραία! Φαίνεται το patch που έχει το αποθετήριο στο Git να είναι καλύτερο. Το πρόσθεσα ως εναλλακτική στο κύριο ποστ και έκανα και ένα fork του αποθετηρίου να είμαστε σίγουροι :)

  3. Με πολύ ψάξιμο

    sudo apt-get install git
    git clone https://github.com/porjo/mt7601.git
    cd mt7601/src
    make
    sudo make install
    sudo mkdir -p /etc/Wireless/RT2870STA/
    sudo cp RT2870STA.dat /etc/Wireless/RT2870STA/
    sudo modprobe mt7601Usta

    αυτος δουλευει κανονικά με τους τελευταίους πυρήνες χωρις κερνελ πάνικ, ή αλλα προβληματα! περισσότερα https://github.com/porjo/mt7601

    1. Ωραίος! Δεν έχω (όπως αναφέρω και στο ποστ) την συγκεκριμένη κάρτα για να δοκιμάσω, αλλά η προσθήκη σου ελπίζω να βοηθήσει κάποιον/α που έχει πρόβλημα. Παίζει και να είναι ο ίδιος οδηγός βέβαια, αλλά δεν έχω χρόνο να συγκρίνω τον πηγαίο κώδικα να δω τι γίνεται.

Συμβάλετε κι εσείς με ένα σχόλιο

Ο ιστότοπος χρησιμοποιεί το Akismet για την εξάλειψη των ανεπιθύμητων σχολίων. Μάθετε πως επεξεργάζονται τα δεδομένα των σχολίων σας.