项目作者: avafinger

项目描述 :
BananaPi M2 Zero - Ubuntu Focal Base Minimal Image (Experimental) - U-Boot 2017.09 / Kernel 4.18.y / Kernel 4.19.y / Kernel 4.20.y / Kernel 5.3.y / Kernel 5.6.y / Kernel 5.7.y / Kernel 5.11.y
高级语言: Shell
项目地址: git://github.com/avafinger/bananapi-zero-ubuntu-base-minimal.git


bananapi-zero-ubuntu-base-minimal

BananaPi M2 Zero - Ubuntu Xenial Base Minimal Image (Experimental) - U-Boot 2017.09 / Kernel 4.19.y (mainline - stable)

The Image comes with the minimum packages but you can install a full Desktop on top of this, see how at the end.

Introduction

This is a WiP, a bare minimum firmware image (CLI - command line interface) with basic configurations. Kernel used is Mainline kernel 4.17.y / 4.18.y / 4.20.y / 5.3.y / 5.6.y / 5.7.y / 5.11.y with some patches applied.
The idea behind this firmware is to have a very basic sd card image and add packages to your need.
Kernel 5.7.10 / 5.11.10 has support for OV5640.

Htop screenshot

Kernel history

  1. sudo dpkg -i linux-image-4.17.12-m2z_1.0-5.deb

and then:

  1. sync && sudo shutdown -h now

power cicle the board

  • v3 stable kernel 4.18.4 upgrade
  1. sudo dpkg -i linux-image-4.18.4-m2z_1.0-7.deb

and then:

  1. sync && sudo shutdown -h now

power cicle the board

  • v4 stable kernel 4.18.8 upgrade

Before upgrade, get rid of old kernel image not in use and check available space in /boot

  1. df -lh
  2. Filesystem Size Used Avail Use% Mounted on
  3. /dev/mmcblk0p2 15G 631M 13G 5% /
  4. devtmpfs 183M 0 183M 0% /dev
  5. tmpfs 248M 0 248M 0% /dev/shm
  6. tmpfs 248M 11M 237M 5% /run
  7. tmpfs 5.0M 0 5.0M 0% /run/lock
  8. tmpfs 248M 0 248M 0% /sys/fs/cgroup
  9. /dev/mmcblk0p1 93M 64M 23M 74% /boot

Make sure you have enough free space left, if not, issue in shell:

  1. sudo dpkg -l | grep linux-image
  2. ii linux-image-4.17.12-m2z 1.0-5 armhf Linux kernel 4.17.12-m2z
  3. ii linux-image-4.17.8-m2z 1.0-1 armhf Linux kernel 4.17.8-m2z
  4. ii linux-image-4.17.9-m2z 1.0-2 armhf Linux kernel 4.17.9-m2z
  5. ii linux-image-4.18.6-m2z-otg-gadget 1.0-11 armhf Linux kernel 4.18.6-m2z-otg-gadget

and check the current kernel you are running:

  1. uname -r
  2. 4.18.6-m2z-otg-gadget

so it is safe to get rid of unused kernel and free some space for the new one you want to install:

  1. sudo dpkg -r linux-image-4.17.12-m2z
  2. (Reading database ... 35990 files and directories currently installed.)
  3. Removing linux-image-4.17.12-m2z (1.0-5) ...

and now install the latest kernel:

  1. sudo dpkg -i linux-image-4.18.8-m2z-otg-gadget_1.0-12.deb
  2. Selecting previously unselected package linux-image-4.18.8-m2z-otg-gadget.
  3. (Reading database ... 33740 files and directories currently installed.)
  4. Preparing to unpack linux-image-4.18.8-m2z-otg-gadget_1.0-12.deb ...
  5. INFO: Updating Kernel 4.18.6-m2z-otg-gadget to 4.18.8-m2z-otg-gadget
  6. INFO: Updating...
  7. Unpacking linux-image-4.18.8-m2z-otg-gadget (1.0-12) ...
  8. Setting up linux-image-4.18.8-m2z-otg-gadget (1.0-12) ...
  9. OK: Kernel upgrade success! Please reboot with: sync && sudo reboot

and then:

  1. sync && sudo reboot

or better

  1. sync && sudo shutdown -h now

power cicle the board and check kernel version again:

  1. uname -r
  2. 4.18.8-m2z-otg-gadget
  • v5 mailine kernel 4.19.0 upgrade
  1. sudo dpkg -i linux-image-4.19.0-m2z-otg-gadget_1.0-13.deb
  2. sync && sudo reboot
  • v6 mailine kernel 4.19.1 (stable) upgrade
  1. sudo dpkg -i linux-image-4.19.1-m2z-otg-gadget_1.0-14.deb
  2. sync && sudo reboot
  • v7 mailine kernel 4.20.0-rc2 (mainline) upgrade
  1. sudo dpkg -i linux-image-4.20.0-rc2-m2z-otg-gadget_1.0-15.deb
  2. sync && sudo reboot

rebuild bpi-m2z_boot.scr with:

  1. edit bpi-m2-zero_boot.cmd and change:
  2. setenv extra "no_console_suspend consoleblank=0 drm_leak_fbdev_smem=1"
  3. setenv bootargs "console=ttyS0,115200 earlyprintk rootfstype=ext4 root=/dev/mmcblk0p2 rw rootwait fsck.repair=${fsck.repair} panic=10 ${extra}"
  4. bootz ${kernel_addr} ${ramdisk_addr}:${ramdisk_size} ${dtb_addr}

rebuild with:

  1. sudo mkimage -C none -A arm -T script -d bpi-m2-zero_boot.cmd bpi-m2-zero_boot.scr
  • v8 mailine kernel 4.20.0-rc3 (mainline) upgrade
  1. sudo dpkg -i linux-image-4.20.0-rc3-m2z-otg-gadget_1.0-16.deb
  2. sync && sudo reboot
  • v9 mailine kernel 4.19.5 (stable) upgrade
  1. sudo dpkg -i linux-image-4.19.5-m2z-otg-gadget_1.0-19.deb
  2. sync && sudo reboot
  • v10 mailine kernel 4.19.6 (stable) upgrade

deb file in Release v10, grab the file with:

  1. wget https://github.com/avafinger/bananapi-zero-ubuntu-base-minimal/releases/download/v10/linux-image-4.19.6-m2z-otg-gadget_1.0-20.deb
  2. sudo dpkg -i linux-image-4.19.6-m2z-otg-gadget_1.0-20.deb
  3. sync && sudo reboot
  • v11 mailine kernel 4.19.12 (stable) upgrade

deb file in Release v11, grab the file with:

  1. wget https://github.com/avafinger/bananapi-zero-ubuntu-base-minimal/releases/download/v11/linux-image-4.19.12-m2z-otg-gadget_1.0-21.deb
  2. sudo dpkg -i linux-image-4.19.12-m2z-otg-gadget_1.0-21.deb
  3. sync && sudo reboot
  • v12 mailine kernel 4.20.0 (experimental) upgrade

deb file in Release v12, grab the file with:

  1. wget https://github.com/avafinger/bananapi-zero-ubuntu-base-minimal/releases/download/v12/linux-image-4.20.0-m2z-otg-gadget_1.0-22.deb
  2. sudo dpkg -i linux-image-4.20.0-m2z-otg-gadget_1.0-22.deb
  3. sync && sudo reboot
  • v13 mailine kernel 4.20.17-m2z (experimental) upgrade

    1. https://github.com/avafinger/bananapi-zero-ubuntu-base-minimal/releases/tag/v13

Mainline stable Kernel 4.20.17 (Kodi)

This kernel is provided as a POC where you can build Kodi

Attention

The mali blobs used for the mali GBM are not compatible with the mali FBDEV
You are required to update the mali with the wayland mali to be able to use GBM

Mainline stable kernel 4.20.17 ready to build Kodi:

  • Cedrus (VPU)
  • Mali (GBM)
  • hdmi-sound
  • wifi + eth
  • tools to test cedrus and gbm (pre-built)

To test mali GBM you can run kmscube
To test cedrus you can run v4l2-request-test

VPU test

Testing cedrus on mainline is quite simple, run the tests below:

  1. cd v4l2-request-test
  2. sudo ./v4l2-request-test -l -f 25 -P ed-mpeg2

or

  1. sudo ./v4l2-request-test -l -f 25 -P caminandes-h265

Mali GBM test

To test mali GBM you need to setup the mali blobs provided by https://github.com/bootlin/mali-blobs

  1. sudo ./kmscube

When you run the kmscube you will see a cube spinning

hdmi-sound

To be able to acess and output sound to HDMI you need to update the file /etc/asound.conf

  1. pcm.!default {
  2. type plug
  3. slave {
  4. pcm "hw:1,0"
  5. }
  6. }
  7. ctl.!default {
  8. type hw
  9. card 1
  10. }

Reboot and test the HDMI sound:

  1. sudo aplay /usr/share/sounds/alsa/Front_Left.wav

Check for the codecs:

cat /proc/asound/cards

  1. 0 [Codec ]: H3_Audio_Codec - H3 Audio Codec
  2. H3 Audio Codec
  3. 1 [allwinnerhdmi ]: allwinner_hdmi - allwinner,hdmi
  4. allwinner,hdmi
  • v37 mailine kernel 5.7.6 (experimental) Ubuntu 19.10 EOAN

    • Add support for Camera.

    • CPU Temp throtling at 80C

Instructions:
https://github.com/avafinger/bananapi-zero-ubuntu-base-minimal/releases/tag/v3.7

  • v35 mailine kernel 5.6.13-server (experimental) Ubuntu 19.10 EOAN

Server edition with no HW acceleration ideal for embedded systems where you can build your server applications, kernels or install a small Desktop like LXDE.

Small footprint.

Fix: CPU Temp, DVFS, BT

  • Instructions:

https://github.com/avafinger/bananapi-zero-ubuntu-base-minimal/releases/tag/v3.6

  • v34 mailine kernel 5.6.5-server (experimental) Ubuntu 19.10 EOAN

This is the ideal server like kernel where you can build your applications, kernels or install a small Desktop.
There is no HW accelerations but it is with a small footprint.

  • Instructions:

https://github.com/avafinger/bananapi-zero-ubuntu-base-minimal/releases/tag/v3.5

  • v33 mailine kernel 5.6.5-r1 (experimental) Ubuntu 19.10 EOAN with GBM

This is kernel 5.6.5 with mali GBM instead of panfrost

https://github.com/avafinger/bananapi-zero-ubuntu-base-minimal/releases/tag/v3.3

How to install the new kernel on EOAN only:

  • download the deb file linux-image-5.6.5-r1_1.0-42.deb
  • run in shell: sudo dpkg -i linux-image-5.6.5-r1_1.0-42.deb

you get similar output:

  1. ubuntu@bpi-m2z:~$ sudo dpkg -i linux-image-5.6.5-r1_1.0-42.deb
  2. Selecting previously unselected package linux-image-5.6.5-r1.
  3. (Reading database ... 56892 files and directories currently installed.)
  4. Preparing to unpack linux-image-5.6.5-r1_1.0-42.deb ...
  5. INFO: Updating Kernel 5.6.3 to 5.6.5-r1
  6. INFO: Updating...
  7. Unpacking linux-image-5.6.5-r1 (1.0-42) ...
  8. Setting up linux-image-5.6.5-r1 (1.0-42) ...
  9. OK: Kernel upgrade success! Please reboot with: sync && sudo reboot
  10. ubuntu@bpi-m2z:~$ sync
  11. ubuntu@bpi-m2z:~$ sudo reboot
  12. Connection to 192.168.254.16 closed by remote host.
  13. Connection to 192.168.254.16 closed.
  14. alex@svn:/arm/ubuntu/friendlywrt-rk3328$ ssh ubuntu@192.168.254.16
  15. ubuntu@192.168.254.16's password:
  16. Welcome to Ubuntu 19.10 (GNU/Linux 5.6.5-r1 armv7l)
  17. * Documentation: https://help.ubuntu.com
  18. * Management: https://landscape.canonical.com
  19. * Support: https://ubuntu.com/advantage
  20. Last login: Mon Apr 20 23:04:40 2020 from 192.168.254.253
  21. ubuntu@bpi-m2z:~$

Checking for the Bluetooth:

  1. ubuntu@bpi-m2z:~$ hciconfig
  2. hci0: Type: Primary Bus: UART
  3. BD Address: CC:B8:A8:A9:E5:67 ACL MTU: 1021:8 SCO MTU: 64:1
  4. UP RUNNING PSCAN
  5. RX bytes:2184 acl:0 sco:0 events:214 errors:0
  6. TX bytes:36815 acl:0 sco:0 commands:215 errors:0
  7. ubuntu@bpi-m2z:~$
  • v32 mailine kernel 5.6.0-rc5 (experimental) Ubuntu 19.10 EOAN

https://github.com/avafinger/bananapi-zero-ubuntu-base-minimal/releases/tag/v3.2

Testing HDMI sound output:

  • add user to audio group (no need for sudo while playing sound)

    sudo usermod -a -G audio ubuntu

  • play some sounds

  1. aplay -D pulse /usr/share/sounds/alsa/Front_Right.wav (sound output via pulse)
  2. aplay -D sysdefault:CARD=1 /usr/share/sounds/alsa/Front_Right.wav (HDMI sound output)
  3. aplay -D sysdefault:CARD=0 /usr/share/sounds/alsa/Front_Right.wav (sound output to analog)
  • v31 mailine kernel 5.6.0-rc4 (experimental) Ubuntu 19.10 EOAN

https://github.com/avafinger/bananapi-zero-ubuntu-base-minimal/releases/tag/v3.1

  • Lima support (for testing)

  • v30 mailine kernel 5.6.0-rc3 (experimental) Ubuntu 19.10 EOAN

  • Lima support (testing)

Kernel Image: https://github.com/avafinger/bananapi-zero-ubuntu-base-minimal/releases/tag/v3.0

  • v29 mailine kernel 5.3.18 (experimental) Ubuntu 19.10 EOAN

Kernel Image: https://github.com/avafinger/bananapi-zero-ubuntu-base-minimal/releases/tag/v2.9

  • v25 mailine kernel 5.3.7 fbdev (experimental) Ubuntu 19.10 EOAN

Os Image: https://github.com/avafinger/bananapi-zero-ubuntu-base-minimal/releases/tag/v2.5

Mainline stable kernel 5.3.7 with:

  • Small footprint (hmm, ok, not so small, lots of packages installed)
  • HDMI
  • sound-hdmi
  • Bluetooth (to be tested)
  • cedrus
  • Wifi
  • Ethernet 100 MBits
  • mali fbdev
  • v24 mailine kernel 5.3.5 (experimental) Ubuntu 19.10 EOAN

OS Image: https://github.com/avafinger/bananapi-zero-ubuntu-base-minimal/releases/tag/v2.4

Mainline stable kernel 5.3.5 with:

  • Small footprint
  • HDMI
  • sound-hdmi
  • Bluetooth (to be tested)
  • cedrus
  • Wifi
  • Ethernet 100 MBits
  • v21 mailine kernel 5.3.4 (experimental) upgrade

deb package: https://github.com/avafinger/bananapi-zero-ubuntu-base-minimal/releases/tag/v2.3

Mainline stable kernel 5.3.4 with:

  • HDMI
  • sound-hdmi
  • Bluetooth (issue with sound)
  • cedrus

  • v20 mailine kernel 5.3.1 (experimental) upgrade and fix

deb package: https://github.com/avafinger/bananapi-zero-ubuntu-base-minimal/releases/tag/v2.2

Mainline stable kernel 5.3.1 with:

  • HDMI (fix)
  • sound-hdmi
  • Bluetooth (fix)
  • cedrus

Attention

If you aleady upgraded to the buggy kernel 5.3.1 you need to downgrade or create a clean installation.

  • v19 mailine kernel 5.3.1 (experimental) upgrade

deb package: https://github.com/avafinger/bananapi-zero-ubuntu-base-minimal/releases/tag/v2.1

  • v18 mailine kernel 5.3.0-rc7 (experimental) upgrade

    deb package:

    1. https://github.com/avafinger/bananapi-zero-ubuntu-base-minimal/releases/tag/v1.8

Mainline Kernel 5.3.0-rc7

This is mainline Kernel 5.3.0-rc7.

Bootlo: https://gist.github.com/avafinger/9f6bee00e17b1f1d5d120e8b048eb40f
Install the new Kernel (tested): https://github.com/avafinger/bananapi-zero-ubuntu-base-minimal/releases/tag/v1.8

Install instructions:

  1. sudo dpkg -i linux-image-5.3.0-rc7_1.0-27.deb

What’s new with this Image v18 (mainline experimental)

  • 5.3.0-rc7 (minor update)
  • mali gbm (GPU)
  • cedrus (VPU hw decoding)
  • Wifi + eth
  • hdmi-sound
  • DVFS
  • thermal throttling
  • Device Tree Overlays support

Mainline Kernel 5.3.0-rc6

This is mainline Kernel 5.3.0-rc6.

v17 mailine kernel 5.3.0-rc6 (experimental) upgrade

deb package (BROKEN - DON’T USE):

Install the new Kernel: https://github.com/avafinger/bananapi-zero-ubuntu-base-minimal/releases/tag/v1.7

What’s new with this Image v17 (mainline experimental)

  • 5.3.0-rc6 ()
  • mali gbm (GPU)
  • cedrus (VPU hw decoding)
  • Wifi + eth
  • hdmi-sound
  • DVFS
  • thermal throttling
  • Device Tree Overlays support
  • v16 mailine kernel 5.3.0-rc3 (experimental) upgrade

    deb package:

    1. https://github.com/avafinger/bananapi-zero-ubuntu-base-minimal/releases/tag/v1.7

Mainline Kernel 5.3.0-rc3 (Kodi)

This is mainline Kernel 5.3.0-rc3 ready to build and run Kodi.

Bootlog: https://gist.github.com/avafinger/5a172aaac7a97d6ee186498cd74896cf

Install the new Kernel: https://github.com/avafinger/bananapi-zero-ubuntu-base-minimal/releases/tag/v16

What’s new with this Image v16 (mainline experimental)

  • 5.3.0-rc3 (for building Kodi)
  • mali gbm (GPU)
  • cedrus (VPU hw decoding)
  • Wifi + eth
  • hdmi-sound
  • DVFS
  • thermal throttling

What’s new with this Image v14 (mainline experimental)

  • 4.20.17 (for building Kodi)
  • mali gbm (GPU)
  • cedrus (VPU hw decoding)
  • Wifi + eth
  • hdmi-sound

What’s new with this Image v13 (mainline experimental)

  • 4.20.17-m2z (minimum kernel)

What’s new with this Image v12 (mainline experimental)

  • 4.20.0 (for testing)
  • mali (experimental)

What’s new with this Image v11 (LTS experimental)

  • 4.19.12 (for testing)
  • mali (experimental)

What’s new with this Image v10 (LTS experimental)

  • 4.19.6 (for testing)
  • mali (experimental)

What’s new with this Image v9 (LTS experimental)

  • mali fix (mali is back and working!)

What’s new with this Image v8 (experimental)

Image upgraded to Kernel 4.20-rc3

  • operating-points-v2 (120 Mhz ~ 1008 MHz) - with sane CPU Temp. ( ~ 55.0 C )
  • attempt to make mali work
  • Bluetooth (working) - See Instructions on Bluetooth below

What’s new with this Image v7 (experimental)

Image upgraded to Kernel 4.20-rc2

  • operating-points-v2 (240 Mhz ~ 1008 MHz) - testing only
  • attempt to make mali work
  • Bluetooth (need to load hci_uart module and install Bluez tools)

What’s new with this Image v6 (experimental)

Image upgraded to Kernel 4.19.1

  • operating-points-v2 (480 Mhz ~ 1008 MHz)
  • mali removed

What’s new with this Image v5 (experimental)

Image upgraded to Kernel 4.19.0

  1. * operating-points-v2 working as it should (next series will be 4.19.y)
  2. * new devfreq temp
  3. * cma memory-reservation for mali (need a revision)

Issue:

  1. * mali does not work, freezes kernel completely (don't use it)

What’s new with this Image v4

Image updated to Kernel 4.18.8 and has the following working:

  1. * operating-points-v2 working as it should (next series will be 4.19.y)
  2. * attempt to get bt working

Configuring ZRAM for the memory hungry stuffs

  1. sudo apt-get install zram-config
  2. sync && sudo reboot

On next reboot you will see if ZRAM is active:

  1. ubuntu@bpi-m2z:~$ ls /dev/zr*
  2. /dev/zram0 /dev/zram1 /dev/zram2 /dev/zram3

What’s new with this Image v3

Image updated to Kernel 4.18.4 and has the following working:

  1. * framebuffer with 1920x1080
  2. * mali (3D GPU) - fbdev only (Thanks to Maxime Ripard from bootlin)
  3. * eth0 up
  4. * wlan0 up
  5. * i2c enabled ( /dev/i2c-0 and /dev/i2c-1 )
  6. * spi enabled ( /dev/spidev0.0 )
  7. * bare minimum image. (**30 Mbytes of RAM used**)
  8. * new rootfs from scratch
  9. * ssh enabled
  10. * new operating-points-v2 instead of old one (experimental)

What’s new with this Image v2

Image updated to Kernel 4.17.17 and has the following working:

  1. * framebuffer with 1920x1080
  2. * mali (3D GPU) - fbdev only (Thanks to Maxime Ripard from bootlin)
  3. * eth0 up
  4. * wlan0 up
  5. * i2c enabled ( /dev/i2c-0 and /dev/i2c-1 )
  6. * spi enabled ( /dev/spidev0.0 )
  7. * bare minimum image. (**30 Mbytes of RAM used**)
  8. * new rootfs from scratch
  9. * ssh enabled
  10. * ZRAM / TUN modules enabled (but not configured)

Known issues:

  1. * Hit ENTER twice to see the login prompt if you get a blank screen
  2. * Boot with your monitor/display turned ON before you power the board
  3. * HDMI driver is under development, Jernej (the dev. person behind the driver)
  4. has given some tips to fix this issue.
  5. * Debian Bug report logs - #892229
  6. wireless-regdb: Missing support for kernel direct loading
  7. This seems to affect ubuntu 16.04 and 18.04.

To do before first boot:

  • edit /etc/network/interfaces and add your SSID and password in order to use connect to your Wifi

Generate wpa-psk for Wifi AP, you can use wpa_passphrase from your linux box

Generate like so:

  1. wpa_passphrase SSID 01234567890

where SSID is your Wifi SSID and 01234567890 your password

Edit and change accordingly:

  1. iface wlan0 inet dhcp
  2. wpa-ssid SSID
  3. #psk="1234567890"
  4. wpa-psk 93c8ff514dc02ae4944f89424d7b0d94f42ab3245cc413755ab655b8e344a2d9
  5. dns-nameservers 8.8.8.8 8.8.4.4
  6. wireless-power off

To do after first boot (Advanced users):

  1. * build regulatory.db to your country for the wifi to get full power
  2. * re-build wireless-regdb

Tips

  • Board runs at ~60ºC when idle with HDMI, ~40ºC without HDMI enabled (without heatsink)

  • issue in shell on first login: sudo apt-get update && sudo apt-get upgrade

    It is always a good idea to issue a: sudo shutdown -h now (and wait for the Red led Heartbeat to stop and only then unplug power)

  • If you have trouble with Wifi, i suggest read Debian Bug report logs - #892229

    Regulatory.db needs to be generated somehow, until wireless-regdb is updated or rebuild it yourself.

Basic instructions to flash firmware to SD CARD

  • You need a linux box
  • You need a good SD CARD reader/writer (External SD CARD Reader are known to not be reliable)
    Read some heated up discussion on Armbian’s forum about how to write to SD CARD
  • Get a trusted brand for the SD CARD

  • insert your SD CARD into SDHC reader/writer:

    check which device is your SD CARD, type in shell:

    1. dmesg | tail

An output of USB SDHC reader/writer card

  1. [47484.133274] sdc: sdc1 sdc2
  2. [47488.681276] EXT4-fs (sdc1): mounted filesystem with ordered data mode. Opts: (null)
  3. [47488.955328] EXT4-fs (sdc2): mounted filesystem without journal. Opts: (null)

An output of internal SDHC reader/writer card

  1. [ 2024.720656] mmc0: new SDHC card at address 59b4
  2. [ 2024.759743] mmcblk0: mmc0:59b4 SDU1 7.52 GiB
  3. [ 2024.759889] mmcblk0: p1 p2
  4. [ 2025.140282] EXT4-fs (mmcblk0p1): mounted filesystem with ordered data mode
  5. [ 2025.222858] EXT4-fs (mmcblk0p2): mounted filesystem without journal

Your device will be in the form of: /dev/sdX where X is your sd card letter (b,c,d…) or /dev/mmcblkY where Y is your device number (0,1,2…)

  • format the sd card:

    in the example above, our sd card device is sdc (could be sdb)

    1. sudo ./format_sd_mainline.sh /dev/sdc

    or /dev/mmcblk0 if you have SDHC reader on your laptop for example

    1. sudo ./format_sd_mainline.sh /dev/mmcblk0

Image v2 (Kernel 4.17.4)

  • flash Image to sd card (ssh enabled):

    1. cat rootfs_kernel_4.17.y.tar.gz.* > rootfs_kernel_4.17.y.tar.gz
    2. sudo ./flash_sdcard_m2z_v2.sh /dev/sdc

Image v1 (Kernel 4.15.y)

  • flash Image to sd card:

    1. sudo ./flash_sdcard_m2z.sh /dev/sdc
  • flash Image with ssh enabled to sd card:

    1. sudo ./flash_sdcard_m2z_ssh.sh
  • Booting first time

Before you boot, configure your wifi

Connecting to AP via Wifi

Wifi use wpa_supplicant to connect to AP.
Before you boot the Image, please edit /etc/network/interfaces

  1. iface wlan0 inet dhcp
  2. wpa-ssid SSID <== change this
  3. #psk="1234567890"
  4. wpa-psk 93c8ff514dc02ae4944f89424d7b0d94f42ab3245cc413755ab655b8e344a2d9 <== change this
  5. dns-nameservers 8.8.8.8 8.8.4.4
  6. wireless-power off
  • Login first time

You can login with

user: ubuntu

pasw: ubuntu

via serial debug or use ssh to connect remotely from your computer.

Conecting via ssh or putty:
ssh ubuntu@IP where IP is the IP assigned to the board.

First thing you should do on the first login (for v1 only)

  • fix mv segment fault

    sudo apt-get install —reinstall coreutils

  • fix missing service

    sudo apt-get install —reinstall systemd

  • disable power management

    sudo iwconfig wlan0 power off

or in /etc/network/interfaces add this entry:

  1. allow-hotplug wlan0
  2. iface wlan0 inet dhcp
  3. wpa-ssid your_ssid
  4. #psk="12345678901234567890"
  5. wpa-psk ababaf514dc02ae4944f89424d7b0d94f42ab3245cc413755ab655b8e344a2d9
  6. dns-nameservers 8.8.8.8 8.8.4.4
  7. wireless-power off <==== add this

reboot now:

  1. sudo reboot

Mali benchmark

You can benchmark mali for fbdev, type in shell:

  1. cd /home/ubuntu/mali/mali-fbdev/build/src
  2. sudo ./glmark2-es2-fbdev

You can add FRONTBUFFER_LOCKING=1 to prevent tearing before running benchmark:

  1. export FRONTBUFFER_LOCKING=1

[mali bechmark screenshot 1]

[mali bechmark screenshot 2]

[mali bechmark screenshot 3]

Installing a Full Desktop environment

After you setup a connection to internet, you can install a Desktop environment

  1. sudo apt-get update
  2. sudo apt-get dist-upgrade
  3. sync
  4. sudo apt-get install lxde

Wait until it finished and issue:

  1. sync
  2. sudo shutdown -h now (wait for the heartbeat to stop and cut power)

Reboot and you have LXDE Desktop

Bluetooth

The latest Kernel 4.20.0-rc3 upgrade has Bluetooth working.
To be able to use bluetooth follow this instructions (it should be automated via systemd service but for the sake of
documentation we do it manually) :

  • Install packages

    1. sudo apt-get install rfkill bluez bluetooth-touch
  • Load hci_uart kernel module

Edit the file /etc/modules and add bluetooth & hci_uart & rfcomm:

  1. # /etc/modules: kernel modules to load at boot time.
  2. #
  3. # This file contains the names of kernel modules that should be loaded
  4. # at boot time, one per line. Lines beginning with "#" are ignored.
  5. #xradio_wlan
  6. g_serial
  7. #xradio_wlan
  8. brcmfmac
  9. bluetooth
  10. hci_uart
  11. rfcomm
  • Boot with the new /etc/modules

  • in shell type:

    1. sudo su (to become root)
    2. brcm_patchram_plus -d --patchram /lib/firmware/ap6212/bcm43438a1.hcd --enable_hci --bd_addr 11:22:33:44:55:66 --no2bytes --tosleep 5000 /dev/ttyS1

wait untill it finish with “Done setting line discpline” (CTRL+C to end) and then:

  1. hciattach /dev/ttyS1 any

We should have now our Bluetooth ready, you can check:

  1. hcitool devi
  2. Devices:
  3. hci0 11:22:33:44:55:66

Bluetooth - How to pair a Bluetooth Phone with command line

We are going to test our bluetooth setup conecting our board to a Phone (pair with a Phone).
In a Desktop environment we have Blueman which would do it automagically but installing it would require a lot of packages
and our goal here is to have the minimum installed otherwise you go with a complete Desktop.

For this, it is necessary to install pulseaudio or you will not be able to connect to a phone.
(i think for keyboard or mouse is ok without pulse).

In order to have pulseaudio working we need to install ALSA and make it work.

  1. sudo apt-get install alsa-utils alsamixer libasound2 alsa-base

Edit (or create) a file /etc/asound.conf with the content:

  1. pcm.!default {
  2. type hw
  3. card 0
  4. device 0
  5. }
  6. ctl.!default {
  7. type hw
  8. card 0
  9. }

sync && reboot.

Check device:

  1. aplay -l
  2. **** List of PLAYBACK Hardware Devices ****
  3. card 0: Codec [H3 Audio Codec], device 0: CDC PCM Codec-0 []
  4. Subdevices: 1/1
  5. Subdevice #0: subdevice #0

We can check if ALSA is working, type in shell:

  1. alsamixer
  2. and un-mute and turn up the Line up and everything

and review:

  1. sudo amixer
  2. Simple mixer control 'Line In',0
  3. Capabilities: pvolume pvolume-joined pswitch cswitch
  4. Playback channels: Front Left - Front Right
  5. Capture channels: Front Left - Front Right
  6. Limits: Playback 0 - 7
  7. Front Left: Playback 5 [71%] [3.00dB] [off] Capture [off]
  8. Front Right: Playback 5 [71%] [3.00dB] [off] Capture [off]
  9. Simple mixer control 'Line Out',0
  10. Capabilities: pvolume pvolume-joined pswitch
  11. Playback channels: Front Left - Front Right
  12. Limits: Playback 0 - 31
  13. Mono:
  14. Front Left: Playback 25 [81%] [-9.00dB] [on]
  15. Front Right: Playback 25 [81%] [-9.00dB] [on]
  16. Simple mixer control 'Line Out Source',0
  17. Capabilities: penum
  18. Items: 'Stereo' 'Mono Differential'
  19. Item0: 'Stereo'
  20. Item1: 'Stereo'
  21. Simple mixer control 'Mic1',0
  22. Capabilities: pvolume pvolume-joined pswitch cswitch
  23. Playback channels: Front Left - Front Right
  24. Capture channels: Front Left - Front Right
  25. Limits: Playback 0 - 7
  26. Front Left: Playback 3 [43%] [0.00dB] [off] Capture [off]
  27. Front Right: Playback 3 [43%] [0.00dB] [off] Capture [off]
  28. Simple mixer control 'Mic1 Boost',0
  29. Capabilities: volume volume-joined
  30. Playback channels: Mono
  31. Capture channels: Mono
  32. Limits: 0 - 7
  33. Mono: 4 [57%] [33.00dB]
  34. Simple mixer control 'Mic2',0
  35. Capabilities: pvolume pvolume-joined pswitch cswitch
  36. Playback channels: Front Left - Front Right
  37. Capture channels: Front Left - Front Right
  38. Limits: Playback 0 - 7
  39. Front Left: Playback 3 [43%] [0.00dB] [off] Capture [off]
  40. Front Right: Playback 3 [43%] [0.00dB] [off] Capture [off]
  41. Simple mixer control 'Mic2 Boost',0
  42. Capabilities: volume volume-joined
  43. Playback channels: Mono
  44. Capture channels: Mono
  45. Limits: 0 - 7
  46. Mono: 4 [57%] [33.00dB]
  47. Simple mixer control 'Mixer',0
  48. Capabilities: cswitch
  49. Capture channels: Front Left - Front Right
  50. Front Left: Capture [off]
  51. Front Right: Capture [off]
  52. Simple mixer control 'Mixer Reversed',0
  53. Capabilities: cswitch
  54. Capture channels: Front Left - Front Right
  55. Front Left: Capture [off]
  56. Front Right: Capture [off]
  57. Simple mixer control 'ADC Gain',0
  58. Capabilities: cvolume cvolume-joined
  59. Capture channels: Mono
  60. Limits: Capture 0 - 7
  61. Mono: Capture 3 [43%] [0.00dB]
  62. Simple mixer control 'DAC',0
  63. Capabilities: pvolume pvolume-joined pswitch
  64. Playback channels: Front Left - Front Right
  65. Limits: Playback 0 - 63
  66. Mono:
  67. Front Left: Playback 45 [71%] [-20.88dB] [on]
  68. Front Right: Playback 45 [71%] [-20.88dB] [on]
  69. Simple mixer control 'DAC Reversed',0
  70. Capabilities: pswitch
  71. Playback channels: Front Left - Front Right
  72. Mono:
  73. Front Left: Playback [off]
  74. Front Right: Playback [off]

Testing ALSA:

  1. aplay /usr/share/sounds/alsa/Front_Center.wav
  2. Playing WAVE '/usr/share/sounds/alsa/Front_Center.wav' : Signed 16 bit Little Endian, Rate 48000 Hz, Mono

Now install pulse:

  1. sudo apt-get install pulseaudio pulseaudio-module-bluetooth

sync && reboot.

Now check if pulse is running:

  1. ps -e|grep pulse
  2. 1187 ? 00:00:00 pulseaudio

If everything is OK (if not, you should go back and figure out what went wrong) we can now pair with a phone using bluetooth.
Type in shell (if you have not done this yet):

  1. sudo su (become root)
  2. brcm_patchram_plus -d --patchram /lib/firmware/ap6212/bcm43438a1.hcd --enable_hci --bd_addr 11:22:33:44:55:66 --no2bytes --tosleep 5000 /dev/ttyS1
  3. Done setting line discpline (^C)
  4. hciattach /dev/ttyS1 any
  5. hciconfig list
  6. hci0: Type: BR/EDR Bus: UART
  7. BD Address: 11:22:33:44:55:66 ACL MTU: 1021:8 SCO MTU: 64:1
  8. UP RUNNING
  9. RX bytes:1214 acl:0 sco:0 events:42 errors:0
  10. TX bytes:756 acl:0 sco:0 commands:42 errors:0
  11. hciconfig -a
  12. hci0: Type: BR/EDR Bus: UART
  13. BD Address: 11:22:33:44:55:66 ACL MTU: 1021:8 SCO MTU: 64:1
  14. UP RUNNING
  15. RX bytes:934 acl:0 sco:0 events:39 errors:0
  16. TX bytes:744 acl:0 sco:0 commands:39 errors:0
  17. Features: 0xbf 0xfe 0xcf 0xfe 0xdb 0xff 0x7b 0x87
  18. Packet type: DM1 DM3 DM5 DH1 DH3 DH5 HV1 HV2 HV3
  19. Link policy: RSWITCH SNIFF
  20. Link mode: SLAVE ACCEPT
  21. Name: 'bpi-m2z'
  22. Class: 0x000000
  23. Service Classes: Unspecified
  24. Device Class: Miscellaneous,
  25. HCI Version: 4.0 (0x6) Revision: 0x6a
  26. LMP Version: 4.0 (0x6) Subversion: 0x2209
  27. Manufacturer: Broadcom Corporation (15)

We are ready to pair. Type in shell (with your phone with bluetooth on):

  1. bluetoothctl -a
  2. [NEW] Controller 22:22:33:44:55:66 bpi-m2z [default]
  3. Agent registered
  4. [bluetooth]# devices
  5. [bluetooth]# list
  6. Controller 22:22:33:44:55:66 bpi-m2z [default]
  7. [bluetooth]# power on
  8. Changing power on succeeded
  9. [bluetooth]# agent on
  10. Agent is already registered
  11. [bluetooth]# default-agent
  12. Default agent request successful
  13. [bluetooth]# scan on
  14. Discovery started
  15. [CHG] Controller 22:22:33:44:55:66 Discovering: yes
  16. [NEW] Device 00:17:CA:F7:38:18 Haier HW-W910
  17. [bluetooth]# pair 00:17:CA:F7:38:18
  18. Attempting to pair with 00:17:CA:F7:38:18
  19. [CHG] Device 00:17:CA:F7:38:18 Connected: yes
  20. Request confirmation
  21. [agent] Confirm passkey 736813 (yes/no): yes
  22. [CHG] Device 00:17:CA:F7:38:18 Modalias: usb:v000Ap0000d0000
  23. [CHG] Device 00:17:CA:F7:38:18 UUIDs: 00001105-0000-1000-8000-00805f9b34fb
  24. [CHG] Device 00:17:CA:F7:38:18 UUIDs: 0000110a-0000-1000-8000-00805f9b34fb
  25. [CHG] Device 00:17:CA:F7:38:18 UUIDs: 0000110c-0000-1000-8000-00805f9b34fb
  26. [CHG] Device 00:17:CA:F7:38:18 UUIDs: 00001112-0000-1000-8000-00805f9b34fb
  27. [CHG] Device 00:17:CA:F7:38:18 UUIDs: 00001116-0000-1000-8000-00805f9b34fb
  28. [CHG] Device 00:17:CA:F7:38:18 UUIDs: 0000111f-0000-1000-8000-00805f9b34fb
  29. [CHG] Device 00:17:CA:F7:38:18 UUIDs: 0000112f-0000-1000-8000-00805f9b34fb
  30. [CHG] Device 00:17:CA:F7:38:18 UUIDs: 00001132-0000-1000-8000-00805f9b34fb
  31. [CHG] Device 00:17:CA:F7:38:18 UUIDs: 00001200-0000-1000-8000-00805f9b34fb
  32. [CHG] Device 00:17:CA:F7:38:18 UUIDs: 00001800-0000-1000-8000-00805f9b34fb
  33. [CHG] Device 00:17:CA:F7:38:18 UUIDs: 00001801-0000-1000-8000-00805f9b34fb
  34. [CHG] Device 00:17:CA:F7:38:18 Paired: yes
  35. Pairing successful
  36. [CHG] Device 00:17:CA:F7:38:18 Connected: no
  37. [bluetooth]# devices
  38. Device 00:17:CA:F7:38:18 Haier HW-W910
  39. [bluetooth]# list
  40. Controller 22:22:33:44:55:66 bpi-m2z [default]
  41. [bluetooth]# info 00:17:CA:F7:38:18
  42. Device 00:17:CA:F7:38:18
  43. Name: Haier HW-W910
  44. Alias: Haier HW-W910
  45. Class: 0x5a020c
  46. Icon: phone
  47. Paired: yes
  48. Trusted: no
  49. Blocked: no
  50. Connected: no
  51. LegacyPairing: no
  52. UUID: OBEX Object Push (00001105-0000-1000-8000-00805f9b34fb)
  53. UUID: Audio Source (0000110a-0000-1000-8000-00805f9b34fb)
  54. UUID: A/V Remote Control Target (0000110c-0000-1000-8000-00805f9b34fb)
  55. UUID: Headset AG (00001112-0000-1000-8000-00805f9b34fb)
  56. UUID: NAP (00001116-0000-1000-8000-00805f9b34fb)
  57. UUID: Handsfree Audio Gateway (0000111f-0000-1000-8000-00805f9b34fb)
  58. UUID: Phonebook Access Server (0000112f-0000-1000-8000-00805f9b34fb)
  59. UUID: Message Access Server (00001132-0000-1000-8000-00805f9b34fb)
  60. UUID: PnP Information (00001200-0000-1000-8000-00805f9b34fb)
  61. UUID: Generic Access Profile (00001800-0000-1000-8000-00805f9b34fb)
  62. UUID: Generic Attribute Profile (00001801-0000-1000-8000-00805f9b34fb)
  63. Modalias: usb:v000Ap0000d0000
  64. RSSI: -42
  65. [bluetooth]# list-attributes 00:17:CA:F7:38:18
  66. [bluetooth]# connect 00:17:CA:F7:38:18
  67. Attempting to connect to 00:17:CA:F7:38:18
  68. [CHG] Device 00:17:CA:F7:38:18 Connected: yes
  69. Connection successful
  70. [Haier HW-W910]# list-attributes 00:17:CA:F7:38:18
  71. [Haier HW-W910]# disconnect 00:17:CA:F7:38:18
  72. Attempting to disconnect from 00:17:CA:F7:38:18
  73. Successful disconnected
  74. [CHG] Device 00:17:CA:F7:38:18 Connected: no
  75. [bluetooth]# list-attributes 00:17:CA:F7:38:18
  76. [bluetooth]# info 00:17:CA:F7:38:18
  77. Device 00:17:CA:F7:38:18
  78. Name: Haier HW-W910
  79. Alias: Haier HW-W910
  80. Class: 0x5a020c
  81. Icon: phone
  82. Paired: yes
  83. Trusted: no
  84. Blocked: no
  85. Connected: no
  86. LegacyPairing: no
  87. UUID: OBEX Object Push (00001105-0000-1000-8000-00805f9b34fb)
  88. UUID: Audio Source (0000110a-0000-1000-8000-00805f9b34fb)
  89. UUID: A/V Remote Control Target (0000110c-0000-1000-8000-00805f9b34fb)
  90. UUID: Headset AG (00001112-0000-1000-8000-00805f9b34fb)
  91. UUID: NAP (00001116-0000-1000-8000-00805f9b34fb)
  92. UUID: Handsfree Audio Gateway (0000111f-0000-1000-8000-00805f9b34fb)
  93. UUID: Phonebook Access Server (0000112f-0000-1000-8000-00805f9b34fb)
  94. UUID: Message Access Server (00001132-0000-1000-8000-00805f9b34fb)
  95. UUID: PnP Information (00001200-0000-1000-8000-00805f9b34fb)
  96. UUID: Generic Access Profile (00001800-0000-1000-8000-00805f9b34fb)
  97. UUID: Generic Attribute Profile (00001801-0000-1000-8000-00805f9b34fb)
  98. Modalias: usb:v000Ap0000d0000
  99. RSSI: -42
  100. [bluetooth]# connect 00:17:CA:F7:38:18
  101. Attempting to connect to 00:17:CA:F7:38:18
  102. [CHG] Device 00:17:CA:F7:38:18 Connected: yes
  103. Connection successful
  104. [Haier HW-W910]# trust 00:17:CA:F7:38:18
  105. [CHG] Device 00:17:CA:F7:38:18 Trusted: yes
  106. Changing 00:17:CA:F7:38:18 trust succeeded
  107. [Haier HW-W910]# info 00:17:CA:F7:38:18
  108. Device 00:17:CA:F7:38:18
  109. Name: Haier HW-W910
  110. Alias: Haier HW-W910
  111. Class: 0x5a020c
  112. Icon: phone
  113. Paired: yes
  114. Trusted: yes
  115. Blocked: no
  116. Connected: yes
  117. LegacyPairing: no
  118. UUID: OBEX Object Push (00001105-0000-1000-8000-00805f9b34fb)
  119. UUID: Audio Source (0000110a-0000-1000-8000-00805f9b34fb)
  120. UUID: A/V Remote Control Target (0000110c-0000-1000-8000-00805f9b34fb)
  121. UUID: Headset AG (00001112-0000-1000-8000-00805f9b34fb)
  122. UUID: NAP (00001116-0000-1000-8000-00805f9b34fb)
  123. UUID: Handsfree Audio Gateway (0000111f-0000-1000-8000-00805f9b34fb)
  124. UUID: Phonebook Access Server (0000112f-0000-1000-8000-00805f9b34fb)
  125. UUID: Message Access Server (00001132-0000-1000-8000-00805f9b34fb)
  126. UUID: PnP Information (00001200-0000-1000-8000-00805f9b34fb)
  127. UUID: Generic Access Profile (00001800-0000-1000-8000-00805f9b34fb)
  128. UUID: Generic Attribute Profile (00001801-0000-1000-8000-00805f9b34fb)
  129. Modalias: usb:v000Ap0000d0000
  130. RSSI: -42
  131. [Haier HW-W910]# list-attributes 00:17:CA:F7:38:18
  132. [Haier HW-W910]# untrust 00:17:CA:F7:38:18
  133. [CHG] Device 00:17:CA:F7:38:18 Trusted: no
  134. Changing 00:17:CA:F7:38:18 untrust succeeded
  135. [Haier HW-W910]# disconnect 00:17:CA:F7:38:18
  136. Attempting to disconnect from 00:17:CA:F7:38:18
  137. Successful disconnected
  138. [CHG] Device 00:17:CA:F7:38:18 Connected: no
  139. [bluetooth]# remove 00:17:CA:F7:38:18
  140. [DEL] Device 00:17:CA:F7:38:18 Haier HW-W910
  141. Device has been removed
  142. [bluetooth]# list
  143. Controller 22:22:33:44:55:66 bpi-m2z [default]
  144. [NEW] Device 00:17:CA:F7:38:18 Haier HW-W910
  145. [bluetooth]# scan off
  146. [CHG] Device 00:17:CA:F7:38:18 RSSI is nil
  147. Discovery stopped
  148. [CHG] Controller 22:22:33:44:55:66 Discovering: no
  149. [bluetooth]#
  150. [bluetooth]# quit
  151. Agent unregistered
  152. [DEL] Controller 22:22:33:44:55:66 bpi-m2z [default]

And finally you can check the Services of your Bluetooth Phone:

  1. dptool browse 00:17:CA:F7:38:18|grep "Service Name"
  2. Service Name: Generic Access Profile
  3. Service Name: Generic Attribute Profile
  4. Service Name: Audio Source
  5. Service Name: AVRCP TG
  6. Service Name: Voice Gateway
  7. Service Name: OBEX Object Push
  8. Service Name: Voice Gateway
  9. Service Name: OBEX Phonebook Access Server
  10. Service Name: Network service
  11. Service Name: SMS/MMS Message Access
  12. Service Name: Email Message Access

Bluetooth

Enbale Bluetooth on next boot (permanently)

To enable Bluetooth (BT) for every new boot, edit /etc/rc.local and add the command:

  1. #!/bin/sh -e
  2. #
  3. # rc.local
  4. #
  5. # This script is executed at the end of each multiuser runlevel.
  6. # Make sure that the script will "exit 0" on success or any other
  7. # value on error.
  8. #
  9. # In order to enable or disable this script just change the execution
  10. # bits.
  11. #
  12. # By default this script does nothing.
  13. # ------------------------
  14. # ------ enable BT -------
  15. # ------------------------
  16. # borrowed from madscientist42
  17. # Compute a BD_ADDR. We're going to use pieces of the device serial number for the LAP part.
  18. SERIAL=`cat /proc/device-tree/serial-number | cut -c9-`
  19. B1=`echo $SERIAL | cut -c3-4`
  20. B2=`echo $SERIAL | cut -c5-6`
  21. B3=`echo $SERIAL | cut -c7-8`
  22. BDADDR=`printf b8:27:eb:%02x:%02x:%02x $((0x$B1 ^ 0xaa)) $((0x$B2 ^ 0xaa)) $((0x$B3 ^ 0xaa))`
  23. brcm_patchram_plus -d --patchram /lib/firmware/ap6212/bcm43438a1.hcd --enable_hci --bd_addr $BDADDR --no2bytes --tosleep 5000 /dev/ttyS1 > /tmp/bt.log 2>&1 &
  24. # -- BT end --------------
  25. exit 0
  26. #!/bin/bash

Make sure /etc/rc.local has run permissions:

  1. sudo chmod +x /etc/rc.local

Build your own Kernel

Here are the instructions for building your own kernel on board.

  • Install tools

    1. sudo apt-get install git bison flex bc device-tree-compiler
  • Get a Kernel with support for this board, for example mainline kernel 5.2.0 or your own

  • Get the patch or patch set and apply to your kernel if your kernel is not complete
  • Get mali support from Bootlin
  • Watch linux-sunxi for the latest changes and fixes

Create directory:

  1. mkdir -p linux
  2. cd linux
  3. export KVD=$PWD

Grab your kernel (here we get linus torvalds kernel 5.2 as an example):
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/refs/tags

  1. wget https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/snapshot/linux-5.2.tar.gz
  2. tar -xvpzf linux-5.2.tar.gz
  3. cd linux-5.2

Build:

  1. make sunxi_defconfig
  2. #make menuconfig (if you want to add or change kernel modules)
  3. make oldconfig
  4. make INSTALL_MOD_PATH=output zImage
  5. make INSTALL_MOD_PATH=output dtbs
  6. make INSTALL_MOD_PATH=output modules
  7. make INSTALL_MOD_PATH=output modules_install
  8. export KV=$(strings ./arch/arm/boot/Image |grep "Linux version"|awk '{print $3}')
  9. make INSTALL_HDR_PATH=output/usr/src/linux-headers-${KV} headers_install

Install:

  1. sudo cp -vfr ./output/* /
  2. sync
  3. sudo cp -fv ./arch/arm/boot/zImage /boot/zImage_${KV}
  4. sync
  5. sudo cp -fv ./arch/arm/boot/dts/sun8i-h2-plus-bananapi-m2-zero.dtb /boot/bpi-m2-zero.dtb_${KV}
  6. sync

Make it current kernel

  1. cd /boot
  2. sudo ln -sf zImage_${KV} zImage
  3. sudo ln -sf bpi-m2-zero.dtb_${KV} bpi-m2-zero.dtb
  4. cd ${KVD}
  5. sync

Reboot

  1. sudo reboot

You can add or change kernel modules at any time and modify your dts to get the hw peripherals to work properly.
From now on you are at your own.

Working with Cameras

Camera streaming side by side

There is support for camera in mainline kernel. You can use a USB camera or the OV5640 camera (DVP).
In general, USB camera are slower than the DVP camera, you can stream video at 20 FPS with DVP camera and 10 FPS for the USB camera.
The quality of the image is highly dependent on the lens used. Using a sensor without AF is recommended if you use mainline kernel.

  • USB camera
  • OV5640 DVP camera

USB Camera

Once you attach the USB camera you will see the device node representing the camera, that is:

  1. ubuntu@bpi-m2z:~$ ll /dev/video*
  2. crw-rw---- 1 root video 81, 0 Apr 11 2019 /dev/video0
  3. crw-rw---- 1 root video 81, 1 Apr 11 2019 /dev/video1
  4. crw-rw---- 1 root video 81, 3 Nov 8 13:29 /dev/video2
  5. crw-rw---- 1 root video 81, 4 Nov 8 13:29 /dev/video3

and media information in:

  1. ubuntu@bpi-m2z:~$ ll /dev/media*
  2. crw-rw-rw- 1 root video 243, 0 Apr 11 2019 /dev/media0
  3. crw-rw-rw- 1 root video 243, 1 Apr 11 2019 /dev/media1
  4. crw-rw-rw- 1 root video 243, 2 Nov 8 13:29 /dev/media2

To find about the topology of the camera you would do:

  1. ubuntu@bpi-m2z:~$ media-ctl --device /dev/media2 --print-topology
  2. Media controller API version 5.7.10
  3. Media device information
  4. ------------------------
  5. driver uvcvideo
  6. model USB 2.0 Camera: HD 720P Webcam
  7. serial
  8. bus info usb-1c1a000.usb-1.2
  9. hw revision 0x0
  10. driver version 5.7.10
  11. Device topology
  12. - entity 1: USB 2.0 Camera: HD 720P Webcam (1 pad, 1 link)
  13. type Node subtype V4L flags 1
  14. device node name /dev/video2
  15. pad0: Sink
  16. <- "Extension 4":1 [ENABLED,IMMUTABLE]
  17. - entity 4: USB 2.0 Camera: HD 720P Webcam (0 pad, 0 link)
  18. type Node subtype V4L flags 0
  19. device node name /dev/video3
  20. - entity 8: Extension 4 (2 pads, 2 links)
  21. type V4L2 subdev subtype Unknown flags 0
  22. pad0: Sink
  23. <- "Processing 3":1 [ENABLED,IMMUTABLE]
  24. pad1: Source
  25. -> "USB 2.0 Camera: HD 720P Webcam":0 [ENABLED,IMMUTABLE]
  26. - entity 11: Processing 3 (2 pads, 2 links)
  27. type V4L2 subdev subtype Unknown flags 0
  28. pad0: Sink
  29. <- "Camera 1":0 [ENABLED,IMMUTABLE]
  30. pad1: Source
  31. -> "Extension 4":0 [ENABLED,IMMUTABLE]
  32. - entity 14: Camera 1 (1 pad, 1 link)
  33. type V4L2 subdev subtype Unknown flags 0
  34. pad0: Source
  35. -> "Processing 3":0 [ENABLED,IMMUTABLE]

We have our HD 720P USB camera attached to the USB 2.0 slot. The kernel created /dev/video2 and /dev/media2 nodes for us.
You can test the streaming with USB camera using mjpg_streamer like this:

  1. mjpg_streamer -i "./input_uvc.so -d /dev/video2 -r 1280x720 -q 90 -n" -o "./output_http.so -p 8088 -w ./www"

OV5640 DVP camera

Testing video streaming with OV5640 requires you to tell kernel the window size and format of the frame unless you use the default 640x480 Pixels in size and YUV420P format

In our example we find the frame format our DVP sensor can be used:

  1. ubuntu@bpi-m2z:~$ media-ctl -v --device /dev/media1 --known-mbus-fmts
  2. RGB444_1X12 0x1016
  3. RGB444_2X8_PADHI_BE 0x1001
  4. RGB444_2X8_PADHI_LE 0x1002
  5. RGB555_2X8_PADHI_BE 0x1003
  6. RGB555_2X8_PADHI_LE 0x1004
  7. RGB565_1X16 0x1017
  8. BGR565_2X8_BE 0x1005
  9. BGR565_2X8_LE 0x1006
  10. RGB565_2X8_BE 0x1007
  11. RGB565_2X8_LE 0x1008
  12. RGB666_1X18 0x1009
  13. RBG888_1X24 0x100e
  14. RGB666_1X24_CPADHI 0x1015
  15. RGB666_1X7X3_SPWG 0x1010
  16. BGR888_1X24 0x1013
  17. GBR888_1X24 0x1014
  18. RGB888_1X24 0x100a
  19. RGB888_2X12_BE 0x100b
  20. RGB888_2X12_LE 0x100c
  21. RGB888_1X7X4_SPWG 0x1011
  22. RGB888_1X7X4_JEIDA 0x1012
  23. ARGB8888_1X32 0x100d
  24. RGB888_1X32_PADHI 0x100f
  25. RGB101010_1X30 0x1018
  26. RGB121212_1X36 0x1019
  27. RGB161616_1X48 0x101a
  28. Y8_1X8 0x2001
  29. UV8_1X8 0x2015
  30. UYVY8_1_5X8 0x2002
  31. VYUY8_1_5X8 0x2003
  32. YUYV8_1_5X8 0x2004
  33. YVYU8_1_5X8 0x2005
  34. UYVY8_2X8 0x2006
  35. VYUY8_2X8 0x2007
  36. YUYV8_2X8 0x2008
  37. YVYU8_2X8 0x2009
  38. Y10_1X10 0x200a
  39. Y10_2X8_PADHI_LE 0x202c
  40. UYVY10_2X10 0x2018
  41. VYUY10_2X10 0x2019
  42. YUYV10_2X10 0x200b
  43. YVYU10_2X10 0x200c
  44. Y12_1X12 0x2013
  45. UYVY12_2X12 0x201c
  46. VYUY12_2X12 0x201d
  47. YUYV12_2X12 0x201e
  48. YVYU12_2X12 0x201f
  49. UYVY8_1X16 0x200f
  50. VYUY8_1X16 0x2010
  51. YUYV8_1X16 0x2011
  52. YVYU8_1X16 0x2012
  53. YDYUYDYV8_1X16 0x2014
  54. UYVY10_1X20 0x201a
  55. VYUY10_1X20 0x201b
  56. YUYV10_1X20 0x200d
  57. YVYU10_1X20 0x200e
  58. VUY8_1X24 0x2024
  59. YUV8_1X24 0x2025
  60. UYYVYY8_0_5X24 0x2026
  61. UYVY12_1X24 0x2020
  62. VYUY12_1X24 0x2021
  63. YUYV12_1X24 0x2022
  64. YVYU12_1X24 0x2023
  65. YUV10_1X30 0x2016
  66. UYYVYY10_0_5X30 0x2027
  67. AYUV8_1X32 0x2017
  68. UYYVYY12_0_5X36 0x2028
  69. YUV12_1X36 0x2029
  70. YUV16_1X48 0x202a
  71. UYYVYY16_0_5X48 0x202b
  72. SBGGR8_1X8 0x3001
  73. SGBRG8_1X8 0x3013
  74. SGRBG8_1X8 0x3002
  75. SRGGB8_1X8 0x3014
  76. SBGGR10_ALAW8_1X8 0x3015
  77. SGBRG10_ALAW8_1X8 0x3016
  78. SGRBG10_ALAW8_1X8 0x3017
  79. SRGGB10_ALAW8_1X8 0x3018
  80. SBGGR10_DPCM8_1X8 0x300b
  81. SGBRG10_DPCM8_1X8 0x300c
  82. SGRBG10_DPCM8_1X8 0x3009
  83. SRGGB10_DPCM8_1X8 0x300d
  84. SBGGR10_2X8_PADHI_BE 0x3003
  85. SBGGR10_2X8_PADHI_LE 0x3004
  86. SBGGR10_2X8_PADLO_BE 0x3005
  87. SBGGR10_2X8_PADLO_LE 0x3006
  88. SBGGR10_1X10 0x3007
  89. SGBRG10_1X10 0x300e
  90. SGRBG10_1X10 0x300a
  91. SRGGB10_1X10 0x300f
  92. SBGGR12_1X12 0x3008
  93. SGBRG12_1X12 0x3010
  94. SGRBG12_1X12 0x3011
  95. SRGGB12_1X12 0x3012
  96. SBGGR14_1X14 0x3019
  97. SGBRG14_1X14 0x301a
  98. SGRBG14_1X14 0x301b
  99. SRGGB14_1X14 0x301c
  100. SBGGR16_1X16 0x301d
  101. SGBRG16_1X16 0x301e
  102. SGRBG16_1X16 0x301f
  103. SRGGB16_1X16 0x3020
  104. JPEG_1X8 0x4001
  105. S5C_UYVY_JPEG_1X8 0x5001
  106. AHSV8888_1X32 0x6001

In order to get maximum speed and optimization for streaming a video we use the MJPEG format that delivers a compressed JPEG image to be sent over the Wifi.
We need an optimized mjp_streamer which will grab the image and send MJPEG to the browser at the other side.

  • Tell kernel we want MJPEG and 720P

    1. media-ctl --device /dev/media1 --set-v4l2 '"ov5640 3-003c":0[fmt:JPEG_1X8/1280x720]'
  • Stream the video at port 8080

    1. mjpg_streamer -i "./input_uvc.so -d /dev/video2 -r 1280x720 -q 90 -n" -o "./output_http.so -p 8080 -w ./www"
  • Fire you browser and type in the address: http://192.168.254.40:8080/

IP: 192.168.254 (our wifi ip from ifconfig)
Port: 8080

  1. ubuntu@bpi-m2z:~$ ifconfig
  2. eth0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
  3. ether 0a:e8:6a:5d:c9:67 txqueuelen 1000 (Ethernet)
  4. RX packets 0 bytes 0 (0.0 B)
  5. RX errors 0 dropped 0 overruns 0 frame 0
  6. TX packets 0 bytes 0 (0.0 B)
  7. TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
  8. device interrupt 39
  9. lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
  10. inet 127.0.0.1 netmask 255.0.0.0
  11. inet6 ::1 prefixlen 128 scopeid 0x10<host>
  12. loop txqueuelen 1000 (Local Loopback)
  13. RX packets 80 bytes 5920 (5.9 KB)
  14. RX errors 0 dropped 0 overruns 0 frame 0
  15. TX packets 80 bytes 5920 (5.9 KB)
  16. TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
  17. wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
  18. inet 192.168.254.40 netmask 255.255.0.0 broadcast 192.168.255.255
  19. inet6 2804:7f4:3580:4e5c:54d7:6af3:db1c:17d7 prefixlen 64 scopeid 0x0<global>
  20. inet6 fe80::ceb8:a8ff:fea9:e566 prefixlen 64 scopeid 0x20<link>
  21. inet6 2804:7f4:3580:4e5c:ceb8:a8ff:fea9:e566 prefixlen 64 scopeid 0x0<global>
  22. ether cc:b8:a8:a9:e5:66 txqueuelen 1000 (Ethernet)
  23. RX packets 1642540 bytes 99599273 (99.5 MB)
  24. RX errors 0 dropped 0 overruns 0 frame 0
  25. TX packets 5776910 bytes 4248531828 (4.2 GB)
  26. TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
  • Streaming video with Chromium

Streaming video

Ubuntu 20.04 LTS

Minimal image with the following support enabled:

  • Wifi
  • Ethernet (if wired)
  • OV5640
  • Server like features
  • BT (not tested)
  • Stable Kernel 5.11.10

Pre-built OS Image here: https://github.com/avafinger/bananapi-zero-ubuntu-base-minimal/releases/tag/v3.9

Pre-built OS Image with Kernel 5.7.10 and 5.11.10
https://github.com/avafinger/bananapi-zero-ubuntu-base-minimal/releases/tag/v3.10

Kernel headers

The missing kernel headers are here:
https://github.com/avafinger/bananapi-zero-ubuntu-base-minimal/releases/tag/v3.11

Releases

Some pre-built firmware and linux-image have been released here:

https://github.com/avafinger/bananapi-zero-ubuntu-base-minimal/releases

Credits

Kernel 4.20.0-rc3 is based on mainline kernel (https://www.kernel.org/) (linux-sunxi effort).

Kernel 5.7.y is based on mainline kernel (https://www.kernel.org/) (linux-sunxi effort).

Kernel 5.11.y is based on stable kernel (https://www.kernel.org/) (linux-sunxi effort).

Mali is based on the work done by MRipard (Bootlin)

Thanks to Nora Lee (FOXCONN) for the sample.

bootlog of bpi-m2z with Kernel 4.20.0-rc3

  1. [ 0.000000] Booting Linux on physical CPU 0x0
  2. [ 0.000000] Linux version 4.20.0-rc3-m2z-otg-gadget (alex@svn) (gcc version 7.3.1 20180425 [linaro-7.3-2018.05 revision d29120a424ecfbc167ef90065c0eeb7f91977701] (Linaro GCC 7.3-2018.05)) #1 SMP Mon Nov 19 19:37:43 -02 2018
  3. [ 0.000000] CPU: ARMv7 Processor [410fc075] revision 5 (ARMv7), cr=10c5387d
  4. [ 0.000000] CPU: div instructions available: patching division code
  5. [ 0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache
  6. [ 0.000000] OF: fdt: Machine model: Banana Pi M2 Zero
  7. [ 0.000000] Memory policy: Data cache writealloc
  8. [ 0.000000] Reserved memory: created CMA memory pool at 0x4a000000, size 96 MiB
  9. [ 0.000000] OF: reserved mem: initialized node cma@4a000000, compatible id shared-dma-pool
  10. [ 0.000000] On node 0 totalpages: 131072
  11. [ 0.000000] Normal zone: 1024 pages used for memmap
  12. [ 0.000000] Normal zone: 0 pages reserved
  13. [ 0.000000] Normal zone: 131072 pages, LIFO batch:31
  14. [ 0.000000] psci: probing for conduit method from DT.
  15. [ 0.000000] psci: Using PSCI v0.1 Function IDs from DT
  16. [ 0.000000] random: get_random_bytes called from start_kernel+0xa0/0x3f4 with crng_init=0
  17. [ 0.000000] percpu: Embedded 16 pages/cpu @(ptrval) s35020 r8192 d22324 u65536
  18. [ 0.000000] pcpu-alloc: s35020 r8192 d22324 u65536 alloc=16*4096
  19. [ 0.000000] pcpu-alloc: [0] 0 [0] 1 [0] 2 [0] 3
  20. [ 0.000000] Built 1 zonelists, mobility grouping on. Total pages: 130048
  21. [ 0.000000] Kernel command line: console=ttyS0,115200 earlyprintk rootfstype=ext4 root=/dev/mmcblk0p2 rw rootwait fsck.repair=yes panic=10 no_console_suspend consoleblank=0 drm_leak_fbdev_smem=1
  22. [ 0.000000] Dentry cache hash table entries: 65536 (order: 6, 262144 bytes)
  23. [ 0.000000] Inode-cache hash table entries: 32768 (order: 5, 131072 bytes)
  24. [ 0.000000] Memory: 407036K/524288K available (8192K kernel code, 341K rwdata, 1960K rodata, 1024K init, 268K bss, 18948K reserved, 98304K cma-reserved, 0K highmem)
  25. [ 0.000000] Virtual kernel memory layout:
  26. vector : 0xffff0000 - 0xffff1000 ( 4 kB)
  27. fixmap : 0xffc00000 - 0xfff00000 (3072 kB)
  28. vmalloc : 0xe0800000 - 0xff800000 ( 496 MB)
  29. lowmem : 0xc0000000 - 0xe0000000 ( 512 MB)
  30. pkmap : 0xbfe00000 - 0xc0000000 ( 2 MB)
  31. modules : 0xbf000000 - 0xbfe00000 ( 14 MB)
  32. .text : 0x(ptrval) - 0x(ptrval) (9184 kB)
  33. .init : 0x(ptrval) - 0x(ptrval) (1024 kB)
  34. .data : 0x(ptrval) - 0x(ptrval) ( 342 kB)
  35. .bss : 0x(ptrval) - 0x(ptrval) ( 269 kB)
  36. [ 0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=4, Nodes=1
  37. [ 0.000000] rcu: Hierarchical RCU implementation.
  38. [ 0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 10 jiffies.
  39. [ 0.000000] NR_IRQS: 16, nr_irqs: 16, preallocated irqs: 16
  40. [ 0.000000] GIC: Using split EOI/Deactivate mode
  41. [ 0.000000] clocksource: timer: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 79635851949 ns
  42. [ 0.000000] arch_timer: cp15 timer(s) running at 24.00MHz (phys).
  43. [ 0.000000] clocksource: arch_sys_counter: mask: 0xffffffffffffff max_cycles: 0x588fe9dc0, max_idle_ns: 440795202592 ns
  44. [ 0.000006] sched_clock: 56 bits at 24MHz, resolution 41ns, wraps every 4398046511097ns
  45. [ 0.000018] Switching to timer-based delay loop, resolution 41ns
  46. [ 0.000214] Console: colour dummy device 80x30
  47. [ 0.000267] Calibrating delay loop (skipped), value calculated using timer frequency.. 48.00 BogoMIPS (lpj=240000)
  48. [ 0.000282] pid_max: default: 32768 minimum: 301
  49. [ 0.000433] Mount-cache hash table entries: 1024 (order: 0, 4096 bytes)
  50. [ 0.000448] Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes)
  51. [ 0.001143] CPU: Testing write buffer coherency: ok
  52. [ 0.001605] CPU0: update cpu_capacity 1024
  53. [ 0.001617] CPU0: thread -1, cpu 0, socket 0, mpidr 80000000
  54. [ 0.002178] Setting up static identity map for 0x40100000 - 0x40100060
  55. [ 0.002331] rcu: Hierarchical SRCU implementation.
  56. [ 0.003088] smp: Bringing up secondary CPUs ...
  57. [ 0.013872] CPU1: update cpu_capacity 1024
  58. [ 0.013878] CPU1: thread -1, cpu 1, socket 0, mpidr 80000001
  59. [ 0.024754] CPU2: update cpu_capacity 1024
  60. [ 0.024760] CPU2: thread -1, cpu 2, socket 0, mpidr 80000002
  61. [ 0.035538] CPU3: update cpu_capacity 1024
  62. [ 0.035543] CPU3: thread -1, cpu 3, socket 0, mpidr 80000003
  63. [ 0.035629] smp: Brought up 1 node, 4 CPUs
  64. [ 0.035658] SMP: Total of 4 processors activated (192.00 BogoMIPS).
  65. [ 0.035665] CPU: All CPU(s) started in HYP mode.
  66. [ 0.035671] CPU: Virtualization extensions available.
  67. [ 0.036727] devtmpfs: initialized
  68. [ 0.043445] VFP support v0.3: implementor 41 architecture 2 part 30 variant 7 rev 5
  69. [ 0.043696] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns
  70. [ 0.043722] futex hash table entries: 1024 (order: 4, 65536 bytes)
  71. [ 0.047452] pinctrl core: initialized pinctrl subsystem
  72. [ 0.048536] NET: Registered protocol family 16
  73. [ 0.050400] DMA: preallocated 256 KiB pool for atomic coherent allocations
  74. [ 0.051329] cpuidle: using governor menu
  75. [ 0.051686] hw-breakpoint: found 5 (+1 reserved) breakpoint and 4 watchpoint registers.
  76. [ 0.051696] hw-breakpoint: maximum watchpoint size is 8 bytes.
  77. [ 0.069898] SCSI subsystem initialized
  78. [ 0.070151] libata version 3.00 loaded.
  79. [ 0.070373] usbcore: registered new interface driver usbfs
  80. [ 0.070421] usbcore: registered new interface driver hub
  81. [ 0.070503] usbcore: registered new device driver usb
  82. [ 0.070816] pps_core: LinuxPPS API ver. 1 registered
  83. [ 0.070824] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
  84. [ 0.070850] PTP clock support registered
  85. [ 0.071236] Advanced Linux Sound Architecture Driver Initialized.
  86. [ 0.072602] clocksource: Switched to clocksource arch_sys_counter
  87. [ 0.072746] VFS: Disk quotas dquot_6.6.0
  88. [ 0.072813] VFS: Dquot-cache hash table entries: 1024 (order 0, 4096 bytes)
  89. [ 0.080888] NET: Registered protocol family 2
  90. [ 0.081871] tcp_listen_portaddr_hash hash table entries: 512 (order: 0, 6144 bytes)
  91. [ 0.081901] TCP established hash table entries: 4096 (order: 2, 16384 bytes)
  92. [ 0.081953] TCP bind hash table entries: 4096 (order: 3, 32768 bytes)
  93. [ 0.082017] TCP: Hash tables configured (established 4096 bind 4096)
  94. [ 0.082147] UDP hash table entries: 256 (order: 1, 8192 bytes)
  95. [ 0.082194] UDP-Lite hash table entries: 256 (order: 1, 8192 bytes)
  96. [ 0.082449] NET: Registered protocol family 1
  97. [ 0.083046] RPC: Registered named UNIX socket transport module.
  98. [ 0.083059] RPC: Registered udp transport module.
  99. [ 0.083065] RPC: Registered tcp transport module.
  100. [ 0.083071] RPC: Registered tcp NFSv4.1 backchannel transport module.
  101. [ 0.083755] Unpacking initramfs...
  102. [ 0.127611] Freeing initrd memory: 960K
  103. [ 0.129426] Initialise system trusted keyrings
  104. [ 0.129818] workingset: timestamp_bits=30 max_order=17 bucket_order=0
  105. [ 0.137120] squashfs: version 4.0 (2009/01/31) Phillip Lougher
  106. [ 0.138629] NFS: Registering the id_resolver key type
  107. [ 0.138670] Key type id_resolver registered
  108. [ 0.138676] Key type id_legacy registered
  109. [ 0.138693] nfs4filelayout_init: NFSv4 File Layout Driver Registering...
  110. [ 0.138702] Installing knfsd (copyright (C) 1996 okir@monad.swb.de).
  111. [ 0.139599] fuse init (API version 7.28)
  112. [ 0.140049] SGI XFS with ACLs, security attributes, realtime, no debug enabled
  113. [ 0.148962] Key type asymmetric registered
  114. [ 0.148986] Asymmetric key parser 'x509' registered
  115. [ 0.149085] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 247)
  116. [ 0.149098] io scheduler noop registered
  117. [ 0.149104] io scheduler deadline registered
  118. [ 0.149331] io scheduler cfq registered (default)
  119. [ 0.149342] io scheduler mq-deadline registered
  120. [ 0.149350] io scheduler kyber registered
  121. [ 0.150418] sun4i-usb-phy 1c19400.phy: Couldn't request ID GPIO
  122. [ 0.154712] sun8i-h3-pinctrl 1c20800.pinctrl: initialized sunXi PIO driver
  123. [ 0.156494] sun8i-h3-r-pinctrl 1f02c00.pinctrl: initialized sunXi PIO driver
  124. [ 0.205952] Serial: 8250/16550 driver, 8 ports, IRQ sharing disabled
  125. [ 0.208391] printk: console [ttyS0] disabled
  126. [ 0.228619] 1c28000.serial: ttyS0 at MMIO 0x1c28000 (irq = 44, base_baud = 1500000) is a U6_16550A
  127. [ 0.950227] printk: console [ttyS0] enabled
  128. [ 0.975650] 1c28400.serial: ttyS1 at MMIO 0x1c28400 (irq = 45, base_baud = 1500000) is a U6_16550A
  129. [ 0.997540] sun4i-drm display-engine: bound 1100000.mixer (ops 0xc095568c)
  130. [ 1.004716] sun4i-drm display-engine: bound 1c0c000.lcd-controller (ops 0xc095275c)
  131. [ 1.012419] sun8i-dw-hdmi 1ee0000.hdmi: 1ee0000.hdmi supply hvcc not found, using dummy regulator
  132. [ 1.021366] sun8i-dw-hdmi 1ee0000.hdmi: Linked as a consumer to regulator.0
  133. [ 1.029143] sun8i-dw-hdmi 1ee0000.hdmi: Detected HDMI TX controller v1.32a with HDCP (sun8i_dw_hdmi_phy)
  134. [ 1.039027] sun8i-dw-hdmi 1ee0000.hdmi: registered DesignWare HDMI I2C bus driver
  135. [ 1.046829] sun4i-drm display-engine: bound 1ee0000.hdmi (ops 0xc0955034)
  136. [ 1.053635] [drm] Supports vblank timestamp caching Rev 2 (21.10.2013).
  137. [ 1.060240] [drm] No driver support for vblank timestamp query.
  138. [ 1.268718] random: fast init done
  139. [ 1.599232] Console: switching to colour frame buffer device 240x67
  140. [ 1.638833] sun4i-drm display-engine: fb0: DRM emulated frame buffer device
  141. [ 1.646284] [drm] Initialized sun4i-drm 1.0.0 20150629 for display-engine on minor 0
  142. [ 1.657027] libphy: Fixed MDIO Bus: probed
  143. [ 1.661316] CAN device driver interface
  144. [ 1.665835] dwmac-sun8i 1c30000.ethernet: PTP uses main clock
  145. [ 1.671616] dwmac-sun8i 1c30000.ethernet: No regulator found
  146. [ 1.677662] dwmac-sun8i 1c30000.ethernet: No HW DMA feature register supported
  147. [ 1.684900] dwmac-sun8i 1c30000.ethernet: RX Checksum Offload Engine supported
  148. [ 1.692124] dwmac-sun8i 1c30000.ethernet: COE Type 2
  149. [ 1.697094] dwmac-sun8i 1c30000.ethernet: TX Checksum insertion supported
  150. [ 1.703897] dwmac-sun8i 1c30000.ethernet: Normal descriptors
  151. [ 1.709557] dwmac-sun8i 1c30000.ethernet: Chain mode enabled
  152. [ 1.715365] libphy: stmmac: probed
  153. [ 1.719299] dwmac-sun8i 1c30000.ethernet: Found internal PHY node
  154. [ 1.725528] libphy: mdio_mux: probed
  155. [ 1.729119] dwmac-sun8i 1c30000.ethernet: Switch mux to internal PHY
  156. [ 1.735484] dwmac-sun8i 1c30000.ethernet: Powering internal PHY
  157. [ 1.742359] libphy: mdio_mux: probed
  158. [ 1.746460] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
  159. [ 1.752997] ehci-platform: EHCI generic platform driver
  160. [ 1.758425] ehci-platform 1c1a000.usb: EHCI Host Controller
  161. [ 1.764033] ehci-platform 1c1a000.usb: new USB bus registered, assigned bus number 1
  162. [ 1.772190] ehci-platform 1c1a000.usb: irq 27, io mem 0x01c1a000
  163. [ 1.802613] ehci-platform 1c1a000.usb: USB 2.0 started, EHCI 1.00
  164. [ 1.808902] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002, bcdDevice= 4.20
  165. [ 1.817177] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
  166. [ 1.824409] usb usb1: Product: EHCI Host Controller
  167. [ 1.829281] usb usb1: Manufacturer: Linux 4.20.0-rc3-m2z-otg-gadget ehci_hcd
  168. [ 1.836330] usb usb1: SerialNumber: 1c1a000.usb
  169. [ 1.841429] hub 1-0:1.0: USB hub found
  170. [ 1.845232] hub 1-0:1.0: 1 port detected
  171. [ 1.850060] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
  172. [ 1.856279] ohci-platform: OHCI generic platform driver
  173. [ 1.861687] ohci-platform 1c1a400.usb: Generic Platform OHCI controller
  174. [ 1.868330] ohci-platform 1c1a400.usb: new USB bus registered, assigned bus number 2
  175. [ 1.876364] ohci-platform 1c1a400.usb: irq 28, io mem 0x01c1a400
  176. [ 1.946763] usb usb2: New USB device found, idVendor=1d6b, idProduct=0001, bcdDevice= 4.20
  177. [ 1.955045] usb usb2: New USB device strings: Mfr=3, Product=2, SerialNumber=1
  178. [ 1.962268] usb usb2: Product: Generic Platform OHCI controller
  179. [ 1.968196] usb usb2: Manufacturer: Linux 4.20.0-rc3-m2z-otg-gadget ohci_hcd
  180. [ 1.975254] usb usb2: SerialNumber: 1c1a400.usb
  181. [ 1.980284] hub 2-0:1.0: USB hub found
  182. [ 1.984076] hub 2-0:1.0: 1 port detected
  183. [ 1.988900] usbcore: registered new interface driver cdc_acm
  184. [ 1.994590] cdc_acm: USB Abstract Control Model driver for USB modems and ISDN adapters
  185. [ 2.002648] usbcore: registered new interface driver usblp
  186. [ 2.008177] usbcore: registered new interface driver cdc_wdm
  187. [ 2.013919] usbcore: registered new interface driver usb-storage
  188. [ 2.020023] usbcore: registered new interface driver ch341
  189. [ 2.025556] usbserial: USB Serial support registered for ch341-uart
  190. [ 2.031847] usbcore: registered new interface driver cp210x
  191. [ 2.037452] usbserial: USB Serial support registered for cp210x
  192. [ 2.043433] usbcore: registered new interface driver ftdi_sio
  193. [ 2.049204] usbserial: USB Serial support registered for FTDI USB Serial Device
  194. [ 2.056626] usbcore: registered new interface driver pl2303
  195. [ 2.062215] usbserial: USB Serial support registered for pl2303
  196. [ 2.068917] mousedev: PS/2 mouse device common for all mice
  197. [ 2.075219] sun6i-rtc 1f00000.rtc: rtc core: registered rtc-sun6i as rtc0
  198. [ 2.082002] sun6i-rtc 1f00000.rtc: RTC enabled
  199. [ 2.086731] i2c /dev entries driver
  200. [ 2.092535] thermal thermal_zone0: failed to read out thermal zone (-16)
  201. [ 2.099901] sunxi-wdt 1c20ca0.watchdog: Watchdog enabled (timeout=16 sec, nowayout=0)
  202. [ 2.109005] sunxi-mmc 1c0f000.mmc: Linked as a consumer to regulator.2
  203. [ 2.141438] sunxi-mmc 1c0f000.mmc: initialized, max. request size: 16384 KB
  204. [ 2.148808] sunxi-mmc 1c10000.mmc: Linked as a consumer to regulator.2
  205. [ 2.156082] sunxi-mmc 1c10000.mmc: allocated mmc-pwrseq
  206. [ 2.185330] sunxi-mmc 1c10000.mmc: initialized, max. request size: 16384 KB
  207. [ 2.193708] ledtrig-cpu: registered to indicate activity on CPUs
  208. [ 2.199989] hidraw: raw HID events driver (C) Jiri Kosina
  209. [ 2.205826] usbcore: registered new interface driver usbhid
  210. [ 2.211424] usbhid: USB HID core driver
  211. [ 2.218165] sun4i-codec 1c22c00.codec: ASoC: codec-analog@1f015c0 not registered
  212. [ 2.219174] mmc0: host does not support reading read-only switch, assuming write-enable
  213. [ 2.225590] sun4i-codec 1c22c00.codec: Failed to register our card
  214. [ 2.227243] Initializing XFRM netlink socket
  215. [ 2.235622] mmc0: new high speed SDHC card at address 59b4
  216. [ 2.239822] NET: Registered protocol family 17
  217. [ 2.245682] mmcblk0: mmc0:59b4 SDU1 7.52 GiB
  218. [ 2.249611] can: controller area network core (rev 20170425 abi 9)
  219. [ 2.256018] mmcblk0: p1 p2
  220. [ 2.258645] NET: Registered protocol family 29
  221. [ 2.266951] mmc1: queuing unknown CIS tuple 0x80 (2 bytes)
  222. [ 2.267550] can: raw protocol (rev 20170425)
  223. [ 2.273511] mmc1: queuing unknown CIS tuple 0x80 (3 bytes)
  224. [ 2.277463] can: broadcast manager protocol (rev 20170425 t)
  225. [ 2.283214] mmc1: queuing unknown CIS tuple 0x80 (3 bytes)
  226. [ 2.287203] can: netlink gateway (rev 20170425) max_hops=1
  227. [ 2.295540] mmc1: queuing unknown CIS tuple 0x80 (7 bytes)
  228. [ 2.299215] rfkill_gpio rfkill_bt: sunxi-bt device registered.
  229. [ 2.307111] mmc1: queuing unknown CIS tuple 0x81 (9 bytes)
  230. [ 2.309579] 9pnet: Installing 9P2000 support
  231. [ 2.324938] Key type dns_resolver registered
  232. [ 2.329439] Registering SWP/SWPB emulation handler
  233. [ 2.334843] Loading compiled-in X.509 certificates
  234. [ 2.347548] cam: supplied by vcc5v0
  235. [ 2.351808] cam-avdd: supplied by cam
  236. [ 2.355557] cam-dovdd: supplied by cam
  237. [ 2.359343] cam-dvdd: supplied by cam
  238. [ 2.364536] ehci-platform 1c1b000.usb: EHCI Host Controller
  239. [ 2.370140] ehci-platform 1c1b000.usb: new USB bus registered, assigned bus number 3
  240. [ 2.378396] ehci-platform 1c1b000.usb: irq 29, io mem 0x01c1b000
  241. [ 2.398114] mmc1: new high speed SDIO card at address 0001
  242. [ 2.412620] ehci-platform 1c1b000.usb: USB 2.0 started, EHCI 1.00
  243. [ 2.418918] usb usb3: New USB device found, idVendor=1d6b, idProduct=0002, bcdDevice= 4.20
  244. [ 2.427193] usb usb3: New USB device strings: Mfr=3, Product=2, SerialNumber=1
  245. [ 2.434419] usb usb3: Product: EHCI Host Controller
  246. [ 2.439292] usb usb3: Manufacturer: Linux 4.20.0-rc3-m2z-otg-gadget ehci_hcd
  247. [ 2.446342] usb usb3: SerialNumber: 1c1b000.usb
  248. [ 2.451420] hub 3-0:1.0: USB hub found
  249. [ 2.455216] hub 3-0:1.0: 1 port detected
  250. [ 2.459940] ehci-platform 1c1c000.usb: EHCI Host Controller
  251. [ 2.465553] ehci-platform 1c1c000.usb: new USB bus registered, assigned bus number 4
  252. [ 2.473608] ehci-platform 1c1c000.usb: irq 31, io mem 0x01c1c000
  253. [ 2.502616] ehci-platform 1c1c000.usb: USB 2.0 started, EHCI 1.00
  254. [ 2.508856] usb usb4: New USB device found, idVendor=1d6b, idProduct=0002, bcdDevice= 4.20
  255. [ 2.517130] usb usb4: New USB device strings: Mfr=3, Product=2, SerialNumber=1
  256. [ 2.524354] usb usb4: Product: EHCI Host Controller
  257. [ 2.529227] usb usb4: Manufacturer: Linux 4.20.0-rc3-m2z-otg-gadget ehci_hcd
  258. [ 2.536276] usb usb4: SerialNumber: 1c1c000.usb
  259. [ 2.541290] hub 4-0:1.0: USB hub found
  260. [ 2.545081] hub 4-0:1.0: 1 port detected
  261. [ 2.549700] ehci-platform 1c1d000.usb: EHCI Host Controller
  262. [ 2.555308] ehci-platform 1c1d000.usb: new USB bus registered, assigned bus number 5
  263. [ 2.563406] ehci-platform 1c1d000.usb: irq 33, io mem 0x01c1d000
  264. [ 2.592613] ehci-platform 1c1d000.usb: USB 2.0 started, EHCI 1.00
  265. [ 2.598845] usb usb5: New USB device found, idVendor=1d6b, idProduct=0002, bcdDevice= 4.20
  266. [ 2.607115] usb usb5: New USB device strings: Mfr=3, Product=2, SerialNumber=1
  267. [ 2.614342] usb usb5: Product: EHCI Host Controller
  268. [ 2.619214] usb usb5: Manufacturer: Linux 4.20.0-rc3-m2z-otg-gadget ehci_hcd
  269. [ 2.626262] usb usb5: SerialNumber: 1c1d000.usb
  270. [ 2.631285] hub 5-0:1.0: USB hub found
  271. [ 2.635076] hub 5-0:1.0: 1 port detected
  272. [ 2.639693] ohci-platform 1c1b400.usb: Generic Platform OHCI controller
  273. [ 2.646349] ohci-platform 1c1b400.usb: new USB bus registered, assigned bus number 6
  274. [ 2.654358] ohci-platform 1c1b400.usb: irq 30, io mem 0x01c1b400
  275. [ 2.726765] usb usb6: New USB device found, idVendor=1d6b, idProduct=0001, bcdDevice= 4.20
  276. [ 2.735041] usb usb6: New USB device strings: Mfr=3, Product=2, SerialNumber=1
  277. [ 2.742254] usb usb6: Product: Generic Platform OHCI controller
  278. [ 2.748181] usb usb6: Manufacturer: Linux 4.20.0-rc3-m2z-otg-gadget ohci_hcd
  279. [ 2.755232] usb usb6: SerialNumber: 1c1b400.usb
  280. [ 2.760259] hub 6-0:1.0: USB hub found
  281. [ 2.764054] hub 6-0:1.0: 1 port detected
  282. [ 2.768682] ohci-platform 1c1c400.usb: Generic Platform OHCI controller
  283. [ 2.775333] ohci-platform 1c1c400.usb: new USB bus registered, assigned bus number 7
  284. [ 2.783334] ohci-platform 1c1c400.usb: irq 32, io mem 0x01c1c400
  285. [ 2.856757] usb usb7: New USB device found, idVendor=1d6b, idProduct=0001, bcdDevice= 4.20
  286. [ 2.865026] usb usb7: New USB device strings: Mfr=3, Product=2, SerialNumber=1
  287. [ 2.872238] usb usb7: Product: Generic Platform OHCI controller
  288. [ 2.878163] usb usb7: Manufacturer: Linux 4.20.0-rc3-m2z-otg-gadget ohci_hcd
  289. [ 2.885211] usb usb7: SerialNumber: 1c1c400.usb
  290. [ 2.890204] hub 7-0:1.0: USB hub found
  291. [ 2.893994] hub 7-0:1.0: 1 port detected
  292. [ 2.898656] ohci-platform 1c1d400.usb: Generic Platform OHCI controller
  293. [ 2.905304] ohci-platform 1c1d400.usb: new USB bus registered, assigned bus number 8
  294. [ 2.913297] ohci-platform 1c1d400.usb: irq 34, io mem 0x01c1d400
  295. [ 2.986793] usb usb8: New USB device found, idVendor=1d6b, idProduct=0001, bcdDevice= 4.20
  296. [ 2.995076] usb usb8: New USB device strings: Mfr=3, Product=2, SerialNumber=1
  297. [ 3.002289] usb usb8: Product: Generic Platform OHCI controller
  298. [ 3.008216] usb usb8: Manufacturer: Linux 4.20.0-rc3-m2z-otg-gadget ohci_hcd
  299. [ 3.015272] usb usb8: SerialNumber: 1c1d400.usb
  300. [ 3.020347] hub 8-0:1.0: USB hub found
  301. [ 3.024139] hub 8-0:1.0: 1 port detected
  302. [ 3.028883] usb_phy_generic usb_phy_generic.3.auto: usb_phy_generic.3.auto supply vcc not found, using dummy regulator
  303. [ 3.039657] usb_phy_generic usb_phy_generic.3.auto: Linked as a consumer to regulator.0
  304. [ 3.048029] musb-hdrc musb-hdrc.4.auto: MUSB HDRC host driver
  305. [ 3.053798] musb-hdrc musb-hdrc.4.auto: new USB bus registered, assigned bus number 9
  306. [ 3.061779] usb usb9: New USB device found, idVendor=1d6b, idProduct=0002, bcdDevice= 4.20
  307. [ 3.070056] usb usb9: New USB device strings: Mfr=3, Product=2, SerialNumber=1
  308. [ 3.077278] usb usb9: Product: MUSB HDRC host driver
  309. [ 3.082238] usb usb9: Manufacturer: Linux 4.20.0-rc3-m2z-otg-gadget musb-hcd
  310. [ 3.089285] usb usb9: SerialNumber: musb-hdrc.4.auto
  311. [ 3.094716] hub 9-0:1.0: USB hub found
  312. [ 3.098495] hub 9-0:1.0: 1 port detected
  313. [ 3.103139] cpu cpu0: Linked as a consumer to regulator.8
  314. [ 3.108593] cpu cpu0: Dropping the link to regulator.8
  315. [ 3.113933] cpu cpu0: Linked as a consumer to regulator.8
  316. [ 3.121144] sun4i-codec 1c22c00.codec: ASoC: Failed to create component debugfs directory
  317. [ 3.131748] sun4i-codec 1c22c00.codec: Codec <-> 1c22c00.codec mapping ok
  318. [ 3.140681] sun6i-rtc 1f00000.rtc: setting system clock to 1970-01-01 00:00:09 UTC (9)
  319. [ 3.155809] cfg80211: Loading compiled-in X.509 certificates for regulatory database
  320. [ 3.168145] cfg80211: Loaded X.509 cert 'sforshee: 00b28ddf47aef9cea7'
  321. [ 3.178491] platform regulatory.0: Direct firmware load for regulatory.db failed with error -2
  322. [ 3.180801] vcc3v0: disabling
  323. [ 3.187360] platform regulatory.0: Falling back to syfs fallback for: regulatory.db
  324. [ 3.190307] vcc5v0: disabling
  325. [ 3.200934] cam-avdd: disabling
  326. [ 3.204604] cam-dovdd: disabling
  327. [ 3.208160] cam-dvdd: disabling
  328. [ 3.211459] ALSA device list:
  329. [ 3.214431] #0: H3 Audio Codec
  330. [ 3.219984] Freeing unused kernel memory: 1024K
  331. [ 3.253946] Run /init as init process
  332. [ 3.594710] usb 1-1: new high-speed USB device number 2 using ehci-platform
  333. [ 3.597365] EXT4-fs (mmcblk0p2): mounted filesystem without journal. Opts: (null)
  334. [ 3.794928] usb 1-1: New USB device found, idVendor=05e3, idProduct=0608, bcdDevice=85.36
  335. [ 3.803205] usb 1-1: New USB device strings: Mfr=0, Product=1, SerialNumber=0
  336. [ 3.810388] usb 1-1: Product: USB2.0 Hub
  337. [ 3.815584] hub 1-1:1.0: USB hub found
  338. [ 3.821038] hub 1-1:1.0: 4 ports detected
  339. [ 4.152684] usb 1-1.2: new high-speed USB device number 3 using ehci-platform
  340. [ 4.279191] systemd[1]: System time before build time, advancing clock.
  341. [ 4.328486] usb 1-1.2: New USB device found, idVendor=05e3, idProduct=0608, bcdDevice= 9.01
  342. [ 4.336887] usb 1-1.2: New USB device strings: Mfr=0, Product=1, SerialNumber=0
  343. [ 4.344218] usb 1-1.2: Product: USB2.0 Hub
  344. [ 4.349604] hub 1-1.2:1.0: USB hub found
  345. [ 4.354342] hub 1-1.2:1.0: 4 ports detected
  346. [ 4.653016] NET: Registered protocol family 10
  347. [ 4.722232] Segment Routing with IPv6
  348. [ 4.722718] usb 1-1.2.3: new low-speed USB device number 4 using ehci-platform
  349. [ 4.761011] random: systemd: uninitialized urandom read (16 bytes read)
  350. [ 4.776589] systemd[1]: systemd 229 running in system mode. (+PAM +AUDIT +SELINUX +IMA +APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ -LZ4 +SECCOMP +BLKID +ELFUTILS +KMOD -IDN)
  351. [ 4.795876] systemd[1]: Detected architecture arm.
  352. [ 4.853992] systemd[1]: Set hostname to <nanopi-duo>.
  353. [ 4.901619] usb 1-1.2.3: New USB device found, idVendor=1c4f, idProduct=0002, bcdDevice= 1.10
  354. [ 4.910179] usb 1-1.2.3: New USB device strings: Mfr=1, Product=2, SerialNumber=0
  355. [ 4.917682] usb 1-1.2.3: Product: USB Keyboard
  356. [ 4.922128] usb 1-1.2.3: Manufacturer: SIGMACHIP
  357. [ 4.971346] input: SIGMACHIP USB Keyboard as /devices/platform/soc/1c1a000.usb/usb1/1-1/1-1.2/1-1.2.3/1-1.2.3:1.0/0003:1C4F:0002.0001/input/input0
  358. [ 4.974065] random: systemd: uninitialized urandom read (16 bytes read)
  359. [ 5.055034] hid-generic 0003:1C4F:0002.0001: input,hidraw0: USB HID v1.10 Keyboard [SIGMACHIP USB Keyboard] on usb-1c1a000.usb-1.2.3/input0
  360. [ 5.062380] random: systemd-gpt-aut: uninitialized urandom read (16 bytes read)
  361. [ 5.079213] input: SIGMACHIP USB Keyboard Consumer Control as /devices/platform/soc/1c1a000.usb/usb1/1-1/1-1.2/1-1.2.3/1-1.2.3:1.1/0003:1C4F:0002.0002/input/input1
  362. [ 5.163697] input: SIGMACHIP USB Keyboard System Control as /devices/platform/soc/1c1a000.usb/usb1/1-1/1-1.2/1-1.2.3/1-1.2.3:1.1/0003:1C4F:0002.0002/input/input2
  363. [ 5.180901] hid-generic 0003:1C4F:0002.0002: input,hidraw1: USB HID v1.10 Device [SIGMACHIP USB Keyboard] on usb-1c1a000.usb-1.2.3/input1
  364. [ 5.304755] usb 1-1.2.4: new low-speed USB device number 5 using ehci-platform
  365. [ 5.451765] usb 1-1.2.4: New USB device found, idVendor=1bcf, idProduct=0007, bcdDevice= 0.10
  366. [ 5.460466] usb 1-1.2.4: New USB device strings: Mfr=0, Product=2, SerialNumber=0
  367. [ 5.468421] usb 1-1.2.4: Product: USB Optical Mouse
  368. [ 5.482692] input: USB Optical Mouse as /devices/platform/soc/1c1a000.usb/usb1/1-1/1-1.2/1-1.2.4/1-1.2.4:1.0/0003:1BCF:0007.0003/input/input3
  369. [ 5.496087] input: USB Optical Mouse as /devices/platform/soc/1c1a000.usb/usb1/1-1/1-1.2/1-1.2.4/1-1.2.4:1.0/0003:1BCF:0007.0003/input/input4
  370. [ 5.520418] hid-generic 0003:1BCF:0007.0003: input,hiddev96,hidraw2: USB HID v1.10 Mouse [USB Optical Mouse] on usb-1c1a000.usb-1.2.4/input0
  371. [ 5.837758] systemd[1]: Listening on Journal Socket.
  372. [ 5.914407] systemd[1]: Reached target Remote File Systems (Pre).
  373. [ 5.937931] systemd[1]: Listening on udev Control Socket.
  374. [ 5.983265] systemd[1]: Started Trigger resolvconf update for networkd DNS.
  375. [ 6.013319] systemd[1]: Started Dispatch Password Requests to Console Directory Watch.
  376. [ 6.054594] systemd[1]: Listening on /dev/initctl Compatibility Named Pipe.
  377. [ 6.104286] systemd[1]: Started Forward Password Requests to Wall Directory Watch.
  378. [ 6.706757] EXT4-fs (mmcblk0p2): re-mounted. Opts: (null)
  379. [ 6.835752] g_serial gadget: Gadget Serial v2.4
  380. [ 6.840303] g_serial gadget: g_serial ready
  381. [ 6.902950] brcmfmac: brcmf_fw_alloc_request: using brcm/brcmfmac43430-sdio for chip BCM43430/1
  382. [ 6.985436] Bluetooth: Core ver 2.22
  383. [ 6.989175] NET: Registered protocol family 31
  384. [ 6.993826] Bluetooth: HCI device and connection manager initialized
  385. [ 7.000509] Bluetooth: HCI socket layer initialized
  386. [ 7.005468] Bluetooth: L2CAP socket layer initialized
  387. [ 7.010572] Bluetooth: SCO socket layer initialized
  388. [ 7.023201] Bluetooth: HCI UART driver ver 2.3
  389. [ 7.028050] Bluetooth: HCI UART protocol H4 registered
  390. [ 7.033226] Bluetooth: HCI UART protocol BCSP registered
  391. [ 7.038535] Bluetooth: HCI UART protocol ATH3K registered
  392. [ 7.044231] Bluetooth: HCI UART protocol Intel registered
  393. [ 7.049630] Bluetooth: HCI UART protocol AG6XX registered
  394. [ 7.055066] Bluetooth: HCI UART protocol Marvell registered
  395. [ 7.087649] brcmfmac: brcmf_fw_alloc_request: using brcm/brcmfmac43430-sdio for chip BCM43430/1
  396. [ 7.098671] brcmfmac mmc1:0001:1: Direct firmware load for brcm/brcmfmac43430-sdio.clm_blob failed with error -2
  397. [ 7.112736] brcmfmac mmc1:0001:1: Falling back to syfs fallback for: brcm/brcmfmac43430-sdio.clm_blob
  398. [ 8.034398] systemd-journald[192]: Received request to flush runtime journal from PID 1
  399. [ 8.307647] brcmfmac: brcmf_c_process_clm_blob: no clm_blob available (err=-11), device may have limited channels available
  400. [ 8.311894] brcmfmac: brcmf_c_preinit_dcmds: Firmware: BCM43430/1 wl0: Mar 30 2016 11:30:56 version 7.45.77.h8.4 FWID 01-ee8a6268
  401. [ 8.468024] cfg80211: failed to load regulatory.db
  402. [ 8.777141] media: Linux media interface: v0.10
  403. [ 8.791229] mali: loading out-of-tree module taints kernel.
  404. [ 8.802801] Allwinner sunXi mali glue initialized
  405. [ 8.804860] Registered IR keymap rc-empty
  406. [ 8.805108] rc rc0: sunxi-ir as /devices/platform/soc/1f02000.ir/rc/rc0
  407. [ 8.805556] input: sunxi-ir as /devices/platform/soc/1f02000.ir/rc/rc0/input5
  408. [ 8.806450] rc rc0: lirc_dev: driver sunxi-ir registered at minor = 0, raw IR receiver, no transmitter
  409. [ 8.811998] Mali:
  410. [ 8.812008] Found Mali GPU Mali-400 MP r1p1
  411. [ 8.812725] sunxi-ir 1f02000.ir: initialized sunXi IR driver
  412. [ 8.816537] videodev: Linux video capture interface: v2.00
  413. [ 8.847290] ov5640 2-003c: Linked as a consumer to regulator.5
  414. [ 8.847385] ov5640 2-003c: Linked as a consumer to regulator.6
  415. [ 8.847472] ov5640 2-003c: Linked as a consumer to regulator.4
  416. [ 8.850168] Mali:
  417. [ 8.850180] 2+0 PP cores initialized
  418. [ 8.851383] Mali:
  419. [ 8.851390] Mali device driver loaded
  420. [ 8.880132] ov5640 2-003c: ov5640_read_reg: error: reg=300a
  421. [ 8.885969] ov5640 2-003c: ov5640_check_chip_id: failed to read chip identifier
  422. [ 8.893761] ov5640 2-003c: Dropping the link to regulator.5
  423. [ 8.893853] ov5640 2-003c: Dropping the link to regulator.6
  424. [ 8.893914] ov5640 2-003c: Dropping the link to regulator.4
  425. [ 9.941571] EXT4-fs (mmcblk0p1): mounted filesystem with ordered data mode. Opts: (null)
  426. [ 10.912016] Generic PHY 0.1:01: attached PHY driver [Generic PHY] (mii_bus:phy_addr=0.1:01, irq=POLL)
  427. [ 10.925866] dwmac-sun8i 1c30000.ethernet eth0: No Safety Features support found
  428. [ 10.925896] dwmac-sun8i 1c30000.ethernet eth0: No MAC Management Counters available
  429. [ 10.925918] dwmac-sun8i 1c30000.ethernet eth0: PTP not supported by HW
  430. [ 10.927314] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready
  431. [ 11.141416] IPv6: ADDRCONF(NETDEV_UP): wlan0: link is not ready
  432. [ 12.003556] dwmac-sun8i 1c30000.ethernet eth0: Link is Up - 100Mbps/Full - flow control rx/tx
  433. [ 12.003643] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
  434. [ 12.798637] IPv6: ADDRCONF(NETDEV_CHANGE): wlan0: link becomes ready
  435. [ 56.711762] random: crng init done
  436. [ 56.711814] random: 7 urandom warning(s) missed due to ratelimiting
  437. [ 521.245276] Bluetooth: BNEP (Ethernet Emulation) ver 1.3
  438. [ 521.245291] Bluetooth: BNEP filters: protocol multicast
  439. [ 521.245324] Bluetooth: BNEP socket layer initialized
  440. [ 525.482009] Bluetooth: hci0: sending frame failed (-49)
  441. [ 668.728660] Bluetooth: hci0: last event is not cmd complete (0x0f)