Difference between revisions of "Getting Started with M2P"

From Banana Pi Wiki
Jump to: navigation, search
(IR function)
(Development For Android)
 
(83 intermediate revisions by 5 users not shown)
Line 1: Line 1:
 +
[[zh:快速上手 香蕉派 BPI-M2+]]
 
=Introduction=
 
=Introduction=
 +
[[File:Banana_pi_BPI-M2+_2.jpg|thumb|Overview: [[Banana Pi BPI-M2+ ]]]]
 +
[[File:M2p_ubunu.jpg|thumb|Overview: BPI-M2+ Ubuntu linux]]
 +
[[File:M2p_debian.jpg|thumb|Overview:BPI-M2+ Debian linux]]
 +
[[File:Rasbian.jpg|thumb|Overview:BPI-M2+ Rasbian linux]]
 +
 
Banana Pi M2+ is mini size development board that offers great computing performance in an ultra portable form factor.It is a 65mm*65mm fantastic mini size board with Allwinner H series chips. It comes with different versions but share the same interfaces.
 
Banana Pi M2+ is mini size development board that offers great computing performance in an ultra portable form factor.It is a 65mm*65mm fantastic mini size board with Allwinner H series chips. It comes with different versions but share the same interfaces.
  
  
Read more: [[Banana Pi BPI-M2+]]
+
*Read more about : [[Banana Pi BPI-M2+]]
 +
*Burn image  : [[Quick Start Banana pi SBC]]
  
 
==BPI-M2+ H3==
 
==BPI-M2+ H3==
Line 13: Line 20:
 
* 10/100/1000Mbps Ethernet Port
 
* 10/100/1000Mbps Ethernet Port
  
=Development=
+
=Development For Android=
Let's get start to develop on BPI-M2P, see amazing things happen.
+
===Load your first image on M2P===
 +
 
 +
  * Download PhoenixCard: https://pan.baidu.com/s/1-fjvPqtG_zewVzqnXf1AHw?pwd=eid9
 +
 
 +
  1.You could download latest image from our forum.
 +
  Ex: http://forum.banana-pi.org/t/bananapi-bpi-m2p-h3-new-image-android7-0-release-2018-6-30/6147
 +
 
 +
  2.Put your TF card into a TF-USB adapter, and then plug adapter in your Windows PC usb interface.
 +
 
 +
  3.Prepare your image, and download image burning tools PhoenixCard.exe.
 +
 
 +
  4.Use "PhoenixCard.exe" to burn android image to TF card.
 +
 
 +
  * Here is the example of M3
 +
 
 +
  [[Image:M3_Android_Burning.png]]
 +
 
 +
===Load your image on M2P EMMC===
 +
  1.The only different with sd card burning is the image burning mode item choice
 +
 
 +
  * Here is the example of M3
 +
 
 +
  [[Image:M3_Android_Emmc_Burning.png]]
 +
 
 +
  2.After succeed to burn image to SD, then plug SD card in your M2P
 +
 
 +
  3.Press power button, device will copy image to EMMC automatically
 +
 
 +
  * Download PhoenixCard: https://pan.baidu.com/s/1-fjvPqtG_zewVzqnXf1AHw?pwd=eid9
 +
 
 +
=Development For Linux=
 
==Basic Development==
 
==Basic Development==
 
===Prepare to develop===
 
===Prepare to develop===
   1.Prepare 8G/above TF card, USB-Serial interface, PC with Ubuntu System
+
   * Prepare 8G/above TF card, USB-Serial interface, PC with Ubuntu System
 +
  * Using your USB-Serial Connect debug console on M2P
  
   2.Using your USB-Serial Connect debug console on M2P
+
===Load your first image on M2P===
 +
  1.You could download latest image from our forum
 +
  * Here is the example forum thread link: http://forum.banana-pi.org/t/banana-pi-bpi-m2p-new-image-release-ubuntu-16-04-v1-1/5719
 +
 
 +
   2.Install bpi-tools on your Ubuntu. If you can't access this URL or any other problems, please go to [https://github.com/BPI-SINOVOIP/bpi-tools bpi-tools repo] and install this tools manually.
 +
  * apt-get install pv
 +
  * curl -sL https://github.com/BPI-SINOVOIP/bpi-tools/raw/master/bpi-tools | sudo -E bash
 +
 
 +
  3.After you download the image, insert your TF card into your Ubuntu
 +
  * Execute "bpi-copy xxx.img /dev/sdx" to install image on your TF card.
 +
 
 +
  4.After step 3, then you can insert your TF card into M2P, and press power button setup M2P.
 +
 
 +
  5.Login user/password: pi/bananapi or root/bananapi.
  
===Load your first image on M2P===
+
===Load your first image on M2P EMMC===
+
  * Run your M2P with TF card
 +
  * Copy "xxx-sd-emmc-xxx.img.zip / xxx-sd-emmc-xxx.img" to your USB disk
 +
  * Plug your USB disk in M2P
 +
  * After M2P recognise USB disk, execute "bpi-copy xxx-sd-emmc-xxx.img.zip / xxx-sd-emmc-xxx.img" to install image on EMMC
 +
  * Then power off M2P, take TF card out, power on M2P with EMMC
  
===Build your own image on M2P===
+
===Update your image===
====Ubuntu====
+
For example, update your image to support new emmc5.1
 
 
  
====Armbian====
+
  * execute “bpi-tools”, to update your bpi tools;
 
+
  * execute “bpi-update -c bpi-m2p.conf”, to download new driver to update your image
 +
  * execute “file *.tgz”, to check download files’ type is compressed data
 +
  * execute “bpi-bootsel”, you will see the bootloader path, “/usr/lib/u-boot/bananapi/bpi-m2p/BPI_M2P_720P.img.gz”
 +
  * execute “bpi-bootsel /usr/lib/u-boot/bananapi/bpi-m2p/BPI_M2P_720P.img.gz”, to update your bootloader
 +
  * reboot
  
 
==Advanced Development==
 
==Advanced Development==
===GPIO===
 
  
 +
===How to build uboot & kernel===
 +
====Install tools====
 +
* apt-get udpate
 +
* apt-get install gcc-arm-linux-gnueabihf u-boot-tools
 +
* apt-get install pv
 +
* curl -sL https://github.com/BPI-SINOVOIP/bpi-tools/raw/master/bpi-tools | sudo -E bash
 +
====Clone code====
 +
* git clone: https://github.com/BPI-SINOVOIP/BPI-M2P-bsp.git
 +
* ./build.sh
 +
 +
===How to create an image ===
 +
* Prepare a SD card which have installed system(Ubuntu/Raspbian/..)
 +
* Boot your SD card with M2P, after M2P finish starting, copy your files and config your system, then poweroff M2P. [If you don't want to config your system, you can skip this step]
 +
* Plug your SD card in PC(which is running Linux), "cd /media", then "ln -s <your account> pi"
 +
* Execute "bpi-migrate -c bpi-m2p.conf -c ubuntu-mate-from-sd.conf -d /dev/sdx"
 +
* Then you could get your own image now
 +
 +
===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
 +
 +
===OTG===
 +
1. On M2P console:
 +
* Execute "./adbd.sh", then execute "ps -ax | grep adbd" to see if adbd is set up
 +
 +
2. On PC terminal:
 +
* If adbd was succeed to set up, insert OTG-USB interface to M2P and PC(with Ubuntu system)
 +
* Execute "adb devices" to see if PC has recognised M2P OTG
 +
* If yes, we could execute "adb shell" to connect M2P by adb now
 +
 +
===GMAC===
 +
* Use iperf3 to test gmac
 +
 +
[[Image:M2P_GMAC.png]]
  
 
===Bluetooth===
 
===Bluetooth===
 +
* 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:
 +
[[Image:M2P_BT_bluetoothctl.png]]
 +
 +
[[Image:M2P_BT.png]]
 +
 +
===WiFi on M2P===
 +
 +
Driver code:
 +
 +
*https://github.com/BPI-SINOVOIP/BPI_WiFi_Firmware
  
===WiFi and Ap mode on M2P===
 
 
====WiFi Client====
 
====WiFi Client====
 +
'''You have two ways to setup WiFi Client'''
  
====AP mode====
+
1. Use commands to setup WiFi client
 +
* ip link set wlan0 up
 +
* iw dev wlan0 scan | grep SSID
 +
* vim /etc/wpasupplicant/wpa_supplicant.conf
 +
  network={   
 +
  ssid="ssid"   
 +
  psk="password"   
 +
  priority=1
 +
  }
 +
* wpa_supplicant -iwlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf
 +
* dhclient wlan0
 +
 
 +
2. Use UI interface to setup WiFi Client
 +
 
 +
===Change Logo===
 +
1.Download M2P bsp code
 +
 
 +
* Execute command “git clone https://github.com/BPI-SINOVOIP/BPI-M2P-bsp”
 +
 
 +
* After you cloned project, execute command “cd BPI-M2P-bsp”
 +
 
 +
2.Change to your boot logo
 +
 
 +
* Prepare a ".bmp" picture, here I rotate 180°, as follows :
 +
 
 +
[[Image:M2P_CL_1.png]]
 +
 
 +
* Change your picture name as "bootlogo.bmp"
 +
* put your picture to "sunxi-pack/chips/sun8iw7p1/configs/BPI-M2P-xxxP/"
 +
Here I replaced “bootlogo.bmp” which is under
 +
“sunxi-pack/chips/sun8iw7p1/configs/BPI-M2P-720P/” as an example:
 +
 
 +
[[Image:M2P_CL_2.png]]
 +
 
 +
3.Build your code
 +
 
 +
* "./build.sh BPI-M2P-720P"
 +
* choose 1
 +
 
 +
[[Image:M2P_CL_3.png]]
 +
 
 +
* After you built the project, you will see “SD” directory
 +
 
 +
[[Image:M2P_CL_4.png]]
 +
 
 +
4.Install a raspbian image on your SD card
 +
 
 +
5.Plug your SD card into your Ubuntu PC
 +
 
 +
(1) check your SD card was recognised as /dev/sdxx, as you can see, mine sd card was recognised as /dev/sde
 +
 
 +
[[Image:M2P_CL_5.png]]
 +
 
 +
6.Then “cd SD/bpi-m2p/100MB”
 +
 
 +
7.Execute command “bpi-bootsel BPI-M2P-720P.img.gz /dev/sde”
 +
 
 +
[[Image:M2P_CL_6.png]]
 +
 
 +
8.Insert your updated SD card to board, and power on, you will see:
  
 
===Clear boot===
 
===Clear boot===
Line 48: Line 216:
 
===Camara function===
 
===Camara function===
 
We use HDF5640 camara.
 
We use HDF5640 camara.
 +
 
[[Image:ov5640_camara.png]]
 
[[Image:ov5640_camara.png]]
 
====Guvcview====
 
====Guvcview====
Line 53: Line 222:
 
* Applications -> Sound & Video -> guvcview
 
* Applications -> Sound & Video -> guvcview
 
[[Image:guvcview_ov5640.png]]
 
[[Image:guvcview_ov5640.png]]
 
+
====Shell====
 
* We also have built-in command in /usr/local/bin to test camara
 
* We also have built-in command in /usr/local/bin to test camara
* test_ov5640_image_mode.sh
+
* "./test_ov5640_image_mode.sh" to test picture taking function
* cameratest.sh
+
* "./cameratest.sh" to test video recording function
  
 
===IR function===
 
===IR function===
* Execute getevent
+
* Execute "getevent"
 
* Use your IR device to send information to M2P
 
* Use your IR device to send information to M2P
[[Image:IR_test_getevent.png]]
+
[[Image:IR_getevent.png]]
 +
 
 +
===BPI-Tools===
 +
====Install Bpi-tools====
 +
* Execute "curl -sL https://github.com/BPI-SINOVOIP/bpi-tools/raw/master/bpi-tools | sudo -E bash - "
 +
 
 +
====Update Bpi-tools====
 +
* Execute "bpi-tools"
 +
[[Image: Bpi-tools.png]]
 +
 
 +
===RPi.GPIO===
 +
====Install RPi.GPIO====
 +
* Execute "git clone https://github.com/BPI-SINOVOIP/RPi.GPIO"
 +
* after clone the repo, cd RPi.GPIO
 +
* Execute "sudo apt-get update"
 +
* Execute "sudo apt-get install python-dev python3-dev"
 +
* Execute "sudo python setup.py install" or "sudo python3 setup.py install" to install the module
 +
 
 +
====Using RPi.GPIO====
 +
* cd /usr/local/bin
 +
* Execute "./bpi_test_g40.py" to test RPi.GPIO
 +
 
 +
[[Image: RPi_GPIO.png]]
  
===WringPi===
+
===WiringPi===
 
* GitHub: https://github.com/BPI-SINOVOIP/BPI-WiringPi2.git
 
* GitHub: https://github.com/BPI-SINOVOIP/BPI-WiringPi2.git
* We also have built-in test command in /usr/local/bin
+
* We also have built-in test command in "/usr/local/bin"
* Execute bpi_test_lcd1602
+
 
* RGB 1602 LCD
+
====How to Update WiringPi====
 +
* Execute "bpi-update -c pkglist.conf"
 +
[[Image: Update_Pkglist.png]]
 +
 
 +
* Execute "bpi-update -c bpi-pkg-bpi-wiringpi.conf"
 +
[[Image: Update_WringPi.png]]
 +
 
 +
====RGB 1602 LCD====
 +
* Execute "/usr/local/bin/bpi_test_lcd1602.sh"
 
[[Image: WringPi_1602_LCD.png]]
 
[[Image: WringPi_1602_LCD.png]]
  
* Execute bpi_test_52pi
+
====0.96 Inch OLED Display====
* 0.96 Inch OLED Display
+
* Execute "/usr/local/bin/bpi_test_52pi.sh"
 
[[Image: WringPi_0.96_OLED.png]]
 
[[Image: WringPi_0.96_OLED.png]]
  
* 8x8 RGB LED Martix
+
====8x8 RGB LED Martix====
 +
* Firstly you need a GPIO Extend Board for 8x8 LED Martix
 +
[[Image: WringPi_LED_Martix_Extend_Board.png]]
 +
 
 +
* Execute "/usr/local/bin/bpi_test_gpio40.sh"
 
[[Image: WringPi_LED_Martix.png]]
 
[[Image: WringPi_LED_Martix.png]]
  

Latest revision as of 17:18, 19 March 2023

Introduction

Overview: BPI-M2+ Ubuntu linux
Overview:BPI-M2+ Debian linux
Overview:BPI-M2+ Rasbian linux

Banana Pi M2+ is mini size development board that offers great computing performance in an ultra portable form factor.It is a 65mm*65mm fantastic mini size board with Allwinner H series chips. It comes with different versions but share the same interfaces.


BPI-M2+ H3

Key Features

  • Quad-core 1.2GHz Cortex-A7 H3
  • 1GB DDR3
  • 8GB eMMC onboard
  • WiFi and BlueTooth onboard
  • 10/100/1000Mbps Ethernet Port

Development For Android

Load your first image on M2P

 * Download PhoenixCard: https://pan.baidu.com/s/1-fjvPqtG_zewVzqnXf1AHw?pwd=eid9
 1.You could download latest image from our forum.
 Ex: http://forum.banana-pi.org/t/bananapi-bpi-m2p-h3-new-image-android7-0-release-2018-6-30/6147
 
 2.Put your TF card into a TF-USB adapter, and then plug adapter in your Windows PC usb interface.
 
 3.Prepare your image, and download image burning tools PhoenixCard.exe.
 
 4.Use "PhoenixCard.exe" to burn android image to TF card.
 * Here is the example of M3
 
 M3 Android Burning.png

Load your image on M2P EMMC

 1.The only different with sd card burning is the image burning mode item choice
 * Here is the example of M3
 
 M3 Android Emmc Burning.png
 
 2.After succeed to burn image to SD, then plug SD card in your M2P
 
 3.Press power button, device will copy image to EMMC automatically
 * Download PhoenixCard: https://pan.baidu.com/s/1-fjvPqtG_zewVzqnXf1AHw?pwd=eid9

Development For Linux

Basic Development

Prepare to develop

 * Prepare 8G/above TF card, USB-Serial interface, PC with Ubuntu System
 * Using your USB-Serial Connect debug console on M2P

Load your first image on M2P

 1.You could download latest image from our forum
 * Here is the example forum thread link: http://forum.banana-pi.org/t/banana-pi-bpi-m2p-new-image-release-ubuntu-16-04-v1-1/5719
 
 2.Install bpi-tools on your Ubuntu. If you can't access this URL or any other problems, please go to bpi-tools repo and install this tools manually.
 * apt-get install pv
 * curl -sL https://github.com/BPI-SINOVOIP/bpi-tools/raw/master/bpi-tools | sudo -E bash
 
 3.After you download the image, insert your TF card into your Ubuntu
 * Execute "bpi-copy xxx.img /dev/sdx" to install image on your TF card.
 
 4.After step 3, then you can insert your TF card into M2P, and press power button setup M2P.
 
 5.Login user/password: pi/bananapi or root/bananapi.

Load your first image on M2P EMMC

 * Run your M2P with TF card
 * Copy "xxx-sd-emmc-xxx.img.zip / xxx-sd-emmc-xxx.img" to your USB disk
 * Plug your USB disk in M2P
 * After M2P recognise USB disk, execute "bpi-copy xxx-sd-emmc-xxx.img.zip / xxx-sd-emmc-xxx.img" to install image on EMMC
 * Then power off M2P, take TF card out, power on M2P with EMMC

Update your image

For example, update your image to support new emmc5.1

  * execute “bpi-tools”, to update your bpi tools;
  * execute “bpi-update -c bpi-m2p.conf”, to download new driver to update your image
  * execute “file *.tgz”, to check download files’ type is compressed data
  * execute “bpi-bootsel”, you will see the bootloader path, “/usr/lib/u-boot/bananapi/bpi-m2p/BPI_M2P_720P.img.gz”
  * execute “bpi-bootsel /usr/lib/u-boot/bananapi/bpi-m2p/BPI_M2P_720P.img.gz”, to update your bootloader
  * reboot

Advanced Development

How to build uboot & kernel

Install tools

Clone code

How to create an image

  • Prepare a SD card which have installed system(Ubuntu/Raspbian/..)
  • Boot your SD card with M2P, after M2P finish starting, copy your files and config your system, then poweroff M2P. [If you don't want to config your system, you can skip this step]
  • Plug your SD card in PC(which is running Linux), "cd /media", then "ln -s <your account> pi"
  • Execute "bpi-migrate -c bpi-m2p.conf -c ubuntu-mate-from-sd.conf -d /dev/sdx"
  • Then you could get your own image now

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

OTG

1. On M2P console:

  • Execute "./adbd.sh", then execute "ps -ax | grep adbd" to see if adbd is set up

2. On PC terminal:

  • If adbd was succeed to set up, insert OTG-USB interface to M2P and PC(with Ubuntu system)
  • Execute "adb devices" to see if PC has recognised M2P OTG
  • If yes, we could execute "adb shell" to connect M2P by adb now

GMAC

  • Use iperf3 to test gmac

M2P GMAC.png

Bluetooth

  • 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:

M2P BT bluetoothctl.png

M2P BT.png

WiFi on M2P

Driver code:

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
 network={    
 ssid="ssid"    
 psk="password"    
 priority=1 
 }
  • wpa_supplicant -iwlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf
  • dhclient wlan0

2. Use UI interface to setup WiFi Client

1.Download M2P bsp code

  • After you cloned project, execute command “cd BPI-M2P-bsp”

2.Change to your boot logo

  • Prepare a ".bmp" picture, here I rotate 180°, as follows :

M2P CL 1.png

  • Change your picture name as "bootlogo.bmp"
  • put your picture to "sunxi-pack/chips/sun8iw7p1/configs/BPI-M2P-xxxP/"

Here I replaced “bootlogo.bmp” which is under “sunxi-pack/chips/sun8iw7p1/configs/BPI-M2P-720P/” as an example:

M2P CL 2.png

3.Build your code

  • "./build.sh BPI-M2P-720P"
  • choose 1

M2P CL 3.png

  • After you built the project, you will see “SD” directory

M2P CL 4.png

4.Install a raspbian image on your SD card

5.Plug your SD card into your Ubuntu PC

(1) check your SD card was recognised as /dev/sdxx, as you can see, mine sd card was recognised as /dev/sde

M2P CL 5.png

6.Then “cd SD/bpi-m2p/100MB”

7.Execute command “bpi-bootsel BPI-M2P-720P.img.gz /dev/sde”

M2P CL 6.png

8.Insert your updated SD card to board, and power on, you will see:

Clear boot

Camara function

We use HDF5640 camara.

Ov5640 camara.png

Guvcview

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

Guvcview ov5640.png

Shell

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

IR function

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

IR getevent.png

BPI-Tools

Install Bpi-tools

Update Bpi-tools

  • Execute "bpi-tools"

Bpi-tools.png

RPi.GPIO

Install RPi.GPIO

  • Execute "git clone https://github.com/BPI-SINOVOIP/RPi.GPIO"
  • after clone the repo, cd RPi.GPIO
  • Execute "sudo apt-get update"
  • Execute "sudo apt-get install python-dev python3-dev"
  • Execute "sudo python setup.py install" or "sudo python3 setup.py install" to install the module

Using RPi.GPIO

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

RPi GPIO.png

WiringPi

How to Update WiringPi

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

Update Pkglist.png

  • Execute "bpi-update -c bpi-pkg-bpi-wiringpi.conf"

Update WringPi.png

RGB 1602 LCD

  • Execute "/usr/local/bin/bpi_test_lcd1602.sh"

WringPi 1602 LCD.png

0.96 Inch OLED Display

  • Execute "/usr/local/bin/bpi_test_52pi.sh"

WringPi 0.96 OLED.png

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/bpi_test_gpio40.sh"

WringPi LED Martix.png

FAQ

Reference Link

http://www.banana-pi.org/m2plus.html

http://forum.banana-pi.org/