NanoPi R5S を入手したので FreeBSD を動かしてみた


# NanoPi R5S とは
NanoPi R5S という手頃な値段でモリモリな SBC がありますので入手してみました。
<img width="40%" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/913528/b0bed7af-8993-cd96-be2e-5384dc953967.jpeg"> <img width="40%" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/913528/208f90cd-3811-fade-9576-3a296ac18733.jpeg"> <img width="40%" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/913528/208b1482-36f2-134b-5916-ed409e21fb5d.jpeg">

以下のようなデバイスを積んでいます。
詳細は [NanoPi R5S 製品サイト](https://www.friendlyelec.com/index.php?route=product/product&product_id=287)を参照してください。 
- SoC
RK3568B2 2GHz
NPU 付き
- メモリ
4GB
- NIC
1Gbps x 1 (SoC 内蔵)
2.5Gbps x 2 (PCI Express 経由)
- その他特筆する点
    - ついに HDMI がついた
    - eMMC 搭載 (16GB)
    - NVMe が使える (当然 NVMe は付属はしない)
    - 無線関連デバイスが**一切ついてない**

コンパクトな PC と謙遜ないくらいのデバイスを積んでいます。
価格は $85 (ケース付き、送料別) ですので、なかなかコスパがよいと思います。ただ、円安がだいぶ進んでいるときに買ったので高かったですが...。
Raspberry Pi は品薄で全然手に入りませんので、もうこちらに乗り換えてよいような気がしています。

# 最低限やること
HDMI がついたのでシリアルコンソール (debug port) は不要な気がしますが、無いとやっぱり不便なので生やします。
NanoPi R5S は debug port にヘッダピンが無いのとケースから基板が外れそうにないので、裏側からケーブルを直接ハンダ付けします。
ちょうどいい具合に無線 LAN のアンテナを付けると思われる穴が開いているので、そこからうまく生やすことができました。
<img width="40%" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/913528/d626ec56-a70c-a554-30e0-7e48aa2838f5.jpeg"> <img width="50%" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/913528/4338fa05-b652-ddca-0056-16541ea22269.jpeg">

# FreeBSD を動かしてみる
私が調べた限りですと、そもそも RK356x (RK3566 も同じ系統の SoC なので) は FreeBSD でサポートされているのかどうか分かりませんでした。まだサポートされていないような雰囲気です。
Twitter では動いたという報告があったのと[こちら](https://personalbsd.org)を追いかけていくと NanoPi R5S のイメージがありますので、ひとまず使わせていただくことにしました。
ただ、起動はしますがネットワークに接続できず eMMC も NVMe も見えませんでした。
NIC は SoC 内蔵の 1Gbps (eqos ドライバ) だけが見えますが、IP アドレスを手動で割り当てても通信ができませんでした。

_PCI は何も見えないが USB は使えそう_
![FreeBSD_originimage_pciusb.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/913528/71cce456-06e0-a1d3-6e66-96f1ac2ffc3b.png)

_NIC は Link up するが通信ができない_
![FreeBSD_originimage_ifconfig.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/913528/4ee7fbbd-0228-332e-dd23-1b194f9fc1df.png)

なお、このイメージを元に 12/17 頃の current にしてみたら gpio を認識するあたりで panic しました。
RK356x は鋭意対応作業中らしいので、動作するにはしばらく待つ必要がありそうです。
![FreeBSD_221217_panic.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/913528/93cd77d9-0d4f-f2c0-84ba-80b6851bca26.png)

# NanoPi R5S の UEFI ファームウェアと ESXi on Arm
NanoPi R5S には[UEFI ファームウェア](https://github.com/S199pWa1k9r/quartz64_uefi/tree/nanopi-r5s)があります。
ただ、これの[元になっているUEFI ファームウェア](https://github.com/jaredmcneill/quartz64_uefi)がまだいろいろ対応中なので動かないデバイスの方が多いですが最低限シリアルコンソールに出力できますので、UEFI から OS を起動することが可能です。
UEFI が存在するので、一応 [ESXi on Arm](https://flings.vmware.com/esxi-arm-edition) が動きます。
これも 1G の NIC しか使えず、2.5G の NIC は Realtek チップなので x86 と同様に Arm でもドライバがありません。eMMC や NVMe もまだまったく見えない状態です。
ただ、そもそもメモリが 4GB しかないので、このデバイスに対応しても実用は厳しいかも知れません。
NIC がたくさんついていて NVMe が使えるので ESXi を動かすにはかなりおもしろいデバイスなのですが、メモリが少ないのが残念です。
![r5sesxi-web-qiita.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/913528/0ec4a9f4-37b6-bfec-8c5a-97c48bf208cb.png)

# まとめ
とりあえず現時点で FreeBSD が動くには動きますが、対応はまだまだといったところです。適当に Current を追っかけながら様子を見たいと思います。
デバイスとしては 2.5Gbps の NIC が 2 つと NVMe が使えることから、簡易的な NAS として使えそうです。
HDMI もついていますのでコンパクトなデスクトップ PC として使うのもよいと思います。
Debian であれば製造元の FriendlyElec が提供していますので、全部のデバイスが動く状態で利用が可能です。