FAQ :: 3G on Linux
Ας πάρουμε τα πράγματα από την αρχή.
Contents
- Τι είναι το 3G;
- Τι χρειαζόμαστε για να συνδεθούμε;
- Πως λειτουργεί το usb 3g stick;
- Πως λειτουργεί στο Linux;
- Που βρίσκονται οι udev κανόνες;
- Εάν δεν την αναγνωρίσει αυτόματα;
- Πως εγκαθιστώ το usb_modeswitch;
- Πως εντοπίζω τα Vendor & Product ID της συσκευής μου;
- Πως δημιουργώ τους νέους udev κανόνες μέσω του usb_modeswitch;
- Αυτό θα το κάνω κάθε φορά;
- Εάν το έχω συνδεδεμένο κατά την εκκίνηση;
- Πως συνδέομαι στο internet;
- Πως γίνεται η σύνδεση;
- Υπάρχει εναλλακτικός τρόπος;
Τι είναι το 3G;
Αποτελεί ακρωνύμιο του: Third Generation ή στα ελληνικά Τρίτη Γενιά. Δηλώνει έναν διεθνή τρόπο επικοινωνίας με το διαδίκτυο μέσω κινητής τηλεφωνίας (δίκτυο gsm). Δεν χρειάζεται να γνωρίζουμε κάτι παραπάνω. Το μόνο που μας ενδιαφέρει να καταλάβουμε είναι, ότι για να έχουμε internet πρέπει να υπάρχει σήμα της εκάστοτε εταιρείας (Mobile Service Provider).
Τρία είναι τα δίκτυα κινητής τηλεφωνίας στην Ελλάδα Cosmote (20201), Vodafone (20205), Wind (20210). Μέσω αυτών των δικτύων παρέχουν τις υπηρεσίες τους και άλλες εταιρίες κινητής τηλεφωνίας (ως MVNOs, Mobile Virtual Network Operators) όπως η Q (απορροφημένη πλέον πλήρως από τη Wind), Momad και Frog.
Τι χρειαζόμαστε για να συνδεθούμε;
Χρειαζόμαστε μία κάρτα sim που να έχει ενεργοποιημένη την υπηρεσία 3g. Ο ευκολότερος τρόπος σύνδεσης με τον υπολογιστή μας (μα όχι κι ο μοναδικός) είναι μέσω μίας usb συσκευής. Το usb 3g stick λοιπόν, είναι στην πραγματικότητα ένα GSM modem το οποίο μας συνδέει στο 3g gsm δίκτυο του εκάστοτε provider, κι από εκεί στο internet.
Πως λειτουργεί το usb 3g stick;
Το μεγαλύτερο πρόβλημα των συσκευών είναι ότι ΔΕΝ αναγνωρίζονται αυτόματα (hardware) από το λειτουργικό σύστημα. Η επίλυση αυτού του προβλήματος στα windows, γίνεται μέσω των drivers. Οι drivers είναι προγράμματα που προσθέτουν λειτουργικότητα στο σύστημα ώστε να αναγνωρίζει το λειτουργικό την εκάστοτε νέα συσκευή. Στο linux δεν χρειάζεται να γίνει ακριβώς αυτό. Ο πυρήνας θα την αναγνωρίσει ως συσκευή, αλλά δεν θα γνωρίζει τι συσκευή είναι ή τι πρέπει να κάνει μαζί της ή ακόμα και πως να επικοινωνήσει μαζί της.
Τα usb 3g strick προσομοιώνουν ένα block device στον υπολογιστή μας. Με λίγα λόγια το λειτουργικό μας, αναγνωρίζει την συσκευή ως cdrom. Αυτό γίνεται τόσο στα windows όσο και στο linux. Και μέσα στο cd υπάρχει ο windows driver για να γίνει εγκατάσταση και πλέον η συσκευή να αναγνωριστεί ως 3g και να δουλέψει ως GSM modem.
Αυτή η τεχνολογία ονομάζεται ZeroCD.
Πως λειτουργεί στο Linux;
Καθημερινά δημιουργούνται νέες συσκευές. Για να μην τροποποιούν τον πυρήνα για κάθε νέα συσκευή, οι kernel developers έγραψαν ένα ξεχωριστό υποσύστημα που έχει αναλάβει την αυτόματη αναγνώριση και παραμετροποίησης του συστήματος. Το υποσύστημα ονομάζεται udev και χρησιμοποιεί κανόνες (rules) για την αυτόματη αναγνώριση μίας νέας συσκευής.
Στο σύστημά μας εκτελείτε ως δαίμονας, κι όποτε τοποθετούμε μία νέα συσκευή, θα προσπαθήσει αυτόματα να υλοποιήσει τους εκάστοτε κανόνες που έχει για να κάνει να δουλέψει σωστά η συσκευή που μόλις εγκαταστήσαμε στην διανομή μας. Η διαδικασία αυτή αναφέρεται κι ως Hotplugging, δλδ hot plug in, που δηλώνει ακριβώς αυτό: η αναγνώριση και λειτουργία μήπως συσκευής κατά την άμεση τοποθέτησή της στον υπολογιστή μας.
Με λίγα λόγια, οι χρήστες δεν χρειάζεται να κάνουν απολύτως τίποτα. Απλά τοποθετούν την συσκευή τους στο σύστημά τους κι όλα τα υπόλοιπα, τα αναλαμβάνει ο πυρήνας με την χρήση του udev.
Που βρίσκονται οι udev κανόνες;
Στις εξής διαδρομές: /lib/udev/ & /etc/udev/
Εάν δεν την αναγνωρίσει αυτόματα;
Είναι όμως πιθανό, το udev να μην είναι σε θέση να αναγνωρίσει αυτόματα ή να μην έχει τους κατάλληλους κανόνες για την συσκευή που μόλις συνδέσαμε στον υπολογιστή μας. Εάν λοιπόν το 3G GSM Usb Modem μας, δεν αναγνωριστεί αυτόματα θα πρέπει να το κάνουμε εμείς με το χέρι.
Για να μην χρειαστεί να μάθουμε της χρήση των κανόνων του udev (είναι περίπλοκοι), θα πρέπει να κάνουμε χρήση του προγράμματος usb mode switch. Το usb_modeswitch αναλαμβάνει να δημιουργήσει αυτούς του νέους κανόνες στο udev.
Εκτός από το usb_modeswitch, χρειάζεται να γνωρίζουμε δύο πράγματα από την συσκευή μας.
- Το Vendor ID &
- To Product ID
Δύο στοιχεία που χαρακτηρίζουν την συσκευή μας στο σύστημά μας.
Πως εγκαθιστώ το usb_modeswitch;
Το πιθανότερο είναι να υπάρχει ήδη στο αποθετήριο της διανομής σας. Οποιαδήποτε έκδοση μετά την >= 1.1.2 μας κάνει.
Εάν δεν υπάρχει στα αποθετήρια τότε κατεβάστε το πρόγραμμα από εδώ: http://www.draisberghof.de/usb_modeswitch/.
Εάν αποφασίσετε να κάνετε την εγκατάσταση από τον πηγαίο κώδικα, ρίξτε πρώτα μια ματιά
Αναφέρονται αναλυτικές οδηγίες στο παραπάνω site.
Εάν έχετε:
- archlinux
sudo pacman -S usb_modeswitch
- ubuntu/debian
sudo apt-get install usb_modeswitch
- fedora/centos/rhel
sudo yum install usb_modeswitch
Προσοχή Πιθανά να είναι γραμμένο κι ως εξής: usb-modeswitch ή και διαφορετικά.
Εγκατάσταση από πηγαίο κώδικα
Για την εγκατάσταση από πηγαίο κώδικα, χρειάζεται να έχετε εγκαταστήσει τον gcc compiler, και τους development headers των libc6 και libusb (ή libusb-compat εάν η διανομή σας χρησιμοποιεί την libusb 1.0 ή νεότερη):
$ wget -c http://www.draisberghof.de/usb_modeswitch/usb-modeswitch-1.1.4.tar.bz2 http://www.draisberghof.de/usb_modeswitch/usb-modeswitch-data-20100817.tar.bz2 $ tar xvf usb-modeswitch-1.1.4.tar.bz2 $ tar xvf usb-modeswitch-data-20100817.tar.bz2 $ cd usb-modeswitch-1.1.4 $ make $ sudo make install
$ cd ../usb-modeswitch-data-20100817 $ make $ sudo make install
(Οι εκδόσεις 1.1.4 και 20100817 ήταν οι τρέχουσες κατά τη διάρκεια συγγραφής του παρόντος, τροποποιήστε ανάλογα)
Πως εντοπίζω τα Vendor & Product ID της συσκευής μου;
Μέσω της εντολής: lsusb
Το αποτέλεσμα στην δική μου περίπτωση είναι το εξής:
Bus 001 Device 004: ID 1bbb:f000 T & A Mobile Phones
Μας ενδιαφέρει το ID, δλδ το 1bbb:f000 στην παραπάνω περίπτωση.
Vendor ID: 1bbb ή καλύτερα: 0x1bbb
Product ID: f000 ή καλύτερα: 0xf000
Πως δημιουργώ τους νέους udev κανόνες μέσω του usb_modeswitch;
Με την χρήση της παρακάτω εντολής, θα πρέπει όμως να είστε πολύ προσεκτικοί.
Θα πρέπει να ορίσετε τα αντίστοιχα Vendor & Product ID:
sudo usb_modeswitch -W -v 0x1bbb -p 0xf000 -V 0x1bbb -P 0xf000
Αντικαταστήστε τα 0x1bbb & 0xf000 με τα αντίστοιχα δικά σας.
Αυτό θα το κάνω κάθε φορά;
Όχι, χρειάζεται να γίνει μόνο μία φορά.
Εάν έχουμε έκδοση 1.1.2 ή μεγαλύτερη πρέπει να έχει δημιουργηθεί η εξής συσκευή:
/dev/gsmmodem
Εάν δεν έχει δημιουργηθεί, τότε αφαιρέστε την usb συσκευή για λίγα δευτερόλεπτα και ξανασυνδέστε την.
Για να δείτε εάν υπάρχει η παραπάνω συσκευή, γράψτε την εξής εντολή:
ls -l /dev/gsmmodem
Εάν το έχω συνδεδεμένο κατά την εκκίνηση;
Για να μπορεί το udev να αναγνωρίσει την usb 3g συσκευή μας κατά την εκκίνηση του συστήματός μας, θα πρέπει να έχουμε εγκαταστήσει τους κανόνες του Usb Mode Switch μεγαλύτερης ή ίσης της έκδοσης: 20100817.
Πως συνδέομαι στο internet;
Από την στιγμή που είναι ένα gsm modem, η απάντηση είναι εξαιρετικά απλή: Κάνουμε μία dial σύνδεση !
Η σύνδεση με τον πάροχο γίνεται μέσω ενός πρωτοκόλλου που λέγεται P-t-P (Point to Point).
Τέτοια λογισμικά ονομάζονται dialers.
Πως γίνεται η σύνδεση;
Υπάρχουν αρκετοί τρόποι!
Γραφικό περιβάλλον:
Μέσω του NetworkManager (προτεινόμενη έκδοση 0.8+).
Ένα πολύ καλό post με συγκεκριμένες ρυθμίσεις, είναι το εξής: http://simos.info/blog/archives/1078
Μπορούμε επίσης να χρησιμοποιήσουμε και τα εξής αξιόλογα προγράμματα:
kppp
gnome-ppp
Εάν φυσικά δεν θέλουμε να χρησιμοποιήσουμε κάποιο γραφικό πρόγραμμα διαχείρισης συνδέσεων ή δικτύου,
μπορούμε πάντα να το τερματικό και την κονσόλα μας.
Δύο προγράμματα μπορούν να κάνουν αυτή την δουλειά:
Ρυθμίζοντας το pppd
Το pppd όπως έχουμε προαναφέρει είναι ένας ppp dialer.
Αποτελεί μία από τις καλύτερες προτάσεις/λύσεις γιατί
Πρέπει να δημιουργήσουμε δύο αρχεία:
- /etc/ppp/peers/cosmote &
- /etc/ppp/cosmote.chat
Με το εξής περιεχόμενο:
/etc/ppp/peers/cosmote
connect "/usr/sbin/chat -v -f /etc/ppp/cosmote.chat" noipdefault defaultroute /dev/gsmmodem 460800 noauth debug novj usepeerdns nodeflate nobsdcomp
/etc/ppp/cosmote.chat
ABORT BUSY ABORT ERROR REPORT CONNECT TIMEOUT 10 '' AT OK AT+CGDCONT=16,"IP","internet" OK ATDT*99#
Για να συνδεθούμε:
sudo pon cosmote
Για να αποσυνδεθούμε:
sudo poff cosmote
Τι ρυθμίσεις χρειάζονται για το wvdial:
Ρίξτε μια ματιά εδώ: wvdial & umtsmon
Υπάρχει εναλλακτικός τρόπος;
Ναι, υπάρχει ένα πρόγραμμα (και μάλιστα από Έλληνα) που τα κάνει όλα: sakis3g
Αναλαμβάνει να κάνει τα πάντα για εσάς!