Openblocks AX3およびA6での動作検証を行いました。
OBDN技術ブログによる動作検証は、該当するデバイスの動作を保証およびサポートを行うものではありません。
内容に関するご指摘などありましたら、ブログ記事の担当までご連絡下さい。
内容に関するご指摘などありましたら、ブログ記事の担当までご連絡下さい。
<検証環境>
OpenBlocks AX3/4 Debian 6.0 kernel: 3.0.6
OpenBlocks A6 Debian 6.0 kernel: 2.6.31.8
1. 対応ドライバと事前準備
AX3の場合、クライアントモードのみで使用する場合は、リリースされているカーネルでサポートされます。
A6での使用および両モデルにてAPとしての構築を行う場合は、realtek社からRTL8192CU向けのドライバをダウンロードして使用します。
なお、GW-USValue-EZとGW-USWExtremeは、lsusbで確認すると両方ともGW-USValue-EZと表示され、同一のVENDOR/DEVICEであることを確認しています。
・AX3の場合
上記の3デバイスは、AX3のカーネルパッケージ3.0.6では、rtl8192cuドライバにおいてサポートされています。
本ドライバはリリースされているカーネルでは組み込み済みであり、カーネルの再構築などは必要ありません。
ただし、カーネルに組み込まれたrtl8192cuドライバは、別途メーカから配布されたファームウェアを読み込む仕様になっています。
このファームウェアは、debian squeezeでは
http://packages.debian.org/squeeze-backports/firmware-realtek
にあるように、firmware-realtek (0.35~bpo60+1)に含まれています。
backports/non-freeのパッケージを一時的にインストールするために、/etc/apt/sources.listに以下の行を追加します。
インストールパッケージリストをアップデートし、インストールします。deb http://backports.debian.org/debian-backports squeeze-backports main contrib non-free
# aptitude update
# aptitude -t squeeze-backports install firmware-realtek
# aptitude -t squeeze-backports install firmware-realtek
/lib/firmware/rtlwifi/rtl8192cufw.binがインストールされているのを確認してください。
上記作業の後、デバイスをUSBに差し込むことにより認識し、デバイスは、wlan0となります。
・A6の場合、およびAPの構築を行う場合。
RTL8192CUは、A6のカーネルパッケージ2.6.31では対応していません。
また、AX3においてAPを構築する場合、カーネルサポートのrtl8192cuモジュールを利用し、debianのパッケージや、(カスタマイズされていない)ソースパッケージからビルドしたhostapdにおいてnl80211ドライバを適用させた場合、接続と切断を繰り返す状態が続き、正常に動作しないことを確認しています。
そのため、A6で使用する場合、もしくはAPの構築を行う場合は、Realtek社のWebページより、ドライバのソースコードパッケージおよび、RTL8192CUに対応したドライバを組み込んだhostapdのパッケージをダウンロードして使用します。
Software: Drivers & Utilities / RTL8192CU
RTL8192CUの、Linux Kernel 2.6.18~2.6.38 and Kernel 3.0.8 の項目にあるリンクからドライバパッケージをダウンロードします。
ダウンロードしたファイルは以下の手順で解凍してください。
# unzip RTL8192xC_USB_linux_v3.4.4_4749.20121105.zip
このパッケージは、ターゲットが対応する機器ならば、作成されたディレクトリへ移動し、
install.shによりインストールが行えるのですが、Openblocksは対応機器にありませんので、
以下の手順によりドライバパッケージのコンパイルおよびインストールを行います。
# cd RTL8188C_8192C_USB_linux_v3.4.4_4749.20121105
# cd driver
# tar xvzf rtl8188C_8192C_usb_linux_v3.4.4_4749.20121105.tar.gz
# cd rtl8188C_8192C_usb_linux_v3.4.4_4749.20121105
# cd driver
# tar xvzf rtl8188C_8192C_usb_linux_v3.4.4_4749.20121105.tar.gz
# cd rtl8188C_8192C_usb_linux_v3.4.4_4749.20121105
Makefileを編集します。
同じバージョンのドライバパッケージを使用する場合は、以下のdiff出力をpatch適用して下さい。
アップデートにより内容が変更されている場合は、参考にして書き換えてください。
# diff -u Makefile.orig Makefile
--- Makefile.orig 2012-07-30 21:51:05.000000000 +0900
+++ Makefile 2013-04-10 13:32:54.000000000 +0900
@@ -36,7 +36,8 @@
CONFIG_RTL8192CU_REDEFINE_1X1 =n
CONFIG_WAKE_ON_WLAN = n
-CONFIG_PLATFORM_I386_PC = y
+CONFIG_PLATFORM_I386_PC = n
+CONFIG_PLATFORM_OBS_ARM = y
CONFIG_PLATFORM_TI_AM3517 = n
CONFIG_PLATFORM_ANDROID_X86 = n
CONFIG_PLATFORM_ARM_S3C2K4 = n
@@ -254,6 +255,17 @@
CROSS_COMPILE ?=
KVER := $(shell uname -r)
KSRC := /lib/modules/$(KVER)/build
+MODDESTDIR := /lib/modules/$(KVER)/kernel/drivers/net/wireless/
+INSTALL_PREFIX :=
+endif
+
+ifeq ($(CONFIG_PLATFORM_OBS_ARM), y)
+EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
+SUBARCH := $(shell uname -m | sed -e s/i.86/i386/)
+ARCH ?= arm
+CROSS_COMPILE ?=
+KVER := $(shell uname -r)
+KSRC := /lib/modules/$(KVER)/build
MODDESTDIR := /lib/modules/$(KVER)/kernel/drivers/net/wireless/
INSTALL_PREFIX :=
endif
--- Makefile.orig 2012-07-30 21:51:05.000000000 +0900
+++ Makefile 2013-04-10 13:32:54.000000000 +0900
@@ -36,7 +36,8 @@
CONFIG_RTL8192CU_REDEFINE_1X1 =n
CONFIG_WAKE_ON_WLAN = n
-CONFIG_PLATFORM_I386_PC = y
+CONFIG_PLATFORM_I386_PC = n
+CONFIG_PLATFORM_OBS_ARM = y
CONFIG_PLATFORM_TI_AM3517 = n
CONFIG_PLATFORM_ANDROID_X86 = n
CONFIG_PLATFORM_ARM_S3C2K4 = n
@@ -254,6 +255,17 @@
CROSS_COMPILE ?=
KVER := $(shell uname -r)
KSRC := /lib/modules/$(KVER)/build
+MODDESTDIR := /lib/modules/$(KVER)/kernel/drivers/net/wireless/
+INSTALL_PREFIX :=
+endif
+
+ifeq ($(CONFIG_PLATFORM_OBS_ARM), y)
+EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
+SUBARCH := $(shell uname -m | sed -e s/i.86/i386/)
+ARCH ?= arm
+CROSS_COMPILE ?=
+KVER := $(shell uname -r)
+KSRC := /lib/modules/$(KVER)/build
MODDESTDIR := /lib/modules/$(KVER)/kernel/drivers/net/wireless/
INSTALL_PREFIX :=
endif
変更後、make および installを行います。
# make install
ドライバは、
AX3の場合: /lib/modules/3.0.6/kernel/drivers/net/wireless/
A6の場合: /lib/modules/2.6.31/kernel/drivers/net/wireless/
の下にコピーされ、depmod -aされます。
不要になり、削除する場合は、8192cu.koを削除し、depmod -aして下さい。
ただし、AX3において本ドライバを使用する場合、標準配布されているカーネルにはすでにrtl8192cuドライバモジュールが含まれているため、
/etc/modprobe.d/blacklist.confに、下記の記述を追加して組み込みを抑止してください。
blacklist rtl8192cu
デバイスをUSBポートに差し込めば認識します。
デバイスは、/dev/wlan0となります。
本ドライバは、そのままmake すると大量のデバッグメッセージをconsoleに表示しますので、console作業等で気になる場合は、
include/autoconf.hにおいて、DEBUGもしくはDBGと書かれたdefine行をコメントアウトすることにより抑止出来ます。
2. wpasupplicantパッケージの導入および設定
以下の記事を参照して下さい。
[.tested] Logitec LAN-W150N/U2WH(BK) 無線LANアダプタ [AX3]
上記のドライバにより、AX3、A6においてクライアントモードでの動作を確認しました。
3. hostapdによるAPモードでの使用方法
eth0とwlan0をブリッジ接続してAPモードでの設定を行いました。
・事前準備
事前準備として、bridge-utilsパッケージを導入します。
# aptitude install bridge-utils
・ブリッジ(br0)の設定
/etc/network/interfacesを以下の様に記述します。
auto eth0
iface eth0 inet static
address 0.0.0.0
auto wlan0
iface wlan0 inet manual
pre-up iw dev wlan0 del
pre-up iw phy phy0 interface add wlan0 type managed 4addr on
# Bridge network interface
auto br0
iface br0 inet static
address 172.16.12.248
netmask 255.255.255.0
network 172.16.12.0
broadcast 172.16.12.255
gateway 172.16.12.5
dns-nameservers 172.16.12.6
bridge_ports eth0 wlan0
bridge_stp off
iface eth0 inet static
address 0.0.0.0
auto wlan0
iface wlan0 inet manual
pre-up iw dev wlan0 del
pre-up iw phy phy0 interface add wlan0 type managed 4addr on
# Bridge network interface
auto br0
iface br0 inet static
address 172.16.12.248
netmask 255.255.255.0
network 172.16.12.0
broadcast 172.16.12.255
gateway 172.16.12.5
dns-nameservers 172.16.12.6
bridge_ports eth0 wlan0
bridge_stp off
ブリッジのアドレスをdhcpで取得する場合はbr0の設定は以下の通りです。
# Bridge network interface
auto br0
iface br0 inet dhcp
bridge_ports eth0 wlan0
bridge_stp off
auto br0
iface br0 inet dhcp
bridge_ports eth0 wlan0
bridge_stp off
・hostapdの作成と設定
上記ドライバパッケージを展開したディレクトリの下の、
wpa_supplicant_hostapdディレクトリ下にある、
wpa_supplicant_hostapd-0.8_rtw_20120803.zip
というrealtek専用のhostapdパッケージファイルを展開して、使用します。
パッケージファイルを展開し、hostapdディレクトリにてmakeを行うと、hostapdが作成されます。
# cd wpa_supplicant_hostapd-0.8
# cd hostapd
# make
# make install
# cd hostapd
# make
# make install
hostapdおよびhostapd_cliが/usr/local/binにコピーされます。
hostapd.confは、wpa_supplicant_hostapdの下にあるサンプル、
rtl_hostapd_2G.conf
を、環境に合わせて変更してください。
変更したファイルは、/etc/hostapdというディレクトリを作成し、そこにコピーします。
大まかな変更点としては、
interfaceはwlan0、
ssidとパスフレーズは必ず変更してください。
また、今回は、ブリッジ設定となりますので、bridge=br0を設定します。
# vi rtl_hostapd_2G.conf
##### hostapd configuration file ##############################################
interface=wlan0
ctrl_interface=/var/run/hostapd
ssid=<SSID>
channel=6
wpa=2
wpa_passphrase=<パスフレーズ>
bridge=br0
##### Wi-Fi Protected Setup (WPS) #############################################
eap_server=1
# WPS state
# 0 = WPS disabled (default)
# 1 = WPS enabled, not configured
# 2 = WPS enabled, configured
wps_state=2
uuid=12345678-9abc-def0-1234-56789abcdef0
# Device Name
# User-friendly description of device; up to 32 octets encoded in UTF-8
device_name=RTL8192CU
# Manufacturer
# The manufacturer of the device (up to 64 ASCII characters)
manufacturer=Realtek
# Model Name
# Model of the device (up to 32 ASCII characters)
model_name=RTW_SOFTAP
# Model Number
# Additional device description (up to 32 ASCII characters)
model_number=WLAN_CU
# Serial Number
# Serial number of the device (up to 32 characters)
serial_number=12345
# Primary Device Type
# Used format: <categ>-<OUI>-<subcateg>
# categ = Category as an integer value
# OUI = OUI and type octet as a 4-octet hex-encoded value; 0050F204 for
# default WPS OUI
# subcateg = OUI-specific Sub Category as an integer value
# Examples:
# 1-0050F204-1 (Computer / PC)
# 1-0050F204-2 (Computer / Server)
# 5-0050F204-1 (Storage / NAS)
# 6-0050F204-1 (Network Infrastructure / AP)
device_type=6-0050F204-1
# OS Version
# 4-octet operating system version number (hex string)
os_version=01020300
# Config Methods
# List of the supported configuration methods
config_methods=label display push_button keypad
##### default configuration #######################################
driver=rtl871xdrv
beacon_int=100
hw_mode=g
ieee80211n=1
##### hostapd configuration file ##############################################
interface=wlan0
ctrl_interface=/var/run/hostapd
ssid=<SSID>
channel=6
wpa=2
wpa_passphrase=<パスフレーズ>
bridge=br0
##### Wi-Fi Protected Setup (WPS) #############################################
eap_server=1
# WPS state
# 0 = WPS disabled (default)
# 1 = WPS enabled, not configured
# 2 = WPS enabled, configured
wps_state=2
uuid=12345678-9abc-def0-1234-56789abcdef0
# Device Name
# User-friendly description of device; up to 32 octets encoded in UTF-8
device_name=RTL8192CU
# Manufacturer
# The manufacturer of the device (up to 64 ASCII characters)
manufacturer=Realtek
# Model Name
# Model of the device (up to 32 ASCII characters)
model_name=RTW_SOFTAP
# Model Number
# Additional device description (up to 32 ASCII characters)
model_number=WLAN_CU
# Serial Number
# Serial number of the device (up to 32 characters)
serial_number=12345
# Primary Device Type
# Used format: <categ>-<OUI>-<subcateg>
# categ = Category as an integer value
# OUI = OUI and type octet as a 4-octet hex-encoded value; 0050F204 for
# default WPS OUI
# subcateg = OUI-specific Sub Category as an integer value
# Examples:
# 1-0050F204-1 (Computer / PC)
# 1-0050F204-2 (Computer / Server)
# 5-0050F204-1 (Storage / NAS)
# 6-0050F204-1 (Network Infrastructure / AP)
device_type=6-0050F204-1
# OS Version
# 4-octet operating system version number (hex string)
os_version=01020300
# Config Methods
# List of the supported configuration methods
config_methods=label display push_button keypad
##### default configuration #######################################
driver=rtl871xdrv
beacon_int=100
hw_mode=g
ieee80211n=1
・hostapdの起動
# /usr/local/bin/hostapd -B /etc/hostapd/rtl_hostapd_2G.conf
上記のhostapdを使用して、A6,AX3とiPhone4S/Nexus7間でのWifi接続を確認しました。
4. APモードでハードウェアWPSボタンを使う方法
hostapdには、WPSのサポートがあり、hostapd_cliコマンドやキーボードでWPSのコントロールを行えます。
GW-USNano2には小型ながらもWPSボタンがハードウェア的に用意されており、realtekのドライバパッケージ含まれるハードウェアボタン用のシグナルハンドルのサンプルプログラムが使用できます。
hardware_wps_pbcディレクトリの下のsample.cをmakeし実行すると、ボタンを2秒押すと、
get HW_PBC signal from driver
というメッセージがコンソールに表示されます。
この表示の代わりに
system("hostapd_cli wps_pbc -i wlan0");
と書くと、WPSボタンを使った接続ネゴシエーションを行うための、WPSボタンハンドル用のデーモンとすることが可能になります。
ただし、評価用の実装であることをご理解下さい。
上記の設定において、Nintendo DSiを使用してWPS接続が出来ることを確認しました。
5. さいごに
今回は、AX3/A6の両モデルでAP構築の可能な小型のUSB Wifiアダプタとして、rtl8192cuシリーズを使用した3モデルの評価を行いました。
0 件のコメント:
コメントを投稿