NanoPi NEO3 Plus で Ubuntu

使えるようになるまでの流れ

OS イメージのダウンロード と SD カードへの焼き込み

Friendly Elec の Web サイトからダウンロードできる。
Downloadタブをクリックして遷移した先で NanoPi NEO3 Plus を探して、さらにクリックするとダウンロード元となるストレージサイトを選べるので、まぁ、どれでもいいけど、個人的にはわかりやすい Google Drive を選択。

その先で、

RK3528-FriendlyElec > 01_Official image > 01_SD Card images

の中から

rk3528-sd-ubuntu-noble-core-6.1-arm64-20260421.img.gz

を取得。 ※ファイル名の日付の部分はこの時の最新版なので、時が経てば変わるかも?

FriendlyElec Downloads

SD カードへは Friendly Elec 純正の ディスクイメージャー(win23diskimager)を使ってもいいし Rufus を使ってもいいし、とりあえずイメージを書き込めれば何でもいい。

ので、書き込む。

SD カードを差し込んで起動

NanoPi NEO シリーズは HDMI なモニタを接続できないからね、SD カード差し込んで、電源入れて、LEDが点滅しだすけど、しばらく待つしかない。

で、無印 NEO のときは MAC アドレスがローカル管理 MAC なアドレスである 02 から始まってたけど、NEO3 Plus では 86 から始まる…やっぱりローカル管理 MAC なのかよ!w

ということで、見つけるのは簡単。
Netunumでも使えばすぐわかる。

「今までなかったIPが出現」という方法でも(DHCP 環境であれば)わかるし、とにかく何か端末が増えたことがわかれば起動してきたということに。

SSH で接続

Official image な Ubuntu だと、SSH でいきなり接続できる。

ID/PWは 一般ユーザー:pi / pi root:root / fa

となっているので、とりあえず root でログイン。

pi ユーザー削除と root のパスワード変更

root でログインできてしまえばとりあえず問題ない。
そして、普段使うユーザーに pi とかは使いたくないので、pi のホームディレクトリごとごっそりユーザーを削除。

# userdel -r pi

続いて、root のパスワードをデフォルトのままとかはあり得ないので変更。

# passwd root
New password: xxxxxxxxxxxxxxxx
Retype new password: xxxxxxxxxxxxxxxx
passwd: password updated successfully

実際には入力したパスワードは表示されない。

さらに続いて、普段使うユーザーをホームディレクトリも含めて作成する。
しかし、いつも迷うんだよねぇ…adduser と useradd どっちが対話型で便利な方か…
adduser の方なんだけど、たいてい間違える…w

# adduser [newUserName]
info: Adding user `[newUserName]' ...
info: Selecting UID/GID from range 1000 to 59999 ...
info: Adding new group `[newUserName]' (1000) ...
info: Adding new user `[newUserName]' (1000) with group `[newUserName](1000)' ...
info: Creating home directory `/home/[newUserName]' ...
info: Copying files from `/etc/skel' ...
New password: xxxxxxxxxxxxxxxx
Retype new password: xxxxxxxxxxxxxxxx
passwd: password updated successfully
Changing the user information for [newUserName]
Enter the new value, or press ENTER for the default
        Full Name []:
        Room Number []:
        Work Phone []:
        Home Phone []:
        Other []:
Is the information correct? [Y/n] y
info: Adding new user `[newUserName]' to supplemental / extra groups `users' ...
info: Adding user `[newUserName]' to group `users' ...

例によって、実際には入力したパスワードは表示されない。

あと、これだけだと sudo できないので下記も実行して sudo できるようにしておく。

# gpasswd -a [newUserName] sudo
Adding user [newUserName] to group sudo

ここまで来たらいったん exit で抜ける。
プロンプトが # とかちょっと落ち着かないからw

そして、再度 SSH で繋げ、今度は今作った普段使うユーザーでログイン。
ログインできて、プロンプトが $ になると落ち着くよね。

IP アドレスの固定

DHCP で IP アドレスを振られるパターンでも問題なければそのままでもよいけど、たいていは固定するよね?

$ cd /etc/netplan/
$ sudo vi 01-localConf.yaml

として、以下のような内容を書き込む。

network:
  version: 2
  renderer: networkd
  ethernets:
    eth0:
      dhcp4: no
      addresses: [192.168.x.x/24]
      routes:
      - to: default
        via: 192.168.x.x
      nameservers:
        addresses: [192.168.x.x, 8.8.8.8]

内容は環境に応じて適宜変更で。

そして、このファイルのパーミッション設定。

$ sudo chmod 600 01-localConf.yaml

その後、作成したファイルを apply する前に try してみる。

$ sudo netplan try --timeout=30

設定に問題がなさそうなら、

$ sudo netplan apply

IP アドレスが変更になっているならここで SSH が切れるので、その場合はもう一度接続しておく。

時刻合わせ

おそらく、タイムゾーンが UTC になっているはず。
一応下記のようにして確認する。

$ sudo timedatectl status
               Local time: Fri 2026-07-10 13:46:30 UTC
           Universal time: Fri 2026-07-10 13:46:30 UTC
                 RTC time: Fri 2026-07-10 13:46:30
                Time zone: Etc/UTC (UTC, +0000)
System clock synchronized: yes
              NTP service: active
          RTC in local TZ: no

うん、UTC だね。
なので、

$ sudo timedatectl set-timezone Asia/Tokyo

として、タイムゾーンを修正。

$ sudo timedatectl status
               Local time: Fri 2026-07-10 22:48:10 JST
           Universal time: Fri 2026-07-10 13:48:10 UTC
                 RTC time: Fri 2026-07-10 13:48:10
                Time zone: Asia/Tokyo (JST, +0900)
System clock synchronized: yes
              NTP service: active
          RTC in local TZ: no

OK、OK、Tokyo になった。

リポジトリの更新

最初は結構時間かかるはず。だけど、必ずやっておこうというお約束。

$ sudo apt update
$ sudo apt upgrade

あとは良しなに…

Ubuntu なので、Python も入ってるし、Rockchip の RK3528A だしでそこそこいろいろできる。

無印 NEO に比べて縦横ともに 8mm 大きくなってはいるけれど、性能の向上はそれに見合う。
というかそれ以上か。

なぜ NEO3 ではなく NEO3 Plus にしたのか?

試作とかテストだから発熱で壊れたとしてもあきらめがつくから。

もうね、無印 NEO で事足りてたから、それ以上は本当におまけ。
で、じゃぁ、本当に性能が上がってもそれを必要とする場面はないか?というとそんなことはない。

なので、同じ程度の筐体に同じように押し込めてちゃんと動くかな…?
という興味もあって NEO3 Plus を選んでみた。

ただ、なぜだろう、NEO3 と NEO3 Plus の比較が公式サイトでもされてないのがちょっと気になる。
といかわかりにくい。

ので作っておくか。

無印 NEONEO3NEO3 Plus
価格 (2026/07/11現在)22ドル25ドル26ドル
SoCAllwinner H3
ARM Cortex-A7 4core
1.2GHz
Rockchip RK3328
ARM Cortex-A53 4core
1.3GHz
Rockchip RK3528A
ARM Cortex-A53 4core
1.8GHz
GPUMali 400 MP2Mali 450Mali 450
Memory256 / 512 MB1 / 2 GB1 / 2 GB
2StorageMicro SD(max128GB)MicroSD(max128GB)MicroSD(max128GB)
eMMC(オプション)
NIC10/100 Mbps10/100/1000 Mbps10/100/1000 Mbps
AudioLINE IN / OUT
ピンヘッダにあり
なしSpeaker Out のみ
4ピン端子(ZHかな?)
USB2.0 TypeA x1
2.0 ピンヘッダ上に x2
3.0 TypeA x1
2.0 ピンヘッダ上に x2
3.0 TypeA x1
ピンヘッダ36ピンで意外と豊富26ピンで意外と少ない26ピンで意外と少ない
UART / I2C / SPI / GPIOOKOKOK
電源Micro USB
5V2A
USB TypeC
5V1A
USB TypeC
5V2A
KernelLinux-3.4
Linux-4.14
u-boot-2017.11
Linux v4.19
Linux v6.6
u-boot v2017.09
Linux-6.1
u-boot-2017.09
ボードサイズ40 x 40 mm48 x 48 mm48 x 48 mm

こう見ると

SoC(CPU) 性能重視 => Plus
USB 機器を繋げたい => 無印 or 3
低発熱&小さい => 無印
バランス => 3

みたいな感じになるのかな~

価格まで含めて考えると、無印を選ぶのは本当によっぽどだなw
連続フルロードで使ったとしても雑でもいいから排熱処理してあげれば動くという強みはあれど。

けど、4ドル追加で Plus にすれば 3~4 倍速くなる。

しかし、3 と Plus の価格差がたったの 1 ドルって何かのバグですかね。
3 の方が勝っている部分は少なく、Plus の方がよりよくなっているのに、1ドル…

結果として、無印か Plus のどちらかを選ぶことになると思う。

この記事にコメントしてみる