1.無線LAN子機 WLI-UC-GN
BUFFALO WLI-UC-GN、このWLI-UC-GNは、 obs600でも使用していたもの (記事2011年6月19日 obs600-10 BUFFALOアダブタ) で、やや安定感が低く時々はドライバをUnload/Loadしながらで、やがて使わなくなっています。linux-2.6.36のときから、linux-3.2.40にアップグレードした今回のドライバではどうでしょうか。 WLI-UC-GN抜き差ししやすいように、短めの延長ケーブルを使っている。ドライバのビルドせずともWLI-UC-GNアダプタを刺すだけで認識した。
% tail -f /var/log/syslog Jan 6 11:11:05 obsa7 kernel: usb 1-1.2: new high-speed USB device number 6 using orion-ehci Jan 6 11:11:05 obsa7 kernel: usb 1-1.2: New USB device found, idVendor=0411, idProduct=015d Jan 6 11:11:05 obsa7 kernel: usb 1-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3 Jan 6 11:11:05 obsa7 kernel: usb 1-1.2: Product: 802.11 n WLAN Jan 6 11:11:05 obsa7 kernel: usb 1-1.2: Manufacturer: Ralink Jan 6 11:11:05 obsa7 kernel: usb 1-1.2: SerialNumber: 1.0 Jan 6 11:11:05 obsa7 kernel: usb 1-1.2: reset high-speed USB device number 6 using orion-ehci Jan 6 11:11:05 obsa7 kernel: ieee80211 phy18: Selected rate control algorithm 'minstrel_ht' Jan 6 11:11:05 obsa7 kernel: Registered led device: rt2800usb-phy18::radio Jan 6 11:11:05 obsa7 kernel: Registered led device: rt2800usb-phy18::assoc Jan 6 11:11:05 obsa7 kernel: Registered led device: rt2800usb-phy18::quality Jan 6 11:11:05 obsa7 kernel: usbcore: registered new interface driver rt2800usb # lsmod Module Size Used by rt2800usb 12586 0 rt2800lib 39792 1 rt2800usb crc_ccitt 1045 1 rt2800lib rt2x00usb 7293 1 rt2800usb rt2x00lib 29900 3 rt2x00usb,rt2800lib,rt2800usbまず始めは、rtl8192cu な GW-USValue-EZを試みたがうまく設定できなかった。
この rt2800usb はすんなりと動いた。
% uname -a #OBSA7標準のこのバージョンを使用
Linux obsa7 3.2.40 #1 Mon Oct 21 14:10:25 JST 2013 armv5tel GNU/Linux
2.ralinkファームウェアインストール
# aptitude install firmware-ralink The following NEW packages will be installed: firmware-ralink 0 packages upgraded, 1 newly installed, 0 to remove and 2 not upgraded. Need to get 21.4 kB of archives. After unpacking 96.3 kB will be used. Get: 1 http://ftp.plathome.co.jp/pub/debian/ wheezy/non-free firmware-ralink all 0.36+wheezy.1 [21.4 kB] Fetched 21.4 kB in 0s (82.6 kB/s) Selecting previously unselected package firmware-ralink. (Reading database ... 33634 files and directories currently installed.) Unpacking firmware-ralink (from .../firmware-ralink_0.36+wheezy.1_all.deb) ... Setting up firmware-ralink (0.36+wheezy.1) ... # rt2*.bin rt3*.bin rt73.bin がインストールされる # ls /lib/firmware/ RTL8192E mts_cdma.fw rt2661.bin rt3090.bin ti_5052.fw RTL8192SU mts_edge.fw rt2860.bin rt73.bin whiteheat.fw edgeport mts_gsm.fw rt2870.bin rtl_nic whiteheat_loader.fw kaweth rt2561.bin rt3070.bin rtlwifi keyspan_pda rt2561s.bin rt3071.bin ti_3410.fw
3.hostapdのインストール
% wget http://hostap.epitest.fi/releases/hostapd-2.0.tar.gz % tar zxf hostapd-2.0.tar.gz % cd hostapd-2.0/hostapd % cp defconfig .config % echo CONFIG_LIBNL32=y >> .config % diff defconfig .config #CONFIG_IEEE80211N=yも変更した 139c139 < #CONFIG_IEEE80211N=y --- > CONFIG_IEEE80211N=y 269a270 > CONFIG_LIBNL32=y % sudo apt-get libnl-genl-3-dev libssl-dev % make # make install # /usr/local/bin/hostapd -v hostapd v2.0 User space daemon for IEEE 802.11 AP management, IEEE 802.1X/WPA/WPA2/EAP/RADIUS Authenticator Copyright (c) 2002-2012, Jouni Malinenand contributors #hostapd.confはとりあえず動いた状態でまだ吟味できていない # cat /etc/hostapd/hostapd.conf interface=wlan0 bridge=br0 driver=nl80211 country_code=JP ieee80211d=1 ssid=MYSSID channel=6 hw_mode=g wpa=2 wpa_passphrase=MYPASSPHRASE wpa_key_mgmt=WPA-PSK rsn_pairwise=CCMP ieee80211n=1 wmm_enabled=1 #
4.hostapdの実行
# /usr/local/bin/hostapd /etc/hostapd/hostapd.conf
Configuration file: /etc/hostapd/hostapd.conf
rfkill: Cannot open RFKILL control device
Using interface wlan0 with hwaddr 4c:e6:76:XX:XX:XX and ssid "MYSSID"
^C 起動を確認して中断し、backgroundの-Bをつけて起動。
# /usr/local/bin/hostapd -B /etc/hostapd/hostapd.conf
# iwconfig 2>&1|egrep -v "^$|no wireless"
wlan0 IEEE 802.11bgn Mode:Master Frequency:2.437 GHz Tx-Power=20 dBm
Retry long limit:7 RTS thr:off Fragment thr:off
Power Management:on
mon.wlan0 IEEE 802.11bgn Mode:Monitor Tx-Power=20 dBm
Retry long limit:7 RTS thr:off Fragment thr:off
Power Management:on
# ifconfig wlan0
wlan0 Link encap:Ethernet HWaddr 4c:e6:76:XX:XX:XX
inet6 addr: fe80::4ee6:76ff:XXX:YYYY/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:36414 errors:0 dropped:0 overruns:0 frame:0
TX packets:48406 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:4066244 (3.8 MiB) TX bytes:39695195 (37.8 MiB)
# tail -f /var/log/syslog
Jan 6 11:44:59 obsa7 kernel: device wlan0 entered promiscuous mode
Jan 6 11:44:59 obsa7 kernel: br0: port 2(wlan0) entering forwarding state
Jan 6 11:44:59 obsa7 kernel: br0: port 2(wlan0) entering forwarding state
Jan 6 11:45:02 obsa7 ntpd[3148]: Listen normally on 32 wlan0 fe80::4ee6:76ff:XXX:YYYY UDP 123
Jan 6 11:45:02 obsa7 ntpd[3148]: peers refreshed
Jan 6 11:45:10 obsa7 kernel: wlan0: no IPv6 routers present
Jan 6 11:45:14 obsa7 kernel: br0: port 2(wlan0) entering forwarding state
Jan 6 11:45:58 obsa7 hostapd: wlan0: STA 84:7a:88:XX:XX:XX IEEE 802.11: authenticated
Jan 6 11:45:58 obsa7 hostapd: wlan0: STA 84:7a:88:XX:XX:XX IEEE 802.11: associated (aid 1)
Jan 6 11:45:58 obsa7 hostapd: wlan0: STA 84:7a:88:XX:XX:XX RADIUS: starting accounting session 52CA18AB-00000000
Jan 6 11:45:58 obsa7 hostapd: wlan0: STA 84:7a:88:XX:XX:XX WPA: pairwise key handshake completed (RSN)
syslogにこのようなメッセージで"WPA: pairwise key handshake completed"がでてるとOK。
5.rt2800usbドライバのアンロード/ロード
別ドライバGW-USValue-EZなどrtl8192cuをテストするのにドライバのアンロード/ロードをするたびに、wlan0,wlan1,wlan2...とインターフェイス名が変わるのはおもしろくないので、wlan0固定で使えるように以下のようなスクリプトを書いて回避するようにした。インターフェイス名はこのファイルが影響するもよう
# tail -3 /etc/udev/rules.d/70-persistent-net.rules
# USB device 0x:0x (rt2800usb)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="4c:e6:76:3c:a9:01", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="wlan*", NAME="wlan0"
#70-persistent-net.rulesの後ろ3行を削除して、ドライバをロードすると、
#いつも"wlan0" になるが、もっとスマートな方法がありそうな...
# cat /etc/init.d/bridge.sh
#! /bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin
LINK=`cat /etc/LIF` #もしくはLINK=eth0
WIF=${WIF:=eth1}
case "$1" in
start)
echo -n "Configuring bridge interfaces..."
ps ax|grep dhclient|grep -qv grep
if [ $? != 1 ]; then
killall dhclient
fi
lsmod | grep -q rt2800usb
if [ $? != 1 ]; then
rmmod rt2800usb rt2800lib crc_ccitt rt2x00usb rt2x00lib
fi
RDIR="/etc/udev/rules.d"
RULE="70-persistent-net.rules"
RSRC=${RDIR}/${RULE}
WLAN="wlan0"
if [ -f $RSRC ]; then
grep -q $WLAN $RSRC
if [ $? = 0 ]; then
RTMP="/tmp/${RULE}"
cp -p $RSRC $RTMP
POS1=`egrep -n $WLAN $RTMP |head -1| cut -d: -f1`
POS0=`expr ${POS1} - 2`
sed -e ${POS0},${POS1}d $RTMP > $RSRC
fi
fi
#diff /tmp/70-persistent-net.rules /etc/udev/rules.d/70-persistent-net.rules
# vi /etc/udev/rules.d/70-persistent-net.rules ... sed /wlan0/d
brctl addbr br0
brctl addif br0 $LINK
ifconfig $LINK 0.0.0.0 up
sleep 1
modprobe rt2800usb
( sleep 2; /sbin/dhclient -q ${WIF}; sleep 5; \
/usr/local/bin/hostapd -B /etc/hostapd/hostapd.conf ) &
echo "done."
;;
stop)
echo -n "Deconfiguring bridge interfaces..."
ps ax|grep hostapd|grep -qv grep
if [ $? != 1 ]; then
killall hostapd
fi
killall dhclient
ifconfig -a|grep -q br0
if [ $? != 1 ]; then
ifconfig br0 0.0.0.0 down
fi
ifconfig $LINK 0.0.0.0 down
lsmod | grep -q rt2800usb
if [ $? != 1 ]; then
rmmod rt2800usb rt2800lib crc_ccitt rt2x00usb rt2x00lib
fi
brctl delif br0 $LINK
brctl show|grep -q $LINK
if [ $? != 1 ]; then
brctl delif br0 $LINK
fi
brctl show|grep -q br0
if [ $? != 1 ]; then
brctl delbr br0
fi
echo -n "dhclient $LINK . "
/sbin/dhclient -q $LINK
echo "done."
;;
*)
echo "Usage: $0 {start|stop}" >&2
exit 1
;;
esac
#
/etc/network/interfaces に指定するのがスマートなのでしょうが、テスト時の柔軟さを優先すると、スクリプト書きが好みです。
安定して動作するか、転送速度・性能を含めて経過観察していきたい。6.WLI-UC-GN稼働状況(追記2014.4.21)
OBS A7 は実に安定している。堅牢ということばが似合うルータだ。遅ればせながら、# aptitude update と # aptitude safe-upgrade を行い
kernel-image や OpenSSL を含むアップデートを行う前に、wlan0のインターフェイス を確認しておく。
% date
Mon Apr 21 09:39:04 JST 2014
% uptime
09:39:29 up 93 days, 19:35, 2 users, load average: 0.05, 0.09, 0.06
% ifconfig wlan0
wlan0 Link encap:Ethernet HWaddr 4c:e6:76:3c:a9:01
inet6 addr: fe80::4ee6:76ff:fe3c:a901/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:34453010 errors:0 dropped:0 overruns:0 frame:0
TX packets:36020512 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:2098197015 (1.9 GiB) TX bytes:3952858575 (3.6 GiB)
wlan0は連続93日稼働で、TX側36020512パケットで(3.6 GiB)となっている。
br0 Link encap:Ethernet HWaddr 00:0a:85:09:01:74
inet addr:192.168.1.30 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::20a:85ff:fe09:174/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:44300752 errors:0 dropped:2 overruns:0 frame:0
TX packets:67218375 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:5603503687 (5.2 GiB) TX bytes:83616546596 (77.8 GiB)
ちなみにブリッジinterface br0には77.8 GiB流量があったようだ。ここまでの約3ヶ月、WLI-UC-GNは問題なく、とても良く働いてくれている。
そして、iPerfでobsA7とiMac間をパフォーマンス測定すると。
(obsA7側) % iperf -s ------------------------------------------------------------ Server listening on TCP port 5001 TCP window size: 85.3 KByte (default) ------------------------------------------------------------ [ 4] local 192.168.1.30 port 5001 connected with 192.168.1.62 port 65098 [ ID] Interval Transfer Bandwidth [ 4] 0.0-10.1 sec 37.5 MBytes 31.1 Mbits/sec (iMac側) % iperf -c obsa7 ------------------------------------------------------------ Client connecting to obsa7, TCP port 5001 TCP window size: 129 KByte (default) ------------------------------------------------------------ [ 5] local 192.168.1.62 port 65098 connected with 192.168.1.30 port 5001 [ ID] Interval Transfer Bandwidth [ 5] 0.0-10.1 sec 37.5 MBytes 31.2 Mbits/secおよそ無線LANでは、31Mbits/secと計測できた。
ちなみに有線LANだと。以下のように132Mbits/secと計測した。
(obsA7側) % iperf -s ------------------------------------------------------------ Server listening on TCP port 5001 TCP window size: 85.3 KByte (default) ------------------------------------------------------------ [ 4] local 192.168.1.30 port 5001 connected with 192.168.1.61 port 65039 [ ID] Interval Transfer Bandwidth [ 4] 0.0-10.0 sec 157 MBytes 132 Mbits/sec (iMac側) % iperf -c obsa7 ------------------------------------------------------------ Client connecting to obsa7, TCP port 5001 TCP window size: 129 KByte (default) ------------------------------------------------------------ [ 5] local 192.168.1.61 port 65039 connected with 192.168.1.30 port 5001 [ ID] Interval Transfer Bandwidth [ 5] 0.0-10.0 sec 157 MBytes 132 Mbits/sec
# iwconfig
wlan0 IEEE 802.11bgn Mode:Master Frequency:2.437 GHz Tx-Power=20 dBm
Retry long limit:7 RTS thr:off Fragment thr:off
Power Management:on
mon.wlan0 IEEE 802.11bgn Mode:Monitor Tx-Power=20 dBm
Retry long limit:7 RTS thr:off Fragment thr:off
Power Management:on
今は、/etc/hostapd/hostapd.conf のhw_mode=gだが、ここが11nでいつか動けばいいなぁ。


0 件のコメント:
コメントを投稿