Today we are going to see how to install Linux on an Armbian distribution on a low-cost Android TV player, as a cheap alternative to mini computers with Linux like Raspberry Pi.
Faced with the rising price and scarcity we are experiencing with Raspberry Pi, it is increasingly common to wonder about more economical alternatives. Among these possible alternatives, one of the most prominent is to use a TV Box with Android.
Using an Android TV Player as a replacement for a mini computer with Linux implies very low prices because they are consumer items. Therefore, they are manufactured in large batches, which allows them to maintain a moderate price even though, for example, demand for processors has increased.
In fact, it is not a crazy idea at all. For example, if you look for retro consoles, you will see that many have exactly the same hardware as an Android TV Player. A layer of additional hardware has simply been added, and a distribution like Retropie, EmuELEC, or similar has been installed.
Well, in some of these Android TV Players it is possible to install the Linux distribution called Armbian. You have the project’s website at https://www.armbian.com/.
Armbian is a lightweight Linux distribution based on Debian and adapted for ARM processors. You may have encountered Armbian, for example, if you have worked with alternatives to Raspberry Pi such as Banana Pi or Orange Pi, because it is precisely the OS they recommend.
Furthermore, it is worth noting that in most ROMs we will not lose the Android distribution. After installing Armbian, we will have a dual boot Linux-Android, which is a great advantage compared to, for example, the Raspberry Pi. Simply, if during boot we have the SD card with the ROM inserted, we will start in the Linux system, and in Android if we start without the SD card.
As for the TV Player model to choose, of course, we must choose one that is compatible and that has a developed ROM. To check this, it is best to check in the Armbian forum, which has a specific section for TV Boxes at this link.
However, like any specialized technological forum, entering the Armbian Forum is a bit overwhelming at first due to the large amount of available information. There are many entries, many ROMs, sometimes contradictory information, and it is difficult to keep up.
Also, keep in mind that there is a wide variety of TV Players and that the names used by all sellers are not always consistent (to say the least, some are outright incorrect). So what we should look at is the hardware details. In particular, we should look at the model of processor or chipset it has.
At the time of writing this post, the three main processors for TV Players that interest us are Amlogic S905X, Rockchip RK3328, and Allwinner H6, all ARM Cortex A53 with four cores and 64 bit. For these processors, at least, there are versions of Armbian working with more or less compatibility.
X96 Mini S905W Example
Next, we are going to see an example of how to install Armbian on an X96 Mini Android TV Player, with CPU S905W, because that’s the model I have. This is a very popular and cheap model that can be found for 25-30€. However, the procedure is more or less similar for the other types of TV Players.
The technical specifications of the X96 mini are as follows.
- CPU: Amlogic S905W, Quad-Core, Cortex-A53
- ROM: eMMC 16GB
- SDRAM: DDR3 1/2/4 GB
- GPU: Penta-Core Mali-450
- HD video output: SD/HD max. 1920 x 1080 pixels
- Ethernet: standard 10/100M, Gigabit RJ-45
- WiFi: 2.4 G
- Operating system: Android 11.0
At the end of the post I leave you a compilation with more references to tutorials on how to install Armbian on different TV Player models.
Basically, in summary, first we download the image to install from the Armbian forum. For example, I’ve had good results with this ROM.
Next, we use Balena Etcher to install the ROM on an SD card. We’ve already seen how to use Balena Etcher in this post about Raspberry Pi. So, if you have any questions about how to use it, I recommend that you read our post.
Once the ROM is written to the SD card, we must access it and make certain modifications to the configuration before being able to insert it into our TV Player. We connect it with a card reader and perform the following steps.
First, we copy the file ‘meson-gxl-s905w-p281.dtb’ from the /dtb/amlogic/ folder to the root of the Micro SD, and rename it to ‘dtb.img’
On the other hand, we edit the uEnv.txt file in the root of the Micro SD to adapt it to our hardware. Specifically, we uncomment the line corresponding to our hardware ‘meson-gxl-s905w-p281’ leaving it as follows,
## aml s9xxx
APPEND=root=LABEL=ROOTFS rootflags=data=writeback rw console=ttyAML0,115200n8 console=tty0 no_console_suspend consoleblank=0 fsck.fix=yes fsck.repair=yes net.ifnames=0
Finally, we insert the SD card into the TV Box. We restart it, holding down the RESET button, which in the case of the X96 is located inside the audio input.
Now, we log in for the first time with a monitor, keyboard, and mouse connected. The default credentials are as follows,
From there we would do like any other Linux computer, changing the credentials, using SSH, VNC in LXDE/, or the rest of the tutorials as we have seen in the section of Raspberry Pi and Linux tutorials
We have seen how to install the Armbian Linux distribution on an Android TV Player. This allows us to have a very low-cost alternative to mini computers with Linux such as the Raspberry Pi, often with the same power (or even more).
To illustrate the process, we have explained the details with an X96 Mini, which is the one I have (in fact, I have several, so I have tested it quite well). The X96 Mini is a very popular model for installing Armbian because the process is very simple, and good compatibility has been obtained in the ROMs.
The X96 Mini is not the only TV Player where we can install Armbian, there are other also compatible models. For this, we must pay very close attention to the technical specifications and, especially, to the CPU/Chipset they mount. With that, we must find a suitable ROM for our device, usually in the Armbian forum.
As for functionality and performance, in my tests the operation of Armbian is more than correct. SSH, VNC, a web server, Python, NodeJs, even installing NET6 or making programs with Raylib. In general, everything I have tried has worked, sometimes even with better performance than a Raspberry Pi 4.
I have not noticed too many stability issues either. Although, I wouldn’t trust it to run an application in production. For me, this is more of an experimentation and learning solution. But hey, I wouldn’t trust running an application on a Raspberry Pi either (what, did you say?.. yes, I wouldn’t trust a Rpi).
On the other hand, it is worth noting the advantage of having Android on the same device, and being able to switch between Linux and Android simply by removing the SD card before booting. This gives you two platforms to test developments on a single low-cost device.
However, using a TV Player with Armbian, it must be recognized that its use is not as simple as, for example, using a Raspberry Pi directly. We would be facing a solution aimed at medium or advanced users and with previous experience in Linux systems. It is not a suitable environment for learning alone and from scratch.
Finally, keep in mind that most of these ROMs are maintained by a small number of people (even a single person). So it is very easy for them to disappear, become obsolete, or stop working due to changes in software or hardware.
So if you can, and as far as possible, help these types of projects. Whether directly contributing with code, your own ROMs, or simply participating in forums and sharing projects. In this way, you contribute to keeping these interesting projects alive.
Here is a compilation of tutorials and posts of interest for other TV Player models and/or processors. If at any time anyone finds any more, you can let me know to add them
Amlogic S905w (Tanix TX3 Mini, X96Mini) https://i12bretro.github.io/tutorials/0316.html https://amirsafe.com/publicaciones/instalar-linux-en-tv-box-armbian/
Amlogic S912 (Nexbox A95x A2) https://i12bretro.github.io/tutorials/0185.html
Amlogic S912 (Tanix TX9s) https://i12bretro.github.io/tutorials/0094.html
Allwinner H6 (Tanix TX6) https://i12bretro.github.io/tutorials/0008.html
Rockchip RK3288 https://i12bretro.github.io/tutorials/0091.html