WiFi Zcomax XI-626 na jádru 2.6.4

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.

wifi sitova karta xi-626
Obr. 1. PCI karta Zcomax XI-626 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

Online verze článku: http://www.linuxsoft.cz/article.php?id_article=90