option de pilote (-D) sous wpa_supplicant

11

Avant de wpa_supplicantpouvoir faire son travail, l'interface réseau doit être disponible et le pilote du périphérique doit être chargé. wpa_supplicantpermet de spécifier le pilote avec l'indicateur "-D". J'ai essayé cela sur quelques systèmes, mais wpa_supplicantne semble jamais accepter le pilote que j'ai spécifié. Par exemple:

T42 ~ # lspci -v -s 02:02.0
02:02.0 Network controller: Intel Corporation PRO/Wireless 2915ABG [Calexico2] Network Connection (rev 05)
    Subsystem: Intel Corporation Device 1011
    Flags: bus master, medium devsel, latency 64, IRQ 11
    Memory at c0214000 (32-bit, non-prefetchable) [size=4K]
    Capabilities: [dc] Power Management version 2
    Kernel driver in use: ipw2200
    Kernel modules: ipw2200
T42 ~ # wpa_supplicant -D ipw2200 -i eth1 -c /root/wpafile 
Unsupported driver 'ipw2200'.
T42 ~ # 

Cependant, si je commence wpa_supplicantsans spécifier le pilote comme wpa_supplicant -i eth1 -c /root/wpafile, alors cela fonctionne parfaitement. Pourquoi cela est-il ainsi? De plus, dans quel cas faut-il spécifier un pilote pour wpa_supplicant?

Martin
la source
1
La liste des pilotes disponibles comprend (voir le manuel): HostAP, Prism54, Madwifi, NDISWrapper, AMTEL, IPW (les pilotes 2100 et 2200), WEXT (extensions génériques sans fil Linux), Ethernet câblé. Parmi ceux les plus intéressants sont WEXT (qui est utilisé pour les appareils Wifi à 70%), NDISWrapper si vous utilisez des pilotes Windows, enveloppé par la couche de compatibilité Linux et Madwifi, si vous utilisez aircrack. Cependant, je ne comprends pas du point de vue architectural, quel niveau ces pilotes représentent.
Boris Burkov

Réponses:

13

Vous confondez les pilotes du noyau et les pilotes de l'espace utilisateur. Dans votre cas, vous pouvez certainement utiliser WEXT, mais aussi nl80211 (je pense).

WEXT (ou WE = Wireless Extensions) est la modification introduite dans le noyau Linux en 1997 par Jean Tourrhiles. Selon cette page Web écrite par Tourrhiles lui-même,

L'extension sans fil (WE) est une API générique permettant à un pilote d'exposer à l'espace utilisateur, à la configuration et aux statistiques spécifiques aux réseaux locaux sans fil courants. La beauté de celui-ci est qu'un seul ensemble d'outils peut prendre en charge toutes les variantes de LAN sans fil, quel que soit leur type (tant que le pilote prend en charge l'extension sans fil). Un autre avantage est que ces paramètres peuvent être modifiés à la volée sans redémarrer le pilote (ou Linux).

En d'autres termes, WEXT se trouve au-dessus de votre pilote et permet à wpa_supplicant d'interagir avec lui. Notez que wpa_supplicant et le pilote appartiennent à des royaumes de noyau différents (le premier à l'espace utilisateur, le second à l'espace noyau), donc une API capable d'agir comme intermédiaire est requise. C'est le rôle joué par les soi-disant pilotes mentionnés par Bob.

Cependant, cette page Web Linux sans fil indique explicitement que

NOUS nous développons-nous encore?

Non ça ne l'est pas. Seules les corrections de bugs sont acceptées pour WE.

et

Qu'est-ce que le remplacement des extensions sans fil?

Les nouveaux développements devraient se concentrer sur cfg80211 et nl80211.

En fait, si une requête mon wpa_supplicant drectly (c'est-à-dire, pas la page de manuel, mais la commande

 wpa_supplicant -h

J'obtiens (en partie) cette réponse:

drivers:
  wext = Linux wireless extensions (generic)
  nl80211 = Linux nl80211/cfg80211
  wired = Wired Ethernet driver
  none = no driver (RADIUS server/WPS ER)
options:....

En d'autres termes, fidèle aux paroles de Linux Wireless, le support de tous les autres pilotes sauf Wext et nl80211 a été abandonné, et le support de Wext a été maintenu car ...

Utilisons-nous toujours WE?

Oui, cfg80211 et nl80211 sont toujours en cours de traitement, donc les WE sont toujours utilisés. Tous les pilotes mac80211 prennent en charge WEs car mac80211 l'utilise. L'idée est de commencer lentement à déplacer des éléments sur cfg80211 et nl80211 qui ne sont pas encore là et à leur ajouter de nouvelles fonctionnalités.

Cela s'applique à Linux Kernel 3.11.1-031101-generic.

Ceux d'entre vous qui ont utilisé hostapd sont en quelque sorte déjà informés de tout cela, car le pilote standard pour hostapd est exactement nl80211.

MariusMatutiae
la source