Raspberry Pi Zero Raspbian Buster

Raspberry Pi 4の発表に伴ってRaspbian Busterがリリースされていますね。本家より先に正式リリースされるとは予想だにできませんでした。

まずは当サイトRPi3のサブとして使っているRaspberry Pi Zeroで試してみたいと思います。Zeroはヘッドレスで運用しているのでこれまで同様の方法でインストールしてみます。

Raspbian Buster with desktop

ダウンロードしてSDカードに焼いたら起動する前にネットワークの設定を書き込みます。
bootにはsshの空ファイルを作成。
/etc/dhcpcd.conf (ネットワーク帯は各自で)

interface wlan0
static ip_address=192.168.0.10
static routers=192.168.0.1
static domain_name_servers=192.168.0.1

/etc/wpa_supplicant/wpa_supplicant.conf

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=JP
network={
        ssid="aterm-a3b276-g"
        psk="xxxxxxxxxx"
        proto=RSN
        key_mgmt=WPA-PSK
        pairwise=CCMP
        group=CCMP
        priority=2
}

ZeroにSDカードをセット起動、RPi3からsshでログイン

$ ssh pi@192.168,0,10

ログインしたらロケールとタイムゾーンを設定(root権限で# raspi-config)

アップデート

# apt update && apt -y upgrade

realvncは得意じゃないのでtightvncに変更

# apt install tightvncserver autocutsel


realvnc-serverは削除されます。

tightvncserver起動、パスワード設定

$ vncserver -geometry 850x540 # ジオメトリは適当に
You will require a password to access your desktops.
Password: 
Verify:   
Would you like to enter a view-only password (y/n)? n # noでOK
New 'X' desktop is raspberrypi:1
Creating default startup script /home/pi/.vnc/xstartup
Starting applications specified in /home/pi/.vnc/xstartup
Log file is /home/pi/.vnc/raspberrypi:1.log

raspberripi3にはtigervnc-viewerをインストールしています。
IP:ディスプレー番号1、または名前解決できていればホストネーム:ディスプレー番号1
上の例ではraspberrypi:1なのでポート5900+1=5901にアクセスします。(vncserverは複数起動可能)

$ vncviewer 192.168.0.10:1

tightvncserverもhelpを見ると-passwd optionが使えますね。上で設定したファイルZeroの(~/.vnc/passwd)をRPi3の(~/.vnc)にコピー、ファイル名変更(~/.vnc/zero)以下のようにアクセスするとパスワード入力無しに接続できます。

$ vncviewer -passwd /home/pi/.vnc/zero 192.168.0.10:1


一見すると壁紙の変更以外stretchと大きな違いは無いように見えます。(当然内容は大幅に更新されているのですが)
Zeroでも比較的スムーズに立ち上がります。

当サイトのZeroはデスクトップ用途では無いのでRaspbian Buster Liteをインストールしてみます。

Raspbian Buster Lite

Liteをダウンロード、SDカードを作成、desktop同様に初期設定を済ませます。
主にインストールしたパッケージは以下の通り

# apt install xserver-xorg x11-xserver-utils fontconfig xterm vim
# apt install tightvncserver autocutsel
# apt install ranger highlight poppler-utils atool mediainfo
# apt install python3-pip python3-tk python3-rpi.gpio
# apt install kpartx suckless-tools xbindkeys udiskie
# apt install p7zip-full libparted-i18n
# apt install leafpad lxappearance gpicview mupdf
# apt install uim uim-anthy fonts-ipafont fonts-ricty-diminished

ウインドウマネージャdwmはコンパイルしたものを/usr/local/binにコピー

設定ファイルはstretchで作成したものをコピーしています。
今回はdwm(タイル型)のみにしたせいかrangerから画像ファイルのプレビューができなくなってしまいました。(mime設定が無い?rangerの設定?)これ以外はOK

stretchからbusterに移行できました。

Orange Pi 3 System Tool

Raspberry Pi 4もいよいよ満を持してリリースされましたね。
さてOrangePi3ですが(Armbian_5.89.190626_Orangepi3_Debian_stretch_dev_5.1.12.img)のdtbも正常に起動しないようです。
kernel5.2になったら正常になるものと期待しています。

ここまでいろいろ試してきましたが現在の時点でできることやりたいことがおおよそ見えてきたところで少し整理してみたいと思います。
これまでシャットダウンボタンやcpuクロックボタンやら作成してきたのでsystem.pyとtool.pyの2つにまとめてみました。

$ uname -a
Linux orangepi3 5.1.12-sunxi64 #5.89.190626 SMP Wed Jun 26 01:36:31 CEST 2019 aarch64 GNU/Linux

system.py tool.py


一つのタグに纏めています。
アイコンは64×64に縮小、作成


osの再起動やvncserverの再起動はメッセージボックスで確認を取ります。
cpuボタンの一つを現在の設定確認用に割り当てました。


Ethernetはslurm
WiFiはwavemon
でモニター


webブラウザはw3m-imgとsurf
w3mは主にダウンロードに使っています。ダウンロードする際は保存したいディレクトリから起動します。
wgetでは面倒なcookieの必要とするサイトなどに便利です。
surfはw3mのbookmark(~/.w3m/bookmark.html)を利用して起動時のホームにしています。

# apt install surf


googleへのログインやyoutubeの視聴はできませんが検索などは問題ありません。

参考(ディレクトリなどは適宜変更)
system.py
tool.py

Orange Pi 3 multimedia

OrangePi3(armbian)のサウンドドライバもまだのようですね。
現時点ではOrangePi3のオーディオジャックから音を出すことはできませんがLan内にpluseaudio serverがあれば音声を送ることで再生が可能です。

当サイトではmoode audio(raspbian base)をpluseaudio serverにしてOrangePi3の音を出しています。

OrangePi3 Sound

$ uname -a
Linux orangepi3 5.1.12-sunxi64 #5.89.190620 SMP Thu Jun 20 23:59:56 CEST 2019 aarch64 GNU/Linux

sound cardは見えていません。

$ cat /proc/asound/cards
--- no soundcards ---

pulseaudioのインストール

# apt install pulseaudio

インストールしたらclient.confを作成
~/.config/pulse/client.conf

autospawn = no
daemon-binary = /bin/true
default-server = 192.168.0.111 # pluseaudio server address

当サイトの環境ではこれでmoode audioのpluseaudioから音声再生が可能です。

pluseaudio server

RaspberryPi3(raspbian desktop)はpluseaudioはインストールされていますがデフォルトでは有効になっていません。RaspberryPi3で簡単な実験をしてみたいと思います。

インストールされている主なpluseaudio関連パッケージ
追加でpavucontrolをインストールしています。

以下のファイルを作成します。
~/.config/pulse/client.conf

autospawn = no
daemon-binary = /bin/true

~/.config/pulse/default.pa (自ネットワーク帯で)

.include /etc/pulse/default.pa
load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1;192.168.0.0/24 auth-anonymous=1
set-default-source alsa_output.platform-soc_sound.analog-stereo.monitor
set-default-sink alsa_output.platform-soc_sound.analog-stereo

当方のRaspberryPi3にはhdmi-vgaアダプタがあります。

$ cat /proc/asound/cards
 0 [ALSA           ]: bcm2835_alsa - bcm2835 ALSA
                      bcm2835 ALSA
 1 [vc4hdmi        ]: vc4-hdmi - vc4-hdmi
                      vc4-hdmi

音声出力をhdmiからbcm2835 ALSAに切り替えます。

$ amixer cset numid=3 1

pluseaudioスタート

$ pulseaudio --start

pavucontrolにはRaspberryPi3のデバイスが見えてきます。
音量は最初100%になってるので充分小さくしておきます。
OrangePi3のclient.conf default-serverはRaspberryPi3のアドレスに変更

RaspberryPi3からsshでOrangePi3にログイン
OrangePi3から適当な音楽ファイルを実行するとRaspberryPi3のスピーカーから再生します。
pavucontrolを起動しておかないとpluseaudioにアクセスが無いとすぐkillしてしまいます。
bcm2835 ALSAでもちゃんとしたアンプ、スピーカーを繋いでいればかなりまともな音がするはずです。
(ちゃんとしていないアンプ、スピーカーなので音質の良否は確認できていません)

参考 arch linux PulseAudio PulseAudio/サンプル

OrangePi3 mp4

動画再生(音楽再生)はやはりmpv mplayerですね。

# apt install mpv mplayer

その他 youtube-dl

smtube

youtube視聴はsmtube
smtubeはOrangePi3からもコンパイル可能です。(以前の記事

ソースをダウンロードします。

ライブラリのインストール

# apt install qt5-default libqt5webkit5-dev qtscript5-dev qttools5-dev-tools libqtwebkit-dev

ダウンロードしたソースを展開、コンパイル実行(5分位)

# cd smtube-19.6.0
# make install clean

/usr/local/bin/smtubeを実行するには以下をインストールします。

# apt install libqt5webkit5 libqt5script5

smtube起動

$ smtube &


playerはmplayer mpv+youtube-dlが使えます。smtubeからsmplayerの使い方はわかりません。
(ごちゃごちゃしてるのキライ)
最近になってmplayerから再生できなかったのですがsmtubeのバージョンを上げたら普通に再生できるようになりました。以前からそうですね。
smtube関連サイト側の問題(?)


dwmには3つの表示モードがあります。表示モードはタグナンバー(9)とタイトルバーの間にある記号で判別できます。
タイル型 []= mode+t
フロート ><> mode+f
最大化 [数値] mode+m 数値=開いているアプリケーション
mode = windows key(設定次第)


見え方はplayerや元画像サイズによって違います。
また直前のモードによっても変わってきます。
どのモードからもmode+マウス(LまたはRクリック)でサイズ変更、移動は可能
9個あるタグはモード変更によって全て影響します。


最大化(mode+m)にすると大きい画像は縮小して小さい画像はウインドウサイズに合わせて拡大します。
モードは直前のモードとトグルします。
mode+space mode記号クリック
デフォルトのタイル型フロート型のトグルにするには
mode+ft
少し慣れてくると殆どの動画ファイルを簡単な操作で好みのスタイル、サイズで表示できます。

当サイトのメイン環境はRaspberryPi3なのでOrangePi3のcpuパワー、高速なネットワーク、usb3.0経由のストレージはメリットが大きいです。

Orange Pi 3 TigerVNC + uim anthy

いままではTightVNCを導入していたのですがTightVNCには欠点があって一部特定のQTアプリケーション下ではキーボードマッピングが滅茶苦茶になってしまいます。

またやはりQTアプリケーションではscim-anthyからの日本語入力ができません。
環境変数など試してみたのですがうまいこといきませんでした。
こちらもuim-anthyに変更してみたいと思います。

TigerVNC

TigerVNCはTightVNCからforkしていますがQT関連は改善されているようです。
TigerVNCのインストール

# apt install tigervnc-standalone-server tigervnc-common

ターミナルを開いてsshでログインvcnserverを起動します。
-localhost noを指定しないとRaspberryPi3から接続できません。
https://qiita.com/Tats_U_/items/c170f61a5e03ae045128

$ vncserver -localhost no

おそらく最初の起動でパスワードを聞かれると思いますが設定されない場合は手動で設定します。(当サイトではtightvncの~/.vnc/passwdが使えました)

$ vncpasswd

設定ファイル vnc.conf

tigervncをインストールすると設定ファイル/etc/vnc.confが作成されます。
ユーザーの設定ファイルは~/.vnc/vnc.confが有効になりますが/etc/vnc.confをそのままコピーするとエラーになるので必要な項目のみ記載します。
書式はtightvncと同じでlocalhost noを追加します。
~/.vnc/vnc.conf

$geometry     = "850x528";
$depth        = 24;
$desktopName  = "Orange Pi 3";
$localhost    = "no";

vncserverの起動、終了

sshでログインしてのvncserverの起動、終了は以下のコマンド

$ vncserver :1
$ vncserver -kill :1


:1 は省略可

キーバインド xmodmap

tightvncと比べるとtigervncはxmodmapの値も変わってきます。
mod4 Super_L (0x85),Super_R (0x86)が割り当てられています。
各キーの値も変わっているのでxbindkeysを設定している場合は再設定が必要です。

$ xmodmap
xmodmap:  up to 4 keys per modifier, (keycodes in parentheses):

shift       Shift_L (0x32),  Shift_R (0x3e)
lock        Caps_Lock (0x42)
control     Control_L (0x25),  Control_R (0x69)
mod1        Alt_L (0x40),  Alt_R (0x6c),  Meta_L (0xcd)
mod2        Num_Lock (0x4d)
mod3      
mod4        Super_L (0x85),  Super_R (0x86),  Super_L (0xce),  Hyper_L (0xcf)
mod5        ISO_Level3_Shift (0x5c),  Mode_switch (0xcb)

clipboard

tightvncのホスト〜クライアント間のコピー、ペーストはautocutselを実行しておくことで可能でしたがtigervncではvncconfigを実行します。
vncconfigの実態はtigervncconfigですね。tigervncをインストールすると盛れなく付いてきます。

$ vncconfig nowin=1 &


vncconfigを実行するとclipboardのウインドウが現れますがこのウインドウが開いている時だけがコピー、ペーストが可能になります。ホスト〜クライアント間のコピー、ペーストは常に使うので起動時からバックグラウンドで実行するほうが使いやすいです。
helpを見るとparameters nowinを1にすると良いようです。ダイアログは出ずにvncconfigを実行します。日本語のコピペはダメです。
これをxstartupに加えておきます。

フォントサイズの変更

tigervncのフォントサイズはtightvncで設定した値よりも1.5ポイントほど大きく表示するようです。
xtermは~/.Xresources、メニュー関係はlxappearanceで変更
その他アプリケーションで変更
必要であればdwmもフォントサイズを変更して再コンパイル

uim-anthy

uim-anthyのインストール

# apt install uim uim-anthy

~/.cshrc (scimから変更)

setenv  LANG   ja_JP.UTF-8
setenv  XMODIFIERS @im=uim
setenv  GTK_IM_MODULE uim
setenv  QT_IM_MODULE uim

~/.vnc/xstartup に追加

uim-xim &
uim-toolbar-gtk &

TigerVNC + uim anthyのxstartup

~/.vnc/xstartup

#!/bin/csh
xrdb $HOME/.Xresources
xsetroot -solid gray3
vncconfig nowin=1 &
xbindkeys &
xterm -e ranger &
dwm &
uim-xim &
uim-toolbar-gtk &

デフォルトは半角/全角 or Shift+Spaceで漢字入力

vncserverの起動

debianではsystemdのサポートは無いようです。必要であれば作成するしか無いのですが面倒なのでtightvncの時と同様crontabの設定で起動しています。(当サイトはこれで充分)

$ crontab -e
@reboot sudo -u pi /usr/bin/vncserver

clientから接続
clientのRaspberryPi3にはtigervnc-viewerをインストールしています。

# apt install tigervnc-viewer


vncviewer hostnameを実行すると簡単なパスワードダイアログが出現します。

通常は上記のダイアログからパスワードで認証しますが-passwdオプションを指定することでパスワードレスで認証することができます。
vncserver(OrangePi3)の~/.vnc/passwdファイルをclient(RaspberryPi3)の適当なディレクトリ(~/.vnc)にコピーします。ファイル名はわかりやすい名前(opi3)に変更します。
ディレクトリはchmod 600,ファイルはchmod 400にしておくといいでしょう。
下記のコマンドを実行します。

$ vncviewer -passwd /home/pi/.vnc/opi3 orangepi3:1


デスクトップアイコンなどに仕込んでおくといいと思います。
パスワードを打つことも無くいきなりvncserverに接続が可能になります。
このためにtigervncにしたという噺もあります。

QTアプリのキーマッピング、日本語入力もOKです。

Orange Pi 3 sun50i-h6-orangepi-3.dtb

Armbian_5.88.190601_Orangepi3_xxx_5.1.5.img以降(この版までOK)新規インストールまたはアップグレードすると起動できなくなっていました。

この問題に対してarmbianフォーラムに回避策が報告されています。

原因はkernel 5.1.6以降のsun50i-h6-orangepi-3.dtbのようですね。
現在armbianのdownload listには5.1.5ベースの起動可能なバージョンは無くなっています。フォーラムの最後の方にkrachlatteさんが5.1.5ベースのdtbファイルを提供しています。

カードの作成

現時点の最新のimgでカードを作成してみます。
最新のimgとkrachlatteさんのdtbファイルをダウンロード
imgを展開

$ 7za x Armbian_5.89.190616_Orangepi3_Debian_stretch_dev_5.1.7.7z

カードに書き込み

# dd if=Armbian_5.89.190616_Orangepi3_Debian_stretch_dev_5.1.7.img of=/dev/sda bs=1M

RaspberryPi3からは書き込んだカードが見えています。
sun50i-h6-orangepi-3.dtbをコピー

# cp sun50i-h6-orangepi-3.dtb /media/aaab2277-5123-44ef-b7f3-5df6be089105/boot/dtb-5.1.7-sunxi64/allwinner


ダウンロードしたsun50i-h6-orangepi-3.dtbと差替え

確認しやすいように/etc/network/interfacesに固定IPを振っておきます。
/etc/network/interfaces

auto eth0
iface eth0 inet static
  address         192.168.0.114
  netmask         255.255.255.0
  gateway         192.168.0.1
  dns-nameservers 192.168.0.1

カードを挿し替えて起動

RaspberryPI3からsshでログイン

$ ssh root@192.168.0.114


無事起動できました。

またアップグレードがあると起動できなくなってしまいます。解決するまでは保留にしておきます。

# apt-mark hold linux-dtb-dev-sunxi64

次回からは通常通りupdateできます。(またなにがあるかわかりませんが)

# apt update && apt -y upgrade

開発バージョンとしてはやむを得ないところですがやはりドライバの開発はむずかしいものと想像しています。

# wlan0もデフォルトでデバイスが生えています。

Top