Portál AbcLinuxu, 21. srpen 2019 02:26

Jak na WiFi kartu v Linuxu

13. 10. 2004 | Zdeněk Štěpánek
Články - Jak na WiFi kartu v Linuxu  

Stručný popis všech dostupných karet/čipsetů, zhodnocení kvality hardwaru a podpory v Linuxu. Postup zprovoznění a konfigurace. Užitečné utility.

Na téma WiFi v Linuxu bylo již nápsáno mnoho stran, dokonce bych řekl, že psaní dalších je nošením dříví do lesa. Bohužel se ale zdá, že je zde stále řada lidí, kteří nejsou schopni si relevantní informace najít na internetu v diskuzních fórech a pomocí Googlu. Nebo ve snaze ušetřit koupili nekvalitní kartu a pak se v diskuzích ptají, co s tím. Právě jim je určen tento článek.

Vybíráme kartu

Představte si situaci, že máme počítač s Linuxem a rozhodli jsme se připojit do WiFi sítě. První, v podstatě nejdůležitější, krok je vybrat správný typ. Jak už je v Linuxu zvykem, není ani tak důležitý výrobce jako spíš použitý čipset. Čipsetů je na trhu celá řada. My se budeme zabývat těmito:

  1. CISCO - stabilní, ověřený, neověřená regulace, dražší
  2. ORINOCO - stabilní, ověřený, bez regulace, většinou dražší
  3. Texas Instruments ACX100/ACX111 - HW bez dokumentace, free ovladač na bázi reverzního inženýrství, zatím nemá regulaci, velmi levný
  4. Realtek rtl8180 - HW bez dokumentace, binárni ovladač od výrobce, free projekt "NDIS wrapper" umožňuje načítat Win ovladače, velmi levný
  5. Atmel - méně používaný, k nalezení zejména v USB zařízeních, levný
  6. Admtek - méně používaný, k nalezení zejména v USB zařízeních, levný
  7. Ralink - s otevřeným ovladačem, bez regulace, méně používaný, velmi levný
  8. Prism 2/2.5/3 - výborně zdokumentovaný HW, hned dva free ovladače, poměrně levný
  9. Prism 54 - zdokumentovaný, free ovladač, poměrně levný

Hned v úvodu radši uvedu, se kterými kartami jsem měl tu čest a se kterými ne. Jednou jsem instaloval CISCO do PCI, od té doby jede bez jediného zásahu. ORINOCO jsem měl v ruce, ale v notebooku nemám ovladač, takže nic. ACX100 máme jednu v naší síti. Realtek jsem měl v ruce, ale v Linuxu jsem ho preventivně ani nezkoušel. Atmel, admtek a ralink jsem neviděl, pouze jsem se zeptal pana Googla a prohledal jsem diskuze na www.czfree.net. 626tek (Prism 2.5) jsem viděl dost, spokojeně nám jich v síti vrní skoro 10. S čipsetem Prism 54 jsem se zatím nesetkal, takže opět pomohl pan Google a czfree.

a) CISCO

Jak už jsem se zmínil výše, tak PCI kartu Cisco jsem v Linuxu instaloval jen jednou, takže pokud se dopustím nějakých chyb, prosím případné znalce, aby mě opravili v diskuzi.

Jednalo se vlastně o PCMCIA kartu v redukci do PCI. To se dělávalo dříve, dnes se tohoto modelu drží už asi jen Cisco a Orinoco/Avaya/Lucent (jedna a tatáž firma známá pod různými názvy). Provedení PCMCIA má své nesporné výhody i nevýhody. Výhoda je celkové krytí v plechu, nevýhodou zase větší nahuštění součástek na sebe (věřím ale, že to není problém Cisca ani Orinoca, to jen u těch levných karet) a pravděpodobně vyšší výrobní cena. Možná někdo ocení kvalitu Cisca nebo jejich pozáruční servis, my se ale bavíme o připojení našeho domácího počítače, případně o nějakém AP, kde nemusí být zajištěna stoprocentní dostupnost. Z uvedených důvodů jsem ani na českých webech nenašel zmínku o možnosti regulace výkonu na těchto kartách, což je věc, bez které se dnes těžko obejdete. Použití této karty tak připadá v úvahu snad jen pokud se vám čistě náhodou válí v šuplíku.

b) ORINOCO

Dříve velice oblíbené karty, vynikají svojí spolehlivostí a výbornou citlivostí. K dispozici jsou ale pouze v PCMCIA provedení, což použití v PCI slotu poněkud prodražuje. Občas lze narazit na tyto karty i za cenu kolem 800 Kč, musíte mít štěstí. Šušká se, že poslední modely mají i regulaci, ale valná většina karet Orinoco, které se používají, regulaci nemá, takže opět velké mínus. Další mínus je nutnost použití pigtailu se speciálním (=drahým) konektorem, což ji opět prodražuje. Linuxový ovladač funguje, jak má. Zejména kvůli chybějící regulaci a dražšímu nákupu nedoporučuji ani tuto kartu.

c) Texas Instruments ACX100/ACX111

Tento čipset je přítomen ve velice oblíbených externích AP D-Link DWL-900AP+ a TP-Link TL-WA200+. Kvalitou příjmu/vysílání se drží někde uprostřed pole. Má jakousi nedodělanou pseudoregulaci (10, 12, 15, 17dBm). Snaha se sice cení, ale moc použitelné to není. Čipset se honosí podporou 802.11b+, tedy 22Mbit. V případě PCI varianty mám zkušenosti s velmi levnou kartou TP-Link TL-WN250+, která o sobě dokonce tvrdí, že umí 44Mbit, ovšem pouze ve Windows. Linux 44Mbit zatím neumí a tuto kartu stejně identifikoval jako obecnou kartu s čipsetem acx100 s podporou 22Mbit. Výhodou je open-source ovladač, který se vcelku zdařile vyvíjí. Reverzní inženýrství je IMHO trestné i u nás.... Trpí řadou dětských problémů, ale věřím, že za čas budou vychytané. Běžela mi přes dva měsíce na trvale zatížené lince (cca 256kbit trvale, čas od času naplno - 985kbps) bez jediného škobrtnutí. V jiném, značkovém, jinak absolutně stabilním, počítači po dvou hodinách i slabého provozu přestala komunikovat. Po návratu do původního zase jede. Linuxový ovladač (možná i karta sama) nepodporuje regulaci výkonu. Její koupi v současné době ještě nedoporučuji. Uvidíme, jak se ovladač popasuje s regulací výkonu a stabilitou. Pak by to mohla být zajímavá volba.

d) Realtek rtl8180

Tato karta sice patří k nejlevnějším, ale také k nejhorším kartám vůbec. Záporů je hned několik: nedokumentovaný hardware, obecně nízká kvalita čipsetu, absence regulace výkonu, výrobci ve snaze udělat kartu s levným čipsetem ještě levnějsí šetří i na oplechování a všem možném. VF část těchto karet bývá mizerná. Snaží se součástky dát co nejblíž k sobě, což při jejich kvalitě provedení rozhodně není dobrý nápad. Tady pochopitelně záleží na výrobci, ale viděl jsem jak PCI kartu tak externí krabičku a v podstatě to bylo totéž, jedním slovem hrůza. Realtek dodává binární ovladače pro Linux (rozuměj pro konkrétní verzi RedHatu s konkrétním jádrem). Zprovoznění tohoto ovladače je obecně považováno za zázrak. Také je k dispozici open-source NDIS wrapper, což je program umožňující nahrávání Windows ovladačů. Resumé je jasné, tuto kartu rozhodně nebrat.

e) Atmel

Co jsem se dočetl o HW krabičkách, tak atmel se prý připojí zase jenom k atmelu, je to ale nepotvrzená informace a týká se WiFi krabiček. PCI karta se pod Windows k 626ce v Linuxu připojí. Čili zdroj možných problémů. Celý Google zná pouze dvě PCI karty s tímto čipsetem: Askey WLH020 a Edimax EW7125. Doporučuju "prohledat internet" na "EW7125". Atmel se jednoznačně zaměřuje na USB. A že je USB WiFi docela špatný nápad a v Linuxu obzvlášť, snad není potřeba zdůrazňovat, to snad jen pro notebooky s nefunkčním PCMCIA slotem.

f) Admtek

I o těchto kartách pan Google a czfree.net docela mlčí nebo mlží. Výrobce prý uvolnil zdrojáky ovladačů, které vcelku v pohodě fungují. Jakousi obskurní metodou to prý jde donutit k regulaci výkonu. Link jsem nenašel. A prý má naprosto mizernou citlivost. Kvalitu karet lze odvodit z diskuzí na www.czfree.net a tahle je tedy podle mého soudu buď nic moc nebo zatím málo vyzkoušená. Takže taky radši nebrat.

Vyskytují se i jiné varianty tohoto čipsetu. V ruce jsem ji neměl, na internetu lze najít, že s dodávaným ovladačem od fy. Minitar ve formě zdrojáků spolupracuje v pohodě. Ty jsou pod nějakou privátní licencí zakazující snad cokoliv vyjma kompilace. Nevím, jestli v dohodě s firmou Minitar, nebo bez ní, ale existuje GNU GPL ovladač na bázi toho od Minitaru, k nalezení zde: http://sourceforge.net/projects/rt2400. Neumí AP mód a regulaci výkonu. Fyzickým zástupcem je např. ASUS WL-130b, bohužel podle obrázku vypadala dost levně. Někdo píše, že má lepší příjem než 626ka, jiný píše, že je vhodná pro windows klienty s dobrým signálem. Řekl bych, že možná stojí za vyzkoušení, ale nevím nevím. A bez regulace... V této super levné cenové kategorii bych se radši asi přiklonil k acx100.

h) Prism 2/2.5/3

Čipset Prism má mezi všemi ostatnímí jedno specifikum. V PCMCIA provedení je k dispozici od vícero výrobců, ale v PCI provedení jsou pouze dvě: Alphawave P24-PCI a Zcom XI-626. P24 byla ke koupi někdy před rokem, ale vzhledem k horšímu krytí a nutnosti novějšího PCI slotu o ni nebyl moc velký zájem a dnes je nesehnatelná. Na trhu tak zbývá jediný, zato však plnohodnotný, zástupce XI-626. 626ka má vše, co je potřeba. Má regulaci výkonu v plném rozsahu, má poměrně kvalitní VF část (někdo tvrdí, že Orinoco je citlivější, další, spolu se mnou, mají přesně opačnou zkušenost), je plně dokumentovaná, a tudíž k ní existuje spolehlivý, plnohodnotný open-source ovladač. Dokonce vlastně dva (hostap a wlan-ng). Má oplechování po celé kartě. A jako jediná umí spolehlivě s ovladačem hostap i AP/master mód. Dřívější problémy se stabilitou jsou již dávno minulostí, sám provozuji několik AP s 626kou několik měsíců bez jediného problému. Spolu s cenou 1546 Kč s DPH se z ní stává jasná a neoddiskutovatelná volba.

i) Prism 54

Název Prism 54 není zcela přesný, existujě několik variant tohoto čipsetu: Indigo, Frisbee, Javelin, Xbow, GT, Duette. Původně se vyskytoval v kartě XG-900, to by byla dobrá volba, kdyby se ještě dala koupit. Prý díky neshodám firmy Zcom a ZcomMax se XG-900 přestala dovážet do ČR. Dnes je k dipozici XG-901, která ale pořádně nefunguje, straší v ní. Parametry by měly být podobné jako u XI-626, karty jsou dokonce na první pohled úplně stejné. XG-901 umí 802.11 a/b/g. Lze koupit kartu SMC 2802W, která by podle všeho měla být identická jako XG-900, firemní obrázek na to ovšem nevypadá. Dále také Ovislink WL-5400pci, ta vypadá přesně jako 626/900/901. Existuje pro ně čistokrevný open-source ovladač i s regulací výkonu. Ovšem vzhledem k nízkému zájmu o 54Mbit technologii, problémy s rušením a malým dosahem tyto karty příliš nedoporučuji. Snad jen pokud opravdu vyžadujete 54Mbit technologii.

Kde rostou ovladače:

  1. CISCO - v jádru
  2. ORINOCO - v jádru
  3. Texas Instruments ACX100/ACX111 - http://acx100.sourceforge.net
  4. Realtek rtl8180 - http://www.realtek.com.tw
  5. Atmel - ???
  6. Admtek - ???
  7. Ralink - http://sourceforge.net/projects/rt2400
  8. Prism 2/2.5/3 - http://hostap.epitest.fi, http://www.linux-wlan.com/
  9. Prism 54 - http://prism54.org/

Za jasného vítěze klání jsem označil XI-626, takže:

Nastavení karty XI-626 s hostapem

Poslední verze hostapu (0.2.4) se skládá ze čtyř balíčků: hostap-driver, hostap-utils, hostapd, wpa_supplicant. Možná jsem zpátečník, ale já i dnes používám verzi 0.1.0. A to hned ze tří důvodů: je na ni patch od Jirky Boháče, neobsahuje bug zvaný wifi0 a mám ji ověřenou na téměř deseti 626kách a jedné picmicce. Hostap dnes už prostě nepadá. Následující popis se tedy vztahuje k verzi 0.1.0, nicméně jsem si jistý, že bude fungovat i k ostatním verzím, ve většině případů bude nastavení iwconfigem fungovat i pro ostatní karty.

Patch od Jirky Boháče

Hostap po resetu karty ztratí některé nastavení (power, sensitivity, rate a retry). Tento patch zajistí opětovné nahození těchto parametrů po resetu karty. Patch najdete na http://www.jikos.cz/~jbohac/hostap/. Na domovské stránce je napsáno, že patch nespolupracuje s některými novějšími firmwary, tak si zkontrolujte firmware vaší karty nebo nepoužívejte patch a obnovení hodnot dejte např. do skriptu spouštěného cronem jednou za hodinu.

Bug wifi0

Hostap vždy vytvářel síťovku wlan0, poslední verze však nejen mně vytvořila wlan0 a wifi0 zároveň. Nastavení obou se z části překrývá, z části ne. To je minimálně poněkud nepřehledné. Na stanici to lze ignorovat, ale na routeru bych se z toho zbláznil.

Kompilace a instalace jednotlivých balíčků:

  1. hostap-drivers
    1. Stáhněte balíček a někam ho rozbalte.
    2. Stáhněte patch hostap-driver-0.1.0-psrrr-0.2.patch a uložte ho do rozbaleného adresáře.
    3. V adresáři s hostap-driver aplikujte patch:
      patch -p1 <hostap-driver-0.1.0-psrrr-0.2.patch
    4. Zkompilujte hostap. Pro jádra 2.4 příkazem make a pro jádra 2.6 příkazem make 2.6. Ke kompilaci hostapu musíte mít zdrojáky současného jádra v /usr/src/linux, pochopitelně stačí symlink.
    5. Po úspěšné kompilaci vlezte do adresáře ./driver/modules a najděte soubory (.o pro 2.4, .ko pro 2.6):
      • hostap.ko
      • hostap_pci.ko
      • hostap_plx.ko
      • hostap_cs.ko
      • hostap_crypt_wep.ko
    6. Tyto soubory překopírujte do /lib/modules/2.x.x/kernel/net a spusťte depmod -ae. Z pci, plx a cs stačí vybrat ten, který budete potřebovat. V tomto okamžiku je ovladač zkompilovaný a nainstalovaný, po modprobe hostap_pci by měl najít PCI kartu a ta by měla fungovat. Avšak nepředbíhejme.
  2. hostap-utils
    1. Stáhněte balíček a někam ho rozbalte.
    2. Vlezte do něj a spusťte make, za chvilku to bude hotové.
    3. Vyberte všechny vzniklé binárky a zkopírujte je do /usr/sbin. Tyto podpůrné programy se nám hodí např. při skenování vzduchu, při zjišťování informací o kartě apod. Toť vše.
  3. hostapd

    Přiznám se, že funkce démona hostapd mi zatím zůstala utajena. Z dokumentace plyne, že poskytuje rozšířené bezpečnostní funkce, tj. 802.1X, externí radius server pro autentizaci MAC a dynamickou změnu WEP klíčů. Kompilace je stejná jako v případě hostap-utils.

    Kompilace je hotova. V závislosti na vaší distribuci zajistěte nahrávání modulu hostap_pci nebo hostap_plx pro pcmcia kartu v plx adaptéru nebo nastavte pcmcia služby, aby hotplug poznal vaši kartu a přiřadil k ní ovladač hostap_cs. Např. pro Slackware dejte do souboru /etc/rc.d/rc.netdevice řádek modprobe hostap_pci. Nastavení je pro všechny typy karet identické.

Skript pro nastavení karty jako klienta

iwconfig wlan0 mode managed
# karta bude klient
sleep 2
# chvilku počkat, jinak to zlobí
iwconfig wlan0 essid "moje_essid"
# ESSID sítě
sleep 2
iwconfig wlan0 txpower -50 auto
# autoregulaci zapnout
sleep 2
iwconfig wlan0 txpower -50 fixed
# autoregulaci vypnout
sleep 2
iwpriv wlan0 writemif 62 XY
# nastavení výkonu zápisem do registru, viz níže
sleep 2
iwconfig wlan0 key s:abcde
# WEP klíč; vynechte, pokud to nepoužíváte
sleep 2
ifconfig 192.168.1.1
# nastavíme kartě nějakou IP

Jistě jste si všimli poněkud krkolomného způsobu nastavení výkonu. Netvrdím, že je to jediný možný způsob, i Wireless Tools k tomu mají své nástroje, ale zkušenosti ukazují, že ne vždy fungují, nebo že je ovladač ignoruje. Další informace a zejména hodnotu XY naleznete zde: http://www.czfree.net/forum/showthread.php?threadid=2882. Zkoušejte postupně hodnoty od -22,5dBm až do 9.5dBm. K hodnotě, kdy spojení začne uspokojivě chodit, přidejte ještě tři řádky dolů navíc pro případ špatného počasí a uvedené číslo zapište jako XY. Nepřekračujte však limity ČTÚ. Pokud se vám spojení nedaří, pořiďte si lepší anténu, doporučuji plechové paraboly s plechovkou. Čím větší průměr, tím užší vyzařovací úhel, lepší příjem a menší šum.

Skript pro nastavení karty jako AP

iwconfig wlan0 mode master
# karta bude AP
sleep 2
# chvilku počkat, jinak to zlobí
iwconfig wlan0 essid "moje_essid"
# ESSID sítě
sleep 2
iwconfig wlan0 nick "muj_nick"
# NICK APčka
sleep 2
iwconfig wlan0 txpower -50 auto
# autoregulaci zapnout
sleep 2
iwconfig wlan0 txpower -50 fixed
# autoregulaci vypnout
sleep 2
iwpriv wlan0 writemif 62 XY
# nastavení výkonu zápisem do registru, viz výše
sleep 2
iwconfig wlan0 key s:abcde
# WEP klíč; vynechte, pokud to nepoužíváte
sleep 2
iwconfig wlan0 channel 8
# kanál 8
sleep 2
#filtr na MAC
iwpriv wlan0 maccmd 0
# vypne filtr
sleep 1
# chvilku počkat
iwpriv wlan0 maccmd 3
# smaže seznam
sleep 1
iwpriv wlan0 addmac 00:11:22:33:44:55
# MAC do seznamu
sleep 1
iwpriv wlan0 addmac 00:11:22:33:44:55
# další MAC do sezanmu
sleep 1
iwpriv wlan0 addmac 00:11:22:33:44:55
# další MAC do seznamu
sleep 1
iwpriw wlan0 maccmd 1
# jen MAC v seznamu jsou povelené
sleep 1
ifconfig 192.168.1.1
#nastavíme kartě nějakou IP

To je v podstatě vše, co se týče nastavení karty. Další věci, jako je routování, firewall, QoS atd. nejsou cílem tohoto článku.

Doplňující prográmky a utility

Wifimon

Wifimon je bashový skript, který ukazuje v konzoli sílu signálu v podobě teploměru. V případě karty v režimu klient ukazuje sílu signálu od AP a v režimu AP ukazuje sílu signálu od jednotlivých klientů i s jejich MAC a IP adresou. Pomocí přepínače -col lze výstup obarvit a pomocí -oneline zestručnit. Wifimon má i řadu dalších užitečných přepínačů. Více informací u autora: http://www.simandl.cz/stranky/linux/wifimon/wifimon.htm

wifimon

Primitivní stumbler

Stumbler je program, který vypisuje okolní APčka, která jsou v dosahu. Tenhle je určitě nejjednodušší, jaký existuje:

Spuštění skenování:

#!/bin/bash
# Petr Simandl
# stumbler s hostap
iface="wlan0"
iwconfig $iface mode master
prism2_param $iface other_ap_policy 2
prism2_param $iface ap_scan 1
watch -n 1 cat /proc/net/hostap/$iface/ap

Skenování ukončete Ctrl-C a ješťě spusťte následující skript pro navrácení karty do výchozího stavu. Skenování funguje zároveň s připojenými klienty, odpojí je pouze skript pro ukončení skenování, pravděpodobně kvůli "mode managed". Můžete zkusit "mode master", třeba to bude fungovat. Radši ale doporučuji kartu znovu nahodit do provozního stavu vaším skriptem pro WiFi kartu.

Ukončení skenování:

#!/bin/bash
# Petr Simandl
# vypnuti stumblingu
iface="wlan0"
prism2_param $iface other_ap_policy 0
prism2_param $iface ap_scan 0
iwconfig $iface mode managed
iwpriv $iface reset 1

stumbler

Z dalších programů je užitečný např. wavemon, což je Céčkový konzolový program. Zobrazuje několik teploměrů, více informací o kartě apod. Domovský web umřel, další informace najdete na www.simandl.cz. Dříve jsem ho používal, ale wifimon spolu s iwconfig wlan0 mi bohatě stačí.

Dále např. kismet, což je sofistikovaný nástroj pro skenování síťí a řadu dalších činností. Po několikadenní kompilaci (!) se mi ho ani nepodařilo rozchodit. Vzhledem k výše uvedeným skriptům jsem se o to ani dále nesnažil.

Dále např. WeWiMo je skript, který generuje WWW stránku se seznamem připojených klientů podobně jako wifimon. Ke stáhnutí zde: http://www.mobilnews.cz/honza/en_prog_linux_wewimo.php.

Související články

Stavíme bezdrátovou síť
Domácí síť
Linuxové DMZ
Soukromá síť

Odkazy a zdroje

CZFree.NET
simandl.cz
gavanet.arachne.cz

Další články z této rubriky

PowerDNS – přívětivý a jednoduchý DNS server
Bootování ze sítě: pxelinux a kořenový adresář na NFS
Těžký život Do Not Track
OpenAFS – servery
Architektura IPv6 – konfigurace adres a objevování sousedů (2)

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.