Návod na zprovoznění wifi karty Zcomax XI-626 pod Linuxem, pod jádrem 2.6.4.
31.3.2004 13:00 | DoubleR | přečteno 18431×
Karta Zcomax XI-626 patří k nejoblíbenějším. Používá čipset PRISM 2.5, umožňující regulaci výkonu i citlivosti a je cenově přístupná. Je určena pro běžnou sběrnici PCI a dodává se s vnější anténou.
První zkoušky, které jsem prováděl s původním jádrem 2.4.22 (z distribuce Slackware 9.1), nedopadly nejlépe. Pokusil jsem se kartu použít tak, jak jsem ji koupil. Dodávaná anténa je v podstatě modifikovaný zářič typu J se ziskem kolem 1 dBi a karta byla vybavena zastaralým firmware verze 1.3.6. Počítač, ve kterém je instalována, je umístěn velmi nevhodně vzhledem k místu připojení - anténa je v podstatě odstíněná a užitečný signál se pohybuje na úrovních kolem -85 dBm. Připojení tedy bylo nespolehlivé s častými resety, i když překlenutá vzdálenost je pouze několik metrů, mezi patry v domě. Výsledky jsem srovnával s USB kartou Micronic SP907BB s čipsetem Atmel AT76C503 s integrovanou anténou. Tato karta má citlivost "vyštvanou" na maximum a pokud se podaří najít místo s přijatelnou úrovní signálu, připojení funguje naprosto spolehlivě.
Výsledky s XI-626 mě natolik zklamaly, že jsem uvažoval o jejím vrácení,
nejdřív jsem se však chtěl ujistit, že nikde nedělám chybu. V několika
mailing listech jsem se dozvěděl, že mezi jednotlivými kartami mohou
být značné rozdíly, zejména v citlivosti. Karta sice patří k nejvýkonnějším
z hlediska výkonu vysílače (dodává až +18 dBm), ale její možnosti regulace
je možné plně využít pouze s vhodným ovladačem až po upgrade firmware.
Ovladače jsou v podstatě dva - wlan-ng
a hostap
,
nepočítáme-li ovladač karet Orinoco (mají také čipset PRISM), který je
součástí jader (přinejmenším verze 2.6.x). Po přečtení řady recenzí jsem
se rozhodl pro ovladač hostap
[3] a upgrade firmware na verzi 1.5.6. (poslední verzí
firmware je 1.8.0, ale recenze doporučují verzi 1.5.6). O volbě ovladače
nakonec rozhodla především skutečnost, že wlan-ng
plně
nepodporuje Wireless Extensions, na které jsem chtěl navázat měření kvality
signálu při pozdějších pokusech. Zkoušel jsem opatchovaný ovladač
hostap_cvs_030220_200_01.tar.gz
ze stránek Petra Simandla [2], který již má ošetřen problém s častými resety karty při slabém
kolísavém signálu. Upgrade firmware jsem provedl z Windows pomocí programu
WinUpdate-0-5-1-0.exe, což mi připadalo snadnější, než upgrade z Linuxu, jak
je popsáno na stránkách Jun Suna [1] nebo z DOS (FreeDOS), popsaný Petrem Simandlem
[2].
Další nutností jsou Wireless Extensions. Obsahují utility
iwconfig
, iwspy
a iwpriv
a měly
by být součástí všech distribucí, založených na jádře 2.0.30 a vyšším.
Ve svém Slackware už jsem je měl, proto jsem se jimi zvlášť nezabýval.
Poslední verzí je 2.6.
Ve Slackware 9.1. jsem kartu zprovoznil pomocí konfiguračního souboru
/etc/rc.d/rc.inet1.conf
NETCARD="wlan0" IPADDR="192.168.1.2" NETMASK="255.255.255.0" NETWORK="192.168.1.0"make xconfi BROADCAST="192.168.1.255" GATEWAY="192.168.1.1" modprobe hostap_pci iwconfig ${NETCARD} mode managed ifconfig ${NETCARD} inet ${IPADDR} broadcast ${BROADCAST} netmask ${NETMASK} iwconfig ${NETCARD} essid "mojesit" #iwconfig ${NETCARD} ap off iwconfig ${NETCARD} key open 9999999999 [1] iwconfig ${NETCARD} sens 3 HOSTNAME=`cat /etc/HOSTNAME` # Attach the loopback device. /sbin/ifconfig lo 127.0.0.1 /sbin/route add -net 127.0.0.0 netmask 255.0.0.0 lo # Set up your IP routing table. /sbin/route add -net ${NETWORK} netmask ${NETMASK} ${NETCARD} if [ ! "$GATEWAY" = "" ]; then /sbin/route add default gw ${GATEWAY} netmask 0.0.0.0 metric 1 fi
V jiných distribucích může být uvedená konfigurace součástí
/etc/rc.d/rc.inet1
, nebo v tomto souboru vytvoříme odkaz na
/etc/rc.d/rc.inet1.conf
a pak si nezapomeneme vytvořit
příslušný soubor, kde budou konfigurační data bezdrátového připojení
pěkně pohromadě. Konfigurační soubor je bohatě komentovaný, snad tedy
nepotřebuje vysvětlení. Problém může být s klíčem WEP, proto je vždy nutné
znát nejen klíč, ale i jeho typ.
Ještě nesmíme zapomenout vytvořit v adresáři /etc/
soubor
HOSTNAME
, kde bude název sítě a pracovní skupiny, do které
je počítač připojen. Já v něm mám jediný řádek
MARTIN.SKUPINA
(počítač se jmenuje MARTIN a je součástí sítě, nazvané SKUPINA).
Nyní tedy byla karta zprovozněna ve Slackware 9.1. s původním jádrem 2.4.22. Výsledky předčily očekávání, spojení bylo spolehlivé s pingy pod 5 ms i při úrovni signálu -82 dBm s šumovým pozadím -94 dBm. Při dlouhodobém sledování se některý paket vrátil v čase kolem 30 ms, ale při takto mizerném poměru signál/šum jsem tento výsledek považoval za velmi dobrý. Není pochyb, že po instalaci lepší antény na vhodnějším místě bude spojení vynikající. Proto připravuji anténu BiQuad s límcovým reflektorem, jejíž obrazec by měl být vyleptán z plošných spojů, což by mělo umožnit reprodukovatelnou konstrukci, dosažitelnou komukoliv.
Pro lepší běh některých svých aplikací, náročných na časování, jsem však
potřeboval preemptivní jádro. Proto jsem se rozhodl k přechodu na
nejčerstvější verzi, kterou v té době byla 2.6.4. Stáhnul jsem si tedy
zdrojové kódy jádra z [7], ale měl jsem obavu z možných hardwarových problémů, jak tomu často bývá.
Výchozí konfiguraci jádra je vždy nutné upravit, jinak jádro nemusí buď
vůbec fungovat, nebo vyrobíte "macíka", který bude mít skoro 2MB. Vždy je
tedy nutné přesně si zmapovat vlastní hardware a v jádře zapnout jen
to nejnutnější, ovladače pokud možno kompilovat jako moduly. Konfiguraci
můžeme provést pomocí několika nástrojů včetně grafického make
xconfig
, ale já těmhle udělátkům příliš nevěřím, což se mi
mnohokrát vyplatilo. Nesmíme také zapomenout na podporu bezdrátových
karet, konfigurační soubor použitý pro kompilaci musí obsahovat
CONFIG_NET_WIRELESS=y
Při prvním pokusu jsem zapnul podporu WiFi karet s čipsetem PRISM, což mělo
za důsledek instalaci modulu s ovladačem karet Orinoco. XI-626 sice
fungovala, ale nedařilo se nic nastavit tak, jak jsem potřeboval - bylo jasné,
že ovladač Orinoco není pro XI-626 to pravé. hostap
ne a ne se chytit.
Jádro bylo velké, trochu zlobil zvuk, proto jsem se rozhodl k nové kompilaci.
Nad konfigurací jsem strávil skoro hodinu, ale vyplatilo se to - nové jádro
je sice o 100kB větší, než původní 2.4.22, ale vesele naskočilo
a dělalo všechno tak, jak jsem očekával. Proto doporučuji před vlastní
kompilací zkontrolovat soubor .config
.
Kompilace jádra řady 2.6.x je jednodušší, než tomu bylo u jader dřívějších verzí. Jádro je třeba nakopírovat do adresáře Po nakonfigurování stačí zadat
make bzImage && make modules && make modules_install
a po přibližně 20 minutách máte jádro i s moduly. Výsledné jádro
bzImage
najdeme v adresáři
/usr/src/linux-2.6.4/arch/i386/boot
a nakopírujeme ho do adresáře
/boot
. Do téhož adresáře je třeba umístit i
System.map
. Najdeme ho v /usr/src/linux-2.6.4
.
Je vhodné ho zkopírovat pod jiným názvem, např. System.map-2.6.4
a vytvořit symlink na System.map
ln -s System.map-2.6.4 System.map
Podobně naložíme i se souborem .config
, který je rovněž
v adresáři /usr/src/linux-2.6.4
a měl by být v adresáři
/boot
.
Je však třeba upozornit na několik úskalí:
hostap_cvs_030220_200_01.tar.gz
nefunguje, je nutné použít
nejnovější stabilní verzi ovladače hostap-driver-0.2.0.tar.gz
[3]. Měl jsem trochu
obavu, protože uvnitř tarballu jsem našel množství záplat pro jádra řady
2.6.x, ale nakonec se ukázalo, že patchování nebude nutné.
Hostap-driver-0.2.0 kartu pojmenuje jako wifi0
a nedařilo
se zprovoznit síť s tímto zařízením, systém tvrdošíjně trval na
wlan0
. Proto je nutné se přesvědčit, jak systém kartu vidí.
Byl jsem líný hrát si na Sherlocka Holmese a stopovat, proč tomu tak je.
Zkusil jsem
iwconfig wlan0
a ejhle, zjistil jsem, že
IEEE 802.11b ESSID:"mojesit" Mode:Managed Frequency:2.442GHz Access Point: 00:03:9D:4F:3B:82 Bit Rate:2Mb/s Sensitivity=3/0 Retry min limit:8 RTS thr:off Fragment thr:off Encryption key:9999-9999-99 Security mode:open Power Management:off Link Quality:14/0 Signal level:-80 dBm Noise level:-94 dBm Rx invalid nwid:0 Rx invalid crypt:3 Rx invalid frag:0 Tx excessive retries:14 Invalid misc:3368 Missed beacon:0
a bylo vyhráno! I když jsou aktuální parametry mizerné, systém vidí nejen
wifi0
, ale i wlan0
. Síť se skutečně rozběhla
a funguje k plné spokojenosti.
Kwifimanager, který jsem původně používal ke sledování síly signálu,
fungoval jen částečně. Konfigurační část byla vidět v Ovládacím centru KDE,
ale to jsem nepotřeboval, nijak si totiž nelibuji v různých grafických
udělátkách, kde si občas připadám jako ve Windows - něco to dělá, ale
není vidět co a vysledovat případné škody je práce pro detektiva.
Applet měření s grafem vidět nebyl a snaha o jeho spuštění končila chybou.
Proto jsem Kwifimanager odinstaloval. Měření nakonec k plné spokojenosti
zastala Gtk systémová monitorovací utilita Gkrellm [8] s pluginem
gkrellmwireless-2.0.3
, který lze stáhnout na [9].
Asi nejvíc informací o WiFi a Linuxu najdete na stránkách Jeana Tourrilhese [5]. Samozřejmě se nezapomeňte podívat i na stránky Petra Simandla, zaměřené na XI-626. Doporučuji obojí prostudovat, než se do čehokoliv pustíte.
Odkazy:
[1] http://linux.junsun.net/intersil-prism/
[2] http://www.simandl.cz/stranky/linux/xi626/xi626.htm
[3] http://hostap.epitest.fi/
[4] ftp://ftp.linux-wlan.org/pub/linux-wlan-ng/
[5] http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/
[6] http://unixpunx.org/txt/exploits_archive/packetstorm/wireless/
[7] http://www.kernel.org/
[8] http://web.wt.net/~billw/gkrellm/gkrellm.html
[9] http://gkrellm.luon.net/files/gkrellmwireless-2.0.3.tar.gz