Sinovoip Banana Pi M2+
Despite its name the M2+ is incompatible to both Banana Pi/M1/M1+/Pro and version M2, due to a different SoC - requiring different boot loaders and drivers. It's another attempt to cash in on the Banana Pi's popularity with a SBC only sharing brand, name,
form factor and GPIO header. Fortunately this board is 99% compatible to the H3 Orange Pis, therefore support for it is progressing nicely.
|Sinovoip Banana Pi M2+|
|Dimensions||65mm x 65mm|
|Release Date||April 2016|
|Website||M2+ product page|
|SoC||H3 @ 1.2 GHz|
|DRAM||1GiB DDR3-1600 (K4B4G1646D-BCK0)|
|NAND||8GB eMMC 4.5 (Samsung KLM8G1WEMB-B031)|
|Power||DC 5V @ 2A (4.0mm/1.7mm barrel plug - centre positive)|
|Video||HDMI (HDCP, CEC)|
|Network||BT4.0/WiFi 802.11 b/g/n (Ampak AP6212), 10/100/1000Mbps Ethernet (Realtek RTL8211E)|
|USB||2 USB 2.0 Host, 1 USB 2.0 OTG|
The PCB has the following silkscreened on it:
BPi M2 Plus V1.1
The H3 and BPi M2+ support is progressing nicely. It is possible to find a usable mainline 4.x kernel (plus some patches) and a legacy 3.4 kernel in various work-in-progress git branches. See the Manual build section for more details.
BPi M2+ is more or less a clone of Orange Pi PC/Plus it benefits automagically from all progress being made for these boards.
You can build things for yourself by following our Manual build howto and by choosing from the configurations available below.
Use the orangepi_plus (as a workaround until dedicated defconfig is available). Some alternative configs available from
* Sinovoip_BPI_M2_plus_defconfig (tested with 2016.03 and sun8i-h3-bananapi-m2plus.dts from below). *  build target.
The H3 boards can boot from SD, 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.
Pretty decent support for H3 is available in kernel 4.8. The next kernel 4.9 will add support for I2C and PWM. EMAC support is still missing in mainline kernels although the ethernet port is already accessible with recent U-Boot versions.
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:
- Maxime Ripard's branch 'sunxi/for-next' (very basic H3 support, without USB)
- Hans de Goede's branch 'sunxi-wip' (many work-in-progress patches, including H3 and USB support for it)
- Siarhei Siamashka's branch '20151223-h3-mainline-smp-hack' (minimal set of H3 patches, with USB and SMP)
- Chen-Yu Tsai's branch 'h3-emac' (working Ethernet and USB)
- Ondřej Jirman's branch for H3 based orange Pi (work-in-progress DVFS and USB-OTG)
Use the sun8i-h3-orangepi-plus.dtb device-tree binary (until a dedicated is available) or start on this working mixture of Orange Pi stuff: sun8i-h3-bananapi-m2plus.dts (everything working except of WiFi/BT due to lack of interest) device-tree binary.
Banana Pi M2+ features a 40 pin GPIO header that is advertised as being 'Raspberry Pi compatible'. That's not the case, the pinout varies for unknown reasons. Some details can be found in this post in Armbian forum and also somewhere hidden in manufacturer's forum (with an example how to patch WiringOP/WiringPi -- to be confirmed whether the pin mappings are correct in this example). It should be noted that the manufacturer's hardware description (fex file) still is wrong regarding GPIO pins.
At least one mistake has been discovered/documented: Physical pin 37 on the 40 pin header is not pin PA16 but PA17 instead. This is not a GPIO but OWA/SPDIF instead. Details can be found at the end of the aforementioned thread in Armbian forum.
Tips, Tricks, Caveats
There is a dedicated FEL button called UBOOT next to the reset button.
According to Sinovoip's documentation the board has two LEDs but at least on the developer samples there is only one:
- A red LED, connected to the PL10 pin.
The OTG port is exposed to the Micro USB jack that's also supposed to function as DC-IN source. USB host ports 1 and 2 are available as dual type A receptacle and the data lines of the 3rd USB host port are exposed without any ESD protection next to the 40 pin GPIO header for soldering experiments. For details see the approriate thread in banana-pi.org forum.
DRAM clock speed limit
DRAM is clocked at 672 MHz by the hardware vendor. The settings seem to be copy&paste from Xunlong's Orange Pis and reliability still needs to be verified. One of the ways of doing reliability tests may be https://github.com/ssvb/lima-memtester/releases/tag/20151207-orange-pi-pc-fel-test (developed for Orange Pi PC). An adoption of this using fex files suited for Banana Pi M2+ is available here (md5sum: ca8b910a5f60bbd11781423e8ade59fd fel-boot-lima-memtester-on-orange-pi-h3-v3.tar.bz2). Use the fel-boot-lima-memtester-on-banana-pi-m2-plus script inside.
You have to eject an SD card and in case your board's eMMC contains a valid boot loader you will have to press the u-boot button when you power on the board to enter FEL mode. Please be aware that the board already will boot when you connect the Linux host where fel-boot-lima-memtester-on-banana-pi-m2-plus is running on with M2+ since the powering scheme allows using the Micro USB port for DC-IN too (lima-memtester will need 3.5W so in case you want to power the board through USB from the host ensure that you chose an USB3 port since they provide 900mA where USB2 ports might only provide 500mA which is not sufficient and you have to provide stable 5V through the barrel connector)
Since there is only one red led available on this board that uses the same pin mapping of the green led on Orange Pi boards you will only see a blinking red led when the test runs and get no notification through a second led starting to light solid after the necessary amount of time so it's up to you to ensure that the test runs at least one hour and shows a spinning cube on a connected display for a gray background (if in doubt please read carefully through the useage instructions section and remember that led use is different on BPi M2+)
|WARNING: For yet unknown reasons testing DRAM reliability through FEL mode seems to be less reliable. For an alternative approach using an Armbian test OS image please see the relevant thread in Armbian forum.|
|Hardware||Diagnostic software||lima-memtester passes (at least running 1 hour)||lima-memtester fails||Notes|
|User:Tkaiser's Banana Pi M2+||fel-boot-lima-memtester-on-orange-pi-h3-v3.tar.bz2||600 MHz||624 MHz||cheap heatsink. 624 MHz fails after running for approx. 10 minutes|
|User:Tkaiser's same Banana Pi M2+||Armbian 5.14 test image||720 MHz||744 MHz||cheap heatsink. 744 MHz shows glowing red background after approx. 6 minutes|
|User:gaara's Banana Pi M2+||Armbian 5.10 image||(unknown, FEL boot too complicated)||672 MHz||glowing red background|
CPU clock speed limit
Sinovoip chose the same SY8113B voltage regulator used on OPi One/Lite and NanoPi M1 but refrained from making the generated VDD_CPUX adjustable (the aforementioned boards switch through GPIO driven resistors between 1.1V and 1.3V). While released schematic show 1.2V SY8113B on BPi M2+ provides 1.3V which would allow a maximum clockspeed of 1200 MHz.
Due to yet unknown reasons all released OS images by SinoVoip are limited to 1008 MHz maximum clockspeed anyway. They also prefer to kill CPU cores when the SoC starts to overheat instead of implementing sane throttling so be prepared to end up with a single core H3 board running at 1008 MHz maximum. While this is not that much of a problem for their Linux images since you can adjust the wrong THS settings yourself Android users might be surprised how slow the M2+ will be. Official OS images adopted more appropriate THS settings allowing 1200 MHz and some throttling steps in May 2016 so be sure to use a most recent one or upgrade script.bin contents yourself.
Fixed voltage / overheating
Unfortunately SinoVoip chose to feed H3 all the time with 1.3V. In this mode throttling is rather inefficient since temperatures do not decrease that much when only clockspeed will be reduced but not VDD_CPUX. Therefore expect severe performance problems unless you choose to apply a large heatsink and an additional fan. It's also easy to get killed CPU cores with BSP kernel since with real heavy workloads throttling isn't enough and the kernel driver devices to kill cores instead. Please note that with normal settings vendor OS images normally use you'll never get killed CPU cores back. Armbian implemented an ugly corekeeper hack to overcome this and the results look then like this: The 2 last rows are SinoVoip settings taken from their BPI-M2+ github repo and the new Armbian settings.
While running the multithreaded parts of the 'Phoronix test suite', almost all the time max cpufreq will be throttled down to 816 MHz. An Orange Pi PC with the same cheap passive heatsink would still run at 1008 MHz or even 1104 MHz since the lower VDD_CPUX voltage at these dvfs operating points results in less emitted heat. Please be aware that currently no throttling is implemented with mainline kernel therefore you risk serious damage when running even lighter workloads on the BPi M2+ with mainline kernel!
Locating the UART
The UART pins are located between DRAM and GPIO header. They are marked as TX, RX and GND on the PCB. Just attach some leads according to our UART Howto.
- In Sep 2016 a cost down variant called Banana Pi M2+ EDU has been announced with just 512MiB DRAM and saving eMMC and AP6212 (no WiFi/BT). Compared to cheap Fast Ethernet equipped H3 boards with the same or more amount of DRAM the only real advantage is Gigabit Ethernet on the M2+ EDU.
- bananapi.com product page
- Detailed product specs containing contradictory statements as usual
- File:BPI-M2-PLUS-V1 1 201605(Release).pdf
- Official download page where M2+ OS images based on loboris' Orange Pi kernel 3.4.39 might appear soon
- Preliminary Armbian 5.07 image based on kernel 3.4.111 without support for WiFi/BT currently
- Preliminary Armbian 5.07 image based on kernel 4.6.0-rc1 without support for WiFi/BT currently (use with caution since you might damage your board permanently since BPi M2+ is overheating a lot and no throttling is implemented in mainline kernel for H3 now!)