Netgear MA311 & HostAP driver



Η κάρτα:
Η NetGear MA311 είναι μία wifi 802.11b κάρτα PCI με το Prism2.5 chipset της Intersil. Αποτελείται από μία miniPCI τύπου 3 η οποία είναι βασισμένη στο σχέδιο αναφοράς ISL37400M http://www.intersil.com/data/fn/fn8031.pdf και από έναν ενσωματωμένο miniPCI-to-PCI adapter (κάτι σαν αυτό -> http://www.getcatalyst.com/board_pic/minipci3.jpg).

Παρόλο που η συσκευασία δείχνει ότι απαιτεί PCI v2.2 compliant μητρική, έχει αποδειχτεί ότι δουλεύει ακόμη και σε μητρικές χωρίς αυτή την ιδιότητα. Επίσης έχει δοκιμαστεί και σε μητρικές χωρίς την τάση των 3.3V στην PCI που παρόλο που είναι απαραίτητη στο πρότυπο PCI2.2 είναι προαιρετική στο 2.1.

Μοναδικό μειονέκτημα είναι η έλειψη PCI bus mastering ή τουλάχιστον η έλειψη υποστηριξης της λειτουργίας αυτής από την Intersil. Παρόλαυτα, η χρήση του επεξεργαστή δεν είναι ιδιαίτερα μεγάλη. Συγκεκριμένα με δοκιμή σε επεξεργαστή Pentium 166MMX με 2 κάρτες με hostap σε μέγιστο throughput η χρήση της CPU δεν ξεπέρασε το 18%.

Στην κάρτα υπάρχουν 2 firmware - το primary F/W που είναι υπεύθυνο για την λειτουργία σε master mode (AP) και το station F/W που είναι υπεύθυνο για την λειτουργία σε άλλα modes. Τα υπάρχοντα firmware στην flash μνήμη της κάρτας είναι:
Primary: id=0x15 v1.0.7
Station: id=0x1f v1.3.6

HostAP:
Η κάρτα υποστηρίζεται απόλυτα σε linux από το hostap αφού είναι βασισμένη σε Prism chip. Παρόλαυτά η υποστήριξη για χειροκίνητη ρύθμιση ισχύος έχει αφαιρεθεί από τις τελευταίες εκδόσεις του hostap.

Το παρακάτω patch επαναφέρει την χειροκίνητη ρύθμιση ισχύος και διορθώνει το πρόβλημα όπου χανόντουσαν οι ρυθμίσεις ισχύος μετά από disconnect ή αλλαγή mode. Επίσης αντιστοιχεί πραγματικές τιμές σε dbm που δίνοντε από τον χρήστη με τιμές του καταχωρητή CR31 για ρύθμιση ισχύος (hostap_diag -a <interface> | grep CR31).

Οι τιμές βρέθηκαν πειραματικά μετά από δοκιμές σε 2 διαφορετικές netgear και με λήψη από μία ίδια netgear και ένα cisco AP. Η διαδικασία ήταν η εξής: Για κάθε τιμή του καταχωρητη CR31 έγιναν 3 μετρήσεις με την netgear και μια μέτρηση με το cisco και καταγράφηκε ο μέσος όρος τους. Το πακέτο των 4ων μετρήσεων επαναληφθηκε άλλη μία φορά με διαφορετικές κεραίες και σε διαφορετική απόσταση κάνοντας ένα σύνολο 8 μετρήσεων για κάθε τιμή του CR31. Μετά βρέθηκαν οι σχετικές τιμές με μέγιστο τα 18dbm που είναι η μέγιστη ισχύς που δίνει η κάρτα (hostap_diag -a <interface> | grep FCBE). Οι μετρήσεις βρίσκονται στο παρακάτω έγγραφο excel. Ο καταχωρητής CR58 (hostap_diag -a <interface> | grep CR58) μετράει την πραγματική ισχύ που εκπέμπει η κάρτα ανά πάσα στιγμή ανεξάρτητα με την ρυθμισή της. Είναι κάτι σαν βαττόμετρο. Έχει όμως το μειονέκτημα να τερματίζει από τα 8 dbm και κάτω. Ίσως υπάρχει τρόπος να επεκταθεί το εύρoς του μέσω μετατροπής στο F/W.

Το patch εφαρμόζεται με την εντολή patch -p1 < <path>/hostap-driver-0.1.3-powerfix-0.3.patch ενώ βρισκόμαστε στο directory που κάναμε untar το hostap. Το patch μπορεί να εφαρμοστεί μόνο στην έκδοση 0.1.3. Για να ενεργοποιηθεί η μετάφραση των τιμών από τον καταχωρητή σε dbm για τις κάρτες Netgear πρέπει πριν γίνει compile ο hostap να φύγουν τα σχόλια από το /* #define ISL37400M_DBM_CONVERSION */ στο αρχείο hostap_config.h (directory /drivers/modules). Αν η κάρτα δεν είναι Netgear τότε βγάλτε τα σχόλια από εδώ -> /* #define BYTE_DBM_CONVERSION */ για να έχετε μία ευκολότερη ρύθμιση με 0 την ελάχιστη και 255 τη μέγιστη ισχύ. Το hostap και το patch δείχνει να δουλεύει με το υπάρχον F/W της κάρτας (1.0.7 και 1.3.6). Μπορώ να εγγυηθώ όμως καλή λειτουργία μόνο με το 1.7.4 και το 1.1.4 φορτωμένο στην volatile μνήμη της κάρτας (RAM) μιάς και αυτό έχει δοκιμαστεί από μένα για αρκετό καιρό χωρίς κανένα πρόβλημα.

Για να φορτώσετε τα F/W στην RAM πρέπει να βγάλετε τα σχόλια από το /* #define PRISM2_DOWNLOAD_SUPPORT */. Βεβαιωθείτε οτι έχετε την σωστή έκδοση υλικού με την εντολή hostap_diag <interface>. Πρέπει να δίνει NICID: id=0x8013 v1.0.0 Έπειτα πρέπει να δώσετε την εντολή prism2_srec -g <interface> <path>/ak010104.hex για το primary firmware και ύστερα prism2_srec -r <interface> <path>/rf010704.hex για το station. Τα F/W δίνονται παρακάτω.. ΠΡΟΣΟΧΗ: Τα παρακάτω F/W προορίζονται μόνο για φόρτωμα στην RAM! Μην προσπαθήσετε να flashαρετε την κάρτα με αυτά γιατί θα την καταστρέψετε... Το φόρτωμα στην RAM παρέχει την ασφάλεια ότι δεν πρόκειται να καταστραφεί η κάρτα κατά την διάρκεια ενός flashαρίσματος. Με ένα reset (reboot) επανέρχεται στο αρχικό της F/W...

Αρχεια:

το κειμενο ειναι απο τον Acinonyx του AWMN