LeMaker Banana Pi

The Banana Pi is trying very hard to mimic the formfactor of the Raspberry Pi and to cash in on its popularity, but it fails to match both the exterior dimensions, the exact connector placing and the software support.

Despite claims of being open source, this is not open source hardware. If you are thinking of getting this device, you should also try looking into the hardware from our Community instead. There is also little actual support to be had from LeMaker, at best, they are rehashing things from the linux sunxi community.

The Banana Pi has clearly suffered from having different manufacturers/distributors each favor their competing model variants and create their own (sub)"communities". On top of that there were clashes and legal disputes over trademarks and domain ownership. Quite often it would be unclear who's officially responsible for a particular device, and what degree of support the vendor provided. This has created confusion among users, and contradicted the collaborative approach that could be expected from the "open (source)" marketing label they unanimously used.

A 2015-05-23 statement describes the current state of things, and gives some historical background information. It remains to be seen whether the situation will improve in the future.

= Identification = The PCB has the following silkscreened on it: BP-A20

= Sunxi support =

Current status
Supported.

Current mainline U-Boot (2015.04) and  mainline kernel (3.19.2+) work well on the Banana Pi. Kernel 4.0+ is recommended, as it adds cpufreq support for A20 SoCs (allowing lower power consumption and reduced temperatures).

Note: Banana Pi's GMAC is not supported in the community kernel. A commit within Lemaker's Banana Pi Github fork of linux-sunxi-3.4 seems to provide GMAC support for Banana Pi. This has to be proved and merged into linux-sunxi.

LeMaker seems to use an important tweak of both the Linux 3.4 kernel and U-Boot networking code for the Banana Pi: The GMAC driver is specifically modified to set the GMAC_TX_DELAY parameter to 3. This adjusts the relative timing of the clock and data signals to the PHY in order to compensate for differing trace lengths on the PCB (details; the pcDuino3 Nano has the same problem). Without this modification, the Ethernet port will work at 100Mbit, but not (or not reliably) at 1000Mbit. Upstream U-Boot now sets this parameter itself, so the kernel patch isn't needed any more (patch).

Manual build

 * The .fex file can be found in sunxi-boards as Bananapi.fex
 * For building u-boot, use the Bananapi target.

Everything else is the same as the manual build howto.

Using legacy u-boot-sunxi is now deprecated / mostly obsolete for the Banana Pi. As of mid-2015 you should prefer mainline U-Boot 2015.04 - which offers a wide range of features, including networking and netconsole. Mainline U-Boot also supports booting older 3.4.x kernels.

Mainline kernel
Use the sun7i-a20-bananapi.dtb device-tree file for the mainline kernel.

= Tips, Tricks, Caveats =

FEL mode
The button marked K3, located between the HDMI and USB host connectors, triggers FEL mode when pressed during boot. (K3 pulls the A20 BOOTSEL pin to low level.)

If no SD card is present, the A20 will automatically fall back to FEL mode (as this device has no other means of booting, like e.g. onboard NAND flash). So if you want to enforce FEL mode, you may simply remove the SD card and connect to the Banana Pi via the OTG micro USB (the one right next to the SD slot). This also supplies power to the board at the same time.

To verify you have successfully entered FEL mode, check the output of. For the Banana Pi, it should look like: AWUSBFEX soc=00001651(A20) 00000001 ver=0001 44 08 scratchpad=00007e00 00000000 00000000

LEDs
For those with a transparent case (or no case at all) the Banana Pi's LED activity might get annoying. The red power LED (D7) can't be turned off, but the behavior of the two other (green and blue) may be changed:

The blue LED (D6) is coupled to the Ethernet PHY, and only able to indicate network-related activity. A small utility named bpi_ledset can control it (together with the other LEDs directly on the network connector).

The green LED (D8) is GPIO-driven via PH24, and thus user-definable. It usually can be controlled by writing to the special file /sys/class/leds/bananapi:green:usr/trigger (requires root privileges). Some configurations set the green LED function to "heartbeat" by default, causing it to flash constantly - "none" will turn it off instead. (Check the output of  for possible values.) Note: Older kernels (3.4.x) may name the file /sys/class/leds/green:ph24:led1/trigger instead.

See also: related thread on LeMaker forum, BananaLEDd

SATA
If you wish to connect a SATA drive (2.5" mobile harddisk or SSD) to the Banana Pi: Make sure your power supply is connected to the "DC-IN" port (micro USB next to the SATA connector), and can deliver sufficient current (e.g. 5V/2000mA). Using the OTG port or an inadequate power supply might result in your SATA device not being detected.

In case you're using large SATA drives > 2TB, you might want to check that both your U-Boot and kernel support proper LBA48 addressing and partioning schemes (GPT). For U-Boot, make sure that CONFIG_SYS_64BIT_LBA gets defined (as of 2015.04 it's not in the default configuration). For kernel configuration, see this FAQ entry.

IR Receiver
The Banana Pi features a standard 3-pin onboard infrared receiver (AX-1838HS or comparable type), which is connected straight to the A20's IR0_RX pin (PB4).

The Linux kernel supports this receiver via CONFIG_IR_SUNXI. The mainline kernel option is located under "Device drivers", "Multimedia support", "Remote Controller devices", "SUNXI IR remote control"; the driver is named sunxi_cir. For 3.4.x kernels, use "Device drivers", "Input device support", "Keyboards", "sunxi IR support"; the module name is sunxi-ir.

For tips on how to setup and configure LIRC, see this description for Cubieboard2.

= Adding a serial port =

While the GPIO pinout of the Banana Pi is designed to be compatible to the Raspberry Pi, it's important to notice subtle differences in the serial ports. The Banana Pi has some additional pins that already provide two more serial ports.

The default serial port /dev/ttyS0 at MMIO 0x1c28000, used for (bootstrap) debugging and the serial console, is located at J11 - refer to the picture and instructions below. The Raspberry's "original" serial port on GPIO 14 and 15 (CON3, pins 8 and 10 - at MMIO 0x1c28c00) can usually be accessed as /dev/ttyS2 on the Banana Pi. J12 also provides another serial port on pins 4 (RXD) and 6 (TXD) at MMIO 0x1c29c00, which should map to /dev/ttyS3.

Note: The actual mapping between physical pins, UART numbers and/or device names may depend on the specific kernel and configuration used. If in doubt, check the boot messages:

The mainline kernel likely just numbers the three ports listed above sequentially: /dev/ttyS[0-2]. They get defined in the device tree (.dtb file).



Locating the UART
The UART pins are located in the upper left corner of the board. They are marked as TXD, RXD and GND on the PCB. TXD and RXD are on J11, GND can be grabbed from pin 7 or 8 of J12. Just attach some leads according to our UART Howto. Do not connect the red wire (VCC or 3.3V/5V), as that might damage your board.

= Pictures =

= Variants =


 * The original Banana Pi was released in March 2014. SinoVoip now labels it BPi-M1 ("model 1") to distinguish it from other models that were introduced later. The M1 features a standard SD card slot and a 26 pin GPIO connector (similar to the Raspberry Pi A/B).
 * The Banana Pro was presented in October 2014. It's an updated version of M1, using a microSD slot, onboard WLAN (AP6181) and a 40 pin GPIO header (that mimics the Raspberry Pi A+/B+ models).
 * The Banana Pi Router (BPi-R1) uses a larger form factor. The board has microSD, onboard WLAN (RTL8192CU), 4+1 LAN ports, 26 pin GPIO and a connector to directly attach a SATA drive.
 * The Banana Pi M2 (BPi-M2, "model 2") is announced for 2015 (shipping from April). It is based on a quad-core A31s CPU; and offers microSD, onboard WLAN (802.11b/g/n, chipset not known yet), 40 pin GPIO and 4 USB type A connectors. However, this device has no SATA any more.

= Also known as = There aren't any known rebadged devices at the moment.

= See also = There are several websites about Banana Pi and claiming to support it. It has to be clarified, what is "official" and who is behind these sites (also see introductory remarks).


 * LeMaker Banana Pi site, Forum, Wiki, "Official" Github Repository, Lenovator (LeMaker Distributor)
 * BananaPi R&D Team, Github Repository
 * Sinovoip Banana Pi site, Sinovoip (Manufacturer?), bananapi.com, Chinese forum
 * Schematic.
 * OpenWRT support for the BananaPi with mainline kernel - Daily build / Manual for building an SD-card image

Manufacturer images

 * A various amount of prebuilt images is provided via LeMaker's Website.
 * bananapi.com download section for the Banana Pi (BPi-M1).