iKOOLCORE R2 (Core i3-N300) system review – Part2: Proxmox VE, Ubuntu 22.04, pfSense – CNX Software

In the first part of iKOOLCORE R2 mini PC & router review, I had a look at the hardware with an unboxing and a teardown of the Intel Core i3-N300 Alder Lake-N computer and also noticed the device booted to a UEFI shell. So for the second part of the review, I will report my experience installing Proxmox VE on the iKOOLCORE R2 and setting up and using Ubuntu 22.04, pfSense 2.7.2, and OpenWrt 23.05 virtual machines, making sure I can still use a physical display, keyboard, and mouse with Ubuntu while pfSense firewall is running.

As a side note, the previous generation iKOOLCORE R1 mini PC that was sent to Ian for review with Proxmox VE and various virtual machines preinstalled OpenWrt, Debian 11, and Windows 10 Enterprise LTSC set to Chinese language by default. As I understand it, iKOOLCORE still does that for the Chinese market, but not for the overseas markets potentially because they don’t want to handle two versions and potential customs issues.  This review will be a bit different than other mini PCs, as I’ll mostly report my experience of using the iKOOLCORE R2 with Proxmox VE and the steps I had to follow to make everything work the way I wanted with Ubuntu 22.04 and pfSense OS running simultaneously.

Installing Proxmox VE on iKOOLCORE R2

The first step is to download ProxmoxVE ISO and I selected Proxmox VE 8.1 ISO Installer (updated on November 23, 2023).

The Startup Disk Creator is Ubuntu 22.04 did not seem to like the Proxmox ISO file, so I went with dd instead as per the official instructions to flash the ISO to a USB flash drive:

sudo dd bs=1M conv=fdatasync if=./proxmoxve_8.11.iso of=/dev/sdb

Since the mini PC only comes with two USB Type-A ports, and I need two RF dongles, one for the mouse, and one for the keyboard, I had to use a USB hub to connect the USB flash drive, but the installation went smoothly.

I went to the “Install Proxmox VE (graphical)” option in the installation menu, followed the instructions, and soon enough the installation was complete, and upon reboot, I was presented with a GRUB menu showing Proxmox VE GNU/Linux.

The boot ends with a text login prompt on the HDMI display telling us to configure the server in a web browser at the address https//:<ip_address>:8006.

The login requires root user and the password is the one provided during the Proxmox VE installation.

Note some of the screenshots will use 192.168.31.6 and others 192.168.31.249 as the second time I installed Proxmox VE, I changed the static IP address to something not covered by the DHCP server range from my router…

Proxmox VE dashboard and configuration

The Proxmox Virtual Environment dashboard shows the iKOOLCORE-R2-CNX node and storage volumes, some buttons to create a VM (Virtual Machine) or CT (Container), and a Tasks section at the bottom showing all main events.

Before going further we might want to have a look at the Wiki that tells us to install a script in order to enable hardware passthrough on the iKOOLCORE R2 and display system information in the Proxmox VE dashboard:

export LC_ALL=en_US.UTF8

apt update

apt y install git

git clone https://github.com/KoolCore/Proxmox_VE_Status.git

cd Proxmox_VE_Status

bash ./passthrough.sh

I did the above in an SSH terminal, but you could also do so in the _Shell section directly in the Proxmox VE dashboard. Nevertheless, I could access system information in the Summary tab in the dashboard.

Installing Ubuntu 22.04 desktop, pfSense 2.7.1, and OpenWrt 23.05

We are now ready to install the operating we need for this review. So I loaded Ubuntu 22.04 (upload from local machine) and pfSense (downloaded from URL) to Promox VE in the local->ISO image section of the dashboard.

We’ll also install OpenWrt 23.05, but it’s more complicated, and some people will just tell users to simply install pfSense and skip OpenWrt on this type of hardware.

I’ve already documented the method to install Ubuntu 22.04 in Proxmox VE with hardware passthrough on Alder Lake-N hardware in order to have access to the physical interfaces such as HDMI and USB-C (DisplayPort) video output and connect a wireless keyboard and mouse to the device. The Ubuntu 22.04 VM was configured to use eight cores, 128GB storage and 4GB RAM out of the 8GB RAM in my iKOOLCORE R2 mini PC

I then repeated the same procedure for pfSense 2.7.2 (minus the hardware passthrough steps) with two cores, 2GB RAM, and 32GB storage, and also installed OpenWrt 23.05.2 following the instructions linked above, except I used the openwrt.tar.gz file from https://downloads.openwrt.org/releases/23.05.2/targets/x86/64/ insteadL

wget https://downloads.openwrt.org/releases/23.05.2/targets/x86/64/openwrt-23.05.2-x86-64-rootfs.tar.gz

pct create 102 openwrt23.05.2x8664rootfs.tar.gz arch amd64 hostname openwrt23.05 rootfs locallvm:20 memory 512 cores 2 ostype unmanaged unprivileged 1

At this point, I had three OS running in Proxmox VE:

  • Ubuntu 22.04 (ID 100)
  • pfSense 2.7.1 (ID 101) – yet to be configured
  • OpenWrt 23.05 (ID 102) – which we won’t use in this review…

The first time I installed Ubuntu 22.04 without hardware passthrough and desktop would show on the Proxmox VE dashboard.

But once I enabled hardware passthrough for specific PCIe and USB ports as explained in our how-to, the Ubuntu desktop shows on the display connected to the iKOOLCORE R2 either via HDMI or USB-C port.

The goal: using iKOOLCORE R2 as a mini PC and a firewall

At this point, we haven’t talked about using the four 2.5GbE RJ45 ports on the iKOOLCORE R2 just yet, and my goal is to use pfSense as a firewall with two Ethernet ports, have the Ubuntu VM behind the firewall while using it as a mini PC with a single 2.5GbE port, and the last RJ45 port will be used to access Proxmox VE interface even if pfSense is shut down.

I’ll be mostly following the pfSense setup instructions from Zenarmor in this section and creating Linux bridges for the three Ethernet ports that are not used yet by going to iKOOLCORE-R2-CNX and System->Network, and clicking on Create->Linux bridge.

The name is automatically generated, but we need to enter the IPv4/CIDR and bridge ports. So I ended up with four Linux bridges as follows:

  1. vmbr0 – enp4s0 (Intel i226) with IP address: 192.168.31.249 for Proxmox VE
  2. vmbr1 – enp3s0 (Intel i226) with IP address: 192.168.31.250 for pfSense WAN
  3. vmbr2 – enp1s0 (Intel i226) with IP address: 192.168.33.1 for pfSense LAN
  4. vmbr3 – enx009027f41845 (RealTek RTL8156BG) with IP address: 192.168.33.201 for Ubuntu LAN

One important note is that the IPv4/CIDR field is only used by the Proxmox VE and not the guest OS. I failed to understand that at the beginning and set 192.168.31.1 for the LAN port of both pfSense and Proxmox VE and it created conflicts making the system not work properly. For the same reason, none of the IP addresses there should be in the DHCP range of any of the DHCP servers used.

I have configured all those ports, but I don’t actually know where they are yet on the iKOOLCORE R2, so I used the command line to properly map each Ethernet port to the correct device/bridge by plugging a cable to each port in turn:

root@iKOOLCORER2CNX:~# ip a | grep ‘enp|enx’

2: enp1s0: <NOCARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq master vmbr2 state DOWN group default qlen 1000

3: enp3s0: <NOCARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq master vmbr1 state DOWN group default qlen 1000

4: enp4s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq master vmbr0 state UP group default qlen 1000

5: enx009027f41845: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000

We can check the UP and DOWN state to find out which device/bridge corresponds to a specific RJ45 jack on the mini PC. For example, enp4s0 (vmbr0) is the middle RJ45 jack in the top row.  I can now write my network and connect everything with the final result looking like that:

Proxmox VE and the pfSense WAN ports are connected directly to the modem router from the ISP, the pfSense LAN port creates a new 192.168.33.0 subnet to switch I connected the Ubuntu VM RJ45 port and a laptop through a TP-Link network switch. There’s also a CCTV camera not shown there. If you wanted WiFi devices behind the firewall you’d also install an access point/router in the 192.168.33.0 subnet.

pfSense configuration

We can now to the console for the pfSense VM to complete the configuration. We’ll skip VLAN configuration, and assign vtnet0 to WAN and vtnet1 to LAN in the configuration wizard.

After a little while we’ll reach the pfSense configuration menu as shown below. (I had not connected the WAN port correctly at the time, as otherwise the WAN IP address would show)

We can now select option 2 to configure the LAN interface using 192.168.33.1 IP address with a 24 CIDR, and no IPv6 address.

We’ll also want to enable the DHCP server and allow DHCP clients in the 192.168.33.2 to 192.168.33.200 range, and keep using HTTPS for the webConfigurator.

Once done we should see both the WAN and LAN IP address configured as below and we can update pfSense from the console by typing 13.

Time to go to the pfSense webConfiguration with the provided address and log in with the default admin username and pfsense password.

We’ll now enter the setup wizard. The dashboard complains about the admin account password, but do not change it right now, as it’s one of the steps of the setup wizard.

Now click on Next until we get to the general information window where we can set the Hostname (e.g. R2-CNX-pfSense).

The next step configures the time server and I manually set the timezone to Asia/Bangkok.

The next screens are for WAN and LAN configuration (I used the default settings), change admin password, reload configuration, and a final screen congratulating you for the completion of the setup wizard.

Both my laptop and Ubuntu VM in Proxmox got an IP address in the 192.168.33.0 subnet, I can browse the web without issue, and both systems should be protected behind the firewall. I also quickly tested the CCTV camera connected through the firewall and I can still access the stream with the Reolink app.

Networking performance testing

I’m supposed to have 300 Mbps broadband internet, which I tested with Speedtest on my Ubuntu laptop behind the firewall.

All good that means nothing bad happened…

I also added a new host to the 192.168.33.0 subnet, namely UP Xtreme i11 edge mini PC (192.168.33.18) to independently test the Intel and Realtek networking interfaces on the iKOOLCORE R2.

Let’s start with the RealTek 2.5GbE USB chip in the Ubuntu VM:

jaufranc@R2CNXUbuntu:~$ iperf3 t 60 c 192.168.33.18 i 10

Connecting to host 192.168.33.18, port 5201

[  5] local 192.168.33.12 port 51060 connected to 192.168.33.18 port 5201

[ ID] Interval           Transfer     Bitrate         Retr  Cwnd

[  5]   0.0010.00  sec  2.74 GBytes  2.35 Gbits/sec    0   3.13 MBytes      

[  5]  10.0020.00  sec  2.73 GBytes  2.35 Gbits/sec    1   3.13 MBytes      

[  5]  20.0030.00  sec  2.73 GBytes  2.35 Gbits/sec    0   3.13 MBytes      

[  5]  30.0040.00  sec  2.73 GBytes  2.35 Gbits/sec    0   3.13 MBytes      

[  5]  40.0050.00  sec  2.73 GBytes  2.35 Gbits/sec    0   3.13 MBytes      

[  5]  50.0060.00  sec  2.74 GBytes  2.35 Gbits/sec    0   3.13 MBytes      

[ ID] Interval           Transfer     Bitrate         Retr

[  5]   0.0060.00  sec  16.4 GBytes  2.35 Gbits/sec    1             sender

[  5]   0.0060.05  sec  16.4 GBytes  2.35 Gbits/sec                  receiver

 

iperf Done.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

jaufranc@R2CNXUbuntu:~$ iperf3 t 60 c 192.168.33.18 i 10 R

Connecting to host 192.168.33.18, port 5201

Reverse mode, remote host 192.168.33.18 is sending

[  5] local 192.168.33.12 port 32880 connected to 192.168.33.18 port 5201

[ ID] Interval           Transfer     Bitrate

[  5]   0.0010.00  sec  2.74 GBytes  2.35 Gbits/sec                  

[  5]  10.0020.00  sec  2.74 GBytes  2.35 Gbits/sec                  

[  5]  20.0030.00  sec  2.74 GBytes  2.35 Gbits/sec                  

[  5]  30.0040.00  sec  2.74 GBytes  2.35 Gbits/sec                  

[  5]  40.0050.00  sec  2.74 GBytes  2.35 Gbits/sec                  

[  5]  50.0060.00  sec  2.74 GBytes  2.35 Gbits/sec                  

[ ID] Interval           Transfer     Bitrate         Retr

[  5]   0.0060.04  sec  16.4 GBytes  2.35 Gbits/sec    0             sender

[  5]   0.0060.00  sec  16.4 GBytes  2.35 Gbits/sec                  receiver

 

iperf Done.

  • Full-duplex (bidirectional)

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

jaufranc@R2CNXUbuntu:~$ iperf3 t 60 c 192.168.33.18 i 10 bidir

Connecting to host 192.168.33.18, port 5201

[  5] local 192.168.33.12 port 58772 connected to 192.168.33.18 port 5201

[  7] local 192.168.33.12 port 58780 connected to 192.168.33.18 port 5201

[ ID][Role] Interval           Transfer     Bitrate         Retr  Cwnd

[  5][TXC]   0.0010.00  sec  2.73 GBytes  2.34 Gbits/sec    1   3.14 MBytes      

[  7][RXC]   0.0010.00  sec  2.54 GBytes  2.18 Gbits/sec                  

[  5][TXC]  10.0020.00  sec  2.72 GBytes  2.34 Gbits/sec    0   3.14 MBytes      

[  7][RXC]  10.0020.00  sec  2.53 GBytes  2.17 Gbits/sec                  

[  5][TXC]  20.0030.00  sec  2.73 GBytes  2.34 Gbits/sec    0   3.14 MBytes      

[  7][RXC]  20.0030.00  sec  2.53 GBytes  2.17 Gbits/sec                  

[  5][TXC]  30.0040.00  sec  2.73 GBytes  2.34 Gbits/sec    0   3.14 MBytes      

[  7][RXC]  30.0040.00  sec  2.53 GBytes  2.17 Gbits/sec                  

[  5][TXC]  40.0050.00  sec  2.73 GBytes  2.34 Gbits/sec  1134   2.79 MBytes      

[  7][RXC]  40.0050.00  sec  2.59 GBytes  2.23 Gbits/sec                  

[  5][TXC]  50.0060.00  sec  2.72 GBytes  2.34 Gbits/sec    0   3.01 MBytes      

[  7][RXC]  50.0060.00  sec  2.54 GBytes  2.18 Gbits/sec                  

[ ID][Role] Interval           Transfer     Bitrate         Retr

[  5][TXC]   0.0060.00  sec  16.4 GBytes  2.34 Gbits/sec  1135             sender

[  5][TXC]   0.0060.05  sec  16.4 GBytes  2.34 Gbits/sec                  receiver

[  7][RXC]   0.0060.00  sec  15.3 GBytes  2.18 Gbits/sec    0             sender

[  7][RXC]   0.0060.05  sec  15.3 GBytes  2.18 Gbits/sec                  receiver

 

iperf Done.

Excellent, even though the speed dropped to around 2.18 Gbps in one direction in full-duplex mode.

Let’s now switch to one of the Intel i226V interfaces (Proxmox VE via 192.168.33.249 – vmbr2 – enp1s0):

root@iKOOLCORER2CNX:~# iperf3 -t 60 -c 192.168.33.18 -i 10

Connecting to host 192.168.33.18, port 5201

[  5] local 192.168.33.201 port 47188 connected to 192.168.33.18 port 5201

[ ID] Interval           Transfer     Bitrate         Retr  Cwnd

[  5]   0.0010.00  sec  2.74 GBytes  2.36 Gbits/sec    0    669 KBytes      

[  5]  10.0020.00  sec  2.74 GBytes  2.35 Gbits/sec    0    744 KBytes      

[  5]  20.0030.00  sec  2.74 GBytes  2.35 Gbits/sec    0   1.09 MBytes      

[  5]  30.0040.00  sec  2.74 GBytes  2.35 Gbits/sec    0   1.09 MBytes      

[  5]  40.0050.00  sec  2.74 GBytes  2.35 Gbits/sec    0   1.09 MBytes      

[  5]  50.0060.00  sec  2.74 GBytes  2.35 Gbits/sec    0   1.63 MBytes      

[ ID] Interval           Transfer     Bitrate         Retr

[  5]   0.0060.00  sec  16.4 GBytes  2.35 Gbits/sec    0             sender

[  5]   0.0060.05  sec  16.4 GBytes  2.35 Gbits/sec                  receiver

 

iperf Done.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

root@iKOOLCORER2CNX:~# iperf3 -t 60 -c 192.168.33.18 -i 10 -R

Connecting to host 192.168.33.18, port 5201

Reverse mode, remote host 192.168.33.18 is sending

[  5] local 192.168.33.201 port 52794 connected to 192.168.33.18 port 5201

[ ID] Interval           Transfer     Bitrate

[  5]   0.0010.00  sec  2.74 GBytes  2.35 Gbits/sec                  

[  5]  10.0020.00  sec  2.74 GBytes  2.35 Gbits/sec                  

[  5]  20.0030.00  sec  2.74 GBytes  2.35 Gbits/sec                  

[  5]  30.0040.00  sec  2.74 GBytes  2.35 Gbits/sec                  

[  5]  40.0050.00  sec  2.74 GBytes  2.35 Gbits/sec                  

[  5]  50.0060.00  sec  2.74 GBytes  2.35 Gbits/sec                  

[ ID] Interval           Transfer     Bitrate         Retr

[  5]   0.0060.04  sec  16.4 GBytes  2.35 Gbits/sec    0             sender

[  5]   0.0060.00  sec  16.4 GBytes  2.35 Gbits/sec                  receiver

 

iperf Done.

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

root@iKOOLCORER2CNX:~# iperf3 -t 60 -c 192.168.33.18 -i 10 –bidir

Connecting to host 192.168.33.18, port 5201

[  5] local 192.168.33.201 port 33410 connected to 192.168.33.18 port 5201

[  7] local 192.168.33.201 port 33412 connected to 192.168.33.18 port 5201

[ ID][Role] Interval           Transfer     Bitrate         Retr  Cwnd

[  5][TXC]   0.0010.00  sec  2.73 GBytes  2.35 Gbits/sec    0   1.02 MBytes      

[  7][RXC]   0.0010.00  sec  2.73 GBytes  2.34 Gbits/sec                  

[  5][TXC]  10.0020.00  sec  2.73 GBytes  2.35 Gbits/sec    0   1.02 MBytes      

[  7][RXC]  10.0020.00  sec  2.73 GBytes  2.34 Gbits/sec                  

[  5][TXC]  20.0030.00  sec  2.73 GBytes  2.35 Gbits/sec    0   1.53 MBytes      

[  7][RXC]  20.0030.00  sec  2.73 GBytes  2.34 Gbits/sec                  

[  5][TXC]  30.0040.00  sec  2.73 GBytes  2.35 Gbits/sec    1   1.07 MBytes      

[  7][RXC]  30.0040.00  sec  2.73 GBytes  2.34 Gbits/sec                  

[  5][TXC]  40.0050.00  sec  2.73 GBytes  2.35 Gbits/sec   43   1.13 MBytes      

[  7][RXC]  40.0050.00  sec  2.73 GBytes  2.34 Gbits/sec                  

[  5][TXC]  50.0060.00  sec  2.73 GBytes  2.35 Gbits/sec    0   1.70 MBytes      

[  7][RXC]  50.0060.00  sec  2.73 GBytes  2.34 Gbits/sec                  

[ ID][Role] Interval           Transfer     Bitrate         Retr

[  5][TXC]   0.0060.00  sec  16.4 GBytes  2.35 Gbits/sec   44             sender

[  5][TXC]   0.0060.04  sec  16.4 GBytes  2.35 Gbits/sec                  receiver

[  7][RXC]   0.0060.00  sec  16.4 GBytes  2.34 Gbits/sec    0             sender

[  7][RXC]   0.0060.04  sec  16.4 GBytes  2.34 Gbits/sec                  receiver

 

iperf Done.

Perfect. Both the RealTek and Intel interfaces are working well, but the Intel i226V controller works slightly better in full-duplex mode.

Ubuntu 22.04  benchmarks and features testing in Proxmox VE

The networking part is done with pfSense firewall and up running, and the 2.5GbE interfaces of the iKOOLCORE R2 are shown to perform up to our expectations. I will now check whether Ubuntu 22.04 works as well in Promox VE as natively by both running benchmarks and testing some features.

Let’s start by running SBC Bench 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

jaufranc@R2CNXUbuntu:~$ sudo ./sbcbench.sh r

Starting to examine hardware/software for review purposes...

 

sbcbench v0.9.59

 

Installing needed tools, cpuminer. Done.

Checking cpufreq OPP. Done.

Executing tinymembench. Done.

Executing RAM latency tester. Done.

Executing OpenSSL benchmark. Done.

Executing 7zip benchmark. Done.

Throttling test: heating up the device, 5 more minutes to wait. Done.

Checking cpufreq OPP again. Done (13 minutes elapsed).

 

Results validation:

 

  * No swapping

 

Full results uploaded to http://sprunge.us/wOWOLV

 

# Standard PC (i440FX + PIIX, 1996) kvm/QEMU VM

 

Tested with sbcbench v0.9.59 on Tue, 19 Dec 2023 12:03:55 +0700. Full info: [http://sprunge.us/wOWOLV](http://sprunge.us/wOWOLV)

 

### General information:

 

    i3N300, Kernel: x86_64 / kvm, Userland: amd64

    

    CPU sysfs topology (clusters, cpufreq members, clockspeeds)

                     cpufreq   min    max

     CPU    cluster  policy   speed  speed   core type

      0        0        0                  i3N300

      1        0        0                  i3N300

      2        0        0                  i3N300

      3        0        0                  i3N300

      4        0        0                  i3N300

      5        0        0                  i3N300

      6        0        0                  i3N300

      7        0        0                  i3N300

 

3891 KB available RAM

 

### Clockspeeds (idle vs. heated up):

 

Before:

 

    cpu0: Measured: 3781

 

After:

 

    cpu0: Measured: 3779

 

### Performance baseline

 

  * memcpy: 11315.1 MB/s, memchr: 17750.4 MB/s, memset: 10613.9 MB/s

  * 16M latency: 131.4 124.8 130.9 125.7 130.7 108.9 103.7 109.4

  * 128M latency: 141.5 141.3 141.8 140.9 141.2 130.3 122.2 123.5

  * 7zip MIPS (3 consecutive runs): 22363, 22419, 22564 (22450 avg), singlethreaded: 4080

  * `aes256cbc     901939.58k  1312635.61k  1357618.77k  1365799.59k  1371286.19k  1372389.38k`

  * `aes256cbc     903119.93k  1310872.34k  1355180.54k  1365037.06k  1370802.86k  1371755.86k`

 

### Storage devices:

 

  * 128GB Virtual disk: /dev/sda, Driver=virtiopci

 

### Swap configuration:

 

  * /swapfile on /dev/sda2: 3.8G (1.3M used)

 

### Software versions:

 

  * Ubuntu 22.04.3 LTS

  * Compiler: /usr/bin/gcc (Ubuntu 11.4.01ubuntu1~22.04) 11.4.0 / x86_64linuxgnu

  * OpenSSL 3.0.2, built on 15 Mar 2022 (Library: OpenSSL 3.0.2 15 Mar 2022)    

 

### Kernel info:

 

  * `/proc/cmdline: BOOT_IMAGE=/boot/vmlinuz6.2.039generic root=UUID=18abae82acb6446bbb19da0a88ae5671 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.039generic / CONFIG_HZ=250

 

All known settings adjusted for performance. Device now ready for benchmarking.

Once finished stop with [ctrl][c] to get info about throttling, frequency cap

and too high background activity all potentially invalidating benchmark scores.

All changes with storage and PCIe devices as well as suspicious dmesg contents

will be reported too.

 

Time      CPU n/a    load %cpu %sys %usr %nice %io %irq   Temp

12:03:55: n/a MHz    6.92   0%   0%   0%   0%   0%   0%      °C  

Since we are in a virtual machine, the temperature and CPU frequency testing does not seem to work with sbc-bench.sh. Due to time constraints, I won’t try to reproduce the results in a native Ubuntu installation, we can use the results from the Weibu N10 (Core i3-N305) mini PC review for reference.

[Update: Since Proxmox VE is Debian-based we can run sbc-bench.sh natively as well. I did it while the Ubuntu 22.04 and pfSense VM were running (and mostly idling) for a direct comparison with the results above

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

root@iKOOLCORER2CNX:~# ./sbc-bench.sh

 

Average load and/or CPU utilization too high (too much background activity). Waiting...

 

Too busy for benchmarking: 16:20:55 up  2:31,  1 user,  load average: 0.32, 0.20, 0.13,  cpu: 1%

Too busy for benchmarking: 16:21:00 up  2:31,  1 user,  load average: 0.29, 0.20, 0.13,  cpu: 1%

Too busy for benchmarking: 16:21:05 up  2:31,  1 user,  load average: 0.27, 0.19, 0.13,  cpu: 1%

Too busy for benchmarking: 16:21:10 up  2:31,  1 user,  load average: 0.25, 0.19, 0.13,  cpu: 1%

Too busy for benchmarking: 16:21:15 up  2:31,  1 user,  load average: 0.31, 0.20, 0.13,  cpu: 1%

Too busy for benchmarking: 16:21:20 up  2:31,  1 user,  load average: 0.28, 0.20, 0.13,  cpu: 2%

 

sbcbench v0.9.59

 

Installing needed tools: apt f qq y install gcc make buildessential lmsensors sysstat lshw powercaputils p7zip, tinymembench, ramlat, mhz, cpufetch. Done.

Checking cpufreq OPP. Done (results will be available in 710 minutes).

Executing tinymembench. Done.

Executing RAM latency tester. Done.

Executing OpenSSL benchmark. Done.

Executing 7zip benchmark. Done.

Checking cpufreq OPP again. Done (7 minutes elapsed).

 

Results validation:

 

  * Measured clockspeed not lower than advertised max CPU clockspeed

  * Swapping occured -> https://tinyurl.com/3h222wnh

  * Background activity (%system) OK

  * Too much other background activity: 1% avg, 3% max -> https://tinyurl.com/mr2wy5uv

  * Powercap detected. Details: “sudo powercap-info -p intel-rapl” -> https://tinyurl.com/4jh9nevj

 

Memory performance

memcpy: 11026.0 MB/s

memset: 10958.8 MB/s

 

7zip total scores (3 consecutive runs): 23101,23268,23246, singlethreaded: 4238

 

OpenSSL results:

type             16 bytes     64 bytes    256 bytes   1024 bytes   8192 bytes  16384 bytes

aes128cbc    1102858.52k  1669343.42k  1826090.41k  1871562.07k  1887881.90k  1891341.65k

aes128cbc    1109703.91k  1668637.65k  1825153.11k  1874709.85k  1888168.62k  1889391.96k

aes192cbc    1075252.71k  1430323.09k  1544505.69k  1582064.30k  1590981.97k  1591208.62k

aes192cbc    1077114.43k  1432635.11k  1544703.15k  1580479.15k  1592300.89k  1590476.80k

aes256cbc     960164.45k  1255560.21k  1339470.51k  1365235.37k  1374281.73k  1374366.38k

aes256cbc     960240.39k  1254501.72k  1339013.97k  1364885.50k  1374461.95k  1376299.69k

 

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.

The full test results can be found on pastebin.com. The native results are only very slightly higher than in the Ubuntu VM as expected]

iKOOLCORE R2 got 22,450 points in 7-zip on average, while the Weibu N10 reached up to 20,000 points, and the AES-256 results are 1371755.86k vs 1377211.73k. The results are in the same ballpark, so if there’s any impact on performance due to running Ubuntu 22.04 in Proxmox VE it does not show in sbc-bench.sh…

But that’s still a headless test, so let’s run Unigine Heaven Benchmark 4.0 to test the GPU at 1920×1080 resolution.

It worked fine, and the performance looks OK considering the Weibu N10 achieved 17.9 fps and a score of 451 points in the same test.

I’ve already tested USB ports with the RF dongles, and HDMI and USB-C video output by connecting the CrowView laptop monitor to either. But I haven’t tried to connect two displays just yet. Let’s do that by adding the 10-inch RPI “All-in-One” display.

It works! Here’s the screenshot of the two displays for reference.

I then played a YouTube 4Kp60 video in Firefox that looked smooth, but there were a few frames dropped (770 out of 11,618).

There was no audio through HDMI though, and when I looked at the audio settings I could only see a digital output (S/PDIF) audio device with the volume varying while playing the video. It’s probably outputting to the USB-C audio port, but I have no idea how to use it as there’s no information about it in the Wiki.

It’s probably possible to enable HDMI audio by adding one or more raw PCIe devices to the Proxmox VE configuration, but again it’s not clear which one to select…

Here’s a final storage benchmark to evaluate the SSD performance:

jaufranc@R2CNXUbuntu:~$ sudo 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: linuxAMD64

 

                                                              random    random     bkwd    record    stride                                    

              kB  reclen    write  rewrite    read    reread    read     write     read   rewrite      read   fwrite frewrite    fread  freread

          102400       4    71747    81129    72689    71015    31129    76241                                                                

          102400      16   235112   245085   198403   191845   115866   265999                                                                

          102400     512  1038676  1094485   977397  1006340   914327   973856                                                                

          102400    1024  1193902  1097994  1126587  1146786  1129907  1127664                                                                

          102400   16384  1383684  1265712  1588750  1633476  1635562  1440625                                                                

 

iozone test complete.

That would be a 1.58 GB/s sequential read speed and 1.38GB/s sequential write speed in the Ubuntu VM.

Power consumption

The iKOOLCORE R2 will consume more power than your usual Alder Lake-N mini PC since you may have four 2.5GbE connections. I measured the power consumption with a wall power meter with the mini PC having all four 2.5GbE active, two RF dongles for the keyboard and mouse, and a display connected via HDMI with its own power supply:

  • Power Off – 2.2W (after issuing shutdown in Proxmox VE)
  • Idle – 13.4 to 14.1 Watts
  • YouTube Video  (4Kp60 in Firefox) –  31.2 to 35.2 Watts
  • Stress test (stress -c 8) – 30.0 to 31.3 Watts

Conclusion

Reviewing the iKOOLCORE R2 was an interesting and challenging experience, as I did not have any experience with Proxmox VE and pfSense, and the learning curve was such that I estimate having spent over 25 hours on this three-part review.

The Intel Core i3-N300 device can be used simultaneously as a mini PC running Ubuntu 22.04 (or Windows 11, or other desktop OSes) and a firewall or network appliance with an OS such as pfSense. Once configured correctly the little dual-use device works great, and I found 2.5GbE networking to work great, and most Ubuntu 22.04 Desktop features work great through Proxmox VE, with no obvious impact on performance, except for audio where I was unable to make HDMI audio work, and it’s unclear how we are supposed to use the USB-C audio port.

I’d like to thank iKOOLCORE for sending the R2 mini PC / router for review in a configuration with an Intel Core i3-N300 octa-core processor, 8GB RAM, and a 512GB NVMe SSD. The iKOOLCORE R2 model reviewed here can be purchased for $389 on the iKOOLCORE store, and you should be able to use the CNXSOFT coupon to lower the price by 5%. Pricing currently starts at $239 for the N95 model with 8GB RAM and no storage.

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.

You May Also Like

More From Author