Orange Piの中国サイトからだとOrange Pi OS(Droid)が入手できる


2023/01/04追記:Orange Pi 5でGoogle Play ストアを使うためには「Orange Pi 5用Android 12からGSIイメージの汎用Androidを起動する」の手順で十分です。


youtubeにOrange Pi 5のレビュー動画が公開されていた。

Androidのホーム画面にGoogle Playがいるばかりか、原神をプレイしている・・・

Google Play入りのOrange Pi 5用Androidイメージはどうやって入手するんだ?と思っていたらOrange Pi 5の中国語ページ にある「Orange Pi OS(Droid)」のリンク先でダウンロードできるようだ、というタレコミが・・・

たしかにOrange Pi OS(Droid)のファイルがある。

しかし、このサイト pan.baidu.com は専用クライアントソフトを使わないとファイルがダウンロードできない。

使わなくともダウンロードできるような手法もあるのですが、今回のファイルダウンロードでは上手く動作せず。

仕方が無いので、専用クライアントソフト+baiduアカウントでログインしてファイルをダウンロードします。

ダウンロード速度は低速で30Kbps~150Kbpsで推移していました。

課金すると早くなるらしいです。

こうして入手したファイル OrangePi-OS_Droid_orangepi5_v0.0.2_beta.tar.gz を展開して .imgファイルを SDDiskToolのSD_Firmware_Tool.exe で書き込みます(詳細)

ただ・・・いろいろ遊んでみたところ、容量が足らなかったので、NVMe SSDへインストールすることにしました。

Type-Cコネクタをパソコンにつないで、ボード上のMaskROMボタンを押しながら電源を繋ぎます。

そうすると、下記のような不明なデバイス(VID_2207&PID_350B)が現れます。

これは、DriverAssitant_v5.12\Driver にあるドライバを適用すると以下の認識になります。

そうするとRKDevTool上の表示が「Found One MASKROM Device」となります

次に「Upgrade Firmware」タブで「Firmware」をクリックし、書き込みイメージファイルを指定し、「Upgrade」をクリックして書き込みます

書き込みが始まると右側に状況が表示されます

進行中…

書き込みが完了すると、そのままAndroidが起動して、「Found One ADB Deivce」と表示されます

・・・・で、起動したわけなんですが、期待していたGoogle Playはありませんでした。

なんで、Chromeは入ってるんだろうか??

で・・・設定画面をいろいろ見ていたら「開発者向けオプション」に「DSU Loader」というのがあった

Dynamic System Updates(DSU)はGSIイメージを利用して別のAndroidを起動するための仕組み。

選択してみるとGSI+GMSがある・・・GMS=Google Mobile ServiceということでGoogle Playストアが使えるイメージが選択できる、ということ

ただ、GSI+GMSのイメージを選択すると、ダウンロードが開始されて、用意が終わるとそのイメージで起動できるのですが、そのシステムディスクで使えるストレージが7GB程度と固定で、原神をインストールするには足りませんでした。

また、GSIで起動したAndroid側ではHDMI 経由の音声出力がうまくいかないようで、イヤフォン端子からのみ音が出ていました。

また、このDSU Loader経由での別のAndroidイメージの起動は、Orange Pi OS (Droid)じゃない、普通のAndroid 12イメージでも動きました。

詳細手順としては「Orange Pi 5用Android 12からGSIイメージの汎用Androidを起動する」にまとめました。

ということで、わざわざBaiduクライアントをインストールした意味があまりなかった、という話でした

Orange Pi 5でデータディスクとしてならM.2 SATAも使える


Orange Pi 5で、M.2 SATAを利用する方法がある、という情報をいただきました。

(2023/01/05追記: M.2 NVMe SSDでLinuxを起動する記事はこちら→Orange Pi 5 が届いた)
(2023/01/08追記: M.2 SATA SSDからLinux/Androidが起動できるようになりました→Orange Pi 5でAndroid/Linux共にM.2 SATA SSDから起動できるようになった)

Orange Pi純正のUbuntuに入っているorangepi-configに設定がある、ということ。

「sudo orangepi-config」で起動して、[System]-[Hardware]を開くと、「ssd-sata」というモジュールがあります。

これにチェックを入れて保存し、再起動するとM.2 SATAを認識するようになります。

デバイスは/dev/sdaとして認識します。

ただし、現状、microSDからUbuntuを起動し、データディスクとしてM.2 SATAを起動できる、という状態です。

M.2 SATA を起動ディスクとして使うことはできませんでした。

Orange Pi 5をAndroid 12で動かす


2022/12/20時点で使えるOrange Pi 5のOSは、Ubuntu, Debian, Android 12。

Orange Pi (Droid)はリンクはあるもののファイル自体は存在していないという残念な状態

microSDで起動させる場合のAndroid 12はSDDiskTool_v1.72.zipに含まれているSD_Firmware_Tool.exe から書き込む。

中国語インタフェース…

config.iniを開いて「Selected=1」を「Selected=2」に替えたら英語インタフェースになった

まず「SD Boot」を選択してから、「Firmware」ボタンをクリックして、OrangePi5_RK3588S_Android12_v1.0.0.imgを指定して「Create」ボタンをクリックする。

書き込み確認で、はい、を選んで書き込み開始

書き込み完了

書き込んだmicroSDはこんな感じのパーテーションになりました。

NVMe SSDを取り外して、microSDのみ入れて電源オン…

しばらく待つと下記の画面となります。

アプリ一覧にブラウザはいませんが、検索欄をクリックすればブラウザとして使えます。

F-Droidでもアクセスしてフリーソフト中心のソフトウエアレポジトリにアクセスしてみましょう…

が・・・たいしていいアプリがあるわけじゃないので微妙なんですけど・・・

ただ、いい感じのブラウザがなくて・・・

Ubuntu Touchでも使ったBromite ブラウザ をF-Droidレポジトリに追加してインストールすると、Chromiumもダウンロードできるんですが、Google開発者サービスがない、といわれるのでBromiteの方を使った方がいいでしょう

で・・・ブラウザをインストールしてyoutubeにアクセスしてみたところ、HDMI経由の音声出力も動いていました。

うちの場合標準設定では音量が小さくて、大きくする必要がありました

ただ、結局アプリが微妙なので、使い道があまりないかなぁ・・と

armbianの初期設定項目 2022/04/21版


さすがに2017年に作った「Armbianの初期設定項目」は現状にふさわしくないので改訂

(1) armbian OSの入手について

armbian公式からダウンロードするわけだが、”Armbian 22.02 Focal”とか”Armbian 22.02 Jammy XFCE” のどちらがubuntu/debianなのかわかりにくい。

Ubuntu 14.04 LTSTrusty TahrDebian 8ベース
Ubuntu 16.04 LTSXenial XerusDebian 9ベース
Ubuntu 18.04 LTSBionic BeaverDebian 10ベース
Ubuntu 20.04 LTSFocal FossaDebian 10ベース
Ubuntu 22.04 LTSJammy JellyfishDebian 11ベース?
Debian 8.0jessie
Debian 9.0stretch
Debian 10.0buster
Debian 11.0bullseye

「Armbian 22.02 Focal」はUbuntu 20.04LTSベースで、「Armbian 22.02 Jammy XFCE」はUbuntu 22.04LTSベースでX-WindowのXFCE環境付き、ということが分かる。

(2) SDカードへの書き込みについて

経験則的にAllwinner SoCのOrange Pi/Nano Piなどは、microSDカードの個体差?メーカ差?なのかよくわからない原因で起動しなかったり、よくデータが飛んだりします。

起動しない場合は何度かイメージを書き直してみるといけるようになったり、違うmicroSDにすると普通に起動してきたりします。

なお、私はWindows環境でのイメージ書き込みには「Rufus」を使用しています。

Ubuntuの場合は、ddコマンドで書き込みますが、「bmaptool」で書き込むこともあります。(apt install bmap-toolsでインストールできます)

$ sudo bmaptool copy --nobmap Armbian_22.02.1_Orangepione_focal_current_5.15.25_xfce_desktop.img /dev/sde
bmaptool: info: no bmap given, copy entire image to '/dev/sde'
bmaptool: info: 100% copied
bmaptool: info: synchronizing '/dev/sde'
bmaptool: info: copying time: 10m 35.9s, copying speed 7.6 MiB/sec
$

(3) 初回起動について

初回起動時にログインユーザやパスワードの設定をします。

また、microSDのサイズにあわせたパーテーションサイズ調整も実施されます。

(4) 初期設定

まず、LocaleやTimezoneに関する設定を確認

「timedatectl」と「localectl」、「echo $LANG」を実行します。

$ timedatectl
               Local time: 木 2022-04-21 20:11:30 JST
           Universal time: 木 2022-04-21 11:11:30 UTC
                 RTC time: 木 2022-04-21 11:11:06
                Time zone: Asia/Tokyo (JST, +0900)
System clock synchronized: yes
              NTP service: active
          RTC in local TZ: no
$ localectl
   System Locale: LANG=en_US.UTF-8
       VC Keymap: n/a
      X11 Layout: us
       X11 Model: pc105
$ echo $LANG
ja_JP.UTF-8
$

基本的には初回起動時にTimezone設定してるので、そこでそれなりの設定がされていると思います。

ユーザの言語は「ja_JP.UTF-8」、システムとしての言語は「en_US.UTF-8」というのがトラブルが起きにくいとは思っています。

変更する場合、言語設定
「sudo dpkg-reconfigure locales」
タイムゾーン設定
「sudo timedatectl set-timezone Japan」と実行するか、「sudo dpkg-reconfigure tzdata」
キーボードの言語設定(キー配列)
「sudo localectl set-x11-keymap jp」「sudo dpkg-reconfigure keyboard-configuration」

(5) OSアップデート

Armbian自体の更新+Ubuntu/Debianの更新を実施
「sudo apt update」「sudo apt upgrade」

なお、locales アップデートの際に発生する「Generating locales」のプロセスにだいぶ時間が掛かります。

また、アップデート中に下記のような質問があり回答を要求されて止まりますので注意してください。

ubuntu-advantage-tools (27.7~20.04.1) を設定しています ...

設定ファイル '/etc/logrotate.d/ubuntu-advantage-tools'
 ==> これはインストールしてから (あなたかスクリプトによって) 変更されています。
 ==> パッケージ配布元が更新版を提供しています。
   どうしますか? 以下の選択肢があります:
    Y か I  : パッケージメンテナのバージョンをインストールする
    N か O  : 現在インストールされている自分のバージョンを残す
      D     : 両バージョンの差異を表示する
      Z     : 状況を調査するためにシェルを開始する
 デフォルトでは現在使っている自分のバージョンを残します。
*** ubuntu-advantage-tools (Y/I/N/O/D/Z) [デフォルト=N] ? y
新バージョンの設定ファイル /etc/logrotate.d/ubuntu-advantage-tools をインストールしています ...

(6) SBC firmwareのアップデート

一部のSBCにはfirmware アップデートがarmbianレポジトリ経由で提供されているようです。

「sudo armbian-config」で起動して「System」を選択

「Firmware」を選択

「はい」を選択

アップデートが終わるのを待ちます

再起動を選んで再起動します。

(ただ、これ、アップデートなくても再起動要求してるような気がします・・・)

(7) X-Windowの日本語文字化け解消

「sudo apt install fonts-takao-gothic」で一部残る文字化けが消えると思います。

(8) X-Windowでの音声出力先変更

Orange Piの場合、本体上に3.5φステレオ端子が存在していると標準の音声出力先もそちらに設定されていることが多いです。

この場合は、X-Windowの右上に出ているスピーカーアイコンをクリックし、[Default Sink]にある2つの「Built-in Audio Stereo 100%」を他方に切り替えてみてください。

なお、3.5φステレオ端子がない場合は1つしか表示されていないと思います。

(9) GPIO コネクタにPWM付けるファンを使うための設定

ラズパイ用のやつの絵を流用しますが・・・(出典:スイッチサイエンスのRaspberry Pi 4 用ケースファン)

これで3本で繋いだ場合の話です。

armbian-configのHardwareでpwmを有効にする感じでいけるようです

テスト環境用ゲートウェイサーバをarmbianで作ったことのメモ


とりあえず客先のIPアドレスで構築する時に、ちょうどいいサーバが無かったので余ってたorangepiでゲートウェイサーバを作った。

調達したスイッチがタグVLANしゃべれるやつだったので、orangepiの1ポートしかないNICに、VLANを4つ載せた

最近のarmbianはNetworkManagerによる制御にあるので、nmtuiコマンドなどでネットワーク設定を行った。

nmtuiで[Add]-[VLAN]を選んだあと、下記の様な感じでデバイスは空欄、「Parent(親)」は、実際のネットワークインターフェイスであるeth0を指定、そして、作成したいVLAN IDを「VLAN id」に入力し、作成

これでネットワーク設定を行った結果は、 /etc/NetworkManager/system-connections に出力されている。

DNSサーバ

次に、VLANを割り当てているサブネット以外の場所にあるDNSサーバをどうやってごまかすかを考えた。

応答する内容については、 /etc/hosts に書いたものを利用する dnsmasq を試用することとした。

root@orangepi2:~# diff -u /etc/dnsmasq.conf.org /etc/dnsmasq.conf
--- /etc/dnsmasq.conf.org       2022-02-28 11:54:50.037516142 +0900
+++ /etc/dnsmasq.conf   2022-02-28 16:05:58.999972348 +0900
@@ -8,6 +8,7 @@
 # (53). Setting this to zero completely disables DNS function,
 # leaving only DHCP and/or TFTP.
 #port=5353
+port=53

 # The following two options make you a better netizen, since they
 # tell dnsmasq to filter out queries which the public DNS cannot
@@ -16,7 +17,7 @@
 # these requests from bringing up the link unnecessarily.

 # Never forward plain names (without a dot or domain part)
-#domain-needed
+domain-needed
 # Never forward addresses in the non-routed address spaces.
 #bogus-priv

@@ -43,7 +44,7 @@

 # Change this line if you want dns to get its upstream servers from
 # somewhere other that /etc/resolv.conf
-#resolv-file=
+resolv-file=/etc/resolv-tmp.conf

 # By  default,  dnsmasq  will  send queries to any of the upstream
 # servers it knows about and tries to favour servers to are  known
@@ -72,6 +73,7 @@
 # Add local-only domains here, queries in these domains are answered
 # from /etc/hosts or DHCP only.
 #local=/localnet/
+local=/osakana.net/

 # Add domains which you want to force to an IP address here.
 # The example below send any host in double-click.net to a local
@@ -142,6 +144,7 @@
 #    domain of all systems configured by DHCP
 # 3) Provides the domain part for "expand-hosts"
 #domain=thekelleys.org.uk
+domain=osakana.net,客先IPアドレス帯/24

 # Set a different domain for a particular subnet
 #domain=wireless.thekelleys.org.uk,192.168.2.0/24

osakana.net ドメインの名前解決を、ちゃんとしたDNSサーバに聞きに行かないよう「local=/ドメイン名/」を定義して、阻止する。

domain=の記述はいらないような感じだけど、とりあえず追加しておいたもの。

「resolv-file=/etc/resolv-tmp.conf」と入れてるのは、Network Manager生成の/etc/resolv.conf だと期待値と違ったものがあったため、あえて別ファイルとしているもので、通常は不要。

DNSサーバが他のサブネットにある件は、とりあえず、ダミーのVLANを作成し、そこにIPアドレスを割り当て、/etc/sysctl.d/98-ipforward.conf にip_forward設定を入れることで、応答を返せるようにした。

# Uncomment the next line to enable packet forwarding for IPv4
net.ipv4.ip_forward=1

NTPサーバ

ntpサーバは chronyで作成した。

/etc/chrony.conf を修正するのではなく、 /etc/chrony/conf.d/server.conf に下記を記述した。

allow 172.17.44.0/24
allow 192.168.20.0/26
local stratum 10

これでchrony再起動で問題なかった。

proxyサーバ

要件には無かったが、ひとまずproxyサーバとしても動作できるようsquidをインストールした。

しかし、 armbian初期設定では /var/log が RAMディスク作成で50MBのため /var/log/squid が作成できずエラーとなった

/var/logの50MBというのは /etc/default/armbian-ramlog にて「SIZE=50M」で定義されている。

これを「SIZE=100M」などと変えて再起動すると反映される。

また、/var/log/squid をRAMディスク以外に逃がすことで対応した。

面倒なので、/ディレクトリ直下に/work/squidを作成し、そこに/var/log/squidのシンボリックリンクを作成している

root@orangepi2:/var/log/squid# ls -ld /var/log/squid
lrwxrwxrwx 1 root root 11 Feb 28 15:05 /var/log/squid -> /work/squid
root@orangepi2:/var/log/squid#