BPI-M2 Berry cannot boot - NO Red LED

I got a BPI-M2 Berry, wanting to use it with a 7-inch display and a Raspberry Pi case.

Some months ago, I had flashed 2020-04-19-raspbian-jessie-bpi-m2u-sd-emmc.img on an SD card, assembled the case, and tried to power it via the micro USB power port, from a USB adapter rated 5V / 2A; the backlight of the 7 inch display turned on, but nothing else happened; tried power down / up several times, same behavior.

Today I realized the case was permanently pressing the RESET button, as there was no opening for it; so I disassembled the case, and made an opening for the RESET button - and now the button is free, and can be pressed. So tried booting again by power it via the micro USB power port - nothing happens whatsoever.

Only after searching online, did I realize that there is supposed to be a red LED on the board - unfortunately, this LED is not listed on the https://wiki.banana-pi.org/images/c/ce/M2ubinterface.jpg image from the Banana Pi BPI-M2 Berry - Banana Pi Wiki page - and I only confirmed where it is and how it looks like after finding the video BananaPi-M2 Berry - YouTube.

So, now I can definitely say, that when I try to apply power via the micro USB power port from a 5V / 2A USB power adapter – both with SD card plugged in; and without SD card plugged in – absolutely nothing happens, no red LED shines, and no green LED either.

I tried plugging the micro USB power port of this board to a USB A connector on my Ubuntu laptop as well; something interesting happens here:

  • If I plug the USB cable to laptop when the SD card is attached on the BPI-M2 Berry, nothing is reported by Linux
  • If I plug the USB cable to laptop when the SD card is not attached on (removed from) the BPI-M2 Berry, then I get the following reported:
Dec  9 10:28:32 mylaptop kernel: [209898.538616] usb 2-1.2: new full-speed USB device number 90 using ehci-pci
Dec  9 10:28:33 mylaptop kernel: [209898.647646] usb 2-1.2: New USB device found, idVendor=1f3a, idProduct=efe8, bcdDevice= 2.b3
Dec  9 10:28:33 mylaptop kernel: [209898.647656] usb 2-1.2: New USB device strings: Mfr=0, Product=0, SerialNumber=0
Dec  9 10:28:33 mylaptop mtp-probe: checking bus 2, device 90: "/sys/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.2"
Dec  9 10:28:33 mylaptop mtp-probe: bus: 2, device: 90 was not an MTP device
Dec  9 10:28:33 mylaptop mtp-probe: checking bus 2, device 90: "/sys/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.2"
Dec  9 10:28:33 mylaptop mtp-probe: bus: 2, device: 90 was not an MTP device
Dec  9 10:28:33 mylaptop systemd-udevd[144342]: 2-1.2: Process '/usr/lib/snapd/snap-device-helper bind snap_cups_cupsd /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.2 189:217' failed with exit code 1.
Dec  9 10:28:33 mylaptop systemd-udevd[144342]: 2-1.2: Process '/usr/lib/snapd/snap-device-helper bind snap_cups_ippeveprinter /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.2 189:217' failed with exit code 1.

So, the micro USB power port of the BPI-M2 Berry, when no SD card is attached, appears to Linux as a USB device with vendor ID 0x1F3A, and product ID 0xEFE8 - via USB\VID_1F3A&PID_EFE8 - sunxi SoC OTG connector in… | Device Hunt I get that this is Allwinner Technology “sunxi SoC OTG connector in FEL/flashing mode”.

So this made me think - can I just power up the BPI-M2 Berry using a normal USB cable, or do I have to use a USB OTG cable? I ask because I found this post BPI won't start at all - #2 by hermann4 where someone asks for a different (BananaPi M2-U) board:

… but unfortunately no one clarifies whether USB-OTG is required in general.

Then, I also found this How to bypass power button? :

What, so I had to also press power to make it boot, after applying power? I did not see that mentioned in neither Banana Pi BPI-M2 Berry - Banana Pi Wiki nor Getting Started with M2 Ultra & Berry - Banana Pi Wiki ( Quick Start Banana pi SBC - Banana Pi Wiki only mentions "you can press the power key for 5 seconds to turn it off. " but I think that is for a different board? )

Anyways, tried plugging in the BPI-M2 Berry micro USB power port to a 5V / 2A adapter – both with and without SD card – then pressing and holding power button for 10 seconds, then releasing: absolutely nothing happens, and there is still no red LED.

So my question is - is this board fully dead, or can it be recovered?

Apparently something on it still works (as display does get backlight power, and can get the 1F3A:EFE8 device detected over USB) – so is there some debug procedure I could do, to confirm whether the board is really dead or not?

Verify with Bananapi M2U / Berry – Armbian

Many thanks, @igorpec :

Unfortunately, cannot get it to work; this is what I did:

Download and unpack:

$ cd /path/to/Downloads
$ wget https://redirect.armbian.com/region/EU/bananapim2ultra/Bookworm_current
...
$ mv Bookworm_current Armbian_23.11.1_Bananapim2ultra_bookworm_current_6.1.63.img.xz
$ xz -l Armbian_23.11.1_Bananapim2ultra_bookworm_current_6.1.63.img.xz
Strms  Blocks   Compressed Uncompressed  Ratio  Check   Filename
    1     543    485.2 MiB  1,628.0 MiB  0.298  CRC64   Armbian_23.11.1_Bananapim2ultra_bookworm_current_6.1.63.img.xz
$ xz --decompress Armbian_23.11.1_Bananapim2ultra_bookworm_current_6.1.63.img.xz
$ ls -la
...
drwxrwxr-x 2 user user           4096 2023-12-09 20:36 ./
drwxrwxr-x 9 user user           4096 2023-05-28 11:24 ../
-rw-r--r-- 1 user user     1707081728 2023-11-30 03:31 Armbian_23.11.1_Bananapim2ultra_bookworm_current_6.1.63.img

Plug in old micro SD card (via SD card adapter) into laptop; two partitions appear in Ubuntu:

$ mount | grep BPI
/dev/mmcblk0p1 on /media/user/BPI-BOOT type vfat (rw,nosuid,nodev,relatime,uid=1000,gid=1000,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,showexec,utf8,flush,errors=remount-ro,uhelper=udisks2)
/dev/mmcblk0p2 on /media/user/BPI-ROOT type ext4 (rw,nosuid,nodev,relatime,stripe=1024,uhelper=udisks2)

$ sudo umount /media/user/BPI-BOOT /media/user/BPI-ROOT

$ ls /dev/mmcbl*
/dev/mmcblk0  /dev/mmcblk0p1  /dev/mmcblk0p2


$ sudo fdisk -l
...
Disk /dev/mmcblk0: 14.74 GiB, 15812526080 bytes, 30883840 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x11fd51cd

Device         Boot  Start      End  Sectors  Size Id Type
/dev/mmcblk0p1      204800   729087   524288  256M  c W95 FAT32 (LBA)
/dev/mmcblk0p2      729088 14940159 14211072  6.8G 83 Linux

Note, there is no boot flag indication on the first partition - but does not matter now, since we’ll overwrite the micro SD card with the newly downloaded image:

// https://bananapi.gitbook.io/bpi-m2/zh/bpim2quickstart
// *Run dd if=[imagename] of=/dev/sdx command to write image file to SD card. Wait patiently to successfully complete writing.
// https://wiki.banana-pi.org/Getting_Started_with_M2_Ultra_%26_Berry
// unzip -p xxx-sd-emmc-xxx.img.zip |pv| dd of=/dev/mmcblk0 bs=10M status=noxfer

$ cat /path/to/Downloads/Armbian_23.11.1_Bananapim2ultra_bookworm_current_6.1.63.img | pv | dd of=/dev/mmcblk0 bs=10M status=noxfer
dd: failed to open '/dev/mmcblk0': Permission denied

$ sudo bash -c 'cat /path/to/Downloads/Armbian_23.11.1_Bananapim2ultra_bookworm_current_6.1.63.img | pv | dd of=/dev/mmcblk0 bs=10M status=noxfer'
1.59GiB 0:06:37 [4.10MiB/s] [    <=>                                           ]
0+20799 records in
0+20799 records out

# plug sd card out, then plug it in

$ sudo fdisk -l
Disk /dev/mmcblk0: 14.74 GiB, 15812526080 bytes, 30883840 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x9e374fd3

Device         Boot Start     End Sectors  Size Id Type
/dev/mmcblk0p1       8192 3334143 3325952  1.6G 83 Linux

$ mount | grep mmcblk
/dev/mmcblk0p1 on /media/user/armbi_root type ext4 (rw,nosuid,nodev,relatime,uhelper=udisks2)

Note, again the partition is not marked as “bootable”. Here did:

$ sudo fdisk /dev/mmcblk0

Welcome to fdisk (util-linux 2.34).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.


Command (m for help): a
Selected partition 1
The bootable flag on partition 1 is enabled now.

Command (m for help): w
The partition table has been altered.
Syncing disks.

$ sudo fdisk -l /dev/mmcblk0
Disk /dev/mmcblk0: 14.74 GiB, 15812526080 bytes, 30883840 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x9e374fd3

Device         Boot Start     End Sectors  Size Id Type
/dev/mmcblk0p1 *     8192 3334143 3325952  1.6G 83 Linux

$ sudo umount /media/user/armbi_root

Ok, now the boot partition is marked; so again:

  • plug sd card out, add to BPI-M2 Berry, try power via microUSB port on BPI-M2 Berry attached to 5V / 2A power adapter, tried pressing power button - nothing (no red LED shines, nothing on HDMI screen)

Any other tips? I’ve seen in How to Flash Android to eMMC from Ubuntu that there is a program called LiveSuit that can talk to USB VID:PID 1F3A:EFE8, but apparently this program can only be used to flash eMMC, and the BPI-M2 Berry does not seem to have eMMC? Any suggestions?

Found the page FEL/USBBoot - linux-sunxi.org and tried building sunxi-tools on my Ubuntu 20.04 laptop - it worked, and sunxi-fel can “see” the USB device, when the BPI-M2 Berry is connected to laptop over USB without an SD card.

Note from FEL mode - Neutis docs :

This is what I did:

$ sudo apt install libusb-1.0-0-dev zlib1g-dev libfdt-dev
...
$ git clone https://github.com/linux-sunxi/sunxi-tools
...
$ cd sunxi-tools
$ make
cc -std=c99 -Wall -Wextra -Wno-unused-result -D_POSIX_C_SOURCE=200112L -D_BSD_SOURCE -D_DEFAULT_SOURCE -Iinclude/  `pkg-config --cflags libusb-1.0` `pkg-config --cflags zlib`  -o sunxi-fel \
	fel.c fit_image.c progress.c soc_info.c fel_lib.c fel-spiflash.c  `pkg-config --libs libusb-1.0` `pkg-config --libs zlib` -lfdt
cc -std=c99 -Wall -Wextra -Wno-unused-result -D_POSIX_C_SOURCE=200112L -D_BSD_SOURCE -D_DEFAULT_SOURCE -Iinclude/  -c -o nand-part-main.o nand-part-main.c
cc -std=c99 -Wall -Wextra -Wno-unused-result -D_POSIX_C_SOURCE=200112L -D_BSD_SOURCE -D_DEFAULT_SOURCE -Iinclude/  -c -o nand-part-a10.o nand-part.c -D A10
cc -std=c99 -Wall -Wextra -Wno-unused-result -D_POSIX_C_SOURCE=200112L -D_BSD_SOURCE -D_DEFAULT_SOURCE -Iinclude/  -c -o nand-part-a20.o nand-part.c -D A20
cc  -o sunxi-nand-part nand-part-main.o nand-part-a10.o nand-part-a20.o 
cc -std=c99 -Wall -Wextra -Wno-unused-result -D_POSIX_C_SOURCE=200112L -D_BSD_SOURCE -D_DEFAULT_SOURCE -Iinclude/   -o sunxi-pio pio.c 
ln -nsf sunxi-fexc bin2fex
ln -nsf sunxi-fexc fex2bin

Neat, so I tried these commands, with the BPI-M2 Berry attached to laptop in FEL mode:

$ ./sunxi-fel -l
USB device 002:099   Allwinner R40     13000001:92c04700:79414204:3076204c

$ ./sunxi-fel spiflash-info
No SPI flash detected.

$ ./sunxi-fel version
AWUSBFEX soc=00001701(R40) 00000001 ver=0001 44 08 scratchpad=00007e00 00000000 00000000

Well, at least the processor responds; is there any other kind of info I could retrieve through this, which would help debugging?

Why don’t you use Armbian support resources? https://docs.armbian.com/User-Guide_Getting-Started/ https://docs.armbian.com/User-Guide_Getting-Started/#how-to-prepare-a-sd-card Insufficient powering is most likely the problem you face:

Power via power jack, not mUSB.

Many thanks, @igorpec :

I had no idea about them, this is the first time I hear of them (and even if I had heard of them before, I would not be sure if they were relevant to the board I have) - many thanks, looks like a great resource!

Many thanks for that link, excellent resource - and indeed it persuaded me this was due to power issues.

Unfortunately, I cannot see a power jack on my Banapi BPI-M2 Berry; this is the image from the wiki:

… and I cannot see a power jack listed here either.

To check the power issue - I managed to get my hands on an original Raspberry Pi 4 power supply (with USB C), rated output 5.1V, 3A, 15.3W: still nothing, no red LED (mind you, I had nothing else connected to the board, so that red LED would be the only thing to tell me something is happening).

Then I got my hands on a USB to TTL Serial Cable (5V VCC) - CAB-17831 - SparkFun Electronics, which is also rather poorly documented: I couldn’t tell if +5V pin there is input or output; however, I connected cable GND to board GND, cable TX to board RX, cable RX to board TX, and left the cable +5V unconnected; then I plugged the cable USB to my Ubuntu laptop, and used tio to establish a serial connection with:

$ tio -b 115200 -d 8 -f none -s 1 -p none /dev/ttyUSB0

Imagine my surprise when I saw boot text in the terminal, when I plugged in the RPi4 power supply via USB-C-to-micro-USB-adapter to the board! I could even get through the initialization of Armbian, and get to a user shell - but, no red LED shined throughout all of this.

However, there is something weird with the power - I also have a HDMI 7-inch touch display, which uses USB apparently for the touch; but:

  • If I connect RPi4PS via to Micro USB Power, and nothing else is connected to the BPI-M2 Berry, then the BPI-M2 Berry boots.
  • If I sudo shutdown -h now the BPI-M2 Berry, and then I unplug the RPi4PS from AC mains supply (220V) while leaving the USB connection in place, wait up to a minute, and plug it back in to mains supply - the BPI-M2 Berry does not boot
    • But in this case, if I press the Power Key and hold it for about three seconds, then the BPI-M2 Berry starts booting again ?!
    • Also, if I unplug the USB connector of RPi4PS from the BPI-M2 Berry, and then plug it again into Micro USB Power, also in this case the BPI-M2 Berry starts booting again (without pressing Power Key) ?!
  • If the BPI-M2 Berry is booted, and I just do a short press on the Power Key, shutdown sequence is initiated
  • If I have HDMI cable connected, or HDMI cable+USB from 7inch screen connected to the BPI-M2 Berry - the BPI-M2 Berry refuses to boot, if the RPi4PS is attached via USB to Micro USB Power (which otherwise triggers a boot)
    • However, if the BPI-M2 Berry has booted, and then I attach HDMI cable from 7 inch screen, the BPI-M2 Berry continues working (answers on serial debug port) but 7 inch screen shows nothing
    • … and if I then attach the 7 inch screen USB cable to BPI-M2 Berry, I can see actual text screen output (since I just used the minimal/command line image) for a few seconds; then apparently the screen goes to sleep, and I do not know how to wake it (though once, also the BPI-M2 Berry froze at this state, and did not answer on serial debug port anymore).

Is this how the BPI-M2 Berry is supposed to work? I wish that Power Key button was documented somewhere … Am I supposed to hold it up to 3 seconds each time to have it boot, or not?

Another thing I’ve noticed with this Armbian on this board: tried to get Wi-Fi working; it listed some networks in the neighborhood, but did not show mine, which I suspect is because they are 5 GHz. The wiki mentions under Hardware spec: “Wifi Module - WiFi 802.11 b/g/n (AP 6212 module on board)” and “n” should support 5 GHz - but I got on the command line:

user@bananapim2ultra:~$ sudo iw list
Wiphy phy0
	wiphy index: 0
	max # scan SSIDs: 10
	max scan IEs length: 2048 bytes
	max # sched scan SSIDs: 0
	max # match sets: 0
	Retry short limit: 7
	Retry long limit: 4
	Coverage class: 0 (up to 0m)
	Device supports roaming.
	Supported Ciphers:
		* WEP40 (00-0f-ac:1)
		* WEP104 (00-0f-ac:5)
		* TKIP (00-0f-ac:2)
		* CCMP-128 (00-0f-ac:4)
		* CMAC (00-0f-ac:6)
	Available Antennas: TX 0 RX 0
	Supported interface modes:
		 * IBSS
		 * managed
		 * AP
		 * P2P-client
		 * P2P-GO
		 * P2P-device
	Band 1:
		Capabilities: 0x1020
			HT20
			Static SM Power Save
			RX HT20 SGI
			No RX STBC
			Max AMSDU length: 3839 bytes
			DSSS/CCK HT40
		Maximum RX AMPDU length 65535 bytes (exponent: 0x003)
		Minimum RX AMPDU time spacing: 16 usec (0x07)
		HT TX/RX MCS rate indexes supported: 0-7
		Bitrates (non-HT):
			* 1.0 Mbps
			* 2.0 Mbps (short preamble supported)
			* 5.5 Mbps (short preamble supported)
			* 11.0 Mbps (short preamble supported)
			* 6.0 Mbps
			* 9.0 Mbps
			* 12.0 Mbps
			* 18.0 Mbps
			* 24.0 Mbps
			* 36.0 Mbps
			* 48.0 Mbps
			* 54.0 Mbps
		Frequencies:
			* 2412 MHz [1] (20.0 dBm)
			* 2417 MHz [2] (20.0 dBm)
			* 2422 MHz [3] (20.0 dBm)
			* 2427 MHz [4] (20.0 dBm)
			* 2432 MHz [5] (20.0 dBm)
			* 2437 MHz [6] (20.0 dBm)
			* 2442 MHz [7] (20.0 dBm)
			* 2447 MHz [8] (20.0 dBm)
			* 2452 MHz [9] (20.0 dBm)
			* 2457 MHz [10] (20.0 dBm)
			* 2462 MHz [11] (20.0 dBm)
			* 2467 MHz [12] (20.0 dBm)
			* 2472 MHz [13] (20.0 dBm)
			* 2484 MHz [14] (20.0 dBm)
...

So, it can detect only 2.4 GHz frequencies?

I guess, this is maybe a driver problem; so maybe should try to boot from one of their images on the SD card - but I’ll have to leave that for another time …