EOMA68 Computing Devices

by EOMA68

An Earth-friendly way to easily upgrade and fix your own computer

View all updates Jul 24, 2016

Mainline U-boot and Kernel

by Luke Kenneth Casson Leighton

The EOMA68-A20 Computer Card has been using the older u-boot and sunxi-3.4 kernels for some time. This update shows a recent mainline u-boot (2016.07) and a sunxi-next near-mainline 4.7.0-rc5 Linux kernel.

One of the primary reasons for using the sunxi-3.4 kernel developed by Allwinner is that, after various people had beaten them about the head with big sticks to obtain GPL-compliant code, it was (and still is) actually the best choice for supporting all of the hardware of the A20 processor. For example, dual simultaneous LCD and HDMI output (whether it be single or dual separate framebuffers) and full support for raw NAND ICs (even if it was quirky) - everything works.

The mainline linux-sunxi kernel team has therefore been working slowly for years to catch up, develop and then submit the various patches, doing a really decent job along the way. They’ve also fixed a number of the quirks. For example, in the USB code that Allwinner developed, somebody noticed by reviewing the Allwinner source that actually it was licensed from Mentor Graphics, the address offsets for data structures were 16-bit, and drivers already exist for musb (with 32-bit data structure alignment), but that Allwinner’s team had not been aware of this, had developed (badly and inefficiently) a re-implementation of musb that did not use DMA.

It turns out however that enough development has taken place so that the critical interfaces for EOMA68 are now fully supported, both in u-boot mainline and Linux kernel mainline. The only gotcha: the way that the framebuffer is set up is extremely odd, and is not suited to how EOMA68 works. The framebuffer is not initialised in the A20 Linux kernel: it’s initialised by u-boot. This makes it difficult if not flat-out impossible to switch between EOMA68 Housings without a full reboot, and it has yet to be investigated whether dual simultaneous LCD and HDMI output is possible.

Other than that small quirk, it is extremely exciting to find that, with very few devicetree modifications and no Linux kernel modifications or u-boot modifications, mainline u-boot and Linux kernel works straight out-of-the-box. This update’s video therefore walks through the boot-up process, using what turns out to be a little-known tool, "fex-boot," that’s included in the sunxi-tools. Searching on various forums I was amazed to find that there are people still struggling with the proprietary and Windows-only LIVESUIT.EXE to recover their A20 devices! Surely people have known about the fex-boot utility since it was reverse-engineered over three years ago? Apparently not, so this video shows and explains the process.

On compiling u-boot, if SPL is selected in the configuration, a tiny sub-16k program is created (which normally is tacked onto the front of u-boot itself), which purely carries out very low-level initialisation such as setting up the DDR3 RAM, some of the clocks and PLLs, and letting us know what’s going on over one of the UARTs. Following the upload into the first level cache and subsequent execution of this code, more data may be uploaded absolutely anywhere into DDR3 RAM and then executed. We choose in this instance to upload a mainline u-boot binary. Once that is running u-boot can take over, initialise all the rest of the hardware (NAND, MMC, and HDMI in this case) and it all rolls forward from there in a straightforward fashion.

Later, we will do another (shorter) video where u-boot will have been put onto the NAND flash (and will include testing the ThinkPenguin TP150N USB-WIFI 802.11n dongle), but it has been found to be best to use the fex-boot first for this kind of experimentation (to get different versions of u-boot and kernels up and running), as it is very quick: no need to mess about removing SD.MMC cards, no need to worry about breaking the NAND flash with too many overwrites and erases - just load over USB and go. Really useful.

About the Author

Luke Kenneth Casson Leighton

 Planet Earth. Usually.

$237,697 raised

of $150,000 goal

158% Funded! Order Below

Product Choices


Libre Tea Computer Card

An EOMA68-compatible computer card with an Allwinner A20 dual core processor, 2 GB of RAM, and 8 GB of NAND flash pre-installed with the Parabola GNU/Linux-libre operating system. We expect the Libre Tea Computer Card to receive the Free Software Foundation's Respects Your Freedom (RYF) certification before the first units ship.


Practically Perfect Computer Card

An EOMA68-compatible computer card with an Allwinner A20 dual core processor, 2 GB of RAM, and 8 GB of NAND flash pre-installed with the Debian GNU/Linux operating system.


Numero Uno Computer Card

An EOMA68-compatible computer card with an Allwinner A20 dual core processor, 2 GB of RAM, and 8 GB of NAND flash pre-installed with the Devuan GNU/Linux operating system.


Getting Ahead Computer Card

An EOMA68-compatible computer card with an Allwinner A20 dual core processor, 2 GB of RAM, and 8 GB of NAND flash pre-installed with the Fedora 24 GNU/Linux operating system.


Micro Desktop Housing for Computer Card

This is a Micro Desktop base unit and power supply unit with a beautiful laser-cut stack of 3mm plywood panels that creates an aesthetically attractive tiny base unit for your Computer Cards. Excludes Computer Card, keyboard, mouse and VGA monitor.


PIY Laptop Housing Kit for Computer Card

This Print-It-Yourself (PIY) kit includes all the parts, cabling and boards (main, power, and controller, assembled and tested), and battery, charger, keyboard, LCD, and CTP-LCD for trackpad that are needed to build a complete Libre Laptop once you 3D print the enclosure from the freely available GPLv3+ licensed plans. Excludes Computer Card.


PFY Laptop Housing Kit for Computer Card

This Printed-For-You (PFY) kit has everything needed to create a full EOMA68 Laptop, including a 3D printed set of casework parts, bamboo plywood panels, tested and assembled PCBs, cables, battery, charger, keyboard, LCD, and CTP-LCD for trackpad. Available in a variety of colors and materials. Excludes Computer Card.


Completely Assembled Laptop + Computer Card

A meticulously hand-assembled and fully-tested laptop. Includes your choice of EOMA68-A20 Computer Card and 3D-printed casework.


PCMCIA/EOMA68 Breakout Board

One PCMCIA/EOMA68 Breakout Board with one surface mount PCMCIA header, and tracks to some convenient 2.54-mm-spaced through-holes. Added by popular demand, for access, tinkering, development work, testing, etc.


Pass-through Card

A simple card that takes in HDMI and USB and passes them on. Turns a Laptop Housing into a portable, battery-powered dock for your smartphone, USB-HDMI dongle computer, and tablet, or a second screen, keyboard, and mouse for your existing laptop or desktop PC.


USB + HDMI Cable Set for Standalone Operation

Includes a Micro HDMI Type D cable and 3-way USB-OTG Host-Charger cable tested and known to work with EOMA68 Computer Cards. These are the cables you need to run a Computer Card as a standalone device without the need for a housing. Also useful with the Micro Desktop or Laptop Housing to add a second screen and extra USB port.



We make the modular, upgradable, Earth-friendly EOMA68 laptop.

Luke Kenneth Casson Leighton


Christopher Waid


See Also

Subscribe to the Crowd Supply newsletter, highlighting the latest creators and projects: