Raspberry Pi3 Bで802.11ACな安物無線LANアダプタを使う

スポンサード リンク

最新のRaspberry Pi3 B+の内蔵無線LANチップは802.11acに準拠し,5.8Ghz帯を利用できる。一方,私の所有するRaspberry Pi3 Bでは,802.11nまでの対応となり2.4Ghz帯しか利用できない。

自宅の無線LANルータが5.8Ghz帯のみ対応だったのでRasPiを更新するか,アダプタを購入するか悩んだのだが,安価であることとRasPiの再設定が面倒なのでアタプタで対応することにした。

今回はRaspbianへのドライバインストールから無線LANへ接続可能になるところまでの手順を記録しておく。自宅のRasPiは録画サーバ兼NASとして運用しているのだが,今回のac対応により有線LANと遜色ない速度で利用可能になった。内蔵無線LANではパケ詰まりのような症状があってNASとしては使い物にならなかったのだが,解消して嬉しい。

前提環境

今回使用したRasPiの仕様は以下の通り。

  • Raspberry Pi3 B
  • ディストリ: Raspbian Stretch 9.9
  • カーネル: Linux raspberrypi 4.14.98-v7+ #1200 SMP Tue Feb 12 20:27:48 GMT 2019 armv7l GNU/Linux

アタプタの購入とハードウェアの仕様

今回はAmazonで買える安価かつそれなりに早そうなTexrraの無線LANアダプタ Amazon | 無線LANアダプタ 1200Mbps USB3.0高速モデル | TEXRRA を購入した。執筆時点(2019/05/02)で2080円。RasPiだとUSB2.0の300Mbpsが上限になるだろうがそこはあまり気にしないことにする。

Raspbianで lsusb コマンドを実行すると下記のように表示される。IDが 0bda:b812 であることから,WikiDevi によるとこの無線LANアダプタはRealtekのRTL8812BUチップセットを採用していることがわかる。これに対応するドライバをインストールすれば良い。

Bus 001 Device 009: ID 0bda:b812 Realtek Semiconductor Corp.

ドライバのインストール

基本的な手順は EDiMAXの記事 に従う。RTL8822buを搭載した別製品の記事だが,ドライバ自体はRTL88x2bu向けとしてインストールされるので,同じ手順を利用できる。

ドライバをコンパイルする環境を整えていく。まず,カーネルのソースを取得する。

sudo apt update
sudo apt install raspberrypi-kernel-headers

今回は稼働中のカーネルのバージョン 4.14.98-v7+ に対応するソースコードが取得された。

$ ls /lib/modules
4 4.14.98-v7+

次に,コンパイルに必要なツールセットをインストールする。私の環境は既にいろいろインストール済みなので,もしかしたら別のパッケージもインストールする必要があるかもしれない。

sudo apt install gcc make git bc

いよいよ,ドライバのコードを取得する。

cd /usr/src
git clone https://github.com/jackfan108/rtl8822bu.git
cd rtl8822bu

ARM向けにMakefileを改変する。 /lib/modules/4.14.98-v7+/build の部分は自分のカーネルのバージョンに合わせて改変すること。

# 改変前 (1800行付近)

modules:
    $(MAKE) ARCH=$(ARCH) CROSS_COMPILE=$(CROSS_COMPILE) -C $(KSRC) M=$(shell pwd)  modules

# 改変後 (1800行付近)

modules:
    $(MAKE) ARCH=arm CROSS_COMPILE=$(CROSS_COMPILE) -C /lib/modules/4.14.98-v7+/build M=$(shell pwd)  modules

後はコンパイルしてインストールするだけ。せっかくなので4並列でコンパイルしよう。ちなみに sudo make uninstall && make clean でアンインストールできる。

make -j 4
suod make install

再起動後にwlan1が追加されていればインストール成功である。

reboot
$ ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
    link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff
3: wlan0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
    link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff
4: wlan1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state DOWN mode DORMANT group default qlen 1000
    link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff

将来のカーネル更新を見据えて,dkmsを使ってインストールしておいた方が良いかもしれない。今回は面倒なので普通にmakeしてしまった。

無線LAN接続設定

無線LAN設定はRasPi内蔵の無線LANチップを利用する場合と同じ手順でよい。raspi-config コマンドで設定すれば, /etc/wpa_supplicant/wpa_supplicant.conf にアクセスポイントの設定が保存される。

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=JP

network={
        ssid="XXXXXX"
        psk="XXXXXX"
}

wlan1の設定を /etc/network/interfaces に記述する。例えば,固定IPアドレスを割り当てるなら下記のような感じ。なお,省電力モードへの移行を阻止したかったので wireless-power off の設定も試してみたが,対応していないようだったので無効化した。

auto wlan1
allow-hotplug wlan1
iface wlan1 inet static
  address 192.168.10.2
  netmask 255.255.255.0
  broadcast 192.168.10.255
  gateway 192.168.10.1
  dns-nameservers 192.168.10.1
  wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
  # wireless-power off

接続の安定化

ここまでの設定で無事に5.8Ghzの無線LAN接続が可能になったが,10時間程度経つと無線LAN接続が切れてしまう問題があった。しかも ifdown wlan1 && ifup wlan1 を実行しても接続できず,OSを再起動するしかない。未だ原因ははっきり分かっていないのだが考えられる原因は以下の2つ。

  • 無線LANアダプタが省電力モードになること
  • USBの供給する電力不足

RasPiの無線LANが切れるのは省電力機能が原因という記事 があったので確認してみたが省電力モードの無効化ができないし,そもそもパワーマネジメントが管理されているかもイマイチよくわからなかった。Raspberry Pi/無線LAN/その3-無線LANのみで運用(解決編) - Berry Pie Lab によると省電力機能が有効な場合は rtw_power_mgnt が1になるというが,下記のようにうちの環境では2になる。2とは何を意味するのか...。

$ cat /sys/module/88x2bu/parameters/rtw_power_mgnt
2

そこでwlan1経由で常にpingを打ち続けてみたが,接続断の問題は解決しなかった。したがって,電力不足が原因ではないかと考えている。

lsusbの出力をみるに消費電力は 2.5W (5V/500mA) が上限と大容量を必要とするようだ。やはり,RasPiでUSB機器をつなげるときは何よりも最初に電源の安定供給を考えるべきだろう,ということで今はセルフパワーなUSBハブに無線LANアダプタを接続して様子見をしている。

参考URL

Comments !

social