Quick OOTB support of Topton GM1 on *BSD
1822 words, 9 minutes
I bought a Topton GM1 Industrial Mini PC for my HomeLab. It is aimed at running Slackware Linux but I wanted to have a quick look at how well BSD OSes support it out-of-the-box.
Introduction
I’m usually not a big fan of unboxing but I was surprised this AliExpress purchase came in such a pretty packaging.
Hardware specifications
- Dimension: 170mm(L)x126mm(W)x51mm(H)
- CPU: 1x Intel Core
i7-1255U
- 12th Generation
- 2x Performance-cores @4.70 GHz
- 8x Efficient-cores @3.50 GHz
- Processor Base Power 15 W / Maximum Turbo Power 55 W
- GPU: 1x Intel Iris Xe Graphics (request dual channel DDR4 memory)
- RAM: 2x SO-DIMM DDR4 slots, support 3200MHz
- Storage: 1x M.2 2280 PCIE4.0x4, 1x M.2 2280 PCIE3.0x4/SATA, 1x 2.5inch 7mm HDD/SSD
- Network: 2x Intel I226-V 2.5G, 1x Intel Wi-Fi 6 AX211 with Bluethooth 5.2
- Front I/O: 4x USB 3.2, 1x Type-C Thunderbolt 4 (support eGPU, PD charge), 1x Earphone, 1x MIC, 1x Switch
- Rear I/O: 2x USB 2.0, 2x HDMI2.0, 1x DP1.4, 2x RJ45 LAN, 1x DC-IN
- Power brick: 19V 4.74A
- BIOS: AMI UEFI
I didn’t have a 2.5" SATA disk for the testings. Only NVMe drives were
installed.
Note that the slot tagged NVMe/SATA will host the first recognized disk
on systems. The 2.5" SATA connectors are on the left hand side of the
motherboard. The disk is attached on the metal cover and lies above the
motherboard.
About the testings
Don’t expect a detailed review as complete as those done by joshua stein . My testings were limited to installing the OS, checking if Xorg was usable and how graphical applications run. Then I checked if the network interfaces were supported and launched a bench tool on them. Finally, I had a look at the temperature and power consumption of the machine during the testings.
The machine is not a laptop. It has no battery (except the CMOS one). The machine is plugged to AC using a Shelly Plug S .
A single RJ45 cable is connected to the first NIC. During the testings,
I’ve also switched to the other one. The LAN is connected to an FTTH
Livebox that announces a 500Mbps bandwidth.
The WiFi antennas are connected. The Wireless interface attaches to a
tp-link AP and a POE Gigabit switch.
A 4K monitor is connected to the first HDMI port. This is the one on the further left side of the case.
A USB cable is connected to the 4K monitor USB HUB. I gain access to my USB keyboard, USB mouse and another Realtek NIC that I didn’t use here.
After the machine is started, hit <F2>
to enter the BIOS or <F7>
to
select a temporary boot device. By default, Secure Boot is enabled in
the BIOS. Don’t forget to disable it in order to be able to boot a non
Windows system.
The testing “protocol” goes like this:
- The installation is done using the default settings ;
- When required, an apmd or powerd daemon is run ;
- Everything is run as root ;
- Xorg and XFCE are installed and run as a desktop environment ;
- Firefox is used to run the WebGL Aquarium and Fast by Netflix ;
- In the console, speedtest-cli or speedtest-go are used to check for
network bandwidth.
I don’t have to hardware to test for full 2.5Gbps bandwidth.
Testing the OSes
There is no meaning in the OS order. The OpenBSD image was already on my Ventoy USB key. The FreeBSD installer would not start from Ventoy so I had to write the image on another USB key. The NetBSD image was not on my Ventoy USB key so I has to download it later on.
OpenBSD 7.5
The installation went smooth. Everything installed straight away.
Starting XFCE via xenodm feels as usual - reference is OpenBSD 7.5 on a ThinkPad X1 Carbon Gen10. So does Firefox and glxgears.
# vblank_mode=0 glxgears
# MOZ_ACCELERATED=1 MOZ_WEBRENDER=1 firefox
I got about 7500 FPS from glxgears and about 30 FPS with 500 fishes in WebGL Aquarium. I also played fullscreen Big Buck Bunny from YouTube on Firefox ; 1080p60 and 1440p60 were ok ; I got framedrops with 2160p60.
The sound did work when I plugged my headphones.
Regarding network bandwidth, I got about 330 Mbps from fast.com using the LAN interface and about 190 Mbps using the WiFi. Not sure why but speedtest-cli announced 690 Mbps. Downloading an MOV video file from my Synology DS918p (Intel Celeron J3455) didn’t get further than 380 Mbps.
Both LAN interfaces worked at the same speed.
The machine went to sleep using zzz
. When resuming, you have to have
the HDMI cable connected to the left socket - if you connect it to the right
one, the signal is not restored. Also the LAN interfaces lost their
connectivity on resume ; the Wireless didn’t and worked properly on
resume.
I’ve never seen the temperature getting above 55°C during my testings.
The power consumption was about 10W at IDLE. It was a bit less than 50W during the Firefox video testings.
Here’s a bit more detail about devices: dmesg , pcidump , sysctl , usbdevs
FreeBSD 14.0
The installation went smooth. You get the usual FreeBSD experience.
I could not run Xorg. When doing kldload i915kms
, the system would
freeze. Using 14.1 was slightly “better” as the OS would simply
hard-reboot itself. If interested, the console message was:
Jun 4 01:05:34 test kernel: drmn0: <drmn> on vgapci0
Jun 4 01:05:34 test kernel: vgapci0: child drmn0 requested pci_enable_io
Jun 4 01:05:34 test syslogd: last message repeated 1 times
Jun 4 01:05:34 test kernel: drmn0: [drm] Incompatible option enable_guc=-1 - undocumented flag
Jun 4 01:05:34 test kernel: [drm] Unable to create a private tmpfs mount, hugepage support will be disabled(-19).
Jun 4 01:05:34 test kernel: [drm] Got stolen memory base 0x4c800000, size 0x3c00000
Jun 4 01:05:34 test kernel: lkpi_iic0: <LinuxKPI I2C> on drmn0
Jun 4 01:05:34 test kernel: iicbus0: <Philips I2C bus> on lkpi_iic0
Jun 4 01:05:34 test kernel: iic0: <I2C generic I/O> on iicbus0
Jun 4 01:05:34 test kernel: lkpi_iic1: <LinuxKPI I2C> on drmn0
Jun 4 01:05:34 test kernel: iicbus1: <Philips I2C bus> on lkpi_iic1
Jun 4 01:05:34 test kernel: iic1: <I2C generic I/O> on iicbus1
Jun 4 01:05:34 test kernel: lkpi_iic2: <LinuxKPI I2C> on drmn0
Jun 4 01:05:34 test kernel: iicbus2: <Philips I2C bus> on lkpi_iic2
Jun 4 01:05:34 test kernel: iic2: <I2C generic I/O> on iicbus2
Jun 4 01:05:34 test kernel: lkpi_iic3: <LinuxKPI I2C> on drmn0
Jun 4 01:05:34 test kernel: iicbus3: <Philips I2C bus> on lkpi_iic3
Jun 4 01:05:34 test kernel: iic3: <I2C generic I/O> on iicbus3
Jun 4 01:05:34 test kernel: lkpi_iic4: <LinuxKPI I2C> on drmn0
Jun 4 01:05:34 test kernel: iicbus4: <Philips I2C bus> on lkpi_iic4
Jun 4 01:05:34 test kernel: iic4: <I2C generic I/O> on iicbus4
Jun 4 01:05:34 test kernel: lkpi_iic5: <LinuxKPI I2C> on drmn0
Jun 4 01:05:34 test kernel: iicbus5: <Philips I2C bus> on lkpi_iic5
Jun 4 01:05:34 test kernel: iic5: <I2C generic I/O> on iicbus5
Jun 4 01:05:34 test kernel: lkpi_iic6: <LinuxKPI I2C> on drmn0
Jun 4 01:05:34 test kernel: iicbus6: <Philips I2C bus> on lkpi_iic6
Jun 4 01:05:34 test kernel: iic6: <I2C generic I/O> on iicbus6
Jun 4 01:05:34 test kernel: lkpi_iic7: <LinuxKPI I2C> on drmn0
Jun 4 01:05:34 test kernel: iicbus7: <Philips I2C bus> on lkpi_iic7
Jun 4 01:05:34 test kernel: iic7: <I2C generic I/O> on iicbus7
Jun 4 01:05:34 test kernel: lkpi_iic8: <LinuxKPI I2C> on drmn0
Jun 4 01:05:34 test kernel: iicbus8: <Philips I2C bus> on lkpi_iic8
Jun 4 01:05:34 test kernel: iic8: <I2C generic I/O> on iicbus8
Jun 4 01:05:34 test kernel: drmn0: successfully loaded firmware image 'i915/adlp_dmc_ver2_10.bin'
Jun 4 01:05:34 test kernel: drmn0: [drm] Finished loading DMC firmware i915/adlp_dmc_ver2_10.bin (v2.10)
No Xorg, Firefox, GLX, DRM tests could be performed.
Regarding network bandwidth, both LAN interfaces performed the same.
speedtest-go
announced about 930.79Mbps download and 488.76Mbps
upload. This is weird as Orange announces only 500Mbps for my FTTH ; but
I’m eligible for a 2Gbps deal… Using the Wireless interface,
speedtest-go
announced about 22Mbps download and 4Mbps upload. It is
expected as 802.11g is the best mode one can get out of this driver for
the moment.
The machine went to sleep using zzz
. On resume, I got my SSH
connection back but the HDMI console output never went back. I could
issue a blind reboot
with the USB keyboard. The SSH connection then
died but the machine did not power off ; I had to use the power switch.
I couldn’t get temperature by default. Only when I learned I needed
kldload coretemp
could I have a look at those. At the end of all my
testings, it was about 40°C.
The power consumption was about 13W when IDLE and a bit less than 40W when doing the various network testings. There may be additionnal kernel modules to load to improve power consumption but I didn’t look at those.
Here’s a bit more detail about devices: dmesg , pciconf , sysctl , usbconfig
NetBSD 10.0
During installation, the internal NIC didn’t get an IPv4 address via DHCP the first time. After a retry, it did and the whole installation went ok.
Xorg started blazing fast ; like I got the XFCE desktop ready in less than 2 seconds. But… the resolution was limited to 1024x768. According to the logs, there is no accelerated driver for this Intel Iris Xe device.
genfb0 at pci0 dev 2 function 0: Intel Alder Lake Graphics (rev. 0x0c)
genfb0: framebuffer at 0x4000000000, size 1024x768, depth 32, stride 4096
genfb0: shadow framebuffer enabled, size 3072 KB
wsdisplay0 at genfb0 kbdmux 1: console (default, vt100 emulation)
wsmux1: connecting to wsdisplay0
drm at genfb0 not configured
Using
# Xorg -configure
# mv ~/xorg.conf.new /etc/X11/xorg.conf
did not work better. That said, glxgears displayed about 1700 FPS. When using WebGL Aquarium on Firefox, 22 FPS were displayed for 500 fishes.
Both LAN interfaces worked the same. fast.com announced 870 Mbps. Using
speedtest-go
, the results were about 900Mbps download and 470Mbps
upload. The wireless card is not recognized at all.
Suspend worked using sysctl -w hw.acpi.sleep.state=3
.
Resuming had the machine hard reboot on its own.
Temperature was around 45°C during testings.
The power consumption was about 18W when IDLE and maxed around 40W.
Here’s a bit more detail about devices: dmesg , lspci , sysctl , usbdevs
Summary
Disclaimer: this is not a “which BSD is the best”…
OpenBSD | FreeBSD | NetBSD | |
---|---|---|---|
Xorg (Intel Iris Xe) | ☀️ Accelerated | 🌧️ Reboots | ⛅ Unaccelerated |
Audio (Intel 600 Series HD Audio) | ☀️ Need headphones | ☁️ untested | ☁️ untested |
Ethernet (Intel I226-V) | ☀️ Both work | ☀️ Both work | ☀️ Both work |
Wireless (Intel Wi-Fi 6 AX211) | ☀️ Up to 802.11n | ⛅ Up to 802.11g | 🌧️ Unsupported |
I would use this machine as a… | Server or Workstation | Server | Server |
Power consumption and temperature are roughly the same. Due to the differences in Xorg/DRM support, a comparison is probably not relevant. It seems though that OpenBSD and FreeBSD use a bit less power when IDLE than NetBSD.