NanoPi NEO3
2025.08.23

今回は、FRIENDLY ELEC の NanoPi NEO3 を使ってみました。
NanoPi NEO3 には、表示用のHDMI端子はなく、有線LAN端子を実装しているので、サーバーでの用途、WEBサイト開発環境としての利用が考えられます
ここでは、Ubuntu 24.04 をインストールしています
●NanoPi NEO3

NanoPi NEO3

〇Hardware Spec
・Soc: RockChip RK3328, Quad-core 64-bit high-performance Cortex A53
・RAM: 1GB/2GB DDR4
・LAN: 10/100/1000M Ethernet with unique MAC
・USB Host: 1x USB3.0 Type A and 2x USB2.0 on 2.54mm pin header
・MicroSD Slot: MicroSD x 1 for system boot and storage
・LED: Power LED x 1, System LED x 1
・Key: User Button x 1
・Fan: 2Pin JST ZH 1.5mm Connector for 5V Fan
・GPIO: 2.54mm pitch 26 pin-header, include I2C, UART, SPI, I2S, GPIO
・Serial Debug Port: 2.54mm pitch 3 pin-header, 1500000bps
・Power: 5V/1A, via Type-C or GPIO
・PCB Dimension: 48 x 48mm
・Working Temperature: -20℃ to 70℃
・Weight: 22g


●Ubuntu 24.04 LTS
25.8.0-trunk.309

下のほうにスクロールします

Armbian_community_25.8.0-trunk.309_Nanopineo3_noble_current_6.12.35.img.xz をダウンロードします
ダウンロードしたimgファイルをWin32Diskmanagerなどの書き込みソフトでマイクロSDカードに書き込みます。
●インストール時の接続
商品のボードは予めケースに収納されています。ケースには四か所の爪があり、三角オープナーなどを使って上側の蓋を拡げる形で爪を外します。
ネットワーク接続が済むまでは赤枠のデバックポート(RX,TX,GND)を使って設定作業を行います


USBシリアル変換モジュールを繋いでパソコン上のTeraTermなどを使ってシリアル接続します(変換モジュールのVCCは使用しません)。

事前にLAN端子を用いて有線でネットワークに接続するか、緑枠のUSB端子にWiFiアダプタを挿すことで、
インストール時にDHCPの動的IP接続により、地域設定やネットワーク設定の手間を省くこともできます。
電源ケーブルを繋いで起動します。
〇TeraTermの設定
設定は115200bps、データ8bit、パリティなし、ストップビット1bit、フロー制御なしです。



Create root password: **********
Repeat root password: **********
Choose default system command shell:
1) bash
2) zsh
1
Please provide a username (eg. your first name): ubuntu
Create user (ubuntu) password: **********
Please provide your real name: Ubuntu
At your location, more locales are possible:
1) aa_DJ.UTF-8 170) it_IT.UTF-8
2) aa_ER 171) iu_CA
3) aa_ET 172) ja_JP.UTF-8
4) af_ZA.UTF-8 173) kab_DZ
5) agr_PE 174) ka_GE.UTF-8
6) ak_GH 175) kk_KZ.UTF-8
...........
Please enter your choice:172
Please identify a location so that time zone rules can be set correctly.
Please select a continent, ocean, "coord", or "TZ".
1) Africa
2) Americas
3) Antarctica
4) Asia
5) Atlantic Ocean
6) Australia
7) Europe
8) Indian Ocean
9) Pacific Ocean
10) coord - I want to use geographical coordinates.
11) TZ - I want to specify the timezone using the Posix TZ format.
#? 4
Please select a country or a region whose clocks agree with yours.
..........
24) Japan 53) Turkmenistan
25) Jordan 54) United Arab Emirates
26) Kazakhstan 55) Uzbekistan
#? 24
The following information has been given:
Japan
Eyre Bird Observatory
Therefore TZ='Asia/Tokyo' will be used.
Selected time is now: Thu Jul 3 20:34:23 JST 2025.
Universal Time is now: Thu Jul 3 11:34:23 UTC 2025.
Is the above information OK?
1) Yes
2) No
#? 1
_ _ _ _ _
/_\ _ _ _ __ | |__(_)__ _ _ _ __ ___ _ __ _ __ _ _ _ _ (_) |_ _ _
/ _ \| '_| ' \| '_ \ / _` | ' \ / _/ _ \ ' \| ' \ || | ' \| | _| || |
/_/ \_\_| |_|_|_|_.__/_\__,_|_||_|_\__\___/_|_|_|_|_|_\_,_|_||_|_|\__|\_, |
|___| |__/
v25.8 rolling for NanoPi Neo 3 running Armbian Linux 6.12.35-current-rockchip64
Packages: Ubuntu stable (noble)
Updates: Kernel upgrade enabled and 1 package available for upgrade
Support: for advanced users (rolling release)
sed: -e expression #1, char 0: no previous regular expression
Performance:
Load: 4% Uptime: 13 min
Memory usage: 7% of 1.92G
CPU temp: 52°C Usage of /: 8% of 29G
Commands:
Configuration : armbian-config
Upgrade : armbian-upgrade
Monitoring : htop
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Armbian_community 25.8.0-trunk.309 noble
Release: 24.04
Codename: noble
●ネットワーク設定
用途に応じて有線LAN、WiFiを選べばよいのですが、ここでは両方の設定を行っています
まずはLANケーブルをつないで有線ネットワーク設定を行います

$ sudo armbian-config
〇有線LAN設定
ここでは、NanoPi のLAN固定IPアドレスを 192.168.11.53、GATEWAYを192.168.11.1として設定しています

| Network |
ENS001 - Basic network setup
↓
| Select interface ||
end0 unassigned wired
↓
| Action for end0 |
Configure
↓
| Select IP mode |
static Set IP manually
↓
| Spoof MAC address? |
Valid format: xx:xx:xx:xx:xx:xx ← MACアドレスが表示されます
xx:xx:xx:xx:xx:xx
↓
| Enter IP for end0 |
Valid format: 1.2.3.4/5
192.168.11.53/24 ← 任意の固定IPアドレスを指定します
↓
| Use default route or set static |
Valid format: 0.0.0.0/0
default
↓
| Enter IP for gateway
Valid format:
192.168.11.1
↓
| Enter DNS server |
Valid format: 9.9.9.9,1.1.1.1
192.168.11.1
有線LAN接続が可能になったのでシリアルケーブルは外します
〇無線LAN設定
無線LANの固定IPアドレスを192.168.11.54として説明します

有線で接続可能になった状態で、赤枠のシリアル接続用ケーブルを抜いて、緑枠のUSB端子にWiFiアダプタを繋ぎます。

WiFiアダプタには TP-Link TL-WN725N を使いました

WiFiアダプタはケースに収納するので、アダプタを挿すUSB DIP化基板の背面にポリイミドテープを貼って絶縁しています

TeraTermから有線LANによりSSH接続します

interface にWiFiアダプタが表示されます
| Action for wlx7cc2c612037f |
Configure
↓
| Select SSID |
xxxxxxxx ← WiFIルータのSSIDを選びます
↓
| Enter password for xxxxxxxx |
******** ← パスワードを入力します
↓
| Select IP mode |
static Set IP manually
↓
| Valid format: xx;xx;xx;xx;xx;xx | ← WiFiアダプタのMACアドレス
xx;xx;xx;xx;xx;xx
↓
| Enter IP for wlx7cc2c612037f |
192.168.11.54.24
↓
| Use default route or set static |
default
↓
| Enter IP for gateway |
192.168.11.1
↓
| Valid format: 9.9.9.9,1,1,1,1 |
192.168.11.1
作成された設定ファイルを確認してみます。
上記の設定操作が面倒なときはこのファイルを直接編集してもよいと思います
$ sudo cat /etc/netplan/armbian.yaml
network:
version: 2
renderer: NetworkManager
ethernets:
end0:
addresses:
- "192.168.11.53/24"
nameservers:
addresses:
- 192.168.11.1
dhcp4: false
dhcp6: false
macaddress: "xx:xx:xx:xx:xx:xx"
routes:
- metric: 200
to: default
via: "192.168.11.1"
wifis:
wlx7cc2c612037f:
addresses:
- "192.168.11.54/24"
nameservers:
addresses:
- 192.168.11.1
dhcp4: false
dhcp6: false
macaddress: "xx:xx:xx:xx:xx:xx"
routes:
- metric: 200
to: default
via: "192.168.11.1"
access-points:
"xxxxxxxxxxxx":
auth:
key-management: "psk"
password: "*************"
〇IPv6の無効化
$ cat <<'EOF' | sudo tee -a /etc/sysctl.d/70-disable-ipv6.conf
> net.ipv6.conf.all.disable_ipv6 = 1
> net.ipv6.conf.default.disable_ipv6 = 1
> EOF
設定を反映します
$ sudo sysctl --system
$ ip a
1: lo: mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
2: end0: mtu 1500 qdisc mq state UP group default qlen 1000
link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff
inet 192.168.11.53/24 brd 192.168.11.255 scope global noprefixroute end0
valid_lft forever preferred_lft forever
3: wlx7cc2c612037f: mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff
inet 192.168.11.54/24 brd 192.168.11.255 scope global noprefixroute wlx7cc2c612037f
valid_lft forever preferred_lft forever
これでWiFi接続可能になったので、LANケーブルも外してしまいます
●基本設定
各種設定にはいる前に基本的な作業を行ってしまいます
〇初期ユーザ属性確認
$ cat /etc/group | grep ubuntu
tty:x:5:ubuntu
disk:x:6:ubuntu
dialout:x:20:ubuntu
sudo:x:27:ubuntu
audio:x:29:ubuntu
video:x:44:ubuntu
plugdev:x:46:ubuntu
games:x:60:ubuntu
users:x:100:ubuntu
systemd-journal:x:999:ubuntu
input:x:996:ubuntu
render:x:993:ubuntu
netdev:x:108:ubuntu
ubuntu:x:1000:
$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get install vim
〇sudo のパスワードを入力なしで使う
$ sudo vi /etc/sudoers
# User privilege specification
root ALL=(ALL:ALL) ALL
# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL
# Allow members of group sudo to execute any command
%sudo ALL=(ALL:ALL) ALL
# See sudoers(5) for more information on "#include" directives:
ubuntu ALL=(ALL:ALL) NOPASSWD: ALL
※%sudo で設定が上書きされないようにそれ以降に追加します
※保存は :wq!
rootでのログインを禁止するには、以下のコマンドを実行します
$ sudo passwd -d root
ここからはWEBサイト開発用の環境設定です。
以前に紹介したUbuntu設定と変わるところはありません。
詳細は下記のリンクから記事を参照してください。
●Apache 2.4 のインストール
Apache WEBサーバ設定
●php インストール
PHP 設定
●MySQLインストール
MySQL 設定
〇WEBサイト移植
Raspberry Pi で運用しているWEBサイトを移植してみました。

普通に動きます
●開発環境構築
Arduino や ESP32 のビルド環境と整えます
〇python3-pipのインストール
pip は、Pythonパッケージのインストールなどを行うユーティリティです
$ sudo apt install python3-pip
$ pip3 --version
pip 24.0 from /usr/lib/python3/dist-packages/pip (python 3.12)
〇PlatformIO インストール
$ pip3 install platformio
error: externally-managed-environment
PlatformIO公式サイトからの引用です。
PlatformIO は管理者権限や sudo 権限を必要とせずに動作します。
デフォルトのユーザー アカウントを使用し、追加の権限なしでインストールを実行することを強くお勧めします。
PlatformIO / Installer Script (Recommended)
インストール用スクリプトをダウンロードします
$ curl -fsSL -o get-platformio.py https://raw.githubusercontent.com/platformio/platformio-core-installer/master/get-platformio.py
$ python3 get-platformio.py
Error: Can not install PlatformIO Core due to a missed `venv` module in your Python installation.
仮想環境モジュールがないと指摘されます
$ sudo apt-get install python3.12-venv
$ python3 get-platformio.py
〇仮想環境パス設定
Python 仮想環境のデフォルトの場所は、~/.platformio/penv/bin になります
$ echo 'export PATH=${PATH}:~/.platformio/penv/bin' >> ~/.bashrc
$ source ~/.bashrc
$ echo $PATH | tr ":" "\n"
/usr/local/sbin
/usr/local/bin
/usr/sbin
/usr/bin
/sbin
/bin
/usr/games
/usr/local/games
/snap/bin
/home/ubuntu/.platformio/penv/bin
$ pio --version
PlatformIO Core, version 6.1.18
〇udev rules 設定
99-platformio-udev.rules
udevルールを追加して繁栄させます
$ curl -fsSL https://raw.githubusercontent.com/platformio/platformio-core/develop/platformio/assets/system/99-platformio-udev.rules | sudo tee /etc/udev/rules.d/99-platformio-udev.rules
$ sudo service udev restart
〇テスト・ビルド
$ pio init -b adafruit_qtpy_esp32s2
$ vi src/check.ino
void setup() {
Serial1.begin(115200);
Serial1.print("Hello World\n");
}
void loop() {}
$ pio run -t upload
●実運用

NanoPi NEO 3基板の底面には大きなヒートシンクが付いていて、プラスチック筐体の側面から熱を放出するようになっています。
消費電力は5V/1Aなのでモバイルバッテリーからでも動かすことができます。
常時運用する場合は、USB3.0端子にSSDを接続し、そこから駆動するようにして、さらに消費電力の大きいWiFiアダプタは外して有線LANで運用したほうがよいと思います。
●余談:NaniPi NEO Air

実は、NanoPi NEO 3を購入する前に、PayPayフリマでお安くNaniPi NEO Airを購入していました。
こちらには、Armbian Linux 6.12をインストールしています。
PlatformIOをインストールしたところ、Arduino系のビルドは行えるのですが、ESP32系ではtoolchain関連で不具合が発生してしまいました。
|