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書き込みには問題ありませんでした。)