Khadas VIM2 is the first and only Amlogic S912 based hobbyist development board on the market, which makes it interesting by itself, but the company also added some interesting features such as an SPI flash for network boot, Wake-on-LAN support, and more. Last month the company sent me a sample of the Khadas VIM2 Basic (2GB RAM/16GB flash) together with VTV Extension DTV Board featuring a DVB-T2/C and DVB-S2 tuner.
I’ve already checkout the hardware and shown how to assemble the kit, so for the second part of the review it seemed like a good idea to use the board as a Live TV streaming server broadcasting satellite, cable or terrestrial TV to devices connected to the local network. At first I wanted to use Linux operating system, because I could have run other Linux server services, but SuperDVB, the company that makes and supports the tuner board, only have Android software for their board.
So I changed plan, and instead used their Android VTV app to stream the video over Gigabit Ethernet. I’ll report my experience setting this all up in this post.
First we need to download the latest firmware on Khadas Firmware Resources page. Here you’ll find a little of firmware with names such as VIM2_Nougat_V171028 or VIM2_Nougat_vTV_V171024. The “vTV” string is important here, as the one without do not support the tuner board, so we’ll need one with vTV. So I downloaded VIM2_Nougat_vTV_V171024.7z Android firmware, and VIM2_Uboot_Nougat_171028.7z “uboot” files from the page. Just make you download the latest version on the website.
The firmware provided works with Amlogic USB Burning Tool Windows software, but the tool is not really user-friendly, and in my case not directly supported as it only runs on Windows. So instead it’s better to flash the firmware to a bootable SD card (backup instructions here) in Ubuntu. If you are using Windows, Burn Card Maker Tool is much easier to use.
If you are using Ubuntu or a Linux distributions, there are a few steps to follow. After inserting you card, locate it with lsblk:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sdd 8:48 1 14.7G 0 disk
sdb 8:16 0 111.8G 0 disk
└─sdb1 8:17 0 111.8G 0 part /
sr0 11:0 1 630M 0 rom /media/jaufranc/CanonEOS285W1
sdc 8:32 0 931.5G 0 disk
└─sdc1 8:33 0 931.5G 0 part /media/jaufranc/SEAGATE EXTENSION
sda 8:0 0 931.5G 0 disk
├─sda2 8:2 0 15.6G 0 part [SWAP]
└─sda1 8:1 0 915.9G 0 part /media/hdd
I’m using a 16GB card, so /dev/sdd is the device to so. We’ll need one partition, but my card has none for now:
I’ll use /dev/sdX to refer to the device from now on to avoid potential data loss due to copy/paste gone wrong.
We can create a new primary partition of W95 FAT type with fdisk or (g)parted:
sudo fdisk /dev/sdX
Once it’s done let’s format it with FAT32:
sudo mkfs.vfat /dev/sdX1
Now we can copy u-boot binary for SD card to specific locations in the storage device:
sudo dd if=u-boot.bin.sd.bin of=/dev/sdX bs=1 count=444
sudo dd if=u-boot.bin.sd.bin of=/dev/sdX bs=512 skip=1 seek=1
Now unplug and replug the card to mount it automatically (or mount it with the command line) in order to copy the command and firmware files:
cp aml_sdc_burn.ini update.img [sd_mount_point]
sudo eject /dev/sdX
Now we can remove the card from the computer, and insert it into Khadas VIM2 board, and enter upgrade mode, by pressing the power key, pressing and releasing the reset key, wait two or three seconds, before releasing the power key on the board.You should see an Android logo and “Upgrading…” string together with a progress bar, and after a few minutes, the firmware should be flashed successfully.
At this point, we can remove the micro SD card, and reboot the board, and within a few seconds, we’ll get to the (stock) launcher.
Several apps are installed including Google Play and MoviePlayer. VTV is the app we’ll use to watch and stream Live TV.
But let’s have a look at some of the settings. I’ve reviewed many Amlogic S912 TV boxes from the popular MINIX NEO U9-H media hub, to the cheap MN12N TV box, or Mecool KIII Pro set-top box with a dual DVB-T2/S2 tuner among other, so I’m not going into the full details, but instead focus on some of the unique features.
The image is based on Android 7.1.2 with Linux 3.14.29, and offers typical features like HDMI CEC or playback settings (HDMI self-adaptation), but if we go into More settings we’ll find some less usual option for the cooling, LED, and WOL.
Cooling fan will allow you to turn on or off fan support, and set either automatic speed, low speed, medium speed, or high speed. LED option allows the user to control the board’s LED behavior such as always on, always off, heartbeat mode, or breather mode.
During my first post, people had concerns about using the board without heatsink, and based on CPU-Z app, CPU temperature is indeed around 76°C in idle mode.
When I watched and streamed live TV, the video did not feel very smooth especially on the display connected to the board, so I decided to fit an heatsink to the board.
I put some thermal grease on Amlogic S912 SoC, the flash, and the two RAM chip to the heatsink on top. You may not necessarily use such a large heatsink, but that’s the only spare one I had. The amount of cooling you need also depends on your application.
With the heatsink, the temperature drops to 58°C (26°C room temperature), but I still had some troubles while watching live TV. So the problem is most probably not temperature related, as the reported temperature only climbed to around 62°C while watching and streaming video from the VTV app
This section may not be necessary in the future, as the latest app will be updated in the firmware, but the IP Streaming function is new, so I had to download VTV-2017-11-30-IpStreamming.rar, extract it, and manually install VTV-2017-11-30-IpStreamming.apk to the board. It’s now important to reboot the board to avoid version conflict.
At this point, we should launch the app, and scan the channels. VTV app is based on DTV app found in Videostrong/Mecool set-top boxes, you can follow the same DVB-T2/DVB-S2 configuration instructions. I connected the tuner to my rooftop antenna, so the first time after being asked to scan the channels, I went through DVB-T2 configuration.
That part took me an awful lot of time, as despite having 95 to 100% signal strength, none of the channels would lock. Eventually, the company sent me another tuner board, but it turned out my antenna cable connector had a bad contact or short circuit, as I would only get a proper signal when bending the cable. So I disassembled and cleaned up the connector, and everything worked fine. Lesson: high signal strength in DTV/VTV app does not mean your cable/antenna is working fine.
Finally, we can make sure we have the latest app, by pressing the INFO key while watching a channel in order to show service info & version of the app.
APK (V2) is exactly what we want so we can go ahead. There’s a problem with Thai font or encoding, which has been a recurring problem in all Amlogic set-top boxes I’ve tested in the past. Hopefully, this will be fixed one day.
Once we have the channel configured, we can enable IP streaming by pressing the MENU key on the remote control, then DTV preference->IP stream setting.
You can manually set the port between 10,000 and 65,535 (20,000 default), and the app will provide you with the streaming link (e.g. http://192.168.0.114:20000), and the maximum number of client (10). You can use now use this link with a program or app on other devices in the network. I used the GoodPlayer app on my Android phone and VLC on my computer like I did while streaming video from Zidoo X9S’ HDMI input.
In the demo below, I use three clients: one Android phone, a Ubuntu 16.04 laptop, and my Ubuntu 16.04 desktop PC playing the video from Khadas VIM2 board at the same time.
I think the feature is still beta, so maybe that’s why there are problems while changing channels where the client may not pick up the stream. The live channel in Khadas VIM2 appears not to be quite as smooth as it could be too, again some optimization may likely solve this issue.
A better way to change channels however is to export ip stream list file tvlist.txt in VTV app by pressing the red/audio button on the remote control, which in my location looks as follow:
I copied it to my computer, renamed it to tvlist.m3u, and used it in VLC to easily switch to whatever channel.
Going forward, I think Linux support for the tuner board is unlikely, so people should really focus on Android if they plan to use the board. I’ve asked the company if they planned to release the source code for VTV app or at least an API to let people integrate support into their own app, but I have not received an answer yet.
For end-users, support for TVHeadEnd would be a bonus, as they’d be able to watch live TV, access the EPG, and change channels right from Kodi running in the client, as it’s now done in products such as U4 Quad Hybrid, U5PVR, or WeTek Play 2.
[Update: answers from the company:
- Linux is not in their plan now, and they are focus on the Android platform.
- VTV app can not be made open source due to it being used in other business projects, and there does not seem to be a plan for an API either
- “TVheadend is supported by LibreElec already, for the Android platform, we will try to learn it and make it into software if possible.” See the comments below for the download link for LibreELEC.
I’d like to thank Khadas (Shenzhen Wesion), and SuperDVB for sending the kit for review and their support in getting this to work. Khadas VIM2 Basic board can be purchased on GearBest for $89.99 shipped, and the “VTV Expansion DTV board” for $39.99. You’ll pay a bit less if you take a bundle for a total of $112.98 including shipping ($17 discount) available from the latter link.
Jean-Luc started CNX Software in 2010 as a part-time endeavor, before quitting his job as a software engineering manager, and starting to write daily news, and reviews full time later in 2011.