TV-box mania: II part. Tanix TX6 (Allwinner H6)

Tanix TX6 is another under $30 tvbox device. But don't be fooled by the low price: inside there is quite powerful and hot (literally) Allwinner H6 known from various Orange Pi SBC's. It took me a lot more of time than I planned for this setup to replace Raspberry Pi 4, but it was caused by the lack of support from current Linux distributions. One @balbes150 firmware based on a 5.7 kernel I found supports a Wi-Fi device but a USB3.0 devices are unstable . Newer firmware based on Kernels 5.10 improved USB3.0 handling but there is no support for XR819 WIfi device. LibreElec refused even to boot (incompatible DTB). So I had to create my own Armbian's fork and few patches. The result is stable firmware release for kernel 5.15 including support for AC200 Ethernet card and XR819 Wifi card.

You can find it here: Tanix TX6 Armbian fork


The current supply crisis has unfortunately also affected the tvbox market. The latest new models are almost always inferior to their predecessors or they are much pricier, so you'd better hurry up before the old models run out. H616 is inferior compare to old H6, rk3318 is inferior compare to rk3328, S905x4 is closed for opensource community contrary to the old S905x3.

The most common problem with tvboxes is that most of their Wi-Fi and Bluetooth devices are not supported by Linux Kernel. Even the same model may have a different Wi-Fi chip installed depending on the revision of the main-board (usually also combined with RAM and disk size version). So at worst, you may need to use an Ethernet connection only.

By installing Linux you risk voiding your device warranty and could brick it if something goes wrong. Most of these cheap devices are of low quality and can break without modification anyway.

My Tanix TX6 (also known as VONTAR TX6 or T95 MAX) is equipped with:
  • Allwinner H6 SOC
  • 2GB of RAM (H6 can support only up to 3GB of RAM)
  • 1xUSB3.0 and 2xUSB2.0
  • AC200 Ethernet
  • XRadio XR819 Wifi device
  • micro SD card reader
  • 2A 5V power supply

  • 1 Installing Linux

    Since I've prepared for that device ready to use Armbian version, the installation is very easy.
    Download my latest release of Armbian firmware for TX6 from Github Tanix TX6 Github (for example: Armbian_22.02.0-trunk_Aw-h6-tv_bullseye_edge_5.15.23.img.7z). Extract it with 7-zip.
    Using Balena Etcher - SD card flashing utility write that image to SD card.


    That's all. Safely eject SD card and put it into Tanix TX6. Since we won't modify internal eMMC, creating a backup is not necessary. If you want to have Android 9.0 back then simply eject SD card.

    First boot can take up to 2-10 minutes depending on the SD card speed. You can also SSH to Armbian avoiding using monitor and keyboard for the first boot. Default login is root and password: 1234 (you have to change it after logging in for the first time). Create the 'pi' user as usual. You can also configure Wifi using armbian-config utility. To check out assigned IP type: ip address


    Next update packages list and install one library needed by HyperHDR:
    sudo apt update && sudo apt install libxcb1

    2 Installing HyperHDR

    As pi user download latest HyperHDR aarch64 installer. For example:
    cd /tmp
    sudo apt install ./HyperHDR-
    HyperHDR should be up and running on 8090 port. If you can't connect with your browser then execute one more command and check out the output:

    3 HyperHDR tested hardware

    LED driver (HyperSerialEsp8266/HyperSerialESP32):
  • CH340g/c works OK
  • CP2104 works OK
  • CH9102x works OK

  • USB grabbers
    Tested lowest possible hardware resolution for capturing.
  • Ezcap 269 - works OK (USB3.0)
  • Ezcap 320 - works OK (USB3.0)
  • Ezcap 321 - doesn't work fully stable connected to USB3.0 port, works fine on USB2.0. Another completely different board and that grabber has problems again. Probably it's not fully compatible with Linux drivers and maybe it should be avoided for our setups.
  • MS2109 USB2.0 grabber - works OK
  • AV Access - Allwinner H6 is powerful enough to handle the grabber's 1080p60 YUV video stream (USB3.0). But high temperature is causing almost instant CPU throttling. If you can provide better cooling then you can avoid that problem. Fortunately USB2.0 works stable and using 1080p60 MJPEG takes a lot less of resource than YUV (important: 'quarter of frame mode' is enabled).

  • The average temperature for capturing and processing 1280x720x60 NV12 stream is ~ 80C, the maximum achieved temperature is around 85C. This tvbox is really hot because of the well known Allwinner H6 specs and the manufacturer's poor engineering: the motherboard is mounted upside down, which is a fatal solution for CPU cooling. Users often make various modifications to the case to improve ventilation.


    Tanix TX6 Allwiner H6 is powerful device offering support for USB3.0. Its weakness are poor software support and bad thermal specification. But after solving firmware problem with my Armbian fork it is very interesting and stable platform that could be a replacement for Raspberry Pi 4 for HyperHDR project.


    Marcio Torres said…
    Hello friend, thank you for making this system available for the TX6 box, I am using it with a server to run my Home Assistant instance, however I would like to know if you are aware of the presence of hardware for the watchdog on this board?, because I activated the " RuntimeWatchdogSec=60s" in /etc/systemd/system.conf, and on startup it says the "60s" argument is invalid. I've tried other values and units, but it's in a restart loop. Whatever the feedback, I appreciate it.
    awawa said…
    There should be a hardware watchdog available for Allwinner H6 but I didn't test it. Type "echo 1 > /dev/watchdog" and check if the watchdog process is started. For RuntimeWatchdogSec you don't need to specify 's' suffix for seconds as its default: 60 is enough.
    Marcio Torres said…
    Hello @awawa I tested the command informed and in fact after a minute there was a restart of the system.
    However when I set "RuntimeWatchdogSec" to "60", it continues in an infinite restart loop.
    The interesting thing is that when I use the command "dmesg | grep -i watchdog" it should have an output similar to this: "[ 1.830851] sunxi-wdt 7020400.watchdog: Watchdog enabled (timeout=16 sec, nowayout=0)" but the output and nothing.
    I'm following this thread here:
    to see if I can fix this.
    It seems that this time of "60" is not accepted by the micro, there seem to be preset times.
    As soon as I have other useful information, I'll post it here.
    Thank you for now.
    Marcio Torres said…
    Dear wawawa, looking at the datasheet, I found that the maximum value that can be assigned to "RuntimeWatchdogSec=16" is "16", so I did the test and it worked perfectly, that is, it now correctly initializes the OS.

    Ragib Ehsan said…
    This comment has been removed by the author.
    awawa said…
    Sure: packages/blobs/splash/logo.png and maybe (don't remember now if that file was necessary): packages/blobs/splash/logo_linux_clut224.ppm
    Ragib Ehsan said…
    Thank you so much!
    Adam said…
    hey, getting the following error: "The repository *** hirsute-security Release' does not have a Release file.". As Hirsute is no longer working, any workaround?
    Nuno Pereira said…
    Hi i have installed you armbian build on my T95Max and so far so good.... but how i can install on the emmc ? i tried nand-sata-install script but there is no options for that.
    awawa said…
    Are you sure you have emmc? Some similar variants of that tvboxe may use nand which is currently not supported (at least it was half year ago...don't follow it).
    awawa said…
    Merging latest armbian upstream should fix it. But some conflicts need to be resolved first.
    Nuno Pereira said…
    ok, make sense
    Nuno Pereira said…
    i have checked, have 16GB ROM not 16GB emmc ;(
    safforddr said…
    The binary image (v2022.03.08, bullseye current xfce) works great on my T95/H6 clone, including installation and boot from emmc. Thanks!
    While trying to build from the github repo, though I get an error in the kernel compilation: drivers/video/fbdev/core/fbcon.c:1919:11: error: implicit declaration of function fb_scrollmode; This may be related to a recent patch in 5.15.x that introduced CONFIG_FRAMEBUFFER_CONSOLE_LEGACY_ACCELERATION, but I'm not sure. One of the patches to fbcon.c gets partially rejected, so something has changed. I really only want to play with the u-boot code which works, but it would be nice to get the build working fully. Anything I can do?
    Suzana said…
    Hello! First of all thank you for this repository. I installed the Armbian in one TX6, but the installation on the eMMC of the box didn't hapenned. Am i suposed to do something after the boot with memory card?
    awawa said…
    You must use latest version ( and use armbian-config to install the system on emmc. Some cheap variants of TX6 comes with nand instead of emmc and in this case the installation won't be possible.
    wtnh said…
    Thanks for all your work on this. I have a T95 Max H6 (from Amazon - it has an IR remote and SPDIF/Toslink output) and was able to boot your latest build successfully. WIFI works great. I installed Squeezelite to have act as a music streamer. However, I can't seem to get SPDIF to work. I looked at the Dtc and the SPDIF entry is there and listed as "okay" so that is encouraging. However, HDMI audio is the only output which shows up. Any hints on activating SPDIF appreciated.