FreeBSD on Allwinner (sunxi) systems

Support for all the below is done on a volunteer basis. New devices are added all the time. However, from time to time certain older devices will be dropped unless new developers volunteer to maintain them.

FreeBSD supports the following Allwinner SoCs:

Name Type Cores Width Family FreeBSD Comments Example Boards
Allwinner A10 sun4i 1 32 Cortex-A8 armv7 supported Cubieboard
Allwinner A13/R8 sun5i 1 32 Cortex-A8 armv7 supported OLinuXino
Allwinner A20 sun7i 2 32 Cortex-A7 armv7 supported Banana Pi
Allwinner A31 & A31s sun6i 4 32 Cortex-A7 armv7 supported Banana Pi M2
Allwinner A64 sun50i 4 64 Cortex-A53 aarch64 supported Pine64
Allwinner A83T sun8i 8 32 Cortex-A7 armv7 supported Banana Pi M3
Allwinner H3 & H2+ sun8i 4 32 Cortex-A7 armv7 supported Orange Pi One
Allwinner H5 sun50i 4 64 Cortex-A53 aarch64 supported NanoPI K1 Plus
Allwinner H6 sun50i 4 64 Cortex-A53 aarch64 supported Pine H64

These SoCs are found in a large number of development boards and other devices. FreeBSD has support for some of these boards, including (but not limited to) the following:

Note: A10 support is now in an “only as needed” basis as of 20180620. It is reasonably similar to the more-popular A20, however.

Note: A13 support is now in an “only as needed” basis as of 20180620. It is reasonably similar to the more-popular A20, however.

Note: KyleEvans has agreed to take over A20 support, thus it is no longer being considered for deprecation as of 20180620.

Note: A31 support is being considered for deprecation as of 20180612.

Boards known to boot FreeBSD:

  • See the Allwinner boot process page for details how the board starts.
  • See that same page for details how to modify a GENERICSD image for use with a Pine H64.

For the quickest of quick-starts without understanding, follow these steps:

  • Obtain a bootable – for some other SBC – aarch64 image, such as FreeBSD-13.0-RELEASE-arm64-aarch64-ROCK64.img
  • Write the bootable image to a micro-SD card
  • Write the u-boot code to the micro-SD card
  • Place card in the Pine H64 SD-card slot and power on the board
dd if=FreeBSD-13.0-RELEASE-arm64-aarch64-ROCK64.img \
  of=/dev/da0 bs=1M conv=notrunc
dd if=/usr/local/share/u-boot/u-boot-pine-h64/u-boot-sunxi-with-spl.bin \
  of=/dev/da0 bs=128k seek=1 conv=sync

Legend

Supported
Should work
Work in progress
Untested
Not working
Not supported
Not applicable
A10 A13 A20 A31 A31S A64 A83T H3 H5 H6
Audio (analog) YES YES YES
Audio (HDMI) YES
cpufreq / DVFS YES YES YES YES YES YES
crypto YES
DMA YES YES YES
Ethernet r262710 YES YES YES r305134 YES YES YES YES
Framebuffer YES efifb efifb
GPIO r246342 YES YES YES YES r305134 YES YES YES
HDMI video YES
I2C r295626 YES YES YES YES r305134 YES YES
IR (RX) YES YES YES
SATA 285090 YES
SD/MMC r283253 YES YES YES YES r305134 YES YES YES YES
Thermal YES YES YES YES YES YES YES
UART YES YES YES YES YES r305134 YES YES YES YES
USB Host r246057 YES YES YES YES r305134 YES YES YES
USB DRD YES YES YES YES YES YES YES
Watchdog YES YES YES YES YES r305134 YES YES YES
SPI YES YES YES YES YES YES YES YES YES

The following SoC interfaces are not yet supported by FreeBSD:

  • Crypto engine
  • Display Engine 2.0 (sun8i/sun50i)
  • KEYADC
  • I2S/TDM
  • OWA
  • NAND
  • Smart card reader
  • Transport stream controller

The following features are not directly related to Allwinner SoCs but are often implemented on Allwinner boards:

  • Bluetooth UART (ng_h4)
  • SDIO wifi support

Most Allwinner systems use U-Boot as the boot program. Please see this page for details.

There are several different ways to build an image.

  • The Crochet build tool (deprecated) supports boards including the Cubieboard 1, Cubieboard 2, Banana Pi, and Banana Pi M3.
  • Work is ongoing to support building images via the poudriere image command.
  • A GENERIDSD image is available for arm32, you just need to add u-boot on it and write it to an sdcard (See this page for how to add u-boot)

Install the xorg and xf86-video-scfb packages, and add the following to /etc/X11/xorg.conf:

Section "InputDevice"
    Identifier  "Keyboard1"
    Driver      "kbd"
EndSection

Section "InputDevice"
    Identifier  "Mouse1"
    Driver      "mouse"
    Option      "Protocol"      "auto"
    Option      "Device"        "/dev/sysmouse"
EndSection

Section "Monitor"
    Identifier  "Monitor"
EndSection

Section "Device"
    Identifier  "Generic FB"
    Driver      "scfb"
EndSection

Section "Screen"
    Identifier  "Screen"
    Device      "Generic FB"
    Monitor     "Monitor"
    DefaultDepth 24
    SubSection "Display"
       Depth           24
    EndSubsection
EndSection

Section "ServerLayout"
    Identifier  "layout"
    Screen      0 "Screen" 0 0
    InputDevice "Mouse1" "CorePointer"
    InputDevice "Keyboard1" "CoreKeyboard"
EndSection
  • arm/allwinner.txt
  • Last modified: 2022/09/02 09:40
  • by PeterJeremy