Wheezyに無線LANドライバを導入する。

■Wheezyに無線LANドライバを導入する。
 基本的に以下の方法で出来る。使用したドライバはWin7用。
 ただしWheezy側にトラップが2(後述)ある。
 使用したのは「V5-171-F58D/S」。これでWindows8ともお別れが出来る。

 Squeezeに無線LANドライバを導入する
 http://d.hatena.ne.jp/labunix/20130302

■Wheezy上での無線LANドライバの確認
 Windows8では、最新版でこっそり対応しているメーカが多いようだが、
 「制限された〜」でデフォルトドライバでは動かないことがある。
 また、ドライバの再インストールを要することもしばしば。 

$ sudo lspci -v | grep Wireless
03:00.0 Network controller: Atheros Communications Inc. AR9462 Wireless Network Adapter (rev 01)

■最新の無線LANドライバのダウンロード
 以下のリンクで確認。ダウンロード用のURLが異なるのでご注意を。
 念の為、XP、78の三種類のドライバを保存しておく。

 http://www.atheros.cz/atheros-wireless-download.php?chipset=76&system=1
 http://www.atheros.cz/atheros-wireless-download.php?chipset=76&system=6
 http://www.atheros.cz/atheros-wireless-download.php?chipset=76&system=7

$ URL="http://download2.dvd-driver.cz/atheros/drivers/ar5xxx"; \
  WINXP="xp3264-10.0.0.216-whql.zip"; \
  WIN7="win7-10.0.0.227-whql.zip"; \
  WIN8="win8-10.0.0.217-whql.zip"; \
  wget $URL/${WINXP}; \
  wget ${URL}/${WIN7}; \
  wget $URL/${WIN8}

■32bit/64bitの違いは、「NTX86/NTamd64」。

$ w3m -dump "http://www.atheros.cz/atheros-inf-file.php?inf=275&chipset=74&system=5" | grep -A 2 "\[Manufacturer\]"
                       [Manufacturer]
                       %ATHEROS% = Atheros, NTX86.6.1, NTX86.6.0, NTX86.6.2
                       %GIGABYTE% = Gigabyte, NTX86.6.1, NTX86.6.0, NTX86.6.2

$ w3m -dump "http://www.atheros.cz/atheros-inf-file.php?inf=276&chipset=74&system=5" | grep -A 2 "\[Manufacturer\]"
                       [Manufacturer]
                       %ATHEROS% = Atheros, NTamd64.6.1, NTamd64.6.0, NTamd64.6.2
                       %GIGABYTE% = Gigabyte, NTamd64.6.1, NTamd64.6.0, NTamd64.6.2

■ダウンロードした無線LANドライバの確認

$ for list in *.zip;do zipinfo "$list";done
Archive:  win7-10.0.0.227-whql.zip
Zip file size: 2462449 bytes, number of entries: 6
-rw-a--     2.0 fat  3109888 b- defX 13-Feb-19 11:00 athr.sys
-rw-a--     2.0 fat    80287 b- defX 13-Feb-21 09:28 athrext.cat
-rw-a--     2.0 fat    80291 b- defX 13-Feb-21 09:28 athrextx.cat
-rw-a--     2.0 fat  3868160 b- defX 13-Feb-19 11:00 athrx.sys
-rw-a--     2.0 fat   542671 t- defX 13-Feb-19 11:00 netathr.inf
-rw-a--     2.0 fat   545386 t- defX 13-Feb-19 11:00 netathrx.inf
6 files, 8226683 bytes uncompressed, 2461845 bytes compressed:  70.1%
Archive:  win8-10.0.0.217-whql.zip
Zip file size: 2134565 bytes, number of entries: 6
-rw-a--     2.0 fat    80053 b- defX 12-Nov-08 04:28 athw8.cat
-rw-a--     2.0 fat   332320 t- defX 12-Oct-27 09:00 athw8.inf
-rw-a--     2.0 fat  2809344 b- defX 12-Oct-27 09:00 athw8.sys
-rw-a--     2.0 fat    80063 b- defX 12-Nov-08 04:28 athw8x.cat
-rw-a--     2.0 fat   333926 t- defX 12-Oct-27 09:00 athw8x.inf
-rw-a--     2.0 fat  3701760 b- defX 12-Oct-27 09:00 athw8x.sys
6 files, 7337466 bytes uncompressed, 2133973 bytes compressed:  70.9%
Archive:  xp3264-10.0.0.216-whql.zip
Zip file size: 1699716 bytes, number of entries: 6
-rw-a--     2.0 fat  2121248 b- defX 12-Oct-24 09:00 athw.sys
-rw-a--     2.0 fat  3022016 b- defX 12-Oct-24 09:00 athwx.sys
-rw-a--     2.0 fat    74193 b- defX 12-Oct-26 13:48 netathw.cat
-rw-a--     2.0 fat   284322 t- defX 12-Oct-24 09:00 netathw.inf
-rw-a--     2.0 fat    74339 b- defX 12-Oct-26 13:48 netathwx.cat
-rw-a--     2.0 fat   446180 t- defX 12-Oct-24 09:00 netathwx.inf
6 files, 6022298 bytes uncompressed, 1699112 bytes compressed:  71.8%

■Windowsドライバの取り込み

$ sudo apt-get install -y ndisgtk

$ unzip win7-10.0.0.227-whql.zip 
Archive:  win7-10.0.0.227-whql.zip
  inflating: athr.sys
  inflating: athrext.cat
  inflating: athrextx.cat
  inflating: athrx.sys
  inflating: netathr.inf
  inflating: netathrx.inf

$ sudo ndiswrapper -i netathrx.inf 
installing netathrx ...

$ sudo ndiswrapper -l
netathrx : driver installed
	device (168C:0034) present (alternate driver: ath9k)

$ sudo ndiswrapper -m
adding "alias wlan0 ndiswrapper" to /etc/modules.conf ...

$ cat /etc/modules.conf 
alias wlan0 ndiswrapper

$ grep "ndiswrapper" /etc/modules || \
  echo "ndiswrapper" | sudo tee -a /etc/modules
ndiswrapper

$ sudo depmod -a

$ lsmod | grep ath9k
ath9k                  73578  0 
ath9k_common           12728  1 ath9k
ath9k_hw              322112  2 ath9k_common,ath9k
ath                    21370  3 ath9k_hw,ath9k_common,ath9k
mac80211              192806  1 ath9k
cfg80211              137243  3 mac80211,ath,ath9k

■ESSIDをブロードキャストしない設定なので、
 他所のESSIDが見えるだけ。

$ sudo /sbin/ifconfig wlan0 up
$ sudo iwlist wlan0 scan | grep ESSID
                    ESSID:"SWS1day"
                    ESSID:"001softbank"

■DHCPにも応答しないので、手動で設定

$ sudo iwconfig wlan0 essid "ESSID" key "s:PASSWORD"
$ sudo iwconfig wlan0 | \
  sed s/"ESSID.*"/"ESSID:\"ESSID\""/ | \
  sed s/"\(Encryption key:\).*"/"\qXXXX-XXXX-XXXX-XXXX-XXXX-XXXX-XX"/
wlan0     IEEE 802.11abgn  ESSID:"ESSID"
          Mode:Managed  Access Point: Not-Associated   Tx-Power=16 dBm   
          Retry  long limit:7   RTS thr:off   Fragment thr:off
          qXXXX-XXXX-XXXX-XXXX-XXXX-XXXX-XX
          Power Management:off

$ grep -A 10 "auto wlan0" /etc/network/interfaces | \
  sed s/"\(wireless-essid \).*"/"\1ESSID"/ | \
  sed s/"\( wireless-key1 \).*"/"\1s:PASSWORD"/ | \
  sed s/"[0-9]"/X/g
auto wlanX
allow-hotplug wlanX
iface wlanX inet static
	address XX.XX.X.XX
	netmask XXX.XXX.XXX.X
	network XX.XX.X.X
	broadcast XX.XX.X.XXX
	#gateway XX.XX.X.XXX
	wireless-essid ESSID
	wireless-key1 s:PASSWORD
	up route add -net XX.XX.X.XXX/XX gw XX.XX.X.XXX wlanX

$ sudo /etc/init.d/networking restart
$ ping -c 2 $WLANIP | sed s/"$WLANIP"/"XXX.XXX.XXX.XXX"/g 
PING XXX.XXX.XXX.XXX (XXX.XXX.XXX.XXX) 56(84) bytes of data.
64 bytes from XXX.XXX.XXX.XXX: icmp_req=1 ttl=64 time=0.059 ms
64 bytes from XXX.XXX.XXX.XXX: icmp_req=2 ttl=64 time=0.033 ms

--- XXX.XXX.XXX.XXX ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 999ms
rtt min/avg/max/mdev = 0.033/0.046/0.059/0.013 ms

■トラップは2つ。
 「linux-wlan-ng」と「/etc/init.d/networking」。

$ sudo /etc/init.d/networking restart
[....] Running /etc/init.d/networking restart is deprecated because it may not r[warnble some interfaces ... (warning).
[....] Reconfiguring network interfaces...cat: /sys/module/p80211/parameters/wlan_wext_write: No such file or directory
FATAL: Module p80211 not found.
Failed to load p80211.ko.
run-parts: /etc/network/if-pre-up.d/linux-wlan-ng-pre-up exited with return code 1
ifup: interface eth0 already configured
done.

■「inux-wlan-ng」は使わない場合を考慮していないので、
 全く話にならない。
 「/sys/module/p80211/parameters/wlan_wext_write」も「p80211」のモジュールのロードも必要としていない。

$ sudo apt-get purge -y linux-wlan-ng

■「networking」スクリプトは、システムが稼働中なら「ifdown -a」と「ifup -a」を使う。
 「run/ifstate」なんて要らないと思う。

■eth0をダウンしてwlan0でpingチェック
 その他、ルーティングが必要であれば、「up」行を追加。

$ sudo ifdown eth0
$ ping -c 5 $MYGW | sed s/"[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*"/"XXX.XXX.XXX.XXX"/g
PING XXX.XXX.XXX.XXX (XXX.XXX.XXX.XXX) 56(84) bytes of data.
64 bytes from XXX.XXX.XXX.XXX: icmp_req=1 ttl=64 time=2.79 ms
64 bytes from XXX.XXX.XXX.XXX: icmp_req=2 ttl=64 time=1.92 ms
64 bytes from XXX.XXX.XXX.XXX: icmp_req=3 ttl=64 time=1.94 ms
64 bytes from XXX.XXX.XXX.XXX: icmp_req=4 ttl=64 time=1.94 ms
64 bytes from XXX.XXX.XXX.XXX: icmp_req=5 ttl=64 time=2.13 ms

--- XXX.XXX.XXX.XXX ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4006ms
rtt min/avg/max/mdev = 1.920/2.149/2.796/0.336 ms