○○インスパイア系を食した話【radxa zero3w】

ラーメンの話じゃないよ

# はじめに
- GW前にラズパイ5に触り始めて、最初はヘッドレスに取り組んでみたけど、arduino村からやってきた身としては、「ラズパイも電子パーツを動かしてなんぼでしょ」と途中で目が覚めた。
- つか、環境構築ってプログラムを書く楽しさはなく、延々とネットで調べて試行錯誤する苦行だったよ。まぁ、ラズパイ自体をパーツと捉えて、ラズパイを動かす楽しさもちょっぴりあったけどね。
- で、反省した後、パーツを取り付けやすいzero2wを買ったけど、今どきmicroUSBとか終わってると思ったので、速攻で[radxa_zero3w](https://docs.radxa.com/en/zero/zero3)(以下、zero3)を注文した。
- eMMCを装備していて、sdカードがなくても使える。もちろんsdカードスロットもあるから、eMMCをないものとして運用も可能だけど。
- 今回は、zero3のeMMCにdebianをインストールして見たので、紹介する。

# 手順(eMMCインストール)
- eMMCインストールは面倒だから、別にsdカードでいいやと思ったら、[こちら](https://docs.radxa.com/en/zero/zero3/getting-started/install-os)へどうぞ。インストールの楽さや、バックアップの容易さを考えたら、eMMCを使うメリットってあまり思い浮かばない...それでも、eMMC運用にロマンを感じる人は次に進んでみたらいいよ。
- まあ、[このページ](https://docs.radxa.com/en/zero/zero3/low-level-dev/install-os-on-emmc)の手順通りにやるだけなんだけどね。
- ubuntuやmac使いの人は、コマンドベースで、[rkdeveloptool](https://github.com/rockchip-linux/rkdeveloptool)を使ってeMMCに書き込むことになる。windowsの場合は、[アプリ](https://docs.radxa.com/en/zero/zero3/low-level-dev/rkdevtool)があるから、もう少し楽みたいだけどね。
- まずは、ubuntuやmacにrkdeveloptoolをインストールすることから始める。
- debian(ubuntu)での手順は次の通りとされている。今回は、parallels上のubuntu24.04で作業を行った。
```bash
sudo apt-get update
sudo apt-get install -y libudev-dev libusb-1.0-0-dev dh-autoreconf pkg-config libusb-1.0 build-essential git wget
git clone https://github.com/rockchip-linux/rkdeveloptool
cd rkdeveloptool
wget https://patch-diff.githubusercontent.com/raw/rockchip-linux/rkdeveloptool/pull/73.patch
wget https://patch-diff.githubusercontent.com/raw/rockchip-linux/rkdeveloptool/pull/85.patch
git am *.patch
autoreconf -i
./configure
make -j $(nproc)
sudo cp rkdeveloptool /usr/local/sbin/
```
- 上記手順通りにやって、rkdeveloptoolを無事にインストールできた人はお疲れ様でした。僕はうまくいきませんでした。
- 途中の`git am *.patch`で、下記メッセージが出て止まったよ。
```
*** Please tell me who you are.

Run

  git config --global user.email "you@example.com"
  git config --global user.name "Your Name"

to set your account's default identity.
Omit --global to set the identity only in this repository.

fatal: unable to auto-detect email address (got '*****@***.(none)')
```
- でね、調べると、emailと名前を登録できてないのが原因ということで、メッセージに従って、`git config --global user.email "メアド"`と`git config --global user.name "なまえ"`をしたわけですよ...
- で、エラー回避できず。なんでだよ。
- 結構、調べたら、「--global」を「--local」にしたらOKという情報を見つけて、うまくいった........ふぅ.......こういうとこだよ、linuxの作業で本当に本当にイライラするのは...画面の通りに作業して、ネットで調べても、うまく行く人とうまく行かない人がいて、その解決策も膨大な試行錯誤で知るしかないという、壮大な無駄な時間。糞みたいな時間だよ。
- で、rkdeveloptoolを無事にインストールできたので、-hオプションで機能を見ると、次の通り。
```
---------------------Tool Usage ---------------------
Help:			-h or --help
Version:		-v or --version
ListDevice:		ld
DownloadBoot:		db <Loader>
UpgradeLoader:		ul <Loader>
ReadLBA:		rl  <BeginSec> <SectorLen> <File>
WriteLBA:		wl  <BeginSec> <File>
WriteLBA:		wlx  <PartitionName> <File>
WriteGPT:		gpt <gpt partition table>
WriteParameter:		prm <parameter>
PrintPartition:		ppt 
EraseFlash:		ef 
TestDevice:		td
ResetDevice:		rd [subcode]
ReadFlashID:		rid
ReadFlashInfo:		rfi
ReadChipInfo:		rci
ReadCapability:		rcb
PackBootLoader:		pack
UnpackBootLoader:	unpack <boot loader>
TagSPL:			tagspl <tag> <U-Boot SPL>
-------------------------------------------------------
```
- 使うのは、①`-db`と②`-wl`と③`-rd`と④`-ef`と⑤`-ld`だけ。
- osを書き込むときの順番は、①⇒②⇒③
- 書き込んだosを削除するときは、①⇒④⇒③
- macがzero3を認識しているかどうかを確認するのが⑤。認識されていれば、こんな感じで返ってくる。macにzero3を接続するときは、裏面の小さなボタンを押しながら刺すこと。
![スクリーンショット 2024-05-25 16.29.15.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2733720/d969d1ab-872b-c3fe-fb14-9a548e9f32e3.jpeg)
- osは[ここ](https://github.com/radxa-build/radxa-zero3/releases)から選ぶけど、説明を見るとこれ一択みたいなので、素直にこれにした。
![スクリーンショット 2024-05-25 19.12.43.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2733720/7c7c6cb3-0daf-3309-37af-5a9539e4c37c.jpeg)
- ちなみに、書き込んだosを削除してからsdを差し込んで起動しても、sdからbootしてくれないから、再度、eMMCにosを書き込むしかない。
- sdからbootさせるための方法もありそうだけど、調べる苦労が果てしなさそうだから、調べるのをやめた。

# osインストール後
- 起動するとこんな感じ
![スクリーンショット 2024-05-25 19.26.40.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2733720/0fce77b2-d978-c278-c178-9a3617a0b19c.jpeg)
- 実は、最初、軽量と噂の[dietpi](https://dietpi.com/)がzero3用のosイメージを配布してたからインストールしたんだけど、bluetoothが使えなかったから諦めた。
- その点、radxa純正のosイメージはちゃんとbluetoothが使えたよ。それだけで感動できちゃうね、ラズパイ界隈は。本当にくだらないことで感動できちゃうよ。
- で、まずは、[ちっこいキーボード](https://qiita.com/kei_tnk/items/a3f6e005d01b4506e0ea)を使ってbluetooth設定して、[いんちきヘッドレス(自作キャプチャアプリ版)](https://qiita.com/kei_tnk/items/6a3aaaa1f9e64bc44e7c)が可能となりました。めでたしめでたし。
- そうだ、重要なことを伝えるの忘れてた。
- インストールした後に、「よーし、パパ、upgradeしちゃうぞ〜」とつぶやきつつ`sudo apt upgrade`をしたらアウト。bluetoothが使えなくなります。
- upgradeした後、rebootとすると、画面右上のアイコン（赤矢印）が消えます。
![スクリーンショット 2024-05-25 19.38.20.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2733720/b68c4b5f-8d8e-a1ec-5b7a-3ec1e4b38f78.jpeg)
- そして、こんな感じになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2733720/9e8c39f8-9d9e-9d38-ec59-24b8beecfe54.png)
- `sudo apt update`するのはいいけど、upgradeは慎重にね。

# 終わりに
- upgradeしちゃった愚かな僕の場合、なんとかbluetoothを回復できないか調べるため、1時間ほど潰して分からず、じゃあとりあえずsdカードで起動させようかと思って、sdカードを起動ドライブにする方法を調べるために1時間ほど潰して分からず、しょうがないからeMMCをクリアすれば強制的にsdカードで起動するだろうと思って、eMMCをクリアする方法を調べるのに３０分ほど費やし（これは判明した。）、eMMCをクリアしてもsdから起動しないことが判明し、結局、eMMCに再インストールした、と....
- この過程で、外国人も苦労して見つけられていない現状を知ったよ。みんな、無駄な時間を過ごしてるなぁ。
- プログラムを書くための知識を得るために費やした時間は、努力を積み上げた気がするけど、たかが環境構築のために無駄な時間を過ごすのは、本当に糞。時間をドブに捨ててる気がする。
- そういえば、スマホ操作用の言語として学習するのにswiftを選んだのは、AndroidStudioが環境由来のエラーしまくったから、それに嫌気がさしたからなんだよなぁ。
- 結局、○○インスパイア系を食した結果、playgrounds最高！ってことが再確認できたよ。ありがとう！そして、ありがとう！