モジュールのコネクタは22pinであり,あらかじめRaspberry PiのModel AやB用に15pinへの変換ケーブルが付属していますが,Raspberry Pi Zero等の22pin用のケーブルは付属していませんでした.手持ちでもなかったので,ケーブル長が短いものの中で,Amazonですぐ届くケーブル(10本入り)を購入しました.
最新のRaspberry Pi OSでは「libcamera」系のコマンドを使うことでいろいろなセンサの画像が撮れます.そうするためにあらかじめ「/boot/config.txt」にセンサ情報を入力する必要がありますが,Arducamの公式サイトでは「dtoverlay=imx327」と追記するように書いてありますが,それでは動きませんでした(泣).
Pimoroni Display HAT Miniと合わせて使う場合(「clock-frequency=74250000」について)
Raspberry Pi Zero + IMX327のみでは「clock-frequency=74250000」の設定をした状態でうまく通信できていました.この時プレビュー画面は15FPSで安定して更新できていました.ただ,Display HAT Miniと一緒に使ったところ次のように画像が荒れました.
どうも処理能力か通信能力が足らず,うまくいかなかったようです.そのため,上記のサイトにあった遅いほうの「clock-frequency=37125000」に変更したところ荒れずに写真が取れましたが,プレビュー画面は5FPS~15FPSで不安定になりました.なお「clock-frequency=37125000」を記入しない場合でも同じ状態なので,初期設定は「clock-frequency=37125000」になるようです.上記の写真等はこの「clock-frequency」の設定をしない状態で,Display HAT Miniで確認しながら撮影しました.
もともとRapsberry Pi Zero WH(以下RPi0WH)が販売された当初に買っていたのですが,想像以上の性能の悪さと忙しさで長年放置していました.最近ある程度時間ができ,また小型ディスプレイやカメラ等色々増えてきたので何かできないかと掘り出して使い始めました.Switch Scienceでいろいろ買う際についでにDisplay HAT Miniを購入したので,それを使おうとしたら想像以上に苦労しました...
さて,実際に作業を行うのですが,上記のようになぜかRPi0WHでコンパイルすると表示されません(バックライトは点きます).そのため上記のissuesの中であるように別のRaspberry Piでコンパイルします(該当コメントは以下のものです).手元にRaspberry Pi 3 Model B(Model B+ではないです,以下RPi3B)があったのでそちらで作業します.
Raspberry Pi 4や3 Model B+/Aとかでもいいとは思いますが,手元にあったのはRPi3Bだったのでこれを使いました.まず起動すると,初期設定等(SDカードの容量拡大等)行われますので,終わるまで待ちます.
軌道が終わった後「sudo apt update」と「sudo apt upgrade」を行いアップデートするか,画面右上に表示されるアップデート通知からアップデートしてください.その際はインターネットが必要なのでWifi等でインターネットにつなげてください.
SPIを有効化する
次にDisplay HAT Miniとの通信のためにSPIを有効化します.いつもの設定ソフトを以下のコマンドで開きます.
次にクローンするのですが,URLが異なります.Display HAT Mini用のブランチ(feature/pimoroni-display-hat-mini)があるのでそれをダウンロードします(なおGithub上のURLはそもそもフォークする前の「juj/ili9341」のURLなので注意してください).
$ cd ~
$ git clone -b feature/pimoroni-display-hat-mini https://github.com/pimoroni/fbcp-ili9341.git
その後,自動起動のcronを使って,いろいろプログラムを走らせていましたが,気づいたらシステムが強制終了しており,さらに再起動もできなくなっていました.
ということでシステムの復旧とついでにOSを「Ubuntu Server 20.04」,さらには「Ubuntu Server 22.04」へのアップデートを行います.
前々回の記事でも書いたように「Ubuntu Server 20.04」を直接インストールするとHDDを認識できません.
そのため,改めて「Ubuntu Server 18.04」を再インストールし,「do-release-upgrade」を使って「Ubuntu Server 20.04/22.04」にアップデートします.
Rock PiのようなSBCの場合,OSが破損した際に原因によってはOSが入っているSDカードにアクセスできなくなる事例があります.自分はこれまでRaspberry Pi 2で2枚,Raspberry Pi 3で1枚,Raspberry Pi 4で1枚それぞれ壊しています(泣).
まずはSDカードが生きているか確認します.Windowsに刺したところ,SDカードの認識とドライブの認識(Rock Piの場合4つにパーティションを区切っています)はできました.なので前回と同様に「balenaEtcher」で書き込みしようとしたところ,「Starting...」から全然進みません...
ということでSDカードは破損(詳しく言うと書き込み不可の状態で固定)したと考え,新しいSDカードに書き込むこととします.
# OSのアップデート
$ sudo do-release-upgrade
Checking for a new Ubuntu release
...
Reading cache
Checking package manager
Continue running under SSH?
This session appears to be running under ssh. It is not recommended
to perform a upgrade over ssh currently because incase of failure it
is harder to recover.
If you continue, an additional ssh daemon will be started at port
'1022'.
Do you want to continue?
Continue [yN]
# アップデートとアップグレード
$ sudo apt update
...
$ sudo apt -y upgrade
...
# OSのアップデート
$ sudo do-release-upgrade
...
Not enough free disk space
The upgrade has aborted. The upgrade needs a total of 193 M free
space on disk '/boot'. Please free at least an additional 128 M of
disk space on '/boot'. You can remove old kernels using 'sudo aptautoremove' and you could also set COMPRESS=xz in
/etc/initramfs-tools/initramfs.conf to reduce the size of your
initramfs.
...
組み立てが終わったのでHDDを認識しようとしたら,認識してくれませんでした.というのも公式で確認されているのは「Ubuntu Server 18.04」で,現在使っている「Ubuntu Server 20.04」は未確認だからです.ということで改めて「Ubuntu Server 18.04」でやり直していこうと思います.
書き込むためにはマイクロSDカードを取り出す必要があります(Rock Pi 4AにはUSB3.0 OTGがあるのでRock Pi 4Aをライター代わりに使うこともできるのかもしれないです).ただすでにHATを取り付けたため,外すのは大変(やったことがある人はよくわかると思います)です.2×20のしっかりとはまったピンソケットは外す際にピンヘッダが曲がる可能性もあり,あまりやりたくはないです.
ということでマイクロSDカードをふさいでいるのはフラットケーブルなのでこれを外しちゃいましょう.ただ,HAT側のコネクタは内側にあるので,アクセスが大変(というより無理?)なので,PCIE2FPC側を外します.
第2回ででのコネクタのつなげ方の逆をやればいいので,バーを外して,コネクタを引っこ抜けばいいです.
ここは初回と同じようにユーザ名とパスワードがともに「rock」です.ただ最初起動したときは画面がHDではなく,640×480で表示されていました.またSSHもインストールされていませんでした.さらにインジケータのRock Pi 4A上の青色LEDが全く光らず,調べてみましたが,光らせる方法が見つかりませんでした(泣).LEDを光らせるためにはあるファイルに状態等書く必要があるのですが,そのファイル自体がなく,お手上げです...
なお「Ubuntu Server 20.04」ではコマンドラインの「$」の前は初期状態で「rock@rockpi-4b」でしたが,「Ubuntu Server 18.04」の場合,「rock@linux」でした.
Welcome to Ubuntu 18.04.6 LTS (GNU/Linux 4.4.154-59-rockchip-xxxxxxxx aarch64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage
This system has been minimized by removing packages and content that are
not required on a system that users do not log into.
To restore this content, you can run the 'unminimize' command.
$ sudo unminimize
This system has been minimized by removing packages and content that are
not required on a system that users do not log into.
This script restores content and packages that are found on a default
Ubuntu server system in order to make this system more suitable for
interactive use.
Reinstallation of packages may fail due to changes to the system
configuration, the presence of third-party packages, or for other
reasons.
This operation may take some time.
Would you like to continue? [y/N] y
Re-enabling installation of all documentation in dpkg...
Updating package list and upgrading packages...
Hit ...
...
# 改めてHDDのディスク名を確認します.
$ sudo fdisk -l
Disk /dev/ram0: 4 MiB, 4194304 bytes, 8192 sectors
...
Disk /dev/sda: 5.5 TiB, xxxxxxxxxxxxxxxxxx bytes, xxxxxxxxxx sectors
Units: sectors of 1 * xxx = xxx bytes
Sector size (logical/physical): xxx bytes / xxx bytes
I/O size (minimum/optimal): xxx bytes / xxx bytes
Disk /dev/mmcblk0: xx.xx GiB, xxx bytes, xxx sectors
...
# HDDのディスク名「/dev/sda」に対し作業を行います
$ sudo gdisk /dev/sda
GPT fdisk (gdisk) version 1.0.3
Partition table scan:
MBR: not present
BSD: not present
APM: not present
GPT: not present
Creating new GPT entries.
# 記事にある通り,パーティションを「n」で作成します# 特にいじることもないのでそのまま「Enter」で進みます
Command (? for help): n
Partition number (1-128, default 1):
First sector (34-11721045134, default =2048) or {+-}size{KMGTP}:
Last sector (2048-11721045134, default =11721045134) or {+-}size{KMGTP}:
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter =8300):
Changed type of partition to 'Linux filesystem'# 次にパーティションテーブルを確認します
Command (? for help): p
Disk /dev/sda: xxxxxxxxxxxxx sectors, 5.5 TiB
Model: WDC WD60EZAZ-00S
Sector size (logical/physical): xxx/xxx bytes
Disk identifier (GUID): xxxxxxxxxxxxxxxxxxxxxxx
Partition table holds up to xxx entries
Main partition table begins at sector xx and ends at sector xx
First usable sector is xx, last usable sector is xxxxxxxx
Partitions will be aligned on xxxxxxxxx boundaries
Total free space is xxxx sectors (xxxxx KiB)
Number Start (sector) End (sector) Size Code Name
1 xxxx xxxxxxxxxx 5.5 TiB 8300 Linux filesystem
# 最後に書き込みます# 途中で確認されるので「Y」を入力します
Command (? for help): w
Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
PARTITIONS!!
Do you want to proceed? (Y/N): Y
OK; writing new GUID partition table (GPT) to /dev/sda.
The operation has completed successfully.
# ちゃんとパーティションが作られたか確認します
$ sudo fdisk -l
Disk /dev/ram0: 4 MiB, 4194304 bytes, 8192 sectors
...
Disk /dev/sda: 5.5 TiB, xxxxxxxxxxxxxxxxxx bytes, xxxxxxxxxx sectors
Units: sectors of 1 * xxx =xxx bytes
Sector size (logical/physical): xxx bytes / xxx bytes
I/O size (minimum/optimal): xxx bytes / xxx bytes
Disklabel type: gpt
Disk identifier: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Device Start End Sectors Size Type
/dev/sda1 xxxx xxxxxxxxxxx 5.5T Linux filesystem
Disk /dev/mmcblk0: xx.xx GiB, xxx bytes, xxx sectors
...
# /dev/sda1ができていることを確認しました# これをNTFSにフォーマットします# 「-Q」でクイックフォーマットにしないと# とても時間がかかりそうでした
$ sudo mkfs.ntfs -Q-L rockhdd-1 /dev/sda1
Cluster size has been automatically set to xxxx bytes.
Creating NTFS volume structures.
mkntfs completed successfully. Have a nice day.
# ちゃんとNTFSにフォーマットされているか確認します
$ sudo parted -l
Model: ATA WDC WD60EZAZ-00S (scsi)
Disk /dev/sda: 6001GB
Sector size (logical/physical): xxxB/xxxxB
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 xxxxkB 6001GB 6001GB ntfs Linux filesystem
Model: SD SD64G (sd/mmc)
...
このままでも使う時に問題はないですが,もし次起動したときIPアドレスが変わると,何らかの方法で確認することになります.そこでこういったサーバについてはIPアドレスを固定することが多いです.通常は「/etc/network/interface」下にあるファイルを書き換えて設定しますが,Rock Pi 4Aの場合は「nmtui」で設定します.
このまま下の「<OK>」を選択すると前の画面に戻るので下にある「<Back>」で最初の画面に,その画面の「<Quit>」で終了します.そうすると元のターミナル画面に戻ります.最後は設定を反映させるためネットワークを再起動します.ただコマンドを間違えたのか再起動できなかったので私はRock Pi 4Aごと再起動しました.
ということでHDDの認識からSambaの実行まで行いました.実際にファイル転送等してみましたが,Rock Pi 4Aの温度はヒートシンク・ファンなしの状態で45~55℃の範囲で推移していました.室温がとても低い(15℃程度)というのもあると思いますが,思ったほど発熱していない状況です.ファンとヒートシンクのめどもついたのでケースを作ります.それについても記事にします.
OSについてはUbuntu Server 18.04のサポート期限が2023年4月までなのでまだ大丈夫ですが,そのうち20.04にアップグレードしないといけないです.新しいイメージで入れなおすと認識しないので,この状態で「do-release-upgrade」でアップグレードしてみたいと思います.以前RPi2をUbuntu 14.04から16.04にアップグレードした際もそれでうまくいった記憶があるので,そのうち挑戦したいと思います.とりあえずはPCの容量表示が真っ赤なので青色に戻るまでデータを移行します...