Orange Pi 5でChromium OS(openFyde) R108を動かす(仮

Orange Pi 5上で動くChromium OSカスタマイズのopenFydeにR108ベース版が登場した。

商用版のfydeOSの方でもFydeOS for YouとしてOrange Pi 5向けがダウンロードできるようになった。

openFydeではR108版ではAndroidアプリが動作するようになった模様(fydeOS v16.1リリースノート にはAndroidに関する記載はない)

Add Android 11 support implemented by project ARCHERO(Alpha test status).
Upgrade Android 11 subsystem ArcHero.

どういう仕組みで動かしているのかな?と調べてみるとFydeOSの「Chromium OS Archero Developer Guide」というページを発見。

Google Chrome OSでのAndroidアプリはGoogle ARC++(Android Runtime for Chrome)を使って動かしているものを、anboxベースで置き換えた、というものであるようだ。

Orange Pi 5へのインストール

openFyde R102でのインストール手法から変更となっている。

1) orangepi5-openfyde-r108-r1.run をダウンロード
2) orangepi5-openfyde-r108-r1.run をインストール先M.2 SSDに合わせたオプション付きで実行してimgファイルを出力
3) imgファイルをmicroSDに書き込む
4) 書き込んだmicroSDとインストール先のM.2 SSD(NVMe or SATA)をOrange Pi 5に取り付け
5) Orange Pi 5の電源をつないでopenFyde起動してM.2 SSDにインストール
6) インストール完了後、自動的に電源は切れる
7) microSDはさしたままOrange Pi 5の電源を入れるとM.2SSDからopenFydeが起動

最初、Linux環境から直接imgファイルをM.2 SSDに書き込んでみたり、microSDで起動してM.2 SSDにインストールした後はmicroSDを抜くものだと思っていたので、起動してこなくて悩みました。

現状のOrange Pi 5だとオンボードSPIにブートローダ書き込んだ場合の動作調整が面倒なので、どのような設定でも最優先されるmicroSDにブートローダを書き込んでしまうのが確実、ということで、常時microSDをさしたままの状態とする、ということのようです。

現状のAndroid互換レイヤーではストアとして中国CoolAPKのみが登録されているので、中国圏のアプリは簡単にインストールできる状態でした。

原神のアイコンがあったのでインストールしてみたところ、インストールに成功し、ログイン時のあの音楽も流れてきましたが、中国アカウントを求められてそれ以上は進めませんでした。

Orange Pi 5でAndroid/Linux共にM.2 SATA SSDから起動できるようになった

Orange Pi 5の中国語DownloadページのAndroid镜像リンクをたどってみたところ、SPIFlash-SATA SSDというディレクトリが・・・

え?と思って、ダウンロードしてRKDevToolを使って書き込みを試して見るも「Switch into SATA storage Fail, did not support to switch in」というエラーで成功しない。

改めて中国ページの官方工具にあるマニュアルを確認してみると「OrangePi_5_RK3588S_用户手册_v0.7.pdf」と英語ページにあるマニュアルよりだいぶバージョンが上がっている。

ただ、M.2 SATA SSDからAndroidを起動する場合の書き込み手順について違う点はなく、原因は不明・・・

(注:最終的にはLinux側でSPIFlashを書き換えるとAndroidの書き込みが成功するようになりました。)

LinuxをM.2 SATA SSDから起動

その他にないかマニュアルを読み直すとM.2 SATA SSDからLinuxを起動する手順が掲載されているので、そちらを試行してみた。

マニュアル上の重要なポイントは以下

実際にやってみる。

まずSPIFlashの書き換えに使うファイルを確認

orangepi@orangepi5:~$ ls -ld /usr/share/orangepi*
drwxr-xr-x 2 root root 4096 Dec 22 19:36 /usr/share/orangepi
drwxrwxr-x 2 root root 4096 Dec 12 17:58 /usr/share/orangepi5
orangepi@orangepi5:~$ ls -l /usr/share/orangepi
total 4
-rw-r--r-- 1 root root 3269 Dec 22 19:34 boot.cmd
orangepi@orangepi5:~$ ls -l /usr/share/orangepi5/
total 16384
-rw-rw-r-- 1 root root 16777216 Dec 12 17:58 rkspi_loader_sata.img
orangepi@orangepi5:~$

SPIFlashを書き換えます。

orangepi@orangepi5:~$ sudo dd if=/usr/share/orangepi5/rkspi_loader_sata.img of=/dev/mtdblock0
[sudo] password for orangepi:
32768+0 records in
32768+0 records out
16777216 bytes (17 MB, 16 MiB) copied, 244.953 s, 68.5 kB/s
orangepi@orangepi5:~$

現状のM.2 SATA SSD上のブートローダ、パーテーションをddでzeroを書き込んで消します。

orangepi@orangepi5:~$ sudo dd bs=1M if=/dev/zero of=/dev/sda count=2000 status=progress
1754267648 bytes (1.8 GB, 1.6 GiB) copied, 2 s, 877 MB/s
2000+0 records in
2000+0 records out
2097152000 bytes (2.1 GB, 2.0 GiB) copied, 5.5852 s, 375 MB/s
orangepi@orangepi5:~$
orangepi@orangepi5:~$ sudo fdisk -l /dev/sda
Disk /dev/sda: 476.94 GiB, 512110190592 bytes, 1000215216 sectors
Disk model: WT M.2 512G
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
orangepi@orangepi5:~$

次にmicroSD上にコピーしておいたLinuxイメージをM.2 SATA SSDに書き込みます。

orangepi@orangepi5:~$ sudo dd if=Orangepi5_1.0.8_ubuntu_jammy_desktop_xfce_linux5.10.110.img of=/dev/sda bs=1M status=progress
8129609728 bytes (8.1 GB, 7.6 GiB) copied, 119 s, 68.3 MB/s
7800+0 records in
7800+0 records out
8178892800 bytes (8.2 GB, 7.6 GiB) copied, 121.861 s, 67.1 MB/s
orangepi@orangepi5:~$

書き込み完了後のパーテーションはこのようになります

orangepi@orangepi5:~$ sudo sync
orangepi@orangepi5:~$ sudo fdisk -l /dev/sda
GPT PMBR size mismatch (15974399 != 1000215215) will be corrected by write.
The backup GPT table is not on the end of the device.
Disk /dev/sda: 476.94 GiB, 512110190592 bytes, 1000215216 sectors
Disk model: WT M.2 512G
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 58FCCC02-859A-5041-ADA7-14802AADF341

Device      Start      End  Sectors  Size Type
/dev/sda1   61440   585727   524288  256M Linux extended boot
/dev/sda2  585728 15974366 15388639  7.3G Linux filesystem
orangepi@orangepi5:~$

書き込んだM.2 SATA SSDの/dev/sda1 にあるorangepiEnv.txtを書き換えるためにマウントします。

orangepi@orangepi5:~$ sudo mount /dev/sda1 /mnt
orangepi@orangepi5:~$ df -h /mnt
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1       256M   95M  162M  37% /mnt
orangepi@orangepi5:~$ ls -l /mnt
total 96104
-rwxr-xr-x 1 root root   230456 Dec 22 19:39 boot.bmp
-rwxr-xr-x 1 root root     3269 Dec 22 19:34 boot.cmd
-rwxr-xr-x 1 root root     3341 Dec 22 19:51 boot.scr
-rwxr-xr-x 1 root root   215221 Dec 22 18:24 config-5.10.110-rockchip-rk3588
drwxr-xr-x 3 root root     4096 Dec 22 19:36 dtb
drwxr-xr-x 3 root root     4096 Dec 22 19:36 dtb-5.10.110-rockchip-rk3588
-rwxr-xr-x 1 root root 33915392 Dec 22 18:24 Image
-rwxr-xr-x 1 root root 11119990 Dec 22 19:54 initrd.img-5.10.110-rockchip-rk3588
-rwxr-xr-x 1 root root      154 Dec 22 19:51 orangepiEnv.txt
-rwxr-xr-x 1 root root     1542 Dec 22 19:48 orangepi_first_run.txt.template
-rwxr-xr-x 1 root root  7853912 Dec 22 18:24 System.map-5.10.110-rockchip-rk3588
-rwxr-xr-x 1 root root 11120054 Dec 22 19:54 uInitrd
-rwxr-xr-x 1 root root 33915392 Dec 22 18:24 vmlinuz-5.10.110-rockchip-rk3588
orangepi@orangepi5:~$

orangepiEnv.txtの最後に「overlays=ssd-sata」を追加します。

orangepi@orangepi5:~$ sudo cp /mnt/orangepiEnv.txt /mnt/orangepiEnv.txt.org
orangepi@orangepi5:~$ sudo vi /mnt/orangepiEnv.txt
orangepi@orangepi5:~$ cat /mnt/orangepiEnv.txt
verbosity=1
bootlogo=true
overlay_prefix=rk3588
fdtfile=rockchip/rk3588s-orangepi-5.dtb
rootdev=UUID=5ead0754-b05b-4f29-8170-b0620e7ae6d2
rootfstype=ext4
overlays=ssd-sata
orangepi@orangepi5:~$

書き込んだらumount

orangepi@orangepi5:~$ sudo umount /mnt
orangepi@orangepi5:~$

このあと、microSDを抜いて、M.2 SATA SSDのみで電源を入れると、M.2 SATA SSDから起動しました。

orangepi@orangepi5:~$ sudo fdisk -l /dev/sda
Disk /dev/sda: 476.94 GiB, 512110190592 bytes, 1000215216 sectors
Disk model: WT M.2 512G
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 58FCCC02-859A-5041-ADA7-14802AADF341

Device      Start       End   Sectors   Size Type
/dev/sda1   61440    585727    524288   256M Linux extended boot
/dev/sda2  585728 990183423 989597696 471.9G Linux filesystem
orangepi@orangepi5:~$

Android再挑戦

Linux側でSPIFlashを書き換えたあとであれば成功するかな?と試してみたところ、これまで失敗していたところは問題無く終了し、書き込みが実行されるようになりました。

(microSDをさしっぱなしにしていると途中で失敗するので注意)

Androidの書き込み完了後は自動的に再起動されAndroidが起動します。

なお、起動したAndroidは、WiringOPアプリが追加されている以外はあまり違いがないような感じでした。


2023/01/12追記

新しいM.2 SATA SSDが届いたので、Androidイメージを書き込むべく、とりあえず「sudo dd if=/usr/share/orangepi5/rkspi_loader_sata.img of=/dev/mtdblock0」を行ったあとに、RKDevToolで書き込みを実施してみましたが、書き込みはfailしました。

「sudo dd if=Orangepi5_1.0.8_ubuntu_jammy_desktop_xfce_linux5.10.110.img of=/dev/sda bs=1M status=progress」でLinuxイメージを書き込み、一度起動させたあとで、RKDevTool書き込みを試すと、成功しました。

(このとき、Linuxを書き込んだあとのorangepiEnv.txt 修正を忘れたので、Linux起動が途中で失敗してinitramfsで止まりましたが、電源強制オフのあと、Android書き込みには問題ありませんでした。)

Orange Pi 5用Android 12からGSIイメージの汎用Androidを起動する

Orange Pi 5用として公式で出ているAndroid 12とOrange Pi OS (Droid)のどちらにもGoogle Playは入っていなかった。

しかし、開発者向けオプションを有効にしてみると、DSU Loaderが使えることがわかった。

また、root権限が使える状態であるため、DSU Sideloader を使うと好きなGSI イメージを使って起動させることができそうです。

(注: LCD用Androidイメージ+Type-Cディスプレイの場合、GSIイメージで起動すると最初はHDMI出力のみで、初期セットアップ完了後じゃないとType-Cディスプレイが使えませんでした)

phhussonさんとこのGeneric System Image (GSI) List からAOSP 12.1 v416を使って見ました。

(なお、GSIイメージによっては黒画面のまま起動してきません)

まず、起動したAndroid上の検索枠で「dsu loader github」と検索すると出てくるDSU Sideloaderのgithubページにある apkファイルをAndroidにインストールして、DSU Sideloaderアプリの設定で「Build-in installer」を有効にしてから、GSIイメージを選択してインストールします。

Userdate sizeを30GB以上に設定しないと原神はインストールできないと思います。(22GBだと駄目だったので、とりあえず50GBで設定した)

インストールに使用するGSIイメージは system-squeak-arm64-ab-gapps.img.xz を使いました。Androidブラウザでダウンロードするとファイル名が system-squeak-arm64-ab-gapps.bin で保存されてしまうので、保存完了後ファイル名を system-squeak-arm64-ab-gapps.img.xz に変更する必要があります。

正常に導入が終わると「Reboot into DSU」というボタンが現れるので、それをクリックすると、GSIイメージのAndroidが起動します。

正常に動作するGSIイメージであればAndroidの初期画面が表示されるでしょう

Google Playストアがありますね

で・・・原神も動きました。

ただ、Orange Pi 5のAndroidだとHDMI/Type-Cディスプレイで音が出るんですが、GSIイメージから起動すると、Orange Pi 5オンボードのイヤフォン端子からのみ音が出る、という状態でした。

原神は、初期設定だとグラフィック設定:低いとちょっと荒い表示ですが、設定で「最高」を選んでも問題無く動きました。

その際の消費電力は5V1.8Aぐらいを上限として1.1A~1.8Aを動いている感じでした。


Lenovo/ワコム液晶をType-Cコネクタ1本でつないだ場合の使い勝手について

OrangePi5_RK3588S_Android12_spi-nvme_lcd_v1.0.0.img
→ いまいち。タッチ動作がおかしくなったり、GSIイメージで起動した場合のディスプレイ出力が怪しかったりする
  なぜかGSIイメージで原神を起動するとすぐに落ちる
  ブート画面はType-C側に出力される

OrangePi5_RK3588S_Android12_spi-nvme_v1.0.0.img
→ 問題無し? 液晶側から音もなるが、GSIイメージ起動の場合はOrange Pi本体のイヤフォン端子からのみ音が出る
  GSIイメージで原神は問題無く動いた
  ブート画面はHDMI側に出力され、Type-Cディスプレイしかつないでない場合、起動が完了するころまで黒画面のままとなる

OrangePi-OS_Droid_orangepi5_spi-nvme_v0.0.2_beta.img
→ OrangePi5_RK3588S_Android12_spi-nvme_v1.0.0.imgとだいたい同じような感じ。
  v0.0.3へのアップデートがふってくることと来ないことがあるのが謎
  GSIイメージで原神は問題無く動いた
  ブート画面はHDMI側に出力され、Type-Cディスプレイしかつないでない場合、起動が完了するころまで黒画面のままとなる

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を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経由の音声出力も動いていました。

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

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