Opcja sterownika (-D) w ramach wpa_supplicant

11

Zanim będzie wpa_supplicantmożna wykonać swoją pracę, interfejs sieciowy musi być dostępny, a sterownik urządzenia musi zostać załadowany. wpa_supplicantpozwala określić sterownik z flagą „-D”. Próbowałem tego na kilku systemach, ale wpa_supplicantnigdy nie wydaje się akceptować sterownika, który określiłem. Na przykład:

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 ~ # 

Jeśli jednak zacznę wpa_supplicantbez określania sterownika wpa_supplicant -i eth1 -c /root/wpafile, działa on bezbłędnie. Dlaczego tak jest? Ponadto w którym przypadku konieczne jest określenie sterownika wpa_supplicant?

Jaskółka oknówka
źródło
1
Lista dostępnych sterowników obejmuje (patrz instrukcja): HostAP, Prism54, Madwifi, NDISWrapper, AMTEL, IPW (sterowniki 2100 i 2200), WEXT (ogólne rozszerzenia bezprzewodowe Linux), Przewodowy Ethernet. Do najciekawszych należą WEXT (który jest używany w 70% urządzeniach Wi-Fi), NDISWrapper, jeśli używasz sterowników Windows, otoczonych warstwą kompatybilności z Linuksem i Madwifi, jeśli używasz aircrack. Chociaż nie rozumiem z architektonicznego punktu widzenia, jaki poziom reprezentują te sterowniki.
Boris Burkov

Odpowiedzi:

13

Mylisz sterowniki jądra i sterowniki przestrzeni użytkownika. W twoim przypadku z pewnością możesz użyć WEXT, ale także nl80211 (tak myślę).

WEXT (lub WE = Wireless Extensions) to modyfikacja wprowadzona do jądra Linuksa w 1997 roku przez Jean Tourrhilesa. Według tej strony napisanej przez samego Tourrhilesa,

Wireless Extension (WE) to ogólny interfejs API umożliwiający sterownikowi dostęp do przestrzeni użytkownika, konfiguracji i statystyk charakterystycznych dla popularnych bezprzewodowych sieci LAN. Jego zaletą jest to, że jeden zestaw narzędzi może obsługiwać wszystkie wersje bezprzewodowych sieci LAN, niezależnie od ich typu (o ile sterownik obsługuje rozszerzenie bezprzewodowe). Kolejną zaletą jest to, że parametry te można zmieniać w locie bez ponownego uruchamiania sterownika (lub Linuksa).

Innymi słowy, WEXT znajduje się na twoim sterowniku i umożliwia interakcję z nim wpa_supplicant. Zauważ, że wpa_supplicant i sterownik należą do różnych dziedzin jądra (pierwszy do przestrzeni użytkownika, drugi do przestrzeni jądra), dlatego wymagany jest interfejs API zdolny do działania jako pośrednik. Taką rolę odgrywają tak zwani kierowcy wspomniani przez Boba.

Jednak ta strona internetowa Linux-Wireless wyraźnie to stwierdza

Czy jesteśmy dalej rozwijani?

Nie, nie jest. W WE są akceptowane tylko poprawki błędów.

i

Co to jest wymiana rozszerzeń bezprzewodowych?

Nowe prace powinny koncentrować się na cfg80211 i nl80211.

W rzeczywistości, jeśli zapytanie poprawnie wpa_supplicant (tj. Nie strona man, ale polecenie

 wpa_supplicant -h

Otrzymuję (częściowo) tę odpowiedź:

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

Innymi słowy, wierny słowom Linux Wireless, wsparcie dla wszystkich innych sterowników oprócz Wext i nl80211 zostało odrzucone, a obsługa Wext została utrzymana, ponieważ ...

Czy nadal korzystamy z WE?

Tak, cfg80211 i nl80211 są w dalszym ciągu opracowywane, więc nadal używane są WE. Wszystkie sterowniki mac80211 obsługują WEs, ponieważ używa go mac80211. Chodzi o to, aby powoli zacząć przenosić rzeczy na cfg80211 i nl80211, których jeszcze tam nie ma, i dodawać do nich również nowe funkcje.

Dotyczy to jądra Linux 3.11.1-031101-generic.

Ci z was, którzy używali hostapd, są już w pewnym sensie poinformowani o tym wszystkim, ponieważ standardowy sterownik dla hostapd to dokładnie nl80211.

MariusMatutiae
źródło