Many of us rely on Armbian Debian and Ubuntu images for our cheap Arm development boards since they usually offer better support than vendor supplied firmware images.
The community has just updated Armbian website, but the thing that caught my eye in the announcement was a link to a 45-minute presentation by Igor Pečovnik, working full-time on the project, that details the history about Armbian, and provides a relatively recent progress update as it was made at BalCCon – Balkan Computer Congress in November 2017.
It all started with Cubieboard (A20) as Igor was trying to fix some issues, and learn how to improve software support on the board. Several people joined his efforts on Cubieboard forums, and eventually Armbian website launched in mid 2014 running on the Cubieboard then ODROID-XU4 board as interest and traffic increased.
The main motivations of the project was to solve various problems with low cost Arm boards including bad documentation, and poor Linux kernel and u-boot support. They also had to manage inexperienced users with high expectations.
In 2016, 3D acceleration and hardware video decoding was implemented on Allwinner boards, 24 boards were supported, including the first 64-bit board and first boards with eMMC flash. They also moved to a dedicated build server.
In 2017 (i.e. at the time of the presentation), 26 new boards had been added, as well as torrent download, the first netbook support (Pinebook), sources were merged in Github, and Armbian twitter account was opened.
There are now 5 to 10 people working full-time or part-time on Armbian, and they get help from third parties, especially linux-sunxi community, which takes care of Linux and U-boot mainline support, some board makers providing samples, and random participants submitting patchsets. The broader community also helps with testing and providing feedback.
Armbian has basically become the standard Linux for Arm SBCs (e.g. 200 downloads per day for most popular board), and all releases are based either on Debian or Ubuntu only, with CLI (server) or XFCE (desktop) images. The images come with optimizations such as a reduction of the number of write operation to the storage device, unified boot with ramdisk and UUID, DT overlays, auto-filesystem expansion, build essentials installed by default, and optimized DVFS. Some tools and scripts namely armbianmonitor, h3consumption, armhwinfo, firstrun, and armbian-config are included to facilization configuration and customization of the distribution.
The team is rather small so they have strong pressure on support, some difficulties in managing hardware diversity (too many boards to support), and many users, often inexperienced, are not reading the documentation, generating an avoidable load on the community. Common issues include:
- old / cheap / fake micro SD cards
- Power issues due to micro USB cable with high resistance
- Failing to read the docs, lack of basic Linux knowledge, unrealistic expectations.
At the 31:40 mark, Igor starts talking a bit more about the technical details of their build engine and how a bootable image is created with their scripts using either legacy or mainline (+some patchsets) Linux kernels. The build engine itself uses some optimizations like apt-cacher, scripts parallelization, ccache, and everything is built in memory. New stable versions of Armbian images are usually released every four months or so, but there are also daily / experimental builds.
The final part talks about the project legacy: creating a community of users, useful documentation & tools, and promoting open source software.