FreeBSD on Allwinner (sunxi) systems
Contents
Support policies
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.
Supported SoCs
FreeBSD supports the following Allwinner SoCs:
Name |
Type |
Cores |
Width |
Family |
FreeBSD |
Comments |
Example Boards |
sun4i |
1 |
32 |
armv7 |
supported |
Cubieboard |
||
sun5i |
1 |
32 |
armv7 |
supported |
OLinuXino |
||
sun7i |
2 |
32 |
armv7 |
supported |
Banana Pi |
||
sun6i |
4 |
32 |
armv7 |
supported |
Banana Pi M2 |
||
sun50i |
4 |
64 |
aarch64 |
supported |
|||
sun8i |
8 |
32 |
armv7 |
supported |
Banana Pi M3 |
||
sun8i |
4 |
32 |
armv7 |
supported |
Orange Pi One |
||
sun50i |
4 |
64 |
aarch64 |
supported |
NanoPI K1 Plus |
||
sun50i |
4 |
64 |
aarch64 |
supported |
Pine H64 |
Supported boards
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:
A10 Supported Boards
Note: A10 support is now in an "only as needed" basis as of 20180620. It is reasonably similar to the more-popular A20, however.
A13 Supported Boards
Note: A13 support is now in an "only as needed" basis as of 20180620. It is reasonably similar to the more-popular A20, however.
A20 Supported Boards
Note: KyleEvans has agreed to take over A20 support, thus it is no longer being considered for deprecation as of 20180620.
Lamobo R1 (support in very early stages as of 20180816)
A31/A31S Supported Boards
Note: A31 support is being considered for deprecation as of 20180612.
A64 Supported Boards
Vendor sites
H3 Supported Boards
Supported devices
Legend
Supported |
Should work |
Work in progress |
Untested |
Not working |
Not supported |
Not applicable |
Audio (analog) |
|
YES |
YES |
|
|
|
|
YES |
|
|
Audio (HDMI) |
|
|
YES |
|
|
|
|
|
|
|
cpufreq / DVFS |
YES |
|
YES |
|
|
YES |
YES |
YES |
YES |
|
crypto |
|
|
|
|
|
|
|
|
|
YES |
DMA |
|
YES |
YES |
|
|
|
|
YES |
|
|
Ethernet |
YES |
YES |
YES |
YES |
YES |
YES |
YES |
|||
Framebuffer |
|
|
YES |
|
|
efifb |
|
|
efifb |
|
GPIO |
YES |
YES |
YES |
YES |
YES |
YES |
YES |
|
||
HDMI video |
|
YES |
|
|
|
|
|
|
|
|
I2C |
YES |
YES |
YES |
YES |
YES |
|
YES |
|
||
IR (RX) |
|
|
YES |
|
|
|
|
YES |
YES |
|
SATA |
YES |
|||||||||
SD/MMC |
YES |
YES |
YES |
YES |
YES |
YES |
YES |
YES |
||
Thermal |
YES |
YES |
YES |
|
|
YES |
YES |
YES |
YES |
|
UART |
YES |
YES |
YES |
YES |
YES |
YES |
YES |
YES |
YES |
|
USB Host |
YES |
YES |
YES |
YES |
YES |
YES |
YES |
|
||
USB DRD |
|
|
YES |
YES |
YES |
YES |
YES |
YES |
YES |
|
Watchdog |
YES |
YES |
YES |
YES |
YES |
YES |
YES |
YES |
|
|
SPI |
YES |
YES |
YES |
YES |
YES |
YES |
YES |
YES |
YES |
|
What still needs to be done
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
The Allwinner boot process
Most Allwinner systems use U-Boot as the boot program. Please see this page for details.
How to Build an Image
There are several different ways to build an image.
FreeBSD Release Engineering uses the release.sh script to build releases for various 32-bit and 64-bit arm targets.
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)
How to setup Xorg
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