Getting Started with M64

From Banana Pi Wiki
Revision as of 02:49, 10 July 2020 by Dangku (talk | contribs) (Install Android Image)
Jump to: navigation, search


Overview: BPI-M64 respbian linux

Banana Pi BPI-M64 is a 64-bit quad-core mini single board computer. It features 2GB of RAM and 8GB eMMC. It also has onboard WiFi and BT. On the ports side, the BPI-M64 has 2 USB A 2.0 ports, 1 USB OTG port, 1 HDMI port, 1 audio jack, and lastly a DC power port. The processor is pin-to-pin comptialbe with R18, so it comes with two versions:M64 and M64-R18

A64 Key Features

  • 1.2 Ghz Quad-Core ARM Cortex A53 64-Bit Processor-A64
  • 8G EMMC
  • 10/100/1000Mbps Ethernet
  • WiFi (AP6212) & Bluetooth

R18 Key Features

  • 1.2 Ghz Quad-Core ARM Cortex A53 64-Bit Processor-R18
  • 8G EMMC
  • 10/100/1000Mbps Ethernet
  • WiFi (AP6212) & Bluetooth

Development For Android

Install Android Image


1. Prepare USB-Serial cable, PC with Linux or WIndows 7/10
2. Using your USB-Serial Connect debug console on M64
3. M64 board is only suport DC power supply bootup.
4. If you want insert a SDcard for Android storage using, and your SDcard was download Linux Image or any other allwinner bootable SDcard image, please format the SDcard start from block0.
5. Download and Install Allwinner Image Download Tools, PhoenixSuit is for window and LiveSuit is for Linux
6. Download BPI latest Android Image

Install Image with PhoenixSuit on Windows

1. Open PhoenixSuit, click the Firmware icon to switching to firmware download panel, then click Image button and choose the Android Image file.
Firmware panel.png
2. M64 board disconnect DC power, press and hold the uboot-key button(new uart debug pin), plugin mirco-usb cable to PC, popup a warning dialog.
Usb plugin warning.png
3 Press Yes to continue and popup another waring dialog, Press Yes to continue
4 Downloading
5 Download finish
Download finish.png

Install Image with LiveSuit

According to the Readme.pdf in LiveSuit Install package, After install the LiveSuit successfully please run with root permission, then the download process is almost the same as PhoenixSuit.
Live suit.png

Build Android source code

Get Android source code

Android 7.0
 $ git clone
Android 6.1
 $ git clone

Build Android Source code

Please read the source code

Development For Linux

Install Linux Image


1. Prepare 8G/above TF card, USB-Serial interface, PC with Ubuntu System
2. Using your USB-Serial Connect debug console on M64
3. Install bpi-tools on your Linux PC
  $ apt-get install pv
  $ curl -sL | sudo -E bash
4. Download BPI latest image

Install Image to SDcard

1. Install image with bpi-tools on Linux
plug your sd card to your Linux PC, and run
  $ sudo bpi-copy  xxx.img /dev/sdX
2. Install bpi image with Etcher on Windows, Linux and MacOS
Balena Etcher is an open source project by Balena, Flash OS images to SD cards & USB drives

Install Image to EMMC

1. Prepare a sd which is installed Linux image and bootup with sdcard
2. Copy emmc image to udisk then plug in M64, then mount udisk.
3. After mount udisk, use command "bpi-copy xxx-emmc-xxx.img" to install image on Emmc.
4. After success install, power off M64, eject the sdcard and poweron with emmc boot.

Switch to LCD7 bootup

  • The default release images are HDMI bootup type, you can switch to LCD bootup type after first boot.
 $ sudo bpi-bootsel /usr/lib/u-boot/bananapi/bpi-m64/BPI-M64-LCD7-linux4.4-8k.img.gz
 $ reboot

Build Linux source code

Get the bsp source code

 $ git clone

Build the bsp source code

Please read the source code

Other development and test


Use iperf3 to test gmac

1. On PC Terminal:

  • Execute "iperf3 -s"

2. On M2U console:

  • TCP test: "iperf3 -c serverIP"
  • UDP test: "iperf3 -u -c serverIP"

A64 Gmac test.png


  • Use bluetoothctl tool to operate BT
  • Execute "bluetoothctl"
  • If you don't know how to use bluetoothctl, type "help", you will see more commands
  • Execute these commands:

A64 bluetooth.png

WiFi on A64

WiFi Client

You have two ways to setup WiFi Client

1. Use commands to setup WiFi client

  • ip link set wlan0 up
  • iw dev wlan0 scan | grep SSID
  • vim /etc/wpasupplicant/wpa_supplicant.conf
  • wpa_supplicant -iwlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf
  • dhclient wlan0

2. Use UI interface to setup WiFi Client

Ap Mode

1.Install hostapd and create hostapd configuration file hostapd.conf:


2.Execute command:"hostapd -d /<path>/hostapd.conf" If you meet problem like this:

A64 ap 1.png

Then, you could solve by following command:

  • nmcli radio wifi off

A64 ap 2.png

  • rfkill unblock 1
  • rfkill unblock 2
  • ifconfig wlan0 up
  • hostapd -d hostapd.conf

A64 ap 3.png

Clear boot

GPIO Control

  • To access a GPIO pin you first need to export it with
 echo XX > /sys/class/gpio/export
  • with XX being the number of the desired pin. To obtain the correct number you have to calculate it from the pin name (like PH18)
 (position of letter in alphabet - 1) * 32 + pin number
  for PH18 this would be ( 8 - 1) * 32 + 18 = 224 + 18 = 242 (since 'h' is the 8th letter)
  • echo "out/in" > /sys/class/gpio/gpio*NUMBER*/direction
  • echo "0/1" > /sys/class/gpio/gpio*NUMBER*/value

Camara function

We use HDF5640 camara.

Ov5640 camara.png


  • Use your UI interface to operate camara
  • Applications -> Sound & Video -> guvcview


  • We also have built-in command in "/usr/local/bin" to test camara
  • "./" to test picture taking function
  • "./" to test video recording function

IR function

  • Execute "getevent"
  • Use your IR device to send information to A64


Install RPi.GPIO

  • Execute "git clone"
  • after clone the repo, cd RPi.GPIO
  • Execute "sudo apt-get update"
  • Execute "sudo apt-get install python-dev python3-dev"
  • Execute "sudo python install" or "sudo python3 install" to install the module

Using RPi.GPIO

  • cd /usr/local/bin
  • Execute "./" to test RPi.GPIO

RPi GPIO.png


How to Update WiringPi

  • Execute "bpi-update -c pkglist.conf"

Update Pkglist.png

  • If your image is 32bit please do this command to install wring pi
  • Execute "bpi-update -c bpi-pkg-bpi-wiringpi.conf"
  • If your image is 64bit please do:"bpi-update -c bpi-pkg-bpi-wiringpi-arm64.conf"

Update WringPi.png

RGB 1602 LCD

  • Execute "/usr/local/bin/"

0.96 Inch OLED Display

  • Execute "/usr/local/bin/"

8x8 RGB LED Martix

  • Firstly you need a GPIO Extend Board for 8x8 LED Martix

WringPi LED Martix Extend Board.png

  • Execute "/usr/local/bin/"

File System

  • read only system change to read & write mode: "mount -o remount,rw /"