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.


    1. 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.

      1. 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.

    2. 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.

    3. 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.



    Post a Comment