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.