BPI-M3 new image:Ubuntu Mate 15.10 for BPI-M3 (20151203)


I tried this on an Ubuntu 14.04 x86 VM with latest updates. I installed gcc and make and cloned the git repository. But when ich execute the build script it exits with the following message: “make: *** [kernel] Error 2” Do i need further packages? Or is the latest git clone broken?

(larry) #22

I am successfully installed Debian Jessie into emmc flash using dd command. But still under observation on stability of OS distribution


The one from september? If so you miss all the very important fixes here: https://github.com/BPI-SINOVOIP/BPI-M3-bsp/commits/master

The distribution used is completely irrelevant, everything important happens in kernel, u-boot and hardware initialisation (and does not live in the rootfs but in the first sectors of SD card or eMMC)

Please have a look at

ps -e -orss=,args= | sort -b -k1,1n | pr -TW$COLUMNS | grep irqbalance

from time to time :joy:

Maybe. You should keep in mind that the quality of this ‘BSP’ normally is for internal use only. I would never release such a crappy bunch of scripts. But that’s all what you get from Allwinner and unless you spend a huge amount of time to fix this you should better expect that it’s not working.

I use it on the same machine where my Armbian build system is up and running. It’s “Ubuntu 14.04.3 LTS” and Armbian does it right and installs the stuff that’s missing on its own: https://github.com/igorpecovnik/lib/blob/second/main.sh


I installed the packages mentioned in the script: aptly device-tree-compiler pv bc lzop zip binfmt-support bison build-essential ccache debootstrap flex gawk gcc-arm-linux-gnueabihf lvm2 qemu-user-static u-boot-tools uuid-dev zlib1g-dev unzip libusb-1.0-0-dev parted pkg-config expect gcc-arm-linux-gnueabi libncurses5-dev whiptail debian-keyring debian-archive-keyring ntpdate

But still the same error. I discovered an other more specific error:

LD security/built-in.o CC arch/arm/mach-sunxi/pm/standby/…/mem_tmstmp.o CC block/elevator.o CC fs/fifo.o CC arch/arm/mach-sunxi/pm/standby/…/mem_hwspinlock.o CC mm/truncate.o CC arch/arm/mach-sunxi/pm/standby/…/mem_clk.o CC fs/dcache.o CC fs/inode.o CC arch/arm/kernel/topology.o CC crypto/algboss.o arch/arm/mach-sunxi/pm/standby/gen_check_code: 1: arch/arm/mach-sunxi/pm/standby/gen_check_code: Syntax error: end of file unexpected (expecting “)”) make[4]: *** [arch/arm/mach-sunxi/pm/standby/resume1.code] Error 2 make[3]: *** [arch/arm/mach-sunxi/pm/standby/standby.code] Error 2 make[2]: *** [arch/arm/mach-sunxi/pm] Error 2 make[1]: *** [arch/arm/mach-sunxi] Error 2 make[1]: *** Waiting for unfinished jobs… CC block/blk-core.o CC arch/arm/kernel/io.o CC mm/vmscan.o CC kernel/user.o CC block/blk-tag.o AS arch/arm/kernel/debug.o CC arch/arm/kernel/early_printk.o CC crypto/testmgr.o CC kernel/signal.o

Any suggestions?

How to update the source of BPI-M3
BPI-M3 Battery Charging Capability
(BPI_Justin) #25

your build environment is 32-bit or 64-bit?


Switch to a x86_64 installation. A quick google search suggested this as the solution. Here I use “Welcome to Ubuntu 14.04.3 LTS (GNU/Linux 3.13.0-53-generic x86_64)” and everything work’s flawlessly unless you try to switch to a more recent Linaro toolchain.


It’s Ubuntu 14.04 32 bit VM.

Could you please provide a list of packages or a tutorial how to set up the build environment?


The packages should be installed if necessary by build.sh – compare with

for example.

And such a ‘tutorial’ has to be part of Readme.md. It’s just a bad joke not providing these essential informations and let the user run into missing package problems or choosing the wrong architecture to build the stuff.


I could now compile successfully the bsp. I set up a fresh Ubuntu 14.04.3 x86_64 VM with installed updates. I had to enable the i386 architecture for my 64 bit System:

dpkg --add-architecture i386

then i had to update the local repo index and install severel i386 librarys which the build tools need:

apt-get update
apt-get install git make libc6:i386 libncurses5:i386 libstdc++6:i386 lib32z1 lib32ncurses5 lib32bz2-1.0 gcc u-boot-tools

After this i cloned the git repository and compiled it by invoking ./build.sh

mkdir /root/bpi-m3-bsp/
cd /root/bpi-m3-bsp/
git clone https://github.com/BPI-SINOVOIP/BPI-M3-bsp.git
cd BPI-M3-bsp

Now after answering the questions the compilation process began and finished sucessfully for me.


Why did you use this lib folder and not the suggested from SINOVIP download/BPI_M3_1080P/lib/? I saw there is an additional folder called firmware.


Exactly and that’s the only difference:

diff -r download/BPI_M3_1080P/lib linux-sunxi/output/lib
Only in linux-sunxi/output/lib: firmware

I thought maybe the firmware folder contains stuff like BLOBs necessary to get Wi-Fi/BT working. Don’t know since never tested.



I just tried the Ubuntu Mate image and got it running but only with standard HDMI connection to my TV. It’s not possible to see a video image if I use a HMDI to DVI connector attached to my LCD-monitor. So I wanted to play around with the script.bin (bin2fex, edit fex-file, fex2bin), but: there is no script.bin! I took a look at the first partition of SD-card:

bananapi                boot.scr       fixup_db.dat      overlays
bcm2708-rpi-b.dtb       cmdline.txt    fixup_x.dat       start_cd.elf
bcm2708-rpi-b-plus.dtb  config.txt     FSCK0000.REC      start_db.elf
bcm2708-rpi-cm.dtb      COPYING.linux  kernel7.img       start.elf
bcm2709-rpi-2-b.dtb     fixup_cd.dat   kernel.img        start_x.elf
bootcode.bin            fixup.dat      LICENCE.broadcom

The output of boot.scr is also not very helpy for me:

fatload ${devtype} ${devnum}:${bootpart} 0x46000000 bananapi/uImage
fatload ${devtype} ${devnum}:${bootpart} 0x49000000 bananapi/${fdtfile}
setenv bootargs console=ttyS0,115200 console=tty1 root=/dev/mmcblk0p2 rw rootwait panic=10 ${extra}
env set fdt_high ffffffff
bootm 0x46000000 - 0x49000000

Where is the script.bin located?

By the way, I previously owned a cubietruck and thought the procedure for modifying the configuration would be the same.

Banana pi BPI-M3 android 5.1.1 image update

Project start: Dec/30/15 Latest update: Jan/10/16

Here is a report from my M3 adventure progress: I connect power via micro USB from my build environment notebook on the long edge next to the HDMI port or with standard 5V 2A micro USB power supply connected to the short edges socket. Power indicator is red LED, flashes short after power on, then stays on. If bootable medium is found, all LED (R,G,B) turn on for a short time instant. If booting is successfully running, green LED blinks twice - pause - twice - … (heartbeat). If your display is supported out of the box, you’ll see a grey splash screen with bpi logo in the center, then the boot log follows below 8 Tux penguins at the top of the log.

The supplied Ubuntu Mate 15.10 image runs patched -see below- finally from SD card (Samsung 32 Gb Evo+) using a plain HDMI cable connected to an old Sony Bravia TV and an Acer B223w in 720p connected thru a HDMI2DVI adapter. I use a Logitech K400r wireless keyboard occupying one USB port for mouse touchpad and keyboard.

First, I prepared a build environment (always recommended for hardware tuning and patches): sudo apt-get install build-essential u-boot-tools

I rebuilt the BSP (Dec/28/2015, zipped from github) as BPI_720p_MPI3 and patched the image burned to SD card via:

sudo dd if=ubuntu-mate-15.10-desktop-armhf-raspberry-pi-2-bpi-m3-sd-emmc-20151203.img bs=10M of=/dev/mmcblk0

as shown by others (on Linux Mint 17.3 Rosa x86_64, an Ubuntu 14.04 LTS flavour):

cd BPI-M3-bsp-master/download/BPI_M3_720P card=/dev/mmcblk0 sudo dd if=boot0_sdcard.fex of=${card} bs=1k seek=8 sudo dd if=u-boot.fex of=${card} bs=1k seek=19096 sudo dd if=boot-resource.fex of=${card} bs=1k seek=36864 sudo dd if=env.fex of=${card} bs=1k seek=69632 sudo dd if=boot.fex of=${card} bs=1k seek=86016 sudo cp -rf lib /media/…YOURUSER…/BPI_ROOT #second “BPI_ROOT” partition (can be done with file manager, merge and overwrite: sudo nemo/nautilus, drag&drop…)

Experiments with HDMI cable, standard Belkin DVI 18+1 adapter and an old Acer B223w display have succeeded finally in 720p. As indicated by Rab, I changed some lines in BPI-M3-bsp-master/sunxi-pack/chips/sun8iw6p1/configs/BPI_M3_720P/sys_config.fex: hdmi_hdcp_enable = 0 hdmi_cts_compatibility = 1 as found on the orangepi forum. Then I rebuilt BSP and patched again.

Regarding multimedia (spotify/deezer), pepper flash player can be copied into the system (ripped from chrome/ium OS). I partially followed steps from Lemaker forum: http://forum.lemaker.org/thread-22800-1-1.html:

wget http://odroidxu.leeharris.me.uk/repo/chromium-pepper-flash-12-

Unzip the files from archive to some folder, cd to the folder with the lib…so files, then:

sudo mkdir /usr/lib/chromium-browser/PepperFlash sudo cp * /usr/lib/chromium-browser/PepperFlash #firefox pepper plugin looks here sudo ln -s /usr/lib/chromium-browser/PepperFlash/* /usr/lib/chromium-browser/plugins/ #chromium looks here sudo nano /etc/chromium-browser/default #follow the edits from lemaker forum, i.e. insert CHROMIUM_FLAGS="–ppapi-flash-path=/usr/lib/chromium-browser/plugins/libpepflashplayer.so --ppapi-flash-version= --ppapi-flash-args=enable_hw_video_decode=1,enable_stagevideo_auto=1,enable_trace_to_console=0" sudo apt-get install browser-plugin-freshplayer-pepperflash # this is for firefox to use pepper flash

Sound worked for me with HDMI output on the TV at some instant, later when trying headphone jack, there was just silence. Then at some instant strange noise in my first trials with alsamixer. Had to fiddle around a lot in trial and error fashion (running a sound loop in the background) in alsamixer until I get what I want. See:

on how to save your settings permanently. Strangely, left and right channel were switched which can be rewired in alsamixer. Its a bit tricky to get this piece of work done…

You can remove package irqbalance, according to tkaiser: sudo apt-get remove irqbalance

Finally, I flashed the SD card image to internal emmc memory (take care just 8Gb): sudo dd if=/dev/mmcblk0 of=/dev/mmcblk1 bs=4M resulting in: dd: error writing ‘/dev/mmcblk1’: No space left on device #this is fair enough 1865+0 records in 1864+0 records out 7818182656 bytes (7.8 GB) copied, 426.322 s, 18.3 MB/s

From that point you have installed your OS permanently to the M3, but have to live with the 8Gb limit of the eMMC memory. However, boot priority is on inserted SD card!

Some closing remarks: My original downloaded image md5sum is:

b5df9b49bdf702a5da0daf74f1daf544 ubuntu-mate-15.10-desktop-armhf-raspberry-pi-2-bpi-m3-sd-emmc-20151203.img

and sha1sum:

917843010adb54bc01496aa778174602e5913ab9 ubuntu-mate-15.10-desktop-armhf-raspberry-pi-2-bpi-m3-sd-emmc-20151203.img

Open issues as seen during my work in progress: I have the impression, WIFI is unstable, slow and disconnects some times even if the BPi-M3 is located near a Fritzbox 3131 router. Ethernet cable connection is ok. HDMI support with adapters to DVI seems problematic. Better use monitor with direct HDMI port?! Video/graphics performance is a bit slow even in 720p yet acceptable, because hardware rendering using a GPU-driver is still not enabled or available. Full screen youtube videos suck lacking acceptable frame rate, HD mp4 videos in VLC player are only viewable in a small window, quickly exhausting the 8 cores. Hardware support for video decoding is urgently needed. In my user experience, eMMC performance is not much better (if any) than my Samsung Evo+ SD Card worth $10. With a sufficiently fast SD (mine 80Mb/20Mb) you can skip eMMC installation and have more space for your OS, maybe eMMC is useful as swap partition or/and measurement data storage for some users. Overall system performance is a bit “cheesy” (not snappy) and actually below my expectations for eight cores and eMMC. For now (with Ubuntu), it is an acceptable board which has much more potential with optimized drivers (3d graphics&video on GPU!!). I guess when those drivers are ready we have another board coming to the market. 1080p looks great on my LG Flatron E2341. Sound quality with SuperLux HD668 headphones is very good. A WIFI antenna with uFL connector greatly improves the stability of wireless net: http://www.ebay.com/itm/191659068074?_trksid=p2057872.m2749.l2649&ssPageName=STRK%3AMEBIDX%3AIT Regarding performance, we should’nt expect too much. These low energy soc board cores are still behind 10 year old pentium 4 systems:

However, I am starting to like it, as now Ubuntu is running stable on this bitch of a board, puhh.

Next steps to come: Done/success: I will transfer the image from SD to internal emmc by dd. Done/success: Get pepper flash running from chromium OS, anybody knows a download location for a newer version than Done/success: Headphone jack sound issue fixed. Done/success:Test 1080p performance with another capable monitor. Done/success: Get a WIFI antenna for better signal.

Put the android image to eMMC, see other image forum board…

Cheers, dre

PS: sinovoip team, please try harder and provide sound and complete step by step instructions and (your) hardware configs known to work. Don’t let your customer waste their valuable time. They might get very angry and frustrated with your product, no good publicity for your company and sales success…


There is none, read the whole thread to realize how lost you are with this ‘product’: http://forum.armbian.com/index.php/topic/474-quick-review-of-banana-pi-m3/


You could try to set

hdmi_cts_compatibility = 0

in the [hdmi_para] section.


They won’t. They’ve been told so many times how to improve the situation but they simply ignore this and keep on fooling customers again and again with hardware without working software and without support. There business model relies on clueless new customers that buy their hardware since they believe it would be compatible to the famous Banana Pi M1. And when this forum gets filled with complaints it will be abandoned like the former official a few months ago: http://www.bananapi.com/index.php/forum/recent


Thanks. I’ll send my Banana Pi back to get my money refunded. Horrible software support from @sinovoip! I read a lot about the lousy support last night so I decided to invest my time in cubietruck instead.


It was just the other way around, =1. Thanks for the pointer in the right direction BTW, what does this hdmi_cts_… flag do? dre

(Joe C. Hecht) #39

I can’t believe I got this halfway running. Bootlooping is mostly gone.

I can’t help but to grr to think it’s temporary, and I will end up having to set it up again.,

(Joe C. Hecht) #40

And it was temporary. While I once* got an uptime of a little over 3 hours, this image quickly went back to “boot loop and crash”. Verified on at least three different sandisk ultra cards.

During the three hours, it did run “ok”. No benches (I was busy wasting my time installing stuff). The board felt somewhat “snappy”, but nowhere as fast as some lesser boards I have, and way way less than my Odroid XU4.

I found it interesting that sector to sector clones of the SD card would not boot at all, and the amount of heat generated around the SD slot seemed “unusually warm”. hmm…

I would really like to see this board work.