ΕΕΛ/ΛΑΚ - Λίστες Ταχυδρομείου

Fwd: Διαγωνισμός ανάπτυξης ΕΛ/ΛΑΚ

ΓΙΑ ΕΝΗΜΕΡΩΣΗ ΚΑΙ ΣΧΟΛΙΑΣΜΟ.


---------- Forwarded message ----------
From:  <mickflemm [ at ] gmail [ dot ] com>
Date: 2009/2/9
Subject: Διαγωνισμός ανάπτυξης ΕΛ/ΛΑΚ
To: info [ at ] ellak [ dot ] gr, Nick Kossifidis <mick [ at ] madwifi-project [ dot ] org>,
mickflemm [ at ] gmail [ dot ] com


=====================================================================
Τίτλος: Βελτίωση του οδηγού για ασύρματες κάρτες Atheros που
     εμπεριέχεται στον πυρήνα του Linux (ath5k)
=====================================================================

Περίληψη: Ως μέρος της ανάπτυξης του οδηγού χρειάζεται να γίνουν
παρεμβάσεις τόσο στη διαδικασία επανεκκίνησης του υλικού (hw reset),
όσο και ευρύτερες παρεμβάσεις που αφορούν την διαχείριση του αναλογικού
μέρους της κάρτας (PHY/RF).


Ιστορικό
------------

Ο οδηγός ath5k είναι κυρίως προϊόν reverse engineering (το οποίο
ξεκίνησε από τον Reyk Floeter το 2003 - 2004 και συνεχίστηκε από εμένα
τα τελευταία 3 - 4 χρόνια με μεθόδους mmio tracing, binary analysis
κλπ), κατά συνέπεια μη έχοντας πρόσβαση σε κείμενα τεκμηρίωσης από την
Atheros ήταν πολύ δύσκολο να υλοποιήσουμε κάποιους μηχανισμούς που
αφορούν το αναλογικό τμήμα της κάρτας. Ο λόγος είναι ότι το
συγκεκριμένο κομμάτι είναι ιδιαίτερα πολύπλοκο, καθότι η κάρτα δεν
περιέχει υλικολογισμικό (firmware) και όλες οι διαδικασίες διαχείρισης
του συγκεκριμένου τμήματος (BaseBand/RF) εκτελούνται από τον οδηγό.

Πρόσφατα η Atheros άλλαξε πολιτική όσον αφορά το ελεύθερο λογισμικό και
μας έδωσε κάποιο κώδικα για αναφορά, έτσι έγινε δυνατή η περαιτέρω
κατανόηση των διαφόρων μηχανισμών. Ο κώδικας αυτός όμως παραμένει
αρκετά ασαφής (δεν υπάρχει επαρκής τεκμηρίωση ούτε με τη μορφή
documentation ούτε με τη μορφή σχολίων) και κακογραμμένος, ενώ είναι
γνωστό ότι περιέχει διάφορα bugs και σε καμία περίπτωση δεν πληροί τα
πρότυπα ποιότητας που έχουμε καθορίσει στο Linux. Επιπλέον συνδυάζοντας
τον κώδικα της Atheros με τα κείμενα που έχει καταθέσει ως πατέντες
(και βρίσκονται στο Internet) και υλικό που έχω αποκομίσει απ' το
reverse engineering, είναι πλέον δυνατόν να γράψουμε απ' την αρχή,
σωστά, τον κώδικα του ath5k που αφορά το συγκεκριμένο κομμάτι και να
τον αναπτύξουμε περαιτέρω, ακολουθώντας τόσο τα πρότυπα ποιότητας του
Linux αλλά και το υπάρχον API.

Περισσότερες πληροφορίες για τον οδηγό θα βρείτε εδώ ->
http://www.linuxwireless.org/en/users/Drivers/ath5k
αλλά η τεκμηρίωση βρίσκεται στον κώδικα με τη μορφή σχολίων (τα οποία
και θα μετατραπούν σε kerneldoc)

Ο κώδικας βρίσκεται στον πυρήνα του linux απ' την έκδοση 2.6.25 και
μετά, μπορείτε να τον κατεβάσετε απ' τη διεύθυνση www.kernel.org, ενώ
η ανάπτυξη του γίνεται στο wireless-testing tree που μπορείτε να δείτε
με git στη διεύθυνση
http://git.kernel.org/?p=linux/kernel/git/linville/wireless-testing.git;a=tree;f=drivers/net/wireless/ath5k;hb=HEAD.


Στόχοι
---------

Στόχος μου είναι, στα πλαίσια της συμμετοχής μου στην ανάπτυξη του
οδηγού (είμαι author και maintainer) να κάνω τις απαραίτητες
παρεμβάσεις στον κώδικα και να συνοδέψω τις αλλαγές μου με όσο το
δυνατόν επαρκή τεκμηρίωση, ώστε να μπορέσουν και οι υπόλοιποι
προγραμματιστές που διαβάζουν τον κώδικα να συνεισφέρουν σε αυτόν αλλά
και να τον διορθώσουν αν χρειάζεται. Επίσης καθότι οι συγκεκριμένες
κάρτες χρησιμοποιούνται ευρύτατα σε διάφορες λύσεις ασύρματων router
(όπως πχ. στο Ασύρματο Μητροπολιτικό Δίκτυο Αθηνών ή και σε εμπορικές
λύσεις που παρέχονται από διάφορες εταιρίες, τόσο στην Ελλάδα -π.χ.
www.linkshop.gr- όσο και στο εξωτερικό -κυρίως βασισμένες στη διανομή
OpenWRT με τους προγραμματιστές της οποίας συνεργαζόμαστε στενά), οι
αλλαγές αυτές θα βοηθήσουν στην αντικατάσταση των binary οδηγών με τον
επίσημο οδηγό που υποστηρίζεται από το Linux. Τέλος λόγω του ότι οι
συγκεκριμένες κάρτες δεν έχουν υλικολογισμικό, είναι πλήρως
παραμετροποιήσιμες (σε βαθμό που θεωρούνται από αρκετούς SDR -Software
Defined Radios) και έτσι χρησιμοποιούνται εκτενώς στην έρευνα των
ασύρματων δικτύων, τόσο από ερευνητικές ομάδες του εξωτερικού (βλ.
orbit lab) όσο και από Έλληνες (βλ. ics.forth.gr).


Παραδοτέα
----------------

Κώδικας σε C με σχόλια (στα Αγγλικά) που να τεκμηριώνουν τις διάφορες
λειτουργίες, ο οποίος θα ανέβει στο wireless-testing tree του kernel ή
θα ανέβει στον χώρο που έχω στη διάθεσή μου στο kernel.org
(http://www.kernel.org/pub/linux/kernel/people/mickflemm/)


Χρονοδιάγραμμα
------------------------

20/2 -  Επανεγγραφή του κώδικα για την δυναμική ρύθμιση του AGC
     (Automatic Gain Circuitry) για τα chip RF5111 και RF5112
20/2 -  Εκκαθάριση του κώδικα που αφορά την ρύθμιση του RF
     (RF registers/ RF buffer control)
20/2 -  Eκκαθάριση του κώδικα της διαδικασίας reset της κάρτας και
     επέκτασή του βάσει του κώδικα που έχει δώσει η Atheros
27/2 -  Εκκαθάριση του κώδικα που αφορά το parsing της EEPROM
27/2 -  Αρχική υλοποίηση της ρύθμισης tx power (χωρίς TPC και
     regulatory control)
20/3 -  Ολοκλήρωση του debuging στον παραπάνω κώδικα με χρήση αναλυτή
     φάσματος (για να δούμε αν η spectral mask είναι όπως θα έπρεπε)
20/3 -  Βελτιστοποίηση του κώδικα για την περιοδική μικρορύθμηση του
     BaseBand (calibration)
30/3 -  Υλοποίηση του αλγορίθμου για αυτόματη προσαρμογή των παραμέτρων
     αντιμετώπισης θορύβου (Adaptive Noise Immunity)
18/4 -  Υλοποίηση TPC και regulatory control
18/4 -  Βελτίωση του κώδικα διαχείρισης των κεραιών (antenna diversity,
     antenna profiles κλπ)

Το χρονοδιάγραμμα είναι σχετικό καθότι στον kernel ακολουθούνται
συγκεκριμένες διαδικασίες, συγκεκριμένα για να μπει ο κώδικας στο git
repository πρέπει να γίνει review από τους υπόλοιπους προγραμματιστές
και να δοκιμαστεί σε όλο το εύρος των chip που υποστηρίζει ο οδηγός,
ενώ τον τελευταίο λόγο τον έχει ο Kernel maintainer του
wireless-testing tree (ο οποίος πχ. ενδέχεται να καθυστερήσει να
ανεβάσει τον κώδικα στο tree). Επίσης ενδέχεται όσο εγώ γράφω τις
παραπάνω διορθώσεις, κάποιος άλλος να κάνει παρεμβάσεις στον κώδικα,
οπότε και θα χρειαστεί να κάνω re-base (που μπορεί να είναι ιδιαίτερα
χρονοβόρο). Τέλος σπουδάζω στο τμήμα Φυσικής και εργάζομαι στο Ι.Τ.Ε.
οπότε ενδέχεται να υπάρχουν καθυστερήσεις και λόγω άλλων υποχρεώσεων ή
αλλαγή στη σειρά των παραπάνω εργασιών (πχ. να γράψω πρώτα τον κώδικα
για τις κεραίες και μετά το TPC). Σε κάθε περίπτωση οι απαραίτητες
εργασίες θα έχουν τελειώσει πριν τους 3 μήνες που είναι η διορία.


Βιογραφικό
----------------

Ασχολούμαι με το ελεύθερο λογισμικό απ' το 1998 ως χρήστης και ξεκίνησα
να ασχολούμαι με τον προγραμματισμό το 2004 - 2005. Έχω μεταξύ άλλων
συμβάλει στην ανάπτυξη του Mediawiki και την μετάφρασή του στα Ελληνικά
(https://bugzilla.wikimedia.org/show_bug.cgi?id=1924,
https://bugzilla.wikimedia.org/show_bug.cgi?id=4042,
https://bugzilla.wikimedia.org/show_bug.cgi?id=3573),
την ανάπτυξη του madwifi driver
(http://madwifi-project.org/wiki/TeamMembers),
την ανάπτυξη του gnupg-pkcs11
(http://gnupg-pkcs11.sourceforge.net/changelog.html)
και ήμουν απ' τα πρώτα μέλη του Ασύρματου Μητροπολιτικού Δικτύου Αθηνών
απ' το 2002 (ανέβασα το πρώτο PC σε ταράτσα).

Σπουδάζω στο τμήμα Φυσικής του Πανεπιστημίου Κρήτης και εργάζομαι ως
προπτυχιακός υπότροφος στο εργαστήριο τηλεπικοινωνιών και δικτύων του
Ιδρύματος Τεχνολογίας Ερευνας (http://www.ics.forth.gr/netlab/people.html).

Είμαι ο ένας εκ' των δυο authors του ath5k, έχοντας γράψει το
μεγαλύτερο μέρος του κώδικα που αφορά το hw (αποτελούσε ξεχωριστό
project μέχρι τότε, με το όνομα OpenHAL και συντηρούταν στο svn
repository του madwifi project όπου είμαι μέλος) και μικρό μέρος
του κώδικα που αφορά το API του kernel (τον οποίο έχει γράψει στο
μεγαλύτερο μέρος του ο Jiri Slaby). Η ενασχόλησή μου με τις
συγκεκριμένες κάρτες ξεκίνησε λόγω του AWMN, απ' όπου και διαπίστωσα το
πόσο προβληματικός είναι ο binary driver για τις συγκεκριμένες κάρτες
και πόσο πολύ λείπει ένα open source alternative στο Linux. Λόγω της
συνεργασίας μου με την κοινότητα του OpenBSD ο κώδικας που γράφω
παραμένει BSD licensed έτσι ώστε να ωφεληθούν και άλλες κοινότητες
πέραν του Linux. Πέραν του προγραμματισμού, βοηθάω διάφορους χρήστες
αλλά και φοιτητές/ερευνητές που ασχολούνται με τις συγκεκριμένες κάρτες
και έχουν διάφορες απορίες, ενώ έχω επανειλημμένα προτρέψει και Έλληνες
προγραμματιστές να ασχοληθούν. Προσπάθησα επίσης να οργανώσω την
επόμενη συνάντηση της ομάδας των προγραμματιστών του πυρήνα που
ασχολούνται με σχετικούς οδηγούς στην Ελλάδα αλλά λόγω της οικονομικής
κρίσης θα γίνει hosted απ' τη Nokia στο Helsinki.

Έχω συμβάλει σε δράσεις του Hellug στη Φαρκαδώνα και αλλού καθώς και σε
διάφορα workshops του AWMN, ενώ έχω γράψει κατά καιρούς διάφορα
tutorials για δίκτυα και linux.


Κοσσυφίδης Νικόλαος
Ρούμελης 38 Χαλάνδρι/ Αθήνα
κιν: +306973695206
mail: mickflemm [ at ] gmail [ dot ] com, mick [ at ] madwifi-project [ dot ] org (no reply)


--
GPG ID: 0xD21DB2DB
As you read this post global entropy rises. Have Fun ;-)
Nick




-- 
Πριν εκτυπώσετε αυτό το μήνυμα, σκεφθείτε το περιβάλλον! Ένα χαρτί
λιγότερο! - http://karounos.gr/blog/
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.9 (GNU/Linux)
Comment: Use GnuPG with Firefox : http://getfiregpg.org (Version: 0.7.3)

iEYEARECAAYFAkmPhwYACgkQOF4mXtIdsttfuwCeO/+aiiZOdMux6cYe3TiUGFUw
4FgAni1dmDHMWz0n1R2dFkmYObpcuH8T
=XK6X
-----END PGP SIGNATURE-----

πλοήγηση μηνυμάτων