[[!meta title="NetBSD/evbarm on Allwinner Technology SoCs"]]
NetBSD supports many boards based on Allwinner SoCs. Starting with NetBSD 8.0, FDT is used to configure devices. As a result, a large number of boards and configurations can be supported with a single kernel.
[[!toc levels=2]]
# Supported SoCs
# Supported hardware
Please refer to the [32-bit](https://nxr.netbsd.org/xref/src/sys/arch/evbarm/conf/SUNXI) or [64-bit](https://nxr.netbsd.org/xref/src/sys/arch/evbarm/conf/GENERIC64) kernel configs for the most up-to-date list of supported hardware.
Device |
Supported |
Notes |
Audio codec | Yes | Supported on sun4i, sun5i, sun6i, sun7i, sun8i-h2+, sun8i-h3, sun50i-h5, sun50i-a64 |
CAN controller | Yes | |
Crypto engine | - | |
CSI | - | |
DMA | Yes | |
Fast Ethernet (sun4i/sun5i/sun7i) | Yes | |
Framebuffer | Yes | Uses simplefb configured by bootloader |
Gigabit Ethernet (sun6i/sun7i/sun9i) | Yes | |
Gigabit Ethernet (sun8i/sun50i) | Yes | |
GPIO | Yes | |
GPU | - | |
I2C | Yes | |
I2S/PCM | Experimental | |
IR transceiver | - | |
NAND | Yes | |
P2WI/RSB | Yes | |
PCIe | - | H6 |
PWM | Yes | |
RTC | Yes | |
SATA | Yes | |
SD/MMC | Yes | |
SMP | Yes | PSCI |
SPDIF | - | |
SPI | Yes | |
Thermal sensors | Yes | |
Touch screen | Yes | |
UART | Yes | |
USB 2.0 | Yes | |
USB 3.0 | Yes | |
USB OTG | Experimental | |
Watchdog timer | Yes | |
# Installation
- Download or build **armv7.img** (32-bit) or **arm64.img** (64-bit) from NetBSD -current
- Write the image to disk: **dd if=armv7.img of=/dev/rld0d bs=1m conv=sync**
- Install a board-specific U-Boot (2017.07 or later) from pkgsrc to the SD card
(the `u-boot-sunxi-with-spl.bin`-s are provided by `sysutils/u-boot-` packages):
**dd if=/usr/pkg/share/u-boot/<boardname>/u-boot-sunxi-with-spl.bin of=/dev/rld0d bs=1k seek=8 conv=sync**
If your SoC has a SATA controller and you would like to install on
an hard disk and use a SD card only for u-boot please give a look
to
[[NetBSD/evbarm install via sysinst(8) on a SATA hard disk, USB stick or (u)SD card|ports/evbarm/install_using_sysinst]].
# Tips and tricks
## Video overscan compensation
On some television models, the borders of the screen may be cut off. If your television doesn't have an option to disable overscan, you can enable overscan compensation by entering the following commands at the U-Boot prompt:
setenv video-mode sunxi:1280x720-24,overscan_x=32,overscan_y=20
saveenv
reset
## Pinebook function keys
The sleep (Fn+Esc), home (Fn+F1), volume down (Fn+F3), volume up (Fn+F4), and mute (Fn+F5) keys on the keyboard are mapped to uhid(4) devices.
Create the following config file:
[[!template id=filecontent name="/etc/usbhidaction.conf" text="""
Consumer:Consumer_Control.Consumer:Volume_Up 1
mixerctl -n -w outputs.master++
Consumer:Consumer_Control.Consumer:Volume_Down 1
mixerctl -n -w outputs.master--
Consumer:Consumer_Control.Consumer:Mute 1
mixerctl -n -w outputs.mute++
Consumer:Consumer_Control.Consumer:AC_Home 1
/etc/powerd/scripts/hotkey_button AC_Home pressed
Generic_Desktop:System_Control.Generic_Desktop:System_Sleep 1
/etc/powerd/scripts/sleep_button System_Sleep pressed
"""]]
Then start two copies of usbhidaction:
[[!template id=programlisting text="""
# /usr/bin/usbhidaction -c /etc/usbhidaction.conf -f /dev/uhid0 -i -p /var/run/usbhidaction-uhid0.pid
# /usr/bin/usbhidaction -c /etc/usbhidaction.conf -f /dev/uhid1 -i -p /var/run/usbhidaction-uhid1.pid
"""]]
# Links
- [[NetBSD/evbarm install via sysinst(8) on a SATA hard disk, USB stick or (u)SD card|ports/evbarm/install_using_sysinst]]