Posts Tagged ‘server’

How to Use Khadas VIM2 Board with VTV Expansion DTV Board as a Live TV Streaming Server

December 18th, 2017 10 comments

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.

Click to Enlarge

Download & Flash Android firmware to Khadas VIM2 board

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:

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:

Once it’s done let’s format it with FAT32:

Now we can copy u-boot binary for SD card to specific locations in the storage device:

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:

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.

A look at Android Settings

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.

Click for Original Size

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.

Click to Enlarge

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.

Click to Enlarge

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.

WOL is used to enable or disable Wake On LAN.

Khadas VIM2 CPU Temperature, Fitting an Heatsink

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 necessary use such 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 reported temperature only climbed to around 62°C while watching and streaming video from VTV app

Install VTV V2 App with IP Streaming Function

This section may not be necessary in the future, as the latest app will be updated in the firmware, but 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 roof top 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 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 do not mean you 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.

Khadas VIM2 Live TV Streaming

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., 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 GoodPlayer app in my Android phone and VLC in 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, and renamed it to tvlist.m3u, and you use in VLC to easily switch to the channel of your choice.

Click to Enlarge

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 planed 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 company:

  1. Linux is not in their plan now, and they are focus on Android platform.
  2. VTV app can not be made open source due to it being used in other business projects, and there does not seem to be plans an API either
  3. “TVheadend is supported by LibreElec already, for Android platform, we will try to learn it and make it into software if possible.”  See comments below for download link for LibreELEC.

I’d like to thank Khadas (Shenzhen Wesion), and SuperDVB for sending the kit for review and their support 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.

QNAP QBoat Sunny Review – Part 1: Unboxing, Closer Look, and Initial Setup

December 18th, 2017 7 comments

We spotted the QBoat Sunny at QNAP’s booth back at CES in January and much has changed since then. Not only did QNAP change from an Intel based solution to an ARM based one, but the product seems to have shifted from being a development board to a strange kind of IoT server.

The QBoat Sunny sample that QNAP provided for us to look at is based on the Annapurna Labs AL-314 quad core ARM Cortex-A15 SoC which is clocked at 1.7GHz. This has been paired with 2GB of DDR3L RAM (non-expandable) and 512MB of NAND flash that isn’t user accessible, much as on their NAS products. This simply contains the core parts of the QTS Lite OS. As such, you need to install an M.2 SATA SSD to be able to get started with the QBoat Sunny.

Click to Enlarge

QNAP provides a list of compatible SSDs on its website, although some are not “consumer” models and might not be available for individual purchase. We used a Crucial MX300 SSD which is on the supported list, however, any standard M.2 SATA SSD should work. Interestingly, QNAP supplies two very small heatsinks (about 15x15mm) that they suggest that you stick on the SSD controller. As the MX300 has a sticker over its controller, we presume it doesn’t get hot enough to warrant the use of the heatsinks.

Click to Enlarge

Also in the box is 12V/3A power brick from FSP that meets the latest power efficiency standards, a set of mountain rails, some screws, an Ethernet cable and a quick installation guide. The mounting rails don’t make a whole lot of sense, as they don’t seem to follow any standard. The mounting holes for the rails on the heatsink/housing for the QBoat Sunny have a distance between them of 100mm which suggests a VESA standard, but oddly enough the holes on the opposite end of the mountain rails have a center distance that just misses the VESA 75mm standard.

There are also rear mounting holes on the heatsink/housing, which are either 105x105mm using M4 screws (not supplied) or 100x75mm using M3 screws (also not supplied). The 105×105 mounting holes correspond perfectly to a 120mm PC cooling fan and the board has a fan header. However, the holes are on the bottom of the heatsink/housing only, so there’s no simple way to actively cool the SSDs for example.

Click to Enlarge

Connectivity wise the QBoat Sunny has a fair of mount of options, starting with two M.2 M-key slots (SATA only), one M.2 A key slot for things like Wi-Fi and Bluetooth cards – a bit more on the M.2 slots later – three Gigabit Ethernet ports – two AR8035 and one AR8033 – two USB 3.0 ports, a “maintenance” port via a 3.5mm jack (no cable supplied) and separate headphone and microphone 3.5mm jacks. There’s also the aforementioned 4-pin fan header and a two-pin battery connector, although we’re not sure what the later is for, as the QBoat Sunny has an RTC battery fitted in a vertical mount already, yet the battery header is supposed to be for an RTC battery.

There’s also space for a 26-pin header, but the holes have been filled by solder and the manual doesn’t mention anything about this header. However, the board still has a silk screen that points out what the different pins are for and although some of them aren’t clear such as PBS28 and HMM_TR1, some of them are for I2C, serial interface and power. There are also a couple of pins for monitoring external fans which seems to be tied to the Novoton NCT7802Y hardware monitoring IC. There are also a couple of TI LSF0108 octal bidirectional multi-Voltage translators here which seem to serve no purpose without the pin-header being populated.

Click to Enlarge

We also spotted a C-Media CM6533 USB 2.0 audio chip and a Weltrend WT61P803 which seems to be some kind of programmable logic IC, but we’re not entirely sure what purpose it serves, although it’s most likely used as some kind of general system controller.

Let’s quickly go back to the M.2 slots. The SATA drive slots both have a thermal sensor below them which is used by the QTS OS to monitor the temperature of the SSDs. We’re somewhat confused by QNAP’s choice of M.2 slots though, since in the case of the SSD slots, QNAP should have used B-key slots, as that way it wouldn’t be possible to try an insert a PCIe based SSD into the QBoat Sunny as it is today. The third M.2 is A-key and doesn’t work with E-key Wi-Fi cards, but A/E keyed cards should fit. That said, at this point in time, this slot seems to serve no purpose, as there are no officially supported Wi-Fi cards for it. As such, you’re limited to a handful of USB Wi-Fi options if you want to add Wi-Fi to the QBoat Sunny.

Setup was simple enough, pop in an SSD or two, plug in the power, press the power button and the system starts. Without and SSD, you’ll be greeted by a screen telling you to install at least one hard drive, although it should really say SSD in this case. Although external hard drives are supported, the QTS Lite OS has to be installed onto an SSD.

Click to Enlarge

To find the QBoat Sunny on your network, you can use QNAP’s Qfinder Pro tool, which is available for a wide range of operating systems, including Android and iOS, but not Linux. As with QNAP’s range of NAS products, the setup is done via a guided wizard through a web browser. This is also when you’d enable the type of file server you’d want and all major options are supported, such as SAMBA, AFP, NFS, and FTP, as well as QNAP’s own File Station.

Services Configuration – Click to Enlarge

Once the basic steps are done, you need to format your drive(s) and in our case we only had a single drive, so we couldn’t set up any kind of RAID. The QBoat Sunny supports RAID-0 and RAID-1.

Disk Configuration – Click to Enlarge

After the drive has been formatted, the QTS Lite will be installed from the NAND flash and the system will reboot before you get access to the OS. Once rebooted, we were told there was a system update which brought us to the latest build of the QTS Lite OS.

Click to Enlarge

We’re still not quite sure what to make of the QBoat Sunny despite having had it for a couple of weeks now. Although the hardware itself isn’t bad, it seems like QNAP cut a few too many features from the Intel model that they announced at CES, as this seemed to be more of a developer platform. Now we’ve got something that appears to be more of an IoT server for storing data from various IoT devices. The higher price point of $169/€159 is also not that appealing, unless you have a specific use case for such a device, but more on that when we take a closer look at the software side of the QBoat Sunny after the holidays.

QNAP QBoat Sunny can currently be purchased on for 158 GBP ex VAT ($210 / €179), but as more sellers list the device/board, price should eventually come down closer to the MSRP.

Red Hat Enterprise Linux 7.4 Now Fully Supports Arm servers

November 16th, 2017 17 comments

When hardware vendors announced Arm based servers they also claim support for operating systems such as Ubuntu 16.04 LTS and Red Hat Enterprise Linux, so I assumed software support was more or less where it needed to be with regards to Arm server.

But apparently, it may not have been so, as Red Hat only announced full support for Arm servers in Red Hat Enterprise Linux for ARM a few days ago.

It also started with SBSA (Server Base System Architecture) specifications in 2014, that aimed to provide a single operating platform that works across all 64-bit ARMv8 server SoCs that complies with the said specification. Red Hat then released a developer preview of the OS for silicon and OEM vendors in 2015, and earlier this week, the company released Red Hat Enterprise Linux 7.4 for Arm, the first commercial release for this architecture.

RHEL 7.4 for Arm come with Linux 4.11 kernel and support networking drivers from various vendors such as Hisilicon, Qualcomm, etc…. Linux 4.11 kernel is supposed to be EOL, but in this case, Red Hat must be providing the updates. You’ll find more details about the new Arm operating systems in the release notes, where you’ll also find a link to download the OS, provided you are a customer.

Thanks to ykchavan for the tip

QNAP QBoat Sunny IoT Mini Server Board Officially Announced with Annapurna Labs AL-314 ARM Processor

November 15th, 2017 13 comments

We first had a glance at QNAP QBoat Sunny at CES 2017. At the time, QNAP IoT development board was powered by an Intel AnyWAN GRX750 dual core Atom based processor with 2GB RAM, 4GB flash, three Gigabit Ethernet ports, some mSATA slot and so on.

The company has now officially announced the board, but with a twist, as the Intel processor has been replaced by Annapurna Labs (now part of Amazon) AL-314 quad core ARM Cortex-15 processor instead, and left most of the other features pretty much unchanged.

QBoard Sunny board specifications:

  • Processor – Annapurna Labs AL-314 quad core ARM Cortex-15 processor up to 1.7 GHz
  • System Memory – 2GB DDR3L
  • Storage – 512MB NAND flash, 2x M.2 2260/2280 SATA slots for SSDs (Key M)
  • Network connectivity – 3x Gigabit Ethernet
  • USB – 2x USB 3.1 Gen1 ports
  • Audio – 3.5mm audio out jack, 3.5mm audio in jack
  • Expansion
    • 1x M.2 Key A 2230 for Wi-Fi/Bluetooth
    • 40-pin connector, for I2C, UART, SPI, SDIO, GPIO
  • Misc –  Debug console via 3.5mm jack; RTC battery; status and user LEDs; power & system reset buttons; pin connector for 4-wire fan
  • Power – 12V/3A
  • Power Consumption – 9.49 Watts with SSD idle; 13.31 Watts in operation
  • Dimensions – 144 x 126 x 33.5 mm (with heatsink base)
  • Weight – 490 grams
  • Environmental Conditions – 0 to 35˚C, 5 to 95%, non-condensing, wet bulb temperature: 27˚C

The board runs QTS Lite 4.3.3 embedded Linux operating system, supports features like Wake on LAN, scheduled power on/off, and automatic power on after power recovery.

Annapurna Labs does not appear to be the kind of company that release SoC documentation publicly, and I really wonder why they even bothered to setup a website. They (or somebody else) did add support to Alpine SoCs in Linux 4.6, but I’d still assume you’d have to relies on QNAP for the OS and low level software, and just take care of the application on top, praying the lower level feature(s) you need is/are well supported.

Qboat Sunny ships with an Ethernet cable, a quick installation guide, a 36W AC adapter and power cord, a wall mount kit, an M.2 screw kit, and two M.2 SSD heatsinks. The promo video below explains why you may want to use the board in your (IoT) projects, for example using it instead of public cloud services to save money.

The company claims the board is available now at an affordable price. The only thing is I’ve not been able to find the price… At CES 2017, there was talk about a $100 to $120 with the Intel version. [Update: MSRP is $169/€159]. More details may be found on the product page.

Thanks to TLS for the tip.

Qualcomm Centriq 2400 ARM SoC Launched for Datacenters, Benchmarked against Intel Xeon SoCs

November 9th, 2017 13 comments

Qualcomm Centriq 2400 ARM Server-on-Chip has been four years in the making. The company announced sampling in Q4 2016 using 10nm FinFET process technology with the SoC featuring up to 48 Qualcomm Falkor ARMv8 CPU cores optimized for datacenter workloads. More recently, Qualcomm provided a few more details about the Falkor core, fully customized with a 64-bit only micro-architecture based on ARMv8 / Aarch64.

Finally, here it is as the SoC formally launched with the company announcing commercial shipments of Centriq 2400 SoCs.

Qualcom Centriq 2400 key features and specifications:

  • CPU – Up to 48 physical ARMv8 compliant 64-bit only Falkor cores @ 2.2 GHz (base frequency) / 2.6 GHz (peak frequency)
  • Cache – 64 KB L1 instructions cache with 24 KB single-cycle L0 cache, 512 KB L2 cache per duplex; 60 MB unified L3 cache; Cache QoS
  • Memory – 6 channels of DDR4 2667 MT/s  for up to 768 GB RAM; 128 GB/s peak aggregate bandwidth; inline memory bandwidth compression
  • Integrated Chipset – 32 PCIe Gen3 lanes with 6 PCIe controllers; low speed I/Os; management controller
  • Security – Root of trust, EL3 (TrustZone) and EL2 (hypervisor)
  • TDP – < 120W (~2.5 W per core)

Click to Enlarge

The SoC is ARM SBSA v3 compliant, meaning it can run any compliant operating systems without having to resort to “cute embedded nonsense hacks“. The processor if optimized for cloud workloads, and the company explains the SoC are already been used demonstrated for the following tasks:

  • Web front end with HipHop Virtual Machine
  • NoSQL databases including MongoDB, Varnish, Scylladb
  • Cloud orchestration and automation including Kubernetes, Docker, metal-as-a-service
  • Data analytics including Apache Spark
  • Deep learning inference
  • Network function virtualization
  • Video and image processing acceleration
  • Multi-core electronic design automation
  • High throughput compute bioinformatics
  • Neural class networks
  • OpenStack Platform
  • Scaleout Server SAN with NVMe
  • Server-based network offload

Three Qualcom Centriq 2400 SKUs are available today

  • Centriq 2434 – 40 cores @ 2.3 / 2.5 GHz; 50 MB L3 cache; 110W TDP
  • Centriq 2452 – 46 cores @ 2.2 / 2.6 GHz; 57.5 MB L3 cache; 120W TDP
  • Centriq 2460 – 48 cores @ 2.2 / 2.6 GHz; 60 MB L3 cache; 120W TDP

Qualcomm Centriq 2460 (48-cores) was compared to an Intel Xeon Platinum 8160 with 24-cores/48 threads (150 W) and found to perform a little better in both integer and floating point benchmarks.

The most important metrics for server SoCs are performance per thread, performance per watt, and performance per dollars, so Qualcomm pitted Centriq 2460, 2452 and 2434 against respectively Intel Xeon Platinum 8180 (28 cores/205W  TDP), Xeon Gold 6152 (22 cores/140W TDP), and Xeon Silver 4116 (12 cores/85W  TDP). Performance per watt was found to be significantly better for the Qualcomm chip when using SPECint_rate2006 benchmark.

Performance per dollars of the Qualcomm SoCs look excellent too, but…

Qualcomm took Xeon SoCs pricing from Intel’s ARK, and in the past prices there did not reflect the real selling price of the chip, at least for low power Apollo Lake / Cherry Trail processors.

This compares to the prices for Centriq 2434 ($880), Centriq 2452 ($1,373), and Centriq 2460 ($1,995).

Qualcomm also boasted better performance per mm2, and typical power consumption of Centriq 2460 under load of around 60W, well below the 120W TDP. Idle power consumption is around 8 watts using C1 mode, and under 4 Watts when all idle states are enabled.

If you are wary of company provided benchmarks, Cloudflare independently tested Qualcomm Centriq and Intel  Skylake/Broadwell servers using Openssl speed, compression algorithms (gzip, brotli…), Go, NGINX web server, and more.

Multicore OpenSSL Performance

Usually, Intel single core performance is better, but since ARM has more cores, multi-threaded performance is often better on ARM. Here’s their conclusion:

The engineering sample of Falkor we got certainly impressed me a lot. This is a huge step up from any previous attempt at ARM based servers. Certainly core for core, the Intel Skylake is far superior, but when you look at the system level the performance becomes very attractive.

The production version of the Centriq SoC will feature up to 48 Falkor cores, running at a frequency of up to 2.6GHz, for a potential additional 8% better performance.

Obviously the Skylake server we tested is not the flagship Platinum unit that has 28 cores, but those 28 cores come both with a big price and over 200W TDP, whereas we are interested in improving our bang for buck metric, and performance per watt.

Currently my main concern is weak Go language performance, but that is bound to improve quickly once ARM based servers start gaining some market share.

Both C and LuaJIT performance is very competitive, and in many cases outperforms the Skylake contender. In almost every benchmark Falkor shows itself as a worthy upgrade from Broadwell.

The largest win by far for Falkor is the low power consumption. Although it has a TDP of 120W, during my tests it never went above 89W (for the go benchmark). In comparison Skylake and Broadwell both went over 160W, while the TDP of the two CPUs is 170W.

Back to software support, the SoC is supported by a large ecosystem with technologies such as memcached, MongoDB, MySQL, …, cloud management solutions such as  Openstack and Kubernetes, programming languages (Java, Python, PHP, Node, Golang…), tools (GVV/ LLVM, GBD…), virtualization solution including KVM, Xen and Docker, as well as operating systems like Ubuntu, Redhat, Suse, and Centos.

Qualcomm is already working on its next generation SoC: Firetail based on Qualcomm Saphira core. But no details were provided yet.

Thanks to David for the links.

Getting Started with MicroPython on ESP32 – Hello World, GPIO, and WiFi

October 16th, 2017 18 comments

I’ve been playing with several ESP32 boards over the months, and tried several firmware images. I started with a tutorial for Arduino Core on ESP32, a few month later I tested ESP32 JavaScript programming with Espruino on ESPino32 board, and recently Espressif Systems sent me ESP32 PICO core development board powered by their ESP32-PICO-D4 SiP, and while I took some pretty photos, I had not used it so far.

So I decided to go with yet another firmware, and this time, I played with MicroPython on ESP32, and will report my experience with basic commands, controlling GPIOs, and WiFi in this getting started post.

Flashing Micropython Firmware to ESP32 Board

Source code is available on Github, as a fork of MicroPython repo as ESP32 support has not been upstreamed yet. We could built the firmware from source, but there’s also a pre-built binary which you can download on MicroPython website.

I’ll be using Ubuntu 16.04 for the instructions, which should be pretty similar for other Linux distributions, especially the ones based on Debian, and if you’re using Windows 10, you should be able to follow the same instructions after installing Windows Subsystem for Linux with Ubuntu on your computer.

Let’s open a terminal, to download the firmware (October 14):

If you have not done so already, install the latest version of esptool:

Now connect the board via a micro USB to USB cable to your computer. The log should like like:

In my case, the device is ttyUSB0, but it may vary depending on the board used. We can now erase the flash, and copy the firmware to the board:

If the last step is successfull,  the output should be similar to the one below:

As a side note, version 2.1 of esptool does not know about ESP32-PICO-D4, but it can still detect an ESP32 device, and the update went through normally.

Hello World Sample / Boot Log with MicroPython

We can test the firmware, by connecting to the board using minicom, screen, putty, or whatever software you feel most comfortable with. I went with minicom, setup a connection to /dev/ttyUSB0 device with 115200 bps baudrate. I immediately tested the print function, and made an hard reset to check out the boot log:

The reset command will first generate some errors message, before rebooting the board:

We can type help function to get some more help:

I also often refered to MicroPython 1.9.2 documentation to write this quick start guide.

LED Blink Sample with MicroPython

The easiest way to test GPIOs is to connect an LED, since the board does not have any user LED, only the power LED. So I connected an LED to pin 21 via a transistor to ensure enough current passes through it.

Controlling the LED in the command line interface is easy. Import the machine library, set the pin to output, and change the pin level as needed:

Success! But what about doing a proper blink sample? MicroPython developers’ official PyBoard would show as a USB mass storage drive in you computer, where can copy Python files like and files, but in the case of ESP32 PICO core, it appears the only option is to use the serial console for programming, as we can’t simply copy files to the board from the host computer.

I  found a solution on Techtutorialsx – which also has plenty of articles about MicroPython on ESP32/ESP8266. We need ampy script that can be install from our Linux terminal:

However, the first time I tried it I got an error:

I installed files module, but the error remained. So instead I installed it for Python 3:

I then created on my computer to blink the LED every 500 ms:

Before uploading the file to the board, you can try to run it as follow:

If you have plenty of errors here, that’s probably because your code is incorrect. Since I’m not very familiar with Python, it happened to me a couple of times, until I got the code right, and the LED was blinking as expected.

Now that we’ve made sure the code works, we can now copy our sample to the board…

… reconnect to the serial console, and verify the file is there:

To run the program type the following:

The LED should blink again. You can interrupt the program with Ctrl+C, and if you want to soft reset the board, press Ctrl+D.

In order to automatically start the blink program at each boot, rename to, delete, and copy instead:

Power cycle the board, and the LED should start blinking almost immediately.

ESP32 WiFi with MicroPython (Station and AP modes)

We’ve got GPIOs working, but one of the most important feature of ESP32 is obvisouly WiFi. I’ll start by configuring the board in station mode. First import the network library, set the board to station mode, and scan access points:

The latter should return a list of access points with ssid, bssid, channel, RSSI, authmode, and hidden status as explained here.

I can then connect the board to one of the access points with:

The log above with IP address should give  a clue, but you can check connection status with the following function:

and use ifconfig to get the IP info:

Switching to AP mode is easy with the three commands below configuring the board with ESP32-PICO-CNX SSID:

At this stage I can see ESP32-PICO-CNX on my phone, but it’s an open connection. We can change that with authmode option that can take 5 values:

  • 0 – open
  • 1 – WEP
  • 2 – WPA-PSK
  • 3 – WPA2-PSK
  • 4 – WPA/WPA2-PSK

I’ll use WPA2-PSK and define the password with the config function.

Working as planned…

ESP32 Web Server with Micropython

Many ESP32 project will require a web interface for monitoring or configuration. Let’s first setup the board as an access point using the command we’ve used above:

Now create file based on Python code found here that’s supposed to return the status of some GPIO pins in an HTML table:

Copy the file to the board:

Start the serial console again, import/run the python sample we’ve copied, and connect to the board (in my case


It works as expected, but we wrote the HTML code inside the Python file, and you need to handle socket programming by yourself. To further simply the task, some MicroPython web servers such as MicroWebSrv, and Picoweb are available.

MicroWebSrv (Not working yet for me)

I tried to install MicroWebSrv first, but never managed to make it work. I still reproduce the step I followed in case somebody finds out what I did wrong. I got the code, and copied files from the Linux terminal:

We can check the files are where they are supposed to be:

Go into the terminal (aka REPL console) to start a basic example, after setting up a connection:

I could connect to the server, but I would always get 404 error.


So instead I switched to picoweb, adapting the instructions here and there. It’s very easy to install.  First make sure you have a working Internet connection in your board (i.e. set station mode), and install the web server with upip:

That’s the output if everything goes according to plans:

Now let’s go back to the host computer to create an html document, for example index.html:

as well as sample file that will request the HTML page from the board, and return it to the client.

You’ll need to change “” by the IP address of your board.

Let’s copy both files to the board…

… go back to the serial console, connect in station mode, and run the sample:

Type or copy/paste the URL in the last line into a web browser, and you should get the output below.

ESP32 Bluetooth with MicroPython

There’s no Bluetooth support in the official MicroPython documentation, because it’s work in progress, and for the most adventurous MrSulry released an alpha version  a few days ago. The Bluetooth API is also in flux, but the basic code to enable Bluetooth should look like:

I’ll update that section once Bluetooth makes it to the stable release, and/or when I’m sure the API is frozen.

Other ESP32 (Micro)Python Resources

I’ve just covered a few things that can be done with MicroPyhon on ESP32, and beside the official documentation, you can also check the various MicroPython ESP32 tutoral on techtutorialsx blog. Loboris also made another MicroPython ESP32 firmware that supports pSRAM as MicroPython may use a lot of RAM. If you’re interested in Python for ESP32, but Zerynth is another option for Python on ESP32 that works with an IDE/GUI available for Windows, Linux and MAC OS X. [Update: Yet other options are Pumbaa a port of MicroPython running on top of Simba, and Pycom version of MicroPython]

NComputing RX300 Thin Client Review – Part 2: Hardware Setup, Windows Server 2016

October 8th, 2017 8 comments

Ncomputing RX300 is a thin client based on Raspberry Pi 3 board, allowing to run Windows operating systems on a powerful server with the Raspberry Pi 3 handling the display, audio, and keyboard/mouse inputs.

The company sent me a sample for review, and I checked out the hardware and accessories in the first part entitled “NComputing RX300 Thin Client Review – Part 1: Unboxing and Teardown“, so in the post I’ve started the thin client, and connected it to vSpace Pro server.

Hardware Setup

RX300 uses the same peripherals as any mini PC, so I connected USB keyboard and mouse, an Ethernet cable (WiFi is also possible), and the power adapter. You could also connect other devices, and I added a USB flash drive which, as we’ll see later, will be properly recognized by the server. I was also sent a USB to VGA adapter that you can connect to the remaining USB port to add a secondary display, but it would never work with through my TV, maybe because VGA is limited to 1600×1050, and the resolution confused the adapter.

Server Options

You’ll also need to setup a server, and you have two main option here:

  • Download vSpace Pro 10 to install and manage a self-hosted server. I did not do this in this review, because my main PC is running Ubuntu 16.04, and the program only support Windows operating systems, and server virtualization infrastructure solutions from VMWare, Citrix and Microsoft.
  • So instead I used a vSpace Pro server hosted in Singapore using AWS (Amazon Web Services) with a demo account prepared by the company for the review

If you’re interested in the first solution, you may want to read to Quick Installation Guide to find out more.

Ncomputing RX300 and Windows Server 2016 AWS instance

Once the thin clients are installed, and the server is configured, you can start your RX300 devices. About an animated boot logo, you should soon (around 15 to 20 seconds total boot) time see vSpace Pro client interface as shown below. Please ignore the vertical lines in the photos and video below, it’s just a problem with my TV.
You’ll see two sections with a list of auto-detected servers if you have setup any local vSpace Pro 10 machine, and/or server groups with other vSpace Pro servers. I’m located in the north of Thailand, and Thailand->Thailand was already setup, so I had nothing to do except click on Connect, and within a few short second, I was asked to login into Windows.

I typed the credentials provided by the demo, and I ended up in Windows right away, and could use it normally. A few times later however, I was automatically disconnected during the login process: I would type the user name and password to login, Windows desktop will appear, only go to back to vSpace Pro client interface. Trying again once or twice usually did the trick.

As soon as I entered into the server, I wanted to find out what kind of hardware the virtual machine was running on. Intel Xeon CPU E5-2676 v3 @ 2.40 GHz running Windows Server 2016 64-bit with 4 GB RAM, and a 39.9 GB Windows partition.

Click to Enlarge

Quite a powerful machine so we should expect good performance that may be affected by the Internet connection between my ISP’s modem router and the server. You’ll also notice “Ubuntu 16.10” D: drive. That’s my own flash drive connected to one of the USB port of the Raspberry Pi 3 board.

The company had install several programs such as Chrome and LibreOffice, as well as demo files.  I also tried to install my own program (Gimp), and I could do that, and persistent storage mean even after I disconnect the client, or reboot the server, my programs and files were still present in the system.

So I went on to use it like I would for a desktop machine in a business setting, browsing the web, and loading multiple programs.

Click to Enlarge

More specifically, I ran the following tests:

  • Launching Chrome, LibreOffice Calc (excel spreadsheet), LibreOffice Impress (powerpoint presentation), LibreOffice Writer (word doc), and Gimp in succession to demonstrate the speed to launch apps
  • Multi-tab browsing in Chrome and Octane 2.0 benchmarks
  • Playing 1080p YouTube video in embedded and full screen modes
  • Playing local 1080p video with VLC

Overall the performance is impressive for a remote system, and in many cases, it’s hard to know we are not using a “normal” computer. The fonts may not be as sharp as on a normal PC, but it’s hardly noticeable, and the screen updates while scrolling up or down web pages are slower than on my main computer. However, I did not feel either issues were a big problem, and they will likely depend on your network performance, in my case “low to moderate”. It feels much better than the few times I used VNC in the past.

The first time however, YouTube video playback was very choppy, but then I saw Chrome complaining about “vCAST feature not available”. vCast streaming technology is a premium feature allowing you to watch videos smoothly on thin clients. After the company enable vCAST in the server, I could streaming 1080p YouTube videos, and play local video in VLC smoothly.

You can watch the video below to have an idea of the performance, and a look at the client settings.

Once you are done, you can click on the power icon and select Disconnect to go back to vSpace Pro client user interface.

vSpace Pro client configuration options and Going back to Raspbian

If you’ve watched the video above, you’ll know that the gear icon on the bottom right brings use to the configuration menu.

Click to Enlarge

The menu has eight sub-menus:

  • General to select between Thin client mode and Raspbian Desktop mode
  • Connections to select servers manually or automatically
  • Server Groups to manage servers
  • Kiosk Mode to automatically login and/or launch a program when connecting to the vSpace server
  • Display to change HDMI resolution, or manage dual display setups.
  • Audio to select audio output and input priority
  • Network to configure Ethernet or WiFi
  • Support for firmware update option
  • About with some information about the thin client.

I tried the Raspbian desktop mode, and sure enough it will be into Raspbian, and you could potentially use it as a normal Raspberry Pi 3 board too.

Once you’ve selected this mode, it will boot to Raspbian by default. If you want to use it as a thin client again, the Switch to Thin Client Mode icon will reboot RX300 to vSpace client user interface.

Recycling older Windows computer with vSpace Pro Client

If your organization owns some older Windows PCs or laptops that lack the performance or memory to run recent programs, you could download vSpace Pro client for Windows to put them to good use. Just to the the Software Downloads page, register or/and login, and select vSpace Pro Client for WIndows 7, 8.1 or 10 as needed. Linux clients are not available for download.

You could then have a “fleet” a thin clients mixing older hardware and NComputing RX300. You’d have to consider electricity charges while calculating your TCO, as RX300 only consumes around 3.0 to 3.4 Watts, and older hardware may consume much more than that.

The Costs

Larger organizations should probably contact the company to find out the best way to match their requirements. But if you have smaller needs, or just want to evaluate the system, you could purchase Ncomputing RX300 for $99 MSRP with a 1-year license, or $174.99 with a 3-year license. I understand vCAST streaming is included for free for 6 months, but after you’d have to pay extra for the feature. What I could not find is public pricing for the various licenses. The company however has a cost calculator allowing you to check how much you’d save with thin clients compared to having PCs, but again premium features license costs such as vCAST or dual display are not included. You’d also have to consider Windows server license requirements.

GIGABYTE SynQuacer 96Boards Enterprise Platform is Powered by SocioNext SC2A11 24-core ARMv8 SoC

September 24th, 2017 22 comments

GIGABYTE, Socionext and Linaro have partnered to design a software development platform compliant with 96Boards Enterprise specifications, with GIGABYTE taking care of manufacturing the hardware based on Socionext SC2A11 processor, while Linaro will provide support via 96Boards community.

Click to Enlarge

GIGABYTE SynQuacer platform preliminary specifications (based on photos and SC2A11 specifications):

  • SoC – Socionext SynQuacer SC2A11 24x ARM Cortex-A53 MPCore cores @ up to 1GHz, with 32KB/32KB I/D L1 cache, 256 KB L2 cache, and 4MB L3 cache (5W power consumption)
  • System Memory – 4x DIMM slots for 64-bit DDR4-2133Mbps with ECC up to 64GB
  • Storage – 32GB Samsung KLMBG2JENB-B041 eMMC 5.1 flash + 2x SATA interfaces
  • Connectivity – 2x Gigabit Ethernet (RJ45) with IPSec Network Offload Engine
  • USB – 2x USB 3.0 ports on motherboard (via Renesas D720201), 4x USB ports on front panel via expansion board
  • Audio – 1x microphone input, 1x speaker output on front panel
  • Expansion – 1x PCie x16 slot (limited to 4-lanes), 2x PCIe x4 slots, other headers for expansion and/or debugging
  • Misc – Power button, power and activity LEDs, reset and power switches, configuration switches, RTC battery
  • Power Supply – ATX connector + ATX power supply
  • Dimensions – board: microATX board (96Board Enterprise compliant)

Linaro have been working on Socionex SC2A11 SoC using their PEC boards for a while, and if you want more details you may check out Linaro Connect Budapest 2017’s presentation. Multiple PEC boards can be interconnected offering up to 1536-core servers, with those systems suitable for IoT gateways, edge computing and servers running programs such as Hadoop/Spark, e-Commerce platforms, OpenStack, and so on. As of March 2017, Socionext SC2A11 supported ARM Trusted firmware, UEFI (edk2), Linux 4.5 with all drivers, Centos 7 Aarch64 rootfs, and Hadoop.

Click to Enlarge

The new development platform should become available in December 2017, and a prototype will be demonstrated during Linaro Connect San Francisco next week on September 25-29, and Yasuo Nishiguchi (Socionext) will present a related keynote at the event.