{
    "ok": true,
    "data": {
        "title": "EB-0023",
        "rev_id": 12563,
        "updated_at": "2022-09-13T06:37:22+00:00",
        "chunk_count": 74,
        "chunks": [
            {
                "title": "EB-0023",
                "rev_id": 12563,
                "heading_path": "",
                "chunk_index": 0,
                "content": "# EB-0023",
                "char_count": 9,
                "token_estimate": 3
            },
            {
                "title": "EB-0023",
                "rev_id": 12563,
                "heading_path": "Banana Pi M5",
                "chunk_index": 1,
                "content": "<figure>\n<img src=\"Banana_Pi_BPI-M5.jpg\" title=\"Banana_Pi_BPI-M5.jpg\" width=\"320\" alt=\"Banana_Pi_BPI-M5.jpg\" \/>\n<figcaption aria-hidden=\"true\">Banana_Pi_BPI-M5.jpg<\/figcaption>\n<\/figure>",
                "char_count": 186,
                "token_estimate": 47
            },
            {
                "title": "EB-0023",
                "rev_id": 12563,
                "heading_path": "Description",
                "chunk_index": 2,
                "content": "Banana Pi M5 is a new generation single board computer design , use Amlogic S905X3 Quad-Core Cortex-A55 (2.0xxGHz) Processor. Mali-G31 MP2 GPU with 4 x Execution Engines (650Mhz). support 4GB LPDDR4 and 16G eMMC flash. it have 4 USB 3.0 port,1GbE LAN port, IR Reciver, Audio Jack, 1 HDMI Out and USB type-c power supply.\n\nBanana Pi M2Pro is the same SOC with M5, but different board layout. 2GB LPDDR4 and 16G eMMC flash, 2 USB 3.0 port,1GbE LAN port, rtl8821cu usb wifi\/bt onboard, IR Reciver, 1 HDMI Out, 1 MicroUSB port, DC power supply.",
                "char_count": 540,
                "token_estimate": 135
            },
            {
                "title": "EB-0023",
                "rev_id": 12563,
                "heading_path": "Features",
                "chunk_index": 3,
                "content": "<img src=\"Banana_Pi_BPI-M5_4.jpg\" title=\"Banana_Pi_BPI-M5_4.jpg\" width=\"800\" alt=\"Banana_Pi_BPI-M5_4.jpg\" \/>\n\\* Amlogic S905X3 quad core Cortex-A55 (2.0xxGHz)\n\n-   Mali-G31 GPU\n-   4GB LPDDR4\n-   16GB eMMC flash\n-   4 USB 3.0\n-   1 GbE ethernet\n-   HDMI output",
                "char_count": 260,
                "token_estimate": 65
            },
            {
                "title": "EB-0023",
                "rev_id": 12563,
                "heading_path": "Features > specifications",
                "chunk_index": 4,
                "content": "-   SoC – Amlogic S905X3 quad-core Cortex-A55 processor @ up to 2.0 GHz with\n-   Mali-G31 MP2 GPU @ 650Mhz\n-   System Memory – 4GB LPDDR4\n-   Storage – 16GB eMMC flash (option up to 64GB), MicroSD slot up to 2TB\n-   Video Output – HDMI 2.1 up to 4Kp60 with HDR, CEC, EDID\n-   Audio – 3.5mm audio jack, digital HDMI audio\n-   Connectivity – Gigabit Ethernet\n-   USB – 4x USB 3.0 ports via VL817 hub controller, 1x USB-C port (for power only?)\n-   Expansion – 40-pin Raspberry Pi header with 28x GPIO, UART, I2C, SPI, PWM, and power signal (+5V, +3.3V, GND).\n-   Debugging – 3-pin debug header\n-   Misc – Reset, Power, and U-boot button; power and activity LED’s; IR receiver\n-   Power Supply – 5V @3A via USB Type-C port\n-   Dimensions – 92x60mm (Not the same as Raspberry Pi PCB size, but they probably included the connectors during measurement)\n-   Weight – 48grams",
                "char_count": 867,
                "token_estimate": 217
            },
            {
                "title": "EB-0023",
                "rev_id": 12563,
                "heading_path": "Gallery",
                "chunk_index": 5,
                "content": "<img src=\"Banana_Pi_BPI-M5_interface1.jpg\" title=\"Banana_Pi_BPI-M5_interface1.jpg\" width=\"800\" alt=\"Banana_Pi_BPI-M5_interface1.jpg\" \/>\n==Hardware spec==\n\n|                                                |\n|------------------------------------------------|\n| **HardWare Specification of Banana pi BPI-M5** |\n| CPU                                            |\n| GPU                                            |\n| Memory                                         |\n| Storage                                        |\n| Network                                        |\n| Video Output(s)                                |\n| Audio Output(s)                                |\n| USB ports                                      |\n| GPIO                                           |\n| Switches                                       |\n| LED                                            |\n| Power Source                                   |\n| Size & Weight                                  |\n| OS                                             |",
                "char_count": 1021,
                "token_estimate": 256
            },
            {
                "title": "EB-0023",
                "rev_id": 12563,
                "heading_path": "GPIO PIN define > BPI-M5 40PIN GPIO (CON2)",
                "chunk_index": 6,
                "content": "|               |                  |             |           |\n|---------------|------------------|-------------|-----------|\n| GPIO Pin Name | Default Function | Function2   | Function3 |\n| CON1-P01      | VCC-3V3          |             |           |\n| CON1-P02      | VCC5V            |             |           |\n| CON1-P03      | GPIOX_17         | I2C_M2_SDA  |           |\n| CON1-P04      | VCC5V            |             |           |\n| CON1-P05      | GPIOX_18         | I2C_M2_SCL  |           |\n| CON1-P06      | GND              |             |           |\n| CON1-P07      | GPIOX_5 SDIO_CMD |             |           |\n| CON1-P08      | GPIOX_12         | UART_A\\_TX  |           |\n| CON1-P09      | GND              |             |           |\n| CON1-P10      | GPIOX_13         | UART_A\\_RX  |           |\n| CON1-P11      | GPIOX_3 SDIO_D3  |             |           |\n| CON1-P12      | GPIOAO_8         | TDMB_SCLK   |           |\n| CON1-P13      | GPIOX_4 SDIO_CLK |             |           |\n| CON1-P14      | GND              |             |           |\n| CON1-P15      | GPIOX_7 PWM_F    |             |           |\n| CON1-P16      | GPIOX_0 SDIO_D0  |             |           |",
                "char_count": 1196,
                "token_estimate": 299
            },
            {
                "title": "EB-0023",
                "rev_id": 12563,
                "heading_path": "GPIO PIN define > BPI-M5 40PIN GPIO (CON2)",
                "chunk_index": 7,
                "content": "| CON1-P17      | VCC-3V3          |             |           |\n| CON1-P18      | GPIOX_1 SDIO_D1  |             |           |\n| CON1-P19      | GPIOX_8 PCM_DIN  |             |           |\n| CON1-P20      | GND              |             |           |\n| CON1-P21      | GPIOX_9 PCM_DOUT |             |           |\n| CON1-P22      | GPIOX_2 SDIO_D2  |             |           |\n| CON1-P23      | GPIOX_11         | PCM_CLK     |           |\n| CON1-P24      | GPIOX_10         | PCM_SYNC    |           |\n| CON1-P25      | GND              |             |           |\n| CON1-P26      | GPIOX_16         | PWM_E       |           |\n| CON1-P27      | GPIOA_14         | I2C_M3_SDA  |           |\n| CON1-P28      | GPIOA_15         | I2C_M3_SCL  |           |\n| CON1-P29      | GPIOX_14         | UART_A\\_CTS |           |\n| CON1-P30      | GND              |             |           |\n| CON1-P31      | GPIOX_15         | UART_A\\_RTS |           |\n| CON1-P32      | GPIOX_19         | PWM_B       |           |\n| CON1-P33      | GPIOX_6 PWM_A    |             |           |\n| CON1-P34      | GND              |             |           |\n| CON1-P35      | GPIOAO_7         | TDMB_FS     |           |",
                "char_count": 1196,
                "token_estimate": 299
            },
            {
                "title": "EB-0023",
                "rev_id": 12563,
                "heading_path": "GPIO PIN define > BPI-M5 40PIN GPIO (CON2)",
                "chunk_index": 8,
                "content": "| CON1-P36      | GPIOH_5 SPDIF_IN |             |           |\n| CON1-P37      | GPIOAO_7         | I2S_MCLK    |           |\n| CON1-P38      | GPIOAO_10        | TDMB_DIN    | SPDIF_OUT |\n| CON1-P39      | GND              |             |           |\n| CON1-P40      | GPIOAO_4         | TDMB_DOUT   |           |",
                "char_count": 314,
                "token_estimate": 79
            },
            {
                "title": "EB-0023",
                "rev_id": 12563,
                "heading_path": "GPIO PIN define > BPI-M5 Debug UART(CON1)",
                "chunk_index": 9,
                "content": "|         |          |\n|---------|----------|\n| CON2-P1 | GND      |\n| CON2-P2 | UART0-RX |\n| CON2-P3 | UART0-TX |\n|         |          |",
                "char_count": 137,
                "token_estimate": 35
            },
            {
                "title": "EB-0023",
                "rev_id": 12563,
                "heading_path": "How To Development It > Prepare",
                "chunk_index": 10,
                "content": "1\\. Prepare a usb-serial cable, a 5V\/3A adaptor type-c power supply. The serial cable is used for console debug and type-c cable is used for android image download and ADB debug. M2pro is used Micro-usb port for android image download and ADB debug.\n\n2\\. Prepare a SDcard at least 8GB for linux development, android only support emmc boot.\n\n3\\. The SOC rom first boot media is emmc, so board can't bootup from SDcard if the emmc is bootable with any image flashed, more info please refer to board [boot sequence](http:\/\/wiki.banana-pi.org\/Getting_Started_with_BPI-M5#Boot_Sequence).\n\n4\\. In Android SDcard is mmc0, emmc is mmc1, but in Linux SDcard is mmc1, emmc is mmc0.",
                "char_count": 671,
                "token_estimate": 168
            },
            {
                "title": "EB-0023",
                "rev_id": 12563,
                "heading_path": "Android > Prepare",
                "chunk_index": 11,
                "content": "1\\. Download and install the [AML Usb Burning Tool](https:\/\/download.banana-pi.dev\/d\/3ebbfa04265d4dddb81b\/files\/?p=%2FTools%2Fimage_download_tools%2Faml_usb_burning_tool_V2_setup_v2.2.3.3.zip) for android image download via USB type-c on M5 and Micro-usb on M2pro, only support windows.\n\n2\\. Download the latest [android image](http:\/\/wiki.banana-pi.org\/Banana_Pi_BPI-M5#Android_2), and confirm that the md5 checksum is correct.\n\n3\\. M5 and M2pro are compatiable with same android image.",
                "char_count": 487,
                "token_estimate": 122
            },
            {
                "title": "EB-0023",
                "rev_id": 12563,
                "heading_path": "Android > Install Image with Usb Burning Tool",
                "chunk_index": 12,
                "content": "1\\. Open USB_Burning_Tool.exe, select menu File-\\>Import image, choose the android image file aml_upgrade_package.img.\n\n<!-- -->\n\n<img src=\"m5_android_install_1.png\" title=\"fig:m5_android_install_1.png\" width=\"800\" alt=\"m5_android_install_1.png\" \/>\n\n2\\. M5\/M2pro board disconnect power, press and hold SW4 button beside 40pin header, plugin type-c usb cable(microUSB on m2pro) to PC\n\n<!-- -->\n\n<img src=\"m5_android_install_2.png\" title=\"fig:m5_android_install_2.png\" width=\"800\" alt=\"m5_android_install_2.png\" \/>\n\n3\\. Click the Start button and wait for upgrade complete.\n\n<!-- -->\n\n<img src=\"m5_android_install_3.png\" title=\"fig:m5_android_install_3.png\" width=\"800\" alt=\"m5_android_install_3.png\" \/>\n\n4\\. After Burning successfull, Unplug the usb and connect to power supply adaptor to startup.\n\n<!-- -->\n\n<img src=\"m5_android_install_4.png\" title=\"fig:m5_android_install_4.png\" width=\"800\" alt=\"m5_android_install_4.png\" \/>\n\n5\\. Click the Stop button to cancel the upgrade process and close the USB Buring Tool.",
                "char_count": 1014,
                "token_estimate": 254
            },
            {
                "title": "EB-0023",
                "rev_id": 12563,
                "heading_path": "Android > Install Image with Aml Flash Tool",
                "chunk_index": 13,
                "content": "[aml-flash-tool](https:\/\/github.com\/Dangku\/aml-flash-tool) is a linux platform opensource image flash util for Amlogic android.\n\n` $ .\/flash-tool.sh --img=\/path\/to\/aml_upgrade_package.img --parts=all --wipe --soc=g12a --reset=y`\n\n![](m5_linux_flash.png \"fig:m5_linux_flash.png\")",
                "char_count": 278,
                "token_estimate": 70
            },
            {
                "title": "EB-0023",
                "rev_id": 12563,
                "heading_path": "Android > Build Android Source Code",
                "chunk_index": 14,
                "content": "1\\. Get Android 9.0 source code\n\n` $ git clone `[`https:\/\/github.com\/BPI-SINOVOIP\/BPI-S905X3-Android9`](https:\/\/github.com\/BPI-SINOVOIP\/BPI-S905X3-Android9)\n\n2\\. Build the Android 9.0 Source code\n\n<!-- -->\n\nPlease read the source code [README.md](https:\/\/github.com\/BPI-SINOVOIP\/BPI-S905X3-Android9\/blob\/master\/README.md)",
                "char_count": 321,
                "token_estimate": 81
            },
            {
                "title": "EB-0023",
                "rev_id": 12563,
                "heading_path": "Android > Android DTB overlay",
                "chunk_index": 15,
                "content": "Bananapi M5\/M2Pro DTBO idx value table, default idx value is 0 in release image.\n\n<!-- -->\n\n{\\| class=\"wikitable\"\n\n\\|- \\| style=\"background: PaleTurquoise; color: black\" colspan=\"4\"\\| **Bananapi M5\/M2pro DTBO idx value table** \\|- \\|idx value\\|\\| device tree overlay \\|\\| description \\|- \\| 0\\|\\| android_p\\_overlay\\|\\| default dtbo, no use \\|- \\| 1\\|\\| wifi_bt_rtl8822cs\\|\\| enable bpi rtl8822cs wifi\/bt module \\|- \\| 2\\|\\| i2c2\\|\\| enable i2c 2 \\|- \\| 3\\|\\| i2c3\\|\\| enable i2c 3 \\|- \\| 4\\|\\| sdio\\|\\| enable sdio \\|- \\| 5\\|\\| uart1\\|\\| enable 2 pins uart 1 \\|- \\| 6\\|\\| uart1_cts_rts\\|\\| enable 4 pins uart 1 \\|- \\| 7\\|\\| uart2\\|\\| enable 2 pins uart 2 \\|- \\| 8\\|\\| hifi_pcm5122\\|\\| enable i2s [pcm5122 HiFi DAC](https:\/\/shumeipai.nxez.com\/hifidac-hat-for-raspberry-pi) \\|}\n\n**How to apply a new dtbo**\n\n<!-- -->\n\n1\\. ADB command via sysfs",
                "char_count": 842,
                "token_estimate": 211
            },
            {
                "title": "EB-0023",
                "rev_id": 12563,
                "heading_path": "Android > Android DTB overlay",
                "chunk_index": 16,
                "content": "` root@dangku-desktop:\/tmp# adb root`\n` restarting adbd as root`\n` root@dangku-desktop:\/tmp# adb remount`\n` remount succeeded`\n` root@dangku-desktop:\/tmp# adb shell`\n` bananapi_m5:\/ # echo dtbo > \/sys\/class\/unifykeys\/name                                                `\n` bananapi_m5:\/ # echo \"1\" > \/sys\/class\/unifykeys\/write                                                `\n` bananapi_m5:\/ # reboot`\n\n2\\. Uart console command via sysfs\n\n` console:\/ $ `\n` console:\/ $ su`\n` console:\/ # echo dtbo > \/sys\/class\/unifykeys\/name                              `\n` [  115.702781@0] unifykey: name_store() 1302, name dtbo, 4`\n` [  115.702856@0] unifykey: name_store() 1311`\n` console:\/ #`\n` console:\/ # echo \"1\" > \/sys\/class\/unifykeys\/write                              `\n` [  129.262659@0] unifykey: write_store()  is a string`\n` [  129.262733@0] unifykey: dtbo, 1, 1`\n` [  129.265312@0] unifykey: amlkey_write 393`\n` [  129.292347@1] emmc_key_write:149, write ok`\n` console:\/ # `\n` console:\/ # reboot`\n\n3\\. Settings App(To-Do)\n\n<!-- -->\n\nCheck the bootup uart debug message and confirm which dtbo is loaded actually, here \"1\" means set idx=1 to apply wifi_bt_rtl8822cs dtbo.",
                "char_count": 1168,
                "token_estimate": 292
            },
            {
                "title": "EB-0023",
                "rev_id": 12563,
                "heading_path": "Android > Android DTB overlay",
                "chunk_index": 17,
                "content": "` load dtb from 0x1000000 ......`\n`       Amlogic multi-dtb tool`\n`       Single dtb detected`\n` find 2 dtbos`\n` dtbos to be applied: 1`\n` Apply dtbo 1`\n\nUnifykeys is stored in a specific emmc part, \"Normal erase\" selected in USB_Burning_Tool will not erase this data for next update, you must select \"Erase all\" if you want the default dtbo idx to be applied after image download.\n\n<!-- -->\n\n<img src=\"m5_android_erase_all.png\" title=\"fig:m5_android_erase_all.png\" width=\"800\" alt=\"m5_android_erase_all.png\" \/>\n\n**Build Android image with a specific DTBO default**.\n\n<!-- -->\n\n1\\. Default build-in overlays are defined in device\/amlogic\/bananapi_m5\/Kernel.mk, you can add a new overlay dtbo here.\n\n` DTBO_DEVICETREE := android_p_overlay wifi_bt_rtl8822cs i2c2 i2c3 sdio uart1 uart1_cts_rts uart2 hifi_pcm5122`\n\n2\\. Default apply DTBO idx is defined in device\/amlogic\/bananapi_m5\/BoardConfig.mk, you can change the idx value to set which overlay dtbo will be applied default.\n\n` BOARD_KERNEL_CMDLINE += androidboot.dtbo_idx=0`\n\n3\\. DTS files are in common\/arch\/arm\/boot\/dts\/amlogic\/overlay\/bananapi_m5\/\n\n<!-- -->",
                "char_count": 1112,
                "token_estimate": 278
            },
            {
                "title": "EB-0023",
                "rev_id": 12563,
                "heading_path": "Android > Android DTB overlay",
                "chunk_index": 18,
                "content": "More info about android device tree overlays, please refer to [google android offical site](https:\/\/source.android.com\/devices\/architecture\/dto)",
                "char_count": 144,
                "token_estimate": 36
            },
            {
                "title": "EB-0023",
                "rev_id": 12563,
                "heading_path": "Android > Install OpenGapps",
                "chunk_index": 19,
                "content": "1\\. Download install package from [OpenGapps](https:\/\/opengapps.org\/), Android release image is arm\/android 9.0 variant.\n\n![](opengapps.png \"opengapps.png\")\n\n2\\. Download [device_id.apk](https:\/\/download.banana-pi.dev\/d\/ca025d76afd448aabc63\/files\/?p=%2FTools%2Fapps%2Fdevice_id_v1.3.2.apk).\n\n3\\. Copy the OpenGapp package to a udisk or sdcard root directory.\n\n4\\. Create a txt file named **factory_update_param.aml** in udisk or sdcard root directory with the following android recovery parameter content, and replace the file name with the actual downloaded package.\n\nudisk:\n\n` --wipe_cache`\n` --update_package=\/udisk\/open_gapps-arm-9.0-pico-20210327.zip`\n\nsdcard:\n\n` --wipe_cache`\n` --update_package=\/sdcard\/open_gapps-arm-9.0-pico-20210327.zip`\n\n5\\. Plugin the udisk or sdcard to the board and poweron.\n\nwatch this video on youtube: [youtube](https:\/\/youtu.be\/fXOKmWfpqF8)\n\n6.OpenGapps install and certify.\n\nwatch this video on [bilibili](https:\/\/www.bilibili.com\/video\/BV13y4y1s77i\/)",
                "char_count": 987,
                "token_estimate": 247
            },
            {
                "title": "EB-0023",
                "rev_id": 12563,
                "heading_path": "Android > IR Remote Control Custom",
                "chunk_index": 20,
                "content": "Before starting this work, some android basic concepts and knowledge need to be known.\n\n:\\*Linux kernel input key event.\n\n:\\*Android keycode.\n\n:\\*Linux keycode map to android keycode.\n\n:\\*Android Adb function work on your PC\n\n1\\. pull the remote files from device\n\n` # adb pull \/vendor\/etc\/remote.cfg`\n` # adb pull \/vendor\/etc\/remote.tab `\n\n2\\. modify remote.cfg to enable remote debug message\n\n![](remotecfg.png \"fig:remotecfg.png\")\n\n<!-- -->\n\npush remote.cfg back\n\n` # adb root`\n` # adb remount`\n` # adb push remote.cfg \/vendor\/etc\/`\n` # adb shell`\n` m5_mbox:\/ # chmod 644 \/vendor\/etc\/remote.cfg`\n` m5_mbox:\/ # remotecfg -c \/vendor\/etc\/remote.cfg -d                                                  `\n` cfgdir = \/vendor\/etc\/remote.cfg`\n` work_mode = 1`\n` repeat_enable = 0`\n` debug_enable = 1`\n` max_frame_time = 1000`\n\n3\\. Get the remote keycode\n\nPress your remote key one by one and then print the dmesg to get the remote custom_code and each remote key code.\n\n` # adb shell dmesg | grep framecode=`\n\n![](keycode.png \"fig:keycode.png\")\n\n<!-- -->\n\ncustom_code = 0xfe01\n\nkeycode = 0x00, 0x01, 0x09, 0x02, 0x0a, 0x05, 0x04 0x06, 0x03, 0x0b, 0x40, 0x48, 0x44\n\n<!-- -->",
                "char_count": 1168,
                "token_estimate": 292
            },
            {
                "title": "EB-0023",
                "rev_id": 12563,
                "heading_path": "Android > IR Remote Control Custom",
                "chunk_index": 21,
                "content": "4\\. Modify remote.tab to map the scancode to android keycode\n\n![](remotetab.png \"fig:remotetab.png\")\n\n<!-- -->\n\npush remote.tab and test each key whether works\n\n` # adb root`\n` # adb remount`\n` # adb push remote.tab1 \/vendor\/etc\/`\n` # adb shell`\n` m5_mbox:\/ # chmod 644 \/vendor\/etc\/remote.tab`\n` m5_mbox:\/ # remotecfg -c \/vendor\/etc\/remote.cfg -t \/vendor\/etc\/remote.tab -d                                                                                                                               `\n` cfgdir = \/vendor\/etc\/remote.cfg`\n` work_mode = 1`\n` repeat_enable = 0`\n` debug_enable = 1`\n` max_frame_time = 1000`\n` tabdir = \/vendor\/etc\/remote.tab`\n` custom_name = nec-test`\n` fn_key_scancode = 0xffff`\n` cursor_left_scancode = 0xffff`\n` cursor_right_scancode = 0xffff`\n` cursor_up_scancode = 0xffff`\n` cursor_down_scancode = 0xffff`\n` cursor_ok_scancode = 0xffff`\n` custom_code = 0xfe01`\n` release_delay = 80`\n` map_size = 13`\n` key[0] = 0x74`\n` key[1] = 0x1008b`\n` key[2] = 0x90066`\n` key[3] = 0x20069`\n` key[4] = 0xa006a`\n` key[5] = 0x50067`\n` key[6] = 0x4006c`\n` key[7] = 0x6001c`\n` key[8] = 0x30072`\n` key[9] = 0xb0073`\n` key[10] = 0x40009e`\n` key[11] = 0x4800a4`\n` key[12] = 0x440071`",
                "char_count": 1195,
                "token_estimate": 299
            },
            {
                "title": "EB-0023",
                "rev_id": 12563,
                "heading_path": "Android > IR Remote Control Custom",
                "chunk_index": 22,
                "content": "5\\. Reboot the board",
                "char_count": 20,
                "token_estimate": 5
            },
            {
                "title": "EB-0023",
                "rev_id": 12563,
                "heading_path": "Linux > Prepare",
                "chunk_index": 23,
                "content": "1\\. Linux image support SDcard or EMMC bootup, but you should read the [boot sequence](http:\/\/wiki.banana-pi.org\/Getting_Started_with_BPI-M5#Boot_Sequence) at first.\n\n<!-- -->\n\n2\\. M5 and M2pro are compatiable with same Linux image.\n\n<!-- -->\n\n2\\. Make sure bootable EMMC is formatted if you want bootup from SDcard, more info refer to [Erase EMMC for SDcard Bootup](http:\/\/wiki.banana-pi.org\/Getting_Started_with_BPI-M5#Erase_EMMC_for_SDcard_Bootup)\n\n<!-- -->\n\n3\\. Make sure SDcard is formatted without Linux image flashed if you want bootup from EMMC and use Sdcard as storage.\n\n<!-- -->\n\n4\\. Install bpi-tools on your Linux PC(if [flash image](https:\/\/wiki.banana-pi.org\/Getting_Started_with_M5\/M2Pro#Install_Image_to_SDcard) with other tools, ignore this step). If you can't access this URL or any other install problem, please go to [bpi-tools](https:\/\/github.com\/bpi-sinovoip\/bpi-tools) source repo, download and install this tools manually.\n\n` $ apt-get install pv`\n` $ curl -sL `[`https:\/\/github.com\/BPI-SINOVOIP\/bpi-tools\/raw\/master\/bpi-tools`](https:\/\/github.com\/BPI-SINOVOIP\/bpi-tools\/raw\/master\/bpi-tools)` | sudo -E bash`",
                "char_count": 1134,
                "token_estimate": 284
            },
            {
                "title": "EB-0023",
                "rev_id": 12563,
                "heading_path": "Linux > Prepare",
                "chunk_index": 24,
                "content": "5\\. Download Linux latest [Linux Image](http:\/\/wiki.banana-pi.org\/Banana_Pi_BPI-M5#Linux), and confirm that the md5 checksum is correct.\n\n<!-- -->\n\n6\\. Default login: pi\/bananapi or root\/bananapi",
                "char_count": 195,
                "token_estimate": 49
            },
            {
                "title": "EB-0023",
                "rev_id": 12563,
                "heading_path": "Linux > Install Image to SDcard",
                "chunk_index": 25,
                "content": "1\\. Install Image with Etcher on Windows, Linux and MacOS.\n\n[Balena Etcher](https:\/\/balena.io\/etcher) is an opensource GUI flash tool by Balena, Flash OS images to SDcard or USB drive\n\n<!-- -->\n\n![](m2s_linux_flash.png \"fig:m2s_linux_flash.png\")\n\n<!-- -->\n\n2\\. Install Image with dd command on Linux, umount SDcard device \/dev\/sdX partition if mounted automatically. Actually bpi-copy is the same as this dd command.\n\n` $ sudo apt-get install pv unzip`\n` $ sudo unzip -p xxx-bpi-m5-xxx.img.zip | pv | dd of=\/dev\/sdX bs=10M status=noxfer`\n\n3\\. Install image with bpi-tools on Linux, plug SDcard to Linux PC and run\n\n` $ sudo apt-get install pv unzip`\n` $ sudo bpi-copy xxx-bpi-m5-xxx.img.zip \/dev\/sdX`",
                "char_count": 700,
                "token_estimate": 175
            },
            {
                "title": "EB-0023",
                "rev_id": 12563,
                "heading_path": "Linux > Install Image to EMMC",
                "chunk_index": 26,
                "content": "1\\. Prepare a [SDcard with Linux image](https:\/\/wiki.banana-pi.org\/Getting_Started_with_BPI-M5\/M2Pro#Install_Image_to_SDcard) flashed and bootup board with this SDcard.\n\n<!-- -->\n\n2\\. Copy Linux image to udisk, plug the udisk to board and mount it.\n\n<!-- -->\n\n3\\. Install with dd command, umount mmcblk0p1 and mmcblk0p2 partition if mounted automatically. Actually bpi-copy is the same as this dd command.\n\n` $ sudo apt-get install pv unzip`\n` $ sudo unzip -p xxx-bpi-m5-xxx.img.zip | pv | dd of=\/dev\/mmcblk0 bs=10M status=noxfer`\n\n4\\. Install the linux image in udisk with bpi-tools command\n\n` $ sudo apt-get install pv unzip`\n` $ sudo bpi-copy xxx-bpi-m5-xxx.img.zip \/dev\/mmcblk0`\n\n5\\. After download complete, power off safely and eject the SDcard.",
                "char_count": 751,
                "token_estimate": 188
            },
            {
                "title": "EB-0023",
                "rev_id": 12563,
                "heading_path": "Linux > Build Linux Source Code",
                "chunk_index": 27,
                "content": "1\\. Get the Linux bsp source code\n\n` $  git clone `[`https:\/\/github.com\/BPI-SINOVOIP\/BPI-M5-bsp`](https:\/\/github.com\/BPI-SINOVOIP\/BPI-M5-bsp)\n\n2\\. Build the bsp source code\n\n<!-- -->\n\nPlease read the source code [README.md](https:\/\/github.com\/BPI-SINOVOIP\/BPI-M5-bsp\/blob\/master\/README.md)\n\n<!-- -->\n\n3\\. If you want build uboot and kernel separately, please download the [u-boot](https:\/\/github.com\/Dangku\/amlogic-u-boot\/tree\/odroidg12-v2015.01-c4-m5) the [kernel](https:\/\/github.com\/Dangku\/amlogic-linux\/tree\/odroidg12-4.9.y-c4-m5) only, get the toolchains, boot script and other configuration files from [BPI-M5-bsp](https:\/\/github.com\/BPI-SINOVOIP\/BPI-M5-bsp)",
                "char_count": 663,
                "token_estimate": 166
            },
            {
                "title": "EB-0023",
                "rev_id": 12563,
                "heading_path": "Linux > DTB overlay",
                "chunk_index": 28,
                "content": "1\\. DTB overlay is used for 40pin gpios multi-function configuration and install in vfat boot partition, you can check the mount point with mount command.\n\n` root@bananapi:~# ls \/boot\/firmware\/overlays\/`\n` custom_ir.dtbo      pwm_b-backlight.dtbo  spi0.dtbo`\n` ds3231.dtbo         pwm_c-beeper.dtbo     uart1_cts_rts.dtbo`\n` hifi_pcm5102a.dtbo  pwm_cd-c.dtbo         uart1.dtbo`\n` hifi_pcm5122.dtbo   pwm_cd.dtbo           uart2.dtbo`\n` i2c0.dtbo           pwm_ef.dtbo           waveshare_tft24_lcd.dtbo`\n` i2c1.dtbo           pwm_ef-f.dtbo         waveshare_tft35c_lcd.dtbo`\n` pwm_ab.dtbo         sdio.dtbo             waveshare_tft35c_rtp.dtbo`\n\n2\\. Update the overlays env in vfat \/boot\/firmware\/boot.ini to enable what you want. Default i2c0, spi0 and uart1 enabled.\n\n` # Overlays to load`\n` # Example combinations:`\n` #   spi0 i2c0 i2c1 uart0`\n` #   hktft32`\n` #   hktft35`\n` setenv overlays \"i2c0 spi0 uart1\"`\n\n3\\. Must be restart the board for overlay dtb loaded.",
                "char_count": 970,
                "token_estimate": 243
            },
            {
                "title": "EB-0023",
                "rev_id": 12563,
                "heading_path": "Linux > WiringPi",
                "chunk_index": 29,
                "content": "Note: This WiringPi only support set 40pin gpio to output, input or software pwm, for io functions as i2c, spi, pwm..., you must enable dtb overlay in boot.ini\n\n<!-- -->\n\n1\\. Build and install wiringPi\n\n` $ git clone `[`https:\/\/github.com\/BPI-SINOVOIP\/amlogic-wiringPi`](https:\/\/github.com\/BPI-SINOVOIP\/amlogic-wiringPi)\n` $ cd amlogic-wiringPi`\n` $ chmod a+x build`\n` $ sudo .\/build`\n\n2\\. Run **gpio readall** to show all 40pins status.\n\n![](m5_wiringpi.png \"m5_wiringpi.png\")\n\n3\\. BPI GPIO Extend board and examples in [amlogic-wiringPi\/examples](https:\/\/github.com\/BPI-SINOVOIP\/amlogic-wiringPi\/tree\/master\/examples)\n\n<!-- -->\n\nblinkall, blink all pin header gpios, no extend board.\n\nlcd-bpi, [BPI LCD 1602 display module](http:\/\/wiki.banana-pi.org\/BPI_LCD_1602_display_module) example.\n\n52pi-bpi, [BPI OLED Display Module](http:\/\/wiki.banana-pi.org\/BPI_OLED_Display_Module) example.\n\nmatrixled-bpi, [BPI RGB LED Matrix Expansion Module](http:\/\/wiki.banana-pi.org\/BPI_RGB_LED_Matrix_Expansion_Module) example.\n\nberryclip-bpi, [BPI BerryClip Module](http:\/\/wiki.banana-pi.org\/BPI_BerryClip_Module)",
                "char_count": 1099,
                "token_estimate": 275
            },
            {
                "title": "EB-0023",
                "rev_id": 12563,
                "heading_path": "Linux > RPi.GPIO",
                "chunk_index": 30,
                "content": "Build and install\n\n` $ sudo apt-get Install build-essential python python-dev python-setuptools git`\n` $ git clone `[`https:\/\/github.com\/Dangku\/RPi.GPIO-Amlogic.git`](https:\/\/github.com\/Dangku\/RPi.GPIO-Amlogic.git)\n` $ cd RPi.GPIO-Amlogic`\n` $ sudo python setup.py clean --all`\n` $ sudo python setup.py build install`",
                "char_count": 317,
                "token_estimate": 80
            },
            {
                "title": "EB-0023",
                "rev_id": 12563,
                "heading_path": "Linux > WiringPi2-Python",
                "chunk_index": 31,
                "content": "Build and install\n\n` $ sudo apt-get Install python python-dev python-setuptools swig wiringpi git`\n` $ git clone `[`https:\/\/github.com\/Dangku\/WiringPi2-Python-Amlogic.git`](https:\/\/github.com\/Dangku\/WiringPi2-Python-Amlogic.git)\n` $ cd WiringPi2-Python-Amlogic`\n` $ sudo python setup.py install`",
                "char_count": 295,
                "token_estimate": 74
            },
            {
                "title": "EB-0023",
                "rev_id": 12563,
                "heading_path": "Other Development > Custom Linux Boot Logo",
                "chunk_index": 32,
                "content": "Linux uboot limit boot logo fb size to 1080p60hz\/1920x1080 default, so oversize resolution will not be supported by default image, but you can modify uboot source code to support it.\n\n<!-- -->\n\n1\\. Prepare a 24bit bmp file and named boot-logo.bmp\n\n2\\. Compress the bmp file to boot-logo.bmp.gz\n\n` $ gzip boot-logo.bmp`\n\n3\\. copy the target file to BPI-BOOT partition of linux image\n\n` $ cp boot-logo.bmp.gz \/media\/xxx\/BPI-BOOT\/`",
                "char_count": 428,
                "token_estimate": 107
            },
            {
                "title": "EB-0023",
                "rev_id": 12563,
                "heading_path": "Other Development > Custom Android Boot Logo",
                "chunk_index": 33,
                "content": "Android bootloader limit boot logo fb display size is 1080p60hz\/1920x1080 default, and android kernel dtb partition table limit boot logo partition size to 16MB default .\n\n<!-- -->\n\n1\\. Prepare a 24bit bmp file and named boot-logo.bmp\n\n<!-- -->\n\n2\\. Compress the bmp file to boot-logo.bmp.gz\n\n` $ gzip boot-logo.bmp`\n\n3\\. Download [m5_android_bootlogo_tool.zip](https:\/\/download.banana-pi.dev\/d\/3ebbfa04265d4dddb81b\/files\/?p=%2FTools%2Flogo_create_tools%2Fm5_android_bootlogo_tool.zip)\n\n<!-- -->\n\n4\\. Extract this tool",
                "char_count": 518,
                "token_estimate": 130
            },
            {
                "title": "EB-0023",
                "rev_id": 12563,
                "heading_path": "Other Development > Custom Android Boot Logo",
                "chunk_index": 34,
                "content": "` $ unzip m5_android_bootlogo_tool.zip`\n` $ cd m5_android_bootlogo_tool\/`\n` $ cp -a logo_img_files logo               \/\/logo_img_files is the origin bootlogo resource in android source and copy from `<android-source-dir>`\/devices\/amlogic\/bananapi_m5\/log_img_files`\n` $ ls -l logo\/`\n` -rwxr--r-- 1 dangku dangku 525054 Sep 25 16:54 bootup.bmp`\n` -rwxr--r-- 1 dangku dangku 525054 Sep 25 16:54 bootup_X3.bmp`\n` -rwxr--r-- 1 dangku dangku    184 May 19  2020 upgrade_bar.bmp`\n` -rwxr--r-- 1 dangku dangku 180072 May 19  2020 upgrade_error.bmp`\n` -rwxr--r-- 1 dangku dangku 180072 May 19  2020 upgrade_fail.bmp`\n` -rwxr--r-- 1 dangku dangku 180072 May 19  2020 upgrade_logo.bmp`\n` -rwxr--r-- 1 dangku dangku 180072 May 19  2020 upgrade_success.bmp`\n` -rwxr--r-- 1 dangku dangku    184 May 19  2020 upgrade_unfocus.bmp`\n` -rwxr--r-- 1 dangku dangku 180072 May 19  2020 upgrade_upgrading.bmp`\n\n5\\. Copy the boot-logo.bmp.gz\n\n` $ cp boot-logo.bmp.gz logo\/bootup.bmp`\n` $ cp boot-logo.bmp.gz logo\/bootup_X3.bmp`\n\n6\\. Create target logo.img with img pack tool, the binary and related libs of m5_android_bootlogo_tool are copy from <android-source-dir>\/out\/host\/linux-x86",
                "char_count": 1161,
                "token_estimate": 291
            },
            {
                "title": "EB-0023",
                "rev_id": 12563,
                "heading_path": "Other Development > Custom Android Boot Logo",
                "chunk_index": 35,
                "content": "` $ .\/logo_img_packer -r logo logo.img`\n\n7\\. Flash boot logo with fastboot\n\n` $ adb root`\n` $ adb remount`\n` $ adb reboot fastboot`\n\nWait few seconds and check whether fastboot connected\n\n` $ fastboot device`\n` 1234567890      fastboot`\n` $ fastboot flashing unlock_critical`\n` $ fastboot flashing unlock`\n` $ fastboot flash logo logo.img`\n` $ fastboot reboot`",
                "char_count": 360,
                "token_estimate": 90
            },
            {
                "title": "EB-0023",
                "rev_id": 12563,
                "heading_path": "Other Development > Boot Sequence",
                "chunk_index": 36,
                "content": "![](m5_linux_boot_squence.png \"fig:m5_linux_boot_squence.png\")\n\n<!-- -->\n\nCheck bootloader loaded from SDcard or EMMC at the beginning of the console debug messages\n\n<!-- -->\n\n1\\. Rom load bootloader from SDcard (Linux log example)\n\n` ...`\n` `\n` BL2 Built : 15:21:42, Mar 26 2020. g12a g486bc38 - gongwei.chen@droid11-sz`\n` `\n` Board ID = 1`\n` Set cpu clk to 24M`\n` Set clk81 to 24M`\n` Use GP1_pll as DSU clk.`\n` DSU clk: 1200 Mhz`\n` CPU clk: 1200 MHz`\n` Set clk81 to 166.6M`\n` board id: 1`\n` `**`Load`` ``FIP`` ``HDR`` ``DDR`` ``from`` ``SD`**`, src: 0x00010200, des: 0xfffd0000, size: 0x00004000, part: 0`\n` fw parse done`\n` PIEI prepare done`\n` fastboot data verify`\n` result: 255`\n` Cfg max: 12, cur: 1. Board id: 255. Force loop cfg`\n` DDR4 probe`\n` `\n` ...`\n\n2\\. Rom load bootloader from EMMC(Android Log example)",
                "char_count": 819,
                "token_estimate": 205
            },
            {
                "title": "EB-0023",
                "rev_id": 12563,
                "heading_path": "Other Development > Boot Sequence",
                "chunk_index": 37,
                "content": "` ...`\n` `\n` Board ID = 1`\n` Set cpu clk to 24M`\n` Set clk81 to 24M`\n` Use GP1_pll as DSU clk.`\n` DSU clk: 1200 Mhz`\n` CPU clk: 1200 MHz`\n` Set clk81 to 166.6M`\n` eMMC boot @ 0`\n` sw8 s`\n` board id: 1`\n` `**`Load`` ``FIP`` ``HDR`` ``DDR`` ``from`` ``eMMC`**`, src: 0x00010200, des: 0xfffd0000, size: 0x00004000, part: 0`\n` fw parse done`\n` PIEI prepare done`\n` 00000000`\n` emmc switch 1 ok`\n` ddr saved addr:00016000`\n` Load ddr parameter from eMMC, src: 0x02c00000, des: 0xfffd0000, size: 0x00001000, part: 0`\n` 00000000`\n` `\n` ...`",
                "char_count": 533,
                "token_estimate": 134
            },
            {
                "title": "EB-0023",
                "rev_id": 12563,
                "heading_path": "Other Development > Erase EMMC for SDcard Bootup",
                "chunk_index": 38,
                "content": "There are four possible scenarios should be pay attention to, EMMC already flashed Android image, EMMC already flashed Linux image, boot process hangup in BL2 and EMMC empty.\n\n<!-- -->\n\n1\\. Bootable EMMC with Android image flashed\n\n<!-- -->\n\na). Using usb burning tool, unplug the download usb cable while the download process at **7% formatting**\n\n<!-- -->\n\n<img src=\"m5_android_format.png\" title=\"fig:m5_android_format.png\" width=\"800\" alt=\"m5_android_format.png\" \/>\n\nb). Using Android Fastboot tool, make sure the adb\/fastboot tools is work on your PC before doing this.\n\n`   root@dangku-desktop:\/tmp# `**`adb`` ``root`**\n`   adbd is already running as root`\n`   root@dangku-desktop:\/tmp# `**`adb`` ``remount`**\n`   remount succeeded`\n`   root@dangku-desktop:\/tmp# `**`adb`` ``shell`**\n`   bananapi_m5:\/ # `**`reboot`` ``fastboot`**\n\nWait a few seconds for board reboot to fastboot mode",
                "char_count": 889,
                "token_estimate": 223
            },
            {
                "title": "EB-0023",
                "rev_id": 12563,
                "heading_path": "Other Development > Erase EMMC for SDcard Bootup",
                "chunk_index": 39,
                "content": "`   root@dangku-desktop:\/tmp# `**`fastboot`` ``devices`**\n`   1234567890  fastboot`\n`   root@dangku-desktop:\/tmp# `**`fastboot`` ``flashing`` ``unlock_critical`**\n`   ...`\n`   OKAY [  0.044s]`\n`   finished. total time: 0.044s`\n`   root@dangku-desktop:\/tmp# `**`fastboot`` ``flashing`` ``unlock`**\n`   ...`\n`   OKAY [  0.047s]`\n`   finished. total time: 0.047s`\n`   root@dangku-desktop:\/tmp# `**`fastboot`` ``erase`` ``bootloader`**\n`   erasing 'bootloader'...`\n`   OKAY [  0.059s]`\n`   finished. total time: 0.059s`\n`   root@dangku-desktop:\/tmp# `**`fastboot`` ``erase`` ``bootloader-boot0`**\n`   erasing 'bootloader-boot0'...`\n`   OKAY [  0.036s]`\n`   finished. total time: 0.036s`\n`   root@dangku-desktop:\/tmp# `**`fastboot`` ``erase`` ``bootloader-boot1`**\n`   erasing 'bootloader-boot1'...`\n`   OKAY [  0.035s]`\n`   finished. total time: 0.035s`\n\nc). Using uboot command, connect a debug console cable and press ESC while power on to enter uboot command line",
                "char_count": 962,
                "token_estimate": 241
            },
            {
                "title": "EB-0023",
                "rev_id": 12563,
                "heading_path": "Other Development > Erase EMMC for SDcard Bootup",
                "chunk_index": 40,
                "content": "`   bananapi_m5_v1#`**`amlmmc`` ``erase`` ``1`**\n`   emmckey_is_protected(): protect`\n`   start = 0,end = 57343`\n`   start = 221184,end = 30535679`\n`   Erasing blocks 0 to 8192 @ boot0`\n`   start = 0,end = 8191`\n`   Erasing blocks 0 to 8192 @ boot1`\n`   start = 0,end = 8191`\n`   bananapi_m5_v1#`**`reset`**\n`   resetting ...`\n`   SM1:BL:511f6b:81ca2f;FEAT:A0F83180:20282000;POC:F;RCY:0;EMMC:0;READ:0;CHK:1F;READ:0;CHK:1F;READ:0;CHK;`\n\nThese two ways actually erase the bootloader part of EMMC android, After bootup from SDcard Linux, You'd better [format the whole EMMC by dd command](http:\/\/wiki.banana-pi.org\/Getting_Started_with_BPI-M5#Erase_Emmc_Android_by_dd_command).\n\n<!-- -->\n\nd). The simplest way is insert the SDcard with Linux image flashed before power on, the Android bootloader will check boot.ini file whether exist in SDcard vfat partition, so that the SDcard Linux will bootup. After bootup, you can [format the whole EMMC by dd command](http:\/\/wiki.banana-pi.org\/Getting_Started_with_BPI-M5#Erase_Emmc_Android_by_dd_command) and then flash the Linux image to EMMC.",
                "char_count": 1083,
                "token_estimate": 271
            },
            {
                "title": "EB-0023",
                "rev_id": 12563,
                "heading_path": "Other Development > Erase EMMC for SDcard Bootup",
                "chunk_index": 41,
                "content": "`   ...`\n`   BPI: try boot from sdcard`\n`   reading boot.ini`\n`   5699 bytes read in 3 ms (1.8 MiB\/s)`\n`   ## Executing script at 01b00000`\n`   ...`\n`   reading Image.gz`\n`   9143358 bytes read in 510 ms (17.1 MiB\/s)`\n`   reading meson64_bananapi_m5.dtb`\n`   70850 bytes read in 8 ms (8.4 MiB\/s)`\n`   reading uInitrd`\n`   11704481 bytes read in 655 ms (17 MiB\/s)`\n`   reading overlays\/i2c0.dtbo`\n`   223 bytes read in 6 ms (36.1 KiB\/s)`\n`   reading overlays\/spi0.dtbo`\n`   516 bytes read in 6 ms (84 KiB\/s)`\n`   reading overlays\/uart1.dtbo`\n`   225 bytes read in 5 ms (43.9 KiB\/s)`\n\n2\\. Bootable EMMC with Linux image flashed\n\n<!-- -->\n\na). Using uboot command, connect a debug console cable and press ESC while power on to enter uboot command line\n\n`   bananapi_m5# mmc erase 0 1000`\n\nb). Linux u-boot also check boot.ini file whether exist in SDcard vfat partition so that the SDcard Linux will bootup. After bootup, you can format the whole EMMC by dd command or flash the Linux image directly to EMMC.\n\n<!-- -->",
                "char_count": 1015,
                "token_estimate": 254
            },
            {
                "title": "EB-0023",
                "rev_id": 12563,
                "heading_path": "Other Development > Erase EMMC for SDcard Bootup",
                "chunk_index": 42,
                "content": "3\\. A extreme situation is bootloader or uboot corrupted, Rom load it from EMMC but hangup in u-boot or BL2, for example the boot process will hangup in BL2 of EMMC if dram init failed, The only way is format the EMMC with usb burning tool, or download the Android image completely and then try other ways to erase EMMC or flash Linux image to EMMC.\n\n<!-- -->\n\n4\\. Rom will try to load bootloader from SDcard directly if EMMC is empty.",
                "char_count": 435,
                "token_estimate": 109
            },
            {
                "title": "EB-0023",
                "rev_id": 12563,
                "heading_path": "Other Development > Erase Emmc Android by dd command",
                "chunk_index": 43,
                "content": "If the board is flashed android before, the whole emmc must be erased by these commands if you want bootup it with SDcard Linux image.\n\n` $ sudo dd if=\/dev\/zero of=\/dev\/mmcblk0boot0 bs=1M status=noxfer `\n` $ sudo dd if=\/dev\/zero of=\/dev\/mmcblk0boot1 bs=1M status=noxfer`\n` $ sudo dd if=\/dev\/zero of=\/dev\/mmcblk0 bs=1M status=noxfer `\n` $ sync`",
                "char_count": 343,
                "token_estimate": 86
            },
            {
                "title": "EB-0023",
                "rev_id": 12563,
                "heading_path": "Other Development > Wifi\/BT support",
                "chunk_index": 44,
                "content": "1\\. Android test and support.\n\n` rtl8723bu wifi\/bt(usb)`\n` rtl8188eu wifi(usb)`\n` `[`rtl8821cu`` ``wifi\/bt(usb)`](http:\/\/forum.banana-pi.org\/t\/banana-pi-wifi-bt-4-2-expansion-board-standard-usb-interface\/12162)\n` `[`rtl8822cs`` ``wifi\/bt(sdio\/uart)`](http:\/\/forum.banana-pi.org\/t\/bpi-m5-wifi-bt-board-sdio-interface-802-11-a-b-g-n-ac-2t2r-wifi-and-bluectooch-5-0\/11846)\n` rtl8814au wifi(usb), please get the `[`aircrack-ng`](https:\/\/github.com\/aircrack-ng\/rtl8814au)` driver and install.`\n\n**How to enable Android Wifi\/BT**\n\n<!-- -->\n\nUSB type: Plug-in the usb dongle to usb host port and reboot the system, After bootup, you can enable or disable wifi and bluetooth in Settings app.\n\nSDIO\/UART type: Connect the hardware module to 40pin header correctly and [configure the Android DTB overlay](http:\/\/wiki.banana-pi.org\/Getting_Started_with_BPI-M5#Android_DTB_overlay) to enable it.\n\n<!-- -->\n\n**Note**: Android is not support that ethernet and wifi are both connected at the same time, Ethernet have a higher prioprity than wifi, it means wifi can't connect network if ethernet already connected, and wifi will drop connection if ethernet cable plugin.\n\n<!-- -->\n\n2\\. Linux test and support.",
                "char_count": 1193,
                "token_estimate": 299
            },
            {
                "title": "EB-0023",
                "rev_id": 12563,
                "heading_path": "Other Development > Wifi\/BT support",
                "chunk_index": 45,
                "content": "` rtl8188eu wifi(usb)`\n` rtl8192eu wifi(usb)`\n` rtl8723bu wifi\/bt(usb)`\n` rtl8811au wifi(usb)`\n` rtl8812au wifi(usb)`\n` rtl8812bu wifi(usb)`\n` `[`rtl8821cu`` ``wifi\/bt(usb)`](http:\/\/forum.banana-pi.org\/t\/banana-pi-wifi-bt-4-2-expansion-board-standard-usb-interface\/12162)\n` `[`rtl8822cs`` ``wifi\/bt(sdio\/uart)`](http:\/\/forum.banana-pi.org\/t\/bpi-m5-wifi-bt-board-sdio-interface-802-11-a-b-g-n-ac-2t2r-wifi-and-bluectooch-5-0\/11846)\n\n**How to enable Linux Wifi**\n\n<!-- -->\n\nWifi module drivers are already prebuild in the release images.\n\n<!-- -->\n\nUSB type: Plug-in the usb dongle to usb host port and driver will be loaded automatically.\n\nSDIO\/UART type:\n\n1). Connect the hardware module to 40pin header correctly.\n\n2). Configure the [dtb overlay](http:\/\/wiki.banana-pi.org\/Getting_Started_with_BPI-M5#DTB_overlay)\n\n`  # Overlays to load`\n`  # Example combinations:`\n`  #   spi0 i2c0 i2c1 uart0`\n`  #   hktft32`\n`  #   hktft35`\n`  setenv overlays \"wifi_bt_rtl8822cs\"`\n\n3). Add the wifi module name to \/etc\/modules for loaded automatically next boot.\n\n<!-- -->\n\n**How to enable Linux Bluetooth**\n\n<!-- -->",
                "char_count": 1104,
                "token_estimate": 276
            },
            {
                "title": "EB-0023",
                "rev_id": 12563,
                "heading_path": "Other Development > Wifi\/BT support",
                "chunk_index": 46,
                "content": "1). Please download [rtk-linux-bt-driver](https:\/\/github.com\/Dangku\/rtk-linux-bt-driver) source code, build and install usb or uart rtk linux bluetooth drivers\/firmwares to your image.\n\n2). For USB type, plug-in the usb dongle to usb host port and driver will be loaded automatically.\n\n3). For UART type, Configure the dtb overlay as the same as wifi before install the bluetooth drivers\/firmwares. hci_uart driver will be loaded when rtk-hciuart.service start.",
                "char_count": 461,
                "token_estimate": 116
            },
            {
                "title": "EB-0023",
                "rev_id": 12563,
                "heading_path": "Other Development > Linux Server Image Network Configuration",
                "chunk_index": 47,
                "content": "[Netplan](https:\/\/netplan.io)\n\n<!-- -->\n\n**Linux Wifi STA mode**\n\n<!-- -->\n\nA sample wifi sta mode netplan configuration file, 01-wlan0-sta.yaml\n\n`network:`\n`  version: 2`\n`  renderer: networkd`\n`  wifis:`\n`    wlan0:`\n`      dhcp4: true`\n`      access-points:`\n`        \"bananapi\":`\n`           password: \"123456789\"`\n\n**Linux Wifi AP mode**\n\n<!-- -->\n\n1\\. Prepare the setup the [wifi adater](http:\/\/wiki.banana-pi.org\/Getting_Started_with_BPI-M5#Wifi.2FBT_support) correctly.\n\n<!-- -->\n\n2\\. Get the wifi adapter Band, Frequencies, Channel, HT Capability, VHT Capability or other properties\n\n`$ iw list`\n\n3\\. Manage wifi access point mode with [Netplan](http:\/\/wiki.banana-pi.org\/Getting_Started_with_BPI-M5#Linux_Server_Image_Network_Configuration) and Network-Manager.\n\n<!-- -->\n\nInstall NetworkManager because ap is only supported with NetworkManager renderer\n\n`$ sudo apt install network-manager`\n\nA sample 2.4G wifi ap mode netplan configuration file, 01-wlan0-ap-2.4g.yaml",
                "char_count": 979,
                "token_estimate": 245
            },
            {
                "title": "EB-0023",
                "rev_id": 12563,
                "heading_path": "Other Development > Linux Server Image Network Configuration",
                "chunk_index": 48,
                "content": "`network:`\n`version: 2`\n`renderer: NetworkManager`\n`wifis:`\n`  wlan0:`\n`    dhcp4: no`\n`    access-points:`\n`      \"bananapi\":`\n`         mode: ap`\n`         band: 2.4GHz`\n`         channel: 6`\n`         auth:`\n`           key-management: psk`\n`           password: \"123456789\"`\n\nA sample 5G wifi ap mode netplan configuration file, 01-wlan0-ap-5g.yaml\n\n`network:`\n`version: 2`\n`renderer: NetworkManager`\n`wifis:`\n`  wlan0:`\n`    dhcp4: no`\n`    access-points:`\n`      \"bananapi\":`\n`         mode: ap`\n`         band: 5GHz`\n`         channel: 36`\n`         auth:`\n`           key-management: psk`\n`           password: \"123456789\"`\n\n4\\. Manage wifi access point mode with [Netplan](http:\/\/wiki.banana-pi.org\/Getting_Started_with_BPI-M5#Linux_Server_Image_Network_Configuration) and Hostapd.\n\n<!-- -->\n\n1). Create a netplan configuration file, 01-wlan0-ap-hostapd.yaml\n\n`network:`\n`version: 2`\n`renderer: networkd`\n`ethernets:`\n`  wlan0:`\n`    dhcp4: no`\n`    addresses:`\n`      - 192.168.11.1\/24`\n\n2). Install hostapd\n\n`$ sudo apt install hostapd`\n\nCreate hostapd configuration file \/etc\/hostapd\/hostapd.conf, for example\n\n`interface=wlan0`\n`ssid=bananapi`\n\n`driver=nl80211`",
                "char_count": 1174,
                "token_estimate": 294
            },
            {
                "title": "EB-0023",
                "rev_id": 12563,
                "heading_path": "Other Development > Linux Server Image Network Configuration",
                "chunk_index": 49,
                "content": "`auth_algs=1`\n`wpa=2`\n`wpa_passphrase=123456789`\n`wpa_key_mgmt=WPA-PSK`\n`rsn_pairwise=CCMP`\n\n`#bridge=br0`\n`beacon_int=500`\n`#SSID not hidden`\n`ignore_broadcast_ssid=0`\n\n`hw_mode=a`\n`channel=36`\n`max_num_sta=8`\n\n`### IEEE 802.11n`\n`ieee80211n=1`\n`#require_vht=0`\n`ht_capab=[HT20][HT40+][SHORT-GI-20][SHORT-GI-40][SHORT-GI-80][DSSS_CCK-40]`\n\n`### IEEE 802.11ac`\n`ieee80211ac=1`\n`#require_vht=0`\n`#vht_capab=[MAX-MPDU-3895][SHORT-GI-80][SU-BEAMFORMEE]`\n`#vht_oper_chwidth=1`\n`#vht_oper_centr_freq_seg0_idx=42`\n\n`### WMM`\n`wmm_enabled=1`\n\n3). To support 80MHz channel width you need load driver with **rtw_vht_enable=2** option, Or you can create \/etc\/modprobe.d\/8822cs.conf with content\n\n`options 88x2cs rtw_vht_enable=2`\n\n4). Install and configure dhcp server service, use isc-dhcp-server for example\n\n`$ sudo apt install isc-dhcp-server`\n\nConfigure dhcp server interface in \/etc\/default\/isc-dhcp-server\n\n`# On what interfaces should the DHCP server (dhcpd) serve DHCP requests?`\n`#       Separate multiple interfaces with spaces, e.g. \"eth0 eth1\".`\n`INTERFACESv4=\"wlan0\"`\n\nConfigure dhcp subnet and dns in \/etc\/dhcp\/dhcpd.conf",
                "char_count": 1126,
                "token_estimate": 282
            },
            {
                "title": "EB-0023",
                "rev_id": 12563,
                "heading_path": "Other Development > Linux Server Image Network Configuration",
                "chunk_index": 50,
                "content": "`...`\n`option domain-name \"example.org\";`\n`option domain-name-servers 8.8.8.8, 114.114.114.114;`\n`...`\n`# No service will be given on this subnet, but declaring it helps the `\n`# DHCP server to understand the network topology.`\n`subnet 192.168.11.0 netmask 255.255.255.0 {`\n`  range dynamic-bootp 192.168.11.1 192.168.11.100;`\n`  option broadcast-address 192.168.11.255;`\n`  option routers 192.168.11.1;`\n`}`\n\n5). Start Service\n\n`$ sudo hostapd \/etc\/hostapd\/hostapd.conf -B`\n`$ sudo systemctl restart isc-dhcp-server`\n\n6). Routing configuration.\n\n`sysctl net.ipv4.ip_forward=1`\n`iptables -t nat -A POSTROUTING -s 192.168.11.0\/24 -o eth0 -j MASQUERADE`",
                "char_count": 651,
                "token_estimate": 163
            },
            {
                "title": "EB-0023",
                "rev_id": 12563,
                "heading_path": "Other Development > Cloud-init&Snap",
                "chunk_index": 51,
                "content": "Cloud-init and Snap service are enabled default, you can disable or remove them.\n\n<!-- -->\n\n1\\. disable or remove cloud-init\n\n` $ sudo touch \/etc\/cloud\/cloud-init.disabled`\n\nor\n\n` $ sudo apt purge cloud-init`\n\n2\\. disable or remove snap\n\n` $ sudo apt purge snapd`",
                "char_count": 263,
                "token_estimate": 66
            },
            {
                "title": "EB-0023",
                "rev_id": 12563,
                "heading_path": "Other Development > Enable rc-local",
                "chunk_index": 52,
                "content": "The systemd service rc-local.service already exists in release image, but there is no \\[Install\\] part in the unit file. As a result, Systemd is unable to enable it. First, we must update the file.\n\n` $ sudo nano \/lib\/systemd\/system\/rc-local.service`\n\n` [Unit]`\n` Description=\/etc\/rc.local Compatibility`\n` Documentation=man:systemd-rc-local-generator(8)`\n` ConditionFileIsExecutable=\/etc\/rc.local`\n` After=network.target`\n` `\n` [Service]`\n` Type=forking`\n` ExecStart=\/etc\/rc.local start`\n` TimeoutSec=0`\n` RemainAfterExit=yes`\n` GuessMainPID=no`\n` `\n` [Install]`\n` WantedBy=multi-user.target`\n` Alias=rc-local.service`\n\nCreate \/etc\/rc.local file.\n\n` sudo nano \/etc\/rc.local`\n\n` #!\/bin\/sh`\n` #`\n` # rc.local`\n` #`\n` # This script is executed at the end of each multiuser runlevel.`\n` # Make sure that the script will \"exit 0\" on success or any other`\n` # value on error.`\n` #`\n` # In order to enable or disable this script just change the execution`\n` # bits.`\n` #`\n` # By default this script does nothing.`\n` `\n` exit 0`\n\nAdd executable permission to \/etc\/rc.local\n\n` $ sudo chmod +x \/etc\/rc.local`\n\nEnable rc-local.service and reboot\n\n` $ sudo systemctl enable rc-local.service`\n` $ sudo reboot`",
                "char_count": 1197,
                "token_estimate": 300
            },
            {
                "title": "EB-0023",
                "rev_id": 12563,
                "heading_path": "Other Development > Enable sudo for Debian",
                "chunk_index": 53,
                "content": "The release Debian image do not install sudo default, with \"su -\" command, user can change to root. If you like sudo, you can install it.\n\n` $ su -`\n` Password:(enter bananapi)`\n` `\n` # apt install sudo`\n` # adduser pi sudo`\n\nThen please do logout and login again",
                "char_count": 263,
                "token_estimate": 66
            },
            {
                "title": "EB-0023",
                "rev_id": 12563,
                "heading_path": "Source code > Android",
                "chunk_index": 54,
                "content": "android 9 source code: <https:\/\/github.com\/BPI-SINOVOIP\/BPI-S905X3-Android9>\n\n[How to build the Android Source Code](http:\/\/wiki.banana-pi.org\/Getting_Started_with_BPI-M5#Build_Android_Source_Code)",
                "char_count": 197,
                "token_estimate": 50
            },
            {
                "title": "EB-0023",
                "rev_id": 12563,
                "heading_path": "Source code > Linux BSP source code",
                "chunk_index": 55,
                "content": "Linux BSP source code: <https:\/\/github.com\/BPI-SINOVOIP\/BPI-M5-bsp>\n\n[How to build the Linux BSP Source Code](http:\/\/wiki.banana-pi.org\/Getting_Started_with_BPI-M5#Build_Linux_Source_Code)",
                "char_count": 188,
                "token_estimate": 47
            },
            {
                "title": "EB-0023",
                "rev_id": 12563,
                "heading_path": "Resources",
                "chunk_index": 56,
                "content": "-   Because of the Google security update some of the old links will not work if the images you want to use cannot be downloaded from the [new link bpi-image Files](https:\/\/drive.google.com\/drive\/folders\/0B_YnvHgh2rwjVjNyS2pheEtWQlk?resourcekey=0-U4TI84zIBdId7bHHjf2qKA)\n-   All banana pi [docement(SCH file,DXF file,and doc)](https:\/\/drive.google.com\/drive\/folders\/0B4PAo2nW2Kfndjh6SW9MS2xKSWs?resourcekey=0-qXGFXKmd7AVy0S81OXM1RA&usp=sharing)\n-   [BPI-M5 schematic diagram](https:\/\/download.banana-pi.dev\/d\/3ebbfa04265d4dddb81b\/files\/?p=%2FDocuments%2FBPI-M5%2FBPI-M5-SCH-V10-Release.pdf)\n-   [BPI-M5 PCB DXF file](https:\/\/download.banana-pi.dev\/d\/3ebbfa04265d4dddb81b\/files\/?p=%2FDocuments%2FBPI-M5%2FBPI-M5-PCB-V10-DXF.rar)\n-   [Amlogic S905x3 datasheet](https:\/\/download.banana-pi.dev\/d\/3ebbfa04265d4dddb81b\/files\/?p=%2FDocuments%2FBPI-M5%2FS905X3_Public_Datasheet_Hardkernel.pdf)\n-   [Banana Pi BPI-M5 CE,FCC,RoHS Certification](http:\/\/wiki.banana-pi.org\/Product_certification)\n-   Install OpenGapps on Bananapi BPI-M5 Android 9.0:<https:\/\/www.youtube.com\/watch?v=fXOKmWfpqF8>\n-   BANANA PI BPI-M5 REVIEW & BENCHMARKS：https:\/\/bret.dk\/banana-pi-m5-review\/",
                "char_count": 1160,
                "token_estimate": 290
            },
            {
                "title": "EB-0023",
                "rev_id": 12563,
                "heading_path": "Android",
                "chunk_index": 57,
                "content": "[How to flash Android Image](http:\/\/wiki.banana-pi.org\/Getting_Started_with_BPI-M5#Android)\n\n-   2021-05-20 release, Android 9.0 with kernel 4.9.113, mbox variant ui image\n\nBaidu Cloud: <https:\/\/pan.baidu.com\/s\/1C-EiB4UcjuSYCfjFNlVL0g?pwd=8gqg> (pincode: 8gqg)\n\nGoogle Drive:<https:\/\/drive.google.com\/file\/d\/1SkFY9Zoc5NY_wNXkzw514-DnN_TBy0K6\/view?usp=sharing>\n\nMD5: dda75a075a5d7572756f57e4a256dffa\n\n-   2021-05-20 release, Android 9.0 with kernel 4.9.113, tablet variant ui image\n\nBaidu Cloud: <https:\/\/pan.baidu.com\/s\/1Z8KmmvvA8Bc-JwR4nbBOWA?pwd=dtk8> (pincode: dtk8)\n\nGoogle Drive:<https:\/\/drive.google.com\/file\/d\/1U3wLxouH2-IBBYQmHngWErLCwIJgLA7G\/view?usp=sharing>\n\nMD5: 27381d5e307034e5c5456b167f67ef75",
                "char_count": 707,
                "token_estimate": 177
            },
            {
                "title": "EB-0023",
                "rev_id": 12563,
                "heading_path": "Linux",
                "chunk_index": 58,
                "content": "[How to flash Linux Image](http:\/\/wiki.banana-pi.org\/Getting_Started_with_BPI-M5#Linux)",
                "char_count": 87,
                "token_estimate": 22
            },
            {
                "title": "EB-0023",
                "rev_id": 12563,
                "heading_path": "Linux > Raspbian",
                "chunk_index": 59,
                "content": "-   BPI-M5 BPI-M2 Pro new image:Raspbian image, 2022-4-09 update, Raspbian image for linux kernel 4.9 and 5.17. support 32bit and 64 bit,please choose the right image\n\ngoogle driver: <https:\/\/drive.google.com\/drive\/folders\/1oqamIMl5Kmb3LVYMPFw-1tilvwKQI6n->\n\ndiscuss on forum : <https:\/\/forum.banana-pi.org\/t\/bpi-m5-bpi-m2-pro-new-image-rasbian-image-2022-4-09-update\/13246>",
                "char_count": 374,
                "token_estimate": 94
            },
            {
                "title": "EB-0023",
                "rev_id": 12563,
                "heading_path": "Linux > Ubuntu",
                "chunk_index": 60,
                "content": "-   2021-06-21 release, Ubuntu Mate Desktop 20.04 with kernel 4.9.241\n\nBaidu Cloud: <https:\/\/pan.baidu.com\/s\/1o8itbnSMq3zmp28Wstn8iA?pwd=q3cx> (pincode: q3cx)\n\nGoogle drive:<https:\/\/drive.google.com\/file\/d\/1gpVaqs-iyDIglCuRr4h3G73Wlb81kFPr\/view?usp=sharing>\n\nMD5: 5c896c37eaa590cfbb8a6c7a5ba433a0\n\n-   2021-06-21 release, Ubuntu Server 20.04 with kernel 4.9.241\n\nBaidu Cloud: <https:\/\/pan.baidu.com\/s\/1IAugHTujzkTV9zfQoLw-iA?pwd=a37k> (pincode: a37k)\n\nGoogle Drive:<https:\/\/drive.google.com\/file\/d\/1ASyBYkQmv6RMg_NSf2KQTpd87PosyeW-\/view?usp=sharing>\n\nMD5: 5c896c37eaa590cfbb8a6c7a5ba433a0",
                "char_count": 588,
                "token_estimate": 147
            },
            {
                "title": "EB-0023",
                "rev_id": 12563,
                "heading_path": "Linux > Debian",
                "chunk_index": 61,
                "content": "-   2021-06-21 release, Debian Buster with kernel 4.9.241\n\nBaidu Cloud: <https:\/\/pan.baidu.com\/s\/1xqk9wJ7o7aNCqa8k8Y4zGw?pwd=u5pu> (pincode: u5pu)\n\nGoogle Drive:<https:\/\/drive.google.com\/file\/d\/1Ej-vYN98KZ0D17cjdtdZeDQjnkqEJ_wb\/view?usp=sharing>\n\nMD5: 4ea1d71a5ba1a8fa743e4c8abbe7569b",
                "char_count": 284,
                "token_estimate": 71
            },
            {
                "title": "EB-0023",
                "rev_id": 12563,
                "heading_path": "Third part image > EmuELEC",
                "chunk_index": 62,
                "content": "-   This is a porting of EmuELEC v4.5 for BPI-M5. I ported from odroid c4 official EmuELEC image. PS3 a XBOX ONE S gamepad controllers were tested and work fine.\n-   <https:\/\/forum.banana-pi.org\/t\/emuelec-for-bpi-m5\/12095>",
                "char_count": 222,
                "token_estimate": 56
            },
            {
                "title": "EB-0023",
                "rev_id": 12563,
                "heading_path": "Third part image > CoreELEC",
                "chunk_index": 63,
                "content": "-   CoreELEC 19.2\n\n[CoreELEC](https:\/\/coreelec.org\/) official support Bananapi M5 and M2Pro since 19.2-Matrix_rc1\n\nDownload: <https:\/\/coreelec.org\/#download>\n\nInstall Guide: <https:\/\/coreelec.org\/#install>\n\nSource Code: <https:\/\/github.com\/CoreELEC\/CoreELEC>\n\nhow to install: <https:\/\/wiki.coreelec.org\/coreelec:bpim2pro>",
                "char_count": 321,
                "token_estimate": 81
            },
            {
                "title": "EB-0023",
                "rev_id": 12563,
                "heading_path": "Third part image > Armbian",
                "chunk_index": 64,
                "content": "Armbian unstable legacy and current build for Bananapi M5 and M2Pro\n\nGoogle Drive: <https:\/\/drive.google.com\/drive\/folders\/1Cx_DA90Tbr8_M_8eQd-NwFUOp3UTwhYt>\n\nBaidu Cloud : <https:\/\/pan.baidu.com\/s\/15y4LNg4K-w0vrwMTcg5VGQ> Pincode: j9aj",
                "char_count": 236,
                "token_estimate": 59
            },
            {
                "title": "EB-0023",
                "rev_id": 12563,
                "heading_path": "Third part image > Volumio",
                "chunk_index": 65,
                "content": "Download:\n\nGoogle drive: <https:\/\/drive.google.com\/drive\/folders\/1B7nsy4Jxt2lBgXoA6XEnaamEQvZyHI8f>\n\nBaidu cloud : <https:\/\/pan.baidu.com\/s\/1mj9OC8P2VSI5GAMnIKGBqA> PinCode: mrrb\n\nUser Guide: <https:\/\/cdn.volumio.org\/wp-content\/uploads\/2019\/01\/Quick-Start-Guide-Volumio.pdf>\n\nSource code: <https:\/\/github.com\/Dangku\/volumio-build>\n\nPlatform prebuild package: <https:\/\/github.com\/Dangku\/volumio-platform-bananapi>\n\nDevelopment guilde: <https:\/\/volumio.github.io\/docs\/User_Manual\/Quick_Start_Guide.html>",
                "char_count": 501,
                "token_estimate": 126
            },
            {
                "title": "EB-0023",
                "rev_id": 12563,
                "heading_path": "Third part image > Odroid Android image",
                "chunk_index": 66,
                "content": "-   Base on Odroid android source code and build for bananapi m5\/m2pro\n\nDownload:\n\nGoogle Drive: <https:\/\/drive.google.com\/drive\/folders\/1u_CddlHvpAMu2VZJfIfUKTsFFyigCWig>\n\nInstall Guide: <https:\/\/forum.odroid.com\/viewtopic.php?f=204&t=38579>\n\n-   Odroid ubuntu IMG for BPI-M5：\n\n<https:\/\/forum.banana-pi.org\/t\/odroid-ubuntu-img-for-bpi-m5\/12169>",
                "char_count": 345,
                "token_estimate": 87
            },
            {
                "title": "EB-0023",
                "rev_id": 12563,
                "heading_path": "Third part image > Ubuntu Core 20",
                "chunk_index": 67,
                "content": "Ubuntu Core 20 demo image for bananapi m5\/m2pro.\n\nDownload:\n\nGoogle drive: <https:\/\/drive.google.com\/drive\/folders\/1TdAQ-HdggKrOPmWi0chpHDJY0SMWlUaC>\n\nBaidu cloud :\n\nInstall Guide: <https:\/\/ubuntu.com\/core\/docs\/uc20\/install>",
                "char_count": 224,
                "token_estimate": 56
            },
            {
                "title": "EB-0023",
                "rev_id": 12563,
                "heading_path": "Third part image > Archlinux",
                "chunk_index": 68,
                "content": "-   Archlinux xfce and minimal demo image, kernel 4.9, image build refer to [Archdroid](https:\/\/archdroid.org\/)\n\nlogin: alarm\/alarm, or root\/root\n\nDownload:\n\nGoogle drive:<https:\/\/drive.google.com\/drive\/folders\/1rSSNgbseY2mwTMIauGR1yrXN8RPKzuk6>\n\nBaidu link : <https:\/\/pan.baidu.com\/s\/1Ck_H51jPUyAv98o73I8oAw> Pincode: rbv2\n\ndiscuss on forum : <https:\/\/forum.banana-pi.org\/t\/bpi-m5-bpi-m2-pro-new-image-archlinux-2021-9-14\/12595>",
                "char_count": 429,
                "token_estimate": 108
            },
            {
                "title": "EB-0023",
                "rev_id": 12563,
                "heading_path": "Third part image > HuaWei OpenEuler",
                "chunk_index": 69,
                "content": "-   OpenEuler demo image, bpi kernel 4.9\n\nDownload:\n\nBaidu link ：https:\/\/pan.baidu.com\/s\/12b7q3y-m3YRyD7GwhKE0QA Pincode：lv50\n\nSIG gitee link : <https:\/\/gitee.com\/openeuler\/raspberrypi>\n\nDiscuss on fourm : <http:\/\/forum.banana-pi.org\/>",
                "char_count": 235,
                "token_estimate": 59
            },
            {
                "title": "EB-0023",
                "rev_id": 12563,
                "heading_path": "Third part image > Manjaro for BPI-M5",
                "chunk_index": 70,
                "content": "Manjaro porting for BPI-M5 from Official Image for Odroid C4, the ported image use kernel 5.10. If anyone is interested on give it a try, the download link is below.\n\n-   Download Link: <https:\/\/mega.nz\/folder\/BuZWkLhC#phC9KSsassB4bmkAegYykA>\n-   discuss on forum : <https:\/\/forum.banana-pi.org\/t\/manjaro-for-bpi-m5\/12726>",
                "char_count": 322,
                "token_estimate": 81
            },
            {
                "title": "EB-0023",
                "rev_id": 12563,
                "heading_path": "Third part image > Install Docker Engine",
                "chunk_index": 71,
                "content": "Install Docker Engine on Ubuntu 20.04 Server\n\n<!-- -->\n\n1\\. Set up the repository\n\n<!-- -->\n\nUpdate the apt package index and install packages to allow apt to use a repository over HTTPS:\n\n` $ sudo apt-get update`\n` $ sudo apt-get install apt-transport-https ca-certificates curl gnupg lsb-release`\n\nAdd Docker’s official GPG key:\n\n` $ curl -fsSL `[`https:\/\/download.docker.com\/linux\/ubuntu\/gpg`](https:\/\/download.docker.com\/linux\/ubuntu\/gpg)` | sudo gpg --dearmor -o \/usr\/share\/keyrings\/docker-archive-keyring.gpg`\n\nSet up the stable repository\n\n` $  echo \\`\n`    \"deb [arch=arm64 signed-by=\/usr\/share\/keyrings\/docker-archive-keyring.gpg] `[`https:\/\/download.docker.com\/linux\/ubuntu`](https:\/\/download.docker.com\/linux\/ubuntu)` \\`\n`    $(lsb_release -cs) stable\" | sudo tee \/etc\/apt\/sources.list.d\/docker.list > \/dev\/null`\n\n2\\. Install Docker Engine\n\n` $ sudo apt-get update`\n` $ sudo apt-get install docker-ce docker-ce-cli containerd.io`\n\n3\\. Verify the Docker Engine is installed correctly by running the hello-world image.\n\n` $ sudo docker run hello-world`\n\n![](docker-test.png \"fig:docker-test.png\")\n\nInstall docker with a simple command\n\n` $ curl -sSL get.docker.com | sudo sh`",
                "char_count": 1184,
                "token_estimate": 296
            },
            {
                "title": "EB-0023",
                "rev_id": 12563,
                "heading_path": "Third part image > Install Docker Engine",
                "chunk_index": 72,
                "content": "[Install Docker Engine](https:\/\/docs.docker.com\/engine\/install\/) on other Linux distributions",
                "char_count": 93,
                "token_estimate": 24
            },
            {
                "title": "EB-0023",
                "rev_id": 12563,
                "heading_path": "Package Includes",
                "chunk_index": 73,
                "content": "-   1 x BananaPi M5\n\n<img src=\"Banana_Pi_BPI-M5_4.jpg\" title=\"Banana_Pi_BPI-M5_4.jpg\" width=\"800\" alt=\"Banana_Pi_BPI-M5_4.jpg\" \/>\n==Keywords==\n\n-   BananaPi M5, BananaPi, Amlogic S905X3 Quad-Core Cortex-A55 (2.0xxGHz) Processor, Mali-G31 MP2 GPU with 4 x Execution Engines",
                "char_count": 272,
                "token_estimate": 68
            }
        ]
    }
}