The Debix Model A

I’m still trying to work my way down the stack of single-board computers I have to review, and the Debix Model A has been queued up for far too long–for a few interesting reasons, and a lot of mundane ones.

The mundane ones range from flu to the work rollercoaster that is my life, but the interesting ones include the OS it shipped with (Windows 10 IoT Enterprise) and the challenges associated with testing that consistently.

Disclaimer: Debix supplied me with a Model A free of charge, for which I thank them. And, as usual, this article follows my .

But I’m getting ahead of myself. Let’s start with the hardware.

Hardware

The Debix Model A
The Debix Model A

The board is pretty a drop-in replacement for a from a form factor perspective, with a few interesting changes–most notably the second set of pins (not really GPIOs, but LVDS and the primary Ethernet interface), a (thankfully) full-sized HDMI port and dual USB-C ports for power and USB 2.0 OTG:

The Debix Model A ports and connectors
Port layout

Then there’s the stuff that is harder to notice:

  • A NXP i.MX 8M Plus 1.6GHz CPU (4xA53)
  • 8GB of LPDDR4 RAM
  • 2.4GHz & 5GHz Wi-Fi, Bluetooth 5.0
  • A tiny, easy to miss PCIe Gen 3 1-lane port
  • Headphone and Mic combo port
  • The usual round of UART, I2C, SPI, etc.

The second set of pins has:

  • 1xLVDS, single & dual channel 8bit
  • 1xMIPI CSI (4-lane)
  • 1xMIPI DSI (4-lane)
  • Bare Ethernet (without a line driver)

This is the first time I’ve tested an NXP chipset, and this one includes a 2.3 TOPS NPU (that I was unable to test given the usual challenges of non-mainstream SoCs) and a 1080p60 H.264/H.265 video encoder/decoder (which I was also unable able to test fully, although I suspect it was actually working in Windows since video playback was quite decent).

Software

The board has nominally complete OS support–besides the Windows 10 IoT image my board shipped with pre-installed, you can also download Android 11, Yocto, Ubuntu 22.04 and Debian 12 images, some of which (alas, not the Debian one) can self-install to the eMMC (which should be the norm).

Annoyingly, though, downloading images and flashing them was a mess. Some downloads are hosted on WeTransfer (which is not an improvement over the usual “public folder on Google Drive” setup from most manufacturers and caused me a lot of grief), and some of the eMMC images came bundled with a Windows executable to flash them to the device.

If, like me, you use almost exclusively a Mac, having to use a random Windows executable to flash things an additional hassle to deal with.

But, if like me, you deal with embedded systems a lot and have a dedicated to running Windows (because of Rockchip tooling), you’d expect that random executable to work, right?

Well, I was unable to flash the board via USB with most images, and was resigned to booting the board off the SD card–until I tried the Ubuntu 22.04 image that self-flashed to eMMC.

That was the key reason why it took me so long to get to this review: I had to try doing this a number of times, and even though Debix has a great deal of documentation (including, for a change, nice PDFs with all steps spelled out), I wait for a day when I could dedicate a few hours to plugging everything in, trying to flash things, etc. And then another, and another…

Windows 10 IoT Enterprise

The board booted directly to the desktop, and after a little bit of setup, I was able to use Remote Desktop to do most of the testing, starting with checking system information:

The Debix Model A running Windows 10 IoT Enterprise

Windows 10 seemed to have support for all the relevant hardware–except wireless and audio (although of course I was able to get RDP audio to work).

The RAM was reported as 6GB (which was odd, since the values for GPU shared memory were inconsistent), and that did have an impact–the machine was usable (I could use Edge to browse and download other stuff without issues), but not as snappy as I would have liked.

However, the one thing I was interested in was in testing legacy industrial software on it. I first tried a couple of small apps I knew had both ARM and Intel versions, and all the ARM executables I tried (not many, granted) worked without issues–but 64-bit Intel executables did not.

That included some of the OPC-UA software I had lying around, so I had to spend a bit of time trying to get older software to work.

And it did–I can’t show the OPC-UA stuff running (it was licensed for a client), but Firefox 32-bit ran without issues–if a bit slowly:

Running some test software, both ARM64 and Intel 32-bit--64-bit Intel MSIs refused to install

However, I was unable to do any real performance testing in Windows, so I tried to move on to Debian 12.

Ubuntu 22.04

After a lot of attempts, I was able to flash the board with the Ubuntu 22.04 image, and it booted directly to a GNOME desktop without any login screen. After a few updates and disabling graphical login, I set to work.

The good news is that it runs a relatively recent kernel:

 uname -a
Linux debix 6.1.22 #4 SMP PREEMPT Mon Mar 11 08:30:49 UTC 2024 aarch64 aarch64 aarch64 GNU/Linux

The not-so-good news is that there were no hardware sensors visible to lm-sensors (so I had to resort to reading the CPU temp directly).

Another thing I noticed was that lshw had trouble figuring out the number of CPU cores, which I suspect is a quirk of the NXP chipset:

 lshw
debix
    description: Computer
    product: NXP i.MX8MPlus EVK board
    serial: 181108008530a3b9
    width: 64 bits
    capabilities: smp tagged_addr_disabled
  *-core
       description: Motherboard
       physical id: 0
     *-cpu:0
          description: CPU
          product: cpu
          physical id: 0
          bus info: cpu@0
          size: 1600MHz
          capacity: 1600MHz
          capabilities: fp asimd evtstrm aes pmull sha1 sha2 crc32 cpuid cpufreq
        *-cache
             description: L1 Cache
             physical id: 0
             size: 32KiB
     *-cpu:1
          description: CPU
          product: cpu
          physical id: 1
          bus info: cpu@1
          size: 1600MHz
          capacity: 1600MHz
          capabilities: fp asimd evtstrm aes pmull sha1 sha2 crc32 cpuid cpufreq
        *-cache
             description: L1 Cache
             physical id: 0
             size: 32KiB
     *-cpu:2
          description: CPU
          product: cpu
          physical id: 2
          bus info: cpu@2
          size: 1600MHz
          capacity: 1600MHz
          capabilities: fp asimd evtstrm aes pmull sha1 sha2 crc32 cpuid cpufreq
        *-cache
             description: L1 Cache
             physical id: 0
             size: 32KiB
     *-cpu:3
          description: CPU
          product: cpu
          physical id: 3
          bus info: cpu@3
          size: 1600MHz
          capacity: 1600MHz
          capabilities: fp asimd evtstrm aes pmull sha1 sha2 crc32 cpuid cpufreq
        *-cache
             description: L1 Cache
             physical id: 0
             size: 32KiB
     *-cpu:4 DISABLED
          description: CPU
          product: idle-states
          physical id: 4
          bus info: cpu@4
     *-cpu:5 DISABLED
          description: CPU
          product: l2-cache0
          physical id: 5
          bus info: cpu@5
     *-memory
          description: System memory
          physical id: 6
          size: 7889MiB
  *-usbhost:0
       product: xHCI Host Controller
       vendor: Linux 6.1.22 xhci-hcd
       physical id: 1
       bus info: usb@1
       logical name: usb1
       version: 6.01
       capabilities: usb-2.00
       configuration: driver=hub slots=1 speed=480Mbit/s
  *-usbhost:1
       product: xHCI Host Controller
       vendor: Linux 6.1.22 xhci-hcd
       physical id: 2
       bus info: usb@2
       logical name: usb2
       version: 6.01
       capabilities: usb-3.00
       configuration: driver=hub slots=1 speed=5000Mbit/s
  *-usbhost:2
       product: xHCI Host Controller
       vendor: Linux 6.1.22 xhci-hcd
       physical id: 3
       bus info: usb@3
       logical name: usb3
       version: 6.01
       capabilities: usb-2.00
       configuration: driver=hub slots=1 speed=480Mbit/s
     *-usb
          description: USB hub
          product: 4-Port USB 2.1 Hub
          vendor: Generic
          physical id: 1
          bus info: usb@3:1
          version: 1.01
          capabilities: usb-2.10
          configuration: driver=hub slots=4 speed=480Mbit/s
  *-usbhost:3
       product: xHCI Host Controller
       vendor: Linux 6.1.22 xhci-hcd
       physical id: 4
       bus info: usb@4
       logical name: usb4
       version: 6.01
       capabilities: usb-3.00
       configuration: driver=hub slots=1 speed=5000Mbit/s
     *-usb
          description: USB hub
          product: 4-Port USB 3.1 Hub
          vendor: Generic
          physical id: 1
          bus info: usb@4:1
          version: 1.01
          capabilities: usb-3.10
          configuration: driver=hub slots=4 speed=5000Mbit/s
  *-mmc0
       description: MMC Host
       physical id: 5
       logical name: mmc0
     *-device
          description: SDIO Device
          physical id: 1
          bus info: mmc@0:0001
          serial: 0
          capabilities: sdio
        *-interface:0
             description: Wireless interface
             product: 43455
             vendor: Broadcom
             physical id: 1
             bus info: mmc@0:0001:1
             logical name: mmc0:0001:1
             logical name: wlan0
             serial: ac:6a:a3:31:38:d0
             capabilities: ethernet physical wireless
             configuration: broadcast=yes driver=brcmfmac driverversion=7.45.173 firmware=01-d2799ea2 multicast=yes wireless=IEEE 802.11
        *-interface:1
             product: 43455
             vendor: Broadcom
             physical id: 2
             bus info: mmc@0:0001:2
             logical name: mmc0:0001:2
        *-bt
             description: BlueTooth interface
             product: 43455
             vendor: Broadcom
             physical id: 3
             bus info: mmc@0:0001:3
             logical name: mmc0:0001:3
             capabilities: wireless bluetooth
             configuration: wireless=BlueTooth
  *-mmc1
       description: MMC Host
       physical id: 6
       logical name: mmc1
  *-mmc2
       description: MMC Host
       physical id: 7
       logical name: mmc2
     *-device
          description: SD/MMC Device
          product: CJTD4R
          vendor: Unknown (21)
          physical id: 1
          bus info: mmc@2:0001
          date: 04/2022
          serial: 1568669415
          capabilities: mmc
        *-interface:0
             physical id: 1
             logical name: /dev/mmcblk2rpmb
        *-interface:1
             physical id: 2
             logical name: /dev/mmcblk2
             size: 62537072640
             capabilities: partitioned partitioned:dos
             configuration: logicalsectorsize=512 sectorsize=512 signature=fda602fe
           *-volume:0
                description: Windows FAT volume
                vendor: mkfs.fat
                physical id: 1
                logical name: /dev/mmcblk2p1
                logical name: /boot
                version: FAT16
                serial: 2078-019e
                size: 479MiB
                capacity: 490MiB
                capabilities: primary fat initialized
                configuration: FATs=2 filesystem=fat mount.fstype=vfat mount.options=rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,errors=remount-ro state=mounted
           *-volume:1
                description: EXT4 volume
                vendor: Linux
                physical id: 2
                logical name: /dev/mmcblk2p2
                version: 1.0
                serial: 0dda7379-98cf-4613-b507-5f371e182d9c
                size: 57GiB
                capacity: 57GiB
                capabilities: primary journaled extended_attributes large_files huge_files dir_nlink recover 64bit extents ext4 ext2 initialized
                configuration: created=2022-04-28 17:42:32 filesystem=ext4 lastmountpoint=/ modified=2024-11-14 18:35:46 mounted=2024-11-14 18:35:46 state=clean
  *-sound:0
       description: audiohdmi
       physical id: 8
       logical name: card0
       logical name: /dev/snd/controlC0
       logical name: /dev/snd/pcmC0D0p
  *-sound:1
       description: es8316audio
       physical id: 9
       logical name: card1
       logical name: /dev/snd/controlC1
       logical name: /dev/snd/pcmC1D0c
       logical name: /dev/snd/pcmC1D0p
  *-input:0
       product: 30370000.snvs:snvs-powerkey
       physical id: a
       logical name: input0
       logical name: /dev/input/event0
       capabilities: platform
  *-input:1
       product: audio-hdmi HDMI Jack
       physical id: b
       logical name: input1
       logical name: /dev/input/event1
  *-network:0
       description: Ethernet interface
       physical id: c
       logical name: ens34
       serial: 10:07:23:6e:00:20
       capacity: 1Gbit/s
       capabilities: ethernet physical tp mii 10bt 10bt-fd 100bt 100bt-fd 1000bt-fd autonegotiation
       configuration: autonegotiation=on broadcast=yes driver=fec driverversion=6.1.22 link=no multicast=yes port=twisted pair
  *-network:1
       description: Ethernet interface
       physical id: d
       logical name: ens33
       serial: 10:07:23:6e:00:1d
       size: 1Gbit/s
       capacity: 1Gbit/s
       capabilities: ethernet physical tp mii 10bt-fd 100bt-fd 1000bt-fd autonegotiation
       configuration: autonegotiation=on broadcast=yes driver=st_gmac driverversion=6.1.22 duplex=full ip=192.168.1.202 link=yes multicast=yes port=twisted pair speed=1Gbit/s

This prompted me to have a look at the device tree, and I found that Debix had added support for a number of devices, including (apparently) the Raspberry Pi touchscreen:

 ls -1 /boot/
Image
boot_logo.bin
boot_logo.sh
imx8mp-debix-4g-board.dtb
imx8mp-debix-core-HC050IG40029-D58V.C.dtb
imx8mp-debix-core-HC080IY28026-D60V.C.dtb
imx8mp-debix-core-HC101IK25050-D59V.C.dtb
imx8mp-debix-core-JW050R0320I01.dtb
imx8mp-debix-core-JW070R0520B02.dtb
imx8mp-debix-core-JW080R1120B02.dtb
imx8mp-debix-core-JW101HD-X00.dtb
imx8mp-debix-core-ar1335.dtb
imx8mp-debix-core-board.dtb
imx8mp-debix-core-gc2145.dtb
imx8mp-debix-core-ov5640.dtb
imx8mp-debix-io-HC050IG40029-D58V.C.dtb
imx8mp-debix-io-HC080IY28026-D60V.C.dtb
imx8mp-debix-io-HC101IK25050-D59V.C.dtb
imx8mp-debix-io-JW050R0320I01.dtb
imx8mp-debix-io-JW070R0520B02.dtb
imx8mp-debix-io-JW080R1120B02.dtb
imx8mp-debix-io-JW101HD-X00.dtb
imx8mp-debix-io-board.dtb
imx8mp-debix-io-imx219.dtb
imx8mp-debix-io-raspberrypi-touchscreen.dtb
imx8mp-debix-lora-HC050IG40029-D58V.C.dtb
imx8mp-debix-lora-HC080IY28026-D60V.C.dtb
imx8mp-debix-lora-HC101IK25050-D59V.C.dtb
imx8mp-debix-lora-JW050R0320I01.dtb
imx8mp-debix-lora-JW070R0520B02.dtb
imx8mp-debix-lora-JW080R1120B02.dtb
imx8mp-debix-lora-JW101HD-X00.dtb
imx8mp-debix-lora-board.dtb
imx8mp-evk.dtb

This is a nice touch, and likely to speed up integration into vertical solutions.

Power

The board can be powered via USB-C or PoE (via an additional module), and I used a 5V/3A power supply plugged into a Zigbee power socket, which gave me the following measurements:

  • 4W on Windows, idle, peaking up to 5W under load
  • 2.7W idle on Ubuntu (with or without a graphical session)
  • 5W under load on Ubuntu

This sort of confirmed why the board felt very hot under Windows–it was drawing a lot more power, which is a common theme in Windows on ARM devices.

Temperature

Given that it came without any cooling solution, and even though Debix touts the fact that the board features industrial-grade components, I added one of my trademark copper blocks as soon as I could.

While running Windows 10, the board got considerably hot. Not uncomfortably so to the touch, but enough for me to worry about. Under Ubuntu, it idled at 49 C, but with a sustained 100% load across all cores for several minutes (courtesy of ollama) I couldn’t get it to go past 64C with the copper shim in place–nor did it ever throttle below 1.6GHz, which was impressively stable:

running ollama
One of my test runs

Performance

Of course, this stability comes at a price: It was slightly slower than a Raspberry Pi 4 at running ollama, (3.5 tokens/s vs 3.77), but sbc-bench gave me some interesting results when I compared it to similar boards:

Device / details Clockspeed Kernel Distro 7-zip multi 7-zip single AES memcpy memset kH/s
NXP i.MX8MPlus EVK board 1600 MHz 6.1 Ubuntu 22.04.5 LTS (jammy) arm64 4400 1198 746700 2610 12340 -
Rockchip RK3566 EVB2 LP4X V10 Board 1800 MHz (throttled) 5.10 Raspbian (bullseye) 3080 1294 827780 2930 7910 3.98
Rockchip RK3566 EVB2 LP4X V10 Board ~1340 MHz 5.10 Debian 11 bullseye 3390 948 620820 2060 4220 -
Radxa Zero 1800 MHz 6.6 Armbian 24.5.5 bookworm 4530 1337 834820 1580 5620 6.65
Raspberry Pi Zero 2 (RP3A0) 1200 MHz 5.10 Raspberry Pi OS Buster 3640 1007 36300 1320 1790 -
Raspberry Pi 4B 1800 MHz 5.15 Armbian Jammy arm64 5640 1752 36260 2580 3110 -


I found the memset value particularly interesting, as it was the highest of all comparable boards I tested, and the AES performance was also quite good–for other tests like 7-zip multi/single performance, AES, and memcpy, the Model A is still quite competitive, and I think that a 1800MHz board would nudge it a hair beyond the Pi 4B.

But, as usual, benchmarks are only part of the story, and my gut feeling is that the performance of this board is more than enough for most applications, even clocked at 1.6GHz–and the overall stability under load is a big plus for industrial applications.

Conclusion

In summary, the Debix Model A is a capable and versatile alternative, and so far the only SBC I tested that came with Windows 10 IoT Enterprise pre-installed–and thus, thanks to the x86 emulation, an interesting choice for industrial applications that require Windows compatibility.

As to software, I am a bit sad I couldn’t get neither the Windows flashing tool nor Debian 12 to work–I have no idea why the self-flashing process the Ubuntu image uses isn’t available for all images, but on the upside the documentation is quite detailed and comprehensive.

That documentation is a big plus, and the board itself is well-built, with a lot of interesting features that make it a good choice for a variety of projects–from industrial to hobbyist–and the power consumption is OK, although I would ship a cooling solution with boards pre-loaded with Windows.

This page is referenced in: