FriendlyARM NanoPi M1
|FriendlyARM NanoPi M1|
|Dimensions||64mm x 56mm|
|Release Date||March 2016|
|Website||NanoPi M1 Product Page|
|SoC||H3 @ 1.2Ghz|
|DRAM||512MiB (K4B2G1646D-BCK0) or 1GiB (K4B4G1646D-BCK0) DDR3|
|Power||DC 5V @ 2A via microUSB or pin headers|
|Audio||microphone, stereo line-out, I²S and S/PDIF on pin headers|
|Network||10/100Mbps Ethernet (H3 built-in PHY)|
|USB||3 USB2.0 Host, 1 USB2.0 OTG|
Almost square board, blue soldermask, ⌀3mm mounting holes in the corners. 3 x USB type-A, Ethernet jack (with integrated magnetics) and four-pin header for UART/power near one of the edges. Sticker indicating amount of RAM is placed on the lower PCB side.
On the top side of the board, next to H3 SoC, the following is silkscreened:
(on LinkSprite's OEM variant 'pcDuino4 nano' can be read instead)
The H3 SoC support has matured since its introduction in kernel 4.2. Most of the board functionality for boards such as NanoPi M1 are available with current mainline kernels. Some features (hw accelerated crypto, hw spinlocks, and thermal) are still being worked on. For a more comprehensive list of supported features, see the status matrix for mainline kernels. In addition, legacy 3.4 kernels are available in various work-in-progress git branches.
See the Manual build section for more details.
NanoPi M1 shares nearly all hardware details with Orange Pi PC (same number of USB ports) and Orange Pi One (same voltage regulator). Besides the differences regarding camera connector and pins available on the GPIO header pretty similar to Orange Pi PC. Detailed device information can be found on FriendlyArm wiki.
FriendlyARM provides a BSP based on a newer Allwinner 3.4.39 variant on Github.
You can build things for yourself by following our Manual build howto and by choosing from the configurations available below.
Use the nanopi_m1_defconfig build target (supported since v2017.07) build target. The U-Boot repository and toolchain is described in the Mainline U-Boot howto.
The H3 boards can boot from SD cards, eMMC, NAND or SPI NOR flash (if available), and via FEL using the OTG USB port. In U-Boot, loading the kernel is also supported from USB or ethernet (netboot). HDMI support in U-Boot is still WIP.
- Siarhei Siamashka's branch '20151207-embedded-lima-memtester-h3'
- Yann Dirson's fork added a few more fixes and adopted most of
- Boris Lovosevic' great initial work on Allwinner's H3 kernel
Configure this kernel using sun8i_h3_defconfig, the rest is explained in the kernel compilation guide.
When booting the legacy 3.4 kernel with the mainline U-Boot, add the following line to boot.cmd:
setenv machid 1029 setenv bootm_boot_mode sec
Some other legacy kernel repositories:
- 3.4-lichee-based kernel, based on work by ssvb and loboris
- Yocto support here glues together all the required parts to get this kernel to work with mainline u-boot, as well as accelerated X11/GLES support
- A newer H3 BSP variant appeared with tons of fixes which has been made available by FriendlyARM.
- A cleaned up fork has been adopted by Armbian project. On top of that Armbian maintains a bunch of 3.4.x patches for H3 devices.
The mainline kernel has good support for the H3 SoC. Please refer to the status matrix for a more detailed list of the development process, links to patches and links to kernel fork repositories. Minor drivers that are currently work-in-progress may require a) third party patches (see also arm-linux mailing list) or b) a pre-patched distro (e.g. Armbian).
Repositories with H3 patches:
- Ondřej Jirman's branch for H3 based orange Pi (kernel 4.19) (work-in-progress DVFS)
- Thermal regulation (if CPU heats above certain temperature, it will try to cool itself down by reducing CPU frequency)
- HDMI audio support (from Jernej Skrabec)
- Configure on-board micro-switches to perform system power off function
- Wireguard (https://www.wireguard.com/)
- Philipp Rossak's THS patches (in the sunxi-ths- branches)
- Corentin Labbe's HW Crypto and spinlock patches (in respective branches)
Use the sun8i-h3-nanopi-m1.dtb device-tree binary.
Tips, Tricks, Caveats
No FEL button. The device falls into FEL mode when no SD card is inserted.
The board has two LEDs, mounted on the top side next to the audio jack:
- A red LED, labelled "PWR", connected to the PL10 pin and to 3.3V via weak pull-up, thus being able to represent three states:
- full brightness when GPIO is set to output high
- reduced brightness when GPIO is set to high impedance state
- turned off when GPIO is set to output low.
- A blue LED, labelled "STAT", connected to the PA10 pin.
Voltage regulators / heat
NanoPi M1 uses the same voltage regulator as Orange Pi One/Lite switching between 1.1V and 1.3V (SY8113B datasheet). Unlike the Xunlong boards which contain a thick copper layer inside the PCB to spread heat away from the SoC FriendlyARM chose a different design. This and maybe the smaller PCB size lead to higher temperatures compared to Orange Pis and in case you want to operate the M1 under constant high load think about adding a heatsink
Adding a serial port
Locating the UART
Four-pin UART0 header is placed next to 40 pin GPIO header. Pinout: GND, 5V, TX, RX. Pin 1 (GND) is the one next to Micro USB connector. Logic voltage is 3.3V. For more instructions refer to our UART Howto.
- FriendlyARM did the pcDuino4 nano as OEM for Linksprite which will be sold starting in September 2016. According to cnxsoft both models are compatible.
FriendlyARM introduced an improved version, the NanoPi M1+ in March 2017. This variant adds with 802.11n WiFi, Bluetooth, and integrated eMMC. All the connectors except for the micro USB OTG and camera ports are also on one side for easier access. The third USB port is provided via additional header pins. The positions of the HDMI and Ethernet ports have also been switched.
- Linux and Android images: https://www.mediafire.com/folder/3q2911p1qp33p/NanoPi-M1Board