- 追加された行はこの色です。
- 削除された行はこの色です。
[[Armadillo]]~
[[Armadillo-Box WS1]]
#contents
*Wifi 対応 [#ybc4d672]
Howto : Armadillo-810/840で IEEE802.11ac USB無線LANアダプタ GW-900D を動作させる~
http://armadillo.atmark-techno.com/howto/a800-ieee80211ac-gw-900d~
や~
Linux 3.xでMediaTek(旧Ralink Technology)社製チップ搭載USB無線LANアダプタを動作させる~
http://armadillo.atmark-techno.com/howto/wlan-usb-config-rt2x00~
を参考に Armadillo-Box WS1 で Buffalo WI-U2-433DM を使用できるようにします。
[[11ac 対応 USB 無線 LAN 子機 Buffalo WI-U2-433DM:http://buffalo.jp/product/wireless-lan/client/wi-u2-433dm/]]
**カーネルのカスタマイズ [#xc972dcb]
Buffalo WI-U2-433DM に使われている Realtek rtl8812au 用の driver をビルドするには、~
Linuxカーネルで Linux 802.11 configuration API がサポートされている必要があります。~
Armadillo-Box WS1 はデフォルトではこの機能は無効に設定されているので~
Linuxカーネルコンフィギュレーションで有効にします。
make menuconfig で vendor/Product を指定します。
(AtmarkTechno) Vendor
(Armadillo-Box WS1) AtmarkTechno Products
カーネルコンフィギュレーションで cfg80211 を有効にします。
Linux Kernel Configuration
[*] Networking support --->
-*- Wireless --->
<*> cfg80211 - wireless configuration API <-- チェックをいれ有効にする
: 一部省略
[*] cfg80211 wireless extensions compatibility <-- チェックをいれ有効にする
<*> Generic IEEE 802.11 Networking Stack (mac80211) <-- チェックをいれ有効にする
**ユーザーランドのコンフィギュレーション [#d586b0d6]
driver をビルドして有効にしただけでは無線LANアクセスポイントに接続できません。~
接続のためのツールをユーザーランドに含めておく必要があります。~
暗号化ありのアクセスポイントに接続するためには iw コマンドか wpa_supplicant が必要です。~
atmark dist に用意されている wpa_supplicant を追加します。
[*] Customize Vendor/User Settings
Network Applications --->
:
--- Wireless-tools
:
[*] hostap <-- チェックをいれ有効にする
[ ] hostap driver (Prism2/2.5/3) (NEW)
[ ] hostapd (NEW)
[*] wpa_supplicant (NEW) <-- hostap にチェックをいれると表示されるので、チェックをいれ有効にする
:
**wpa_supplicant コンフィグファイルの修正 [#x8b6d81a]
このままビルドを行うと wpa_supplicant のビルドはエラーになります。~
wpa_supplicant のビルド設定のコンフィグファイル~
atmark-dist/user/hostap/wpa_supplicant/.config~
を修正し、madwifi interface のビルドを行わないようコメントアウト(=無効化)します。
--- .config.orig 2015-11-27 17:50:49.449674569 +0900
+++ .config 2015-11-27 17:51:03.869675088 +0900
@@ -50,9 +50,9 @@
#CFLAGS += -I../../include/wireless
# Driver interface for madwifi driver
-CONFIG_DRIVER_MADWIFI=y
+#CONFIG_DRIVER_MADWIFI=y
# Change include directories to match with the local setup
-CFLAGS += -I$(ROOTDIR)/$(LINUXDIR)/drivers/net/wireless/madwifi
+#CFLAGS += -I$(ROOTDIR)/$(LINUXDIR)/drivers/net/wireless/madwifi
# Driver interface for Prism54 driver
# (Note: Prism54 is not yet supported, i.e., this will not work as-is and is
**カーネルとユーザーランドのビルド [#e55dbfad]
上記の変更を反映したカーネルとユーザーランドを一旦ビルドします。
atmark@atde5:~/atmark-dist$ make clean
atmark@atde5:~/atmark-dist$ make
**USB Wifi driver のビルド [#nadd3b21]
Buffalo WI-U2-433DM に使われている Realtek rtl8812au 用の driver を~
https://github.com/gnab/rtl8812au~
から git clone してビルドします。~
ます git clone し、
atmark@atde5:~$ git clone https://github.com/gnab/rtl8812au.git
atmark@atde5:~$ cd rtl8812au
Armadillo-Box 向けにクロスコンパイルするため以下のように Makefile を修正します。~
default では PC 向けになっている設定を n にして~
Armadillo-Box WS1 向けの ARM クロスコンパイルの設定を追加しています。
diff --git a/Makefile b/Makefile
index b79a7d8..d15cf69 100644
--- a/Makefile
+++ b/Makefile
@@ -49,13 +49,14 @@ CONFIG_EXT_CLK = n
CONFIG_FTP_PROTECT = n
CONFIG_WOWLAN = n
-CONFIG_PLATFORM_I386_PC = y
+CONFIG_PLATFORM_I386_PC = n
CONFIG_PLATFORM_ANDROID_X86 = n
CONFIG_PLATFORM_JB_X86 = n
CONFIG_PLATFORM_ARM_S3C2K4 = n
CONFIG_PLATFORM_ARM_PXA2XX = n
CONFIG_PLATFORM_ARM_S3C6K4 = n
CONFIG_PLATFORM_ARM_RPI = n
+CONFIG_PLATFORM_ARM_ARMADILLO_CROSS = y
CONFIG_PLATFORM_MIPS_RMI = n
CONFIG_PLATFORM_RTD2880B = n
CONFIG_PLATFORM_MIPS_AR9132 = n
@@ -738,6 +739,15 @@ KSRC ?= /lib/modules/$(KVER)/build
MODDESTDIR := /lib/modules/$(KVER)/kernel/drivers/net/wireless/
endif
+ifeq ($(CONFIG_PLATFORM_ARM_ARMADILLO_CROSS), y)
+EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
+ARCH := arm
+CROSS_COMPILE := arm-linux-gnueabi-
+KVER := 3.14.36-at4
+KSRC ?= /home/atmark/linux-3.14-at4
+MODDESTDIR :=
+endif
+
ifeq ($(CONFIG_PLATFORM_RTD2880B), y)
EXTRA_CFLAGS += -DCONFIG_BIG_ENDIAN -DCONFIG_PLATFORM_RTD2880B
ARCH:=
これで make します。
atmark@atde5:~/rtl8812au$ make
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- -C /home/atmark/linux-3.14-at4 M=/home/atmark/test_work/rtl8812au modules
make[1]: ディレクトリ `/home/atmark/linux-3.14-at4' に入ります
CC [M] /home/atmark/rtl8812au/core/rtw_cmd.o
CC [M] /home/atmark/rtl8812au/core/rtw_security.o
〜〜 中略 〜〜
CC [M] /home/atmark/rtl8812au/core/rtw_mp_ioctl.o
LD [M] /home/atmark/rtl8812au/8812au.o
Building modules, stage 2.
MODPOST 1 modules
CC /home/atmark/rtl8812au/8812au.mod.o
LD [M] /home/atmark/rtl8812au/8812au.ko
make[1]: ディレクトリ `/home/atmark/linux-3.14-at4' から出ます
出来上がった 8812au.ko を ROM イメージディレクトリに配置します。
atmark@atde5:~/rtl8812au$ cp 8812au.ko ~/atmark-dist/romfs/lib/modules/3.14.36-at4/kernel/
ROM イメージディレクトリのカーネルモジュール PATH 以下に配置すると、~
make image の際に depmod が実行され~
modprobe 8812au でロードできるようになります。
**イメージ再作成 [#x919bfff]
ビルドしたドライバーを含むよう、再度イメージを作成します。
atmark@atde5:~$ cd ~/atmark-dist
atmark@atde5:~/atmark-dist$ make image
atmark-dist/images/ の下のファイルが更新されていることを確認します。
**動作確認 [#t302713f]
Armadillo-Box WS1 がネットワークに接続してある場合に一番速い書き換え方法である~
12.4. TFTPを使用してフラッシュメモリを書き換える~
http://manual.atmark-techno.com/armadillo-box-ws1/armadillo-box-ws1_product_manual_ja-1.0.0/ch12.html#sct.update_image-with-tftpdl~
でカーネルとユーザーランドを再作成したものに書き換えます。~
hermit> tftpdl 192.168.0.90 192.168.0.164 --blksize=1024 --kernel=linux.bin.gz
hermit> tftpdl 192.168.0.90 192.168.0.164 --blksize=1024 --userland=romfs.img.gz
新しいカーネルとユーザーランドで起動したら WI-U2-433DMを USB ポートに挿します。~
dmesg に以下のメッセージがあることを確認します。
usbcore: registered new interface driver rtl8812au
lsmod でカーネルモジュールがロードされていることを確認します。
[root@abws1-0 (ttymxc1) ~]# lsmod
8812au 907792 0 - Live 0xbf000000 (O)
ネットワークインタフェースとして認識されていることを確認します。~
このドライバーを使った場合は wlan* として認識されます。
[root@abws1-0 (ttymxc1) ~]# ifconfig wlan0
wlan0 Link encap:Ethernet HWaddr CC:E1:D5:F7:14:E6
BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:10 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
まだ down した状態なので up して正しく動作するか確認します。~
以下のように周辺のアクセスポイントの検索に成功すれば OK です。
[root@abws1-0 (ttymxc1) ~]# ifconfig wlan0 up
[root@abws1-0 (ttymxc1) ~]# iwlist wlan0 scanning
wlan0 Scan completed :
Cell 01 - Address: 74:03:BD:09:BD:50
ESSID:"Buffalo-G-BD50"
Protocol:IEEE 802.11bgn
Mode:Master
Frequency:2.422 GHz (Channel 3)
Encryption key:on
Bit Rates:144 Mb/s
Extra:rsn_ie=30140100000fac040100000fac040100000fac020000
IE: IEEE 802.11i/WPA2 Version 1
Group Cipher : CCMP
Pairwise Ciphers (1) : CCMP
Authentication Suites (1) : PSK
IE: Unknown: DD6B0050F204104A0001101044000102103B0001031047001028802880288018 以下略
Quality=0/100 Signal level=68/100
Cell 02 - Address: 00:1D:73:8E:73:EB
ESSID:"001D738E73EB"
Protocol:IEEE 802.11bgn
Mode:Master
Frequency:2.432 GHz (Channel 5)
Encryption key:on
Bit Rates:300 Mb/s
Extra:wpa_ie=dd1a0050f20101000050f20202000050f2040050f20201000050f202
IE: WPA Version 1
Group Cipher : TKIP
Pairwise Ciphers (2) : CCMP TKIP
Authentication Suites (1) : PSK
Extra:rsn_ie=30180100000fac020200000fac04000fac020100000fac020000
IE: IEEE 802.11i/WPA2 Version 1
Group Cipher : TKIP
Pairwise Ciphers (2) : CCMP TKIP
Authentication Suites (1) : PSK
IE: Unknown: DD600050F204104A0001101044000102103B000103104700106CBF8352D7C911 以下略
Quality=0/100 Signal level=64/100
以後略
**接続設定 [#jf39661d]
wpa_supplicant を使って暗号化ありの無線LANアクセスポイントに接続する設定を行います。~
まず wpa_supplicant の接続用設定ファイルを作成します。
[root@abws1-0 (ttymxc1) ~]# wpa_passphrase YOUR-SSID YOUR-PASSWORD > /etc/config/wpa_supplicant.conf
作成した設定ファイルは以下のような内容になっています。
network={
ssid="YOUR-SSID"
#psk="YOUR-PASSWORD"
psk=e1a0872bd7f7cfd7efa1cbc7d7aec742c58f3ae24e4757d98eae8bf7b53254de
}
接続したい無線LANアクセスポイントの暗号化設定に対応した設定を追加します。
network={
ssid="YOUR-SSID"
#psk="YOUR-PASSWORD"
psk=e1a0872bd7f7cfd7efa1cbc7d7aec742c58f3ae24e4757d98eae8bf7b53254de
proto=RSN <-- WPA2 のとき追加
key_mgmt=WPA-PSK
pairwise=CCMP <-- AES のときは CCMP、TKIP のときは TKIP
group=CCMP <-- AES のときは CCMP、TKIP のときは TKIP
}
以下のように作成した設定ファイルを指定して wpa_supplicant をフォアグラウンド実行し、~
認証が正しく行えるか確認します。
[root@abws1-0 (ttymxc1) ~]# wpa_supplicant -D wext -i wlan0 -c wpa_supplicant.conf -dd
Initializing interface 'wlan0' conf 'wpa_supplicant.conf' driver 'wext' ctrl_interface 'N/A' bridge 'N/A'
Configuration file 'wpa_supplicant.conf' -> '/root/wpa_supplicant.conf'
Reading configuration file '/root/wpa_supplicant.conf'
Line: 1 - start of a new network block
〜〜 中略 〜〜
State: COMPLETED -> GROUP_HANDSHAKE
WPA: Group Key - hexdump(len=32): [REMOVED]
WPA: Installing GTK to the driver (keyidx=1 tx=0).
WPA: RSC - hexdump(len=6): bf 07 00 00 00 00
wpa_driver_wext_set_key: alg=2 key_idx=1 set_tx=0 seq_len=6 key_len=32
WPA: Sending EAPOL-Key 2/2
WPA: TX EAPOL-Key - hexdump(len=99): 01 03 00 5f 02 03 01 00 00 以下略
WPA: Group rekeying completed with 00:3a:9d:91:93:be [GTK=TKIP]
State: GROUP_HANDSHAKE -> COMPLETED
EAPOL: startWhen --> 0
のようなログが流れ HANDSHAKE に成功していれば認証 OK です。~
Ctrl + C で終了し、今度はデーモン実行させます。
[root@abws1-0 (ttymxc1) ~]# wpa_supplicant -D wext -i wlan0 -c /etc/config/wpa_supplicant.conf -B
wlan0 が up し認証が成功していることを確認します。
[root@abws1-0 (ttymxc1) ~]# ifconfig wlan0
wlan0 Link encap:Ethernet HWaddr CC:E1:D5:F7:14:E6
inet6 addr: fe80::cee1:d5ff:fef7:14e6/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:314 errors:0 dropped:631 overruns:0 frame:0
TX packets:12 errors:0 dropped:2 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:377798 (368.9 KiB) TX bytes:2945 (2.8 KiB)
[root@abws1-0 (ttymxc1) ~]# iwconfig wlan0
wlan0 IEEE 802.11bg ESSID:"YOUR-SSID" Nickname:"<WIFI@REALTEK>"
Mode:Managed Frequency:2.442 GHz Access Point: 00:3A:9D:91:93:BE
Bit Rate:54 Mb/s Sensitivity:0/0
Retry:off RTS thr:off Fragment thr:off
Encryption key:****-****-****-****-****-****-****-**** Security mode:open
Power Management:off
Link Quality=100/100 Signal level=100/100 Noise level=0/100
Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive retries:0 Invalid misc:0 Missed beacon:0
手動で udhcpc を実行し、アドレスが取得でき通信できることを確認します。
[root@abws1-0 (ttymxc1) ~]# udhcpc -i wlan0
udhcpc (v1.20.2) started
Sending discover...
Sending select for 192.168.0.148...
Lease of 192.168.0.148 obtained, lease time 43200
この wpa_supplicant.conf を保存したい場合は
[root@abws1-0 (ttymxc1) ~]# flatfsd -s
を実行し、/etc/config/ 以下の変更を保存します。~
これを行わない場合 atmark dist の設定変更は電源を切ると全て消えてしまいます。~
~
また、wlan0 が up している時 eth0 も up していると通信出来ない場合があります。~
この場合は route を適切に設定してやる必要があります。
**自動接続設定 [#r2f78ce8]
Armadillo-Box WS1 の起動時に自動で無線LANアクセスポイントに接続させたい場合には、~
以下の設定を行います。
ネットワークインタフェース設定ファイル /etc/network/interfaces に wlan0 の項目を追加します。
# /etc/network/interfaces -- configuration file for ifup(8), ifdown(8)
auto lo eth0
iface lo inet loopback
iface eth0 inet dhcp
iface wlan0 inet dhcp <-- wlan0 の設定を追加する。
ユーザー起動スクリプトファイル /etc/config/rc.local に以下のような wpa_supplicant の起動設定を追加します。
# Wifi
DEV_NAME=wlan0
if [ -r /sys/class/net/${DEV_NAME} ]; then
wpa_supplicant -D wext -i ${DEV_NAME} -c /etc/config/wpa_supplicant.conf -B
sleep 30
ifup ${DEV_NAME}
fi
sleep は Wifi の認証が完了し wlan0 が up する前に dhcp が実行されないよう調整のため行っています。~
設定を行ったら flatfsd -s で設定を保存します。
これで Armadillo-Box WS1 の起動時に、予め wpa_supplicant.conf に設定した無線LANアクセスポイントへ接続し~
dhcp で IP アドレスやDNSアドレスを取得します。