Hits : 6227

FAQ :: 3G on Linux


Ας πάρουμε τα πράγματα από την αρχή.

Contents


Τι είναι το 3G;


Αποτελεί ακρωνύμιο του: Third Generation[link1] ή στα ελληνικά Τρίτη Γενιά. Δηλώνει έναν διεθνή τρόπο επικοινωνίας με το διαδίκτυο μέσω κινητής τηλεφωνίας (δίκτυο gsm). Δεν χρειάζεται να γνωρίζουμε κάτι παραπάνω. Το μόνο που μας ενδιαφέρει να καταλάβουμε είναι, ότι για να έχουμε internet πρέπει να υπάρχει σήμα της εκάστοτε εταιρείας (Mobile Service Provider).

Τρία είναι τα δίκτυα κινητής τηλεφωνίας στην Ελλάδα Cosmote (20201), Vodafone (20205), Wind (20210). Μέσω αυτών των δικτύων παρέχουν τις υπηρεσίες τους και άλλες εταιρίες κινητής τηλεφωνίας (ως MVNOs, Mobile Virtual Network Operators) όπως η Q (απορροφημένη πλέον πλήρως από τη Wind), Momad και Frog.

top

Τι χρειαζόμαστε για να συνδεθούμε;


Χρειαζόμαστε μία κάρτα sim που να έχει ενεργοποιημένη την υπηρεσία 3g. Ο ευκολότερος τρόπος σύνδεσης με τον υπολογιστή μας (μα όχι κι ο μοναδικός) είναι μέσω μίας usb συσκευής. Το usb 3g stick λοιπόν, είναι στην πραγματικότητα ένα GSM modem το οποίο μας συνδέει στο 3g gsm δίκτυο του εκάστοτε provider, κι από εκεί στο internet.

top

Πως λειτουργεί το usb 3g stick;


Το μεγαλύτερο πρόβλημα των συσκευών είναι ότι ΔΕΝ αναγνωρίζονται αυτόματα (hardware) από το λειτουργικό σύστημα. Η επίλυση αυτού του προβλήματος στα windows, γίνεται μέσω των drivers. Οι drivers είναι προγράμματα που προσθέτουν λειτουργικότητα στο σύστημα ώστε να αναγνωρίζει το λειτουργικό την εκάστοτε νέα συσκευή. Στο linux δεν χρειάζεται να γίνει ακριβώς αυτό. Ο πυρήνας θα την αναγνωρίσει ως συσκευή, αλλά δεν θα γνωρίζει τι συσκευή είναι ή τι πρέπει να κάνει μαζί της ή ακόμα και πως να επικοινωνήσει μαζί της.

Τα usb 3g strick προσομοιώνουν ένα block device στον υπολογιστή μας. Με λίγα λόγια το λειτουργικό μας, αναγνωρίζει την συσκευή ως cdrom. Αυτό γίνεται τόσο στα windows όσο και στο linux. Και μέσα στο cd υπάρχει ο windows driver για να γίνει εγκατάσταση και πλέον η συσκευή να αναγνωριστεί ως 3g και να δουλέψει ως GSM modem.

Αυτή η τεχνολογία ονομάζεται ZeroCD.

top

Πως λειτουργεί στο Linux;


Καθημερινά δημιουργούνται νέες συσκευές. Για να μην τροποποιούν τον πυρήνα για κάθε νέα συσκευή, οι kernel developers έγραψαν ένα ξεχωριστό υποσύστημα που έχει αναλάβει την αυτόματη αναγνώριση και παραμετροποίησης του συστήματος. Το υποσύστημα ονομάζεται udev[link2] και χρησιμοποιεί κανόνες (rules) για την αυτόματη αναγνώριση μίας νέας συσκευής.

Στο σύστημά μας εκτελείτε ως δαίμονας, κι όποτε τοποθετούμε μία νέα συσκευή, θα προσπαθήσει αυτόματα να υλοποιήσει τους εκάστοτε κανόνες που έχει για να κάνει να δουλέψει σωστά η συσκευή που μόλις εγκαταστήσαμε στην διανομή μας. Η διαδικασία αυτή αναφέρεται κι ως Hotplugging, δλδ hot plug in, που δηλώνει ακριβώς αυτό: η αναγνώριση και λειτουργία μήπως συσκευής κατά την άμεση τοποθέτησή της στον υπολογιστή μας.

Με λίγα λόγια, οι χρήστες δεν χρειάζεται να κάνουν απολύτως τίποτα. Απλά τοποθετούν την συσκευή τους στο σύστημά τους κι όλα τα υπόλοιπα, τα αναλαμβάνει ο πυρήνας με την χρήση του udev.

top

Που βρίσκονται οι udev κανόνες;


Στις εξής διαδρομές: /lib/udev/ & /etc/udev/

top

Εάν δεν την αναγνωρίσει αυτόματα;


Είναι όμως πιθανό, το udev να μην είναι σε θέση να αναγνωρίσει αυτόματα ή να μην έχει τους κατάλληλους κανόνες για την συσκευή που μόλις συνδέσαμε στον υπολογιστή μας. Εάν λοιπόν το 3G GSM Usb Modem μας, δεν αναγνωριστεί αυτόματα θα πρέπει να το κάνουμε εμείς με το χέρι.

Για να μην χρειαστεί να μάθουμε της χρήση των κανόνων του udev (είναι περίπλοκοι), θα πρέπει να κάνουμε χρήση του προγράμματος usb mode switch[link3]. Το usb_modeswitch αναλαμβάνει να δημιουργήσει αυτούς του νέους κανόνες στο udev.

Εκτός από το usb_modeswitch, χρειάζεται να γνωρίζουμε δύο πράγματα από την συσκευή μας.

Δύο στοιχεία που χαρακτηρίζουν την συσκευή μας στο σύστημά μας.

top

Πως εγκαθιστώ το usb_modeswitch;


Το πιθανότερο είναι να υπάρχει ήδη στο αποθετήριο της διανομής σας. Οποιαδήποτε έκδοση μετά την >= 1.1.2 μας κάνει.
Εάν δεν υπάρχει στα αποθετήρια τότε κατεβάστε το πρόγραμμα από εδώ: http://www.draisberghof.de/usb_modeswitch/.
Εάν αποφασίσετε να κάνετε την εγκατάσταση από τον πηγαίο κώδικα, ρίξτε πρώτα μια ματιά

Αναφέρονται αναλυτικές οδηγίες στο παραπάνω site.

Εάν έχετε:
sudo pacman -S usb_modeswitch

sudo apt-get install usb_modeswitch

sudo yum install usb_modeswitch

Προσοχή Πιθανά να είναι γραμμένο κι ως εξής: usb-modeswitch ή και διαφορετικά.

top

Εγκατάσταση από πηγαίο κώδικα


Για την εγκατάσταση από πηγαίο κώδικα, χρειάζεται να έχετε εγκαταστήσει τον 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 ήταν οι τρέχουσες κατά τη διάρκεια συγγραφής του παρόντος, τροποποιήστε ανάλογα)

top

Πως εντοπίζω τα 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

top

Πως δημιουργώ τους νέους udev κανόνες μέσω του usb_modeswitch;


Με την χρήση της παρακάτω εντολής, θα πρέπει όμως να είστε πολύ προσεκτικοί.
Θα πρέπει να ορίσετε τα αντίστοιχα Vendor & Product ID:

sudo usb_modeswitch -W -v 0x1bbb -p 0xf000 -V 0x1bbb -P 0xf000


Αντικαταστήστε τα 0x1bbb & 0xf000 με τα αντίστοιχα δικά σας.

top

Αυτό θα το κάνω κάθε φορά;


Όχι, χρειάζεται να γίνει μόνο μία φορά.
Εάν έχουμε έκδοση 1.1.2 ή μεγαλύτερη πρέπει να έχει δημιουργηθεί η εξής συσκευή:

/dev/gsmmodem

Εάν δεν έχει δημιουργηθεί, τότε αφαιρέστε την usb συσκευή για λίγα δευτερόλεπτα και ξανασυνδέστε την.

Για να δείτε εάν υπάρχει η παραπάνω συσκευή, γράψτε την εξής εντολή:

ls -l /dev/gsmmodem


top

Εάν το έχω συνδεδεμένο κατά την εκκίνηση;


Για να μπορεί το udev να αναγνωρίσει την usb 3g συσκευή μας κατά την εκκίνηση του συστήματός μας, θα πρέπει να έχουμε εγκαταστήσει τους κανόνες του Usb Mode Switch μεγαλύτερης ή ίσης της έκδοσης: 20100817.

top

Πως συνδέομαι στο internet;


Από την στιγμή που είναι ένα gsm modem, η απάντηση είναι εξαιρετικά απλή: Κάνουμε μία dial σύνδεση !
Η σύνδεση με τον πάροχο γίνεται μέσω ενός πρωτοκόλλου που λέγεται P-t-P (Point to Point).
Τέτοια λογισμικά ονομάζονται dialers.

top

Πως γίνεται η σύνδεση;


Υπάρχουν αρκετοί τρόποι!

Γραφικό περιβάλλον:
Μέσω του NetworkManager[link4] (προτεινόμενη έκδοση 0.8+).
Ένα πολύ καλό post με συγκεκριμένες ρυθμίσεις, είναι το εξής: http://simos.info/blog/archives/1078

Μπορούμε επίσης να χρησιμοποιήσουμε και τα εξής αξιόλογα προγράμματα:
kppp[link5]
gnome-ppp[link6]

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

Δύο προγράμματα μπορούν να κάνουν αυτή την δουλειά:

a. ppp[link7]
b. wvdial[link8]

Ρυθμίζοντας το pppd


Το pppd όπως έχουμε προαναφέρει είναι ένας ppp dialer.
Αποτελεί μία από τις καλύτερες προτάσεις/λύσεις γιατί

Πρέπει να δημιουργήσουμε δύο αρχεία:


Με το εξής περιεχόμενο:

/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


top

Τι ρυθμίσεις χρειάζονται για το wvdial:


Ρίξτε μια ματιά εδώ: wvdial & umtsmon[link9]

top

Υπάρχει εναλλακτικός τρόπος;


Ναι, υπάρχει ένα πρόγραμμα (και μάλιστα από Έλληνα) που τα κάνει όλα: sakis3g[link10]
Αναλαμβάνει να κάνει τα πάντα για εσάς!

top



Links
[link1] http://en.wikipedia.org/wiki/3g

[link2] http://www.kernel.org/pub/linux/utils/kernel/hotplug/udev.html

[link3] http://www.draisberghof.de/usb_modeswitch

[link4] http://projects.gnome.org/NetworkManager

[link5] http://en.wikipedia.org/wiki/Kppp

[link6] http://en.wikipedia.org/wiki/Gnome-ppp

[link7] http://ppp.samba.org

[link8] http://alumnit.ca/wiki/index.php?page=WvDial

[link9] http://www.void.gr/kargig/blog/2009/07/08/vodafone-cosmote-3g-on-linux-wvdial-and-umtsmon/

[link10] http://www.sakis3g.org/