Giter Site home page Giter Site logo

avafinger / bananapi-zero-ubuntu-base-minimal Goto Github PK

View Code? Open in Web Editor NEW
88.0 15.0 17.0 523.14 MB

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 100.00%
bananapi kernel firmware u-boot mainline-kernel m2z banana-pi mali bluetooth ubuntu

bananapi-zero-ubuntu-base-minimal's Introduction

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

  • v1 is Kernel 4.15.y

  • v2 is Kernel 4.17.y

    For convenience, an 8GB SD CARD Image is at https://mega.nz/#!obIAVQiA!G0CCABkLunCcG8hEqMf7NfjTBK1jgMytt2f0VdtOl08

    Use 7zip to unzip it and flash it with etcher or win32imagewriter (Win32DiskImager)

  • v2 stable kernel 4.17.12 update

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

    and then:

      sync && sudo shutdown -h now
    

power cicle the board

  • v3 stable kernel 4.18.4 upgrade

      sudo dpkg -i linux-image-4.18.4-m2z_1.0-7.deb
    

    and then:

      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

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

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

	sudo dpkg -l | grep linux-image
	ii  linux-image-4.17.12-m2z           1.0-5                                      armhf        Linux kernel 4.17.12-m2z
	ii  linux-image-4.17.8-m2z            1.0-1                                      armhf        Linux kernel 4.17.8-m2z
	ii  linux-image-4.17.9-m2z            1.0-2                                      armhf        Linux kernel 4.17.9-m2z
	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:

	uname -r 
	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:

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

and now install the latest kernel:

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

and then:

	sync && sudo reboot 

or better

	sync && sudo shutdown -h now

power cicle the board and check kernel version again:

	uname -r 
	4.18.8-m2z-otg-gadget
  • v5 mailine kernel 4.19.0 upgrade

      sudo dpkg -i linux-image-4.19.0-m2z-otg-gadget_1.0-13.deb
      sync && sudo reboot 
    
  • v6 mailine kernel 4.19.1 (stable) upgrade

      sudo dpkg -i linux-image-4.19.1-m2z-otg-gadget_1.0-14.deb
      sync && sudo reboot 
    
  • v7 mailine kernel 4.20.0-rc2 (mainline) upgrade

      sudo dpkg -i linux-image-4.20.0-rc2-m2z-otg-gadget_1.0-15.deb
      sync && sudo reboot 
    

rebuild bpi-m2z_boot.scr with:

	edit bpi-m2-zero_boot.cmd and change:

	setenv extra "no_console_suspend consoleblank=0 drm_leak_fbdev_smem=1"
	setenv bootargs "console=ttyS0,115200 earlyprintk rootfstype=ext4 root=/dev/mmcblk0p2 rw rootwait fsck.repair=${fsck.repair} panic=10 ${extra}"
	bootz ${kernel_addr} ${ramdisk_addr}:${ramdisk_size} ${dtb_addr}

rebuild with:

	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

      sudo dpkg -i linux-image-4.20.0-rc3-m2z-otg-gadget_1.0-16.deb
      sync && sudo reboot 
    
  • v9 mailine kernel 4.19.5 (stable) upgrade

      sudo dpkg -i linux-image-4.19.5-m2z-otg-gadget_1.0-19.deb
      sync && sudo reboot 
    
  • v10 mailine kernel 4.19.6 (stable) upgrade

deb file in Release v10, grab the file with:

	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
	sudo dpkg -i linux-image-4.19.6-m2z-otg-gadget_1.0-20.deb
	sync && sudo reboot 
  • v11 mailine kernel 4.19.12 (stable) upgrade

deb file in Release v11, grab the file with:

	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
	sudo dpkg -i linux-image-4.19.12-m2z-otg-gadget_1.0-21.deb
	sync && sudo reboot 
  • v12 mailine kernel 4.20.0 (experimental) upgrade

deb file in Release v12, grab the file with:

	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
	sudo dpkg -i linux-image-4.20.0-m2z-otg-gadget_1.0-22.deb
	sync && sudo reboot 
  • v13 mailine kernel 4.20.17-m2z (experimental) upgrade

      	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:

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

or

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

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

pcm.!default {
    type plug
    slave {
	pcm "hw:1,0"
    }
}

ctl.!default {
   type hw
   card 1
} 

Reboot and test the HDMI sound:

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

Check for the codecs:

cat /proc/asound/cards

 0 [Codec          ]: H3_Audio_Codec - H3 Audio Codec
		      H3 Audio Codec
 1 [allwinnerhdmi  ]: allwinner_hdmi - allwinner,hdmi
		      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:

ubuntu@bpi-m2z:~$ sudo dpkg -i linux-image-5.6.5-r1_1.0-42.deb 
Selecting previously unselected package linux-image-5.6.5-r1.
(Reading database ... 56892 files and directories currently installed.)
Preparing to unpack linux-image-5.6.5-r1_1.0-42.deb ...
INFO: Updating Kernel 5.6.3 to 5.6.5-r1
INFO: Updating...
Unpacking linux-image-5.6.5-r1 (1.0-42) ...
Setting up linux-image-5.6.5-r1 (1.0-42) ...
OK: Kernel upgrade success! Please reboot with: sync && sudo reboot
ubuntu@bpi-m2z:~$ sync
ubuntu@bpi-m2z:~$ sudo reboot
Connection to 192.168.254.16 closed by remote host.
Connection to 192.168.254.16 closed.
alex@svn:/arm/ubuntu/friendlywrt-rk3328$ ssh [email protected]
[email protected]'s password: 
Welcome to Ubuntu 19.10 (GNU/Linux 5.6.5-r1 armv7l)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage

Last login: Mon Apr 20 23:04:40 2020 from 192.168.254.253
ubuntu@bpi-m2z:~$ 

Checking for the Bluetooth:

ubuntu@bpi-m2z:~$ hciconfig
hci0:	Type: Primary  Bus: UART
	BD Address: CC:B8:A8:A9:E5:67  ACL MTU: 1021:8  SCO MTU: 64:1
	UP RUNNING PSCAN 
	RX bytes:2184 acl:0 sco:0 events:214 errors:0
	TX bytes:36815 acl:0 sco:0 commands:215 errors:0

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

    aplay -D pulse /usr/share/sounds/alsa/Front_Right.wav (sound output via pulse)

    aplay -D sysdefault:CARD=1 /usr/share/sounds/alsa/Front_Right.wav (HDMI sound output)

    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:

    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:

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:

    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

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

Issue:

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

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

Configuring ZRAM for the memory hungry stuffs

	sudo apt-get install zram-config
	sync && sudo reboot

On next reboot you will see if ZRAM is active:

	ubuntu@bpi-m2z:~$ ls /dev/zr*
	/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:

* framebuffer with 1920x1080
* mali (3D GPU) - fbdev only (Thanks to Maxime Ripard from bootlin)
* eth0 up
* wlan0 up
* i2c enabled ( /dev/i2c-0 and /dev/i2c-1 )
* spi enabled ( /dev/spidev0.0 )
* bare minimum image. (**30 Mbytes of RAM used**)
* new rootfs from scratch
* ssh enabled
* 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:

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

Known issues:

* Hit ENTER twice to see the login prompt if you get a blank screen
* Boot with your monitor/display turned ON before you power the board
* HDMI driver is under development, Jernej (the dev. person behind the driver)
  has given some tips to fix this issue.
* Debian Bug report logs - #892229
  wireless-regdb: Missing support for kernel direct loading
  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:

wpa_passphrase SSID 01234567890

where SSID is your Wifi SSID and 01234567890 your password

Edit and change accordingly:

iface wlan0 inet dhcp
wpa-ssid SSID
#psk="1234567890"
wpa-psk 93c8ff514dc02ae4944f89424d7b0d94f42ab3245cc413755ab655b8e344a2d9
dns-nameservers 8.8.8.8 8.8.4.4
wireless-power off

To do after first boot (Advanced users):

* build regulatory.db to your country for the wifi to get full power

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

      dmesg | tail
    

    An output of USB SDHC reader/writer card

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

    An output of internal SDHC reader/writer card

      [ 2024.720656] mmc0: new SDHC card at address 59b4
      [ 2024.759743] mmcblk0: mmc0:59b4 SDU1  7.52 GiB 
      [ 2024.759889]  mmcblk0: p1 p2
      [ 2025.140282] EXT4-fs (mmcblk0p1): mounted filesystem with ordered data mode
      [ 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)

      sudo ./format_sd_mainline.sh /dev/sdc
    

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

      sudo ./format_sd_mainline.sh /dev/mmcblk0
    

Image v2 (Kernel 4.17.4)

  • flash Image to sd card (ssh enabled):

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

Image v1 (Kernel 4.15.y)

  • flash Image to sd card:

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

      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

iface wlan0 inet dhcp
wpa-ssid SSID <== change this
#psk="1234567890"
wpa-psk 93c8ff514dc02ae4944f89424d7b0d94f42ab3245cc413755ab655b8e344a2d9 <== change this
dns-nameservers 8.8.8.8 8.8.4.4
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:

allow-hotplug wlan0
  iface wlan0 inet dhcp
  wpa-ssid your_ssid
  #psk="12345678901234567890"
  wpa-psk ababaf514dc02ae4944f89424d7b0d94f42ab3245cc413755ab655b8e344a2d9
  dns-nameservers 8.8.8.8 8.8.4.4
  wireless-power off <==== add this

reboot now:

sudo reboot

Mali benchmark

You can benchmark mali for fbdev, type in shell:

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

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

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

sudo apt-get update
sudo apt-get dist-upgrade
sync
sudo apt-get install lxde

Wait until it finished and issue:

sync
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

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

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

	# /etc/modules: kernel modules to load at boot time.
	#
	# This file contains the names of kernel modules that should be loaded
	# at boot time, one per line. Lines beginning with "#" are ignored.
	#xradio_wlan
	g_serial
	#xradio_wlan
	brcmfmac
	bluetooth
	hci_uart
	rfcomm
  • Boot with the new /etc/modules

  • in shell type:

      sudo su (to become root)
      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:

	hciattach /dev/ttyS1 any

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

	hcitool devi
	Devices:
		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.

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

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

	pcm.!default {
	    type hw
	    card 0
	    device 0
	}
	 
	ctl.!default {
	    type hw
	    card 0
	}

sync && reboot.

Check device:

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

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

	alsamixer
	and un-mute and turn up the Line up and everything

and review:

	sudo amixer
	Simple mixer control 'Line In',0
	  Capabilities: pvolume pvolume-joined pswitch cswitch
	  Playback channels: Front Left - Front Right
	  Capture channels: Front Left - Front Right
	  Limits: Playback 0 - 7
	  Front Left: Playback 5 [71%] [3.00dB] [off] Capture [off]
	  Front Right: Playback 5 [71%] [3.00dB] [off] Capture [off]
	Simple mixer control 'Line Out',0
	  Capabilities: pvolume pvolume-joined pswitch
	  Playback channels: Front Left - Front Right
	  Limits: Playback 0 - 31
	  Mono:
	  Front Left: Playback 25 [81%] [-9.00dB] [on]
	  Front Right: Playback 25 [81%] [-9.00dB] [on]
	Simple mixer control 'Line Out Source',0
	  Capabilities: penum
	  Items: 'Stereo' 'Mono Differential'
	  Item0: 'Stereo'
	  Item1: 'Stereo'
	Simple mixer control 'Mic1',0
	  Capabilities: pvolume pvolume-joined pswitch cswitch
	  Playback channels: Front Left - Front Right
	  Capture channels: Front Left - Front Right
	  Limits: Playback 0 - 7
	  Front Left: Playback 3 [43%] [0.00dB] [off] Capture [off]
	  Front Right: Playback 3 [43%] [0.00dB] [off] Capture [off]
	Simple mixer control 'Mic1 Boost',0
	  Capabilities: volume volume-joined
	  Playback channels: Mono
	  Capture channels: Mono
	  Limits: 0 - 7
	  Mono: 4 [57%] [33.00dB]
	Simple mixer control 'Mic2',0
	  Capabilities: pvolume pvolume-joined pswitch cswitch
	  Playback channels: Front Left - Front Right
	  Capture channels: Front Left - Front Right
	  Limits: Playback 0 - 7
	  Front Left: Playback 3 [43%] [0.00dB] [off] Capture [off]
	  Front Right: Playback 3 [43%] [0.00dB] [off] Capture [off]
	Simple mixer control 'Mic2 Boost',0
	  Capabilities: volume volume-joined
	  Playback channels: Mono
	  Capture channels: Mono
	  Limits: 0 - 7
	  Mono: 4 [57%] [33.00dB]
	Simple mixer control 'Mixer',0
	  Capabilities: cswitch
	  Capture channels: Front Left - Front Right
	  Front Left: Capture [off]
	  Front Right: Capture [off]
	Simple mixer control 'Mixer Reversed',0
	  Capabilities: cswitch
	  Capture channels: Front Left - Front Right
	  Front Left: Capture [off]
	  Front Right: Capture [off]
	Simple mixer control 'ADC Gain',0
	  Capabilities: cvolume cvolume-joined
	  Capture channels: Mono
	  Limits: Capture 0 - 7
	  Mono: Capture 3 [43%] [0.00dB]
	Simple mixer control 'DAC',0
	  Capabilities: pvolume pvolume-joined pswitch
	  Playback channels: Front Left - Front Right
	  Limits: Playback 0 - 63
	  Mono:
	  Front Left: Playback 45 [71%] [-20.88dB] [on]
	  Front Right: Playback 45 [71%] [-20.88dB] [on]
	Simple mixer control 'DAC Reversed',0
	  Capabilities: pswitch
	  Playback channels: Front Left - Front Right
	  Mono:
	  Front Left: Playback [off]
	  Front Right: Playback [off]

Testing ALSA:

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

Now install pulse:

	sudo apt-get install pulseaudio pulseaudio-module-bluetooth

sync && reboot.

Now check if pulse is running:

	ps -e|grep pulse
	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):

	sudo su (become root)
	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
	Done setting line discpline (^C)
	hciattach /dev/ttyS1 any
	hciconfig list
	hci0:	Type: BR/EDR  Bus: UART
		BD Address: 11:22:33:44:55:66  ACL MTU: 1021:8  SCO MTU: 64:1
		UP RUNNING 
		RX bytes:1214 acl:0 sco:0 events:42 errors:0
		TX bytes:756 acl:0 sco:0 commands:42 errors:0
	hciconfig -a
	hci0:	Type: BR/EDR  Bus: UART
		BD Address: 11:22:33:44:55:66  ACL MTU: 1021:8  SCO MTU: 64:1
		UP RUNNING 
		RX bytes:934 acl:0 sco:0 events:39 errors:0
		TX bytes:744 acl:0 sco:0 commands:39 errors:0
		Features: 0xbf 0xfe 0xcf 0xfe 0xdb 0xff 0x7b 0x87
		Packet type: DM1 DM3 DM5 DH1 DH3 DH5 HV1 HV2 HV3 
		Link policy: RSWITCH SNIFF 
		Link mode: SLAVE ACCEPT 
		Name: 'bpi-m2z'
		Class: 0x000000
		Service Classes: Unspecified
		Device Class: Miscellaneous, 
		HCI Version: 4.0 (0x6)  Revision: 0x6a
		LMP Version: 4.0 (0x6)  Subversion: 0x2209
		Manufacturer: Broadcom Corporation (15)

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

	bluetoothctl -a
	[NEW] Controller 22:22:33:44:55:66 bpi-m2z [default]
	Agent registered
	[bluetooth]# devices
	[bluetooth]# list
	Controller 22:22:33:44:55:66 bpi-m2z [default]
	[bluetooth]# power on
	Changing power on succeeded
	[bluetooth]# agent on
	Agent is already registered
	[bluetooth]# default-agent
	Default agent request successful
	[bluetooth]# scan on
	Discovery started
	[CHG] Controller 22:22:33:44:55:66 Discovering: yes
	[NEW] Device 00:17:CA:F7:38:18 Haier HW-W910
	[bluetooth]# pair 00:17:CA:F7:38:18
	Attempting to pair with 00:17:CA:F7:38:18
	[CHG] Device 00:17:CA:F7:38:18 Connected: yes
	Request confirmation
	[agent] Confirm passkey 736813 (yes/no): yes
	[CHG] Device 00:17:CA:F7:38:18 Modalias: usb:v000Ap0000d0000
	[CHG] Device 00:17:CA:F7:38:18 UUIDs: 00001105-0000-1000-8000-00805f9b34fb
	[CHG] Device 00:17:CA:F7:38:18 UUIDs: 0000110a-0000-1000-8000-00805f9b34fb
	[CHG] Device 00:17:CA:F7:38:18 UUIDs: 0000110c-0000-1000-8000-00805f9b34fb
	[CHG] Device 00:17:CA:F7:38:18 UUIDs: 00001112-0000-1000-8000-00805f9b34fb
	[CHG] Device 00:17:CA:F7:38:18 UUIDs: 00001116-0000-1000-8000-00805f9b34fb
	[CHG] Device 00:17:CA:F7:38:18 UUIDs: 0000111f-0000-1000-8000-00805f9b34fb
	[CHG] Device 00:17:CA:F7:38:18 UUIDs: 0000112f-0000-1000-8000-00805f9b34fb
	[CHG] Device 00:17:CA:F7:38:18 UUIDs: 00001132-0000-1000-8000-00805f9b34fb
	[CHG] Device 00:17:CA:F7:38:18 UUIDs: 00001200-0000-1000-8000-00805f9b34fb
	[CHG] Device 00:17:CA:F7:38:18 UUIDs: 00001800-0000-1000-8000-00805f9b34fb
	[CHG] Device 00:17:CA:F7:38:18 UUIDs: 00001801-0000-1000-8000-00805f9b34fb
	[CHG] Device 00:17:CA:F7:38:18 Paired: yes
	Pairing successful
	[CHG] Device 00:17:CA:F7:38:18 Connected: no
	[bluetooth]# devices
	Device 00:17:CA:F7:38:18 Haier HW-W910
	[bluetooth]# list
	Controller 22:22:33:44:55:66 bpi-m2z [default]
	[bluetooth]# info 00:17:CA:F7:38:18
	Device 00:17:CA:F7:38:18
		Name: Haier HW-W910
		Alias: Haier HW-W910
		Class: 0x5a020c
		Icon: phone
		Paired: yes
		Trusted: no
		Blocked: no
		Connected: no
		LegacyPairing: no
		UUID: OBEX Object Push          (00001105-0000-1000-8000-00805f9b34fb)
		UUID: Audio Source              (0000110a-0000-1000-8000-00805f9b34fb)
		UUID: A/V Remote Control Target (0000110c-0000-1000-8000-00805f9b34fb)
		UUID: Headset AG                (00001112-0000-1000-8000-00805f9b34fb)
		UUID: NAP                       (00001116-0000-1000-8000-00805f9b34fb)
		UUID: Handsfree Audio Gateway   (0000111f-0000-1000-8000-00805f9b34fb)
		UUID: Phonebook Access Server   (0000112f-0000-1000-8000-00805f9b34fb)
		UUID: Message Access Server     (00001132-0000-1000-8000-00805f9b34fb)
		UUID: PnP Information           (00001200-0000-1000-8000-00805f9b34fb)
		UUID: Generic Access Profile    (00001800-0000-1000-8000-00805f9b34fb)
		UUID: Generic Attribute Profile (00001801-0000-1000-8000-00805f9b34fb)
		Modalias: usb:v000Ap0000d0000
		RSSI: -42
	[bluetooth]# list-attributes 00:17:CA:F7:38:18
	[bluetooth]# connect 00:17:CA:F7:38:18
	Attempting to connect to 00:17:CA:F7:38:18
	[CHG] Device 00:17:CA:F7:38:18 Connected: yes
	Connection successful
	[Haier HW-W910]# list-attributes 00:17:CA:F7:38:18
	[Haier HW-W910]# disconnect 00:17:CA:F7:38:18
	Attempting to disconnect from 00:17:CA:F7:38:18
	Successful disconnected
	[CHG] Device 00:17:CA:F7:38:18 Connected: no
	[bluetooth]# list-attributes 00:17:CA:F7:38:18
	[bluetooth]# info 00:17:CA:F7:38:18
	Device 00:17:CA:F7:38:18
		Name: Haier HW-W910
		Alias: Haier HW-W910
		Class: 0x5a020c
		Icon: phone
		Paired: yes
		Trusted: no
		Blocked: no
		Connected: no
		LegacyPairing: no
		UUID: OBEX Object Push          (00001105-0000-1000-8000-00805f9b34fb)
		UUID: Audio Source              (0000110a-0000-1000-8000-00805f9b34fb)
		UUID: A/V Remote Control Target (0000110c-0000-1000-8000-00805f9b34fb)
		UUID: Headset AG                (00001112-0000-1000-8000-00805f9b34fb)
		UUID: NAP                       (00001116-0000-1000-8000-00805f9b34fb)
		UUID: Handsfree Audio Gateway   (0000111f-0000-1000-8000-00805f9b34fb)
		UUID: Phonebook Access Server   (0000112f-0000-1000-8000-00805f9b34fb)
		UUID: Message Access Server     (00001132-0000-1000-8000-00805f9b34fb)
		UUID: PnP Information           (00001200-0000-1000-8000-00805f9b34fb)
		UUID: Generic Access Profile    (00001800-0000-1000-8000-00805f9b34fb)
		UUID: Generic Attribute Profile (00001801-0000-1000-8000-00805f9b34fb)
		Modalias: usb:v000Ap0000d0000
		RSSI: -42
	[bluetooth]# connect 00:17:CA:F7:38:18
	Attempting to connect to 00:17:CA:F7:38:18
	[CHG] Device 00:17:CA:F7:38:18 Connected: yes
	Connection successful
	[Haier HW-W910]# trust 00:17:CA:F7:38:18
	[CHG] Device 00:17:CA:F7:38:18 Trusted: yes
	Changing 00:17:CA:F7:38:18 trust succeeded
	[Haier HW-W910]# info 00:17:CA:F7:38:18
	Device 00:17:CA:F7:38:18
		Name: Haier HW-W910
		Alias: Haier HW-W910
		Class: 0x5a020c
		Icon: phone
		Paired: yes
		Trusted: yes
		Blocked: no
		Connected: yes
		LegacyPairing: no
		UUID: OBEX Object Push          (00001105-0000-1000-8000-00805f9b34fb)
		UUID: Audio Source              (0000110a-0000-1000-8000-00805f9b34fb)
		UUID: A/V Remote Control Target (0000110c-0000-1000-8000-00805f9b34fb)
		UUID: Headset AG                (00001112-0000-1000-8000-00805f9b34fb)
		UUID: NAP                       (00001116-0000-1000-8000-00805f9b34fb)
		UUID: Handsfree Audio Gateway   (0000111f-0000-1000-8000-00805f9b34fb)
		UUID: Phonebook Access Server   (0000112f-0000-1000-8000-00805f9b34fb)
		UUID: Message Access Server     (00001132-0000-1000-8000-00805f9b34fb)
		UUID: PnP Information           (00001200-0000-1000-8000-00805f9b34fb)
		UUID: Generic Access Profile    (00001800-0000-1000-8000-00805f9b34fb)
		UUID: Generic Attribute Profile (00001801-0000-1000-8000-00805f9b34fb)
		Modalias: usb:v000Ap0000d0000
		RSSI: -42
	[Haier HW-W910]# list-attributes 00:17:CA:F7:38:18
	[Haier HW-W910]# untrust 00:17:CA:F7:38:18
	[CHG] Device 00:17:CA:F7:38:18 Trusted: no
	Changing 00:17:CA:F7:38:18 untrust succeeded
	[Haier HW-W910]# disconnect 00:17:CA:F7:38:18
	Attempting to disconnect from 00:17:CA:F7:38:18
	Successful disconnected
	[CHG] Device 00:17:CA:F7:38:18 Connected: no
	[bluetooth]# remove 00:17:CA:F7:38:18
	[DEL] Device 00:17:CA:F7:38:18 Haier HW-W910
	Device has been removed
	[bluetooth]# list
	Controller 22:22:33:44:55:66 bpi-m2z [default]
	[NEW] Device 00:17:CA:F7:38:18 Haier HW-W910
	[bluetooth]# scan off
	[CHG] Device 00:17:CA:F7:38:18 RSSI is nil
	Discovery stopped
	[CHG] Controller 22:22:33:44:55:66 Discovering: no
	[bluetooth]# 
	[bluetooth]# quit
	Agent unregistered
	[DEL] Controller 22:22:33:44:55:66 bpi-m2z [default]

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

	dptool browse 00:17:CA:F7:38:18|grep "Service Name"
	Service Name: Generic Access Profile
	Service Name: Generic Attribute Profile
	Service Name: Audio Source
	Service Name: AVRCP TG
	Service Name: Voice Gateway
	Service Name: OBEX Object Push
	Service Name: Voice Gateway
	Service Name: OBEX Phonebook Access Server
	Service Name: Network service
	Service Name: SMS/MMS Message Access
	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:

	#!/bin/sh -e
	#
	# rc.local
	#
	# This script is executed at the end of each multiuser runlevel.
	# Make sure that the script will "exit 0" on success or any other
	# value on error.
	#
	# In order to enable or disable this script just change the execution
	# bits.
	#
	# By default this script does nothing.
	
	# ------------------------
	# ------ enable BT -------
	# ------------------------
	# borrowed from madscientist42
	# Compute a BD_ADDR.  We're going to use pieces of the device serial number for the LAP part.
	SERIAL=`cat /proc/device-tree/serial-number | cut -c9-`
	B1=`echo $SERIAL | cut -c3-4`
	B2=`echo $SERIAL | cut -c5-6`
	B3=`echo $SERIAL | cut -c7-8`
	BDADDR=`printf b8:27:eb:%02x:%02x:%02x $((0x$B1 ^ 0xaa)) $((0x$B2 ^ 0xaa)) $((0x$B3 ^ 0xaa))`
	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 &
	# -- BT end --------------
	
	exit 0
	#!/bin/bash

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

	sudo chmod +x /etc/rc.local

Build your own Kernel

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

  • Install tools

    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:

mkdir -p linux
cd linux
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

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

Build:

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

Install:

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

Make it current kernel

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

Reboot

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:

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

and media information in:

ubuntu@bpi-m2z:~$ ll /dev/media*
crw-rw-rw- 1 root video 243, 0 Apr 11  2019 /dev/media0
crw-rw-rw- 1 root video 243, 1 Apr 11  2019 /dev/media1
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:

ubuntu@bpi-m2z:~$ media-ctl --device /dev/media2 --print-topology
Media controller API version 5.7.10

Media device information
------------------------
driver          uvcvideo
model           USB 2.0 Camera: HD 720P Webcam
serial          
bus info        usb-1c1a000.usb-1.2
hw revision     0x0
driver version  5.7.10

Device topology
- entity 1: USB 2.0 Camera: HD 720P Webcam (1 pad, 1 link)
	    type Node subtype V4L flags 1
	    device node name /dev/video2
	pad0: Sink
		<- "Extension 4":1 [ENABLED,IMMUTABLE]

- entity 4: USB 2.0 Camera: HD 720P Webcam (0 pad, 0 link)
	    type Node subtype V4L flags 0
	    device node name /dev/video3

- entity 8: Extension 4 (2 pads, 2 links)
	    type V4L2 subdev subtype Unknown flags 0
	pad0: Sink
		<- "Processing 3":1 [ENABLED,IMMUTABLE]
	pad1: Source
		-> "USB 2.0 Camera: HD 720P Webcam":0 [ENABLED,IMMUTABLE]

- entity 11: Processing 3 (2 pads, 2 links)
	     type V4L2 subdev subtype Unknown flags 0
	pad0: Sink
		<- "Camera 1":0 [ENABLED,IMMUTABLE]
	pad1: Source
		-> "Extension 4":0 [ENABLED,IMMUTABLE]

- entity 14: Camera 1 (1 pad, 1 link)
	     type V4L2 subdev subtype Unknown flags 0
	pad0: Source
		-> "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:

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:

ubuntu@bpi-m2z:~$ media-ctl -v --device /dev/media1 --known-mbus-fmts
RGB444_1X12                     0x1016
RGB444_2X8_PADHI_BE             0x1001
RGB444_2X8_PADHI_LE             0x1002
RGB555_2X8_PADHI_BE             0x1003
RGB555_2X8_PADHI_LE             0x1004
RGB565_1X16                     0x1017
BGR565_2X8_BE                   0x1005
BGR565_2X8_LE                   0x1006
RGB565_2X8_BE                   0x1007
RGB565_2X8_LE                   0x1008
RGB666_1X18                     0x1009
RBG888_1X24                     0x100e
RGB666_1X24_CPADHI              0x1015
RGB666_1X7X3_SPWG               0x1010
BGR888_1X24                     0x1013
GBR888_1X24                     0x1014
RGB888_1X24                     0x100a
RGB888_2X12_BE                  0x100b
RGB888_2X12_LE                  0x100c
RGB888_1X7X4_SPWG               0x1011
RGB888_1X7X4_JEIDA              0x1012
ARGB8888_1X32                   0x100d
RGB888_1X32_PADHI               0x100f
RGB101010_1X30                  0x1018
RGB121212_1X36                  0x1019
RGB161616_1X48                  0x101a
Y8_1X8                          0x2001
UV8_1X8                         0x2015
UYVY8_1_5X8                     0x2002
VYUY8_1_5X8                     0x2003
YUYV8_1_5X8                     0x2004
YVYU8_1_5X8                     0x2005
UYVY8_2X8                       0x2006
VYUY8_2X8                       0x2007
YUYV8_2X8                       0x2008
YVYU8_2X8                       0x2009
Y10_1X10                        0x200a
Y10_2X8_PADHI_LE                0x202c
UYVY10_2X10                     0x2018
VYUY10_2X10                     0x2019
YUYV10_2X10                     0x200b
YVYU10_2X10                     0x200c
Y12_1X12                        0x2013
UYVY12_2X12                     0x201c
VYUY12_2X12                     0x201d
YUYV12_2X12                     0x201e
YVYU12_2X12                     0x201f
UYVY8_1X16                      0x200f
VYUY8_1X16                      0x2010
YUYV8_1X16                      0x2011
YVYU8_1X16                      0x2012
YDYUYDYV8_1X16                  0x2014
UYVY10_1X20                     0x201a
VYUY10_1X20                     0x201b
YUYV10_1X20                     0x200d
YVYU10_1X20                     0x200e
VUY8_1X24                       0x2024
YUV8_1X24                       0x2025
UYYVYY8_0_5X24                  0x2026
UYVY12_1X24                     0x2020
VYUY12_1X24                     0x2021
YUYV12_1X24                     0x2022
YVYU12_1X24                     0x2023
YUV10_1X30                      0x2016
UYYVYY10_0_5X30                 0x2027
AYUV8_1X32                      0x2017
UYYVYY12_0_5X36                 0x2028
YUV12_1X36                      0x2029
YUV16_1X48                      0x202a
UYYVYY16_0_5X48                 0x202b
SBGGR8_1X8                      0x3001
SGBRG8_1X8                      0x3013
SGRBG8_1X8                      0x3002
SRGGB8_1X8                      0x3014
SBGGR10_ALAW8_1X8               0x3015
SGBRG10_ALAW8_1X8               0x3016
SGRBG10_ALAW8_1X8               0x3017
SRGGB10_ALAW8_1X8               0x3018
SBGGR10_DPCM8_1X8               0x300b
SGBRG10_DPCM8_1X8               0x300c
SGRBG10_DPCM8_1X8               0x3009
SRGGB10_DPCM8_1X8               0x300d
SBGGR10_2X8_PADHI_BE            0x3003
SBGGR10_2X8_PADHI_LE            0x3004
SBGGR10_2X8_PADLO_BE            0x3005
SBGGR10_2X8_PADLO_LE            0x3006
SBGGR10_1X10                    0x3007
SGBRG10_1X10                    0x300e
SGRBG10_1X10                    0x300a
SRGGB10_1X10                    0x300f
SBGGR12_1X12                    0x3008
SGBRG12_1X12                    0x3010
SGRBG12_1X12                    0x3011
SRGGB12_1X12                    0x3012
SBGGR14_1X14                    0x3019
SGBRG14_1X14                    0x301a
SGRBG14_1X14                    0x301b
SRGGB14_1X14                    0x301c
SBGGR16_1X16                    0x301d
SGBRG16_1X16                    0x301e
SGRBG16_1X16                    0x301f
SRGGB16_1X16                    0x3020
JPEG_1X8                        0x4001
S5C_UYVY_JPEG_1X8               0x5001
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

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

      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

ubuntu@bpi-m2z:~$ ifconfig
eth0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
	ether 0a:e8:6a:5d:c9:67  txqueuelen 1000  (Ethernet)
	RX packets 0  bytes 0 (0.0 B)
	RX errors 0  dropped 0  overruns 0  frame 0
	TX packets 0  bytes 0 (0.0 B)
	TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
	device interrupt 39  

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
	inet 127.0.0.1  netmask 255.0.0.0
	inet6 ::1  prefixlen 128  scopeid 0x10<host>
	loop  txqueuelen 1000  (Local Loopback)
	RX packets 80  bytes 5920 (5.9 KB)
	RX errors 0  dropped 0  overruns 0  frame 0
	TX packets 80  bytes 5920 (5.9 KB)
	TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
	inet 192.168.254.40  netmask 255.255.0.0  broadcast 192.168.255.255
	inet6 2804:7f4:3580:4e5c:54d7:6af3:db1c:17d7  prefixlen 64  scopeid 0x0<global>
	inet6 fe80::ceb8:a8ff:fea9:e566  prefixlen 64  scopeid 0x20<link>
	inet6 2804:7f4:3580:4e5c:ceb8:a8ff:fea9:e566  prefixlen 64  scopeid 0x0<global>
	ether cc:b8:a8:a9:e5:66  txqueuelen 1000  (Ethernet)
	RX packets 1642540  bytes 99599273 (99.5 MB)
	RX errors 0  dropped 0  overruns 0  frame 0
	TX packets 5776910  bytes 4248531828 (4.2 GB)
	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

[    0.000000] Booting Linux on physical CPU 0x0
[    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
[    0.000000] CPU: ARMv7 Processor [410fc075] revision 5 (ARMv7), cr=10c5387d
[    0.000000] CPU: div instructions available: patching division code
[    0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache
[    0.000000] OF: fdt: Machine model: Banana Pi M2 Zero
[    0.000000] Memory policy: Data cache writealloc
[    0.000000] Reserved memory: created CMA memory pool at 0x4a000000, size 96 MiB
[    0.000000] OF: reserved mem: initialized node cma@4a000000, compatible id shared-dma-pool
[    0.000000] On node 0 totalpages: 131072
[    0.000000]   Normal zone: 1024 pages used for memmap
[    0.000000]   Normal zone: 0 pages reserved
[    0.000000]   Normal zone: 131072 pages, LIFO batch:31
[    0.000000] psci: probing for conduit method from DT.
[    0.000000] psci: Using PSCI v0.1 Function IDs from DT
[    0.000000] random: get_random_bytes called from start_kernel+0xa0/0x3f4 with crng_init=0
[    0.000000] percpu: Embedded 16 pages/cpu @(ptrval) s35020 r8192 d22324 u65536
[    0.000000] pcpu-alloc: s35020 r8192 d22324 u65536 alloc=16*4096
[    0.000000] pcpu-alloc: [0] 0 [0] 1 [0] 2 [0] 3 
[    0.000000] Built 1 zonelists, mobility grouping on.  Total pages: 130048
[    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
[    0.000000] Dentry cache hash table entries: 65536 (order: 6, 262144 bytes)
[    0.000000] Inode-cache hash table entries: 32768 (order: 5, 131072 bytes)
[    0.000000] Memory: 407036K/524288K available (8192K kernel code, 341K rwdata, 1960K rodata, 1024K init, 268K bss, 18948K reserved, 98304K cma-reserved, 0K highmem)
[    0.000000] Virtual kernel memory layout:
                   vector  : 0xffff0000 - 0xffff1000   (   4 kB)
                   fixmap  : 0xffc00000 - 0xfff00000   (3072 kB)
                   vmalloc : 0xe0800000 - 0xff800000   ( 496 MB)
                   lowmem  : 0xc0000000 - 0xe0000000   ( 512 MB)
                   pkmap   : 0xbfe00000 - 0xc0000000   (   2 MB)
                   modules : 0xbf000000 - 0xbfe00000   (  14 MB)
                     .text : 0x(ptrval) - 0x(ptrval)   (9184 kB)
                     .init : 0x(ptrval) - 0x(ptrval)   (1024 kB)
                     .data : 0x(ptrval) - 0x(ptrval)   ( 342 kB)
                      .bss : 0x(ptrval) - 0x(ptrval)   ( 269 kB)
[    0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=4, Nodes=1
[    0.000000] rcu: Hierarchical RCU implementation.
[    0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 10 jiffies.
[    0.000000] NR_IRQS: 16, nr_irqs: 16, preallocated irqs: 16
[    0.000000] GIC: Using split EOI/Deactivate mode
[    0.000000] clocksource: timer: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 79635851949 ns
[    0.000000] arch_timer: cp15 timer(s) running at 24.00MHz (phys).
[    0.000000] clocksource: arch_sys_counter: mask: 0xffffffffffffff max_cycles: 0x588fe9dc0, max_idle_ns: 440795202592 ns
[    0.000006] sched_clock: 56 bits at 24MHz, resolution 41ns, wraps every 4398046511097ns
[    0.000018] Switching to timer-based delay loop, resolution 41ns
[    0.000214] Console: colour dummy device 80x30
[    0.000267] Calibrating delay loop (skipped), value calculated using timer frequency.. 48.00 BogoMIPS (lpj=240000)
[    0.000282] pid_max: default: 32768 minimum: 301
[    0.000433] Mount-cache hash table entries: 1024 (order: 0, 4096 bytes)
[    0.000448] Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes)
[    0.001143] CPU: Testing write buffer coherency: ok
[    0.001605] CPU0: update cpu_capacity 1024
[    0.001617] CPU0: thread -1, cpu 0, socket 0, mpidr 80000000
[    0.002178] Setting up static identity map for 0x40100000 - 0x40100060
[    0.002331] rcu: Hierarchical SRCU implementation.
[    0.003088] smp: Bringing up secondary CPUs ...
[    0.013872] CPU1: update cpu_capacity 1024
[    0.013878] CPU1: thread -1, cpu 1, socket 0, mpidr 80000001
[    0.024754] CPU2: update cpu_capacity 1024
[    0.024760] CPU2: thread -1, cpu 2, socket 0, mpidr 80000002
[    0.035538] CPU3: update cpu_capacity 1024
[    0.035543] CPU3: thread -1, cpu 3, socket 0, mpidr 80000003
[    0.035629] smp: Brought up 1 node, 4 CPUs
[    0.035658] SMP: Total of 4 processors activated (192.00 BogoMIPS).
[    0.035665] CPU: All CPU(s) started in HYP mode.
[    0.035671] CPU: Virtualization extensions available.
[    0.036727] devtmpfs: initialized
[    0.043445] VFP support v0.3: implementor 41 architecture 2 part 30 variant 7 rev 5
[    0.043696] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns
[    0.043722] futex hash table entries: 1024 (order: 4, 65536 bytes)
[    0.047452] pinctrl core: initialized pinctrl subsystem
[    0.048536] NET: Registered protocol family 16
[    0.050400] DMA: preallocated 256 KiB pool for atomic coherent allocations
[    0.051329] cpuidle: using governor menu
[    0.051686] hw-breakpoint: found 5 (+1 reserved) breakpoint and 4 watchpoint registers.
[    0.051696] hw-breakpoint: maximum watchpoint size is 8 bytes.
[    0.069898] SCSI subsystem initialized
[    0.070151] libata version 3.00 loaded.
[    0.070373] usbcore: registered new interface driver usbfs
[    0.070421] usbcore: registered new interface driver hub
[    0.070503] usbcore: registered new device driver usb
[    0.070816] pps_core: LinuxPPS API ver. 1 registered
[    0.070824] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <[email protected]>
[    0.070850] PTP clock support registered
[    0.071236] Advanced Linux Sound Architecture Driver Initialized.
[    0.072602] clocksource: Switched to clocksource arch_sys_counter
[    0.072746] VFS: Disk quotas dquot_6.6.0
[    0.072813] VFS: Dquot-cache hash table entries: 1024 (order 0, 4096 bytes)
[    0.080888] NET: Registered protocol family 2
[    0.081871] tcp_listen_portaddr_hash hash table entries: 512 (order: 0, 6144 bytes)
[    0.081901] TCP established hash table entries: 4096 (order: 2, 16384 bytes)
[    0.081953] TCP bind hash table entries: 4096 (order: 3, 32768 bytes)
[    0.082017] TCP: Hash tables configured (established 4096 bind 4096)
[    0.082147] UDP hash table entries: 256 (order: 1, 8192 bytes)
[    0.082194] UDP-Lite hash table entries: 256 (order: 1, 8192 bytes)
[    0.082449] NET: Registered protocol family 1
[    0.083046] RPC: Registered named UNIX socket transport module.
[    0.083059] RPC: Registered udp transport module.
[    0.083065] RPC: Registered tcp transport module.
[    0.083071] RPC: Registered tcp NFSv4.1 backchannel transport module.
[    0.083755] Unpacking initramfs...
[    0.127611] Freeing initrd memory: 960K
[    0.129426] Initialise system trusted keyrings
[    0.129818] workingset: timestamp_bits=30 max_order=17 bucket_order=0
[    0.137120] squashfs: version 4.0 (2009/01/31) Phillip Lougher
[    0.138629] NFS: Registering the id_resolver key type
[    0.138670] Key type id_resolver registered
[    0.138676] Key type id_legacy registered
[    0.138693] nfs4filelayout_init: NFSv4 File Layout Driver Registering...
[    0.138702] Installing knfsd (copyright (C) 1996 [email protected]).
[    0.139599] fuse init (API version 7.28)
[    0.140049] SGI XFS with ACLs, security attributes, realtime, no debug enabled
[    0.148962] Key type asymmetric registered
[    0.148986] Asymmetric key parser 'x509' registered
[    0.149085] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 247)
[    0.149098] io scheduler noop registered
[    0.149104] io scheduler deadline registered
[    0.149331] io scheduler cfq registered (default)
[    0.149342] io scheduler mq-deadline registered
[    0.149350] io scheduler kyber registered
[    0.150418] sun4i-usb-phy 1c19400.phy: Couldn't request ID GPIO
[    0.154712] sun8i-h3-pinctrl 1c20800.pinctrl: initialized sunXi PIO driver
[    0.156494] sun8i-h3-r-pinctrl 1f02c00.pinctrl: initialized sunXi PIO driver
[    0.205952] Serial: 8250/16550 driver, 8 ports, IRQ sharing disabled
[    0.208391] printk: console [ttyS0] disabled
[    0.228619] 1c28000.serial: ttyS0 at MMIO 0x1c28000 (irq = 44, base_baud = 1500000) is a U6_16550A
[    0.950227] printk: console [ttyS0] enabled
[    0.975650] 1c28400.serial: ttyS1 at MMIO 0x1c28400 (irq = 45, base_baud = 1500000) is a U6_16550A
[    0.997540] sun4i-drm display-engine: bound 1100000.mixer (ops 0xc095568c)
[    1.004716] sun4i-drm display-engine: bound 1c0c000.lcd-controller (ops 0xc095275c)
[    1.012419] sun8i-dw-hdmi 1ee0000.hdmi: 1ee0000.hdmi supply hvcc not found, using dummy regulator
[    1.021366] sun8i-dw-hdmi 1ee0000.hdmi: Linked as a consumer to regulator.0
[    1.029143] sun8i-dw-hdmi 1ee0000.hdmi: Detected HDMI TX controller v1.32a with HDCP (sun8i_dw_hdmi_phy)
[    1.039027] sun8i-dw-hdmi 1ee0000.hdmi: registered DesignWare HDMI I2C bus driver
[    1.046829] sun4i-drm display-engine: bound 1ee0000.hdmi (ops 0xc0955034)
[    1.053635] [drm] Supports vblank timestamp caching Rev 2 (21.10.2013).
[    1.060240] [drm] No driver support for vblank timestamp query.
[    1.268718] random: fast init done
[    1.599232] Console: switching to colour frame buffer device 240x67
[    1.638833] sun4i-drm display-engine: fb0: DRM emulated frame buffer device
[    1.646284] [drm] Initialized sun4i-drm 1.0.0 20150629 for display-engine on minor 0
[    1.657027] libphy: Fixed MDIO Bus: probed
[    1.661316] CAN device driver interface
[    1.665835] dwmac-sun8i 1c30000.ethernet: PTP uses main clock
[    1.671616] dwmac-sun8i 1c30000.ethernet: No regulator found
[    1.677662] dwmac-sun8i 1c30000.ethernet: No HW DMA feature register supported
[    1.684900] dwmac-sun8i 1c30000.ethernet: RX Checksum Offload Engine supported
[    1.692124] dwmac-sun8i 1c30000.ethernet: COE Type 2
[    1.697094] dwmac-sun8i 1c30000.ethernet: TX Checksum insertion supported
[    1.703897] dwmac-sun8i 1c30000.ethernet: Normal descriptors
[    1.709557] dwmac-sun8i 1c30000.ethernet: Chain mode enabled
[    1.715365] libphy: stmmac: probed
[    1.719299] dwmac-sun8i 1c30000.ethernet: Found internal PHY node
[    1.725528] libphy: mdio_mux: probed
[    1.729119] dwmac-sun8i 1c30000.ethernet: Switch mux to internal PHY
[    1.735484] dwmac-sun8i 1c30000.ethernet: Powering internal PHY
[    1.742359] libphy: mdio_mux: probed
[    1.746460] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
[    1.752997] ehci-platform: EHCI generic platform driver
[    1.758425] ehci-platform 1c1a000.usb: EHCI Host Controller
[    1.764033] ehci-platform 1c1a000.usb: new USB bus registered, assigned bus number 1
[    1.772190] ehci-platform 1c1a000.usb: irq 27, io mem 0x01c1a000
[    1.802613] ehci-platform 1c1a000.usb: USB 2.0 started, EHCI 1.00
[    1.808902] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002, bcdDevice= 4.20
[    1.817177] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    1.824409] usb usb1: Product: EHCI Host Controller
[    1.829281] usb usb1: Manufacturer: Linux 4.20.0-rc3-m2z-otg-gadget ehci_hcd
[    1.836330] usb usb1: SerialNumber: 1c1a000.usb
[    1.841429] hub 1-0:1.0: USB hub found
[    1.845232] hub 1-0:1.0: 1 port detected
[    1.850060] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
[    1.856279] ohci-platform: OHCI generic platform driver
[    1.861687] ohci-platform 1c1a400.usb: Generic Platform OHCI controller
[    1.868330] ohci-platform 1c1a400.usb: new USB bus registered, assigned bus number 2
[    1.876364] ohci-platform 1c1a400.usb: irq 28, io mem 0x01c1a400
[    1.946763] usb usb2: New USB device found, idVendor=1d6b, idProduct=0001, bcdDevice= 4.20
[    1.955045] usb usb2: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    1.962268] usb usb2: Product: Generic Platform OHCI controller
[    1.968196] usb usb2: Manufacturer: Linux 4.20.0-rc3-m2z-otg-gadget ohci_hcd
[    1.975254] usb usb2: SerialNumber: 1c1a400.usb
[    1.980284] hub 2-0:1.0: USB hub found
[    1.984076] hub 2-0:1.0: 1 port detected
[    1.988900] usbcore: registered new interface driver cdc_acm
[    1.994590] cdc_acm: USB Abstract Control Model driver for USB modems and ISDN adapters
[    2.002648] usbcore: registered new interface driver usblp
[    2.008177] usbcore: registered new interface driver cdc_wdm
[    2.013919] usbcore: registered new interface driver usb-storage
[    2.020023] usbcore: registered new interface driver ch341
[    2.025556] usbserial: USB Serial support registered for ch341-uart
[    2.031847] usbcore: registered new interface driver cp210x
[    2.037452] usbserial: USB Serial support registered for cp210x
[    2.043433] usbcore: registered new interface driver ftdi_sio
[    2.049204] usbserial: USB Serial support registered for FTDI USB Serial Device
[    2.056626] usbcore: registered new interface driver pl2303
[    2.062215] usbserial: USB Serial support registered for pl2303
[    2.068917] mousedev: PS/2 mouse device common for all mice
[    2.075219] sun6i-rtc 1f00000.rtc: rtc core: registered rtc-sun6i as rtc0
[    2.082002] sun6i-rtc 1f00000.rtc: RTC enabled
[    2.086731] i2c /dev entries driver
[    2.092535] thermal thermal_zone0: failed to read out thermal zone (-16)
[    2.099901] sunxi-wdt 1c20ca0.watchdog: Watchdog enabled (timeout=16 sec, nowayout=0)
[    2.109005] sunxi-mmc 1c0f000.mmc: Linked as a consumer to regulator.2
[    2.141438] sunxi-mmc 1c0f000.mmc: initialized, max. request size: 16384 KB
[    2.148808] sunxi-mmc 1c10000.mmc: Linked as a consumer to regulator.2
[    2.156082] sunxi-mmc 1c10000.mmc: allocated mmc-pwrseq
[    2.185330] sunxi-mmc 1c10000.mmc: initialized, max. request size: 16384 KB
[    2.193708] ledtrig-cpu: registered to indicate activity on CPUs
[    2.199989] hidraw: raw HID events driver (C) Jiri Kosina
[    2.205826] usbcore: registered new interface driver usbhid
[    2.211424] usbhid: USB HID core driver
[    2.218165] sun4i-codec 1c22c00.codec: ASoC: codec-analog@1f015c0 not registered
[    2.219174] mmc0: host does not support reading read-only switch, assuming write-enable
[    2.225590] sun4i-codec 1c22c00.codec: Failed to register our card
[    2.227243] Initializing XFRM netlink socket
[    2.235622] mmc0: new high speed SDHC card at address 59b4
[    2.239822] NET: Registered protocol family 17
[    2.245682] mmcblk0: mmc0:59b4 SDU1  7.52 GiB 
[    2.249611] can: controller area network core (rev 20170425 abi 9)
[    2.256018]  mmcblk0: p1 p2
[    2.258645] NET: Registered protocol family 29
[    2.266951] mmc1: queuing unknown CIS tuple 0x80 (2 bytes)
[    2.267550] can: raw protocol (rev 20170425)
[    2.273511] mmc1: queuing unknown CIS tuple 0x80 (3 bytes)
[    2.277463] can: broadcast manager protocol (rev 20170425 t)
[    2.283214] mmc1: queuing unknown CIS tuple 0x80 (3 bytes)
[    2.287203] can: netlink gateway (rev 20170425) max_hops=1
[    2.295540] mmc1: queuing unknown CIS tuple 0x80 (7 bytes)
[    2.299215] rfkill_gpio rfkill_bt: sunxi-bt device registered.
[    2.307111] mmc1: queuing unknown CIS tuple 0x81 (9 bytes)
[    2.309579] 9pnet: Installing 9P2000 support
[    2.324938] Key type dns_resolver registered
[    2.329439] Registering SWP/SWPB emulation handler
[    2.334843] Loading compiled-in X.509 certificates
[    2.347548] cam: supplied by vcc5v0
[    2.351808] cam-avdd: supplied by cam
[    2.355557] cam-dovdd: supplied by cam
[    2.359343] cam-dvdd: supplied by cam
[    2.364536] ehci-platform 1c1b000.usb: EHCI Host Controller
[    2.370140] ehci-platform 1c1b000.usb: new USB bus registered, assigned bus number 3
[    2.378396] ehci-platform 1c1b000.usb: irq 29, io mem 0x01c1b000
[    2.398114] mmc1: new high speed SDIO card at address 0001
[    2.412620] ehci-platform 1c1b000.usb: USB 2.0 started, EHCI 1.00
[    2.418918] usb usb3: New USB device found, idVendor=1d6b, idProduct=0002, bcdDevice= 4.20
[    2.427193] usb usb3: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    2.434419] usb usb3: Product: EHCI Host Controller
[    2.439292] usb usb3: Manufacturer: Linux 4.20.0-rc3-m2z-otg-gadget ehci_hcd
[    2.446342] usb usb3: SerialNumber: 1c1b000.usb
[    2.451420] hub 3-0:1.0: USB hub found
[    2.455216] hub 3-0:1.0: 1 port detected
[    2.459940] ehci-platform 1c1c000.usb: EHCI Host Controller
[    2.465553] ehci-platform 1c1c000.usb: new USB bus registered, assigned bus number 4
[    2.473608] ehci-platform 1c1c000.usb: irq 31, io mem 0x01c1c000
[    2.502616] ehci-platform 1c1c000.usb: USB 2.0 started, EHCI 1.00
[    2.508856] usb usb4: New USB device found, idVendor=1d6b, idProduct=0002, bcdDevice= 4.20
[    2.517130] usb usb4: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    2.524354] usb usb4: Product: EHCI Host Controller
[    2.529227] usb usb4: Manufacturer: Linux 4.20.0-rc3-m2z-otg-gadget ehci_hcd
[    2.536276] usb usb4: SerialNumber: 1c1c000.usb
[    2.541290] hub 4-0:1.0: USB hub found
[    2.545081] hub 4-0:1.0: 1 port detected
[    2.549700] ehci-platform 1c1d000.usb: EHCI Host Controller
[    2.555308] ehci-platform 1c1d000.usb: new USB bus registered, assigned bus number 5
[    2.563406] ehci-platform 1c1d000.usb: irq 33, io mem 0x01c1d000
[    2.592613] ehci-platform 1c1d000.usb: USB 2.0 started, EHCI 1.00
[    2.598845] usb usb5: New USB device found, idVendor=1d6b, idProduct=0002, bcdDevice= 4.20
[    2.607115] usb usb5: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    2.614342] usb usb5: Product: EHCI Host Controller
[    2.619214] usb usb5: Manufacturer: Linux 4.20.0-rc3-m2z-otg-gadget ehci_hcd
[    2.626262] usb usb5: SerialNumber: 1c1d000.usb
[    2.631285] hub 5-0:1.0: USB hub found
[    2.635076] hub 5-0:1.0: 1 port detected
[    2.639693] ohci-platform 1c1b400.usb: Generic Platform OHCI controller
[    2.646349] ohci-platform 1c1b400.usb: new USB bus registered, assigned bus number 6
[    2.654358] ohci-platform 1c1b400.usb: irq 30, io mem 0x01c1b400
[    2.726765] usb usb6: New USB device found, idVendor=1d6b, idProduct=0001, bcdDevice= 4.20
[    2.735041] usb usb6: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    2.742254] usb usb6: Product: Generic Platform OHCI controller
[    2.748181] usb usb6: Manufacturer: Linux 4.20.0-rc3-m2z-otg-gadget ohci_hcd
[    2.755232] usb usb6: SerialNumber: 1c1b400.usb
[    2.760259] hub 6-0:1.0: USB hub found
[    2.764054] hub 6-0:1.0: 1 port detected
[    2.768682] ohci-platform 1c1c400.usb: Generic Platform OHCI controller
[    2.775333] ohci-platform 1c1c400.usb: new USB bus registered, assigned bus number 7
[    2.783334] ohci-platform 1c1c400.usb: irq 32, io mem 0x01c1c400
[    2.856757] usb usb7: New USB device found, idVendor=1d6b, idProduct=0001, bcdDevice= 4.20
[    2.865026] usb usb7: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    2.872238] usb usb7: Product: Generic Platform OHCI controller
[    2.878163] usb usb7: Manufacturer: Linux 4.20.0-rc3-m2z-otg-gadget ohci_hcd
[    2.885211] usb usb7: SerialNumber: 1c1c400.usb
[    2.890204] hub 7-0:1.0: USB hub found
[    2.893994] hub 7-0:1.0: 1 port detected
[    2.898656] ohci-platform 1c1d400.usb: Generic Platform OHCI controller
[    2.905304] ohci-platform 1c1d400.usb: new USB bus registered, assigned bus number 8
[    2.913297] ohci-platform 1c1d400.usb: irq 34, io mem 0x01c1d400
[    2.986793] usb usb8: New USB device found, idVendor=1d6b, idProduct=0001, bcdDevice= 4.20
[    2.995076] usb usb8: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    3.002289] usb usb8: Product: Generic Platform OHCI controller
[    3.008216] usb usb8: Manufacturer: Linux 4.20.0-rc3-m2z-otg-gadget ohci_hcd
[    3.015272] usb usb8: SerialNumber: 1c1d400.usb
[    3.020347] hub 8-0:1.0: USB hub found
[    3.024139] hub 8-0:1.0: 1 port detected
[    3.028883] usb_phy_generic usb_phy_generic.3.auto: usb_phy_generic.3.auto supply vcc not found, using dummy regulator
[    3.039657] usb_phy_generic usb_phy_generic.3.auto: Linked as a consumer to regulator.0
[    3.048029] musb-hdrc musb-hdrc.4.auto: MUSB HDRC host driver
[    3.053798] musb-hdrc musb-hdrc.4.auto: new USB bus registered, assigned bus number 9
[    3.061779] usb usb9: New USB device found, idVendor=1d6b, idProduct=0002, bcdDevice= 4.20
[    3.070056] usb usb9: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    3.077278] usb usb9: Product: MUSB HDRC host driver
[    3.082238] usb usb9: Manufacturer: Linux 4.20.0-rc3-m2z-otg-gadget musb-hcd
[    3.089285] usb usb9: SerialNumber: musb-hdrc.4.auto
[    3.094716] hub 9-0:1.0: USB hub found
[    3.098495] hub 9-0:1.0: 1 port detected
[    3.103139] cpu cpu0: Linked as a consumer to regulator.8
[    3.108593] cpu cpu0: Dropping the link to regulator.8
[    3.113933] cpu cpu0: Linked as a consumer to regulator.8
[    3.121144] sun4i-codec 1c22c00.codec: ASoC: Failed to create component debugfs directory
[    3.131748] sun4i-codec 1c22c00.codec: Codec <-> 1c22c00.codec mapping ok
[    3.140681] sun6i-rtc 1f00000.rtc: setting system clock to 1970-01-01 00:00:09 UTC (9)
[    3.155809] cfg80211: Loading compiled-in X.509 certificates for regulatory database
[    3.168145] cfg80211: Loaded X.509 cert 'sforshee: 00b28ddf47aef9cea7'
[    3.178491] platform regulatory.0: Direct firmware load for regulatory.db failed with error -2
[    3.180801] vcc3v0: disabling
[    3.187360] platform regulatory.0: Falling back to syfs fallback for: regulatory.db
[    3.190307] vcc5v0: disabling
[    3.200934] cam-avdd: disabling
[    3.204604] cam-dovdd: disabling
[    3.208160] cam-dvdd: disabling
[    3.211459] ALSA device list:
[    3.214431]   #0: H3 Audio Codec
[    3.219984] Freeing unused kernel memory: 1024K
[    3.253946] Run /init as init process
[    3.594710] usb 1-1: new high-speed USB device number 2 using ehci-platform
[    3.597365] EXT4-fs (mmcblk0p2): mounted filesystem without journal. Opts: (null)
[    3.794928] usb 1-1: New USB device found, idVendor=05e3, idProduct=0608, bcdDevice=85.36
[    3.803205] usb 1-1: New USB device strings: Mfr=0, Product=1, SerialNumber=0
[    3.810388] usb 1-1: Product: USB2.0 Hub
[    3.815584] hub 1-1:1.0: USB hub found
[    3.821038] hub 1-1:1.0: 4 ports detected
[    4.152684] usb 1-1.2: new high-speed USB device number 3 using ehci-platform
[    4.279191] systemd[1]: System time before build time, advancing clock.
[    4.328486] usb 1-1.2: New USB device found, idVendor=05e3, idProduct=0608, bcdDevice= 9.01
[    4.336887] usb 1-1.2: New USB device strings: Mfr=0, Product=1, SerialNumber=0
[    4.344218] usb 1-1.2: Product: USB2.0 Hub
[    4.349604] hub 1-1.2:1.0: USB hub found
[    4.354342] hub 1-1.2:1.0: 4 ports detected
[    4.653016] NET: Registered protocol family 10
[    4.722232] Segment Routing with IPv6
[    4.722718] usb 1-1.2.3: new low-speed USB device number 4 using ehci-platform
[    4.761011] random: systemd: uninitialized urandom read (16 bytes read)
[    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)
[    4.795876] systemd[1]: Detected architecture arm.
[    4.853992] systemd[1]: Set hostname to <nanopi-duo>.
[    4.901619] usb 1-1.2.3: New USB device found, idVendor=1c4f, idProduct=0002, bcdDevice= 1.10
[    4.910179] usb 1-1.2.3: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[    4.917682] usb 1-1.2.3: Product: USB Keyboard
[    4.922128] usb 1-1.2.3: Manufacturer: SIGMACHIP
[    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
[    4.974065] random: systemd: uninitialized urandom read (16 bytes read)
[    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
[    5.062380] random: systemd-gpt-aut: uninitialized urandom read (16 bytes read)
[    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
[    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
[    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
[    5.304755] usb 1-1.2.4: new low-speed USB device number 5 using ehci-platform
[    5.451765] usb 1-1.2.4: New USB device found, idVendor=1bcf, idProduct=0007, bcdDevice= 0.10
[    5.460466] usb 1-1.2.4: New USB device strings: Mfr=0, Product=2, SerialNumber=0
[    5.468421] usb 1-1.2.4: Product: USB Optical Mouse
[    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
[    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
[    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
[    5.837758] systemd[1]: Listening on Journal Socket.
[    5.914407] systemd[1]: Reached target Remote File Systems (Pre).
[    5.937931] systemd[1]: Listening on udev Control Socket.
[    5.983265] systemd[1]: Started Trigger resolvconf update for networkd DNS.
[    6.013319] systemd[1]: Started Dispatch Password Requests to Console Directory Watch.
[    6.054594] systemd[1]: Listening on /dev/initctl Compatibility Named Pipe.
[    6.104286] systemd[1]: Started Forward Password Requests to Wall Directory Watch.
[    6.706757] EXT4-fs (mmcblk0p2): re-mounted. Opts: (null)
[    6.835752] g_serial gadget: Gadget Serial v2.4
[    6.840303] g_serial gadget: g_serial ready
[    6.902950] brcmfmac: brcmf_fw_alloc_request: using brcm/brcmfmac43430-sdio for chip BCM43430/1
[    6.985436] Bluetooth: Core ver 2.22
[    6.989175] NET: Registered protocol family 31
[    6.993826] Bluetooth: HCI device and connection manager initialized
[    7.000509] Bluetooth: HCI socket layer initialized
[    7.005468] Bluetooth: L2CAP socket layer initialized
[    7.010572] Bluetooth: SCO socket layer initialized
[    7.023201] Bluetooth: HCI UART driver ver 2.3
[    7.028050] Bluetooth: HCI UART protocol H4 registered
[    7.033226] Bluetooth: HCI UART protocol BCSP registered
[    7.038535] Bluetooth: HCI UART protocol ATH3K registered
[    7.044231] Bluetooth: HCI UART protocol Intel registered
[    7.049630] Bluetooth: HCI UART protocol AG6XX registered
[    7.055066] Bluetooth: HCI UART protocol Marvell registered
[    7.087649] brcmfmac: brcmf_fw_alloc_request: using brcm/brcmfmac43430-sdio for chip BCM43430/1
[    7.098671] brcmfmac mmc1:0001:1: Direct firmware load for brcm/brcmfmac43430-sdio.clm_blob failed with error -2
[    7.112736] brcmfmac mmc1:0001:1: Falling back to syfs fallback for: brcm/brcmfmac43430-sdio.clm_blob
[    8.034398] systemd-journald[192]: Received request to flush runtime journal from PID 1
[    8.307647] brcmfmac: brcmf_c_process_clm_blob: no clm_blob available (err=-11), device may have limited channels available
[    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
[    8.468024] cfg80211: failed to load regulatory.db
[    8.777141] media: Linux media interface: v0.10
[    8.791229] mali: loading out-of-tree module taints kernel.
[    8.802801] Allwinner sunXi mali glue initialized
[    8.804860] Registered IR keymap rc-empty
[    8.805108] rc rc0: sunxi-ir as /devices/platform/soc/1f02000.ir/rc/rc0
[    8.805556] input: sunxi-ir as /devices/platform/soc/1f02000.ir/rc/rc0/input5
[    8.806450] rc rc0: lirc_dev: driver sunxi-ir registered at minor = 0, raw IR receiver, no transmitter
[    8.811998] Mali: 
[    8.812008] Found Mali GPU Mali-400 MP r1p1
[    8.812725] sunxi-ir 1f02000.ir: initialized sunXi IR driver
[    8.816537] videodev: Linux video capture interface: v2.00
[    8.847290] ov5640 2-003c: Linked as a consumer to regulator.5
[    8.847385] ov5640 2-003c: Linked as a consumer to regulator.6
[    8.847472] ov5640 2-003c: Linked as a consumer to regulator.4
[    8.850168] Mali: 
[    8.850180] 2+0 PP cores initialized
[    8.851383] Mali: 
[    8.851390] Mali device driver loaded
[    8.880132] ov5640 2-003c: ov5640_read_reg: error: reg=300a
[    8.885969] ov5640 2-003c: ov5640_check_chip_id: failed to read chip identifier
[    8.893761] ov5640 2-003c: Dropping the link to regulator.5
[    8.893853] ov5640 2-003c: Dropping the link to regulator.6
[    8.893914] ov5640 2-003c: Dropping the link to regulator.4
[    9.941571] EXT4-fs (mmcblk0p1): mounted filesystem with ordered data mode. Opts: (null)
[   10.912016] Generic PHY 0.1:01: attached PHY driver [Generic PHY] (mii_bus:phy_addr=0.1:01, irq=POLL)
[   10.925866] dwmac-sun8i 1c30000.ethernet eth0: No Safety Features support found
[   10.925896] dwmac-sun8i 1c30000.ethernet eth0: No MAC Management Counters available
[   10.925918] dwmac-sun8i 1c30000.ethernet eth0: PTP not supported by HW
[   10.927314] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready
[   11.141416] IPv6: ADDRCONF(NETDEV_UP): wlan0: link is not ready
[   12.003556] dwmac-sun8i 1c30000.ethernet eth0: Link is Up - 100Mbps/Full - flow control rx/tx
[   12.003643] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
[   12.798637] IPv6: ADDRCONF(NETDEV_CHANGE): wlan0: link becomes ready
[   56.711762] random: crng init done
[   56.711814] random: 7 urandom warning(s) missed due to ratelimiting
[  521.245276] Bluetooth: BNEP (Ethernet Emulation) ver 1.3
[  521.245291] Bluetooth: BNEP filters: protocol multicast
[  521.245324] Bluetooth: BNEP socket layer initialized
[  525.482009] Bluetooth: hci0: sending frame failed (-49)
[  668.728660] Bluetooth: hci0: last event is not cmd complete (0x0f)

bananapi-zero-ubuntu-base-minimal's People

Contributors

avafinger avatar peterberbec avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

bananapi-zero-ubuntu-base-minimal's Issues

alsa audio

As you know, I am trying to get RetroPie working on this device. I am unable to get alsa sound on the HDMI output working with the Ubuntu 19.10 image. No errors, but no sound. I have disabled pulseaudio by unlinking the service and removing /etc/alsa/conf.d. I have tried using both hw devices in speaker-test, but no sounds. My alsa layout looks like this:

$ aplay -L
null
    Discard all samples (playback) or generate zero samples (capture)
sysdefault:CARD=Codec
    H3 Audio Codec, CDC PCM Codec-0
    Default Audio Device
dmix:CARD=Codec,DEV=0
    H3 Audio Codec, CDC PCM Codec-0
    Direct sample mixing device
dsnoop:CARD=Codec,DEV=0
    H3 Audio Codec, CDC PCM Codec-0
    Direct sample snooping device
hw:CARD=Codec,DEV=0
    H3 Audio Codec, CDC PCM Codec-0
    Direct hardware device without any conversions
plughw:CARD=Codec,DEV=0
    H3 Audio Codec, CDC PCM Codec-0
    Hardware device with all software conversions
sysdefault:CARD=allwinnerhdmi
    allwinner,hdmi, 1c22800.i2s-i2s-hifi i2s-hifi-0
    Default Audio Device
dmix:CARD=allwinnerhdmi,DEV=0
    allwinner,hdmi, 1c22800.i2s-i2s-hifi i2s-hifi-0
    Direct sample mixing device
dsnoop:CARD=allwinnerhdmi,DEV=0
    allwinner,hdmi, 1c22800.i2s-i2s-hifi i2s-hifi-0
    Direct sample snooping device
hw:CARD=allwinnerhdmi,DEV=0
    allwinner,hdmi, 1c22800.i2s-i2s-hifi i2s-hifi-0
    Direct hardware device without any conversions
plughw:CARD=allwinnerhdmi,DEV=0
    allwinner,hdmi, 1c22800.i2s-i2s-hifi i2s-hifi-0
    Hardware device with all software conversions

$ amixer
Simple mixer control 'Line In',0
  Capabilities: pvolume pvolume-joined pswitch cswitch
  Playback channels: Front Left - Front Right
  Capture channels: Front Left - Front Right
  Limits: Playback 0 - 7
  Front Left: Playback 7 [100%] [6.00dB] [on] Capture [off]
  Front Right: Playback 7 [100%] [6.00dB] [on] Capture [off]
Simple mixer control 'Line Out',0
  Capabilities: pvolume pvolume-joined pswitch
  Playback channels: Front Left - Front Right
  Limits: Playback 0 - 31
  Mono:
  Front Left: Playback 31 [100%] [0.00dB] [on]
  Front Right: Playback 31 [100%] [0.00dB] [on]
Simple mixer control 'Line Out Source',0
  Capabilities: penum
  Items: 'Stereo' 'Mono Differential'
  Item0: 'Stereo'
  Item1: 'Stereo'
Simple mixer control 'Mic1',0
  Capabilities: pvolume pvolume-joined pswitch cswitch
  Playback channels: Front Left - Front Right
  Capture channels: Front Left - Front Right
  Limits: Playback 0 - 7
  Front Left: Playback 7 [100%] [6.00dB] [on] Capture [off]
  Front Right: Playback 7 [100%] [6.00dB] [on] Capture [off]
Simple mixer control 'Mic1 Boost',0
  Capabilities: volume volume-joined
  Playback channels: Mono
  Capture channels: Mono
  Limits: 0 - 7
  Mono: 7 [100%] [42.00dB]
Simple mixer control 'Mic2',0
  Capabilities: pvolume pvolume-joined pswitch cswitch
  Playback channels: Front Left - Front Right
  Capture channels: Front Left - Front Right
  Limits: Playback 0 - 7
  Front Left: Playback 7 [100%] [6.00dB] [on] Capture [off]
  Front Right: Playback 7 [100%] [6.00dB] [on] Capture [off]
Simple mixer control 'Mic2 Boost',0
  Capabilities: volume volume-joined
  Playback channels: Mono
  Capture channels: Mono
  Limits: 0 - 7
  Mono: 7 [100%] [42.00dB]
Simple mixer control 'Mixer',0
  Capabilities: cswitch
  Capture channels: Front Left - Front Right
  Front Left: Capture [off]
  Front Right: Capture [off]
Simple mixer control 'Mixer Reversed',0
  Capabilities: cswitch
  Capture channels: Front Left - Front Right
  Front Left: Capture [off]
  Front Right: Capture [off]
Simple mixer control 'ADC Gain',0
  Capabilities: cvolume cvolume-joined
  Capture channels: Mono
  Limits: Capture 0 - 7
  Mono: Capture 3 [43%] [0.00dB]
Simple mixer control 'DAC',0
  Capabilities: pvolume pvolume-joined pswitch
  Playback channels: Front Left - Front Right
  Limits: Playback 0 - 63
  Mono:
  Front Left: Playback 63 [100%] [0.00dB] [on]
  Front Right: Playback 63 [100%] [0.00dB] [on]
Simple mixer control 'DAC Reversed',0
  Capabilities: pswitch
  Playback channels: Front Left - Front Right
  Mono:
  Front Left: Playback [off]
  Front Right: Playback [off]

Lubuntu 19.10 Desktop Install.

It’s a non issue, general question.

I’ve ran the dist-upgrade and rebooted. Does the
BPI-M2 zero Ubuntu 19.10 Eoan Ermine Mainline Kernel 5.3.5
release Include the desktop GUI ?

The BPI just brings me to The CLI.

I’ve tried looking for small foot print release with a desktop GUI. Could you provide the link to the image with 19.10 and a GUI ready?
Or steps to get the GUI (desktop interface) active with 19.10.

Thank you for these releases!

slow wifi with mainline firmware

Hello,

After applying this update: Kernel 4.20 - H2 firmware with mainline Wifi&BT drivers
onboard Wifi is behaving painfully slow, i can't even wget the newest kernel from console.

Pinging from local network is also dropping several packets

64 bytes from 192.168.10.118: icmp_seq=415 ttl=64 time=14.695 ms
Request timeout for icmp_seq 416
Request timeout for icmp_seq 417
Request timeout for icmp_seq 418
Request timeout for icmp_seq 419
Request timeout for icmp_seq 420
Request timeout for icmp_seq 421
Request timeout for icmp_seq 422
64 bytes from 192.168.10.118: icmp_seq=421 ttl=64 time=2347.756 ms
64 bytes from 192.168.10.118: icmp_seq=422 ttl=64 time=1347.680 ms
64 bytes from 192.168.10.118: icmp_seq=424 ttl=64 time=14.122 ms
64 bytes from 192.168.10.118: icmp_seq=425 ttl=64 time=13.439 ms
64 bytes from 192.168.10.118: icmp_seq=426 ttl=64 time=1939.792 ms
64 bytes from 192.168.10.118: icmp_seq=427 ttl=64 time=938.632 ms
64 bytes from 192.168.10.118: icmp_seq=428 ttl=64 time=553.320 ms
64 bytes from 192.168.10.118: icmp_seq=429 ttl=64 time=474.615 ms
64 bytes from 192.168.10.118: icmp_seq=431 ttl=64 time=14.953 ms
Request timeout for icmp_seq 432

Anyone also experiencing this?

Emmc

Hi
First of all thank you for your great work.
It's like a nice surprise ...

I have installed the bare ubuntu with kernel 14.7 from :
https://mega.nz/#!obIAVQiA!G0CCABkLunCcG8hEqMf7NfjTBK1jgMytt2f0VdtOl08
I can't see the emmc on fdisk ...
Do you recommend a different kernel version?
Is any chance to have a bare debian 10 os with a stable kernel too? I mean on debian/Raspbian you have 2 kernels. Version 3 what runs ok and smoothie but is no AP network mode compatible and Version 4,4 where load average is pretty high (over 1 on idle)
For those who use i2c, gpio, spi, serial and wifi ap mode, a bare system is great.
Thank you for your time

VETH kernel module

I'm trying to run an lxc container on the Banana Pi BPI-P2 ZERO, with the latest 4.20.0-rc3 image, but its complaining about creating the veth devices. It seems that the veth kernel module is not available.

Would it be possible the create a new kernel with the veth ko available? Or post the kernel sources &config, so I can compile my own module?

ov5640 Camera Support

Hey,

First of all, thanks for publishing this. It's really very helpful!
I was wondering if there was any chance in getting the ov5640 camera to work with your image.
I saw that kernel v4.20.0 includes the relevant driver and I can hear the camera click when the driver is loaded, so something works, but I don't have a /dev/video0 entry available. In addition, I can see the following log messages during boot:

[    7.533164] ov5640 2-003c: Linked as a consumer to regulator.5
[    7.533246] ov5640 2-003c: Linked as a consumer to regulator.6
[    7.533384] ov5640 2-003c: Linked as a consumer to regulator.4
[    7.572154] ov5640 2-003c: ov5640_read_reg: error: reg=300a
[    7.577781] ov5640 2-003c: ov5640_check_chip_id: failed to read chip identifier
[    7.588902] ov5640 2-003c: Dropping the link to regulator.5
[    7.589038] ov5640 2-003c: Dropping the link to regulator.6
[    7.589112] ov5640 2-003c: Dropping the link to regulator.4

I saw a few entries in the DTB regarding the camera and relevant i2c definitions but still something is off.
If it helps, the BSP's kernel has this configuration.

Do you have any ideas or leads I can pursue to get the camera to work?

Thanks in advance!

boot_kernel_4.17.y.tar.gz only contains kernel zImage_4.17.3-5

Hi

I tried flashing an SD card for my banana pi, and the boot kernel only contains kernel 4.17.3, and not 4.17.4, which means it can't load any modules and the system boots, but with no modules (or WiFi)

Any change you could update your tar.gz to contain the correct kernel?

Thanks

Sources for Kernel 5.7.6

I am trying to add lima to release v3.7 (Kernel 5.7.6) to make both OV5640 and lima work.

Just wondering: what kernel sources have you used to build that image? I can see only 5.6.y in your repositories that is currently at version 5.6.0-rc7.

Was that vanilla kernel with this config?

HDMI display issue

I'm having issues with the convenience image. HDMI is pretty much unreadable, since it is shifted left by 3-4 characters, top and bottom by several lines. Monitored on two BPI Zero M2 and with different monitors.

What can I do?

Can't make GBM work

Fresh install v2.4 image
apt-get update && apt-get dist-upgrade
Install v3.7 kernel
apt-get install kmscube git
git clone https://github.com/bootlin/mali-blobs.git
cd mali-blobs/tree/master/r6p2/arm/wayland
pwd > /etc/ld.so.conf.d/00-mali.conf
ldconfig
ldd /usr/bin/kmscube to ensure that ligEGL.so.1 => /home/ubuntu/mali-blobs/r6p2/arm/wayland/libgbm.so.1
And after that kmscube tells me:
kmscube: symbol lookup error: kmscube: undefuned symbol: gbm_bo_unmap

Without mali-blobs kmscube output follows:

MESA-LOADER: failed to open sun4i-drm (search paths /usr/lib/arm-linux-gnueabihf/dri:\$${ORIGIN}/dri:/usr/lib/dri)
failed to load driver: sun4i-drm
MESA-LOADER: failed to open kms_swrast (search paths /usr/lib/arm-linux-gnueabihf/dri:\$${ORIGIN}/dri:/usr/lib/dri)
failed to load driver: kms_swrast
MESA-LOADER: failed to open swrast (search paths /usr/lib/arm-linux-gnueabihf/dri:\$${ORIGIN}/dri:/usr/lib/dri)
failed to load driver: swrast
Segmentation fault

What am I doing wring and how to make any 3d (mali/lima) work?

P.S. I suspect that undefuned symbol: gbm_bo_unmap is some problem with mali o kmscube being outdated and MAYBE it is already working but hot can I check that besides kmscube?

How to install latest (Kernel 5.6.0-rc5) release on M2Z?

Hi, my Banana Pi M2 Zero just arrived, as a faster replacement for the Raspberry Pi Zero. I want to run music player Mopidy, interact with an GPIO/SPI RFID-reader and an external USB speaker.

When I look at the latest release Kernel 5.6.0-rc5 it states

Install - Use a spare sd card to test this release

How would I do that with linux-image-5.6.0-rc5+_1.0-41.deb? Shouldn't the release contain an image file to write to the SD card?

I will try with image 5.3.11-fbdev v2.8 for now, which contains an image within the assets.

Thanks, bluepuma

WiringPi2 + RPi.GPIO updated guide?

I've been following the Getting_Started_with_M2_Zero guide on BPI wiki.

RPi.GPIO

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

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

I am assuming that ./bpi_test_g40.py file is missing and is part of the BPI images?

running a any file in the test folder gives
RPi._GPIO import * RuntimeError: This module can only be run on a Raspberry Pi!

Also tried LeMaker version, but got the above error.

Both libraries setup.py scripts do build and add the modules to the /usr/local/lib/python2.7/dist-packages
as for WiringPi2

gpio readall
Unable to determine hardware version. I see: Hardware	: Allwinner sun8i Family
,
 - expecting BCM2708, BCM2709 or BCM2835.
If this is a genuine Raspberry Pi then please report this
to [email protected]. If this is not a Raspberry Pi then you
are on your own as wiringPi is designed to support the
Raspberry Pi ONLY.

This might just be a kernel issue (using the latest Kernel 5.6.13 Server)?

Does anyone have RPi.GPIO working on other 19.10 images? Please add the steps here.
@avafinger I think it would be great for the community to have the steps in the main readme.

System is very slow time to time

Got a banana pi m2 zero and followed the instructions in this repo to flash and install ubuntu onto it.

I noticed that from time to time (well, quite often) the system becomes very slow. Downloading packages from the Internet is very slow (~10-40kB/s), typing characters in SSH terminal appears very slowly, some commands just hang for a while (a couple of minutes, even a single cd some-dir command). But then it all starts working fine again for a while.
I suspect this is some kind of I/O issue. I use a SanDisk ULTRA 8GB Class10 card. I also attached an external antenna to the WiFi chip.

Also, in some rare cases, the system gets totally unreachable.

After fresh system setup I only installed Python 3.7 and OctoPrint (which runs in the background) and enabled UART3 in kernel.
Speaking of kernel, I have 4.17.4-m2z. Should I just simply upgrade it?

Any idea what could be wrong?

I monitored system resources with top for a while and I didn't see high CPU load or low number of available memory.

Overlayfs

Can you please add overlayfs support to your kernel? I use 4.18.4 kernel. Also, if it is possible, i need ds1307 rct clock and enc28j60 drivers.
I could not use newest kernels, because i need framebuffer support.

Unusual I2C Behavior

I have I2C up and running and I can detect devices. The problem here is it only works with specific I2C entities. For example I have a 16 channel pwm board that works flawlessly, but when I attempt to use an ADC Pi module the bus drops all addresses and shows no connected hardware; furthermore, when I use a BerryGPS module the I2C but stops responding and returns: “i2c i2c-0: mv64xxx_i2c_fsm: Ctlr Error – state: 0x2, status: 0x0,” and then states that the bus is locked. I have tested each of these devices on a raspberry pi and a beaglebone and they are in good working order. Any idea what the problem is?

Supporting a ttyS on GPIO

Hi, I currently use an uart on the GPIO port with the original kernel (ttyS3). Is it possible to get this working on this kernel?

g_ether

According to the forums, a patch is required to enable OTG gadget ethernet. The file is here. Is this enabled on any of the kernels?

fbdev does not initialize

I'm using your image with kernel 4.19.12. I'd like to get retropie running, but am getting fbdev errors. When I try to run your stress tools (or any fbdev app, really), I get the following error:

$ sudo glmark2-es2-fbdev
Error: eglInitialize() failed with error: 0x3001
Error: eglInitialize() failed with error: 0x3001
Error: main: Could not initialize canvas

Am I missing something to enable to framebuffer for EGL?

Stability issues with latest release

I've been trying to use this project since it has ethernet support, but it seems to crash horribly after about a day of use. By horribly, I mean that it won't turn back on when I reset it. Here's some output from the serial port during the last event:

[Jun11 07:11] Booting Linux on physical CPU 0x0
[  +0.000000] Linux version 4.20.0-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 Fri Dec 28 09:38:17 -02 2018
[  +0.000000] CPU: ARMv7 Processor [410fc075] revision 5 (ARMv7), cr=10c5387d
[  +0.000000] CPU: div instructions available: patching division code
[  +0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache
[  +0.000000] OF: fdt: Machine model: Banana Pi M2 Zero
[  +0.000000] Memory policy: Data cache writealloc
[  +0.000000] cma: Reserved 128 MiB at 0x55c00000
[  +0.000000] On node 0 totalpages: 131072
[  +0.000000]   Normal zone: 1024 pages used for memmap
[  +0.000000]   Normal zone: 0 pages reserved
[  +0.000000]   Normal zone: 131072 pages, LIFO batch:31
[  +0.000000] psci: probing for conduit method from DT.
[  +0.000000] psci: Using PSCI v0.1 Function IDs from DT
[  +0.000000] random: get_random_bytes called from start_kernel+0xa0/0x3f4 with crng_init=0
[  +0.000000] percpu: Embedded 16 pages/cpu @(ptrval) s35020 r8192 d22324 u65536
[  +0.000000] pcpu-alloc: s35020 r8192 d22324 u65536 alloc=16*4096
[  +0.000000] pcpu-alloc: [0] 0 [0] 1 [0] 2 [0] 3 
[  +0.000000] Built 1 zonelists, mobility grouping on.  Total pages: 130048
[  +0.000000] Kernel command line: 
[  +0.000000] Dentry cache hash table entries: 65536 (order: 6, 262144 bytes)
[  +0.000000] Inode-cache hash table entries: 32768 (order: 5, 131072 bytes)
[  +0.000000] Memory: 374204K/524288K available (8192K kernel code, 341K rwdata, 1960K rodata, 1024K init, 268K bss, 19012K reserved, 131072K cma-reserved, 0K highmem)
[  +0.000000] Virtual kernel memory layout:
                  vector  : 0xffff0000 - 0xffff1000   (   4 kB)
                  fixmap  : 0xffc00000 - 0xfff00000   (3072 kB)
                  vmalloc : 0xe0800000 - 0xff800000   ( 496 MB)
                  lowmem  : 0xc0000000 - 0xe0000000   ( 512 MB)
                  pkmap   : 0xbfe00000 - 0xc0000000   (   2 MB)
                  modules : 0xbf000000 - 0xbfe00000   (  14 MB)
                    .text : 0x(ptrval) - 0x(ptrval)   (9184 kB)
                    .init : 0x(ptrval) - 0x(ptrval)   (1024 kB)
                    .data : 0x(ptrval) - 0x(ptrval)   ( 342 kB)
                     .bss : 0x(ptrval) - 0x(ptrval)   ( 269 kB)
[  +0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=4, Nodes=1
[  +0.000000] rcu: Hierarchical RCU implementation.
[  +0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 10 jiffies.
[  +0.000000] NR_IRQS: 16, nr_irqs: 16, preallocated irqs: 16
[  +0.000000] GIC: Using split EOI/Deactivate mode
[  +0.000000] clocksource: timer: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 79635851949 ns
[  +0.000000] arch_timer: cp15 timer(s) running at 24.00MHz (phys).
[  +0.000000] clocksource: arch_sys_counter: mask: 0xffffffffffffff max_cycles: 0x588fe9dc0, max_idle_ns: 440795202592 ns
[  +0.000000] sched_clock: 56 bits at 24MHz, resolution 41ns, wraps every 4398046511097ns
[  +0.000012] Switching to timer-based delay loop, resolution 41ns
[  +0.000185] Console: colour dummy device 80x30
[  +0.000378] printk: console [tty0] enabled
[  +0.000048] Calibrating delay loop (skipped), value calculated using timer frequency.. 48.00 BogoMIPS (lpj=240000)
[  +0.000025] pid_max: default: 32768 minimum: 301
[  +0.000154] Mount-cache hash table entries: 1024 (order: 0, 4096 bytes)
[  +0.000024] Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes)
[  +0.000733] CPU: Testing write buffer coherency: ok
[  +0.000437] CPU0: update cpu_capacity 1024
[  +0.000025] CPU0: thread -1, cpu 0, socket 0, mpidr 80000000
[  +0.000530] Setting up static identity map for 0x40100000 - 0x40100060
[  +0.000154] rcu: Hierarchical SRCU implementation.
[  +0.000718] smp: Bringing up secondary CPUs ...
[  +0.010756] CPU1: update cpu_capacity 1024
[  +0.000007] CPU1: thread -1, cpu 1, socket 0, mpidr 80000001
[  +0.010835] CPU2: update cpu_capacity 1024
[  +0.000006] CPU2: thread -1, cpu 2, socket 0, mpidr 80000002
[  +0.010754] CPU3: update cpu_capacity 1024
[  +0.000007] CPU3: thread -1, cpu 3, socket 0, mpidr 80000003
[  +0.000078] smp: Brought up 1 node, 4 CPUs
[  +0.000082] SMP: Total of 4 processors activated (192.00 BogoMIPS).
[  +0.000014] CPU: All CPU(s) started in HYP mode.
[  +0.000011] CPU: Virtualization extensions available.
[  +0.000956] devtmpfs: initialized
[  +0.005984] VFP support v0.3: implementor 41 architecture 2 part 30 variant 7 rev 5
[  +0.000239] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns
[  +0.000039] futex hash table entries: 1024 (order: 4, 65536 bytes)
[  +0.004468] pinctrl core: initialized pinctrl subsystem
[  +0.001054] NET: Registered protocol family 16
[  +0.001461] DMA: preallocated 256 KiB pool for atomic coherent allocations
[  +0.000905] cpuidle: using governor menu
[  +0.000169] hw-breakpoint: found 5 (+1 reserved) breakpoint and 4 watchpoint registers.
[  +0.000023] hw-breakpoint: maximum watchpoint size is 8 bytes.
[  +0.017630] SCSI subsystem initialized
[  +0.000263] libata version 3.00 loaded.
[  +0.000210] usbcore: registered new interface driver usbfs
[  +0.000064] usbcore: registered new interface driver hub
[  +0.000090] usbcore: registered new device driver usb
[  +0.000299] pps_core: LinuxPPS API ver. 1 registered
[  +0.000017] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <[email protected]>
[  +0.000033] PTP clock support registered
[  +0.000392] Advanced Linux Sound Architecture Driver Initialized.
[  +0.001057] clocksource: Switched to clocksource arch_sys_counter
[  +0.000146] VFS: Disk quotas dquot_6.6.0
[  +0.000077] VFS: Dquot-cache hash table entries: 1024 (order 0, 4096 bytes)
[  +0.007872] NET: Registered protocol family 2
[  +0.000960] tcp_listen_portaddr_hash hash table entries: 512 (order: 0, 6144 bytes)
[  +0.000052] TCP established hash table entries: 4096 (order: 2, 16384 bytes)
[  +0.000060] TCP bind hash table entries: 4096 (order: 3, 32768 bytes)
[  +0.000070] TCP: Hash tables configured (established 4096 bind 4096)
[  +0.000113] UDP hash table entries: 256 (order: 1, 8192 bytes)
[  +0.000054] UDP-Lite hash table entries: 256 (order: 1, 8192 bytes)
[  +0.000246] NET: Registered protocol family 1
[  +0.000600] RPC: Registered named UNIX socket transport module.
[  +0.000026] RPC: Registered udp transport module.
[  +0.000012] RPC: Registered tcp transport module.
[  +0.000012] RPC: Registered tcp NFSv4.1 backchannel transport module.
[  +0.000719] Unpacking initramfs...
[  +0.042834] Freeing initrd memory: 960K
[  +0.001530] Initialise system trusted keyrings
[  +0.000357] workingset: timestamp_bits=30 max_order=17 bucket_order=0
[  +0.007046] squashfs: version 4.0 (2009/01/31) Phillip Lougher
[  +0.001438] NFS: Registering the id_resolver key type
[  +0.000050] Key type id_resolver registered
[  +0.000013] Key type id_legacy registered
[  +0.000021] nfs4filelayout_init: NFSv4 File Layout Driver Registering...
[  +0.000016] Installing knfsd (copyright (C) 1996 [email protected]).
[  +0.000857] fuse init (API version 7.28)
[  +0.000437] SGI XFS with ACLs, security attributes, realtime, no debug enabled
[  +0.008541] Key type asymmetric registered
[  +0.000040] Asymmetric key parser 'x509' registered
[  +0.000096] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 247)
[  +0.000024] io scheduler noop registered
[  +0.000013] io scheduler deadline registered
[  +0.000233] io scheduler cfq registered (default)
[  +0.000020] io scheduler mq-deadline registered
[  +0.000014] io scheduler kyber registered
[  +0.001014] sun4i-usb-phy 1c19400.phy: Couldn't request ID GPIO
[  +0.004226] sun8i-h3-pinctrl 1c20800.pinctrl: initialized sunXi PIO driver
[  +0.001789] sun8i-h3-r-pinctrl 1f02c00.pinctrl: initialized sunXi PIO driver
[  +0.048033] Serial: 8250/16550 driver, 8 ports, IRQ sharing disabled
[  +0.022598] 1c28000.serial: ttyS0 at MMIO 0x1c28000 (irq = 44, base_baud = 1500000) is a U6_16550A
[  +0.697098] printk: console [ttyS0] enabled
[  +0.025327] 1c28400.serial: ttyS1 at MMIO 0x1c28400 (irq = 45, base_baud = 1500000) is a U6_16550A
[  +0.027682] sun4i-drm display-engine: bound 1100000.mixer (ops 0xc095588c)
[  +0.007166] sun4i-drm display-engine: bound 1c0c000.lcd-controller (ops 0xc095295c)
[  +0.007733] sun8i-dw-hdmi 1ee0000.hdmi: 1ee0000.hdmi supply hvcc not found, using dummy regulator
[  +0.008953] sun8i-dw-hdmi 1ee0000.hdmi: Linked as a consumer to regulator.0
[  +0.007783] sun8i-dw-hdmi 1ee0000.hdmi: Detected HDMI TX controller v1.32a with HDCP (sun8i_dw_hdmi_phy)
[  +0.009940] sun8i-dw-hdmi 1ee0000.hdmi: registered DesignWare HDMI I2C bus driver
[  +0.007778] sun4i-drm display-engine: bound 1ee0000.hdmi (ops 0xc0955234)
[  +0.006796] [drm] Supports vblank timestamp caching Rev 2 (21.10.2013).
[  +0.006634] [drm] No driver support for vblank timestamp query.
[  +0.005996] [drm] Cannot find any crtc or sizes
[  +0.005064] [drm] Initialized sun4i-drm 1.0.0 20150629 for display-engine on minor 0
[  +0.010385] libphy: Fixed MDIO Bus: probed
[  +0.004345] CAN device driver interface
[  +0.004508] dwmac-sun8i 1c30000.ethernet: PTP uses main clock
[  +0.005814] dwmac-sun8i 1c30000.ethernet: No regulator found
[  +0.006000] dwmac-sun8i 1c30000.ethernet: No HW DMA feature register supported
[  +0.007255] dwmac-sun8i 1c30000.ethernet: RX Checksum Offload Engine supported
[  +0.007235] dwmac-sun8i 1c30000.ethernet: COE Type 2
[  +0.004966] dwmac-sun8i 1c30000.ethernet: TX Checksum insertion supported
[  +0.006799] dwmac-sun8i 1c30000.ethernet: Normal descriptors
[  +0.005660] dwmac-sun8i 1c30000.ethernet: Chain mode enabled
[  +0.005808] libphy: stmmac: probed
[  +0.004000] dwmac-sun8i 1c30000.ethernet: Found internal PHY node
[  +0.006317] libphy: mdio_mux: probed
[  +0.003600] dwmac-sun8i 1c30000.ethernet: Switch mux to internal PHY
[  +0.006377] dwmac-sun8i 1c30000.ethernet: Powering internal PHY
[  +0.006858] libphy: mdio_mux: probed
[  +0.004080] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
[  +0.006554] ehci-platform: EHCI generic platform driver
[  +0.005407] ehci-platform 1c1a000.usb: EHCI Host Controller
[  +0.005617] ehci-platform 1c1a000.usb: new USB bus registered, assigned bus number 1
[  +0.008176] ehci-platform 1c1a000.usb: irq 27, io mem 0x01c1a000
[  +0.038045] ehci-platform 1c1a000.usb: USB 2.0 started, EHCI 1.00
[  +0.006281] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002, bcdDevice= 4.20
[  +0.008287] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[  +0.007238] usb usb1: Product: EHCI Host Controller
[  +0.004878] usb usb1: Manufacturer: Linux 4.20.0-m2z-otg-gadget ehci_hcd
[  +0.006709] usb usb1: SerialNumber: 1c1a000.usb
[  +0.005064] hub 1-0:1.0: USB hub found
[  +0.003817] hub 1-0:1.0: 1 port detected
[  +0.004776] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
[  +0.006244] ohci-platform: OHCI generic platform driver
[  +0.005393] ohci-platform 1c1a400.usb: Generic Platform OHCI controller
[  +0.006651] ohci-platform 1c1a400.usb: new USB bus registered, assigned bus number 2
[  +0.007944] ohci-platform 1c1a400.usb: irq 28, io mem 0x01c1a400
[  +0.070866] usb usb2: New USB device found, idVendor=1d6b, idProduct=0001, bcdDevice= 4.20
[  +0.008297] usb usb2: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[  +0.007223] usb usb2: Product: Generic Platform OHCI controller
[  +0.005935] usb usb2: Manufacturer: Linux 4.20.0-m2z-otg-gadget ohci_hcd
[  +0.006715] usb usb2: SerialNumber: 1c1a400.usb
[  +0.005017] hub 2-0:1.0: USB hub found
[  +0.003807] hub 2-0:1.0: 1 port detected
[  +0.004806] usbcore: registered new interface driver cdc_acm
[  +0.005681] cdc_acm: USB Abstract Control Model driver for USB modems and ISDN adapters
[  +0.008055] usbcore: registered new interface driver usblp
[  +0.005532] usbcore: registered new interface driver cdc_wdm
[  +0.005754] usbcore: registered new interface driver usb-storage
[  +0.006101] usbcore: registered new interface driver ch341
[  +0.005530] usbserial: USB Serial support registered for ch341-uart
[  +0.006298] usbcore: registered new interface driver cp210x
[  +0.005614] usbserial: USB Serial support registered for cp210x
[  +0.005976] usbcore: registered new interface driver ftdi_sio
[  +0.005768] usbserial: USB Serial support registered for FTDI USB Serial Device
[  +0.007422] usbcore: registered new interface driver pl2303
[  +0.005606] usbserial: USB Serial support registered for pl2303
[  +0.006685] mousedev: PS/2 mouse device common for all mice
[  +0.006276] sun6i-rtc 1f00000.rtc: rtc core: registered rtc-sun6i as rtc0
[  +0.006795] sun6i-rtc 1f00000.rtc: RTC enabled
[  +0.004689] i2c /dev entries driver
[  +0.005741] thermal thermal_zone0: failed to read out thermal zone (-16)
[  +0.007361] sunxi-wdt 1c20ca0.watchdog: Watchdog enabled (timeout=16 sec, nowayout=0)
[  +0.009084] sunxi-mmc 1c0f000.mmc: Linked as a consumer to regulator.2
[  +0.032387] sunxi-mmc 1c0f000.mmc: initialized, max. request size: 16384 KB
[  +0.007347] sunxi-mmc 1c10000.mmc: Linked as a consumer to regulator.2
[  +0.007051] sunxi-mmc 1c10000.mmc: allocated mmc-pwrseq
[  +0.029230] sunxi-mmc 1c10000.mmc: initialized, max. request size: 16384 KB
[  +0.008430] ledtrig-cpu: registered to indicate activity on CPUs
[  +0.006300] hidraw: raw HID events driver (C) Jiri Kosina
[  +0.005813] usbcore: registered new interface driver usbhid
[  +0.005595] usbhid: USB HID core driver
[  +0.006534] sun4i-codec 1c22c00.codec: ASoC: codec-analog@1f015c0 not registered
[  +0.002084] mmc0: host does not support reading read-only switch, assuming write-enable
[  +0.005367] sun4i-codec 1c22c00.codec: Failed to register our card
[  +0.013992] mmc0: new high speed SDHC card at address aaaa
[  +0.001819] Initializing XFRM netlink socket
[  +0.005227] mmcblk0: mmc0:aaaa SL16G 14.8 GiB 
[  +0.002991] NET: Registered protocol family 17
[  +0.004802] mmc1: queuing unknown CIS tuple 0x80 (2 bytes)
[  +0.004123] can: controller area network core (rev 20170425 abi 9)
[  +0.007186] mmc1: queuing unknown CIS tuple 0x80 (3 bytes)
[  +0.004574] NET: Registered protocol family 29
[  +0.005601]  mmcblk0: p1 p2
[  +0.004290] can: raw protocol (rev 20170425)
[  +0.004848] mmc1: queuing unknown CIS tuple 0x80 (3 bytes)
[  +0.002242] can: broadcast manager protocol (rev 20170425 t)
[  +0.008158] mmc1: queuing unknown CIS tuple 0x80 (7 bytes)
[  +0.002985] can: netlink gateway (rev 20170425) max_hops=1
[  +0.008758] mmc1: queuing unknown CIS tuple 0x81 (9 bytes)
[  +0.003044] rfkill_gpio rfkill_bt: sunxi-bt device registered.
[  +0.010784] 9pnet: Installing 9P2000 support
[  +0.004342] Key type dns_resolver registered
[  +0.004291] Registering SWP/SWPB emulation handler
[  +0.005368] Loading compiled-in X.509 certificates
[  +0.012463] cam: supplied by vcc5v0
[  +0.004261] cam-avdd: supplied by cam
[  +0.003756] cam-dovdd: supplied by cam
[  +0.003793] cam-dvdd: supplied by cam
[  +0.001356] random: fast init done
[  +0.003762] ehci-platform 1c1b000.usb: EHCI Host Controller
[  +0.007560] ehci-platform 1c1b000.usb: new USB bus registered, assigned bus number 3
[  +0.008326] ehci-platform 1c1b000.usb: irq 29, io mem 0x01c1b000
[  +0.023535] mmc1: new high speed SDIO card at address 0001
[  +0.009715] ehci-platform 1c1b000.usb: USB 2.0 started, EHCI 1.00
[  +0.006285] usb usb3: New USB device found, idVendor=1d6b, idProduct=0002, bcdDevice= 4.20
[  +0.008287] usb usb3: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[  +0.007237] usb usb3: Product: EHCI Host Controller
[  +0.004879] usb usb3: Manufacturer: Linux 4.20.0-m2z-otg-gadget ehci_hcd
[  +0.006712] usb usb3: SerialNumber: 1c1b000.usb
[  +0.005063] hub 3-0:1.0: USB hub found
[  +0.003807] hub 3-0:1.0: 1 port detected
[  +0.004712] ehci-platform 1c1c000.usb: EHCI Host Controller
[  +0.005624] ehci-platform 1c1c000.usb: new USB bus registered, assigned bus number 4
[  +0.008006] ehci-platform 1c1c000.usb: irq 31, io mem 0x01c1c000
[  +0.029378] ehci-platform 1c1c000.usb: USB 2.0 started, EHCI 1.00
[  +0.006247] usb usb4: New USB device found, idVendor=1d6b, idProduct=0002, bcdDevice= 4.20
[  +0.008286] usb usb4: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[  +0.007235] usb usb4: Product: EHCI Host Controller
[  +0.004879] usb usb4: Manufacturer: Linux 4.20.0-m2z-otg-gadget ehci_hcd
[  +0.006712] usb usb4: SerialNumber: 1c1c000.usb
[  +0.005016] hub 4-0:1.0: USB hub found
[  +0.003803] hub 4-0:1.0: 1 port detected
[  +0.004618] ehci-platform 1c1d000.usb: EHCI Host Controller
[  +0.005631] ehci-platform 1c1d000.usb: new USB bus registered, assigned bus number 5
[  +0.007983] ehci-platform 1c1d000.usb: irq 33, io mem 0x01c1d000
[  +0.029592] ehci-platform 1c1d000.usb: USB 2.0 started, EHCI 1.00
[  +0.006236] usb usb5: New USB device found, idVendor=1d6b, idProduct=0002, bcdDevice= 4.20
[  +0.008282] usb usb5: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[  +0.007237] usb usb5: Product: EHCI Host Controller
[  +0.004879] usb usb5: Manufacturer: Linux 4.20.0-m2z-otg-gadget ehci_hcd
[  +0.006712] usb usb5: SerialNumber: 1c1d000.usb
[  +0.005022] hub 5-0:1.0: USB hub found
[  +0.003804] hub 5-0:1.0: 1 port detected
[  +0.004593] ohci-platform 1c1b400.usb: Generic Platform OHCI controller
[  +0.006659] ohci-platform 1c1b400.usb: new USB bus registered, assigned bus number 6
[  +0.007972] ohci-platform 1c1b400.usb: irq 30, io mem 0x01c1b400
[  +0.018675] [drm] Cannot find any crtc or sizes
[  +0.054086] usb usb6: New USB device found, idVendor=1d6b, idProduct=0001, bcdDevice= 4.20
[  +0.008291] usb usb6: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[  +0.007224] usb usb6: Product: Generic Platform OHCI controller
[  +0.005936] usb usb6: Manufacturer: Linux 4.20.0-m2z-otg-gadget ohci_hcd
[  +0.006714] usb usb6: SerialNumber: 1c1b400.usb
[  +0.005001] hub 6-0:1.0: USB hub found
[  +0.003806] hub 6-0:1.0: 1 port detected
[  +0.004624] ohci-platform 1c1c400.usb: Generic Platform OHCI controller
[  +0.006665] ohci-platform 1c1c400.usb: new USB bus registered, assigned bus number 7
[  +0.007967] ohci-platform 1c1c400.usb: irq 32, io mem 0x01c1c400
[  +0.073755] usb usb7: New USB device found, idVendor=1d6b, idProduct=0001, bcdDevice= 4.20
[  +0.008289] usb usb7: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[  +0.007223] usb usb7: Product: Generic Platform OHCI controller
[  +0.005937] usb usb7: Manufacturer: Linux 4.20.0-m2z-otg-gadget ohci_hcd
[  +0.006714] usb usb7: SerialNumber: 1c1c400.usb
[  +0.004976] hub 7-0:1.0: USB hub found
[  +0.003806] hub 7-0:1.0: 1 port detected
[  +0.004605] ohci-platform 1c1d400.usb: Generic Platform OHCI controller
[  +0.006661] ohci-platform 1c1d400.usb: new USB bus registered, assigned bus number 8
[  +0.007960] ohci-platform 1c1d400.usb: irq 34, io mem 0x01c1d400
[  +0.073833] usb usb8: New USB device found, idVendor=1d6b, idProduct=0001, bcdDevice= 4.20
[  +0.008288] usb usb8: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[  +0.007224] usb usb8: Product: Generic Platform OHCI controller
[  +0.005938] usb usb8: Manufacturer: Linux 4.20.0-m2z-otg-gadget ohci_hcd
[  +0.006713] usb usb8: SerialNumber: 1c1d400.usb
[  +0.004963] hub 8-0:1.0: USB hub found
[  +0.003797] hub 8-0:1.0: 1 port detected
[  +0.004697] usb_phy_generic usb_phy_generic.3.auto: usb_phy_generic.3.auto supply vcc not found, using dummy regulator
[  +0.010785] usb_phy_generic usb_phy_generic.3.auto: Linked as a consumer to regulator.0
[  +0.008327] musb-hdrc musb-hdrc.4.auto: MUSB HDRC host driver
[  +0.005778] musb-hdrc musb-hdrc.4.auto: new USB bus registered, assigned bus number 9
[  +0.008000] usb usb9: New USB device found, idVendor=1d6b, idProduct=0002, bcdDevice= 4.20
[  +0.008290] usb usb9: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[  +0.007237] usb usb9: Product: MUSB HDRC host driver
[  +0.004966] usb usb9: Manufacturer: Linux 4.20.0-m2z-otg-gadget musb-hcd
[  +0.006711] usb usb9: SerialNumber: musb-hdrc.4.auto
[  +0.005420] hub 9-0:1.0: USB hub found
[  +0.003788] hub 9-0:1.0: 1 port detected
[  +0.004606] cpu cpu0: Linked as a consumer to regulator.8
[  +0.005485] cpu cpu0: Dropping the link to regulator.8
[  +0.005338] cpu cpu0: Linked as a consumer to regulator.8
[  +0.007124] sun4i-codec 1c22c00.codec: ASoC: Failed to create component debugfs directory
[  +0.010001] sun4i-codec 1c22c00.codec: Codec <-> 1c22c00.codec mapping ok
[  +0.008905] sun6i-rtc 1f00000.rtc: setting system clock to 1970-01-01 00:04:49 UTC (289)
[  +0.010647] cfg80211: Loading compiled-in X.509 certificates for regulatory database
[  +0.011281] cfg80211: Loaded X.509 cert 'sforshee: 00b28ddf47aef9cea7'
[  +0.008900] platform regulatory.0: Direct firmware load for regulatory.db failed with error -2
[  +0.004798] vcc3v0: disabling
[  +0.004059] platform regulatory.0: Falling back to syfs fallback for: regulatory.db
[  +0.002943] vcc5v0: disabling
[  +0.010639] cam-avdd: disabling
[  +0.003158] cam-dovdd: disabling
[  +0.003231] cam-dvdd: disabling
[  +0.003148] ALSA device list:
[  +0.002980]   #0: H3 Audio Codec
[  +0.005087] Freeing unused kernel memory: 1024K
[  +0.054317] Run /init as init process
[  +0.231696] EXT4-fs (mmcblk0p2): recovery complete
[  +0.004853] EXT4-fs (mmcblk0p2): mounted filesystem with ordered data mode. Opts: (null)
[  +0.572025] systemd[1]: System time before build time, advancing clock.
[  +0.143293] NET: Registered protocol family 10
[  +0.081845] Segment Routing with IPv6
[  +0.064631] random: systemd: uninitialized urandom read (16 bytes read)
[  +0.021710] 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)
[  +0.018840] systemd[1]: Detected architecture arm.
[  +0.050929] systemd[1]: Set hostname to <tengu>.
[  +0.118331] random: systemd: uninitialized urandom read (16 bytes read)
[  +0.015771] random: systemd-cryptse: uninitialized urandom read (16 bytes read)
[  +0.487093] systemd[1]: Listening on udev Kernel Socket.
[  +0.038089] systemd[1]: Listening on Journal Socket.
[  +0.029711] systemd[1]: Created slice User and Session Slice.
[  +0.021155] systemd[1]: Started Forward Password Requests to Wall Directory Watch.
[  +0.023346] systemd[1]: Reached target Remote File Systems (Pre).
[  +0.018129] systemd[1]: Reached target Remote File Systems.
[  +0.037371] systemd[1]: Started Trigger resolvconf update for networkd DNS.
[  +0.266723] g_serial gadget: Gadget Serial v2.4
[  +0.004635] g_serial gadget: g_serial ready
[  +0.047418] brcmfmac: brcmf_fw_alloc_request: using brcm/brcmfmac43430-sdio for chip BCM43430/1
[  +0.171925] brcmfmac: brcmf_fw_alloc_request: using brcm/brcmfmac43430-sdio for chip BCM43430/1
[  +0.008912] brcmfmac mmc1:0001:1: Direct firmware load for brcm/brcmfmac43430-sdio.clm_blob failed with error -2
[  +0.010232] brcmfmac mmc1:0001:1: Falling back to syfs fallback for: brcm/brcmfmac43430-sdio.clm_blob
[  +0.205455] EXT4-fs (mmcblk0p2): re-mounted. Opts: (null)
[  +1.199776] systemd-journald[193]: Received request to flush runtime journal from PID 1
[  +0.115582] brcmfmac: brcmf_c_process_clm_blob: no clm_blob available (err=-11), device may have limited channels available
[  +0.009788] brcmfmac: brcmf_c_preinit_dcmds: Firmware: BCM43430/1 wl0: Mar 30 2016 11:30:56 version 7.45.77.h8.4 FWID 01-ee8a6268
[  +0.205359] cfg80211: failed to load regulatory.db
[  +0.295040] mali: loading out-of-tree module taints kernel.
[  +0.010071] Allwinner sunXi mali glue initialized
[  +0.005347] Mali: 
[  +0.000010] Found Mali GPU Mali-400 MP r1p1
[  +0.015012] Registered IR keymap rc-empty
[  +0.000177] rc rc0: sunxi-ir as /devices/platform/soc/1f02000.ir/rc/rc0
[  +0.000436] input: sunxi-ir as /devices/platform/soc/1f02000.ir/rc/rc0/input0
[  +0.005172] rc rc0: lirc_dev: driver sunxi-ir registered at minor = 0, raw IR receiver, no transmitter
[  +0.000860] Mali: 
[  +0.000007] 2+0 PP cores initialized
[  +0.000925] Mali: 
[  +0.000005] Mali device driver loaded
[  +0.005708] sunxi-ir 1f02000.ir: initialized sunXi IR driver
[  +0.041435] media: Linux media interface: v0.10
[  +0.035478] videodev: Linux video capture interface: v2.00
[  +0.020985] ov5640 2-003c: Linked as a consumer to regulator.5
[  +0.000072] ov5640 2-003c: Linked as a consumer to regulator.6
[  +0.000059] ov5640 2-003c: Linked as a consumer to regulator.4
[  +0.037896] ov5640 2-003c: ov5640_read_reg: error: reg=300a
[  +0.005654] ov5640 2-003c: ov5640_check_chip_id: failed to read chip identifier
[  +0.009903] ov5640 2-003c: Dropping the link to regulator.5
[  +0.000094] ov5640 2-003c: Dropping the link to regulator.6
[  +0.000052] ov5640 2-003c: Dropping the link to regulator.4
[  +0.216820] EXT4-fs (mmcblk0p1): recovery complete
[  +0.000031] EXT4-fs (mmcblk0p1): mounted filesystem with ordered data mode. Opts: (null)
[  +1.260009] Generic PHY 0.1:01: attached PHY driver [Generic PHY] (mii_bus:phy_addr=0.1:01, irq=POLL)
[  +0.007258] dwmac-sun8i 1c30000.ethernet eth0: No Safety Features support found
[  +0.000056] dwmac-sun8i 1c30000.ethernet eth0: No MAC Management Counters available
[  +0.000025] dwmac-sun8i 1c30000.ethernet eth0: PTP not supported by HW
[  +0.000764] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready
[  +1.053365] dwmac-sun8i 1c30000.ethernet eth0: Link is Up - 100Mbps/Full - flow control rx/tx
[  +0.001078] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
[  +2.509486] FS-Cache: Loaded
[  +0.049273] FS-Cache: Netfs 'cifs' registered for caching
[  +0.000622] Key type cifs.spnego registered
[  +0.000023] Key type cifs.idmap registered
[  +0.001374] CIFS: Attempting to mount //192.168.1.1/monitor
[Jun11 07:13] random: crng init done
[  +0.000278] random: 7 urandom warning(s) missed due to ratelimiting
[Jun11 07:53] hrtimer: interrupt took 1097645 ns
[Jun11 10:55] CIFS VFS: Server 192.168.1.1 has not responded in 120 seconds. Reconnecting...
[Jun11 11:34] CIFS VFS: Server 192.168.1.1 has not responded in 120 seconds. Reconnecting...
[Jun11 22:03] CIFS VFS: Send error in SessSetup = -11
[75457.784059] Unable to handle kernel paging request at virtual address c073e608
[75457.791330] pgd = 8efc5a1b
[75457.794042] [c073e608] *pgd=4061940e(bad)
[75457.798064] Internal error: Oops: 80d [#1] SMP ARM
[75457.802855] Modules linked in: md4 nls_iso8859_1 cifs fscache ov5640 v4l2_fwnode v4l2_common videodev media sunxi_cir mali(O) brcmfmac brcmutil g_serial ipv6
[75457.816965] CPU: 0 PID: 7946 Comm: av5:jubei Tainted: G           O      4.20.0-m2z-otg-gadget #1
[75457.825832] Hardware name: Allwinner sun8i Family
[75457.830551] PC is at _test_and_set_bit+0x30/0x4c
[75457.835173] LR is at queue_work_on+0x24/0x4c
[75457.839442] pc : [<c08dd808>]    lr : [<c0132fa4>]    psr: 60010193
[75457.845706] sp : ce2c3df4  ip : 00000000  fp : 000011fd
[75457.850930] r10: 8e2237ac  r9 : 00000020  r8 : 00000002
[75457.856154] r7 : d49be630  r6 : 00000002  r5 : a0010113  r4 : c073e608
[75457.862679] r3 : 00000001  r2 : e92d4011  r1 : c073e608  r0 : 00000000
[75457.869206] Flags: nZCv  IRQs off  FIQs on  Mode SVC_32  ISA ARM  Segment none
[75457.876427] Control: 10c5387d  Table: 54a9406a  DAC: 00000051
[75457.882173] Process av5:jubei (pid: 7946, stack limit = 0x7d628116)
[75457.888438] Stack: (0xce2c3df4 to 0xce2c4000)
[75457.892798] 3de0:                                              d49be540 dea23e40 c0d04d08
[75457.900977] 3e00: 00000002 c0499c78 d49be540 c07c1c30 89f618e5 000044a0 00000130 c0743948
[75457.909157] 3e20: 00000200 00000002 00000000 00000000 7ca37222 02b59f0c 00000000 00041400
[75457.917336] 3e40: 00003cd2 d49be540 77503327 d49be5a4 d49be540 c0c5a400 c0d04d08 1ef0f000
[75457.925515] 3e60: c0d03080 c07c4078 77503327 d49be5b0 d49be5a4 d49be540 d49be5b0 c07c6024
[75457.933694] 3e80: d49be840 c07c60ac ffffe000 00000100 c07c607c 00000000 c0c5a400 c017a408
[75457.941874] 3ea0: 000044a0 ffffffff dfb69400 ce2c3ed4 00000200 c017a510 ce2c3ed0 dfb69400
[75457.950053] 3ec0: ce2c3ed0 c0d03d00 c0c5a400 c017a7cc dfb6a588 00000000 00000000 7fffffff
[75457.958232] 3ee0: 7fffffff dfb6a500 dfb6a500 20010193 00000003 00041400 00000020 00000001
[75457.966411] 3f00: c0d03084 ffffe000 00000100 c0d03080 40000001 c0102208 dfb6a650 dfb6a630
[75457.974590] 3f20: 8e2168fa c0c56338 c0c5d9c0 0000000a c0a27e88 c0c562c8 0072adf7 c0d03d00
[75457.982770] 3f40: c0901a3c 00400040 00000010 c0c5d978 00000013 00000000 00000000 df40c000
[75457.990949] 3f60: e0803000 00000010 00000010 c0121b00 c0c5d978 c0166f9c c0d05114 c0d1a9d0
[75457.999129] 3f80: e080200c e0802000 ce2c3fb0 c04b1f5c b5fdfdd4 60010030 ffffffff 10c5387d
[75458.007308] 3fa0: 10c5387d a09fe8fc 00000010 c0101db0 a09fe8cc ad686b40 ad63044c 00000001
[75458.015487] 3fc0: a09fe8cc 00000000 00000000 ad6073e4 00000004 a09fe8fc 00000010 00000010
[75458.023666] 3fe0: 00005000 a09fe8a0 b5fe17ad b5fdfdd4 60010030 ffffffff 00000000 00000000
[75458.031858] [<c08dd808>] (_test_and_set_bit) from [<c0132fa4>] (queue_work_on+0x24/0x4c)
[75458.039956] [<c0132fa4>] (queue_work_on) from [<d49be540>] (0xd49be540)
[75458.046574] Code: f591f000 e1912f9f e0120003 01822003 (e181cf92) 
[75458.052670] ---[ end trace 8ae3c577c4edc8ef ]---
[75458.057288] Kernel panic - not syncing: Fatal exception in interrupt
[75458.063659] CPU3: stopping
[75458.066381] CPU: 3 PID: 0 Comm: swapper/3 Tainted: G      D    O      4.20.0-m2z-otg-gadget #1
[75458.074989] Hardware name: Allwinner sun8i Family
[75458.079707] [<c010e87c>] (unwind_backtrace) from [<c010b978>] (show_stack+0x10/0x14)
[75458.087456] [<c010b978>] (show_stack) from [<c08de9ec>] (dump_stack+0x88/0x9c)
[75458.094684] [<c08de9ec>] (dump_stack) from [<c010dabc>] (handle_IPI+0x1c4/0x1e4)
[75458.102086] [<c010dabc>] (handle_IPI) from [<c04b1f9c>] (gic_handle_irq+0x8c/0x90)
[75458.109663] [<c04b1f9c>] (gic_handle_irq) from [<c0101a0c>] (__irq_svc+0x6c/0x90)
[75458.117144] Exception stack(0xdf489f60 to 0xdf489fa8)
[75458.122199] 9f60: 00000000 017a2b94 dfb9d5e0 c0117960 ffffe000 c0d04d30 c0d04d74 00000008
[75458.130378] 9f80: 00000000 c0d04d08 c0c5d330 00000000 df75bc64 df489fb0 c01089fc c0108a00
[75458.138553] 9fa0: 600f0013 ffffffff
[75458.142051] [<c0101a0c>] (__irq_svc) from [<c0108a00>] (arch_cpu_idle+0x38/0x3c)
[75458.149456] [<c0108a00>] (arch_cpu_idle) from [<c01453b0>] (do_idle+0x224/0x25c)
[75458.156857] [<c01453b0>] (do_idle) from [<c0145684>] (cpu_startup_entry+0x18/0x1c)
[75458.164429] [<c0145684>] (cpu_startup_entry) from [<4010244c>] (0x4010244c)
[75459.105314] SMP: failed to stop secondary CPUs
[75459.109763] ---[ end Kernel panic - not syncing: Fatal exception in interrupt ]---

Kernel Compilation Guide

Hello,

I love your work and appreciate what you are doing. However I searched the repo to find a guide on how to build this from source but I cannot find it. If it exists, could you point it out? Otherwise I ask you for guidance on how to build this kernel from source. Any bash script/basic commands/general tips would do the trick.

Thanks,

Kernel 5.3.1 and bluetooth

Board: BPI M2 Zero.

I'm trying to setup bluetooth.
The same command worked fine with 4.20.17

brcm_patchram_plus -d --patchram /lib/firmware/ap6212/bcm43438a1.hcd --enable_hci --bd_addr b8:27:eb:b7:f9:60 --no2bytes --tosleep 5000 /dev/ttyS1

With 5.3.1 it produced infinite output

writing 01 03 0c 00 writing 01 03 0c 00 writing 01 03 0c 00 writing 01 03 0c 00 writing 01 03 0c 00

And is not finished with "Done setting line discpline"

Missing linux headers in 4.17.4

Hi!

First and foremost thank you for this amazing work. You saved me a lot of time and effort with this kernel. I've downloaded the given image with the kernel v2 (4.17.4), and the system works fine. The only problem is I can't find the Linux headers so that I can build some kernel space drivers.
In /usr/src/linux-headers-4.17.4-m2z there is only an include folder. The apt-cache search Linux-headers-$(uname -r) won't return anything.

Should I download the Linux kernel, build it, and cross-compile the headers, or it's included in the image, and only I can't find it?
Or could a kernel upgrade (e.g. v11) fix my issue?

Any help is appreciated.

Thank you in advance,
Aron Feher.

wget and curl fail with certificate errors

For instance

wget https://github.com/avafinger/bananapi-zero-ubuntu-base-minimal/releases/download/v3.2/linux-image-5.6.0-rc5+_1.0-41.deb
--2020-04-06 11:47:26--  https://github.com/avafinger/bananapi-zero-ubuntu-base-minimal/releases/download/v3.2/linux-image-5.6.0-rc5+_1.0-41.deb
Resolving github.com (github.com)... 140.82.114.4
Connecting to github.com (github.com)|140.82.114.4|:443... connected.
ERROR: cannot verify github.com's certificate, issued by ‘CN=DigiCert SHA2 Extended Validation Server CA,OU=www.digicert.com,O=DigiCert Inc,C=US’:
  Unable to locally verify the issuer's authority.
To connect to github.com insecurely, use `--no-check-certificate'.

[Q] How to flash last version?

Hello! First of all, thanks so much for this effort. The official support is not even close to what you have done here! Thanks!!

I have a question regarding how to flash your image. It is not clear to me if I have to start from V1 and the perform a sequence of updates till the last version, or if it is possible to get/build an image with the last version and flash directly that one.

What do you suggest?

Bluetooth 4.20-rc3 not working

Hello, i'm trying the instructions on the main page to get Bluetooth working, however i'm not getting it to work, i'm stuck in the following line:

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
result is:

:44:55:66 --no2bytes --tosleep 5000 /dev/ttyS1 option patchram with arg /lib/firmware/ap6212/bcm43438a1.hcd file /lib/firmware/ap6212/bcm43438a1.hcd could not be opened, error 2

it seems that don't have this file bcm43438a1.hcd

checking in the directory i only have bcm43438a0.hcd

i'm on kernel 4.20-rc3

libgdk-3.so.0: undefined symbol: wl_egl_window_destroy

Hey,

I am trying to compile OpenCV from source for the Bpi Zero but the compile is not successful. it is aborting with an "wl_egl_window_destroy" error and several other "wl_egl_window" errors.

PastedGraphic-1

I tried to reinstall libgtk-3-0 but I received a similar error:

Setting up libgtk-3-0:armhf (3.24.12-1ubuntu1) ... /usr/lib/arm-linux-gnueabihf/libgtk-3-0/gtk-query-immodules-3.0: symbol lookup error: /lib/arm-linux-gnueabihf/libgdk-3.so.0: undefined symbol: wl_egl_window_destroy

Any ideas what is causing this error and any suggestions how to fix it ?

Regards
Sebastian

Unusual SPI behaviour in Mode 1

Hello!
I have a Bpi zero with the latest kernel, and I'm trying to set and get data from ADS1294 IC through SPI communication. The IC expects SPI in mode 1. When I set the spidev0.0 to mode1 and start the data transfer, only junk came back, so I took out the logic analyzer and here is the interesting part.

If I set mode1 the clk line has an initial anomaly (first figure) which may confuse the ADS1294. At least the logic analyzer software was confused. If I set mode3 everything works as expected (second figure). Just for my sanity’s sake I’ve took out an Arduino nano, and started an SPI communication in mode1 (third figure). The waveform behaved as expected, and I could communicate with the ADS1294.

I have a feeling that some register is messed up, because this is my first time working with SPI in embedded OS, but I can’t figure out how to get rid of the problem.

I've tried this in both Python (py-spidev) and C, with the same result.

Any help would be appreciated.

mode1_bpi
mode3_bpi
mode1_arduino

Default username/password?

Hi all,

I flashed my 16gb sdcard with provided built v2 image, but it seems I can't login to the system via serial term.

I tried root/toor, pi/raspberry pi/bananapi...

runtime error: not running on a Rpi

I am continuing to get the Runtime error: Not running on a RPi. I am using a Raspberry pi 4B with Ubuntu Mate 20.04. I was using the same simple code on my old 3B+ and it worked fine. I have tried adding the username to the gpio group and it did not fix the issue. I have tried gpiozero and get the same error. Not sure what to do now as I read a lot of other people with the same issue but have not yet found a solution that works for me. Thanks.

code is below:
import RPi.GPIO as GPIO
from hx711 import HX711

#set the pin numbers for the weight sensor on raspberry pi
hx = HX711(5, 6)

hx.set_reading_format("MSB", "MSB")

#set calibration factor aka reference unit
hx.set_reference_unit(105)
hx.reset()
hx.tare()
abc=input("scale is tared, press enter to start ->")
#print("Tare done! Add weight now...")

#begin weight count and export to google sheet
#cellcounter = 2
endloop = 10 #number of times to run the code
for k in range(endloop):
total = 0
endrange = 10 #number of readings to average
for i in range(endrange):
val = hx.get_weight(5)
total = val + total
#set time delay between readings
hx.power_down()
hx.power_up()
time.sleep(0.1)

here is the error:

runfile('/home/4di/.config/spyder-py3/weightgpio.py', wdir='/home/4di/.config/spyder-py3')
/usr/lib/python3/dist-packages/gpiozero/pins/pi.py:129: SPISoftwareFallback: failed to initialize hardware SPI, falling back to software (error was: failed to import spidev)
warnings.warn(
Traceback (most recent call last):

File "/usr/lib/python3/dist-packages/gpiozero/devices.py", line 69, in call
self = cls._instances[key]

KeyError: (8,)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):

File "/usr/lib/python3/dist-packages/gpiozero/pins/pi.py", line 71, in pin
pin = self.pins[n]

KeyError: 8

During handling of the above exception, another exception occurred:

Traceback (most recent call last):

File "", line 1, in
runfile('/home/4di/.config/spyder-py3/weightgpio.py', wdir='/home/4di/.config/spyder-py3')

File "/usr/lib/python3/dist-packages/spyder_kernels/customize/spydercustomize.py", line 827, in runfile
execfile(filename, namespace)

File "/usr/lib/python3/dist-packages/spyder_kernels/customize/spydercustomize.py", line 110, in execfile
exec(compile(f.read(), filename, 'exec'), namespace)

File "/home/4di/.config/spyder-py3/weightgpio.py", line 4, in
spi = HX711()

File "/usr/lib/python3/dist-packages/gpiozero/devices.py", line 95, in call
self = super(GPIOMeta, cls).call(*args, **kwargs)

File "/home/4di/.local/lib/python3.8/site-packages/hx711_gpiozero/init.py", line 19, in init
super().init(bits, max_voltage, **spi_args)

File "/usr/lib/python3/dist-packages/gpiozero/spi_devices.py", line 128, in init
super(AnalogInputDevice, self).init(shared=True, **spi_args)

File "/usr/lib/python3/dist-packages/gpiozero/spi_devices.py", line 34, in init
self._spi = self.pin_factory.spi(**spi_args)

File "/usr/lib/python3/dist-packages/gpiozero/pins/pi.py", line 142, in spi
return self.spi_classes[('software', shared)](self, **spi_args)

File "/usr/lib/python3/dist-packages/gpiozero/devices.py", line 72, in call
self = super(GPIOMeta, cls).call(*args, **kwargs)

File "/usr/lib/python3/dist-packages/gpiozero/pins/local.py", line 152, in init
super(LocalPiSoftwareSPI, self).init(select_pin, active_high=False)

File "/usr/lib/python3/dist-packages/gpiozero/output_devices.py", line 47, in init
super(OutputDevice, self).init(pin, pin_factory=pin_factory)

File "/usr/lib/python3/dist-packages/gpiozero/mixins.py", line 69, in init
super(SourceMixin, self).init(*args, **kwargs)

File "/usr/lib/python3/dist-packages/gpiozero/devices.py", line 375, in init
pin = self.pin_factory.pin(pin)

File "/usr/lib/python3/dist-packages/gpiozero/pins/pi.py", line 73, in pin
pin = self.pin_class(self, n)

File "/usr/lib/python3/dist-packages/gpiozero/pins/rpigpio.py", line 101, in init
GPIO.setup(self.number, GPIO.IN, self.GPIO_PULL_UPS[self._pull])

Is it possible to add xorg to this?

Hello,

Not sure if xorg (2d, not 3d) can be run on this image but however when I tried to run xorg (and from that a desktop) I get the following error (after doing apt install xorg):

/usr/lib/xorg/Xorg: symbol lookup error: /usr/lib/xorg/modules/libglamoregl.so: undefined symbol: gbm_create_devicexinit: giving up

Am I missing an xorg driver at all? I do have xserver-xorg-video-fbdev installed btw. Also is it possible to have x acceleration on this device at all ? (2D).

ljones

dtb overlay?

Is there any way to use dtb overlays with this image, or do they need to be merged into the main dtb?

Non-standard pinmux for i2c1

Hi @avafinger

I'd like to modify the device tree to pinmux a few things differently out the 40-pin expansion header. I'd like to mux i2c1 SCL and SDA to pins 11 and 12 respectively, while keeping uart3 working with software flow control using TX and RX on pins 8 and 10. Firstly, is this possible?

Using this link as a reference, I changed the following block in the device tree, under the assumption that the pin ordering is "SCL", "SDA" based on the pattern used in i2c0:

 i2c1 {
  pins = "PA1", "PA16";
  function = "i2c1";
  phandle = <0x22>;
};

I then deleted this block to force software flow control:

uart3_rts_cts {
  pins = "PA15", "PA16";
  function = "uart3";
};

I then tried to run sudo i2cdetect -y 1 but the scan takes a very long time. Presumably, I have overlooked something here. Perhaps I need to update the uart3 block or interrupt field of the i2c1 block. Any help would be greatly appreciated.

Login prompt needs more than 1:30 min to display

As there are no private messages I want to ask a few questions.

1 .) Is there a way to auto-login the ubuntu user ?

2.) Is there a possibility to permanent deactivate eth0 ? I only need the wlan0 interface...

3.) Last question is while startup:
Here I'm getting the message: "A start job is running for DHCP Client..."

Bildschirmfoto 2020-02-15 um 15 45 32

This makes the booting time very long as you can see it is counting up to 1m 38 sec. resulting in a "Failed to start" message

Bildschirmfoto 2020-02-15 um 15 43 49

Looking into systemctl gives me the info that it is Failed. Therefore I think it is not used. So is it possible to deactivate it so that the booting will go faster ?

Bildschirmfoto 2020-02-15 um 16 19 09

Thanks for your help.

OTG port not working on 5.3.0-rc8 kernel

Hello again @avafinger

Can you please confirm if the USB OTG port is working on latest released kernel? I was previously using a bluetooth 4.0 dongle but after upgrading the kernel it doesn't show anymore in lsusb or whatsoever.

All i get is the following output using lsusb:

Bus 008 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 005 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 009 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Directions to rebuild kernel and/or add kernel modules?

I wanna run a couple of bpi m2+ zeros with docker inside an ad-hoc wifi mesh.

I figured the 5.3.5 image would be a good start for a docker-host(small footprint, awesome thermals) but it seems that its missing the support for overlayfs in the kernel. The batman-adv module is another requirement. I looked into rebuilding the kernel myself but I'm quite unclear about the directions and the codebases/patches/configs used to create the supplied image&kernel. I can produce new kernels but I run into issues like missing wifi and the like.

Happy about any info shedding some light on how to successfully rebuild/recreate the v24+ kernels!

P.S.: I found https://github.com/avafinger/linux-5.6.y and tickered with it but it seems I'm missing something there, too. No clue.

Cheers

FEATURE REQUEST: arm64 version

I noticed this is armv7l (32 bit), is there anyway you can generate a aarch64 image to match the 64 bit H2+ CPU on the bpm2z?

modprobe: FATAL: Module tun not found in directory /lib/modules/4.17.4-m2z

Hello,

First of all thanks for this experimental image, so far it is the best image i found for this board. Im trying to use pivpn with my banana pi but just found that the included kernel doesnt have the tun module.

I get the following error:
ERROR: Cannot open TUN/TAP dev /dev/net/tun: No such file or directory (errno=2)

and when i run:

sudo modprobe tun

I get that the module is not installed:
modprobe: FATAL: Module tun not found in directory /lib/modules/4.17.4-m2z

Can you please include the module with the next update?

Thanks in advance.

iotop

Hi. Would you please add support for iotop? It requires I/O accounting support (CONFIG_TASKSTATS, CONFIG_TASK_DELAY_ACCT, CONFIG_TASK_IO_ACCOUNTING) enabled in kernel. Thank you.

8GB is a bit too big

image

I have an 8GB SanDisk card that works for everything. The image you uploaded to mega seems to be slightly too big. I swapped to a MicroCenter card and it seems to work.

Is it possible to shrink the .img by just a 100MB?

no EEMC support ?

I downoaded the 8 Gb image , installed on a BPI-P2, all is OK but..

no EMMC viewed in fdisk -l only the SD-CARD (and the eemc on board with 8 Gb is correctly working with other distribs)

root@bpi-m2z:~# fdisk -l Disk /dev/mmcblk0: 7.5 GiB, 8068792320 bytes, 15759360 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: dos Disk identifier: 0x58b49123

Device Boot Start End Sectors Size Id Type /dev/mmcblk0p1 49152 253951 204800 100M 83 Linux /dev/mmcblk0p2 253952 15532031 15278080 7.3G 83 Linux

wlan0 is not present after updating kernel to 5.6.0-rc7

Hi!

I've started a new issue, since The last one (the header problem) was solved, but a new issue arose, which was different.

I've downloaded torvalds kernel 5.6.0-rc7, and built the complete image with my modules, and headers. I've installed the zImage, modules and linux headers. I've installed the device tree as you stated at the build your own kernel section.

When I restarted the BPI everything was seemingly OK - I did not try the WiFi at this stage, so I modified the device tree to have the PWM, SPI, I2C modules, which were present after the restart.

The problem is now wlan0 won't appear.
At boot-up the system failes to start DHCP Client, and fails to Raise network interfaces.
ifconfig shows only eth0 and lo.
Writing ifup wlan0 gives:

wpa_supplicant: /sbin/wpa_supplicant daemon failed to start
run-parts: /etc/network/if-pre-up.d/wpasupplicant exited with return code 1
ifup: failed to bring up wlan0

Do I have to change something in the Kernel, or the Device Tree? Or something after the build?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.