Banana Pi

Allwinner A20
7z arhives can be uncompressed with 7-Zip on Windows, Keka on Mac and 7z on Linux (apt-get install p7zip-full). RAW images can be written with Rufus (Win xp/7/8/10) or DD in Linux/Mac.


  • Debian Wheezy, Jessie or Ubuntu Trusty, Xenial based. Compiled from scratch
  • Install images are reduced to actual data size with small reserve
  • Root password is 1234. You will be prompted to change this password and to create a normal user at first login.
  • First boot takes longer (around 3min) than usual (20s) because it updates package list, regenerates SSH keys and expand partition to fit your SD card. It might reboot one time automatically. Second boot also take little longer (around 3min) because it creates 128MB emergency swap space
  • Ready to compile external modules. Tested with this wireless adapter
  • Ethernet adapter with DHCP and SSH server ready on default port (22)
  • Wireless adapter with DHCP ready if present but disabled (/etc/network/interfaces, WPA2: normal connect or AP mode)
  • desktop environment upgrade ready
  • NAND, SATA, eMMC and USB install script is included (nand-sata-install)
  • Serial console enabled
  • Enabled automatic security update download for basic system and kernel. Upgrades are done via standard apt-get upgrade method
  • Login script shows: board name with large text, distribution base, kernel version, system load, up time, memory usage, IP address, CPU temp, drive temp, ambient temp from Temper if exits, SD card usage, battery conditions and number of updates to install.
Performance tweaks

  • /tmp & /log = RAM, ramlog app saves logs to disk daily and on shut-down (Wheezy and Jessie w/o systemd)
  • automatic IO scheduler. (check /etc/init.d/armhwinfo)
  • journal data writeback enabled. (/etc/fstab)
  • commit=600 to flush data to the disk every 10 minutes (/etc/fstab)
  • optimized CPU frequency scaling 480-1010Mhz (392-996Mhz @Freescale, 600-2000Mhz @Exynos & S905) with interactive governor (/etc/init.d/cpufrequtils)
  • eth0 interrupts are using dedicated core (Allwinner based boards)
Vanilla kernel

Bugs or limitation

  • No HW accelerated video yet
  • NAND is not supported yet.
  • Screen output from kernel is set to HDMI by default. Boot loader can detect and switch, kernel not.
Legacy kernel

Bugs or limitation


  • Ubuntu Trusty or Debian Jessie based (where Ubuntu fails)
  • HW accelerated video playback where possible (legacy kernel only)
  • MALI Open GLES on A10 / A20 / H3 (legacy kernel only)
  • Pre-installed: Firefox, LibreOffice Writer, Thunderbird
  • Lightweight XFCE desktop
  • Autologin, when normal user is created – no login manager (/etc/default/nodm)
Connect your LCD display

I tried three different display connection types: I2C, (4bit) parallel and SPI. All of them are working perfectly with my image. I didn’t took a picture of the third one. It’s a standard Hitachi HD44780 based 20×4 LCD, wired and tested accordingly to Wiring(B)PI example.

I am using this code for Vanilla kernel and with changed line: /dev/i2c-%u = /dev/i2c-2 for Legacy kernel.



Currently working only under Legacy kernel.

Image has pre-loaded settings for two LVDS display.

To enable 7 inch.

ln -sf /boot/bin/bananapilcd7.bin /boot/script.bin 

To enable 5 inch.

ln -sf /boot/bin/bananapilcd5.bin /boot/script.bin

If you need touch screen support, add this module to your /etc/modules