Banana Pi M2 Ultra not working on Linux/Android

Hello there. I just got a Banana Pi M2 Ultra with Allwinner A40i SOC and I installed lots of Linux distros available from the official wiki, on a 32gb U1 SD card, however, everytime I boot into a desktop environment, it simply halts the entire system. I have tried Android as well, however, the screen is glitchy, almost impossible to navigate. I also tried Armbian as well(Kernel 5.15 and 5.19, Jammy version from Github), and they didn’t work at all. I am powering the system using micro USB and a 10-15W phone charger, which should be plenty of power for the board. Is there any available solution that would work on the A40i model? Thanks.

Would you like to try my using method?

Prepare to develop:

a. 8GB or more SD card

b. Windows/ Linux / MAC os PC

c. USB-Serial interface

d. SD card reader

  1. Downloading newest image on wiki on PC:https://wiki.banana-pi.org/Banana_Pi_BPI-M2U#Ubuntu
  2. Installing Balena Ethche(burning tool) on PC: https://www.balena.io/etcher/
  3. Installing the SD card in card reader, then installing the card reader in PC. (Please confirm SD card have no any other files in it. If not, you have to format the SD card)
  4. Opening your Balena Ethche, please choose” Flash from file” image And choose the image which you downloaded on PC

You can try 2020-04-19-ubuntu-16.04-server-bpi-m2u-sd-emmc.img.zip

https://download.banana-pi.dev/d/ca025d76afd448aabc63/?p=%2FImages%2FBPI-M2U%2FUbuntu16.04&mode=list image

  1. Go on the next steps, choose you sd card

image image 7. Choose Flash

image

image 8. Finished image

  1. Removing card reader on PC

  2. Installing SD card on M2U, connecting display (1080P/720P) via HDMI port.

  3. Connecting 5V/2A DC power adapter. And power on.

It works so far. It doesn’t have a desktop environment however, but at least it works so far. Is it possible however to install one via terminal(with an internet connection)? If so, can you recommend me one? Thanks!

https://github.com/armbian/community Search for “Banana Pi M2 Ultra”

They should work … Where it stops? Can you attach serial console? This is worth fixing …

Should I flash the sid or the jammy version? Also, how do I get the serial console, so that I could attach it here?

https://linux-sunxi.org/UART

Both will work or both will fail.

Well, the OS failed to boot, it only shows me red light at the place where RGB is supposed to show. I am mentioning that I flashed this image on the SD card, and I could browse it without problems on Fedora.

Image is: Armbian_22.11.0-trunk_Bananapim2ultra_sid_edge_5.19.10_xfce_desktop.

Also, at the moment I don’t have an USB to UART converter cable. Can a normal micro USB to USB cable be used for to connect to a serial console as well?

Can I use Arduino Uno R3 as a USB-to-UART converter? I see that it has entries for TX and RX, which should make it capable of such a thing. Update: I managed to make it work as a USB-to-UART converter. Unfortunately, however, this didn’t solve the issue, as the Pi randomly freezes itself when trying to update the software(in this case Ubuntu 16.04 Server), or even closing software like let’s say top(by pressing ctrl and c), with no error logs whatsoever.

I also tried Ubuntu 16.04 Mate, but it didn’t start up at all. Is it the OTG based power supply’s fault? All I got as output from the TTL is:

U-Boot 2014.07 (Nov 11 2017 - 19:07:47) Allwinner Technology

uboot commit : 8
i2c_init ok
[      0.446]pmbus:   ready
[      0.465]PMU: AXP221
[      0.465]PMU: AXP22x found
[      0.466]PMU: dcdc2 1160
[      0.468]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
[     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.104]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.185]DRAM SIZE =2048 M
[     0.189]DRAM simple test OK.
[     0.192]dram size =2048
[     0.194]rtc standby flag is 0x00000000, super standby flag is 0x00000000
[     0.202]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.239][mmc]: HSSDR52/SDR25 4 bit
[     0.243][mmc]: 50000000 Hz
[     0.245][mmc]: 29819 MB
[     0.248][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.381]Jump to secend Boot.

Update: I acquired a 10-12.5W micro USB cable and used it with the proper adapter, however, when I installed OS on this thing, it still didn’t work, so most likely the unit is either defective, or is not really compatible with an USB power supply in the first place. I might try to acquire a reduction jack in order to make the non-USB power supply fit in the board’s jack, which hopefully would change things for the better.

Update again: Ok, so this does not work at all, even with the DC power supply of 10W. What is the cause so far? Is the Pi malfunctioned or something?

Is this Pi perhabs a BPi with a A40i Processor? I have the same Problem: my older M2U has R40 inside; they run without Problems. The newer BPis have A40i and i do not found a bootable Image… I think i located a Bug inside the Bootloader’s usb-driver.

73 + 55 Elux

Yes, it is the one with A40i Processor. Can the bootloader’s USB driver be fixed or something?

yes, of course .

I am working on it, but at the moment I have unfortunately very little time.

1 Like

Sounds awesome! And no worries, take your time to fix it whenever you could.

This is the new logs, using the barrel adapter too and “2022-04-17-ubuntu-16.04-mate-desktop-mpv-1080p-bpi-m2u-m2b-sd-emmc.img” image as well from the Wiki. It simply interrupts at gpio_pin_4 log:

[     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.185]DRAM SIZE =2048 M
[     0.189]DRAM simple test OK.
[     0.192]dram size =2048
[     0.194]rtc standby flag is 0x00000000, super standby flag is 0x00000000
[     0.202]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.239][mmc]: HSSDR52/SDR25 4 bit
[     0.243][mmc]: 50000000 Hz
[     0.245][mmc]: 15120 MB
[     0.248][mmc]: ***SD/MMC 0 init OK!!!***
[     0.355]Loading boot-pkg Succeed(index=0).
[     0.359]Entry_name        = u-boot
[     0.377]Ready to disable icache.
[     0.381]Jump to secend Boot.


U-Boot 2014.07 (Nov 11 2017 - 19:07:47) Allwinner Technology 

uboot commit : 8 
i2c_init ok
[      0.447]pmbus:   ready
[      0.466]PMU: AXP221
[      0.466]PMU: AXP22x found
[      0.467]PMU: dcdc2 1160
[      0.469]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

No image boots on my A40i m2ultra either.

However, removing four usb@ entries from kernel (not necessarily u-boot) device tree makes Openwrt image boot into shell over uart. To remove them, one could patch source dts, or decompile binary dtb with dtc, edit text dts file, then compile it back.

Haven’t try other images, but same modification should work as well.

My guess is that hardware changed from R40 in such a way that addresses in device tree do not apply anymore.

2 Likes

For me, with my A40i-based M2U, with a 10W barrel-jack power supply, Armbian was failing to make it past the initrd because it couldn’t find the root filesystem. Looking through a verbose serial console output, I saw errors in the sunxi-mmc driver immediately after detecting the onboard eMMC chip. (I wasn’t even trying to use the eMMC; this happened even when I was trying to boot from a microSD card.)

I managed to get a self-built Armbian 23.02 (bullseye, XFCE desktop, and 6.1 edge kernel, on a microSD card) booting to a full desktop environment, by reducing the eMMC bus width from 8-bit to 1-bit.

The USB ports described in the device tree most definitely DO work, at least for me; I am using them for the mouse.

1 Like

I’ve refined my work a little further, and created a dtbo which works (for me) to get a bootable board using the current (lunar/bookworm) rolling release of Armbian. I posted it in the Armbian forum:

https://forum.armbian.com/topic/28215-banana-pi-m2-ultra-boot-freezing-trying-to-scan-the-emmc/?do=findComment&comment=164968

It would be great if other users could test it out and report back if it resolves their issue. If so, and it’s not just an isolated incident that it works for me, then I might try to get this change incorporated more formally,

I made a quick test: it does not work for me. Regarding your post at Armbian: I have come to the same conclusion, but have not yet had time to look into the problem in more detail.