OrangePi-PCを使ってみる

USB-Wifiのセットアップ


OrangePi-PC発売当初はUSB-Wifiドングルが使えないトラブルが多かったのですが
久しぶりに家中のドングルを片っ端から確認してみました。
結局、全てのモジュールが使えました。
USB-Wifiについては状況がかなり改善されています。
150Mbpsや300Mbpsのドングルも(それほど早くはないですが)問題なく使えます。
もう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/network/interfaces」を修正してリブートすれば完了です。
どちらも非常に安定して動きますが、なぜかどちらのドングルもwlan0とwlan1が現れます。
wlan0のMACアドレスを見ると、嘘っぽいです。
どこかでwlan0を消すコマンドを見たのですが....思い出せません
久しぶりにArmbian5.35をクリーンインストールしたらwlan0だけになりました。

<補足>
ネットワークの設定方法は以下の2つの方法が有ります。
@[/etc/network/interfaces]
ANetworkManager

Debian jessieでは[/etc/network/interfaces]にWifiの設定を行いますが、
Ubuntu xenialではNetworkManagerでWifiの設定を行います。
NetworkManagerでのWifiの設定は、こ ちらで紹介しています。

なお、Debian jessieであっても、[/etc/network/interfaces]がデフォルトで有るモデルと、ないモデルが有ります。
[/etc/network/interfaces]がないモデルではNetworkManagerでWifiの設定を行います。
OPI-Liteの様に有線LANを持たないモデルは[/etc/network/interfaces]がないケースが多いのですが
一貫性がありません。
</補足>




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は一切使わないということです。

最初にこちらの手順でカーネルヘッダーをインストールします。
Ubuntu xeniaでは、さらにこちらの手順でコンパイラーのバー ジョ ンを4.9に変更しておく必要があります。
カーネルヘッダーのインストールが終わったら、以下の手順でドライバーをインストールします。
$ sudo apt-get install dkms
$ git clone https://github.com/pvaret/rtl8192cu-fixes.git
$ sudo dkms add ./rtl8192cu-fixes

Creating symlink /var/lib/dkms/8192cu/1.11/source ->
                 /usr/src/8192cu-1.11

DKMS: add completed.

$ sudo dkms install --force 8192cu/1.11

Kernel preparation unnecessary for this kernel.  Skipping...

Building module:
cleaning build area....
make KERNELRELEASE=3.4.113-sun8i -C /lib/modules/3.4.113-sun8i/build M=/var/lib/dkms/8192cu/1.11/build.........................................
cleaning build area....

DKMS: build completed.

8192cu.ko:
Running module version sanity check.
 - Original module
 - Installation
   - Installing to /lib/modules/3.4.113-sun8i/updates/dkms/

depmod.....

Backing up initrd.img-3.4.113-sun8i to /boot/initrd.img-3.4.113-sun8i.old-dkms
Making new initrd.img-3.4.113-sun8i
(If next boot fails, revert to initrd.img-3.4.113-sun8i.old-dkms image)
update-initramfs.........

DKMS: install completed.

$ 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.)

こ ちらに Raspbianの ドライバーが公開さ れていますが、Armbianでもインストールすることができます。
最初にこちらの手順でカーネルヘッダーをインストールします。
カーネルヘッダーのインストールが終わったら、以下の手順でドライバーをインストールします。
Ubuntu xeniaではなぜかリンクでエラーになります。解決策は調査中です。
Ubuntu xeniaでは、先にこちらの手順でコンパイラーのバージョ ンを4.9に変更しておく必要があります。(これ、分かるのに苦労しました)
$ git clone https://github.com/lord2y/rtl8192eu-arm-linux-driver
$ cd rtl8192eu-arm-linux-driver
$ make ARCH=arm
$ sudo make install
install -p -m 644 8192eu.ko  /lib/modules/3.4.113-sun8i/kernel/drivers/net/wireless/
/sbin/depmod -a 3.4.113-sun8i
$ sudo reboot

リブートすると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

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



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

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

2016年頃にはカーネル標準のドライバーで使えるようになっていましたが、その後、カーネル標準からドライバーが削除されました。
こ ちらに 比較的新しいLinuxの ドライバーソースが公開さ れていますが、Armbianでもインストールすることができます。
ただ、色々探ってみると、どうやらこのソースにはバグがあるそうです。

最初にこ ちらの手順でカーネルヘッダーをインストールします。
カーネルヘッダーのインストールが終わったら、以下の手順でドライバーをインストールします。
$ git clone https://github.com/art567/mt7601usta.git
$ cd mt7601usta/src
$ make
$ sudo make install
$ sudo modprobe mt7601Usta
$ sudo reboot

リブートするとWifiを認識しますが、確かに安定して使えません。
あえてこれを使う理由はないので、他のUSBモジュールを使った方がいいです



RTL8811AU(0bda:a811 Realtek Semiconductor Corp.)

2.4GHz/5GHzの両方に対応しているドングルです。
こちらにRaspbianの ドライバーが公開さ れていますが、Armbianでもインストールすることができます。

RTL8192EUと同様に、最初にこちらの手順でカーネルヘッダーをイン ストールします。
カーネルヘッダーのインストールが終わったら、以下の手順でドライバーをインストールします。
Ubuntu xeniaではなぜかリンクでエラーになります。解決策は調査中です。
Ubuntu xeniaでは、先にこちらの手順でコンパイラーのバージョ ンを4.9に変更しておく必要があります。
$ git clone https://github.com/emmercm/rpi-rtl8812au
$ cd rpi-rtl8812au
$ chmod 777 ./rpi-rtl8812au
$ sudo ./rpi-rtl8812au
Checking online version ...
   4.2.2

Checking for installed driver ...
   Did not find any driers

Checking rtl8812au HEAD version ...
   ad1b9e30ce5f03b20e97c7b95ff90215a07924ec

Cloning from git ...
Running make ...
   Installing ...
      Install succeeded

$ sudo reboot

リブートするとWifiを認識しますので、「/etc/network/interfaces」を修正してリブートします。


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

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



以前から気になっていましたが、以下のUSBドングルのパフォーマンスを調べてみました。
使用したツールは speedtest-cli で、インストールはこちらを 参考にさせていただきました。
何回か測定した中のDownload最速値です。
$ sudo apt-get install python-pip
$ sudo pip install speedtest-cli
$ speedtest --simple

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(300Mbps) 70.863 ms 39.71 Mbit/s 6.66 Mbit/s
MT7601 284.014 ms 27.58 Mbit/s 6.66 Mbit/s
RTL8811AU(150Mbps) 54.589 ms 30.92 Mbit/s 6.68 Mbit/s
RT3070 52.052 ms 30.22 Mbit/s 6.72 Mbit/s

RTL8192EU(300M)は期待していたんですが、全く期待外れの結果となりました。



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のモニターリングツールを紹介します。