неділя, 17 серпня 2008 р.

Доповнення про Wireless Pentagram WU61RL, rt73 wireless драйвери і WPA2

Так сталося, що мій стаціонарний комп під’єднаний до нету за допомогою Pentagram USB Dongle. Дещо про підключення я вже писав тут, зараз трішки мушу доповнити.
Отже, Wireless Pentagram WU61RL працює під лінуксом на драйвері rt73, який можна стягнути з офіційного сайту http://www.ralinktech.com.tw. Однак мені так і не вдалося до цього часу заставити запрацювати ці драйвера (або помилки при компілюванні, або просто висне комп при запусканню модуля). Наступні мої спроби були з ndiswrapper, про які я вже писав, однак мені ніяк не вдалося запрацювати цей драйвер з WPA2 кодуванням, причому під WEP працювало все чудово. Звичайно, хочеться досконалості, то ж я продовжив експерименти, і зрештою мені вдалося знайти комбінації для вже скомпільованих в ядрі драйверів rt73usb та самостійно компільованих драйверів з http://rt2x00.serialmonkey.com/.
Так виглядає /etc/network/interfaces для модуля ядра rt73usb (в мене статичне ip!!!):

# WPA2 rt73usb
auto wlan0
iface wlan0 inet static
wpa-driver wext
wpa-ssid MYNETWORKNAME
wpa-ap-scan 1
wpa-proto RSN
wpa-pairwise CCMP
wpa-group CCMP
wpa-key-mgmt WPA-PSK
wpa-psk GENERATED_BY_wpa-password_KEY
address 192.168.0.2
netmask 255.255.255.128
gateway 192.168.0.1

А це для скомпільованого драйвера rt73:

# WPA2 rt73
auto wlan0
iface wlan0 inet static
address 192.168.0.2
netmask 255.255.255.128
gateway 192.168.0.1
pre-up ifconfig wlan0 up
pre-up iwconfig wlan0 mode managed
pre-up iwconfig wlan0 essid MYNETWORKNAME
pre-up iwpriv wlan0 set AuthMode=WPA2PSK
pre-up iwpriv wlan0 set EncrypType=AES
pre-up iwpriv wlan0 set SSID=MYNETWORKNAME
pre-up iwpriv wlan0 set WPAPSK=MY_WIRELESS_WPA2_PASSWORD
pre-up iwpriv wlan0 set SSID=MYNETWORKNAME

Таке я додав до файлу /etc/modprobe.d/blacklist :

# wireless
blacklist rt2500usb
blacklist rt2x00usb
blacklist rt2x00lib
blacklist rt73usb
#blacklist rt73
blacklist ndiswrapper

Як видно, зараз я працюю з самотужки скомпільованим драйвером rt73. Для rt73usb достатньо розкоментувати стрічку з rt73 та закометувати стрічку з rt73usb.

Корисний скрипт wirelesstest.rt73 для підтримки перевірки безпровідного зв’язку (ідею я потягнув на форумі Убунту), лежить в /usr/local/bin/:


#!/bin/bash
# FILENAME: /usr/local/bin/wirelesstest
# note the backticks in the next line
if ! `ping -c3 192.168.0.1 >/dev/null 2>&1` ; then

/etc/init.d/networking stop

echo "`date +%b" "%d" "%T` `hostname` wirelesstest: net stoped" >> /var/log/syslog

/sbin/modprobe -r rt73usb
/sbin/modprobe -r rt2x00usb
/sbin/modprobe -r rt2500usb
/sbin/modprobe -r rt2x00lib
/sbin/modprobe -r rt73

echo "`date +%b" "%d" "%T` `hostname` wirelesstest: rt73 unloaded" >> /var/log/syslog

lsmod | grep rt73 >> /var/log/syslog

echo "`date +%b" "%d" "%T` `hostname` wirelesstest: sleeping 5s" >> /var/log/syslog
sleep 5s

/sbin/modprobe rt73
echo "`date +%b" "%d" "%T` `hostname` wirelesstest: rt73 loaded" >> /var/log/syslog

#modprobe -r rt73usb
#modprobe -r rt2x00usb
#modprobe -r rt2500usb
#modprobe rt73usb

/etc/init.d/networking start
echo "`date +%b" "%d" "%T` `hostname` wirelesstest: net started" >> /var/log/syslog
fi
exit 0


і подібний wirelesstest.rt73usb для rt73usb:


#!/bin/bash
# FILENAME: /usr/local/bin/wirelesstest
# note the backticks in the next line
if ! `ping -c3 192.168.0.1 >/dev/null 2>&1` ; then

/etc/init.d/networking stop
echo "`date +%b" "%d" "%T` `hostname` wirelesstest: net stoped" >> /var/log/syslog

/sbin/modprobe -r rt73usb
/sbin/modprobe -r rt2x00usb
/sbin/modprobe -r rt2500usb
/sbin/modprobe -r rt2x00lib
/sbin/modprobe -r rt73

echo "`date +%b" "%d" "%T` `hostname` wirelesstest: rt73usb unloaded" >> /var/log/syslog

lsmod | grep rt >> /var/log/syslog

echo "`date +%b" "%d" "%T` `hostname` wirelesstest: sleeping 5s" >> /var/log/syslog
sleep 5s

/sbin/modprobe rt73usb
echo "`date +%b" "%d" "%T` `hostname` wirelesstest: rt73usb loaded" >> /var/log/syslog

echo "`date +%b" "%d" "%T` `hostname` wirelesstest: sleeping 2s" >> /var/log/syslog
sleep 2s

/etc/init.d/networking start
echo "`date +%b" "%d" "%T` `hostname` wirelesstest: net started" >> /var/log/syslog

fi
exit 0

Скрипт запустається через cron, для цього через sudo crontab -e додається лінійку

* * * * * /usr/local/bin/wirelesstest


Ця стрічка буде перевіряти зв’язок через кожну хвилину, а оця

*/4 * * * * /usr/local/bin/wirelesstest

через кожні 4 хвилини. Зрозуміло, треба замість wirelesstest вписати відповідно wirelesstest.rt73 або wirelesstest.rt73usb відповідно, зробити виконувальними файли /usr/local/bin/wirelesstest.rt73 та /usr/local/bin/wirelesstest.rt73usb, і перезапустити cron. Результат можна дивитися через tail -f /var/log/syslog .

Цікаво, що з ndiswrapper драйвером WICD показує, що мережа має кодування WEP, хоча насправді це WPA2. Аналогічно перевірялося з rutilt.

Google Analytics