Journal Driver wifi pour OpenBSD

Posté par  (site Web personnel) .
Étiquettes : aucune
0
29
mai
2006
La carte wifi 3945ABG est très commune dans les nouveaux portables Centrino Duo.
Dans le monde des distros GNU/Linux cette carte wifi "Intel PRO/Wireless 3945ABG" est déjà supportée.
Dans le monde OpenBSD cela va également être le cas puisque Damien Bergamini a ajouté son driver le 14 mai dans la branche de développement de ce qui deviendra OpenBSD 4.0.
On trouve sur le site KernelTrap un entretien avec lui qui explique les différences entre les deux drivers.

URL : http://kerneltrap.org/node/6650

Pour résumer le driver Linux fait 18000 lignes de codes et ce n'est en fait qu'une enveloppe (wrapper) autour d'un blob binaire. Selon Intel c'est une exigence des autorités de régulation étatsuniennes (la FCC) qui interdisent de tripoter une carte wifi pour pourrir les bandes de fréquences légales. La solution retenue est donc ce blob opaque qui tourne en espace noyau (ce qui est particulièrement dangereux).
Visiblement Intel profite également de cette exigence légale pour cacher sa précieuse propriété intellectuelle et éviter de dévoiler ses algorithmes d'autocalibration et de réglage dynamique des fréquences. Le blob, soit disant obligatoire, n'est en fait qu'une astuce pour ne pas jouer le jeu de la GPL.
Damien souligne également, outre la dangerosité du blob, que le driver Intel est très largement redondant avec la pile wifi générique de Linux et qu'il est inutilement complexe.
On trouve des phrases comme : "It is amazing how poorly this driver is designed" ou "a spectacular amount of complexity" ou encore "they duplicate large portions of code and implement things directly in the driver that should belong to the 802.11 stack".
Comme c'est Intel qui travaille beaucoup sur la pile wifi générique du noyau Linux, Damien pense que les développeurs ne peuvent pas se permettre de crier et de protester devant la piètre qualité du driver de la carte 3945ABG.

Par contraste le driver OpenBSD fait juste 3000 lignes de codes (1/6 du code Linux sans même compter le blob) et il ne comprends aucun binaire opaque !
Pour être juste soulignons néanmoins que le driver OpenBSD n'est pas encore complet.
En ce qui concerne les exigences légales de la FCC elles sont satisfaites par le respect des canaux présents dans la ROM du firmware. Bien entendu on peut tricher en modifiant directement le code source mais on peut également abuser le blob Linux : "But it's not different with Intel's binary only daemon as you can easily fool it into thinking it is in another regulatory domain by just lying about the EEPROM content."
(Ce qui démontre bien que le blob n'est pas nécessaire).


PS : lors de l'annonce de l'écriture du driver sur le site Undeadly Damien, pour inciter à la relecture et à l'audit de son code, a trouvé une solution originale : I encourage everyone to go and read the code. The first one who find a reference to a very popular TV show in the source code wins a cookie.

L'URL : http://undeadly.org/cgi?action=article&sid=2006051519110(...)

Il semble (au vu des commentaires qui suivent la news) que Daniel Hartmeier soit l'heureux vainqueur mais j'aimerais bien qu'un volontaire m'explique la référence à l'épisode TV en question.
  • # Petite question...

    Posté par  . Évalué à 4.

    J'aimerais connaître l'avis des (Open)BSDistes : est-ce que OpenBSD est utilisable sur un ordinateur portable, et qu'en est-il du support du matériel (ACPI, WiFi, Bluetooth, etc.) ? Pas de trolls svp :)
    • [^] # Re: Petite question...

      Posté par  . Évalué à 4.

      tout dépend du portable et de ce qu'on entend par utilisable. Il y'a des gens qui utilisent openbsd sur leur portable et qui en sont satisfait si ça peut répondre à ta question...
    • [^] # Re: Petite question...

      Posté par  . Évalué à 10.

      Le support Wifi est globalement OK (certains chipsets ne sont pas supportés, mais ce sont généralement des chipsets relativements peu courants, et pour d'autres le support est à mon goût beaucoup plus carré que sous Linux), pas de suspend to disk/to ram ACPI, pas de bluetooth. Pour moi ce sont des détails donc je trouve que ça roule bien sur un portable.
      Si tu veut tout savoir sur le support du matériel sur x86, regarde ici:
      http://www.openbsd.org/i386.html (et http://www.openbsd.org/macppc.html pour les macs).

      Commentaire au sujet du journal: le driver Linux n'utlise pas exactement un « blob opaque qui tourne en espace noyau ». Mais ce driver Linux dépend d'un daemon close source et propriétaire qui tourne en root (et qui cause avec le driver, donc le noyau). Ça, c'était une grande innovation délirante d'Intel, qui avait beaucoup fait jaser, cf. http://kerneltrap.org/node/6270 .
      Bref, ce qu'explique Damien Bergamini, c'est que son driver de 3000 lignes fonctionne sans ce daemon propriétaire, qui est nécéssaire au driver Linux (écrit par Intel).

      De plus, pour être très précis, on ne peut pas vraiment dire que le driver OpenBSD, pour fonctionner, n'utilise « aucun binaire opaque »: il reste le firmware (binaire, closed source) de la carte à charger à l'intialisation. Mais il est vrai que le firmware ne tourne pas dans le noyau (ni même en userland), il est seulement chargé dans la carte wifi puis exécuté par celle-ci.

      La performance de Damien est assez somptueuse, lorsqu'on sait qu'Intel ne lui a pas donné de doc, et qu'il a fait son driver en reverse engeneerant le driver Linux, en trouvant moyen de le réduire au 1/6em en nombre de lignes, de virer la dépendance au daemon root propriétaire, tout ceci en seulement 2 mois après qu'Intel ai publié le driver Linux.
      Ce n'est pas le coup d'essai de Damien, il a aussi oeuvré pour les drivers OpenBSD des autres chipsets Wifi Intel, là aussi en reverse engeneerant le driver Linux et en trouvant moyen de le rendre beaucoup plus petit et lisible.
      On peut aussi citer son admirable travail pour les chipsets Wifi Ralink (société qui, elle, donne les docs et des firmwares redistribuables): en quelques mois son driver marchait mieux que le driver Linux fournis par Ralink (par comparaison, le projet http://rt2x00.serialmonkey.com de réécriture de ce driver sous Linux patauge depuis presque deux ans sans résultat probant, ce qui montre que ce n'est pas facile).

      Sur le lien kerneltrap que je donne ci-dessus, vous pourrez remarquer combien le developpeur kernel Linux Christoph Hellwig a vu juste (et Alan Cox a vu faux), lorsqu'il dit: « If intel doesn't do the right thing support for their hardware will have to wait until someone has reverse-engineered their daemon » !
      • [^] # Re: Petite question...

        Posté par  (site Web personnel) . Évalué à 9.

        Merci pour tes précisions techniques.
        C'est vrai que le boulot qui est fait dans OpenBSD pour supporter le matos avec du code propre et libre est vraiment admirable.
        C'est quand même un peu étonnant de constater que de nombreux devs Linux ne se préoccupent pas plus des idéaux du logiciel libre. Il ne faut pas oublier que, même si on n'est pas idéologue et qu'on ne se sent pas concerné par les querelles de GPLvsBSDvsProprio, le logiciel libre procure des avantages techniques indéniables. La sécurité et la relecture du code étant les plus évidents.
        Vous qui êtes des paranos sur la sécurité et qui cryptez vos mails et vos partitions, si vous utilisez le driver Intel wifi tout cela ne sert à rien car vous avez, comme l'indique Herodiade, un démon root closed source qui tourne en tache de fond. Qui vous assure de son innocuité ?
      • [^] # Re: Petite question...

        Posté par  . Évalué à 5.

        Damien avait aussi bossé sur le fast800 de sagem et avait fortement reduit/simplifié de code Linux de l'époque (qui reimplementait pas mal de chose).
        La version intégré dans le noyau 2.6 depuis quelques temps se basse d'ailleur sur son implementation :(

        C'est ca que je trouve bien chez openbsd, c'est qu'il font du code propre simple quitte a ne pas supporte toute les features possibles. De plus le nombre de developpeurs etant assez reduit, il y a une grande homogeneite.

        Linux c'est plus l'anarchie...

        PS : openbsd etait aussi les premiers a faire une version du pilote wifi atheros blob free...
        • [^] # Re: Petite question...

          Posté par  (site Web personnel) . Évalué à 1.

          >> Linux c'est plus l'anarchie...

          En même temps il faut être conscient que Linux possède bien plus de fonctions qu'OpenBSD qui reste un OS assez spécialisé.
          Des clusters, des super-ordinateurs...etc ça existe en linux mais pas en OpenBSD. C'est normal qu'avec une telle magnitude de fonctions le développement soit moins focalisé.
          • [^] # Re: Petite question...

            Posté par  . Évalué à 4.

            Mouais...

            Je suis sceptique. Tout est faisable avec les BSD, pareil qu'avec Linux quoi...

            J'ai jamais entendu parler de cluster OpenBSD, mais NetBSD et FreeBSD oui, donc
            ça dois etre faisable...
            • [^] # Re: Petite question...

              Posté par  (site Web personnel) . Évalué à 2.

              Dans le top 500 des super ordinateurs les plus puissants du monde je n'ai vu aucun BSD alors que Linux est omniprésent. C'est simplement le reflet de ses capacités : Cluster file system (Lustre et autres), scheduler adaptable, capacités NUMA..etc etc.
              C'est hallucinant de voir le nombre de choses qui sont dispos dans le kernel.
              Va voir cette news que j'avais posté à l'époque : http://linuxfr.org/2005/07/28/19364.html

              Il est indéniable que Linux est beaucoup plus complet que les autres BSD.
              • [^] # Re: Petite question...

                Posté par  . Évalué à 5.


                Il est indéniable que Linux est beaucoup plus complet que les autres BSD.


                Redis le si tu es homme...! :)

                Plus serieusement, je ne suis pas expert, et tu es surement plus competent que moi
                mais je pense que pour les super ordinateurs, et pour plein de chose, c'est surtout
                que beaucoup de gens travail sur Linux, sont expert Linux, etc, donc Linux
                deviens un choix par defaut pour beaucoup de chose.

                C'est bien d'ailleurs, mais bon, je pense pas que Linux sois "mieux" qu'un BSD
                pour realiser des choses "exotique", juste que plus de gens s'en servent pour ça.

                Et pis NetBSD et FreeBSD detiennent de beau records quand même...
          • [^] # Re: Petite question...

            Posté par  . Évalué à 5.

            En même temps il faut être conscient que Linux possède bien plus de fonctions qu'OpenBSD qui reste un OS assez spécialisé.
            Mouais, rien qu'au niveau des familles de pilote (ethernet, wifi, video, ...) c'est pas tres uniforme.

            Des clusters, des super-ordinateurs...etc ça existe en linux mais pas en OpenBSD.
            Il me semble que certains bsd tourne sur plus d'archi que Linux...
            Pour les clusters : http://www.freebsd.org/fr/advocacy/myths.html#clustering
            Mais je ne connais pas assez les bsd pour savoir ou se place openbsd la dedans.
            • [^] # Re: Petite question...

              Posté par  (site Web personnel) . Évalué à 1.

              oulah... je ne suis pas specialiste, mais un cluster, c'est pas vraiment "une autre archi". Si cela consiste a faire tourner les machines independament puis mettre du MPI dans les applications que l'on veut utiliser c'est assez simple, mais si l'on va vers une machine type Altix http://www.sgi.com/products/servers/altix/ , c'est a dire une seule image systeme sur la machine (jusqu'a 512 processeurs), alors la c'est une autre histoire: les repercussions sur l'ensemble du design du noyau sont assez enormes.

              Enfin ceci n'excuse pas le driver pour une carte wifi, driver qui doit quand meme etre assez isole des problemes dont on parle... (on n'en est plus dans les problemes de gestion des processus, gestion memoire, proximite, ...)

              Mathias
  • # Episode TV

    Posté par  (site Web personnel) . Évalué à 1.

    !!! SPOILER !!!
    LOST saison 2

    Dans la saison 2 de Lost, il trouve un bunker ou il faut rentrer un code toute les 108 minutes et presser la touche "Execute" sur une veille antiquité d'ordinateur :)
  • # stack ieee80211

    Posté par  . Évalué à 3.

    Comme c'est Intel qui travaille beaucoup sur la pile wifi générique du noyau Linux, Damien pense que les développeurs ne peuvent pas se permettre de crier et de protester devant la piètre qualité du driver de la carte 3945ABG

    Je crois qu'il y a eu un journal ou une dépeche à ce sujet, mais de nombreux developpeurs wifi sous Linux semblent plebisciter le framework wifi alternatif de Devicescape, qui vient d'être totalement libéré.

    Il était question d'intégrer cette pile Deviscape -pour le mieux être de chacun- dans le kernel standard, modulo quelques améliorations dans le code actuel: quelqu'un a des nouvelles ? est-ce toujours d'actualité ?
  • # Pfiou

    Posté par  . Évalué à 3.

    En commençant la lecture de la news j'avais compris qu'il comptait mettre en place un blob au milieu du kernel openbsd, connaissant leur hostilité envers les blob ça m'avais un peu secoué :)
  • # Hmmm...

    Posté par  . Évalué à 5.

    Un kernel-hacker charitable pour nous faire un petit LKM 100% libre pour supporter ipw3945 sous linux ?

    Si ça se fait, c'est intel qui risque de faire la tête, mais pour le coup je crois qu'ils l'auront bien cherché. Reste plus qu'à espérer qu'ils ne vont pas continuer dans leur optique d'obscurantisme en faisant encore plus fort qu'un démon proprio au prochain matos qu'ils mettront sur le marché...
  • # Petite question

    Posté par  . Évalué à 5.

    Et on risque quoi à faire joujou sur les fréquences interdites ? :D
    • [^] # Re: Petite question

      Posté par  (site Web personnel) . Évalué à 4.

      Déja ça doit dépendre de ton pays. Les législations sont différentes et il est évident que la FCC est détentrice de l'autorité aux USA mais que pour le reste du monde ils peuvent aller se faire voir ailleurs.
      Pour la france je sais pas trop mais j'ai lu que l'armée avait rechigné au début du wifi car cela recouvrait certaines de leurs fréquences.
      • [^] # Re: Petite question

        Posté par  . Évalué à 3.

        Du temps de mon service militaire (ça remonte à une quinzaine d'année), l'armée de l'air réglait le problème des radiotéléphones qui empiètaient sur ses bandes de fréquence de la manière suivante :
        elle positionnait une station mobile sur un point haut, écoutait les bandes de fréquences réservées et à chaque détection d'un émetteur non autorisé, la station émettait quelques kilowatts focalisé sur l'émetteur.

        Comme avec chaque émetteur radio il y a généralement un récepteur et que celui ci est conçu pour recevoir quelques milliwatts, le résultat était immédiat, récepteur grillé ; et son proprio le remplaçait par un autre équipement peut être aux normes.

        Pour le wifi je ne sais pas ce qu'ils font !

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n’en sommes pas responsables.