abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 11:22 | Zajímavý projekt

    Společnost JetBrains uvolnila Mellum, tj. svůj velký jazykový model (LLM) pro vývojáře, jako open source. Mellum podporuje programovací jazyky Java, Kotlin, Python, Go, PHP, C, C++, C#, JavaScript, TypeScript, CSS, HTML, Rust a Ruby.

    Ladislav Hagara | Komentářů: 0
    dnes 09:11 | Bezpečnostní upozornění

    Vývojáři Kali Linuxu upozorňují na nový klíč pro podepisování balíčků. K původnímu klíči ztratili přístup.

    Ladislav Hagara | Komentářů: 0
    včera 20:00 | Komunita

    V březnu loňského roku přestal být Redis svobodný. Společnost Redis Labs jej přelicencovala z licence BSD na nesvobodné licence Redis Source Available License (RSALv2) a Server Side Public License (SSPLv1). Hned o pár dní později vznikly svobodné forky Redisu s názvy Valkey a Redict. Dnes bylo oznámeno, že Redis je opět svobodný. S nejnovější verzí 8 je k dispozici také pod licencí AGPLv3.

    Ladislav Hagara | Komentářů: 1
    včera 19:22 | IT novinky

    Oficiální ceny Raspberry Pi Compute Modulů 4 klesly o 5 dolarů (4 GB varianty), respektive o 10 dolarů (8 GB varianty).

    Ladislav Hagara | Komentářů: 0
    30.4. 22:33 | Nová verze

    Byla vydána beta verze openSUSE Leap 16. Ve výchozím nastavení s novým instalátorem Agama.

    Ladislav Hagara | Komentářů: 0
    30.4. 17:44 | Zajímavý článek

    Devadesátková hra Brány Skeldalu prošla portací a je dostupná na platformě Steam. Vyšel i parádní blog autora o portaci na moderní systémy a platformy včetně Linuxu.

    karkar | Komentářů: 0
    30.4. 12:11 | Humor

    Lidi dělají divné věci. Například spouští Linux v Excelu. Využít je emulátor RISC-V mini-rv32ima sestavený jako knihovna DLL, která je volaná z makra VBA (Visual Basic for Applications).

    Ladislav Hagara | Komentářů: 7
    30.4. 10:44 | IT novinky

    Revolut nabídne neomezený mobilní tarif za 12,50 eur (312 Kč). Aktuálně startuje ve Velké Británii a Německu.

    Ladislav Hagara | Komentářů: 32
    30.4. 09:55 | IT novinky

    Společnost Amazon miliardáře Jeffa Bezose vypustila na oběžnou dráhu první várku družic svého projektu Kuiper, který má z vesmíru poskytovat vysokorychlostní internetové připojení po celém světě a snažit se konkurovat nyní dominantnímu Starlinku nejbohatšího muže planety Elona Muska.

    Ladislav Hagara | Komentářů: 8
    30.4. 09:33 | IT novinky

    Poslední aktualizací začal model GPT-4o uživatelům příliš podlézat. OpenAI jej tak vrátila k předchozí verzi.

    Ladislav Hagara | Komentářů: 0
    Jaký filesystém primárně používáte?
     (58%)
     (1%)
     (9%)
     (22%)
     (4%)
     (1%)
     (2%)
     (0%)
     (1%)
     (3%)
    Celkem 501 hlasů
     Komentářů: 19, poslední 30.4. 11:32
    Rozcestník

    krutý boj s madwifi

    8.9.2007 16:45 | Přečteno: 3364× | Linux | poslední úprava: 8.9.2007 16:51

    Po delší době bych chtěl udělat upgrade softwaru (kernel, ovladače, programy), který používáme na routery v naší síti, ze začátku šlo vše skoro hladce, tedy když nepočítám to, že některé volby v jádře nedovolily systému nastartovat například ve VMware, nebo ve VirtualBoxu (ten chodil až se zapnutým SMP a pamětí nastavenou maximálně na 4GB, 64GB mu dělalo obrovský problém).

    Po cca dvou dnech jsem nasadil celý systém do ostrého provozu, ovšem nestačil jsem se divit, vypadával mi jeden kernel panic za druhým a ve virtuálních strojích se nic takového nedělo, zkusil jsem tedy nasadit starší jádro (včetně ovladačů) a vše opět fungovalo normálně.

    Hned ze začátku mi bylo jasné, že problém bude někde v madwifi ovladačích, které si s každou novou verzí připraví novou chuťovku v podobě kernel panicu za speciálních nikým nedokumentovaných okolností, ovšem že tyto okolnosti najdu 2 v aktuální stabilní verzi a 3 v trunk verzi jsem tedy z počátku opravdu netušil.

    Protože mi kamarád, který má obchod na prodej PC dovezl dvě hračky, které jsem si objednal přímo na testování, tak jsem dlouho nelenil, obě PC jsem složil na stole a začal jsem simulovat některé normální situace.

    Nejprve jsem použil aktuální nejnovější stable ovladač 0.9.3.2, hned po prvním staru jsem ale zjistil, že při nahození v režimu master (ap) je to jistý kernel-panic. Zkusil jsem tedy starší verzi 0.9.3 o které jsem věděl že chodila dobře, musel jsem najít patch, díky kterému jí zkompiluji s kernelem 2.6.22.5, poté jsem to zkusil znovu a tentokrát opravdu vše fungovalo normálně, až na jednu maličkost o té ale později.

    Začal jsem tedy pátrat který patch způsobil takto závažné problémy, po cca 14 kompilacích jsem zjistil, že tento problém způsobuje patch, který měl vyřešit ticket 1388. Po jeho odstranění ve verzi 0.9.3.2 vše šlapalo jako hodinky. Až na jednu maličkost.

    Po delším testování jsem našel další jistý kernel panic, ne tak snadno reprodukovatelný, ale přesto velmi častý. Začal jsem nejdřív simulovat různé situace, kdy se tak děje a kdy ne, přišel jsem na to, že se tak stává hlavně pokud používám AP v režimu WDS a klient v režimu WDS se nově připojí, nebo změní rychlost, ne vždy, ale třeba každé 3 připojení. Tento bug se projevuje jak ve verzi 0.9.3, tak ve verzi 0.9.3.2 a existuje i ticket 1516, který ho asi popisuje. Pokud tedy znáte nějaké AP s madwifi ve WDS režimu a chcete mu způsobit ošklivý kernel panic, nic vám v tom nezabrání :)

    Zkusil jsem tedy nejnovější trunk verzi madwifi ovladače, nejprve však DFS, která trpěla ještě větší nestabilitou, než původní verze 0.9.3.2. Kernel panic při nahození karty v režimu AP byl naprosto běžný i po odstranění výše zmíněného patche, tak se při větších přenosech stávalo, že DFS verze detekovala radar naprosto chybně (u mě doma a vždy na stejném kanále, na jakém se vysílalo) při velké zátěži, po této detekci se spojení na daném kanále přerušilo. Hledat chyby se mi už opravdu nechtělo, takže jsem to vzdal a přešel na trunk verzi.

    Trunk verz 2702, s touto verzí se mi zaseknout kernel sice nepodařilo, podotýkám že až po odstranění patche z ticketu 1388, jinak padala hned po startu karty, respektive už také podařilo, ale nejedná se o běžnou situaci (přepínání xr režimu pře iwpriv), ale nedařilo se mi navázat spojení, takže data neprotékala.

    Podíval jsem se tedy do výpisu jaké patche v poslední době šly do trunk verze, hned ten poslední byl dost divný, takže jsem zkusil předposlední verzi a hurá, už žádné časté zasekávání jádra, už žádné další libovolné restarty, po odstranění patche z ticketu 1388 a jedné drobné úpravě mohu verzi 2695 prohlásit za opravdu stabilní (relativně vzato).

    Už zbýval jen jediný problém, po instalaci aktuální verze jsem zjistil, že přenosová rychlost poklesla o cca 35%, z původních 4,2MB/s jedním směrem na 3,3MB/s, hledal jsem co se změnilo, nakonec jsem našel že to dělá asi aktivní doth režim, stačil tedy příkaz iwpriv ath0 doth 0 a už to zase jede krásné 4MB/s.

    Co z tohoto zápisu plyne, že vývojáři ovladačů jsou zase jen lidi, někteří horší, někteří lepší a že podobnou zkušenost nikomu z vás nepřeji.

    PS: O problému "udev v Debianu vs madwifi" už raději ani psát nebudu, už takhle je to ho opravdu dost.

    Přikládám obrázky a ukázkový skript, který používám pro nahození atheros karet, jednotlivé parametry si určitě doplníte:
    	dev=ath"`echo $name | perl -ne 'print $1 if (/ath([0-9])/);'`"
    	if [ $dev = "ath" ]; then
    	    echo "Wrong file name, please rename file to format *athX*"
    	    exit 1
    	fi
    	# Nastaveni karet
    	. "$1"
    	echo -n "Starting $dev..."
    	# musime provest slozitou kontrolu na chybny udev v debianu, chyba se tyka jen madwifi!
    	if [ -e "/etc/udev/persistent-net-generator.rules" ]; then
    	    while read LINE; do
    	        if [ "`echo \"$LINE\" | cut -c 1`" != "#" ]; then
    		    if [ "`echo \"$LINE\" | grep -i ath | grep \"*\"`" != "" ]; then
    		        if [ "`echo \"$LINE\" | grep \"persistent_net_generator_end\"`" != "" ]; then
    			    if [ "`echo \"$LINE\" | grep 802`" == "" ]; then
    			        break
    			    fi
    			elif [ "`echo \"$LINE\" | grep KERNEL`" != "" ]; then
    			    pom1=true
    			fi
    		    fi
    		fi
    	    done < "/etc/udev/persistent-net-generator.rules"
    	    if [ $pom1 ]; then
    	        echo "Soubor /etc/udev/persistent-net-generator.rules je chybny!"
    	        echo "Pro spravnou funkci madwifi ovladcu bude soubor upraven!"
    	        rm -f /tmp/persistent-net-generator.rules
    		while read LINE2; do
    		    if [ "`echo \"$LINE2\" | cut -d, -f1`" == "NAME==\"?*\"" ]; then
    		        echo "$LINE2" >> /tmp/persistent-net-generator.rules
    		        break
    		    else
    			echo "$LINE2" >> /tmp/persistent-net-generator.rules
    		    fi 
    		done < "/etc/udev/persistent-net-generator.rules"
    		echo '' >> /tmp/persistent-net-generator.rules
    		echo '# ignore interfaces of the madwifi driver' >> /tmp/persistent-net-generator.rules
    		echo 'KERNEL=="ath*",                         GOTO="persistent_net_generator_end"' >> /tmp/persistent-net-generator.rules
    		while read LINE2; do
    		    if [ "`echo \"$LINE2\" | cut -d, -f1`" == "NAME==\"?*\"" ]; then
    		        pom2=true
    		    elif [ $pom2 ]; then
    		        echo "$LINE2" >> /tmp/persistent-net-generator.rules
    		    fi
    		done < "/etc/udev/persistent-net-generator.rules"
    		rm -f "/etc/udev/persistent-net-generator.rules"
    		if [ -e "/etc/udev/persistent-net-generator.rules" ]; then
    		    /etc/init.d/set_readonly stop
    		    mv "/tmp/persistent-net-generator.rules" "/etc/udev/persistent-net-generator.rules"
    		    /etc/init.d/set_readonly start
    		else
    		    mv "/tmp/persistent-net-generator.rules" "/etc/udev/persistent-net-generator.rules"
    		fi
    		echo > "/etc/udev/rules.d/z25_persistent-net.rules"
    	    fi
    	fi
    	# normalne pokracujeme dal
    	case $MODE in
    	    ap|master)
    	        MODE="ap"
    	        ;;
    	    sta|managed)
    		MODE="sta"
    		;;
    	    adhoc|ad-hoc)
    		MODE="adhoc"
    	        ;;
    	    *)
    		;;
    	esac
    	# madwifi si s kazdou novou verzi pripravi novou lahudku,
    	# takze tento skript muze zpusobit pad PC!
    	#
    	# nejprve musime overit jestli neni karta v nejakem bridgi
    	if [ "`brctl show | grep $dev`" != "" ]; then
    	    I="0"
    	    # danou kartu odpojime ze vsech bridgu
    	    while [ "$I" -lt "10" ]; do
    		brctl delif br$I $dev &>/dev/null
    		((I++))
    	    done
    	fi
    	# z interfaces zjistime, jestli nektera karta neni v bridgi
    	while read LINE; do
    	    if [ "`echo $LINE | awk '{print \$1}' | cut -c 1`" != "#" ]; then
    		# radek s bridge_ports je vzdy az po rozhrani
    	        if [ "`echo $LINE | grep \"bridge_ports\" | grep $dev`" != "" ]; then
    		    BR_DEV="$BDEV"
    		elif [ "`echo $LINE | awk '{print \$2}' | grep \"br\" | grep -Eo [[:digit:]]+`" != "" ]; then
    		    BDEV="`echo $LINE | awk '{print \$2}'`"
    		fi
    	    fi
    	done < /etc/network/interfaces
    	# vypneme predchozi rozhrani
    	$ifdown $dev &>/dev/null
    	$ifconfig $dev down &>/dev/null
    	$wlanconfig $dev destroy &>/dev/null
    	sleep 0.5
    	N=`echo $dev | cut -c4`
    	WIFI="`ls -1 /proc/sys/dev/ | grep wifi | sed -n \`expr 1 + $N\`p`"
    	$wlanconfig $dev create wlandev $WIFI wlanmode $MODE 1>/dev/null
    	sleep 0.5
    	if [ "`echo $CHANNEL | cut -d- -f1`" -gt 14 ] && [ "$W_MODE" != "0" ]; then
    	    $iwpriv $dev mode 1
    	else
    	    $iwpriv $dev mode $W_MODE
    	fi
    	# rezim turbo neni v CR povolen
    	if [ "$TURBO" == "1" ]; then
    	    $iwpriv $dev turbo 1
    	else
    	    $iwpriv $dev turbo 0
    	fi
    	# zlepsuje stabilitu ovladace
    	$iwpriv $dev xr 0
    	# zlepsuje stabilitu spojeni, tyka se asi jen 802,11g
    	$iwpriv $dev protmode 0
    	# zlepsuje rychlost spojeni, tim ze neskenujeme na pozadi
    	$iwpriv $dev bgscan 0
    	# specialni nastaveni zlepsujici rychlost o 100% pro madwifi spoj
    	if [ "$CONNECTION" == "madwifi" ]; then
    	    # atheros superA/G adaptive radio zlepsuje rychlost i stabilitu spojeni
    	    $iwpriv $dev ar 1
    	    # zlepsuje pruchod videa/audio a voip
    	    $iwpriv $dev wmm 1
    	    # rezim burst zlepsuje rychlost spoje
    	    $iwpriv $dev burst 1
    	    # fast frame zlepsuje rychlost spoje velmi znatelne
    	    $iwpriv $dev ff 1
    	else
    	    $iwpriv $dev ar 0
    	    $iwpriv $dev wmm 0
    	    $iwpriv $dev burst 0
    	    $iwpriv $dev ff 0
    	fi
    	# rezim doth extremne zhorsuje prenosove rychlosti, pro A je rozdil 3 vs 4 MB/s
    	# tento rezim je zapnut az v ovladacich madwifi-ng trunk, neni zapnuty ve stable vetvi
    	$iwpriv $dev doth 0
    	# wds rezim, pouziti hlavne pro bridge, dovolime bridge jen s ethernetem!
    	if [ "$WDS" == "1" ] || [ "$BR_DEV" != "" ]; then
    	    $iwpriv $dev wds 1
    	else
    	    $iwpriv $dev wds 0
    	fi
    	# essid
    	$iwconfig $dev essid $ESSID
    	# wep klic
    	$iwconfig $dev key $KEY
    	# rychlost
    	$iwconfig $dev rate $RATE
    	# nastaveni anteny na karte
    	if [ "$ANTENNA" == "1" ] || [ "$ANTENNA" == "" ]; then
    	    echo 0 > /proc/sys/dev/$WIFI/diversity
    	    echo 1 > /proc/sys/dev/$WIFI/txantenna
    	    echo 1 > /proc/sys/dev/$WIFI/rxantenna
    	elif [ "$ANTENNA" == "2" ]; then
    	    echo 0 > /proc/sys/dev/$WIFI/diversity
    	    echo 2 > /proc/sys/dev/$WIFI/txantenna
    	    echo 2 > /proc/sys/dev/$WIFI/rxantenna
    	fi
    	# nastaveni ack, cts a slottime pro vzdalenejsi spoje
    	if [ "`echo $DISTANCE | grep km`" != "" ]; then
    	    DISTANCE="`echo $DISTANCE | cut -d \"k\" -f1`"
    	    DISTANCE="`expr $DISTANCE \* 1000`"
    	elif [ "`echo $DISTANCE | grep m`" != "" ]; then
    	    DISTANCE="`echo $DISTANCE | cut -d \"m\" -f1`"
    	fi
    	SLOTTIME="`expr \( 9 + \( $DISTANCE / 300 \) \) + \( \( $DISTANCE % 300 \)  \> \( 1 / 2 \) \)`"
    	ACKTIMEOUT="`expr $SLOTTIME \* 2 + 3`"
    	CTSTIMEOUT="`expr $SLOTTIME \* 2 + 3`"
    	echo $SLOTTIME > /proc/sys/dev/$WIFI/slottime
    	echo $ACKTIMEOUT > /proc/sys/dev/$WIFI/acktimeout
    	echo $CTSTIMEOUT > /proc/sys/dev/$WIFI/ctstimeout
    	# nastaveni kanalu
    	if [ "`echo \"$CHANNEL\" | grep -`" == "" ]; then
    	    # pro karty v rezimu sta nenastavujeme kanal
    	    if [ "$MODE" != "sta" ]; then
    	        $iwconfig $dev channel $CHANNEL
    	    fi
    	else
    	    $athchans -i $dev "$CHANNEL"
    	fi
    	if [ "$BR_DEV" != "" ]; then
    	    # rozhrani pro bridge uz existuje, takze jen pridame kartu
    	    if [ "`brctl show | grep $BR_DEV`" != "" ]; then
    		brctl addif $BR_DEV $dev
    	    fi
    	    # podstatne zrychli start bridge
    	    brctl setfd $BR_DEV 0
    	    $ifconfig $dev up
    	else
    	    $ifconfig $dev up
    	    if [ "`cat /etc/network/interfaces | grep $dev`" != "" ]; then
    		$ifup $dev
    	    fi
    	fi
    	# vykon lze nastavit az po nahozeni karty
    	$iwconfig $dev txpower $TXPOWER # Velmi problematicke nastaveni
    	echo "done."
    
           

    Hodnocení: 100 %

            špatnédobré        

    Obrázky

    krutý boj s madwifi, obrázek 1 krutý boj s madwifi, obrázek 2 krutý boj s madwifi, obrázek 3

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    Komentáře

    Vložit další komentář

    8.9.2007 16:53 Smrádě
    Rozbalit Rozbalit vše off topic
    Proč si neposuneš ten stůl dál od zdi a monitor nedáš naopak ke zdi blíž (do rohu stolu)? Vždyť takhle se nedá pracovat :-)
    8.9.2007 16:56 Thunder.m | skóre: 35 | blog: e17
    Rozbalit Rozbalit vše Re: off topic
    Na tom stole jen mám ta zařízení, všechno ostatní dělám z druhé části pokoje z jiného PC přes SSH, k tomu stolu se jen zajdu podívat když vypadne kernel panic (takže celkem často) a notebook je na pojízdné židli, ten je normálně jinde, jen jsem ho tam přesunul, aby to vypadalo trochu líp :)

    PS: Kdo jako první zjistí jak ty stroje startují OS, dostane bombón :)
    8.9.2007 17:58 D-Evil | skóre: 25 | Praha
    Rozbalit Rozbalit vše Re: off topic
    Tipuju síť, ale chtěl bych čokoládu, pokud jsem se trefil. Ideálně oříškovou :-)
    8.9.2007 17:58 miso | skóre: 36 | blog: iSCSI_initiator_howto | Praha
    Rozbalit Rozbalit vše Re: off topic
    PXE + iSCSI?
    Project Satan infects Calculon with Werecar virus
    8.9.2007 18:07 Thunder.m | skóre: 35 | blog: e17
    Rozbalit Rozbalit vše Re: off topic
    PXE + ramdisk, celý operační systém je v cca 150MB velkém obrazu, který se stáhne přes tftp po síti...
    8.9.2007 20:39 Zdeněk Štěpánek | skóre: 57 | blog: uz_mam_taky_blog | varnsdorf
    Rozbalit Rozbalit vše Re: krutý boj s madwifi
    No ja ted mel taky velice "zabavnou" prihodu s madwifi. V uvozovkach proto, ze se stala kolegovi na 80m vysokem kominu.

    Zacalo to nejakym bleskem, komp umrel. Kolega tam vylezl, vytahal co se dalo a zjistil ze je vadnej PCI riser (obsahuje i IDE a ATX konektor), tak ho vymenil a zacal strkat karty. Disk prezil, bootoval. Vse slo az na atheros, jak ho tam dal, komp byl do minuty mrtvy. Karta predtim v tom AP jela a stejne tak i ten disk. Do minuty mrtvy. Zkusil vymenit kartu za jinou, zase do minuty mrtvy. OK, zkusime jiny disk (CF) se slackwarem, opet do minuty mrtvo. Jeden disk, druhej disk, jedna karta, druha karta, vzdy umrel. Zkusili jsme jeste druhou zakladni desku opet s ruznymy kombinacemi. Vzdy do minuty mrtvo.

    Zajel jsem pro komp dell (predtim to byly 2 stejne compaqy), v nem sice botnul jen puvodni disk co prezil bourku, ale opet s jakoukoliv kartou do minuty mrtvo.

    Druha karta byla zcela nova, ale jak se rika, to jeste neznamena ze je v poradku :-(

    Takze 5g ted nejede, nastesti jsme se spolupracojici siti vymysleli zalozni reseni.

    Zitra odpoledne se budu snazit slozit komp ve kterym jedna z tech karet neumre.

    Zdenek
    www.pirati.cz - s piráty do parlamentu i jinam www.gavanet.org - czfree varnsdorf
    8.9.2007 21:27 janskyj | skóre: 11 | blog: linuxuv_blog
    Rozbalit Rozbalit vše Re: krutý boj s madwifi
    Ty parametry na tunning spojení pomocí iwpriv mě upoutali. Sice jsem přečetl madwifi-user-guide, ale nebylo tam napsaný, co mam zapnout pro zvýšení rychlosti ;-) Kde jste k nim získal tip, že je máte zapnout? Zítra je mám v plánu vyzkoušet, ale podle dokumentace je většina z nich stejně v default zapnutá (pokud to hw podporuje).
    Krystaly, polovodiče, všechno směšné. Co tak konzole z digitronů, to by bylo něco pro pravé muže. :)
    8.9.2007 22:36 Thunder.m | skóre: 35 | blog: e17
    Rozbalit Rozbalit vše Re: krutý boj s madwifi
    Zkušeností (měřením), podle toho co se píše v některých ticketech na webu a také ve wiki. Ano, většina parametrů je předem zapnutá, ale pozor, pokud například spoj nepracuje proti madwifi, tak to může být ve výsledku mnohem horší (parametr CONNECTION v tom skriptu). Myslím, že pokud používáte madwifi-ng trunk, tak pomůže asi jen vypnutí doth, ale hned je to o 35% rychlejší spoj :)

    Založit nové vláknoNahoru

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.