Orange Pi 3 cpufrequtils

OrangePi3にはデフォルトでcpufrequtilsがインストールされていてarmbian-configから動作クロックやモードを変更することができます。

現在は開発バージョンということもありほぼ毎日アップグレードが入っています。

armbian-configから設定した値は保持されるのですがアップグレード後の再起動では初期値に戻ってしまいます。
状況に応じてもう少し簡単に動作クロックを変更できるようにしてみたいと思います。

アップグレード

# apt update && apt upgrade


現在のバージョン
armbian-image-release
カードを作成、インストール時のバージョン
armbian-release
アップグレード後のバージョン

armbian-config system cpu


クロックは9ステップ、governorは6モードあります
minimum 480MHz
maximum 1.8GHz
governor ondemand


設定した値は/etc/default/cpufrequtilsに記載されます。

minimum 480MHz governor ondemand は固定としてmaximumの値を変更します。


アイコンを作成
888MHzから1.8GHzの6Stepを切り替えます。

pythonランチャの作成

TKなどのインストールはZeroの記事を参照
書き換えは簡単に済ませるためsedを実行しています。(4行目を削除、新たに値をインサート)
~/bin/cpufreq.py

#!/usr/bin/python3

from tkinter import *
from tkinter import ttk
import subprocess
import time
import sys

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
def cpu888M():
    subprocess.run("sudo sed -i '4d' /etc/default/cpufrequtils", shell=True)
    subprocess.run("sudo sed -i '4i MAX_SPEED=888000' /etc/default/cpufrequtils", shell=True)
    subprocess.run("sudo systemctl restart cpufrequtils", shell=True)
icon1 = PhotoImage(file='~/.icons/cpu888M.png')
button1 = ttk.Button(
    frame1,
    image=icon1,
    command=cpu888M)
button1.grid(row=1,column=1)

# --- 省略 ---

# Button 6
def cpu180G():
    subprocess.run("sudo sed -i '4d' /etc/default/cpufrequtils", shell=True)
    subprocess.run("sudo sed -i '4i MAX_SPEED=1800000' /etc/default/cpufrequtils", shell=True)
    subprocess.run("sudo systemctl restart cpufrequtils", shell=True)
icon6 = PhotoImage(file='~/.icons/cpu180G.png')
button6 = ttk.Button(
    frame1,
    image=icon6,
    command=cpu180G)
button6.grid(row=2,column=3)

root.mainloop()

cpuは熱くなる


通常のファイルサーバーとしては1.8GHz動作でもほとんど問題ないのですがmp4エンコードなどではcpu温度が90℃を超えてきます。
Raspbianではクロック制御が入ってきますがarmbianではいまのところ無いようです。

http://www.orangepi.org/orangepibbsen/forum.php?mod=viewthread&tid=244

some temp:
cat /sys/devices/virtual/thermal/thermal_zone0/temp
current cpu freq:
cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq


cpuには温度に対する何らかの保護回路があると思いますが危険な領域に突入しています。

アイドリング時は1.8GHz動作も変わらず現在のところ50℃以下に治まっています。


cpufrequtilsは実行中でもリアルタイムに制御します。
1.32GHzまで下げると72℃前後で落ち着いてきます。この辺は放熱板とのバランスになりますね。
(適当放熱板では少々役不足のようです)
それでもエンコードスピードはそれほど下がらずRPi3より早い。

通常運用は1.32GHz〜1.49GHzで行こうと考えています。
起動はshutdown.pyを含めてスクリプトで実行しています。(適当にdmenuやボタンに登録)
~/bin/shutdown.sh

#!/bin/sh
~/bin/cpufreq.py &
sleep 1
~/bin/shutdown.py &
sleep 1
xterm -e htop &

Orange Pi 3 onboard LED

armbianのフォーラムにonboard LEDについての話題が上がっていますね。
https://forum.armbian.com/topic/9368-orangepi-3-h6-allwiner-chip/page/17/

デフォルトの動作は電源オン後数秒で赤LED点灯そのままの状態になっています。(armbian)
赤LEDはかなり眩しいので当サイトのOrangePi3でも試してみることにしました。

LED制御

LEDは電源入力端子付近にあります。赤(D8)緑(D9)
もう1個USB3.0ハブIC近くにあるのですがUSB3.0端子になにか接続すると点灯します。USB機器を認識したぞというモニターでしょうか?(使えるかどうかは別問題)
制御できるのは(D8)(D9)になると思います。

ちなみにLEDそばにあるタクトSW(SW6)はSchematicを見るとPCIeのリセットスイッチになっているようです。


LEDの制御方法はRaspbianとほぼ一緒だと思います。

/sys/class/leds/orangepi:red:powerはリンクになっているのでどちらを指定しても同じです。

以下のトリガのなかからいくつか試したのですが確認できたのはnone default-on heartbeatだけでした。(実装はまだのようです)

$ cat trigger
[none] kbd-scrolllock kbd-numlock kbd-capslock kbd-kanalock kbd-shiftlock kbd-altgrlock kbd-ctrllock kbd-altlock kbd-shiftllock kbd-shiftrlock kbd-ctrlllock kbd-ctrlrlock usbport usb-gadget usb-host disk-activity disk-read disk-write ide-disk mtd nand-disk heartbeat cpu cpu0 cpu1 cpu2 cpu3 default-on panic mmc0 mmc1 mmc2 rfkill-any rfkill-none bluetooth-power hci0-power rfkill0 hci1-power rfkill1 stmmac-0:01:link stmmac-0:01:1Gbps stmmac-0:01:100Mbps stmmac-0:01:10Mbps rfkill2

デフォルトで点灯している赤を消灯するにはフォーラムにあるとおり一旦default-onかheartbeatを実行してからnoneを実行する必要があります。

$ pwd
/sys/devices/platform/leds/leds/orangepi:red:power
$ sudo sh -c "echo heartbeat > trigger"
$ sudo sh -c "echo none > trigger"

rc.localからコントロール

/etc/rc.local

#!/bin/sh -e
# rc.local

# LED Control
echo "heartbeat" > /sys/class/leds/orangepi:red:power/trigger
sleep 3
echo "none" > /sys/class/leds/orangepi:red:power/trigger
echo "default-on" > /sys/class/leds/orangepi:green:status/trigger

exit 0

電源接続数秒でデフォルトの赤LED点灯、10秒後位でheartbeat3回点滅後消灯、緑LED点灯
OSの立ち上がりもわかっていい感じになりました。

Orange Pi 3 TightVNC設定ファイル

TightVNCは動作も軽快で設定も比較的容易なことからよく利用しています。(RaspbianではプリインストールされているRealVNCとは共存できません)

通常は少し小さめのウインドウサイズで起動していますがOPi3では動画の再生もRPi3よりもスムーズに再生が可能です。
作業用途、目的によってウインドウサイズを切り替えてみようと思います。
設定ファイルはOrange Pi 3,Raspberry PI Zeroで確認していますがLinux系であれば共通だと思います。

設定ファイル(~/.vncrc)


実行コマンドvncserverは/etc/alternativesに登録されています。
alternativesでは/usr/bin/tightvncserverにリンクを張っています。
tightvncserverはperlで書かれたスクリプトになっています。
optionを渡して実際起動するのはXtightvncですね。
Xtightvncは~/.vnc/xstartupを読みにいきます。


/usr/bin/tightvncserverをつらつら眺めてると40行目あたりにデフォルトのoption設定があります。
さらに80行目あたりで/etc/vnc.confがあれば読んで最終的にホームディレクトリの~/.vncrcを適用します。
必要なoptionは~/.vncrcに記述して実行コマンドは $ vncserver :1だけで行けそうです。

当サイトでは以下の3行を記述しています。
~/.vncrc

$geometry     = "840x528";
$depth        = 24;
$desktopName  = "Orange Pi 3";

pythonランチャーに追加
~/bin/shutdown.pyに追記(Button 3,4だけ掲載 ほかZeroの記事参照)

#!/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 3 monitorl
def monitorl():
    with open('/home/pi/.vncrc', 'r') as f:
        s = f.read()
        s = s.replace("840x528","1020x632")
    with open('/home/pi/.vncrc', 'w') as f:
        f.write(s)
    time.sleep(1)
    subprocess.run("vncserver -kill :1 && sleep 1 && vncserver :1", shell=True)
icon3 = PhotoImage(file='~/.icons/monitor-L.png')
button3 = ttk.Button(
    frame1,
    image=icon3,
    command=monitorl)
button3.grid(row=2,column=1)

# Button 4 monitors
def monitors():
    with open('/home/pi/.vncrc', 'r') as f:
        s = f.read()
        s = s.replace("1020x632","840x528")
    with open('/home/pi/.vncrc', 'w') as f:
        f.write(s)
    time.sleep(1)
    subprocess.run("vncserver -kill :1 && sleep 1 && vncserver :1", shell=True)
icon4 = PhotoImage(file='~/.icons/monitor-S.png')
button4 = ttk.Button(
    frame1,
    image=icon4,
    command=monitors)
button4.grid(row=2,column=2)

root.mainloop()

上記の例では置き換えをしているのでmonitorl or monitorsで指定した値のどちらかを~/.vncrcに記載する必要があります。(プログラム次第)
切替時はX上で実行しているアプリケーションは終了します。
切り替え後は再度vncviewerからログインします。

当サイトのデイスプレイはXGA(1024×768)なので1020×632を指定しています。1020以上はスクロールバーが出現

コピーペースト

TightVNCでは日本語(マルチバイト)のコピーペーストは不可ですね。
それ以外は(ほとんど)下記の設定で通常の選択コピー、中ボタンペーストが可能です。
TightVNC copy/paste between local OS and Raspberry Pi?
~/.vnc/xstartup

autocutsel -s CLIPBOARD -fork
autocutsel -s PRIMARY -fork

日本語のコピーをしたい場合はメーラー経由(下書き)でやっています。

xterm(~/.Xresources)

xterm(~/.Xresources)の設定は環境でかなり違ってくると思いますが当サイトでは以下の設定でRaspberryPi3を含めてうまく動作(表示)しています。(フォントサイズ、カラースキームは任意で)

XTerm*utf8              : 1
XTerm*locale            : false
XTerm*faceName          : monospace
XTerm*faceSize          : 11.5
XTerm*fontDoublesize    : true
XTerm*saveLines         : 2000
XTerm*geometry          : 80x24
XTerm*charClass: 33:48,37:48,45-47:48,38:48,64:48

XTerm*background: #222222
XTerm*foreground: #DDDDDD
XTerm*color0:     #333333
XTerm*color1:     #A94952
XTerm*color2:     #83A949
XTerm*color3:     #A99F49
XTerm*color4:     #4983A9
XTerm*color5:     #A94983
XTerm*color6:     #49A99F
XTerm*color7:     #AAAAAA
XTerm*color8:     #666666
XTerm*color9:     #ED6975
XTerm*color10:    #B8ED69
XTerm*color11:    #EDE169
XTerm*color12:    #69B8ED
XTerm*color13:    #ED69B8
XTerm*color14:    #69EDE1
XTerm*color15:    #DDDDDD

Orange Pi 3 ファイルサーバー

Orange Pi 3ファイルサーバーの運用を開始しました。
これまでのファイルサーバーはRaspberry pi Zeroで運用していましたがそれに置き換えてのOrange Pi 3です。

現在のOrange Pi 3のarmbianは開発バージョンですがファイルサーバーという特定の用途でもありまたバージョンアップに関してもSDカードから起動しているので新旧2枚のカードを用意してあれば特に大きな問題は無いと思っています。
必要なデーモンは前回のX環境にインストールしていきます。

電源入力基板

ZeroではUSB-B端子に供給していたので簡単に作成

ボードのGPIO端子(2番4番+5V)に供給、GNDは9番25番に接続
USB-Aは3.5インチHDD12V昇圧用
特に問題なく起動しました。ボード側もかなり電流を流せる仕様になっていると思います。

NFSサーバー

実験時はnfs clientとして動かしていました。

# apt install nfs-common

nfs server

# apt install nfs-kernel-server

blkidで該当デバイス検索

# blkid (LABEL名は任意で付けてある)
/dev/sdc1: LABEL="HD2.5" UUID="1d402e29-277b-47a5-90b2-ff3b02e853d6" TYPE="ext4" PARTUUID="c0b17145-01"
/dev/sdd1: LABEL="HD3.5" UUID="71ab5856-cbc2-4d71-a2c5-8bc246659277" TYPE="ext4" PARTUUID="07aafb9f-01"

fstabはUUIDで記載されています。(適当なところにディレクトリを作成マウント)
/etc/fstab

# 2.5 HDD
UUID=1d402e29-277b-47a5-90b2-ff3b02e853d6 /home/hda ext4 defaults,noatime 0 0
# 3.5 HDD
UUID=71ab5856-cbc2-4d71-a2c5-8bc246659277 /home/hd3.5 ext4 defaults,noatime 0 0

3.5インチHDDはバックアップ専用なので公開しない
/etc/exports

/home/hda   192.168.0.0/24(rw,async,crossmnt,no_root_squash,no_subtree_check)
#/home/hd3.5 192.168.0.0/24(rw,async,crossmnt,no_root_squash,no_subtree_check)

sambaサーバー

# apt install samba

/etc/samba/smb.conf

[global]
    server string = Orange Pi 3 SMB Server
    security = USER
    map to guest = Bad User
    guest account = root
    log level = 0
    syslog = 0
    load printers = No
    printcap name = /dev/null
    disable spoolss = Yes
    preferred master = No
    local master = No
    domain master = No
    dns proxy = No
    create mask = 0775
    directory mask = 0775
    printing = bsd
    browseable = Yes

[SHARE]
    comment = share
    path = /home/hda/share
    read only = No
    guest ok = Yes

TEST

再起動して簡単なテストをしてみます。
サーバー側で1GBのファイルを作成、Zeroの場合と比較してみます。

# Zero
pi@Zero:/home/hda/hda4/tmp $ dd if=/dev/zero of=1GB bs=1M count=1000
1000+0 レコード入力
1000+0 レコード出力
1048576000 bytes (1.0 GB, 1000 MiB) copied, 44.9399 s, 23.3 MB/s
# Orangepi3
pi@orangepi3:/home/hda/hda4/tmp $ dd if=/dev/zero of=1GB bs=1M count=1000
1000+0 レコード入力
1000+0 レコード出力
1048576000 bytes (1.0 GB, 1000 MiB) copied, 9.28976 s, 113 MB/s

Raspberry Pi3からnfsマウントして作成したファイルをRaspberry Pi3の/tmpへコピーしてみます。

# Zero
pi@pi3:/tmp $ time cp /home/hda/hda4/tmp/1GB ./
real	5m10.313s
user	0m0.073s
sys	0m10.603s
# Orangepi3
pi@pi3:/tmp $ time cp /home/hda/hda4/tmp/1GB ./
real	3m2.558s
user	0m0.057s
sys	0m8.803s


各設定ファイルはZeroからコピーしています。
Raspberry Pi3からのコピーはUSB2.0の制限があるのでそれほど早くはなりませんね。
Orangepi3ではGUI環境もあるのでいろいろとファイルサーバー側で実行することができます。


Orange Pi 3 ファイルサーバーを有効に活かすためにはやはり次期Raspberry Piのリリースを待つしかないのですがarmbianの進捗をみるとそう簡単では無いように思います。
従来の3系も64bit化(?)と推測されることからもう少し先でしょうか。

Orange Pi 3 サーバー X環境

当サイトのOrange Pi 3はファイルサーバー(nfs,samba)を目指しています。

いまのところOrange Pi 3 AllWinner H6 1.8GHzは思ってた以上にパフォーマンスを発揮しているものと感じています。
前回のPi Zeroと同様に最低限のX環境を構築、Raspberry Pi 3からvncで接続してできるところはOrange Pi 3で実行してみたいと思います。

またarmbianは現在のところ開発バージョンということでwifiなどのハード的な設定やその他項目などまだ開発途上ですがdebianベースの基本的なサービスはほぼ問題ないと考えています。

Orangepi3_Debian_stretch

Armbian_5.83.190502_Orangepi3_Debian_stretch_dev_5.0.10.img

xserverのインストール

lang timezoneなどは前回記事参照
tightvncが起動する最低限必要なパッケージをインストール

# apt install xserver-xorg x11-xserver-utils xterm
# apt install fontconfig xfonts-base xfonts-100dpi xfonts-75dpi xfonts-scalable

日本語フォント、日本語入力環境につては前回記事参照

tightvncserverのインストール

# apt install tightvncserver autocutsel

~/.vnc/xstartup

#!/bin/csh
xmodmap -e "keysym Meta_L = Super_L"
xmodmap -e "keysym Meta_R = Super_R"
xrdb $HOME/.Xresources
autocutsel -fork &
xsetroot -solid gray3
xterm -e ranger &
dwm &
scim -d

window manager dwm

dwm6.2 http://dwm.suckless.org/
dwmを使いやすくするにはコンパイル作業は必須です。

# apt install libx11-dev libxinerama-dev libxft-dev suckless-tools

filer ranger

rangerは最新の安定バージョンを入れてみました。
DownloadページのStable: ranger-stable.tar.gzが最新の安定バージョン現時点ではranger 1.9.2
ページにあるとおり展開するだけで実行が可能です。
~/.config/ranger以下に設定ファイルを置けばその設定通り実行します。

$ tar ranger-stable.tar.gz
$ cd ranger-1.9.2
$ ./ranger.py

システムにインストールするにはそのディレクトリから

$ sudo make install

インストールした内容はinstall_log.txtに保存されています。
その他のパッケージはaptでインストール

# apt install file w3m-img highlight poppler-utils atool mediainfo ffmpegthumbnailer


画像のプレビューにはxtermが間違いないと思います。Lxterminal,gnome-terminalでは表示できません。xtermは設定(~/.Xresources)をしておきます。
rangerについての設定、説明はweb上にたくさんあると思います。(割愛)

armbian Debian_stretchにはfileコマンドがありません。fileコマンドをインストールしてないとscope.shからmime判定ができずテキスト、画像を含めてプレビューはほとんど不可になります。

filer pcmanfm

画像など一覧形式で見るにはpcmanfmが使いやすいです。

# apt install pcmanfm lxappearance lxde-icon-theme oxygen-icon-theme


lxappearanceはフォント、文字サイズを変更します。またインストールしたアイコンセットも変更します。
rangerの項でインストールしたユーティリティはpcmanfmの画像、動画のプレビューにも適用されます。


gpicviewなどインストールしておけば適切なアプリケーションが起動します。
やはりテキストファイル、システムファイルの閲覧検索はrangerが使いやすいですね。
ユーザーの設定ファイル編集もいい


初回の動画プレビューもRaspberry pi3と比べるとずっと早いです。


mpvをインストール、再生してみました。
Raspberry pi3ではキャッシュを溜め込む間画像、音声が乱れがちになるのですがvnc接続で見たH6では安定して再生します。cpuパワーの差は大きいですね。

いまはまだOrange pi3もnfsクライアントですがUSB3.0にHDDを接続、電源をうまいこと供給できればずっと早くなる算段をしています。

Top