Software

On the software side of things, the sample board came with Raspbian pre-installed (apparently prepared in Germany) on an SD Card. Connecting the board to a console is easy because, contrary to an RPi, it has an accessible debug port to which you can connect a serial-to-USB converter. The full boot log is available at the end of this article.

According to the BPi GitBook, images for Android and Ubuntu should be available, but for me the links returned '404 - Not Found'. This will hopefully be fixed once the board is released to the public. For the M2 Ultra a special Linux, Tina-IoT by Allwinner is available too, but how to adapt it for the M2 Berry is no mentioned. Maybe it runs out of the box, maybe it doesn't?

 
banana pi m2 berry + rpi3 back sides
Note how the BPi M2 Berries SD Card connector (left)
is wider than the one on the RPi (right)

Conclusion

The banana pi BPI-M2 Berry is targeted at RPi users. Being introduced after the RPi3 one would expect it to have similar performances as an RPi3, but in reality we are dealing with an RPi2 v1.0 with Wi-Fi, Bluetooth 4.0 and SATA. Since the Berry is priced similarly to the RPi3, the SATA interface may very well be the only reason to prefer this board over a real RPi (3 or 2).

The BPi M2 Berry did not fit in my RPi test case due to the size of the SD Card slot, but since the sample board is from a pre-series run, this may be corrected before release to the public. A bit of cutting will fix this problem, more problematic though may be the incompatible LCD and camera connectors. They were probably kept for compatibility with other BPi boards, but they break the RPi-compatible promess.

Banana Pi M2 Berry boot log

Linux experts can extract all kinds of usefull information from a boot log, so here it is. Logging on requires the username ‘pi’ or ‘root’, the default password is ‘bananapi’.
[     0.33]HELLO! BOOT0 is starting!
[     0.37]boot0 commit : 2320b4e28f694a40302a75531ea057ca7fcc0074
 
[     0.44]boot0 version : 4.0
[     0.47]set pll start
[     0.51]set pll end
[     0.87]rtc[0] value = 0x00000000
[     0.90]rtc[1] value = 0x00000000
[     0.93]rtc[2] value = 0x00000000
[     0.97]rtc[3] value = 0x00000000
[     0.100]rtc[4] value = 0x00000000
[     0.103]rtc[5] value = 0x00000000
[     0.107]DRAMC IS FOUR
[     0.109]DRAM BOOT DRIVE INFO: V1.1
[     0.113]the chip id is 0x00000001
[     0.116]the chip id is 0x00000001
[     0.120]the chip id is 0x00000001
[     0.123]the chip id is 0x00000001
[     0.127]the chip id is 0x00000001
[     0.134]PMU: [     0.135]AXP221
[     0.137]ddr voltage = 1250 mv
[     0.144]PMU: [     0.145]AXP221
[     0.147]ddr voltage = 1250 mv
[     0.158]PMU: [     0.159]AXP221
[     0.161]ddr voltage = 1500 mv
[     0.172]DRAM CLK =576 MHZ
[     0.174]DRAM Type =3 (2:DDR2,3:DDR3,6:LPDDR2,7:LPDDR3)
[     0.180]DRAM zq value: 0x003b3bfb
[     0.186]DRAM SIZE =1024 M
[     0.189]DRAM simple test OK.
[     0.192]dram size =1024
[     0.194]rtc standby flag is 0x00000000, super standby flag is 0x00000000
[     0.203]card no is 0
[     0.205]sdcard 0 line count 4
[     0.208][mmc]: mmc driver ver 2016-07-01 15:30
[     0.212][mmc]: sdc0 spd mode error, 2
[     0.225][mmc]: Wrong media type 0x00000000
[     0.229][mmc]: ***Try SD card 0***
[     0.240][mmc]: HSSDR52/SDR25 4 bit
[     0.243][mmc]: 50000000 Hz
[     0.246][mmc]: 15072 MB
[     0.249][mmc]: ***SD/MMC 0 init OK!!!***
[     0.354]Loading boot-pkg Succeed(index=0).
[     0.358]Entry_name        = u-boot
[     0.377]Ready to disable icache.
[     0.380]Jump to secend Boot.


U-Boot 2014.07 (May 25 2017 - 11:43:14) Allwinner Technology 

uboot commit : 8 
i2c_init ok
[      0.448]pmbus:   ready
[      0.468]PMU: AXP221
[      0.468]PMU: AXP22x found
[      0.469]PMU: dcdc2 1160
[      0.470]PMU: cpux 1008 Mhz,AXI=336 Mhz
PLL6=600 Mhz,AHB1=200 Mhz, APB1=100Mhz  MBus=400Mhz
set power on vol to default
dcdc1_vol = 3300, onoff=1
dcdc2_vol = 1160, onoff=1
dcdc3_vol = 1100, onoff=1
dcdc4_vol = 1100, onoff=0
aldo1_vol = 2800, onoff=0
aldo2_vol = 1500, onoff=1
aldo3_vol = 3000, onoff=1
dc1sw_vol = 3000, onoff=0
dc5ldo_vol = 1100, onoff=0
dldo1_vol = 3300, onoff=0
dldo2_vol = 3300, onoff=0
dldo3_vol = 3300, onoff=0
dldo4_vol = 2500, onoff=0
eldo1_vol = 2800, onoff=0
eldo2_vol = 1500, onoff=0
eldo3_vol = 1200, onoff=0
gpio0_vol = 3300, onoff=0
gpio1_vol = 1800, onoff=0
find power_sply to end
vbus exist
BPI: bpi_boot_init_gpio ...
set pin for gpio_pin_1
set pin for gpio_pin_2
set pin for gpio_pin_3
set pin for gpio_pin_4
run key detect
BPI: BPI-M2 Berry 1.0 
bpi_board_version: [2e]
no key found
no uart input
DRAM:  1 GiB
fdt addr: 0x76e84c98
Relocation Offset is: 35edb000
In:    serial
Out:   serial
Err:   serial
gic: normal mode
[      0.698]start
drv_disp_init
init_clocks: finish init_clocks.
pwm_request: reg = 0x1c23400. pwm = 0.
request pwm success, pwm = 0.
tv_init:
tv_init:
drv_disp_init finish
boot_disp.output_disp=0
boot_disp.output_type=3
boot_disp.output_mode=5
boot_disp.auto_hpd=1
disp0 device type(4) enable
attched ok, mgr0<-->device0, type=4, mode=5
[      1.382]end
workmode = 0,storage type = 1
[      1.382]MMC:	 0
[mmc]: mmc driver ver 2016-07-01 15:50:00
[mmc]: boot_card_no error 1
SUNXI SD/MMC: 0
[mmc]: 50 MHz...
[mmc]: sample: 51 - 196(ps)
[mmc]: 100 MHz...
[mmc]: sample: 25 - 200(ps)
[mmc]: 200 MHz...
[mmc]: sample: 13 - 192(ps)
[mmc]: BPI: 0 CARD_TYPE_SD
[mmc]: media type 0x8000001
[mmc]: ************Try SD card 0************
[mmc]: host caps: 0x27
[mmc]: MID 74 PSN 00000e1b
[mmc]: PNM 00000 -- 0x30-30-30-30-30
[mmc]: PRV 0.0
[mmc]: MDT m-6 y-2016
[mmc]: speed mode     : HSSDR52/SDR25 
[mmc]: clock          : 50000000 Hz
[mmc]: bus_width      : 4 bit
[mmc]: user capacity  : 15072 MB
[mmc]: ************SD/MMC 0 init OK!!!************
[mmc]: erase_grp_size      : 0x1WrBlk*0x200=0x200 Byte
[mmc]: secure_feature      : 0x0
[mmc]: secure_removal_type : 0x0
[      1.558]sunxi flash init ok
sunxi secure storage is not supported
[      1.565]usb burn from boot
delay time 0
[      1.656]usb prepare ok
[      2.455]timer occur
[      2.456]overtime
[      2.489]do_burn_from_boot usb : no usb exist
--------fastboot partitions--------
-total partitions:7-
-name-        -start-       -size-      
boot-res    : 1000000       1000000     
env         : 2000000       100000      
boot        : 2100000       800000      
private     : 2900000       100000      
misc        : 2a00000       100000      
rootfs      : 2b00000       a000000     
UDISK       : cb00000       0           
-----------------------------------
base bootcmd=run setargs_nand boot_normal
bootcmd set setargs_mmc
key 0
cant find rcvy value
cant find fstbt value
misc partition found
to be run cmd=run setargs_mmc boot_normal
BPI: disable_node mmc2 in BPI-M2 Berry 1.0
update dtb dram start
update dtb dram  end
sunxi_serial: serial_feature is not exist
serial is: 14005190410c482c034c
BPI-M2 Berry: force to set pmu_bat_unused = 1
BPI: axp_probe_battery_exist(32)
BPI: BatExist(32) pmu_bat_unused(0)
BPI: force to set no battery in BPI-M2 Berry 1.0
PowerBus = 2( 2:vBus 3:acBus other: not exist)
no battery, limit to dc
no battery exist
sunxi_bmp_logo_display
reading bootlogo.bmp
3686538 bytes read in 164 ms (21.4 MiB/s)
bmp file buffer: 0x40000000, bmp_info.buffer: 46400000
screen_id =0, screen_width =1280, screen_height =720
frame buffer address 46400036
Net:   No ethernet found.
[      2.954]inter uboot shell
Hit any key to stop autoboot:  2  1  0 
[mmc]: MMC Device 2 not found
** Bad device mmc 2 **
reading bananapi/bpi-m2u/linux/uEnv.txt
2280 bytes read in 5 ms (445.3 KiB/s)
Loaded environment from uEnv.txt
Running uenvcmd ...
Banana Pi bpi-m2u chip: r40 Service: linux
reading bananapi/bpi-m2u/linux/uImage
6834472 bytes read in 298 ms (21.9 MiB/s)
reading bananapi/berryboot.img
** Unable to read file bananapi/berryboot.img **
## Booting kernel from Legacy Image at 47000000 ...
   Image Name:   Linux-3.10.65-BPI-M2U-Kernel
   Image Type:   ARM Linux Kernel Image (uncompressed)
   Data Size:    6834408 Bytes = 6.5 MiB
   Load Address: 40008000
   Entry Point:  40008000
   Verifying Checksum ... OK
   Loading Kernel Image ... OK
   reserving fdt memory region: addr=43000000 size=800
   Using Device Tree in place at 45000000, end 450191df
prepare for kernel
[mmc]: MMC Device 2 not found
[mmc]: mmc 2 not find, so not exit

Starting kernel ...

[    1.070364] platform pwm0: there is no bind_pwm, set bind_pwm 255!
[    1.070364] platform pwm0: there is no dead time, set bind_pwm 255!
[    1.110434] add_sys_pwr_dm: get ldo name  for id: vdd-cpus failed
[    1.110434] add_sys_pwr_dm: get ldo name  for id: vcc-lpddr failed
[    1.110434] add_sys_pwr_dm: get ldo name  for id: vcc-pl failed
[    1.110434] add_sys_pwr_dm: axp22_dcdc1 ldo already alwayson.
[    1.110434] Warning: can not find np for dynamic_standby_para. 
[    1.175230] OF: no ranges; cannot translate
[    1.175256] OF: no ranges; cannot translate
[    1.175524] OF: no ranges; cannot translate
[    1.175541] OF: no ranges; cannot translate
[    1.397180] sunxi-wlan wlan: request pincrtl handle for device [wlan] failed
[    1.405308] /soc@01c00000/wlan: could not find phandle
[    1.411152] sunxi-wlan wlan: get gpio wlan_hostwake failed
[    1.490035] sunxi-ahci sata: SATA power enable do not exist!!
[    1.754779] axp22_dcdc1: unsupportable voltage range: 858992688-3400000uV
[    1.784011] get() with no identifier
[    1.787998] get() with no identifier
[    1.792130] get() with no identifier
[    1.880038] *mmc0 detect cd change*
[    1.883942] *mmc0 lock*
[    1.920862] sunxi-mmc sdc0: smc 0 p0 err, cmd 52, RTO !!
[    1.927721] sunxi-mmc sdc0: smc 0 p0 err, cmd 52, RTO !!
[    1.938386] sunxi-mmc sdc0: smc 0 p0 err, cmd 5, RTO !!
[    1.945123] sunxi-mmc sdc0: smc 0 p0 err, cmd 5, RTO !!
[    1.951953] sunxi-mmc sdc0: smc 0 p0 err, cmd 5, RTO !!
[    1.958676] sunxi-mmc sdc0: smc 0 p0 err, cmd 5, RTO !!
[    1.993272] sunxi-mmc sdc1: smc 1 p1 err, cmd 52, RTO !!
[    2.000133] sunxi-mmc sdc1: smc 1 p1 err, cmd 52, RTO !!
[    2.008242] EXT3-fs (mmcblk0p2): error: couldn't mount because of unsupported optional features (240)
[    2.010557] sunxi-mmc sdc1: smc 1 p1 err, cmd 8, RTO !!
[    2.011386] sunxi-mmc sdc1: smc 1 p1 err, cmd 5, RTO !!
[    2.012208] sunxi-mmc sdc1: smc 1 p1 err, cmd 5, RTO !!
[    2.013029] sunxi-mmc sdc1: smc 1 p1 err, cmd 5, RTO !!
[    2.013851] sunxi-mmc sdc1: smc 1 p1 err, cmd 5, RTO !!
[    2.014673] sunxi-mmc sdc1: smc 1 p1 err, cmd 55, RTO !!
[    2.015496] sunxi-mmc sdc1: smc 1 p1 err, cmd 55, RTO !!
[    2.016318] sunxi-mmc sdc1: smc 1 p1 err, cmd 55, RTO !!
[    2.017141] sunxi-mmc sdc1: smc 1 p1 err, cmd 55, RTO !!
[    2.018011] sunxi-mmc sdc1: smc 1 p1 err, cmd 1, RTO !!
[    2.080690] EXT2-fs (mmcblk0p2): error: couldn't mount because of unsupported optional features (240)
[    2.261012] Failed to execute /init.  Attempting defaults...
[  OK  ] Started Remount Root and Kernel File Systems.
[  OK  ] Reached target Local File Systems (Pre).
         Starting Load/Save Random Seed...
[  OK  ] Started Load/Save Random Seed.
[  OK  ] Started Show Plymouth Boot Screen.
[  OK  ] Created slice system-systemd\x2drfkill.slice.
         Starting Load/Save RF Kill Switch Status of rfkill0...
[  OK  ] Reached target Paths.
[  OK  ] Reached target Sound Card.
[  OK  ] Started Load/Save RF Kill Switch Status of rfkill0.
[  OK  ] Found device /dev/ttyS0.
[  OK  ] Found device /dev/mmcblk0p1.
         Starting File System Check on /dev/mmcblk0p1...
[    5.647178] EXT4-fs error (device mmcblk0p2): ext4_mb_generate_buddy:755: group 25, 23822 clusters in bitmap, 23825 in gd
[    5.769412] systemd-fsck[2178]: fsck.fat 3.0.27 (2014-11-12)
[    5.771305] systemd-fsck[2178]: 0x25: Dirty bit is set. Fs was not properly unmounted and some data may be corrupt.
[  OK  ] Started File System Check on /dev/mmcblk0p1.
[    5.772691] systemd-fsck[2178]: Automatically removing dirty bit.
[    5.774247] systemd-fsck[2178]: Performing changes.
         Mounting /boot...
[    5.775073] systemd-fsck[2178]: /dev/mmcblk0p1: 218 files, 18335/65467 clusters
[  OK  ] Mounted /boot.
[  OK  ] Reached target Local File Systems.
         Starting Tell Plymouth To Write Out Runtime Data...
         Starting Create Volatile Files and Directories...
[  OK  ] Reached target Remote File Systems.
         Starting Trigger Flushing of Journal to Persistent Storage...
         Starting LSB: Prepare console...
         Starting LSB: Switch to ondemand cpu governor (unless shift key is pressed)...
         Starting LSB: Raise network interfaces....
[  OK  ] Started Tell Plymouth To Write Out Runtime Data.
[  OK  ] Started Trigger Flushing of Journal to Persistent Storage.
[    6.059839] EXT4-fs error (device mmcblk0p2): ext4_mb_generate_buddy:755: group 33, 36 clusters in bitmap, 37 in gd
[  OK  ] Started Create Volatile Files and Directories.
         Starting Update UTMP about System Boot/Shutdown...
[  OK  ] Started Update UTMP about System Boot/Shutdown.
[  OK  ] Started LSB: Prepare console.
         Starting LSB: Set console font and keymap...
[  OK  ] Started LSB: Set console font and keymap.
[  OK  ] Started LSB: Raise network interfaces..
[  OK  ] Started LSB: Switch to ondemand cpu governor (unless shift key is pressed).
[  OK  ] Reached target System Initialization.
[  OK  ] Listening on Avahi mDNS/DNS-SD Stack Activation Socket.
[  OK  ] Listening on D-Bus System Message Bus Socket.
[  OK  ] Reached target Sockets.
[  OK  ] Reached target Timers.
         Starting Restore Sound Card State...
[  OK  ] Reached target Basic System.
         Starting Avahi mDNS/DNS-SD Stack...
         Starting dhcpcd on all interfaces...
         Starting Regular background program processing daemon...
[  OK  ] Started Regular background program processing daemon.
         Starting System Logging Service...
         Starting Login Service...
         Starting D-Bus System Message Bus...
[  OK  ] Started D-Bus System Message Bus.
[  OK  ] Started Avahi mDNS/DNS-SD Stack.
         Starting LSB: Banana Pi init script...
         Starting LSB: Autogenerate and use a swap file...
         Starting LSB: triggerhappy hotkey daemon...
[  OK  ] Started System Logging Service.
[  OK  ] Started Restore Sound Card State.
[  OK  ] Started dhcpcd on all interfaces.
[  OK  ] Reached target Network.
         Starting OpenBSD Secure Shell server...
[  OK  ] Started OpenBSD Secure Shell server.
         Starting /etc/rc.local Compatibility...
         Starting Permit User Sessions...
[  OK  ] Reached target Network is Online.
         Starting LSB: Start xrdp and sesman daemons...
         Starting LSB: Start NTP daemon...
[  OK  ] Started LSB: Start xrdp and sesman daemons.
[  OK  ] Started Permit User Sessions.
[  OK  ] Started Login Service.
         Starting Light Display Manager...
[  OK  ] Started LSB: triggerhappy hotkey daemon.
[  OK  ] Started LSB: Start NTP daemon.
[  OK  ] Started LSB: Autogenerate and use a swap file.
BPI: bt-raspbian.sh
[  OK  ] Started /etc/rc.local Compatibility.
         Starting Hold until boot process finishes up...
         Starting Terminate Plymouth Boot Screen...

Raspbian GNU/Linux 8 bpi-iot-ros-ai ttyS0

bpi-iot-ros-ai login: root
Passwort: 
Letzte Anmeldung: Freitag, den 24. März 2017, 04:17:26 CET auf ttyS0
Linux bpi-iot-ros-ai 3.10.65-BPI-M2U-Kernel #1 SMP Thu May 25 11:46:04 CST 2017 armv7l

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.