Allwinner Sun4i/5i/6i/7i/9i (sunxi)
Various vendors are offering development boards / single-board computer based on the Allwinner SoCs. These are running various flavors of the A1x, A20, A31, and soon H3 SoCs, with different buildouts. The mach is called “sunxi”.
For some specs rather see Allwinner_Technology#A-Series.
Supported Versions
Model Version | Launch Date | OpenWrt Version Supported | Model Specific Notes |
---|---|---|---|
A10 | - | CC/trunk | Single Cortex-A8 |
A10s | - | CC/trunk | Single Cortex-A8 |
A13 | - | CC/trunk | Single Cortex-A8 |
A20 | - | CC/trunk | Dual Cortex-A7 |
A23 | - | na | Dual Cortex-A7 |
A31 | - | trunk | Quad Cortex-A7 |
A33 | - | na | Quad Cortex-A7 |
A64 | - | trunk | Quad-core Cortex-A53 |
A80 | - | na | 8-core big.LITTLE (4x A15 + 4x A7) |
H3 | - | trunk | Quad-core Cortex-A7 |
H5 | - | trunk | Quad-core Cortex-A53 |
H8 | - | na | 8-core Cortex-A7 |
See also Table of Hardware for supported devices and their basic technical data.
Hardware Highlights
Model | SoC | RAM | Storage | Network | USB | Serial | JTAG | UEXT | Other | linux-sunxi page |
---|---|---|---|---|---|---|---|---|---|---|
BananaPi | A20 | 1024MiB | μSD | Gigabit Ethernet | 2x USB2 | yes | n/a | n/a | HDMI, SATA, audio, IR, RCA video out, CSI | Page |
BananaPi M2 Plus | H3 | 1024MiB | μSD, 8GB eMMC | Gigabit Ethernet, Ampak AP6212 | 2x USB2, 1x USB OTG | yes | n/a | n/a | HDMI, IR, GPIO, CSI | Page |
BananaPro | A20 | 1024MiB | μSD | Gigabit Ethernet, AP6181 BT+WLAN | 2x USB2 | yes | n/a | n/a | HDMI, SATA, audio, IR, RCA video out, CSI | Page |
Cubieboard | A10 | 1024MiB | μSD, 4GB NAND | Fast Ethernet | 2x USB2 | yes | n/a | yes | HDMI, SATA, audio | Page |
Cubieboard2 | A20 | 1024MiB | μSD, 4GB NAND | Fast Ethernet | 2x USB2 | yes | n/a | yes | HDMI, SATA, audio | Page |
hummingbird | A31 | 1024/2048MiB | μSD, 8/16GB NAND | BCM WiFi, Gigabit Ethernet | 2x USB2 | yes | n/a | n/a | HDMI, audio, IR | Page |
Cubietruck | A20 | 2048MiB | μSD, 8GB NAND | BCM WiFi, Gigabit Ethernet | 2x USB2 | yes | n/a | n/a | HDMI, VGA, SATA, audio, IR, TOSlink | Page |
Lamobo R1 | A20 | 1024MiB | μSD | RTL8192CU 802.11bgn 2T2R WiFi BCM53125 Gigabit Ethernet switch with 5 ports | 1x USB2 Host, 1x USB2 OTG | yes | n/a | n/a | HDMI, SATA, audio, IR, CSI | Page |
Olimex A10-OLinuXino-LIME | A10 | 512MiB | μSD | Fast Ethernet | 2x USB2 | yes | n/a | yes | HDMI, SATA | Page |
Olimex A13-OLinuXino-WIFI | A13 | 512MiB | μSD | RTL WiFi | 3x USB2 | yes | n/a | yes | VGA | Page |
Olimex A13-SOM | A13 | 256/512MiB | μSD, 4GB NAND | RTL WiFi | n/a | yes | n/a | n/a | n/a | |
Olimex A20-OLinuXino-MICRO | A20 | 1024MiB | SD, μSD, 4GB NAND | Fast Ethernet | 2x USB2 | yes | n/a | yes | HDMI, SATA, audio | Page |
Orange Pi Plus | H3 | 1024MiB | μSD | Gigabit Ethernet | 4x USB2 | yes | n/a | n/a | n/a | Page |
Orange Pi PC | H3 | 512/1024MiB | μSD | Fast Ethernet | 3x USB2 | yes | n/a | n/a | n/a | Page |
Orange Pi Zero | H2+ | 256/512MiB | μSD | Fast Ethernet, XR819 Wi-Fi | 1x USB2 | yes | n/a | n/a | u.FL | Page |
Orange Pi Zero Plus | H5 | 512MiB | μSD | Gigabit Ethernet, RTL8189FTV (WiFi Unsupported) | 1x USB2 | yes | n/a | n/a | u.FL | Page |
pcDuino/pcDuinoV2 | A10 | 1024MiB | μSD, 2GB NAND | Fast Ethernet | 2x USB2 | yes | n/a | n/a | HDMI / Arduino headers | Page |
pcDuino3 | A20 | 1024MiB | μSD, 4GB NAND | Fast Ethernet, RTL8188EU WiFi | 1x USB2 | yes | n/a | n/a | HDMI / Arduino headers, SATA, IR | Page |
pcDuino8 / Arches | A80 | 2048MiB | μSD, 8GB NAND | BCM WiFi (AMPAK 6330), Gigabit Ethernet | 2x USB2 | yes | n/a | n/a | HDMI / IR | Page |
Pine64 / PINE A64 | A64 | 512MiB | μSD | Fast Ethernet | 2x USB2 | yes | n/a | n/a | HDMI / Audio / GPIO | Page |
Pine64 / PINE A64+ | A64 | 1024/2048MiB | μSD | Gigabit Ethernet | 2x USB2 | yes | n/a | n/a | HDMI / Audio / GPIO | Page |
UEXT is an open standard port to provide serial, I²C and SPI expansion ports.
Status
Patches have been back-ported from the http://linux-sunxi.org/ community, including device trees, clocks, timers, PIO, ethernet, USB, and, MMC. These patches are being mainlined as they come online by the community.
- SPL: done
- u-boot: done
- kernel: done
- rootfs: done
You have the option to boot the board from initramfs, SD card (recommended), USB storage, or NFS.
Working
- SD/MMC
- USB EHCI/OHCI
- EMAC (A10 10/100 Mbps)
- GMAC (A20 and above, 10/100/1000 Mbps)
- SATA
- Clocks
- Timers
- SMP with HYP patches for A20
- Various devices, GPIO, IR
Being worked on
- NAND (have some snippets already)
- Audio
- SPI (need integration)
Installing OpenWrt
This section details what is required to install and upgrade OpenWrt. The generic procedure is described here: generic.flashing; these devices don't have a flash chip soldered to the PCB but an SD-Card slot.
Pre-built release and snapshot images
Trunk - Pre-built SD card images
You can build an SD card image directly from buildroot for your device.
- Check out trunk - https://dev.openwrt.org/wiki/GetSource
- Run
make menuconfig
- Select device profile - f.e. BananaPi
- Start the build
- The built SD card images will be in bin/sunxi
dd if=bin/sunxi/openwrt-sunxi-Bananapi-sdcard-vfat-ext4.img of=/dev/sdc
Chaos Calmer - Assembling the SD card image yourself
OpenWrt CC trunk images are located in snapshots/trunk/sunxi/ folder.
For example if you have Cubieboard3/Cubietruck then download these files from the server:
SD layout
SD layout with 512 byte blocks:
NAME | start block | size |
---|---|---|
MBR | 0 | 1 block |
u-boot-with-spl.bin | 16 (8 KB) | ~250 KB |
FAT | 2048 (1 MB) | 15 MB |
EXT4 | 32768 (16 MB) | rest |
SD preparation
We assume /dev/mmcblk0 is the SD card and Cubietruck is the board.
- Partition the SD card. Two partitions are created. The first is the boot partition, /dev/mmcblk0p1. The second is the root partition, /dev/mmcblk0p2.
# fdisk /dev/mmcblk0 Command (m for help): n Partition type: p primary (0 primary, 0 extended, 4 free) e extended Select (default p): p Partition number (1-4, default 1): 1 First sector (2048-15523839, default 2048): 2048 Last sector, +sectors or +size{K,M,G} (2048-15523839, default 15523839): +15M Command (m for help): n Partition type: p primary (1 primary, 0 extended, 3 free) e extended Select (default p): p Partition number (1-4, default 2): 2 First sector (32768-15523839, default 32768): 32768 Last sector, +sectors or +size{K,M,G} (32768-15523839, default 15523839): +240M Command (m for help): p Disk /dev/mmcblk0: 7948 MB, 7948206080 bytes 4 heads, 16 sectors/track, 242560 cylinders, total 15523840 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x17002d14 Device Boot Start End Blocks Id System /dev/mmcblk0p1 2048 32767 15360 83 Linux /dev/mmcblk0p2 32768 524287 245760 83 Linux Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table.
- Re-read the new partition table layout (e.g. by removing and re-inserting the SD card).
- Copy the SPL + U-boot image to the card
# dd if=bin/sunxi/uboot-sunxi-Cubietruck/openwrt-sunxi-Cubietruck-u-boot-with-spl.bin of=/dev/mmcblk0 bs=1024 seek=8
- Create a boot (FAT32) partition.
# mkfs.vfat /dev/mmcblk0p1
- Mount the boot partition.
# mount -t vfat /dev/mmcblk0p1 /mnt
- Copy the U-Boot environment file uEnv.txt to the boot partition.
# cp bin/sunxi/uboot-sunxi-Cubietruck/openwrt-sunxi-Cubietruck-uEnv.txt /mnt/uEnv.txt
- Copy the boot.scr containing needed uboot commands for loading, setting kernel parameters and booting to the boot partition.
# cp bin/sunxi/sun7i-a20-cubietruck.scr /mnt/boot.scr
- Copy the device tree data to the boot partition.
# cp bin/sunxi/sun7i-a20-cubietruck.dtb /mnt/dtb
- Copy the kernel image to the boot partition.
# cp bin/sunxi/openwrt-sunxi-uImage /mnt/uImage
- Resize the root filesystem image to match the partition size.
# resize2fs bin/sunxi/openwrt-sunxi-root.ext4 240M
- Create the root filesystem.
# dd if=bin/sunxi/openwrt-sunxi-root.ext4 of=/dev/mmcblk0p2 bs=128k
- Wrap up (flush buffers and unmount boot partition).
# sync # umount /mnt
Upgrading OpenWrt
sysupgrade works out of the box, using (at least) the ext4-sdcard.img.gz files.
Links
For further information about the SoCs, go to http://linux-sunxi.org/Main_Page
How can you help
- We're looking for any A31 / A80 / H3 hardware at the moment
- Hardware donations - https://dev.openwrt.org/wiki/WantedHardware
- Test GPIOs and peripherals on A13/A20 and provide feedback
Devices
List of related devices: sunxi