LoginSignup
2
1

More than 5 years have passed since last update.

RTL8192CU用ドライバとhostapdをUbuntu 16.04でbuildする

Posted at

Ralink と Realtek

安価な小型USB Wi-FiデバイスをhostapdでAPにしたい。
まずは、ドライバもhostapdもiwとnetlinkの素で行けるという、rt2800usbドライバで動くデバイスで試したところ、設定が素すぎたのか、pingがロスる。

rtl8192cuドライバで動くデバイスも手元にあったので試そう。と、その前に検索すると、素で動くけどいまいちとか、別ドライバがあるという情報が出てくる。
有線のr8168/r8169と似た展開か。
こちらによると、ドライバを変えると、hostapdも変える必要があるのか。

バイナリをコピーする記事も見かけるが、Raspberry Pi用だとARMで動かないし、Ubuntuではパッケージも無さそうだし、buildしてみるか…。

環境

ドライバ

検索すると、Realtekのドライバをベースにしたと思われるリポジトリが、github上にたくさんある。
正直どれが良いのかわからないが、Ubuntuでの情報があるのと、ほぼ最新のカーネルでも確認されていそうで、手順がご丁寧に書かれているので、こちらにしてみよう。

ドライバのbuild

迷いどころがないほど手順通りだったので、省略…

hostapd

これまたパッチ状態のもの、パッチ適用済みのものなど、色々あるが、パッチながら手順が明確なこちらにしてみる。

ただ、hostapdは、自分のど素人ぶりを発揮し、迷いどころが少しあった。

hostapdのバージョン

hostapdは、aptで入れた後、バイナリを置き換えることを想定していたが、両者でバージョンが違うようだ。

依存しているのはnetlinkくらいだし、入れるバイナリも2つだけなので、2.4が2.6になっても問題ない、と信じて2.6にしてみる。

hostapdのbuild

勘違いしていたが、パッチの手順には、hostapdのビルド手順が含まれているわけではない。
hostapdのビルド手順は、hostapdのREADMEを見る必要がある。が、Makefileのほうが詳しいような…。
本家をダウンロードし、パッチの手順と合体させて、

$ cd hostapd-2.6
$ patch -Np1 -i ~/git/hostapd-rtl871xdrv/rtlxdrv.patch
$ cd hostapd
$ cp defconfig .config
(.config編集)
$ echo CONFIG_DRIVER_RTW=y >> .config
$ make

(.configの編集)では、defaultのdefconfigから、

  • CONFIG_DRIVER_NL80211=yを無効に
  • CONFIG_IEEE80211N=yを有効に

してみた。RTWはNL80211とは排他ではなさそうだが、依存ライブラリのインストールが必要で、かつRealtekのドライバが対応していないので、無効にしてみた。

hostapdのインストール

$ make -n install
install -D hostapd /usr/local/bin//hostapd
install -D hostapd_cli /usr/local/bin//hostapd_cli

で確認すると、Ubuntuのデフォルト設置場所である/usr/sbinと異なる。

$ BINDIR=/usr/sbin make -n install
install -D hostapd /usr/sbin/hostapd
install -D hostapd_cli /usr/sbin/hostapd_cli

これなら大丈夫そう。

hostapdの設定

aptで入れて入っている/etc/hostapd/hostapd.confをベースに、hostapd.conf.rtl871xdrvの部分を編集。

device_namemanufacturer

これはビルド時にCONFIG_WPS=yになっていないと使えないようだ。
WPSは使わないので、設定しなかった。

ブリッジの設定

hostapd.conf
# For nl80211, this parameter can be used to request the AP interface to be
# added to the bridge automatically (brctl may refuse to do this before hostapd
# has been started to change the interface mode). If needed, the bridge
# interface is also created.

nl80211でなくrtl871xdrvだと、どうなるんでしょう。
よくわからないが、/etc/network/interfacesにてbrctlで作る、で何となく動いている…。

感想

  • ドライバは毒が入っているとこわいので、複数あると選択が難しい…
  • やっぱり11ac対応機が欲しい!
2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1