MINISFORUM have launched their EliteMini H31G which combines a desktop CPU with a discrete graphics card in a mini PC form factor. It supports various Intel 9th and 8th gen desktop processors combined with an NVIDIA Geforce GTX1050 Ti graphics card and targets both gamers and content creators. Available as a barebones device and in various configurations MINISFORUM sent a fully configured model for review.
Hardware overview
The MINISFORUM EliteMini H31G is a remarkably small mini PC for what it offers and physically consists of a 154 mm x 153 mm x 62 mm (6.06 x 6.02 x 2.44 inches) rectangular plastic case with a metal base. It is an actively cooled mini PC that uses Intel’s LGA 1151 socket and supports desktop processors up to a maximum TDP of 65W. The review model came with an Intel Core i5 9500F Coffee Lake processor pre-installed which is a six-core 6-thread 3.00 GHz processor boosting to 4.40 GHz. The included and non-upgradable discrete graphics card is an NVIDIA Geforce GTX1050 Ti based on Pascal architecture with 4GB of GDDR5 memory and 768 CUDA cores.
The front panel has a blue LED illuminated power button, a headphone jack, and a small pin-hole to access a reset button. The left side panel includes ports for line in, mic in, and headphones out together with a micro-SD card slot. The rear panel includes the power jack, HDMI port, mini DisplayPort, gigabit Ethernet port, four USB 3.0 (USB 3.1 Gen 1 or USB 3.2 Gen 1×1) ports, and a Kensington lock. Having all the USB ports on the rear of the device is not particularly convenient especially as they are stacked and close together meaning bulky USB devices may restrict otherwise free ports.
Additionally, there is WiFi 6 (802.11ax), support for dual-channel DDR4 2666MHz SODIMM memory as well as an M.2 2280 NVMe slot, an M.2 2242 SATA slot, and space for a 2.5” SATA drive. The review model included a single 8GB 2400MHz memory stick and a 256GB M.2 2280 NVMe SSD drive.
The full specifications for MINISFORUM Elite include:
The internal storage is easily accessed by unscrewing the four captive screws on the base and then removing it:
To access the memory you need to remove the plastic 2.5” drive tray by unscrewing the four screws:
If you want to access the CPU socket you will have to take out the entire motherboard and remove the fan assembly:
as can be seen in this breakdown image:
To power the mini PC an external 19V/7.4A power adapter is required which is nearly as large and heavy as the mini PC itself:
MINISFORUM EliteMini H31G box contents
In the box you get the power adapter and cord, an HDMI cable, a mini DisplayPort to DisplayPort cable, and a VESA mounting bracket together with screws for attaching the device to behind a monitor:
Also included is a mesh dust filter with magnetic strips which can be placed over the fan intake on the top of the device.
Review methodology
When reviewing mini PCs I typically look at their performance under both Windows and Linux (Ubuntu) and compare against some of the more recently released mini PCs. Specifically, I am now reviewing using Windows 10 version 2004 and Ubuntu 20.04 LTS and test with a selection of commonly used Windows benchmarks and/or equivalents for Linux together with Thomas Kaiser’s ‘sbc-bench’ which is a small set of different CPU performance tests focusing on server performance when run on Ubuntu. I also use ‘Phoronix Test Suite’ and now benchmark with the same set of tests on both Windows and Ubuntu for comparison purposes. On Ubuntu, I also compile the v5.4 Linux kernel using the default config as a test of performance using a real-world scenario.
Prior to benchmarking, I perform all necessary updates and/or installations to run the latest versions of both OSes. I also capture some basic details of the mini PCs under review for each OS.
Windows 10 performance
The H31G came installed with a licensed copy of Windows 10 Home version 1909 build 18363.904. Rather than attempting to upgrade Windows, I opted to reinstall with version 2004 using a downloaded Windows ISO and then upgrade to build 19041.508. A quick look at the hardware information shows it is aligned to the specification with the exception of the Windows edition however MINISFORUM have confirmed that the customer-shipped units will include Windows 10 Pro:
Note that the included M.2 NVMe drive is self-branded as ‘minisforum’ so the manufacturer is unknown.
A brief check showed working audio, micro-SD, Wi-Fi, Bluetooth, and Ethernet. The two audio output ports show up with the front headphone jack as:
and the side line out port as:
I then ran my (2020) standard set of benchmarking tools to look at performance under Windows:
For my specific set of Phoronix Test Suite tests the results were:
All these results can then be compared with other recent mini PCs
As expected the EliteMini H31G mini PC is much more powerful compared to traditional mini PCs. I also tested the Blender ‘BMW’ benchmark for both CPU and GPU (CUDA):
MINISFORUM EliteMini H31G Ubuntu performance
After shrinking the Windows partition in half and creating a new partition I installed Ubuntu using an Ubuntu 20.04.1 ISO as dual boot. After installation and updates including installing the NVIDIA driver, a brief check confirmed working audio, micro-SD, Wi-Fi, Bluetooth, and Ethernet. The two audio output ports show up with the front headphone jack as:
and the side line out port as:
The key hardware information under Ubuntu 20.04.1 is as follows:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 |
linuxium@H31G:~$ lsb_release -a Distributor ID: Ubuntu Description: Ubuntu 20.04.1 LTS Release: 20.04 Codename: focal linuxium@H31G:~$ linuxium@H31G:~$ uname -a Linux H31G 5.4.0-51-generic #56-Ubuntu SMP Mon Oct 5 14:28:49 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux linuxium@H31G:~$ linuxium@H31G:~$ inxi -Fc0 System: Host: H31G Kernel: 5.4.0-51-generic x86_64 bits: 64 Desktop: Gnome 3.36.4 Distro: Ubuntu 20.04.1 LTS (Focal Fossa) Machine: Type: Desktop Mobo: BESSTAR TECH LIMITED model: H31G serial: N/A UEFI: American Megatrends v: 5.12 date: 09/24/2020 CPU: Topology: 6-Core model: Intel Core i5-9500F bits: 64 type: MCP L2 cache: 9216 KiB Speed: 4401 MHz min/max: 800/4400 MHz Core speeds (MHz): 1: 4372 2: 4371 3: 4240 4: 4314 5: 4334 6: 4319 Graphics: Device-1: NVIDIA GP107 [GeForce GTX 1050 Ti] driver: nvidia v: 450.80.02 Display: server: X.Org 1.20.8 driver: nvidia unloaded: fbdev,modesetting,nouveau,vesa resolution: 1920x1080~60Hz OpenGL: renderer: GeForce GTX 1050 Ti/PCIe/SSE2 v: 4.6.0 NVIDIA 450.80.02 Audio: Device-1: Intel 200 Series PCH HD Audio driver: snd_hda_intel Device-2: NVIDIA GP107GL High Definition Audio driver: snd_hda_intel Sound Server: ALSA v: k5.4.0-51-generic Network: Device-1: Intel Wi-Fi 6 AX200 driver: iwlwifi IF: wlp3s0 state: down mac: xx:xx:xx:xx:xx:xx Device-2: Realtek RTL8111/8168/8411 PCI Express Gigabit Ethernet driver: r8169 IF: enp4s0 state: up speed: 1000 Mbps duplex: full mac: xx:xx:xx:xx:xx:xx Drives: Local Storage: total: 238.47 GiB used: 19.43 GiB (8.1%) ID-1: /dev/nvme0n1 model: minisforum size: 238.47 GiB Partition: ID-1: / size: 116.56 GiB used: 19.40 GiB (16.6%) fs: ext4 dev: /dev/nvme0n1p5 Sensors: System Temperatures: cpu: 46.0 C mobo: 29.8 C gpu: nvidia temp: 33 C Fan Speeds (RPM): N/A gpu: nvidia fan: 27% Info: Processes: 288 Uptime: 1h 16m Memory: 7.73 GiB used: 1.21 GiB (15.6%) Shell: new.review-test inxi: 3.0.38 linuxium@H31G:~$ linuxium@H31G:~$ df -h Filesystem Size Used Avail Use% Mounted on udev 3.9G 0 3.9G 0% /dev tmpfs 792M 2.1M 790M 1% /run /dev/nvme0n1p5 117G 20G 92G 18% / tmpfs 3.9G 0 3.9G 0% /dev/shm tmpfs 5.0M 4.0K 5.0M 1% /run/lock tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup /dev/loop1 56M 56M 0 100% /snap/core18/1885 /dev/loop2 256M 256M 0 100% /snap/gnome-3-34-1804/36 /dev/loop3 218M 218M 0 100% /snap/gnome-3-34-1804/60 /dev/loop5 63M 63M 0 100% /snap/gtk-common-themes/1506 /dev/loop0 55M 55M 0 100% /snap/core18/1880 /dev/loop4 50M 50M 0 100% /snap/snap-store/467 /dev/loop6 51M 51M 0 100% /snap/snap-store/481 /dev/loop7 31M 31M 0 100% /snap/snapd/9607 /dev/loop8 30M 30M 0 100% /snap/snapd/8542 /dev/nvme0n1p1 96M 33M 64M 35% /boot/efi tmpfs 792M 20K 792M 1% /run/user/125 tmpfs 792M 20K 792M 1% /run/user/1000 linuxium@H31G:~$ linuxium@H31G:~$ lsblk -a NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT loop0 7:0 0 55M 1 loop /snap/core18/1880 loop1 7:1 0 55.3M 1 loop /snap/core18/1885 loop2 7:2 0 255.6M 1 loop /snap/gnome-3-34-1804/36 loop3 7:3 0 217.9M 1 loop /snap/gnome-3-34-1804/60 loop4 7:4 0 49.8M 1 loop /snap/snap-store/467 loop5 7:5 0 62.1M 1 loop /snap/gtk-common-themes/1506 loop6 7:6 0 50.7M 1 loop /snap/snap-store/481 loop7 7:7 0 31M 1 loop /snap/snapd/9607 loop8 7:8 0 29.9M 1 loop /snap/snapd/8542 loop9 7:9 0 0 loop nvme0n1 259:0 0 238.5G 0 disk ├─nvme0n1p1 259:1 0 100M 0 part /boot/efi ├─nvme0n1p2 259:2 0 16M 0 part ├─nvme0n1p3 259:3 0 119G 0 part ├─nvme0n1p4 259:4 0 513M 0 part └─nvme0n1p5 259:5 0 119G 0 part / linuxium@H31G:~$ linuxium@H31G:~$ sudo lshw -C cpu *-cpu description: CPU product: Intel(R) Core(TM) i5-9500F CPU @ 3.00GHz vendor: Intel Corp. physical id: 3c bus info: cpu@0 version: Intel(R) Core(TM) i5-9500F CPU @ 3.00GHz serial: To Be Filled By O.E.M. slot: U3E1 size: 4302MHz capacity: 4400MHz width: 64 bits clock: 100MHz capabilities: lm fpu fpu_exception wp vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp x86-64 constant_tsc art arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm 3dnowprefetch cpuid_fault epb invpcid_single pti ssbd ibrs ibpb stibp tpr_shadow vnmi flexpriority ept vpid ept_ad fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms invpcid rtm mpx rdseed adx smap clflushopt intel_pt xsaveopt xsavec xgetbv1 xsaves dtherm ida arat pln pts hwp hwp_notify hwp_act_window hwp_epp md_clear flush_l1d cpufreq configuration: cores=6 enabledcores=6 threads=6 linuxium@H31G:~$ linuxium@H31G:~$ sudo lshw -C memory *-firmware description: BIOS vendor: American Megatrends Inc. physical id: 0 version: 5.12 date: 09/24/2020 size: 64KiB capacity: 16MiB capabilities: pci upgrade shadowing cdboot bootselect socketedrom edd int13floppy1200 int13floppy720 int13floppy2880 int5printscreen int14serial int17printer acpi usb biosbootspecification uefi *-memory description: System Memory physical id: 35 slot: System board or motherboard size: 8GiB *-bank:0 description: Project-Id-Version: lshwReport-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>PO-Revision-Date: 2012-02-02 13:04+0000Last-Translator: Joel Addison <jaddi27@gmail.com>Language-Team: English (Australia) <en_AU@li.org>MIME-Version: 1.0Content-Type: text/plain; charset=UTF-8Content-Transfer-Encoding: 8bitX-Launchpad-Export-Date: 2020-07-09 17:42+0000X-Generator: Launchpad (build 4809fcb62f445aaa3ae919f7f6c3cc7d156ea57a)Project-Id-Version: lshwReport-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>PO-Revision-Date: 2012-02-02 13:04+0000Last-Translator: Joel Addison <jaddi27@gmail.com>Language-Team: English (Australia) <en_AU@li.org>MIME-Version: 1.0Content-Type: text/plain; charset=UTF-8Content-Transfer-Encoding: 8bitX-Launchpad-Export-Date: 2020-07-09 17:42+0000X-Generator: Launchpad (build 4809fcb62f445aaa3ae919f7f6c3cc7d156ea57a) [empty] physical id: 0 slot: ChannelA-DIMM0 *-bank:1 description: SODIMM DDR4 Synchronous Unbuffered (Unregistered) 2400 MHz (0.4 ns) product: CBD24D4S7S8K1A-8 vendor: Kingston physical id: 1 serial: 1CA22A6B slot: ChannelB-DIMM0 size: 8GiB width: 64 bits clock: 2400MHz (0.4ns) *-cache:0 description: L1 cache physical id: 39 slot: L1 Cache size: 384KiB capacity: 384KiB capabilities: synchronous internal write-back unified configuration: level=1 *-cache:1 description: L2 cache physical id: 3a slot: L2 Cache size: 1536KiB capacity: 1536KiB capabilities: synchronous internal write-back unified configuration: level=2 *-cache:2 description: L3 cache physical id: 3b slot: L3 Cache size: 9MiB capacity: 9MiB capabilities: synchronous internal write-back unified configuration: level=3 *-memory UNCLAIMED description: Memory controller product: 200 Series/Z370 Chipset Family Power Management Controller vendor: Intel Corporation physical id: 1f.2 bus info: pci@0000:00:1f.2 version: 00 width: 32 bits clock: 33MHz (30.3ns) configuration: latency=0 resources: memory:df424000-df427fff linuxium@H31G:~$ linuxium@H31G:~$ free -mh total used free shared buff/cache available Mem: 7.7Gi 1.1Gi 5.7Gi 5.0Mi 980Mi 6.4Gi Swap: 2.0Gi 0B 2.0Gi linuxium@H31G:~$ linuxium@H31G:~$ sudo lshw -C network *-network description: Wireless interface product: Wi-Fi 6 AX200 vendor: Intel Corporation physical id: 0 bus info: pci@0000:03:00.0 logical name: wlp3s0 version: 1a serial: xx:xx:xx:xx:xx:xx width: 64 bits clock: 33MHz capabilities: pm msi pciexpress msix bus_master cap_list ethernet physical wireless configuration: broadcast=yes driver=iwlwifi driverversion=5.4.0-51-generic firmware=48.4fa0041f.0 latency=0 link=no multicast=yes wireless=IEEE 802.11 resources: irq:18 memory:df200000-df203fff *-network description: Ethernet interface product: RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller vendor: Realtek Semiconductor Co., Ltd. physical id: 0 bus info: pci@0000:04:00.0 logical name: enp4s0 version: 15 serial: xx:xx:xx:xx:xx:xx size: 1Gbit/s capacity: 1Gbit/s width: 64 bits clock: 33MHz capabilities: pm msi pciexpress msix bus_master cap_list ethernet physical tp mii 10bt 10bt-fd 100bt 100bt-fd 1000bt-fd autonegotiation configuration: autonegotiation=on broadcast=yes driver=r8169 duplex=full firmware=rtl8168h-2_0.0.2 02/26/15 ip=xxx.xxx.xxx.xxx latency=0 link=yes multicast=yes port=MII speed=1Gbit/s resources: irq:19 ioport:d000(size=256) memory:df104000-df104fff memory:df100000-df103fff linuxium@H31G:~$ linuxium@H31G:~$ sudo lshw -C display *-display description: VGA compatible controller product: GP107 [GeForce GTX 1050 Ti] vendor: NVIDIA Corporation physical id: 0 bus info: pci@0000:01:00.0 version: a1 width: 64 bits clock: 33MHz capabilities: pm msi pciexpress vga_controller bus_master cap_list rom configuration: driver=nvidia latency=0 resources: irq:145 memory:de000000-deffffff memory:c0000000-cfffffff memory:d0000000-d1ffffff ioport:e000(size=128) memory:c0000-dffff linuxium@H31G:~$ linuxium@H31G:~$ lsusb Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub Bus 001 Device 005: ID 046d:c31c Logitech, Inc. Keyboard K120 Bus 001 Device 004: ID 0bda:0129 Realtek Semiconductor Corp. RTS5129 Card Reader Controller Bus 001 Device 003: ID 093a:2510 Pixart Imaging, Inc. Optical Mouse Bus 001 Device 002: ID 8087:0029 Intel Corp. Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub linuxium@H31G:~$ linuxium@H31G:~$ lspci -nn 00:00.0 Host bridge [0600]: Intel Corporation 8th Gen Core Processor Host Bridge/DRAM Registers [8086:3ec2] (rev 07) 00:01.0 PCI bridge [0604]: Intel Corporation Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor PCIe Controller (x16) [8086:1901] (rev 07) 00:08.0 System peripheral [0880]: Intel Corporation Xeon E3-1200 v5/v6 / E3-1500 v5 / 6th/7th/8th Gen Core Processor Gaussian Mixture Model [8086:1911] 00:14.0 USB controller [0c03]: Intel Corporation 200 Series/Z370 Chipset Family USB 3.0 xHCI Controller [8086:a2af] 00:14.2 Signal processing controller [1180]: Intel Corporation 200 Series PCH Thermal Subsystem [8086:a2b1] 00:15.0 Signal processing controller [1180]: Intel Corporation 200 Series PCH Serial IO I2C Controller #0 [8086:a2e0] 00:15.1 Signal processing controller [1180]: Intel Corporation 200 Series PCH Serial IO I2C Controller #1 [8086:a2e1] 00:16.0 Communication controller [0780]: Intel Corporation 200 Series PCH CSME HECI #1 [8086:a2ba] 00:17.0 SATA controller [0106]: Intel Corporation 200 Series PCH SATA controller [AHCI mode] [8086:a282] 00:1c.0 PCI bridge [0604]: Intel Corporation 200 Series PCH PCI Express Root Port #5 [8086:a294] (rev f0) 00:1d.0 PCI bridge [0604]: Intel Corporation 200 Series PCH PCI Express Root Port #11 [8086:a29a] (rev f0) 00:1d.3 PCI bridge [0604]: Intel Corporation 200 Series PCH PCI Express Root Port #12 [8086:a29b] (rev f0) 00:1e.0 Signal processing controller [1180]: Intel Corporation 200 Series/Z370 Chipset Family Serial IO UART Controller #0 [8086:a2a7] 00:1f.0 ISA bridge [0601]: Intel Corporation Device [8086:a2ca] 00:1f.2 Memory controller [0580]: Intel Corporation 200 Series/Z370 Chipset Family Power Management Controller [8086:a2a1] 00:1f.3 Audio device [0403]: Intel Corporation 200 Series PCH HD Audio [8086:a2f0] 00:1f.4 SMBus [0c05]: Intel Corporation 200 Series/Z370 Chipset Family SMBus Controller [8086:a2a3] 01:00.0 VGA compatible controller [0300]: NVIDIA Corporation GP107 [GeForce GTX 1050 Ti] [10de:1c82] (rev a1) 01:00.1 Audio device [0403]: NVIDIA Corporation GP107GL High Definition Audio Controller [10de:0fb9] (rev a1) 02:00.0 Non-Volatile memory controller [0108]: Phison Electronics Corporation Device [1987:5013] (rev 01) 03:00.0 Network controller [0280]: Intel Corporation Wi-Fi 6 AX200 [8086:2723] (rev 1a) 04:00.0 Ethernet controller [0200]: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller [10ec:8168] (rev 15) linuxium@H31G:~$ |
I then ran my Linux benchmarks for which the majority of the results are text-based but the graphical ones included:
And for the same set of Phoronix Test Suite tests the results were:
The complete results together with a comparison of EliteMini H31G against other recent mini PCs are:
Again the H31G mini PC is much more powerful compared to traditional mini PCs running Ubuntu.
The results from running the Blender ‘BMW’ benchmark for both CPU and GPU (CUDA) were:
Browsers & Kodi
For real-world testing, I played some videos in Edge, Chrome and Kodi on Windows and in Firefox, Chrome and Kodi on Ubuntu. The following tables summarise the tests and results for each of web browsing, Kodi in general, and Kodi playing specific videos:
Hardware acceleration is not supported in Ubuntu for NVIDIA graphics when decoding VP9 and 10-bit HEVC (H.265) videos which results in software decoding being used and occasional skipped frames together with louder fan noise.
I also tried playing an 8K video in Kodi on both OS. In Windows an 8K 30 FPS video played without issue:
However in Ubuntu, the software decoding resulted in 100% CPU usage and consequently juddery playback and loud fans:
For 8K 60 FPS videos in Windows the GPU decoding max’ed out at 100% resulting in occasional frame skipping:
and in Ubuntu with software decoding and 100% CPU usage the result was again juddery playback and very loud fans:
Gaming
The inclusion of an NVIDIA Geforce GTX1050 Ti graphics card makes gaming possible. I tested three games under Steam in both Windows and Ubuntu (Counter Strike: Global Offensive, Grand Theft Auto V, and Shadow Of The Tomb Raider) at two resolutions (1920×1080 and 1280×720) with a mix of settings:
Note that on Ubuntu I relied on Steam’s in-game FPS counter to estimate the average FPS as I did not have tools equivalent to MSI AFterburner/Rivatuner available. However, this can be visually verified with the in-game benchmark from Shadow Of The Tomb Raider:
Whilst the results were similar, overall using Windows is slightly better for gaming performance including not having to wait for (or skip) Vulkan shaders to be processed.
Networking
Network connectivity throughput was measured on Ubuntu using ‘iperf’:
The wifi results are very good especially for the 5 GHz band with speeds only slightly slower than gigabit ethernet.
EliteMini H31G Thermals
As previously mentioned the H31G uses active cooling with four copper pipe heat sinks and two fans to assist with heat dissipation from both the CPU and GPU. Although the device didn’t become hot to touch, the fans are audible under load.
During benchmarking the maximum temperature I recorded on the top of the device was around 28°C in an ambient room temperature of 23.7°C. The hottest area is the back of the device where the fans vent out the hot air. The loudest the fans became during the benchmarking peaked at 61 dBA when the fans ran at their maximum RPM compared to around 38 dBA when running without load and around 50 dBA under load.
Running a stress test on Ubuntu saw the CPU temperature rise quickly to 80/82°C when the fans ramped up resulting in the temperature dropping to 68/70°C and then climbing up to 82/84°C where they remained hovering. The test was interrupted after everything appeared stable and the CPU temperature dropped immediately to around 58°C and then down to 38/40°C after a further three minutes or so:
Whilst the stress test was running the fans were loud at around 50 dBA. However in games, the fans can start ramping up and down to and from their maximum RPM and become very loud at over 60dBA as previously mentioned. This can be seen visually by comparing the CPU temperature against the fan RPM during the Shadow Of The Tomb Raider (SOTTR) benchmark where for both Windows and Ubuntu during the market scene the CPU workload increases causing the temperature to rise making the fans respond:
A simple way to prevent this during games is to use ‘vsync’ or equivalent if the average FPS is higher than 60 FPS as this prevents the CPU from overworking. For example in GTA V at 1920×1080 resolution at the end of the benchmark, the CPU is hitting 85°C and there is also visible stuttering at times as the framerate 1% and 0.1% lows drops to 5 and 4 respectively:
Setting ‘vsync’ (note the refresh rate)
fixes both the fan bursts (as the CPU now only reaches 66°C) and the stuttering (both the framerate 1% and 0.1% lows improve to 45 and 25 respectively):
However, in more demanding games and/or settings where the framerate is already lower than 60 FPS an alternative approach is required.
Undervolting
As a result of the CPU getting very hot two issues occur. Firstly, the fans ramp up excessively when dealing with the higher CPU temperatures as seen above. Secondly in response to the high CPU temperature thermal throttling occurs both in Windows:
and in Ubuntu:
By reducing the power to the CPU through undervolting less heat will be produced whilst maintaining at least the same level of performance. However, the amount you can undervolt and still maintain stability is determined by the silicon lottery. Another benefit of reducing the CPU temperatures is to minimize the need or frequency of thermal throttling occurring and thereby actually improve performance as a result.
I used Intel’s Extreme Tuning Utility or XTU tool to undervolt the core voltage by -0.125V or -125 mV:
However, I could have used Throttlestop:
Note that due to the Plundervolt vulnerability (CVE-2019-11157), you need to use a version that hasn’t been patched as the BIOS does not offer the ability to undervolt.
Running the SOTTR benchmark when using an undervolt of -0.125V in Windows reduced the CPU temperature enough to prevent the extreme fan bursts:
without impacting the gaming performance:
A similar result was achieved in Ubuntu by manually writing the encoded voltage offset to the relevant CPU machine specific register (MSR):
As mentioned undervolting can result in improved performance previously lost through thermal throttling. The same -0.125V undervolt improved the Cinebench multi-core score from 2200 to 2417:
It also resulted in better CPU Blender scores in both Windows (7m7s down to 6m24s):
and Ubuntu (5m38s down to 5m13s):
leaving as expected the GPU (CUDA) score unaffected (at 4m22s):
Using dual-channel Memory
As the review model came with only a single 8GB stick of memory installed (therefore single-channel) a simple way to improve performance is to replace this with two 4GB sticks and run in dual-channel. Adding additional memory capacity will also improve performance up to a certain point through reducing swapping.
For example when I replaced the 8GB stick with two 16GB sticks giving me 32GB in total:
I saw an improvement in the Sky Diver benchmark from 19377 to 20135:
Combined Performance Improvements
By increasing both the memory (2 x 16GB) and undervolting the CPU (-0.125V) not only did the mini PC run quieter whilst gaming by preventing the fan bursts but performance improvements were also achieved.
For example in Windows:
Sky Diver improved from 19377 to 20428:
PC Mark 10 improved from 5153 to 5334:
GTA V running at 1280×720 improved from 145 FPS to 172 FPS:
SOTTR running at 1280×720 improved from 85 FPS to 97 FPS:
A similar improvement in Ubuntu was also observed for SOTTR going from 89 FPS to 92 FPS:
EliteMini H31G Power Consumption
Power consumption with the 32GB of RAM installed was measured as follows:
- Initially plugged in – 1.4W
- Powered off (shutdown) – 1.1W (Windows) and 0.8W (Ubuntu)
- BIOS* – 30.7W
- Boot (GRUB) menu – 30.7W
- Idle – 15.9W (Windows) and 14.1W (Ubuntu)
- CPU – 101.7W then 88.1W (Windows ‘cinebench’) and 125.0W then 90.1W (Ubuntu ‘stress’)
- 4K video playback** – 32.8W (Windows) and 59.0W (Ubuntu)
- Gaming benchmark*** – Up to 150W (Windows) and up to 150W (Ubuntu)
*BIOS (see below)
**The power figures fluctuate so the value is the average of the median high and median low power readings. The 4K video power draw in Ubuntu was higher than Windows due to software decoding of the VP9 codec in Ubuntu whereas Windows used hardware acceleration.
*** The in-game benchmark from Shadow Of The Tomb Raider was used and the maximum power draw occurred during the market scene near the end of the benchmark. With a -0.125V undervolt applied the maximum power draw lowered to 139W (Windows) and 142W (Ubuntu).
BIOS
A brief overview is available in the following video:
The BIOS includes an option ‘H/W Monitor’ which allows the fans to be controlled through four modes: Full On Mode, PWM Manually Mode, Thermal Cruise Mode, and SMART FAN Mode which is the default. The first three allow setting the PWM output to between 0 and 255 to control the duty cycle percentage for the fans. Unfortunately, no settings which might allow further fine-tuning are accessible for SMART FAN Mode.
EliteMini H31G review – final observations
The primary limitation of small form factor mini PCs is their reliance on integrated graphics which currently results in poor performance in more demanding applications and games. By combining a discrete graphics card with a desktop processor and still maintaining the small physical footprint the EliteMini H31G makes for an exciting mini PC proposition. Whilst not perfect due to the demands of cooling both the CPU and GPU the overall result is still very good with impressive performance coupled with flexible memory and storage options. When space is an absolute premium and graphics are a must then the H31G is a viable choice given its minimal 1.46L volume.
Highlights: | Limitations: |
Performance vs size | No front/side facing USB ports or USB-C |
Wifi 6 | Loud fans under load |
MINISFORUM is now taking orders on their website with shipping by the end of November. The model reviewed above costs $629.00 with free worldwide shipping and MINISFORUM provides 30-day returns, 24-months warranty, and lifelong tech support.
Ian is interested in mini PCs and helps with reviews of mini PCs running Windows, Ubuntu and other Linux operating systems. You can follow him on Facebook or Twitter.
Support CNX Software! Donate via cryptocurrencies, become a Patron on Patreon, or purchase goods on Amazon or Aliexpress
Awesome review!
“Adding additional memory capacity will also improve performance up to a certain point through reducing swapping.”
Before swapping Anon pages happens, page cache gets evicted due to memory pressure. That causes delays when those pages are accessed and have to be loaded back from disk. More memory allows more page cache for shared libraries and filesystem metadata blocks, which results in less page faults and disk access. The term for this is “residency”, just the same as for CPU caches, but instead referring to system memory acting as disk cache.
More memory = higher residency and that’s what improves performance. To a point. ie if you have 128G of RAM and while running your application you never have less than 96GB free, you obviously have 96GB more memory than you needed lol.
So just because you’re not swapping doesn’t mean that more memory won’t improve your performance.
Also, just because you have used swap doesn’t mean your performance is being impacted. For example, I have a Google Compute T1 instance running Ubuntu 18.04 with Xfce desktop in a little under 600MB of RAM, with a LAMP stack in the background. When I am not using the desktop, its Anon pages get swapped out to enhance the page cache for the LAMP stack. I go weeks without using the desktop. Sometimes I force eviction of the desktop by writing 400MB from /dev/null to /dev/shm via ssh, then deleting the temporary file. When I’m done this is what things look like:
$ free
total used free shared buff/cache available
Mem: 594888 199048 53648 5016 342192 299984
Swap: 3740608 189152 3551456
As you can see I’m using 189152M of swap. But I have 299984M of cached pages and 199048M free. The LAMP stack never depletes the available RAM, so there’s no performance impact even though there’s roughly 32% of the memory swapped out.
Swap isn’t the problem when it comes to performance. Residency is the important thing.
Hi, Is this unit Android x86 compatible?
I’ve downloaded ‘android-x86_64-9.0-r2.iso’ and next I’ll test booting from it and add a further reply.
The experience was initially somewhat limited. The wireless mouse was undetectable forcing the use of a wired one. WiFi was also undetectable as was Ethernet however I was able to get Ethernet working by loading/reloading the relevant modules. Screenshots could not be saved however that might be a limitation of using a ‘live’ ISO. As an aside the ‘nouveau’ driver was automatically used for graphics. As to compatibility, I am unsure of the impact of not having WiFi or how difficult it would be to add WiFi 6 support so cannot give a definitive answer.