Orange Pi 3 WiFiの設定

当サイトの環境では取り敢えず有線LANがあれば間に合うのですがやはりWiFiも気になります。

WiFiを使うヒントはarmbianフォーラムに載っていますね。
https://forum.armbian.com/topic/9368-orangepi-3-h6-allwiner-chip/page/15/

wlan0デバイス

初期インストール時点ではWiFiデバイスは見えません。

# cd /lib/firmware/brcm
# cp brcmfmac4356-sdio.bin brcmfmac43456-sdio.bin
# cp brcmfmac4356-sdio.txt brcmfmac43456-sdio.txt


再起動する

wlan0が生えてきました。
(現在開発中のためデフォルトでは有効にしていないものと思います)

WiFi設定ツール

armbian(debian-stretch)にはnetworkingとnetwork-managerの2つのデーモンが走っています。

network-managerはRaspbian(2019-04-08)にはインストールされていませんが現在のlinux系では主流のようです。


nmcliコマンドの練習
helpでは[OPTIONS] OBJECTの順になっていますがWeb上の多くはOBJECT [OPTIONS]で紹介されていると思います。(どっちでもいい)
OBJECT OPTIONSについては一文字で認識します。

nmtui-connect

NetworkManagerにnmtui-connectのコマンドがあります。

$ nmtui-connect


ここからWiFiルーター(aterm-a3b276-a)を選択
出現したダイアログにpskキーを入力
dhcpでIpを取得しました。(簡単に設定できますね)

nmtui

$ nmtui

WiFiは実験用途ですが当サイトのOrangePi3はファイルサーバーとして運用しているのでIPを固定する必要があります。

メニューを進んで行くと編集画面になります。
環境に合わせてIPを固定化します。
自動的に接続するを外してOKにしておきます。

イーサネット(eth0)はnetworking(/etc/network/interfaces)から設定していたのですが同様にNetworkManagerに切り替えます。
networkingは止めて/etc/network/interfacesもdefault設定ファイルに戻します。

# systemctl disable networking

作成されたプロファイル名は有線接続 1になっているかもしれませんがEthernet0に変更しました。
WiFiのデフォルトプロファイル名はルーターのSSIDになるはずです。
IPはWiFiと同じにしてこちらは自動的に接続するにしておきます。
設定したプロファイルは/etc/NetworkManager/system-connections以下に保存されます。
nmcli nmtuiコマンドは初回登録したユーザー権限でOKです。

pythonランチャの作成

下記のプログラムではWiFiで起動する場合はWiFiの自動接続をyesにEthernet0をnoにして再起動します。(Ethernetで起動する場合は逆に)
~/bin/network.py

#!/usr/bin/python3
from tkinter import *
from tkinter import ttk
import subprocess
import time

root = Tk()
root.title('Shutdown Menu')
style = ttk.Style()
style.theme_use('default') #('clam', 'alt', 'default', 'classic')

# Frame as Widget Container
frame1 = ttk.Frame(
    root,
    padding=5)
frame1.grid()

# Button 1 eth0
def eth0():
    subprocess.run("nmcli connection modify Ethernet0 connection.autoconnect 'yes'", shell=True)
    subprocess.run("nmcli connection modify aterm-a3b276-a connection.autoconnect 'no'", shell=True)
    time.sleep(1)
    subprocess.run("sudo reboot", shell=True)
icon1 = PhotoImage(file='~/.icons/ethernet.png')
button1 = ttk.Button(
    frame1,
    image=icon1,
    command=efh0)
button1.grid(row=1,column=1)

# Button 2 wlan0
def wlan0():
    subprocess.run("nmcli connection modify aterm-a3b276-a connection.autoconnect 'yes'", shell=True)
    subprocess.run("nmcli connection modify Ethernet0 connection.autoconnect 'no'", shell=True)
    time.sleep(1)
    subprocess.run("sudo reboot", shell=True)
icon2 = PhotoImage(file='~/.icons/wifi.png')
button2 = ttk.Button(
    frame1,
    image=icon2,
    command=wlan0)
button2.grid(row=1,column=2)

root.mainloop()


ネットワークモニタリングツール

# apt install iptraf slurm wavemon


イーサネットで接続

モニタツール
$ slurm -i eth0


WiFiで接続
WiFiも早そうです。

モニタツール
$ wavemon