個人情報保護方針 お支払いについて お問い合わせ

Rock3 Compute Module CM3へのBullseyeのインストール


2023/8/5更新 CPU温度の表示、Qt5.15/QtDesignerのインストールを追加


Raspberry Pi Compute Module 4は人気ですが品薄状態がつづいています。ここでは代替として Radxa社 https://wiki.radxa.com/Rock/ja_JPのRock Compute Module3が使用できます。CM3は RS-ONLINE で購入できるようです。2023/7/6現在で在庫も281個と十分にあります。CM3はRaspberryPiCM4と互換の2つのコネクタを持ち、さらに拡張機能として3つ目のコネクタを備えていいます。3つ目のコネクタを使用するとUSB3.0やSATA等のRock3独自の拡張された機能を使用できますが、このコネクタは使用しなくてもCM4と同様の機能は動作します。ここではRaspberry Pi CM4用のCM4 IO Boardを用いてRock CM3を動作させてみます。

マイクロSDカードへのインストール
eMMCへのインストール
SSHとVNCの設定
TigerVNCの設定(動作しません)
PCIExpressの設定
PCIeスロットの拡張
OSイメージの作成(システムのバックアップ)
CPU温度の表示
日本語環境の設定
Thunarの設定
Qt5.15/QtDesignerのインストール

注) 現在マイクロSDカードからの起動ができていません。調査中です。


マイクロSDカードへのインストール

eMMCへのインストールはこちら


CM3は初期設定でマイクロSDカード、eMMC、ROMブートの順番で起動するようになっているようです。つまりマイクロSDカードが挿入されている場合にはマイクロSDカードに書き込まれたOSが優先的に起動するようです。しかし、実際にやってみたところ、eMMC32GBのCM3はSDカードから起動できないようです。マイクロSDカードからの起動はeMMCが搭載されていないCM3のみと考えるのが良さそうです。

1) OSイメージをダウンロードする

Redxa社のダウンロードサイト https://wiki.radxa.com/Rock3/downloads からOSのイメージをダウンロードします。Radxa CM3 RASPCM4IOを選択します



現時点ではBullseysとUbuntu20.04 server (CUI)が選べるようです。 bullseyeのimgファイルをダウンロードします。




サイトを見ると現時点ではdtbファイルにパッチを当てる必要があるようです。この作業は後に行います。

2) フラッシュツール Etcher のダウンロード

Rexda社のサイトからOSをマイクロSDカードに書き込むフラッシュツールEtcher のサイトに移動します。



使用しているPCのOSに応じてインストーラーを選択します。ここではWindows10なので、ETCHER FOR WINDOWS (X86|X64) (INSTALLER) を選択します。





3) Etcherのインストール

balenaEtcher-Setup-1.18.8.exeをダブルクリックして、Etcherをインストールします。




4) EtcherによるマイクロSDカードへのOSイメージのインストール

Etcherを起動し、1)でダウンロードしたOSイメージ radxa-cm3-io-debian-bullseye-xfce4-arm64-20221101-0302-gpt.img.xz を選択、PCに挿入したSDカードを選択しOSイメージを書き込みます。







OSイメージを書き込んだマイクロSDカードをCM4 IO ボードに挿入して電源を投入します。


参考資料: https://wiki.radxa.com/Rock/ja_JP
参考資料: https://wiki.radxa.com/Rock3/CM3/raspcm4io/getting_started
参考資料: https://wiki.radxa.com/Rock3/installusb-install-radxa-cm3-io

CM3のeMMCへのインストール

マイクロSDカードへのインストールはこちら

1) OSイメージをダウンロードする

Redxa社のダウンロードサイト https://wiki.radxa.com/Rock3/downloads からOSのイメージをダウンロードします。Radxa CM3 RASPCM4IOを選択します



現時点ではBullseysとUbuntu20.04 server (CUI)が選べるようです。 bullseyeのimgファイルをダウンロードします。




2) RKDevToolのインストール

RKDevTool https://dl.radxa.com/tools/windows/RKDevTool_Release_v2.86.zip をダウンロードして任意のフォルダに展開します。RKDevToolはインストーラはなく、展開したフォルダ内のRKDevTool.exeをダブルクリックするだけで起動します。ショートカットを作っておくと便利でしょう。




RKDevTool v2.86はデフォルトで中国語で起動してしまうようです。config.iniを変更して英語で起動するようにします。Kinds=1に変更、中国語のLang1の設定を削除し、英語設定のLang2*をLang1に変更します。

[Language]
Kinds=1
Selected=1
LangPath=Language\

Lang1File=English.ini
Lang1FontName=Arial
Lang1FontSize=9




3) RKDriverAssistantのインストール

次いでRKDriverAssistant.zip https://dl.radxa.com/tools/windows/DriverAssitant_v5.0.zipをダウンロードしてこれも任意のフォルダに展開し、DriverInstall.exeを実行します。




Install Driver ボタンを押してドライバをインストールします。



これでOTG経由でeMMCが見れるようになります。

4) img.xzファイルの展開

現在のところ、RKDevToolでは残念ながら.img.xzで圧縮されたファイルが扱えないようです。ですので、OSイメージファイルradxa-cm3-io-debian-bullseye-xfce4-arm64-20221101-0302-gpt.img.xz をあらかじめradxa-cm3-io-debian-bullseye-xfce4-arm64-20221101-0302-gpt.img に展開しておく必要があります。Windows上での圧縮の解除はWinzipや7zipで行うことができます。ここでは7-zipを使用することにします。7-zipのウェブサイト https://7-zip.opensource.jp/ から64bit版(使用しているWindowsが32bitなら32bit版)をダウンロードします。



radxa-cm3-io-debian-bullseye-xfce4-arm64-20221101-0302-gpt.img.xz を7-zipで開き、展開します。




5) OSイメージのeMMCへのダウンロード

Radxa社のサイトからダウンローダをrk356x_spl_loader_ddr1056_v1.10.111.bin をダウンロードします。 https://dl.radxa.com/rock3/images/loader/rock-3a/



5) OSイメージのeMMCへの書き込み

USBケーブルでPCとCM4 IO BoardのUSB OTGコネクタを接続します。CM3のeMMCに何も書かれていない状態でしたら、そのままCM3/CM4 IO Boardの電源を入れます。eMMCに何か書かれている場合にはCM3ボード上にあるスイッチを押しながら電源を投入します。その状態で1) でインストールしたRKDevToolを起動します。Found One MASKROM Device と表示されていることを確認してください。デフォルトで適当な仮のパーティションイメージが設定されています。



右クリック->"Del Item"で、一旦削除し、3)、4)で作成したファイルを右クリック->"Add Item"で追加します。次回も同じ設定が必要な場合には右クリック->"Export Config"で設定を保存できます。ここでは以下のファイルを指定しました。

C:\MyProjects\GroveDesign\RaspberryPi4\rock3\rk356x_spl_loader_ddr1056_v1.10.111.bin
C:\MyProjects\GroveDesign\RaspberryPi4\rock3\radxa-cm3-io-debian-bullseye-xfce4-arm64-20221101-0302-gpt.img



runボタンを押して、書き込みが終わるのを待ちます。途中USBデバイスが切り離されたり、再接続するような音がしますが、じっと待ちます。



Download image OKが表示されれば書込み終了です。HDMIに接続したディスプリにログイン画面が表示されています。


6) eMMCの消去

他のOSをインストールしたいなどなんらかの理由で、eMMCを消去したい場合にもRKDevToolを使用します。Advance Functionタブを選択、bootにrk356x_spl_loader_ddr1056_v1.10.111.binを指定して、Downloadボタンをクリックします。




次にEraseAllボタンを押してeMMCを消去します。



最後にReset Deviceボタンを押して再起動します。eMMCは消去されていますので、起動しません。



参考資料: https://wiki.radxa.com/Rock3/installusb-install-radxa-cm3-io


SSHとVNC(Virtual Network Computing)の設定

OSイメージのダウンロードサイトに寄れば、OSイメージradxa-cm3-io-debian-bullseye-xfce4-arm64-20221101-0302-gpt.img.xzはRadxa CM3 IO boardを想定して作成されいるため、CM4 IO boardをキャリアボードとして使用する場合には dtbファイルを差し替える必要があるようです。SSHとVNCを設定して、PCからGUIが使えるようにします。



1) OSを最新の状態に

まず、IPアドレスはDHCPによって与えられていますので、ルーターなどHDCPサーバが動いているデバイスで、一番最近に付与されたIPアドレスを調べます。コマンドプロンプトから ssh rock@[IPアドレス] と入力し、ログインします。パスワードの初期値はrockです。



aptコマンドでインストールをしたいのですが、公開鍵が古くなっているようです。先に公開鍵をインストールします。

source /etc/os-release
export DISTRO="${VERSION_CODENAME}-stable"
wget -O - apt.radxa.com/$DISTRO/public.key | sudo apt-key add -



OSを最新の状態にします。

sudo apt update
sudo apt upgrade



2) DTBの書き換え

CM4 IO boardを使用している場合にはDTBを書き換えます。Radza CM3 IO boardを使用している場合には変更の必要はありません

$ cd /boot/dtbs/$(uname -r)/rockchip/
$ sudo mv rk3566-radxa-cm3-io.dtb rk3566-radxa-cm3-io.dtb.bak
$ sudo cp rk3566-radxa-cm3-rpi-cm4-io.dtb rk3566-radxa-cm3-io.dtb
$ sudo reboot



3) VNCの設定

SSHではCUIで各種設定が可能ですが、GUIでの設定も必要になる場合があります。VNCを設定して、他のPCからGUIアクセスできるようにします。

xfce4-goodiesをインストールして、Xfceデスクトップ環境を構築します。次いでTightVNC server、dbus-x11をインストールします。

$ sudo apt update
$ sudo apt install xfce4 xfce4-goodies
$ sudo apt upgrade
$ sudo apt install tightvncserver
$ sudo apt install dbus-x11




インストールしたらvncserverと入力し一旦起動します。起動するとパスワードを聞かれますので設定します。vncserver -kill :1で一旦display 1を停止します。~/.vnc/xstartupの初期値を保存して編集します。xstartupはVNC サーバーを起動または再起動するたびに自動的に実行されるものです。

$ vncserver
Password:
Verify:
Would you like to enter a view-only password (y/n)? n
xauth: file /home/sammy/.Xauthority does not exist

New 'X' desktop is your_hostname:1

Creating default startup script /home/sammy/.vnc/xstartup
Starting applications specified in /home/sammy/.vnc/xstartup
Log file is /home/sammy/.vnc/your_hostname:1.log

$ vncserver -kill :1
Killing Xtightvnc process ID 17648

$ mv ~/.vnc/xstartup ~/.vnc/xstartup.bak
$ vi ~/.vnc/xstartup
#!/bin/bash
xrdb $HOME/.Xresources
startxfce4 &

$ sudo chmod +x ~/.vnc/xstartup $ vncserver




再びvncserverを起動すると、PCにインストールしたVNC Viewerからアクセスできるようになります。Ultra VNC, Read VNC 等が使用できます。お好きなViewerを使用してください。



4) VNC Serverをサービスとして動作

3)ではvncserverをSSHでログインして実行しましたが、これだとSSHセッションを抜けてしまうと使えなくなりますし、そもそもVNC Viewerでログインしたいのでこの方法では不便です。VNCServerをサービスとして使用できるようにします。 /etc/systemd/system/vncserver@.service という名前のファイルを作成します。

$ sudo vi /etc/systemd/system/vncserver@.service

ファイルの中身は以下のようにします。

[Unit]
Description=Start TightVNC server at startup
After=syslog.target network.target

[Service]
Type=Simple
User=rock
Group=rock
WorkingDirectory=/home/rock

PIDFile=/home/rock/.vnc/%H:%i.pid
ExecStartPre=-/usr/bin/vncserver -kill :%i > /dev/null 2>&1
ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280x800 :%i -localhost no -MaxIdleTime=0 -SecurityTypes=VncAuth -passwd /home/rock/.vnc/passwd
ExecStop=/usr/bin/vncserver -kill :%i

[Install]
WantedBy=multi-user.target




変更内容をシステムに認識させ、有効にします。

$ sudo systemctl daemon-reload
$ sudo systemctl enable vncserver@1.service
$ sudo systemctl start vncserver@1
$ sudo systemctl status vncserver@1 -l --no-pager



これで、キーボード、モニタが無くてもネットワークケーブルのみでGUI操作ができるようになりました。SSHでのアクセスをしなくても、VNCで直接GUIログインできます。



参考資料: https://github.com/radxa-build/radxa-cm3-io/releases/tag/20221101-0118
参考資料: https://wiki.radxa.com/RockpiS/ssh
参考資料: https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-vnc-on-debian-11
参考資料: https://teratail.com/questions/301589



TigerVNCの設定

Ubuntu20.04ではTightVNCではなくTigerVNCを使用しました。こちらでもやってみましたが、うまく動かないようなので、TightVNCを使うことにします。


PCIExpressの設定

Rock Pi 5/4(RaspberryPi4B)とCM3(CM4)の最大の違いはPCIExpressのサポートの有無です。キャリアボードの中にはPCIExpress Gen2 x 1のコネクタまたはM.2コネクタを有しており、HAT以外にも機器の拡張が行えます。HATでのI2C/SPI/I2Sに比べて格段に速い速度で拡張ボードと通信ができます。PCIExpressを使用するためには若干の設定が必要なため、解説していきます。

1) DTBの書き換え

CM4 IO boardを使用している場合にはDTBを書き換えます。すでに変更している場合には不要です。Radza CM3 IO boardを使用している場合には変更の必要はありません。

$ cd /boot/dtbs/$(uname -r)/rockchip/
$ sudo mv rk3566-radxa-cm3-io.dtb rk3566-radxa-cm3-io.dtb.bak
$ sudo cp rk3566-radxa-cm3-rpi-cm4-io.dtb rk3566-radxa-cm3-io.dtb
$ sudo reboot



2) config.txtの書き換え

/boot/config.txtを開いて、下記の1行を追加します。

dtoverlay=radxa-cm3-io-pcie2x1




書き換えたら、configの変更をシステムに通知にします。再起動すると、PCIExpressが使用できます。

$ sudo update_extlinux.sh
$ sudo reboot

lspciでPCIExpressにNVMe SSDが見えています。



/dev以下に nvmeデバイスが見ています



3) NVMe SSDのフォーマットとマウント

フォーマットします。Secure Eraseに対応したNVMeなら -s 2、そうでなければ-s 0を指定します。

$ sudo nvme format /dev/nvme0n1 -s 0



fdiskでパーティションを作成します。fdiskはdebean11には入っていないようなのでインストールします。

$ sudo apt install fdisk



fdisk -lで現在のパーティション情報を確認します。/dev/mmcblk0はEFI 512MB、Linux filesystem 28.66GBの2つのパーティションが見えます。/dev/nvme0n1にはパーティションがありません

$ sudo fdisk -l



NVMe SSDにパーティションを作成します。p,n,p,[Enter],[Enter],[Enter]の順に入力。デフォルトから変更せずに作成します。

$ sudo fdisk /dev/nvme0n1



再度 fdisk -lで現在のパーティション情報を確認します。今度はNVMeにパーティションが見えます。



ファイルシステムをext4とします。

$ sudo mkfs.ext4 /dev/nvme0n1



作成したパーティションをマウントします。

$ sudo mount /dev/nvme0n1 /mnt



これで、PCIeに接続したNVMe SSDが使用できます。

参考資料: https://scrapbox.io/dojineko/nvme-cliを使ってNVMe_SSDを初期化する
参考資料: https://blog.amedama.jp/entry/nvme-secure-erase
参考資料: https://qiita.com/sasadango/items/fcb657d3b4bbd39c3497
https://blog.amedama.jp/entry/nvme-secure-erase 

PCIeスロットの拡張

CM4 IO BoardにはGen2 x1 のスロットが1つ用意されています。しかし1スロットでは測定装置を接続する場所としては物足りないと思います。こんなときに、1つのスロットを4つに拡張するボードがあります。このボードを用いてNVMeメモリが接続できるのか試してみます。



CM4 IO Boardのスロットに接続したときにはルートブリッジとNVMe SSDしか見えませんでしたが、ASM1184E PCIe Switch Portが5つ追加されています。



問題なくマウントできるようです



速度を測定してみると、直接スロットに挿入した場合

シーケンシャル読み出し 1577MB/s : シーケンシャル書込み 535MB/s

拡張ボード経由の場合

シーケンシャル読み出し 1544MB/s : シーケンシャル書込み 443MB/s

と若干遅くなるものの、実用に耐える速度かと思われます。PCIeスロットが4つあるいは、スロットとNVMe SSD用のM.2コネクタを複数有したキャリアボードがあれば、測定装置としておもしろいかもしれません。



OSイメージの作成(システムのバックアップ)

マイクロSDカードで起動する場合には、マイクロSDカードをコピーするなり取り替えるなりすれば簡単にOSを入れ替えられます。しかしeMMCは取り外すことができません。eMMCの書き込みに使用したRkDevToolでeMMC全体を読み出せるかとおもったのですが、v2.81現在では、Start+Countが64436以上では動作せず、最初の32MBしか読み出せないようです。そこで、ddコマンドを使用してOSのイメージファイルを作成します。

必要なもの

・eMMCの容量以上(32GBなら64GB以上のストレージ NVMeメモリやUSBフラッシュメモリ等)

まずはストレージをマウントします。ここではPCIeスロットに挿入した。NVMe SSDを使用します。dfコマンドで/mntがマウントされていることを確認します。

$ sudo mount /dev/nvme0n1 /mnt
$ df -T

eMMCのデバイス名を確認します。/dev/mmcmblk0 のようです

$ ls /dev/mmcblk*

ddコマンドで /dev/mmcmblk0 全体をimgファイルに書き出します

$ sudo dd if=/dev/mmcblk0 of=/mnt/radxa-cm3-io-debian_bullseye-xfce4-arm64-[日付].img
[sudo] password for rock
61071306+0 recored in
61071306+0 recored out
31268536320 bytes (31 GB, 29 GiB) copied, 900.752 s, 34.4 MB/s
$



xzコマンドで圧縮します。-T4は4スレッドで高速に処理する場合に指定します。SOCが高温になりますので。ヒートシンク等の放熱処理してください。

$ cd /mnt"
$ ls
$ sudo xz -k -T4 radxa-cm3-io-debian_bullseye-xfce4-arm64-[日付].img
$ ls -l



WindowsでFAT32フォーマットにてフォーマット済みのUSBフラッシュメモリをマウントしてコピーします。

$ sudo mount -o iocharset=utf8 -t vfat /dev/sda1 /media/usb"
$ ls /media/usb
$ sudo cp radxa-cm3-io-debian_bullseye-xfce4-arm64-[日付].img /media/usb/
$ umount /media/usb



新しく作成したimgファイルを用いて、eMMCに再度書き込めば、バックアップした状態に復元できます。今回は64GB以上のUSBフラッシュメモリが無かったので、圧縮してからコピーしましたが、圧縮にかなりの時間を要しました。できれば非圧縮のままUSBフラッシュメモリへ保存して、より高速なPCで圧縮したほうがよいでしょう。

作成したimgファイルをRKDevToolでeMMCに書き込んでみました。ファイルサイズが大きいためか、書込み終了まで到達できません。十分時間が経ってから電源を再投入したところ、問題なく書き込んだOSイメージで起動できました。おそらくimgファイルを作成するときに正しいセクタサイズを指定する必要があったと思います。次回試してみます。

参考資料: https://isleofhoso.com/linux-dd/
参考資料: http://tech.clickyourstyle.com/articles/126
参考資料: https://pcvogel.sarakura.net/2018/09/21/31873
参考資料: https://qiita.com/hana_shin/items/df1cf4dd67d1dd19d44a




CPU温度の表示


以下のコマンドでCPUの0.001度単位の温度が表示されます。

$ cat /sys/class/thermal/thermal_zone*/temp
63333
62777
18800



また、Sensor ViewrやHardinfo等のGUIアプリでも温度は確認できます。

$ sudo apt install hardinfo
$ hardinfo &



なお、CM3にヒートシンクをつける前は平常時63度ぐらいだったのが、ヒートシンクをつけることで46度ぐらいになりました。4スレッド動作で高負荷をかけても65度程度で収まっているようです。RK3566の動作温度は75度までなので、ファンまでは必要なくても、ヒートシンクはつけたほうが良さそうです。

参考資料: https://qiita.com/koara-local/items/1fac13704123717f5cc8
参考資料: https://news.mynavi.jp/techplus/article/20201229-1613873/




日本語環境の設定


キーボードのレイアウトと日本語入力環境を設定します。キーボードのレイアウトが異なると":"や"_"が入力できなくて大変困ります。インストールすべきパッケージがUbuntuとは異なりますので注意が必要です。

$ sudo apt install task-japanese locales-all
$ apt -y install task-japanese-desktop ibus-kkc

文字セットを日本語に変更します。

$ echo $LANG

C.UTF-8

$ locate -a | grep JP

jp_JP.eucjp
jp_JP.utf8

$ locate -list-locales | grep JP

jp_JP.UTF-8

$ localectl set-locale LANG=ja_JP.UTF-8
$ source /etc/default/locale
$ echo $LANG

LANG=ja_JP.UTF-8





キーボードレイアウトをJP106に変更します。さらに設定->キーボード->レイアウトで、日本語キーボードを選びます。キーボードとモニタを使って通常にログインすると設定できるのですが。残念ながらtightVNC経由では操作できないようです。そもそもtightVNCは日本語に対応していないそうです。tigerVNCでは使えていたクリップボードも使えませんし不便ですね。Ubuntuのほうがいろいろよさそうです。

$ localectl set-keymap jp106
$ localectl
System Locale: LANG=en_US.UTF-8
VC Keymap: jp106
X11 Layout: jp
X11 Model: jp106
X11 Options: terminate:ctrl_alt_bksp



参考資料: https://www.server-world.info/query?os=Debian_11&p=japanese
参考資料: https://www.server-world.info/query?os=Debian_11&p=keymap


Thunarのインストール

Ubuntu Desktopでは標準でUSBメモリなどの取り外し可能ならストレージを認識してマウントるすることができます。(VNC経由でのXFCE4デスクトップではAuth問題が生じることがあります)しかし、RockCM3のDebian11ディスクイメージでは標準でサポートされていないようです。thunarが完全にはインストールされていないようなので、インストールすることで取り外し可能なストレージがデスクトップに表示され、自動的にマウントできるようになります。

$ sudo apt install thunar*





Qt5.15/QtDesignerのインストール


仮想PC(x64)で行ったQtのインストールをCM3のBullseyeでも行ない、動作確認します。

$ sudo apt-get install build-essential
$ sudo apt-get install qtbase5-dev qtchooser qt5-qmake qtbase5-dev-tools
$ sudo apt-get install qtcreator
$ sudo apt-get install qtmultimedia5-dev libqt5multimediawidgets5
$ sudo apt-get install libqt5multimedia5-plugins
$ sudo apt-get install `apt-cache search 5-examples | grep qt | grep example | awk '{print $1 }' | xargs`
$ sudo apt-get install `apt-cache search 5-doc | grep "^qt" | awk '{print $1}' | xargs`

Qt Creatorを起動して、仮想PCのx86環境で動作確認していたプロジェクトをビルドしますがエラーが出てコンパイルどころかプロジェクト内のファイルも参照できません。







clangがインストールされていないエラーようなのでインストールします $ sudo apt-get install clang

libusb-1.0もインストールされていないエラーようなのでインストールします $ sudo apt-get install libusb-1.0*
$ sudo apt-get install libusb-1.0-0-dev
$ sudo apt-get install libudev-dev libudev1

これで正常にQtプロジェクトがビルドできるようになりました。フォントなどはUbuntuとは異なるようです。



.debファイルをインストールして動作確認しておきます。




参考資料: https://forum.qt.io/topic/99294/project-error-cannot-run-compiler-clang-output/5

アクセスカウンター アクセスカウンター