07 April 2013

Raspberry piでUSB Wifi RTL8188CUSを使ったWifi AP構築の失敗

Raspberry Piに取り付けたUSB Wifi RTL8188CUSを使ってWifiアクセスポイントを作るために、hostapdを導入しようとしたが失敗した記録。

20180406-rtl8188-rt5370.jpg

■ 検証環境
・Raspberry Pi (OS : 2013-02-09-wheezy-raspbian)
・USB Wifiアダプタ RTL8188CUS

Wifiクライアントとしては特に問題なく使える(過去の記事 『Raspberry PiでUSB WifiアダプタRTL8188CUSを使う』)。Wifiアクセスポイントとして使う場合に問題が発生する。

■ 参考Webサイト
Raspberry Pi Access Point using RTL8192cu
Automatic setup for RTL8188CUS based wifi adapters

■ Realtek社公式サイトより、ドライバのダウンロード

Realtek公式サイト(Downloads)より「8188CUS」のキーワードで検索すると、Software: Drivers & Utilitiesにたどり着くので、”Linux Kernel 2.6.18~2.6.38 and Kernel 3.0.8”ドライバをダウンロードする。

ダウンロードしたドライバ・パッケージを解凍し、driver と hostapd ディレクトリでそれぞれビルド作業を行う。

■ カーネル ビルド環境の構築

今回、Linuxカーネル ドライバのビルドを行うため、カーネル ビルドを行う環境を構築する必要がある。

$ sudo apt-get install gcc make
$ sudo apt-get install linux-headers-3.2.0-4-rpi
$ sudo apt-get install linux-headers-3.2.0-4-common

カーネルソースコードの入手と展開

$ wget https://github.com/raspberrypi/linux/archive/rpi-3.6.y.tar.gz
$ tar xvfz rpi-3.6.y.tar.gz
$ mv linux-rpi-3.6.y build
$ sudo mv build /lib/modules/3.6.11+/

環境の整備

$ cd /lib/modules/3.6.11+/build/
$ sudo make mrproper
$ sudo gzip -dc /proc/config.gz > .config
$ sudo make modules_prepare
$ sudo wget https://github.com/raspberrypi/firmware/raw/master/extra/Module.symvers

必要なライブラリのインストール

$ sudo apt-get install libssl-dev
$ sudo apt-get install libnl-dev

■ 8192cuドライバのビルドとインストール

driverを解凍したディレクトリで…

Makefileの修正

Makefile
〜 略 〜
# ファイルの先頭付近
# この行を追加
CONFIG_PLATFORM_ARM_RPI = y
#この行を無効化
CONFIG_PLATFORM_I386_PC = n

〜 略 〜

# この行を追加
ifeq ($(CONFIG_PLATFORM_ARM_RPI), y)
EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
ARCH := arm
CROSS_COMPILE :=
KVER := $(shell uname -r)
KSRC := /lib/modules/$(KVER)/build
endif


ifeq ($(CONFIG_PLATFORM_I386_PC), y)
EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
SUBARCH := $(shell uname -m | sed -e s/i.86/i386/)

ビルドを行い、既存ドライバのアンインストールと、今回のドライバのインストール。(インストール作業はsudo make installでもよい)

$ make
$ sudo rmmod 8192cu
$ sudo cp 8192cu.ko /lib/modules/3.6.11+/kernel/drivers/net/wireless/rtl8192cu/
$ sudo depmod -a
$ sudo insmod 8192cu.ko

■ hostapdのビルドとインストール

hostapd Linux documentation page を参考にして、wpa_supplicant_hostapd/hostapdを解凍したディレクトリで…

設定ファイルの作成して

$ cp defconfig .config

nl80211ドライバを有効化する修正を行う。

.config
# この行を有効化
CONFIG_DRIVER_NL80211=y

ビルド

$ make

設定ファイルを作成する

/etc/hostapd/hostapd.conf
interface=wlan0
driver=nl80211
ssid=RaspberryPi
hw_mode=g
channel=11
beacon_int=100
max_num_sta=5
macaddr_acl=0
auth_algs=1
wpa=2
wpa_passphrase=Pass0123
wpa_key_mgmt=WPA-PSK
rsn_pairwise=CCMP

hostapdの起動テストは失敗する

$ sudo hostapd -dd /etc/hostapd/hostapd.conf

random: Trying to read entropy from /dev/random
Configuration file: /etc/hostapd/hostapd.conf
nl80211: 'nl80211' generic netlink not found
nl80211 driver initialization failed.