The UP 7000 is a credit card-sized Alder Lake-N single board computer that can be used as an alternative to the Raspberry Pi 5 for industrial applications. AAEON sent me a model with an Intel Processor N100 CPU, 8GB LPDDR5, and a 64GB eMMC flash, and I went through an unboxing in the first part of the review, compared its mechanical design to the earlier UP 4000 and Raspberry Pi 5 SBC , and also installed Ubuntu 22.04 since the UP 7000 board did not come with any OS and would initially boot to the UEFI shell.
I’ve now spent more time with the board and I will report my experience with the UP 7000 SBC running Ubuntu 22.04 in this article checking out features, performance, video playback, power consumption, and so on using the UP 4000 review with Ubuntu 22.04 I did last year as a template plus some extra tests for the GPIOs.
Ubuntu 22.04 System info
Let’s check out some of the UP 7000 system information after updating Ubuntu 22.04 with the latest packages:
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 |
jaufranc@UP-ADLN01-CNX:~$ lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 22.04.3 LTS Release: 22.04 Codename: jammy jaufranc@UP-ADLN01-CNX:~$ uname -a Linux UP-ADLN01-CNX 6.2.0-26-generic #26~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Jul 13 16:27:29 UTC 2 x86_64 x86_64 x86_64 GNU/Linux jaufranc@UP-ADLN01-CNX:~$ df -h Filesystem Size Used Avail Use% Mounted on tmpfs 768M 2.3M 766M 1% /run /dev/mmcblk0p2 57G 13G 42G 24% / tmpfs 3.8G 0 3.8G 0% /dev/shm tmpfs 5.0M 4.0K 5.0M 1% /run/lock /dev/mmcblk0p1 511M 6.1M 505M 2% /boot/efi tmpfs 768M 108K 768M 1% /run/user/1000 jaufranc@UP-ADLN01-CNX:~$ free -mh total used free shared buff/cache available Mem: 7.5Gi 1.0Gi 632Mi 275Mi 5.8Gi 5.9Gi Swap: 2.0Gi 1.0Mi 2.0Gi jaufranc@UP-ADLN01-CNX:~$ sudo inxi -Fc0 System: Host: UP-ADLN01-CNX Kernel: 6.2.0-26-generic x86_64 bits: 64 Console: pty pts/2 Distro: Ubuntu 22.04.3 LTS (Jammy Jellyfish) Machine: Type: Desktop System: AAEON product: UP-ADLN01 v: V1.0 serial: N/A Mobo: AAEON model: UP-ADLN01 v: V1.0 serial: 230249162 UEFI: American Megatrends LLC. v: UPADAM12 date: 06/02/2023 CPU: Info: quad core model: Intel N100 bits: 64 type: MCP cache: L2: 2 MiB Speed (MHz): avg: 800 min/max: 700/3400 cores: 1: 800 2: 800 3: 800 4: 800 Graphics: Device-1: Intel driver: i915 v: kernel Display: server: X.org v: 1.21.1.4 with: Xwayland v: 22.1.1 driver: gpu: i915 note: X driver n/a tty: 80x24 Message: GL data unavailable in console for root. Audio: Device-1: Intel driver: snd_hda_intel Sound Server-1: ALSA v: k6.2.0-26-generic running: yes Sound Server-2: PulseAudio v: 15.99.1 running: yes Sound Server-3: PipeWire v: 0.3.48 running: yes Network: Device-1: Realtek RTL8111/8168/8411 PCI Express Gigabit Ethernet driver: r8169 IF: enp1s0 state: up speed: 1000 Mbps duplex: full mac: 00:07:32:b3:f8:05 Drives: Local Storage: total: 58.32 GiB used: 12.62 GiB (21.6%) ID-1: /dev/mmcblk0 model: TY2964 size: 58.32 GiB Partition: ID-1: / size: 56.61 GiB used: 12.62 GiB (22.3%) fs: ext4 dev: /dev/mmcblk0p2 ID-2: /boot/efi size: 511 MiB used: 6.1 MiB (1.2%) fs: vfat dev: /dev/mmcblk0p1 Swap: ID-1: swap-1 type: file size: 2 GiB used: 1.2 MiB (0.1%) file: /swapfile Sensors: System Temperatures: cpu: 54.0 C mobo: N/A Fan Speeds (RPM): N/A Info: Processes: 231 Uptime: 5h 56m Memory: 7.5 GiB used: 1.55 GiB (20.6%) Init: systemd runlevel: 5 Shell: Sudo inxi: 3.3.13 |
So we have an Intel N100 quad-core processor clocked at 700 MHz / 3.4 GHz (Turbo) with 7.5GB RAM and a 56.61GB rootfs partition running Ubuntu 22.04.3 with Linux 6.2 as expected. The idle temperature is shown to the 54°C.
UP 7000 features testing on Ubuntu 22.04
I then tested most ports, skipping some headers I’m unable to test such as the 10-pin USB/UART wafer, to make sure the main hardware features of the UP 7000 board are all working normally on Ubuntu 22.04:
- HDMI – Video OK, Audio OK
- USB 3.0/2.0 ports – Tested with RF dongles for wireless mouse and keyboard, plus an ORICO NVMe SSD enclosure (836/927MB/s R/W speed, EXT-4)
- Gigabit Ethernet – OK (iperf3 DL: 942 Mbps, UL: 941 Mbps, full-duplex: 939/937 Mbps)
- RTC – OK
1234567891011jaufranc@UP-ADLN01-CNX:~$ timedatectlLocal time: ศ. 2023-12-08 21:30:57 +07Universal time: ศ. 2023-12-08 14:30:57 UTCRTC time: ศ. 2023-12-08 14:30:57Time zone: Asia/Bangkok (+07, +0700)System clock synchronized: yesNTP service: activeRTC in local TZ: nojaufranc@UP-ADLN01-CNX:~$ sudo hwclock -r2023-12-08 21:31:09.922105+07:00 - I/Os – See section below.
One test is gone from the UP 4000 SBC review: dual display setup, as the UP 7000 lacks the USB-C port found on the UP 4000 board, so it only supports up to one display up to 4Kp30 resolution. There’s no technical reason why the new board does not include this port, so it was a design decision possibly because few customers required this feature…
UP 7000 GPIO testing
Like all other UP boards, the UP 7000 comes with a 40-pin GPIO header mostly compatible with the Raspberry Pi GPIO header.
The header for the UP 7000 supports GPIO, I2C, UART, SPI, PWM, ADC, and I2S interfaces. So while I’m not going to connect external hardware, I’ll make sure the drivers are up and running. The wiki has more information about GPIO control, and we’re told to install the pinctrl driver to enable all I/Os
1 2 3 4 |
sudo apt install dkms wget https://github.com/up-division/pinctrl-upboard/releases/download/v1.1.3/pinctrl-upboard_1.1.3_all.deb sudo dpkg -i pinctrl-upboard_1.1.3_all.deb sudo reboot |
GPIO check
We can check if GPIO chips are there as devices:
1 2 3 |
jaufranc@UP-ADLN01-CNX:~$ ls -l /dev/gpiochip* crw------- 1 root root 254, 0 ธ.ค. 9 11:33 /dev/gpiochip0 crw------- 1 root root 254, 1 ธ.ค. 9 11:33 /dev/gpiochip1 |
Userspace tools are another option:
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 |
sudo apt install libgpiod-dev gpiod jaufranc@UP-ADLN01-CNX:~$ sudo gpioinfo 0 [sudo] password for jaufranc: gpiochip0 - 360 lines: line 0: unnamed unused input active-high line 1: unnamed unused input active-high line 2: unnamed unused input active-high line 3: unnamed unused input active-high line 4: unnamed unused input active-high line 5: unnamed unused input active-high line 6: unnamed unused input active-high line 7: unnamed unused input active-high line 8: unnamed unused input active-high line 9: unnamed unused input active-high line 10: unnamed unused input active-high line 11: unnamed unused input active-high line 12: unnamed unused input active-high ... jaufranc@UP-ADLN01-CNX:~$ sudo gpioinfo 1 gpiochip1 - 28 lines: line 0: unnamed unused input active-high line 1: unnamed unused input active-high line 2: unnamed unused input active-high line 3: unnamed unused input active-high line 4: unnamed unused input active-high line 5: unnamed unused input active-high line 6: unnamed unused input active-high line 7: unnamed unused input active-high line 8: unnamed unused input active-high line 9: unnamed unused input active-high line 10: unnamed unused input active-high line 11: unnamed unused input active-high line 12: unnamed unused input active-high |
A quick test I did was to turn on and off the green user LED on the board:
1 2 |
sudo sh -c 'echo 1 > /sys/class/leds/upboard\:green\:/brightness' sudo sh -c 'echo 0 > /sys/class/leds/upboard\:green\:/brightness' |
AAEON tells us interrupts are supported too and provides a test sample:
1 2 3 4 5 |
wget https://github.com/up-board/up-community/raw/main/scripts/irqtest.zip unzip irqtest.zip sudo apt install python3-pip sudo -H pip3 install python-periphery sudo python3 irqtest.py |
But that sample did not work for me:
1 2 3 4 5 6 7 8 9 |
jaufranc@UP-ADLN01-CNX:~$ sudo python3 irqtest.py OSError: [Errno 22] Invalid argument During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/usr/local/lib/python3.10/dist-packages/periphery/gpio_sysfs.py", line 63, in _open with open("/sys/class/gpio/export", "w") as f_export: OSError: [Errno 22] Invalid argument |
UART interfaces
Let’s now check the UART interface. Two can be found in sysfs: /dev/ttyS4 and /dev/ttyS5
1 2 3 4 5 6 |
jaufranc@UP-ADLN01-CNX:~$ ls /sys/bus/pci/devices/0000\:00\:1e.?/dw-apb-uart.*/tty '/sys/bus/pci/devices/0000:00:1e.0/dw-apb-uart.3/tty': ttyS4 '/sys/bus/pci/devices/0000:00:1e.1/dw-apb-uart.4/tty': ttyS5 |
dw-apb-uart.8 is the UART on the 10-pin wafer and dw-apb-uart.9 is the one on the 40-pin GPIO header (Tx: pin 8 and Rx: pin 10). I had to navigate the sysfs a bit to find the port, and installing the BootTerm utility utility is an easier way to find the ports:
1 2 3 4 5 |
jaufranc@UP-ADLN01-CNX:~/bootterm$ sudo bt -l port | age (sec) | device | driver | description ------+------------+------------+------------------+---------------------- 0 | 1870 | ttyS4 | dw-apb-uart | * 1 | 1870 | ttyS5 | dw-apb-uart | |
I2C interfaces and GPIO BIOS options
I2C is also supported and we have two I2C interfaces in sysfs:
1 2 3 4 5 |
jaufranc@UP-ADLN01-CNX:~$ ls /sys/bus/pci/devices/*/i2c_designware.?/ | grep i2c /sys/bus/pci/devices/0000:00:15.0/i2c_designware.1/: i2c-0 /sys/bus/pci/devices/0000:00:15.1/i2c_designware.2/: i2c-1 |
We can install userspace I2C tools to list devices:
1 |
sudo apt-get install i2c-tools |
But there’s nothing on I2C-0 or I2C-1 as those are on the 40-pin GPIO header, and I don’t have an I2C module with me to play with.
1 2 3 4 5 6 7 8 9 10 |
jaufranc@UP-ADLN01-CNX:~$ sudo i2cdetect -y -r 0 0 1 2 3 4 5 6 7 8 9 a b c d e f 00: -- -- -- -- -- -- -- -- 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 70: -- -- -- -- -- -- -- -- |
But there are some devices attached to I2C-3 which must be an internal bus:
1 2 3 4 5 6 7 8 9 10 |
jaufranc@UP-ADLN01-CNX:~$ sudo i2cdetect -y -r 3 0 1 2 3 4 5 6 7 8 9 a b c d e f 00: -- -- -- -- -- -- -- -- 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 30: -- -- -- -- -- -- -- 37 -- -- 3a -- -- -- -- -- 40: -- -- -- -- -- -- -- -- -- -- 4a 4b -- -- -- -- 50: 50 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 70: -- -- -- -- -- -- -- -- |
As a side note, all pins have multiple features with GPIO or special modes and the default behavior of those can be set in the BIOS, including for I2C. You can enter the BIOS by pressing the “Del” key and press enter when you are asked for a password.
From there you can navigate to the Advanced menu, and select HAT Pins Configurations.
From there you can enable/disable I2C, SPI, UART, or I2S controllers or ADC in order to select the default mode of each GPIO pin. If GPIO mode is selected for a specific pin you can decide whether it’s an input pin or an output pin set to high or low.
The documentation also mentioned an Engineering BIOS password (upassw0rd) that you can use when entering the BIOS to access even more options. The wiki says the I2C speed is selectable from 100 kHz to 3 MHz in the LPSS Configuration, but I could not find this option in the UP 7000 BIOS when I entered the BIOS “administrator” mode using the aforementioned password.
The CRB Setup is where most of the goodies are, although some new options also show up in the Advanced tab. The PCH-UI Configuration is only one small part of the CRB Setup options.
There’s a massive list of options, 90 percent of which I don’t understand, and most people should not enter the BIOS in administrator mode and especially change CRB settings since AAEON warns us it’s possible to brick the board when changing certain advanced BIOS parameters… You’d then need to reflash the BIOS with an SPI programmer…
SPI interfaces
Two SPI interfaces are exposed in user space thanks to the DKMS pinctrl driver we installed above:
1 2 3 |
jaufranc@UP-ADLN01-CNX:~$ ls -l /dev/spidev1.* crw------- 1 root root 153, 0 ธ.ค. 9 14:38 /dev/spidev1.0 crw------- 1 root root 153, 1 ธ.ค. 9 14:38 /dev/spidev1.1 |
We can use spi-tools in Ubuntu to read or set the configuration.
1 2 3 4 5 |
sudo apt install spi-tools jaufranc@UP-ADLN01-CNX:~$ sudo spi-config -d /dev/spidev1.0 -q /dev/spidev1.0: mode=0, lsb=0, bits=8, speed=1000000, spiready=0 jaufranc@UP-ADLN01-CNX:~$ sudo spi-config -d /dev/spidev1.1 -q /dev/spidev1.1: mode=0, lsb=0, bits=8, speed=1000000, spiready=0 |
PWM control
We can see two PWM interfaces in sysfs:
1 2 3 4 |
jaufranc@UP-ADLN01-CNX:~$ ls /sys/class/pwm/pwmchip0 device export npwm power subsystem uevent unexport jaufranc@UP-ADLN01-CNX:~$ ls /sys/class/pwm/pwmchip1 device export npwm power subsystem uevent unexport |
The documentation says pwmchip0 is used with pwm0 on pin 32, pwm1 on pin 33, no pwm2, and pwm3 on pin 16. There’s nothing about pwmchip1.
When executed as root, the following commands are supposed to generate a 293 Hz square wave pulse on pin 32, with a duty cycle of around 50% on PWM0 pin:
1 2 3 4 |
echo 0 > /sys/class/pwm/pwmchip0/export echo 3413333 > /sys/class/pwm/pwmchip0/pwm0/period echo 1706667 > /sys/class/pwm/pwmchip0/pwm0/duty_cycle echo 1 > /sys/class/pwm/pwmchip0/pwm0/enable |
But it failed for me with the second and fourth command exiting with an I/O error:
1 2 3 4 5 |
jaufranc@UP-ADLN01-CNX:~$ sudo sh -c 'echo 3413333 > /sys/class/pwm/pwmchip0/pwm0/period' sh: 1: echo: echo: I/O error jaufranc@UP-ADLN01-CNX:~$ sudo sh -c 'echo 1706667 > /sys/class/pwm/pwmchip0/pwm0/duty_cycle' jaufranc@UP-ADLN01-CNX:~$ sudo sh -c 'echo 1 > /sys/class/pwm/pwmchip0/pwm0/enable' sh: 1: echo: echo: I/O error |
I see some others having issues with PWM, but that was three years ago and for a different problem. I’ll have to ask AAEON for a solution.
Enabling ADC
The wiki does not have anything about the ADC pin, but I noted some info in the forums for the original UP Board.
1 2 |
jaufranc@UP-ADLN01-CNX:~$ ls /sys/bus/iio/devices/ jaufranc@UP-ADLN01-CNX:~$ |
The ADC is supposed to be there but it’s empty. But if you remember when we accessed the HAT pin configurations in the BIOS in the I2C section of this review, ADC was disabled. So I went back to the BIOS to enable ADC on GPIO 3 (pin 7).
If we go back to Ubuntu 22.04, we can see the ADC interface is indeed enabled on the UP 7000 and accessible on sysfs:
1 2 3 4 |
jaufranc@UP-ADLN01-CNX:~$ ls /sys/bus/iio/devices/iio\:device0 buffer dev in_voltage_scale scan_elements uevent buffer0 firmware_node name subsystem waiting_for_supplier current_timestamp_clock in_voltage_raw power trigger |
We can use this to read the raw voltage:
1 2 |
jaufranc@UP-ADLN01-CNX:~$ cat /sys/bus/iio/devices/iio\:device0/in_voltage_raw 234 |
UP 7000 benchmarks in Ubuntu 22.04
Let’s first run SBC-bench.sh script from Thomas Kaiser:
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 |
jaufranc@UP-ADLN01-CNX:~$ sudo ./sbc-bench.sh -r Starting to examine hardware/software for review purposes... Average load and/or CPU utilization too high (too much background activity). Waiting... Too busy for benchmarking: 20:53:23 up 5:59, 4 users, load average: 0.09, 0.30, 0.22, cpu: 0% sbc-bench v0.9.59 Installing needed tools: apt -f -qq -y install gcc make build-essential curl git sysstat powercap-utils binutils mmc-utils smartmontools stress-ng p7zip, tinymembench, ramlat, mhz, cpufetch, cpuminer. Done. Checking cpufreq OPP. Done. Executing tinymembench. Done. Executing RAM latency tester. Done. Executing OpenSSL benchmark. Done. Executing 7-zip benchmark. Done. Throttling test: heating up the device, 5 more minutes to wait. Done. Checking cpufreq OPP again. Done (11 minutes elapsed). Results validation: * Measured clockspeed not lower than advertised max CPU clockspeed * No swapping * Background activity (%system) OK * Powercap detected. Details: "sudo powercap-info -p intel-rapl" -> https://tinyurl.com/4jh9nevj Full results uploaded to http://sprunge.us/GAfPMA # AAEON UP-ADLN01 V1.0 / N100 Tested with sbc-bench v0.9.59 on Fri, 08 Dec 2023 21:07:39 +0700. Full info: [http://sprunge.us/GAfPMA](http://sprunge.us/GAfPMA) ### General information: Information courtesy of cpufetch: Name: Intel(R) N100 Microarchitecture: Alder Lake Technology: 10nm Max Frequency: 3.400 GHz Cores: 4 cores AVX: AVX,AVX2 FMA: FMA3 L1i Size: 64KB (256KB Total) L1d Size: 32KB (128KB Total) L2 Size: 2MB L3 Size: 6MB Peak Performance: 435.20 GFLOP/s N100, Kernel: x86_64, Userland: amd64 CPU sysfs topology (clusters, cpufreq members, clockspeeds) cpufreq min max CPU cluster policy speed speed core type 0 0 0 700 3400 N100 1 0 1 700 3400 N100 2 0 2 700 3400 N100 3 0 3 700 3400 N100 7678 KB available RAM ### Policies (performance vs. idle consumption): Status of performance related policies found below /sys: /sys/module/pcie_aspm/parameters/policy: [default] performance powersave powersupersave ### Clockspeeds (idle vs. heated up): Before at 62.0°C: cpu0: OPP: 3400, Measured: 3391 After at 90.0°C: cpu0: OPP: 3400, Measured: 3391 ### Performance baseline * memcpy: 8277.6 MB/s, memchr: 13678.5 MB/s, memset: 8046.5 MB/s * 16M latency: 147.9 124.3 146.0 124.3 144.9 122.6 117.2 124.3 * 128M latency: 159.4 143.6 159.0 143.0 158.7 170.6 135.0 139.0 * 7-zip MIPS (3 consecutive runs): 12358, 13148, 13178 (12890 avg), single-threaded: 3719 * `aes-256-cbc 925607.32k 1179105.28k 1218741.85k 1229284.69k 1232393.56k 1232218.79k` * `aes-256-cbc 935266.61k 1179486.23k 1219242.50k 1229681.32k 1232303.45k 1231454.21k` ### PCIe and storage devices: * Realtek RTL8111/8168/8411 PCI Express Gigabit Ethernet: Speed 2.5GT/s (ok), Width x1 (ok), driver in use: r8169 * 58.3GB "TY2964" HS400 Enhanced strobe eMMC 5.1 card as /dev/mmcblk0: date 05/2023, manfid/oemid: 0x000070/0x0100, hw/fw rev: 0x0/0x5b00000000000000 * Winbond W25Q256JW 32MB SPI NOR flash, drivers in use: spi-nor/intel-spi ### Swap configuration: * /swapfile on /dev/mmcblk0p2: 2.0G (2.8M used) on MMC storage ### Software versions: * Ubuntu 22.04.3 LTS * Compiler: /usr/bin/gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0 / x86_64-linux-gnu * OpenSSL 3.0.2, built on 15 Mar 2022 (Library: OpenSSL 3.0.2 15 Mar 2022) ### Kernel info: * `/proc/cmdline: BOOT_IMAGE=/boot/vmlinuz-6.2.0-26-generic root=UUID=8896b933-4cba-45ff-9006-edda9c33f347 ro quiet splash vt.handoff=7` * Vulnerability Spec store bypass: Mitigation; Speculative Store Bypass disabled via prctl * Vulnerability Spectre v1: Mitigation; usercopy/swapgs barriers and __user pointer sanitization * Kernel 6.2.0-26-generic / CONFIG_HZ=250 Waiting for the device to cool down...................................... 63.0°C |
The test was done at an ambient temperature of around 28°C as winter decided to leave early this year. The highest CPU temperature recorded by the script was 99.0°C in CPU miner, and while throttling was not detected it appears to have occurred since the frequency dropped to as low as 1,800 MHz in CPU miner for short periods. The heatsink can be really hot (I had to wear gloves to touch it for more than one second), but it mostly means it’s doing its job.
Powercap was detected so let’s check the power limits as requested by the script:
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 |
jaufranc@UP-ADLN01-CNX:~$ sudo powercap-info -p intel-rapl [sudo] password for jaufranc: enabled: 1 Zone 0 name: package-0 enabled: 1 max_energy_range_uj: 262143328850 energy_uj: 458390733 Constraint 0 name: long_term power_limit_uw: 9125000 time_window_us: 27983872 max_power_uw: 6000000 Constraint 1 name: short_term power_limit_uw: 25000000 time_window_us: 2440 max_power_uw: 0 Constraint 2 name: peak_power power_limit_uw: 78000000 time_window_us: 0 max_power_uw: 0 Zone 0:0 name: core enabled: 0 max_energy_range_uj: 262143328850 energy_uj: 97230036 Constraint 0 name: long_term power_limit_uw: 0 time_window_us: 976 Zone 0:1 name: uncore enabled: 0 max_energy_range_uj: 262143328850 energy_uj: 131591 Constraint 0 name: long_term power_limit_uw: 0 time_window_us: 976 |
PL1 set to 9.125W and PL2 to 25W.
We’ve done a side-by-side comparison chart below and for reference, the 7-zip score (12,890 points) is almost exactly twice the one for the UP 4000 and about 28 percent higher than with the Raspberry Pi 5, but Rockchip RK3588 SBCs like the Rock 5B or Khadas Edge2 Pro are still clearly ahead both in terms of memory bandwidth and 7-zip performance. Those results are also a bit lower than an actively cooled mini PC (Beelink EQ12) getting a little over 14,000 points.
The BIOS has performance settings, so I temporarily changed “AAEON Smart Boost” from “Smart Boost” to “Maximum Performance”. There’s also an option for Good Stability which may be suitable for higher ambient temperatures, but I should note I did not have any stability issues with either Smart Boost or Maximum Performance settings.
Once done, I ran sbc-bench.sh again:
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 |
jaufranc@UP-ADLN01-CNX:~$ sudo ./sbc-bench.sh sbc-bench v0.9.59 Installing needed tools: Done. Checking cpufreq OPP. Done (results will be available in 7-10 minutes). Executing tinymembench. Done. Executing RAM latency tester. Done. Executing OpenSSL benchmark. Done. Executing 7-zip benchmark. Done. Checking cpufreq OPP again. Done (6 minutes elapsed). Results validation: * Measured clockspeed not lower than advertised max CPU clockspeed * No swapping * Background activity (%system) OK * Powercap detected. Details: "sudo powercap-info -p intel-rapl" -> https://tinyurl.com/4jh9nevj Memory performance memcpy: 8352.2 MB/s memset: 8127.6 MB/s 7-zip total scores (3 consecutive runs): 13419,13469,13489, single-threaded: 3711 OpenSSL results: type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes 16384 bytes aes-128-cbc 985115.51k 1595641.05k 1669379.16k 1688595.46k 1694485.16k 1694302.21k aes-128-cbc 978993.37k 1595295.27k 1669095.59k 1688521.05k 1693837.99k 1694750.04k aes-192-cbc 968636.25k 1356166.66k 1409023.83k 1422894.76k 1426576.73k 1427319.47k aes-192-cbc 968685.81k 1356332.91k 1409301.76k 1422617.94k 1427218.43k 1427330.39k aes-256-cbc 935245.75k 1179406.81k 1218691.67k 1229451.61k 1232399.02k 1232683.01k aes-256-cbc 935156.19k 1179266.35k 1218664.79k 1229249.88k 1232461.82k 1232704.85k Unable to upload full test results. Please copy&paste the below stuff to pastebin.com and provide the URL. Check the output for throttling and swapping please. |
Here’s the link to the full test results. Power limits info with both PL1 and PL2 set to 25W:
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 |
jaufranc@UP-ADLN01-CNX:~$ sudo powercap-info -p intel-rapl enabled: 1 Zone 0 name: package-0 enabled: 1 max_energy_range_uj: 262143328850 energy_uj: 4470116913 Constraint 0 name: long_term power_limit_uw: 25000000 time_window_us: 27983872 max_power_uw: 6000000 Constraint 1 name: short_term power_limit_uw: 25000000 time_window_us: 2440 max_power_uw: 0 Constraint 2 name: peak_power power_limit_uw: 78000000 time_window_us: 0 max_power_uw: 0 Zone 0:0 name: core enabled: 0 max_energy_range_uj: 262143328850 energy_uj: 2485182358 Constraint 0 name: long_term power_limit_uw: 0 time_window_us: 976 Zone 0:1 name: uncore enabled: 0 max_energy_range_uj: 262143328850 energy_uj: 755796 Constraint 0 name: long_term power_limit_uw: 0 time_window_us: 976 |
The performance is slightly higher, but note that the room temperature was around 26°C or about 2°C less than the first test. The rest of the review was done with the “Smart Boost” option.
We don’t often use the Phoronix test suite anymore since comparisons can be complicated due to evolving compiler flags and code, but since we used it with the UP 4000, we repeated the test with the UP 7000 again:
1 |
phoronix-test-suite benchmark 2210164-NE-2209103NE94 |
The UP 7000 is faster than the UP 4000 for all tests, and trades top results with the Rockchip RK3588S powered Khadas Edge2 Pro. You’ll find the full results on the openbenchmarking.org website.
Storage Performance
Storage performance is an important component of overall system performance, so I’ve used iozone3 to test the performance of the eMMC flash:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
jaufranc@UP-ADLN01-CNX:~$ iozone -e -I -a -s 100M -r 4k -r 16k -r 512k -r 1024k -r 16384k -i 0 -i 1 -i 2 Iozone: Performance Test of File I/O Version $Revision: 3.489 $ Compiled for 64 bit mode. Build: linux-AMD64 random random bkwd record stride kB reclen write rewrite read reread read write read rewrite read fwrite frewrite fread freread 102400 4 46498 50303 32527 32835 27971 47807 102400 16 99640 112581 82896 82797 65445 109254 102400 512 202289 198320 243251 244647 236905 185960 102400 1024 216086 209006 268205 269402 267238 208432 102400 16384 227434 232576 309627 310762 310502 228986 iozone test complete. |
Around 309 MB/s and 227 MB/s sequential read and write speeds are excellent for an eMMC flash and a non-insignificant improvement over the UP 4000 (234/191 MB/s) and random I/O results look good too, and better than on the UP 4000.
3D Graphics Benchmark
I went with the usual Unigine Heaven Benchmark 4.0 to test 3D graphics performance in Linux.
That would be 258 points or 10.2 average fps at 1920×1080 resolution. For reference, the Atom x7-E3950 based UP 4000 got 131 points and the Ryzen Embedded R1606G powered DFI GHF51 SBC achieved 135 points. So again, a pretty good improvement here.
Video Playback in YouTube and Kodi 19.4
I could play YouTube videos in Firefox at 1920×1080 60 fps with just a couple of frames dropped at the beginning,
but 4Kp60 is very choppy with many dropped frames.
I switched to Chrome and I could play 1080p60 smoothly albeit with some frames dropped at the beginning and a few from time to time if I move the mouse,
and 2160p (4K) had many dropped frames and the loading icon was showing often despite the network buffer being close to full at all times.
Switching to another 4K video at 30 fps yielded much better results with the video playing smoothly and only one frame dropped at the beginning.
All videos used the VP9 codec.
I connected a USB 3.0 hard drive to play some local 4K videos in Kodi 19.4.
- HD.Club-4K-Chimei-inn-60mbps.mp4 (H.264, 30 fps) – OK
- MHD_2013_2160p_ShowReel_R_9000f_24fps_RMN_QP23_10b.mkv (10-bit HEVC) – OK
- BT.2020.20140602.ts (Rec.2020 compliant video; 36 Mbps; 59.97 Hz) – OK
- big_buck_bunny_4k_H264_30fps.mp4 – OK
- Fifa_WorldCup2014_Uruguay-Colombia_4K-x265.mp4 (4K, H.265, 60 fps) – OK
- -4K.mp4 (10-bit H.264; 120 Mbps) – Playing at an estimated 8-10 fps through software video decoding
- tara-no9-vp9.webm (4K VP9 YouTube video @ 60 fps, Vorbis audio) – OK
- The.Curvature.of.Earth.4K.60FPS-YT-UceRgEyfSsc.VP9.3840×2160.OPUS.160K.webm (4K VP9 @ 60 fps + opus audio) – OK, although the video froze for the first two seconds it played perfectly smoothly afterward.
All videos play with hardware video decoding and are smooth with low CPU usage (around 20% or less on all cores), except for the 4K 10-bit H.264 video that is played through software video decoding, and the processor is not quite powerful enough to reach ~24 fps.
Power Consumption
Finally, I measured power consumption with a wall meter:
- Power off – 1.4 – 1.5 Watt
- Idle – 4.2 – 4.3 Watts
- Full HD 60 fps YouTube video in Firefox – 9.2 to 11.4 Watts
- Full HD 60 fps YouTube video in Chrome – 7.3 to 10.1 Watts
- Stress test with “stress -c 4” – 16.5 to 17 Watts
Note: An HDMI monitor, RF dongles for wireless keyboard and mouse, and an Ethernet cable were connected to the board and no other peripherals.
Conclusion
Just like the UP 4000 single board computer, the new Intel Processor N100-based UP 7000 SBC is a solid device with everything basically working out of the box in Ubuntu 22.04 with stable operation and about twice the performance of the earlier model. The new model however lacks the USB-C port from the UP 4000 meaning only single display setups are possible and I had some issues with the interrupt sample and PWM, but those may soon be fixed once I get feedback from the company. 4Kp60 YouTube video playback is not smooth with this CPU, although 4Kp30 and 1080p60 are fine, and 4Kp60 videos play fine in Kodi with hardware video decoding. In terms of performance, the UP 7000 offers something between a Raspberry Pi 5 and Rockchip RK3588 SBCs, although it will still outperform the latter in some of the tests.
Compared to Arm platforms, even the Raspberry Pi, you’ll get excellent Linux support, and the BIOS provides an amazing number of options, although I’m not sure what most of them are for… Support is fairly good with community support from the UP community that includes a forum and a wiki. Regular readers will be aware that we just tested the Youyeetoo X1 x86 SBC testing GPIO and other features in Ubuntu 22.04, and it could offer a cheaper alternative to the UP 7000 SBC, but the AAEON provides higher performance and should be better suited to industrial use with a fanless design and long term longevity up to 2038.
I’d like to thank AAEON for sending the UP 7000 x86 SBC for review. The model tested here, with an Intel Processor N100, 8GB LPDDR5 RAM, and a 64GB eMMC flash, can be purchased for $251.99 with the 12V/5A power supply on the UP shop where you’ll also find accessories such as a USB 2.0 cable for the 10-pin wafer and OS installation services with Windows 10 IoT Enterprise 2021 ($47.99 with license) and Debian 12 ($17.99).
Jean-Luc started CNX Software in 2010 as a part-time endeavor, before quitting his job as a software engineering manager, and starting to write daily news, and reviews full time later in 2011.
Support CNX Software! Donate via cryptocurrencies, become a Patron on Patreon, or purchase goods on Amazon or Aliexpress