NanoPi NEO3

From FriendlyARM WiKi
Jump to: navigation, search


1 Introduction

  • The NanoPi NEO3 is another fun board developed by FriendlyELEC for makers, hobbyists and fans.

2 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 Key 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

3 Diagram, Layout and Dimension

3.1 Layout

NanoPi NEO3 Layout
Pin# Name Linux GPIO Pin# Name Linux GPIO
1 3.3V(OUT) 2 5V(OUT/IN)
3 I2C0_SDA 4 5V(OUT/IN)
5 I2C0_SCL 6 GND
7 GPIO2_A2/IR-RX 66 8 GPIO3_A4/UART1_TX 100
9 GND 10 GPIO3_A6/UART1_RX 102
11 GPIO2_B7/I2S1_MCLK 79 12 GPIO2_C3/I2S1_SDI 83
13 GPIO2_C1/I2S1_LRCK_TX 81 14 GND
15 GPIO2_C2/I2S1_SCLK 82 16 GPIO3_A5/UART1_RTSN 101
17 3.3V(OUT) 18 GPIO3_A7/UART1_CTSN 103
19 GPIO3_A1/SPI_TXD 97 20 GND
21 GPIO3_A2/SPI_RXD 98 22 GPIO2_C7/I2S1_SDO 87
23 GPIO3_A0/SPI_CLK 96 24 GPIO3_B0/SPI_CSN0 104
25 GND 26 GPIO0_D3/SPDIF_TX 27
  • USB2.0
Pin# Name Pin# Name
3 DP1 4 OTG_DP
5 DM1 6 OTG_DM
7 5V 8 5V
  1. For more details refer to the document: NanoPi-NEO3-2005-Schematic.pdf

3.2 Dimensional Diagram

Refer to the document: pcb file in dxf format

4 Get Started

4.1 Essentials You Need

Before starting to use your NanoPi NEO3 get the following items ready

  • NanoPi NEO3
  • MicroSD Card/TF Card: Class 10 or Above, minimum 8GB SDHC
  • TYPC-C 5V/2A power adapter
  • A host computer running Ubuntu 16.04 64-bit system

4.2 TF Cards We Tested

To make your NanoPi NEO3 boot and run fast we highly recommend you use a Class10 8GB SDHC TF card or a better one. The following cards are what we used in all our test cases presented here:

  • SanDisk TF 8G Class10 Micro/SD High Speed TF card:

SanDisk microSD 8G

  • SanDisk TF128G MicroSDXC TF 128G Class10 48MB/S:

SanDisk microSD 128G

  • 川宇 8G C10 High Speed class10 micro SD card:

chuanyu microSD 8G

4.3 Install OS

4.3.1 Download Image Files

Go to download link to download the image files under the officail-ROMs directory and the flashing utility under the tools directory:

Image Files: Based on UbuntuCore 18.04 and Linux-5.4.12 Kernel Based on OpenWrt and Linux-5.4.12 Kernel
Flashing Utility:
win32diskimager.rar Windows utility. Under Linux users can use "dd"

4.3.2 Linux Flash to TF
  • FriendlyCore / Debian / Ubuntu / OpenWrt / DietPi are all based on a same Linux distribution and their installation methods are the same.
  • Extract the Linux image and win32diskimager.rar files. Insert a TF card(at least 8G) into a Windows PC and run the win32diskimager utility as administrator. On the utility's main window select your TF card's drive, the wanted image file and click on "write" to start flashing the TF card.

After it is installed you will see the following window:

  • Insert this card into your board's BOOT slot and power on (with a 5V/2A power source). If the PWR LED is on and the STAT LED is blinking this indicates your board has successfully booted.

5 Work with FriendlyWrt

5.1 Introduction to FriendlyWrt

FriendlyWrt is a customized system made by FriendlyElec based on an OpenWrt distribution. It is open source and well suitable for developing IoT applications, NAS applications, smart home gateways etc.

5.2 Account & Password

By default the password is NULL. You can set a password for root for web and SSH login.

5.3 Network Connection

Use a network cable to connect NanoPi-NEO3's WAN to a master router and the board will get an IP address via DHCP. Login into the router and check NanoPi-NEO3's IP address.

5.4 Login FriendlyWrt

Type NanoPi-NEO3's IP address or http://friendlywrt/ in a browser's address bar and enter to open FriendlyWrt's administration page or you can login into FriendlyWrt's administration page via SSH.
By default, the IP address of the LAN port is, and the WAN will dynamically obtain the IP address from your main router.

5.5 Install Software Packages

5.5.1 Update Package List

Before install software packages update the package list:

$ opkg update

5.5.2 List Available Packages

$ opkg list

5.5.3 List Installed Packages

$ opkg list-installed

5.5.4 Install Packages

$ opkg install <package names>

5.5.5 Remove Packages

$ opkg remove <package names>

5.6 Work with USB WiFi Device

5.6.1 Check USB WiFi Device with Command Line Utility

(1) Click on "services>ttyd" to start the command line utility

(2) Make sure no USB devices are connected to your board and run the following command to check if any USB devices are connected or not



(3) Connect a USB WiFi device to the board and run the command again


You will see a new device is detected. In our test the device's ID was 0BDA:C811

(4) Type your device's ID (in our case it was "0BDA:C811" or "VID_0BDA&PID_C811") in a search engine and you may find a device that matches the ID. In our case the device we got was Realtek 8811CU.

5.6.2 Configure a USB WiFi Device as AP

(1) Connect a USB WiFi device to the NanoPi R2S. We recommend you to use the following devices which we have tested with FriendlyElec's rk3328-sd-friendlywrt-5.4-20200514.img file
Note: devices that match these VID&PIDs would most likely work.

(2) Click on "System>Reboot" and reboot your NanoPi R2S


(3) Click on "Network>Wireless" to enter the WiFi configuration page

(4) Click on "Edit" to edit the configuration

(5) On the "Interface Configuration" page you can set the WiFi mode and SSID, and then go to "Wireless Security" to change the password. By default the password is "password". After you make your changes click on "Save" to save


(6) After you change the settings you can use a smartphone or PC to search for WiFi

5.7 Work with Docker Applications

5.7.1 Work with Docker: Install JellyBin

mkdir -p /jellyfin/config
mkdir -p /jellyfin/videos
docker run --restart=always -d -p 8096:8096 -v /jellyfin/config:/config -v /jellyfin/videos:/videos jellyfin/jellyfin:10.1.0-arm64 -name myjellyfin

After installation, visit port 8096 and here is what you would find:

5.7.2 Work with Docker: Install Personal Nextcloud

mkdir /nextcloud -p
docker run -d -p 8888:80  --name nextcloud  -v /nextcloud/:/var/www/html/ --restart=always --privileged=true  arm64v8/nextcloud

After installtion, visit port 8888.

5.8 Enable Swap Partition

Run the following commands in a commandline utility and reboot:


5.9 Mount smbfs

mount -t cifs // /movie -o username=xxx,password=yyy,file_mode=0644

5.10 Compile u-boot,kernel or friendlywrt

6 Compile FriendlyWrt

6.1 Download Code

mkdir friendlywrt-rk3328
cd friendlywrt-rk3328
repo init -u -b master-v19.07.1 -m rk3328.xml --repo-url=  --no-clone-bundle
repo sync -c  --no-clone-bundle

6.2 1-key Compile


All the components (including u-boot, kernel, and friendlywrt) are compiled and the sd card image will be generated.

7 Work with FriendlyCore

7.1 FriendlyCore User Account

  • Non-root User:
   User Name: pi
   Password: pi
  • Root:
   User Name: Root
   Password: fa

7.2 Update Software Packages

$ sudo apt-get update

7.3 Setup Network Configurations

By default "eth0" is assigned an IP address obtained via dhcp. If you want to change the setting you need to change the following file:

vi /etc/network/interfaces.d/eth0

For example if you want to assign a static IP to it you can run the following commands:

auto eth0
iface eth0 inet static

To change the setting of "eth1" you can add a new file similar to eth0's configuration file under the /etc/network/interfaces.d/ directory.

8 Make Your Own OS Image

9 Resources

9.1 Schematics and Datasheets

9.2 Third Party's Resources

10 Regulatory Compliance