Rock 5 model B を使う
Maskromモード
ファンの電源の横のボタンを押しながら、Rock5BをPCにUSBで接続すると、PCでUSB Deviceとして認識して、SPI Nor Flashとかが書き込めるモードになる。
起動直後に何回かリブートする
USB PD の電源が安定しないが、数回リブートしたあとに起動することがある。
SPI Nor Flash
Bootloader を書き込んでおく Flash。
空でも SDCard、eMMC からのブートは動作するが、NVME SSD からのブートは成功しない。
SPI Nor Flash のイメージ
Radxa から現在(2022-12-06)提供されているのは3種類の Bootloaderは以下の通り。
- release version : MicroSD、eMMCからブートできる
- debug version : release version に Serial Console を追加してある
- armbian version : NVME SSD でブートできる
2022年11月出荷時点では debug version が入っているように見える(Serial Console経由でアクセスできたため)。
armbian version は、USB PDに問題があるらしくこれを書き込むと 20V 給電が行われなくなる。
SPI Nor Flash への書き込み方
ここに書き込むには「1. rkdeveloptool を使う」「2. RkDevtool を使う」「3. 中から /dev/mtdblock0 にアクセスする」
1.、2.のやり方は、PC と USB で接続して行うが、マシンによってなのか、頻繁に fail して、中途半端に書かれてブートもできない状態になる。
実際になったし、もうマシンの運としか。。。
- がおすすめ!!!
1. rkdeveloptool を使って書き込む
以下のツールをビルドする。
2. RKDevTool を使って書き込む
Windows 用にはビルド済みのアプリが提供されている。
ダウンロードは下記から。
3. 中から /dev/mtdblock0 にアクセスする
これが確実。Linuxが立ち上がるならば以下のようにしてWriteできる。
sudo dd if=zero.img of=/dev/mtdblock0
sudo dd if=rock-5b-spi-image-g3caf61a44c2-debug.img of=/dev/mtdblock0
sync
SPI Nor Flash をリセット(空)にしたい
SPI Nor Flash のwriteに失敗して起動しない場合、リセットする必要がある。
同じダウンロードページ中にはる zero.img を使う。
SDCard から NVME SSD を起動したい
以下の作業は Linux 上で実施しています。
SDCard と NVME SSD の両方にイメージを焼く。
イメージは、boot と root が別パーティションになっている。
イメージを焼くと、SDCard と NVME SSD で UUID が一致してしまうので、NVME SSD の UUID を書き換える。パーティション名は環境依存なので、コピーしないように。
SSD と MicroSD を両方PCに接続しているところ、UUID が一致している。容量の違いでデバイスを見分けられる。
$lsblk -o NAME,UUID,SIZE
NAME UUID SIZE
...
sdc 476.9G
├─sdc1 0e21db47-e095-4ab7-9f29-e9bf229c1cd6 256M
└─sdc2 8e1d9ffd-ccb1-4ca6-b58a-0879cdc009cb 6.8G
sdd 59.7G
├─sdd1 0e21db47-e095-4ab7-9f29-e9bf229c1cd6 256M
└─sdd2 8e1d9ffd-ccb1-4ca6-b58a-0879cdc009cb 58.8G
UUIDを変更する(/dev/sdc のラベルは環境依存なので、コピペしないように注意!)。
sudo tune2fs /dev/sdc1 -U random
sudo tune2fs /dev/sdc2 -U random
書き換え後、UUIDが変わっている。
$lsblk -o NAME,UUID,SIZE
NAME UUID SIZE
...
sdc 476.9G
├─sdc1 2311deba-5dfa-40f6-b658-f19d77201599 256M
└─sdc2 2d5d41cf-36aa-4326-ace3-02ad98a2d678 6.8G
sdd 59.7G
├─sdd1 0e21db47-e095-4ab7-9f29-e9bf229c1cd6 256M
└─sdd2 8e1d9ffd-ccb1-4ca6-b58a-0879cdc009cb 58.8G
microsd の boot と、 ssd の root をそれぞれマウントする。
sudo mkdir /media/nnyn/microsd-boot
sudo mount /dev/sdd1 /media/nnyn/microsd-boot/
sudo mkdir /media/nnyn/ssd-root
sudo mount /dev/sdc2 /media/nnyn/ssd-root/
boot パーティションの中の armbianEnv.txt に root パーティションのUUIDが書かれているので、書き換える。
sudo vi /media/nnyn/microsd-boot/armbianEnv.txt
verbosity=1
bootlogo=true
overlay_prefix=rockchip-rk3588
fdtfile=rockchip/rk3588-rock-5b.dtb
rootdev=UUID=2d5d41cf-36aa-4326-ace3-02ad98a2d678
rootfstype=ext4
usbstoragequirks=0x2537:0x1066:u,0x2537:0x1068:u
root パーティションの中の /etc/fstab にマウントするパーティションのUUIDが書かれているので、書き換える。
sudo vi /media/nnyn/ssd-root/etc/fstab
UUID=2d5d41cf-36aa-4326-ace3-02ad98a2d678 / ext4 defaults,noatime,commit=600,errors=remount-ro 0 1
UUID=0e21db47-e095-4ab7-9f29-e9bf229c1cd6 /boot ext4 defaults,commit=600,errors=remount-ro 0 2
tmpfs /tmp tmpfs defaults,nosuid 0 0
root は NVME SSD で持ちつつ、SDCard Boot を続けるならば、fstab の boot はそのまま(SDCardのもの)にしておく。
これで再起動したところ、NVME SSD の boot が使われているのか、microsd の root で起動してきたので、NVME SSD の boot も書き換えました。
しかし、これで起動に失敗することもある。きちんと起動することもある。
かといって、MicroSDを抜くと起動しない。
安定しない。。。
公式イメージ
wiki にもあるが、以下のリポジトリでビルドされて、release に上がっている。pre-release も上がっている。
Armbian は Ubuntu 22.04 Jammy ベースになっている。
Serial が使えるデバッグバージョンの u-boot boorloadr を SPI Nor Flash にインストールする
11月に入手した私のバージョンは最初からデバッグバージョンがインストールされていたようです。
古いイメージが入っているという話もforumに出ていたので、とりあえずインストールするのもよいのかもしれません。
この手順では、Rock 5 内から /dev/mtdblock0 にアクセスする方法で記述します。
イメージは以下の「Download the latest SPI image from」と書いてあるところの「Debug Version」からダウンロードする。
上の記事中にある「zero.img」もダウンロードする。
なんらかの Linux イメージを MicroSD に焼いてで、Rock 5 を起動する(Armbianを使用)。
nnyn@rock-5b:~/Downloads$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
mtdblock0 31:0 0 16M 0 disk
mmcblk0 179:0 0 59.7G 0 disk
├─mmcblk0p1 179:1 0 256M 0 part /boot
└─mmcblk0p2 179:2 0 58.8G 0 part /var/log.hdd
/
zram0 254:0 0 7.7G 0 disk [SWAP]
zram1 254:1 0 50M 0 disk /var/log
zero.img は zero.img.gz と、圧縮されているので解凍する。
sudo apt update
sudo apt install -y unar
unar zero.img.gz
zero.img を焼いてから、目的のイメージを焼く。
sudo dd if=zero.img of=/dev/mtdblock0
sudo dd if=rock-5b-spi-image-g3caf61a44c2-debug.img of=/dev/mtdblock0
sync
以後、再起動すると、USBシリアル経由で、シリアルコンソールが使えるようになります。
購入先のリスト
私は ALLNET.CHAINA で買いました
Alnet chaina
AmeriDoroid
OKdo
RS Components
8G https://jp.rs-online.com/web/p/rock-sbc-boards/2493159
16G https://jp.rs-online.com/web/p/rock-sbc-boards/2563914
日本での取り扱いしているところも。
RebornOS
Archi Linux ベースのディストリビューション
ダウンロードしたイメージを書き込むと、最初に環境構築の設定画面が現れる。
ここで、Gonome とか Cinnamon とかデスクトップ環境のイメージが選択できる。
自分が試した限り、SSDに直接書き込んでも動作していた。
Gnome をインストールしたところ、Wayland が有効になって立ちがる。
UI自体はすごくキビキビしていて良さそうだった。
ただ、現状 fan コントロールなどが動作していなかったように思う。
このキビキビした動きは、Mali-G610 (Panfrost) + Wayland が当たっているかが大きいようだ。
Armbian の Ubuntu で Mali-G610 (Panfronst) を適応してUIを良くする
現状 Armbian の最新リリースは公式ページにはなく、Github の armbian/build リポジトリの release ページには新し目のリリースされたイメージが公開されている。こちらをダウンロードする。
Desktop のない minimal のイメージになる。
Branch: edgeは未検証で、Branch legacy で行った。
これをMicroSDとSSDにイメージとして焼く。
MicroSDはあくまでブート用として、以下の手順で MicroSD でブートしてSSDで読み込まれるようにした。
Mali-G610 (Panfrost) を有効にするために、下記サイトにある、"In orer to enable 3D acceleration" を有効にする。
sudo add-apt-repository ppa:liujianfeng1994/panfork-mesa
sudo add-apt-repository ppa:liujianfeng1994/rockchip-multimedia
sudo apt update
sudo apt dist-upgrade -y
sudo apt install -y mali-g610-firmware rockchip-multimedia-config
※ 2023/02/16 kodi のインストールではなく、mali-g610-firmware、rockchip-multimedia-config のインストールに変更
そして再起動し、ログイン時に右下あたりに出るログインする Window System の選択で、Gnome Wayland を選択する(Gnome Xorgだとぬるぬるにはならなかった)。
設定後、以下のように、なっていれば成功。
- Windowing System: Wayland
- Graphics: Mali-G610 (Panfrost)
fan コントロールを行う
よくわからないけれど、初期状態ではファンは回らないようになっている。ここにある通り、/sys/devices/platform/fd8b0010.pwm/pwm/pwmchip1/ あたりを操作すると操作可能である。
めんどうくさい。
これをいい感じにCPU温度でコントロールしてくれるソフトウェアを作ってくれている方がいるので、これをインストールする。
build & install と usage にある通りに設定すればOK!
ケース
公式のケースは、アクリルハンバーガーケースなので、横からのほこりとかに無防備である。このアクリルケースは、ファンレスヒートシンクとファン付きで形が異なる。ヒートシンクの方が高さが出っ張っているので、その文の空間が考慮された形になっている(ファンレスケースにファンは取り付けられるが、ファンケースにヒートシンクは取り付けられない)。
市販されているケースとして、メタルケースが出ている。メタルケース全体がヒートシンクの役目を果たし、ファンレスで使う前提のようである。
Rock5b の 3D プリントモデルを公開してくれている方がいる。これも良さそうである。
プリントしてみた
良い!
JLCPCBなら送料も安い
利用できるLinux ディストロ
Android
Radxa https://wiki.radxa.com/Rock5/downloads
Ubuntu
Debian
Arch Linux
Arch Linux ARM というので、ARMのパッケージがメンテされている。
AUR(Arch Linux User Repository)では、-arm
という接尾辞で管理されているっぽい。
- RebornOS https://www.rebornos.org/download/
apt update に失敗する
armhf というアーキテクチャーのリポジトリが紛れ込んでくる。ubuntu のものでも紛れ込んできて、apt update に失敗するようになる。
E: Problem parsing dependency 67 of cockpit-ws:armhf=264-1ubuntu0.22.04.1
E: Error occurred while processing cockpit-ws (NewVersion2)
E: Problem with MergeList /var/lib/apt/lists/ports.ubuntu.com_dists_jammy-updates_universe_binary-armhf_Packages
E: The package lists or status file could not be parsed or opened.
全てに [arch=arm64]
の記載を入れる。
# /etc/apt/source.list
deb [arch=arm64] http://ports.ubuntu.com/ jammy main restricted universe multiverse
# deb-src http://ports.ubuntu.com/ jammy main restricted universe multiverse
deb [arch=arm64] http://ports.ubuntu.com/ jammy-security main restricted universe multiverse
# deb-src http://ports.ubuntu.com/ jammy-security main restricted universe multiverse
deb [arch=arm64] http://ports.ubuntu.com/ jammy-updates main restricted universe multiverse
# deb-src http://ports.ubuntu.com/ jammy-updates main restricted universe multiverse
deb [arch=arm64] http://ports.ubuntu.com/ jammy-backports main restricted universe multiverse
# deb-src http://ports.ubuntu.com/ jammy-backports main restricted universe multiverse
/etc/apt/source.list.d/* も同様
そしてキャッシュを消す。
sudo rm -rf /var/lib/apt/lists/* -vf
5V4A電源を使う
PD には、NVME SSD Bootだと対応しないなど問題があるので、その回避として 5V4A電源が使える。
秋月に取り扱いがある。
とりあえず、これで安定して動いている。
CPU 周りの温度
watch cat /sys/class/thermal/thermal_zone*/temp
30538 → 30.538 ℃
公式以外のヒートシンク&ファン
こちらの商品が紹介されていた。
この商品のコネクタは2.54ピッチになっているので、Rock5B の CPU Fan ポートはおそらく 1.27 ピッチなので、コネクタを付け替えることが必要。Radxa 公式の fan から線をつなげ変えて利用した。
ヒートシンク用のアクリルケースの蓋を取り付けることができるが、ヒートシンクの構造の都合、横から差し込むように取り付けないと入らなかった。
このヒートシンクに付属のファンはPWMが効きにくいため、https://github.com/pymumu/fan-control-rock5b の設定 cat /etc/fan-control.json
を以下のようにした。
{
"pwmchip": -1,
"gpio": 0,
"pwm-period": 10000,
"temp-map": [
{
"temp": 30,
"duty": 0,
"duration": 20
},
{
"temp": 44,
"duty": 80,
"duration": 20
},
{
"temp": 49,
"duty": 90,
"duration": 20
},
{
"temp": 54,
"duty": 95,
"duration": 45
},
{
"temp": 59,
"duty": 100,
"duration": 45
}
]
}