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 chipset support for NanoPi M1 has been included in mainline kernels since 4.2. Most of the board functionality works out of the box, but support for many features has been added rather recently, which means that a fairly recent kernel version is required. Some features (hw accelerated crypto, graphics/video features, thermal, and DVFS) 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 orangepi_pc build target (supported since v2016.01) unless nanopi_m1 target is available build target. The U-Boot repository and toolchain is described in the Mainline U-Boot howto.
The H3 boards can boot from SD, eMMC, NAND or 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 H3 SoC is supported by the mainline kernels. For cpufreq, thermal, and HDMI audio support a) third party patches or b) a pre-patched distro (e.g. Armbian) is still needed (cpufreq support will appear in 4.18). A number of features have stabilized only recently (Ethernet in 4.15 HDMI in 4.17), so make sure you're running a recent kernel if these features are needed.
The development process, links to patches and links to kernel fork repositories are listed on the Linux mainlining effort page. Patches can also be found from the arm-linux mailing list.
Repositories with H3 patches:
- Ondřej Jirman's branch for H3 based orange Pi (kernel 4.17) (work-in-progress DVFS)
- CPU frequency and voltage scaling (cpufreq)
- 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/)
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
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.
- Linux and Android images: https://www.mediafire.com/folder/3q2911p1qp33p/NanoPi-M1Board