OrangePi-PCを使ってみる

USB-Wifiのセットアップ


OrangePi-PC発売当初はUSB-Wifiドングルが使えないトラブルが多かったのですが
久しぶりに家中のドングルを片っ端から確認してみました。
結局、RT3070だけ使えませんでした。
USB-Wifiについては状況がかなり改善されています。
もうUSB-Wifiで悩むことはないでしょう....

デバッグポート、または有線LANでログインし、lsusbを使ってUSB-Wifiで使われているチップを調べます。
赤枠の部分で調べれば、どのようなチップが使われているかが分かります。



RTL8188ETV(0bda:0179 Realtek Semiconductor Corp)

RTL8188EU(0bda:8179 Realtek Semiconductor Corp)

これらは「/etc/modules-load.d/modules.conf」に8189esドライバーを追加する必要があり ます。 
Armbian5.25 からカーネル標準のドライバーで動きます。
ドライバーの追加は不要です。
「/etc/modules」に8189esや8192cuが登録されているときはコメントアウトします。
「/etc/network/interfaces」を修正してリブートすれば完了です。
どちらも非常に安定して動きますが、なぜかどちらのドングルもwlan0とwlan1が現れます。
wlan0のMACアドレスを見ると、嘘っぽいです。
どこかでwlan0を消すコマンドを見たのですが....思い出せません。



RT5370(148f:5370 Ralink Technology, Corp. RT5370 Wireless Adapter)

カーネル標準のドライバーで動きます。
ドライバーの追加は不要ですが、ファームウエアをインストールする必要があります。 → Armbian5.25 から不要になりました。
sudo apt-get install firmware-ralink

「/etc/modules」に8189esや8192cuが登録されているときは
(OPI-PCには、なぜか8189esが最初から登録されているので)これをコメントアウ トします。
これらの変更を行ったのち、「/etc/network/interfaces」を修正してリブートすれば完了です。


RTL8188CUS(0bda:8176 Realtek Semiconductor Corp. RTL8188CUS 802.11n WLAN Adapter)

カーネル標準のドライバーにはバグが有ります。
「/etc/network/interfaces」を修正してリブートするとカーネルがクラッシュします。
Armbian5.31でも修正されていませんでした。

こ ちらこ ちらで紹介されている方法で、ドライバーを更新する必要があります。
一応転載しておきますが、いくつか注意点が有ります。
・Armbianインストール時にはUSB-Wifiを抜いておく。
USB-Wifiが刺さった状態でArmbianをインストールするとインストール後の再起動時にクラッシュします。
・以下のコマンドの実行が完了するまでUSB-Wifiを抜いておく。
以下のコマンドを実行する時には有線LANで繋いでおく必要があります。
要するにドライバーアップデートが完了するまでUSB-Wifiは一切使わないということです。
sudo apt-get install dkms
git clone https://github.com/pvaret/rtl8192cu-fixes.git
sudo dkms add ./rtl8192cu-fixes
sudo dkms install --force 8192cu/1.10
sudo depmod -a
sudo cp ./rtl8192cu-fixes/blacklist-native-rtl8192.conf /etc/modprobe.d/
sudo reboot

再起動後に初めてUSB-Wifiを入れると正しく認識しますので、「/etc/network/interfaces」を修正してリブートしま す。


最後に「/etc/rc.local」に「sudo depmod -a」の追加が必要です。
orangepi@orangepipc:~$ cat /etc/rc.local
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

sudo depmod -a

exit 0

これをしておかないと、パッケージアップデートでカーネルをアップデートした時に、
うっかり再起動すると、Wifiが全く使えなくなります。
パッケージアップデートでカーネルをアップデートした時は、
「sudo halt」で一度電源を切ってから入れ直すとドングルを認識ます。
「sudo reboot」では認識しませんでした。



上の状態で再起動するとWifiが使えなくなります。
使えなくなったときは、有線LANかデバッグポートを使ってログインし、「sudo depmod -a」で復活します。

こちらのドキュメントによ ると、以下のWifiも同じ手順で使えるようになると書かれています。
・RTL8188CU
・RTL8188CE-VAU
・RTL8188RU
・RTL8192CU


RTL8192EU(0bda:818b Realtek Semiconductor Corp.)

こ ちらにドライバーのインストール手順が公開されています。
一応転載しておきます。
git clone https://github.com/shahidali55/rtl8192eu_3
cd rtl8192eu_3
make ARCH=arm
sudo make install
sudo reboot

再起動するとドングルを認識しますので、「/etc/network/interfaces」を修正してリブートします。
こちらも最後に「/etc/rc.local」に「sudo depmod -a」の追加が必要です。
orangepi@orangepipc:~$ cat /etc/rc.local
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

sudo depmod -a

exit 0

パッケージアップデートでカーネルをアップデートした時は、
「sudo halt」で一度電源を切ってから入れ直すとドングルを認識ます。
「sudo reboot」では認識しませんでした。



MT7601(148f:760b Ralink Technology, Corp.)

MT7601U(148f:7601 Ralink Technology, Corp.)

久しぶりに試しましたが、(いつの間にか)カーネル標準のドライバーで使えるようになっていました。
RTLXXXのドングルはwlan0とかwlan1として認識しますが、これらはra0として認識します。



RTL8811AU(0bda:a811 Realtek Semiconductor Corp.)

2.4GHz/5GHzの両方に対応しているドングルです。
こちらにドライバーが公開さ れています。
以下の手順でドライバーをインストールすることができます。
git clone https://github.com/emmercm/rpi-rtl8812au
cd rpi-rtl8812au
chmod 777 ./rpi-rtl8812au
sudo ./rpi-rtl8812au

リブートするとWifiを認識します。
こちらも最後に「/etc/rc.local」に「sudo depmod -a」の追加が必要です。


RT3070(148f:3070 Ralink Technology, Corp. RT2870/RT3070 Wireless Adapter)

モジュールそのものを認識しません。
dmesgに以下のエラーが表示されました。

[    8.526122] phy0 -> rt2800_init_eeprom: Error - Invalid RF chipset 0x3070 detected.
[    8.526142] phy0 -> rt2x00lib_probe_dev: Error - Failed to allocate device.

rt2800usbのドライバーをアップデートす れば動くようになります。



以前から気になっていましたが、以下のUSBドングルのパフォーマンスを調べてみました。
使用したツールは speedtest-cli で、インストールはこちらを 参考にさせていただきました。
このツールはテストで使用するサーバーを選ぶことができます。
サーバーのリストはこちらにあります。
東京のサーバー(7510)を使いました。
何回か測定した中のDownload最速値です。

Model Ping Download Upload
RTL8188ETV 56.544 ms 27.85 Mbit/s 7.23 Mbit/s
RTL8188EU 63.414 ms 36.82 Mbit/s 6.97 Mbit/s
RTL8188CUS 152.172 ms 31.74 Mbit/s 7.09 Mbit/s
RT5370 58.487 ms 24.55 Mbit/s 6.77 Mbit/s
RTL8192EU 182.343 ms 48.25 Mbit/s 6.68 Mbit/s
MT7601 284.014 ms 27.58 Mbit/s 6.66 Mbit/s
MT7601U 68.458 ms 39.11 Mbit/s 6.94 Mbit/s
RTL8811AU 54.589 ms 30.92 Mbit/s 6.68 Mbit/s

さすがにRTL8192は早いです。



wifiドングルを同じチップの別の物に交換すると、以下の様におかしな名前のインターフェースになることが有ります。


また、wifiドングルを別のチップの物に交換すると、以下の様にwlanの番号が増えていきます。


これは「/etc/udev/rules.d/70-persistent-net.rules」に今まで使ったwifiドングルのMACアドレ スが記録されるからです。
このファイルにwifiドングルのMACアドレ スが記録される目的は.....各自調べて下さい。
とにかくこのファイルがあるとwifiドングルを交換するときに何かと問題が起きます。


そこで、wifiドングルを交換するときは以下の手順で交換します。
@有線LAN、またはデバッグポートを使ってログインする。
Awifiドングルを外す。
Bリブート
C有線LAN、またはデバッグポートを使ってログインする。
Dsudo rm /etc/udev/rules.d/70-persistent-net.rules
 ドングルを抜いたときに自動的に消えるものと消えないものが有ります。
E新しいwifiドングルを刺す

次回はArmbianのモニターリングツールを紹介します。