[SOLVED] Падает wifi

Доброе время суток!

Вчера решил таки настроить wifi с WPAPSK (раньше работал WEP).
Ноутбук compaq evo n600c
Pcmsia-карточка Dlink dwl-g650
Точка доступа Linksys WRT54GC.

Нашёл как http://linuxforum.ru/index.php?showtopic=36148

Всё сразу заработало.
Однако, хотелось чтобы при загрузке ноутбука происходило подключение.
Найти сходу как это сделать не получилось.
Тогда я написал свой скрипт net.ath0

#!/usr/bin/python
import os, sys, commands, string, time
cmd = sys.argv[1]
def wait_for_connect():
    i = 60
    while 1:
	out = commands.getoutput( 'wpa_cli -i ath0 status' )
	_temp = string.split( out, '\n' )
	search = _temp.count( 'wpa_state=COMPLETED' )
	if search != 0:
	    print 'Connected'
	    return 0
	else:
	    i -= 1
	    if i == 0:
		return 1
	    time.sleep(1)
def start():
    print 'Starting Wifi...'
    os.system( 'wpa_supplicant -iath0 -Dmadwifi -c /etc/wpa_supplicant/wpa_supplicant.conf 1>/dev/null 2>/dev/null &')
    result = wait_for_connect()
    if result == 1:
	print 'Closing by timeout - 60sec'
	stop()
	return
    os.system( 'dhcpcd -n ath0 1>/dev/null 2>/dev/null &' )
def stop():
    print 'Terminating connection'
    os.system( 'wpa_cli -i ath0 terminate' )
def restart():
    print 'Restarting Wifi'
    stop()
    start()
if cmd == '':
    exit
if cmd == 'start':
    start()
if cmd == 'stop':
    stop()
if cmd == 'restart':
    restart()

Корявенько, зато работает.
На это не успокоился и всё-таки нашёл решение:

modules=( "wpa_supplicant" )
wpa_supplicant_ath0="Dmadwifi"
wpa_timeout_ath0=60
dhcp_ath0="nosendhost"
config_myAP=("dhcp")
preferred_aps=("myAP")

Как полагается сделал net.ath0 симлинком на net.lo
Сделал /etc/init.d/net.ath0 start
Соединение появлось, интернет появился, обрадовался.
Но не тут то было.
Через 5-6 минут соеднение стабильно обрывается.
Приходится делать /etc/init.d/net.ath0 restart
замечу, что при запуске моим скриптом ничего не падает)

wpa_supplicant, wpa_cli и dhcpcd запускаются так

/sbin/wpa_supplicant Dmadwifi -c/etc/wpa_supplicant/wpa_supplicant.conf -B -iath0 -P/var/run/wpa_supplicant-ath0.pid
/bin/wpa_cli -a/etc/wpa_supplicant/wpa_cli.sh -p/var/run/wpa_supplicant -iath0 -P/var/run/wpa_cli-ath0.pid -B
/sbin/dhcpcd -m 2000 ath0

Если запустить руками, то всё работает нормально.

В чём может быть загвозда?

у меня

у меня нормально пашет
=)
без всяких извратов =)

внимательно почитайте /etc/conf.d/net.example там все есть =)
___________________________________________
Gentoo GNU/Linux 2.6.23 GCC 4.2.2 Dual Xeon
Working on Gentoo for iPAQ hx4700 :-)

Решение из

Решение из net.example всё время падает.

В логах только

В логах только это

Oct 28 20:16:24 [wpa_cli] interface ath0 CONNECTED
Oct 28 20:16:27 [dhcpcd] MAC address = 00:11:95:db:3d:ce
Oct 28 20:16:28 [dhcpcd] verified 192.168.250.163 address is not in use
Oct 28 20:16:28 [dhcpcd] your IP address = 192.168.250.163
Oct 28 20:23:18 [wpa_cli] interface ath0 DISCONNECTED
Oct 28 20:23:20 [dhcpcd] terminating on signal 15

При включённом -dd для wpa_supplicant

Покажи

Покажи wpa_supplicant.conf.

network={ ssid="myAP" psk=*

network={
ssid="myAP"
psk=********************************************************
key_mgmt=WPA-PSK
proto=RSN
pairwise=CCMP TKIP
group=CCMP TKIP
}

Вечером

Вечером посмотрю свой wpa_supplicant.conf. У меня примерно такая же карта. Все работает.
А в строке:
/sbin/wpa_supplicant Dmadwifi -c/etc/wpa_supplicant/wpa_supplicant.conf -B -iath0 -P/var/run/wpa_supplicant-ath0.pid
перед D нету минуса. Это опечатка или это действительно так?

Это не

Это не опечатка. Действительно так запускается.
Добавил минус. Тестирую, отключится или нет.

Скорее всего дело не в wpa_supplicant.conf, т.к. мой скрипт использует его же.

10 минут прошло,

10 минут прошло, я ещё в сети.

В догонку немного дополню вопрос

При запуске /etc/init.d/net.ath0 start
Службы стартуют, ожнако коннект не устанавливается.
Приходится делать -"- restart
Бывает приходится два три раза рестарт делать.
Это из-за чего может быть?

А слова

А слова какие-нибудь говорит? Там в конф. файле есть параметр время в течении которого он пытается установит связь, а потом уходит в фоновый режим. Посмотри через wpa_cli может коннект есть, а он просто не может получть IP.
Кстати, какая версия wpa_supplicant?

Версия 0.5.7 В

Версия 0.5.7
В конфге то есть параметр, отвечающий за таймаут, но в man'е ничего про это нет.
Впрочем, вроде всё наладилось...
Сделал несколько stop/start'ов - всё путём.
Спасибо за помощь.

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".