blog topics: BGP · IPv6 · more · my publications · my business: inet⁶ consult · contact: Twitter · LinkedIn · email

Mac Mini 2018/2020 review (posted 2020-04-28)

Two weeks ago, I ordered a Mac Mini, my first desktop computer in 20 years. This is sort of a review of the Mac Mini, but I reserve the right to digress.

In 2002, I got my first Mac. And over the years a few more. This is the full list:

These laptops were and are great in many ways. Especially the 2013 one, which was basically perfect at the time except that it can't drive a 4K monitor at 60 frames per second, as well as the 2016 one, with its amazing screen. Still, I decided it was time for a desktop computer.

Hooking up a laptop to an external screen, keyboard, mouse and so on of course works fine. But it's still a laptop, so the cables attach at inconvenient places and there's always a tradeoff between a good desk setup vs a good on-the-go setup.

Also, recently I've been running virtual routers in VirtualBox VMs, and for that, a fixed setup where the computer doesn't forget about its wired Ethernet interface when it sleeps is much better. Last but not least, my newest computer was 3.5 years old, so it was time for some succession planning.

Note that although Apple says the Mac Mini is new, it's the exact same model that was introduced in 2018, the only difference is that the default SSD sizes have gone up.


In the box, there's just the Mac Mini itself and a power cable. It does have a (tinny sounding) built-in speaker, but all other I/O must either go over Wi-Fi or bluetooth, or through the following ports:

100 - 240 V power (no power brick, yay!) Ethernet 4 x Thunderbolt 3 / USB-C ports HDMI 2.0 2 x USB type A 3.5 mm headphone jack

The USB-C ports support up to 40 Gbps Thunderbolt and up to 10 Gbps USB3 as well as DisplayPort-over-USB-C for two displays with a resolution up to 4K, or one 5K display. The USB-A ports "only" support USB3 speeds up to 5 Gbps. The HDMI port supports a 4K display in addition to the display(s) hooked up through USB-C for a total of 3 x 4K or lower, or one 4K and one 5K display. The headphone jack supports a microphone and a clicker as we've become to expect since the introduction of the iPhone 3GS in 2009.

So at a minimum, you have to bring your own keyboard, mouse or trackpad and monitor to use the Mac Mini.


Obviously, battery life is zero. In normal use, the Mac Mini uses around 15 Watts. When it's asleep, this drops down to 3.8 W. For many years, Mac laptops has a sleep indicator light. Then Apple removed that light from the laptops. This Mac Mini does have a small white light which comes on when you start the computer, but it stays on when the Mini sleeps.

When the computer sleeps, my USB keyboard powers down so I can't wake it up by pressing a key. Pressing a mouse button will do it, but another way is a quick press of the power button on the back of the Mini. A longer press will put the computer to sleep, and a very long press performs a hard power down. (I assume. I didn't test this.) Obviously when the computer is turned off, pressing the power button starts it up.


I don't expect to be buying a new desktop computer any time soon, so I thought about getting a Mac Mini with a beefier CPU to get a few more years of use out of this one. In the end I decided against that, as the prices go up quickly, and computers are plenty fast these days. Also, with the base model CPU, the machine will run cooler and quieter. I did upgrade the RAM to 16 GB to be able to run a bunch of virtual machines comfortably. You can actually replace the RAM yourself on the Mac Mini, but after recent surgery on a Time Machine Wi-Fi base station, I broke the LED cable so I didn't want to take any risks with a new computer. For some years, I've been complaining about the fact that I've had Gigabit Ethernet in my 2003 PowerBook and since then, networking hasn't gotten any faster, so I did spend the extra 125 euros to upgrade the Ethernet port to a 10 GE one. More about that later.

So how fast is that base model 4-core Intel Core i3? These are the benchmarks I ran on the Mac Mini and my 2013 and 2016 MacBook Pros. Remember, the 2013 MacBook Pro has two cores, the 2016 MBP and the Mac Mini have four cores. The MBPs have hyperthreading but the Mac Mini does not.

2013 MBP 2016 MBP 2020 Mac Mini
GB5 singe core 706 811 903
GB5 multicore 1526 3385 3405
GB5 OpenCL - 4307 / 10072 4650
GB5 Metal 466 4253 / 11258 2137
Cinebench 610 1576 1403
Fibonacci 130 s 117 s 102 s
Handbrake short 82 s 33 s 37 s
Handbrake long 4025 s 1689 s 1856 s

(The first number in the Geekbench 5 OpenCL and Metal results for the 2016 MBP is the score with the Intel 530 graphics, the second number with the Radeon Pro GPU.)

I find it hard to interpret the GPU-related benchmarks, not in the least because there's little information on how they work. But one thing is for sure: the 2016 machine wipes the floor with the Mac Mini and even more so with the 2013 one.

The single core Geekbench score matches the results from a little Python script that calculates the three millionth Fibonacci number. Here the progression from 2013 to 2016 to 2020 (well, 2018 really) is roughly an improvement of 10% each time. So the Mac Mini is a bit faster than the 2016 MacBook Pro for single-threaded tasks.

The 2013 machine of course does quite poorly on the multithread tasks because it only has two cores. The Geekbench multicore score for the 2016 and 2020 machines is almost identical, but in real-world video encoding tests the 2016 MacBook Pro is about 10% faster.

However, that extra MacBook Pro performance isn't free. With the Intel Power Gadget we can see that after a minute or so the CPU hits a maximum temperature of 100 ℃, and the fans start moving large amounts of air, which is somewhat loud. The Mac Mini, on the other hand, hits just over 90 ℃ and stays there, remaining inaudible as a modest stream of warm air leaves the back vent. The machine itself gets pretty warm, but not hot.

This means that it's no problem at all to let the Mac Mini number crunch in the background for extended periods of time. Doing that on the MacBook Pro keeps making me want to ask "are you still doing ok there, buddy?"

Networking: Thunderbolt

Yay, my first computer with 10 Gigabit Ethernet! But actually, there's four other ports that are even faster: the Thunderbolt 3 ports. Those can go up to 40 Gbps with the right (short) cable, 20 Gbps over longer ones. (Be sure you're buying the right cables, though, as not every USB-C cable can even handle USB3 speeds, and I'm still not sure if there are USB-C cables that do support USB3 but not Thunderbolt.)

It's really noticeable that the USB-C ports fit much tighter on the Mac Mini than on the 2016 MacBook Pro. On the latter, it's very easy to dislodge a USB-C cable. On the Mac Mini, on the other hand, you really have to push them in hard and then they click into place. And you'll have use some force to pull them back out.

When I hook up my 2016 MacBook pro to the Mac Mini with a 20 Gbps USB-C cable, first of all the MBP starts charging off of the Mac Mini. These USB-C ports are supposed to be able to provide 15 W, but it looked more like 10 W to me. So when idle, the MBP can actually slowly charge its battery, but most of the time the MBP will dip into its battery in addition to taking power from the Mini.

On machines with four Thunderbolt ports, like this Mac Mini and my 2016 MacBook Pro, there are four Thunderbolt ports, two Thunderbolt buses and one "Thunderbolt Bridge" network interface. Interestingly, the Thunderbolt Bridge interface bridges all four ports rather than the two buses. Apple warns that it the two left and two right USB-C ports share a bus, and it's best to hook up two displays to ports belonging to different buses. Thunderbolt networking speed doesn't seem to vary with the presence or absence of a 4K DisplayPort connection on the same bus.

I hooked up both MacBook Pros to the Mini with Thunderbolt, the old one using a TB2 - TB3 converter. In both cases the Mac Mini reports the bandwidth as 20 Gbps. However, Iperf reports about 6 Gbps to/from the 2013 MacBook Pro and up to 15 Gbps between the 2016 MacBook Pro and the Mac Mini. Traffic between the two MBPs through the MM is a little faster if they're connected to ports that share a TB bus on the Mac Mini, and the Mini's CPU use is a bit lower in that case.

Networking: the 10 GE port

It's always so disappointing to have a new or faster port, but nothing that uses the new capabilities to connect to. It would have been really sweet to have a 10 GE port on my NAS and start enjoying extremely fast file transfers. But this Mac Mini is the first device I have that has Ethernet beyond 1 Gbps. Thunderbolt networking being so cheap and easy also reduces the need to upgrade other computers. But if I can manage to write about more than one 10/100/1000 Ethernet adapter, obviously I can find something to say about my first 10 GE NIC (network interface card).

The default Mac Mini configuration is with a 10/100/1000 Mbps Ethernet port. I paid € 125 extra to get the 100/1000/2500/5000/10000 Mbps port. So we gain gain 2.5, 5 and 10 Gbps Ethernet capability. 2.5 and 5 GE compatibility is especially useful because those speeds are less demanding of the UTP cabling, so you still get some extra speed without rewiring existing cat 5e installs.

Not only do we lose compatibility with the original 10 Mbps Ethernet, but also half duplex operation at 100 Mbps. In theory, you can have half duplex at 1000 Mbps, but in practice nobody implements this. None of this worries me; worst case you'd have to spend €/$ 20 or so for a small 10/100/1000 Mbps switch to replace an aging 10 Mbps hub. (However, I would be sad if switches with 10 Mbps half duplex capability went away, I still have some old machines that can't go any faster than this.) Also note that some cheap 10/100/1000 adapters don't support half duplex operation either. That makes no sense to me, as very few devices that top out at 10 Mbps can do full duplex. So either drop 10 Mbps completely or support it completely.

These are the port's capabilities as reported by the ifconfig -m command (I edited out the word "mediaopt" and the full duplex capability):

% ifconfig -m en0
en0: flags=8863 mtu 1500
    media: autoselect (1000baseT )
    status: active
    supported media:
        media none
        media autoselect
        media 100baseTX 
        media 100baseTX flow-control
        media 1000baseT 
        media 1000baseT flow-control
        media 2500Base-T 
        media 2500Base-T flow-control
        media 2500Base-T energy-efficient-ethernet
        media 2500Base-T flow-control energy-efficient-ethernet
        media 5000Base-T 
        media 5000Base-T flow-control
        media 5000Base-T energy-efficient-ethernet
        media 5000Base-T flow-control energy-efficient-ethernet
        media 10Gbase-T
        media 10Gbase-T flow-control
        media 10Gbase-T energy-efficient-ethernet
        media 10Gbase-T flow-control energy-efficient-ethernet

As expected, the interface supports checksum offloading and TCP segmentation offloading. TSO is important at high speeds so the software can simply deliver a huge packet to the network hardware, which then splits it into 1500-byte packets, the maximum size as per the Ethernet specification. The opposite happens for incoming packets. TSO has reduced the need for larger packet sizes greatly. Of course larger maximum packet sizes are supported anyway: unless the speed is 100 Mbps, the MTU can be set as high as 16000 bytes. (I wouldn't recommend anything larger than around 11k because after that, the strength of the Ethernet CRC32 that is used to detect errors goes down.)

Some previous Ethernet adapters supported Energy Efficient Ethernet at 100 and 1000 Mbps, but apparently this NIC is already at peak power efficiency at 1000 Mbps, so EEE is only supported at higher speeds.

It's amazing how poorly this stuff is documented, but it seems that the AV capability refers to audio/video bridging and CHANNEL_IO refers to multiqueue.

The NIC also seems to support a function that isn't mentioned at all: a built-in sleep proxy. For about a decade now, MacOS has had the ability to automatically wake up a computer when there is an incoming network request. This means you can run a services, including, but certainly not limited to iTunes home sharing, and still let the computer sleep most of the time. I've been using my ancient 2007 MacBook Pro as an iTunes server, and the this feature was never super reliable, but gradually stopped working completely a year or two ago.

The way this feature normally works is that an Airport base station or an Apple TV is a "sleep proxy". When the computer goes to sleep, the sleep proxy notices when there are incoming network requests sent to the sleeping computer and then sends a Wake-On LAN or Wake-On-WLAN packet and the network interface wakes up the computer to handle the request.

Turns out that some NICs actually have a built-in sleep proxy. And this is one of them. With all the sleep proxies in the house turned off and the Mac Mini sound asleep, it would still respond to pings and wake up for network access. Very cool. And accessing audio/video content on the Mini from the Apple TV works with reasonable reliability.

I turned off "wake for network access" in order to see how much power that would save. But... when the computer goes to sleep it turns off the NIC, and immediately turns it back on again.

VLANs and virtualization

Since 2003, I've been doing BGP training courses. After telling the participants about BGP in the morning, they do BGP configuration exercises in the afternoon. At the NL-ix office, we still use real Cisco routers for this, but some years ago, I created a system with Quagga routing software in virtual machines under VirtualBox. The IP configuration was always messy, with four IP addresses on a single Ethernet interface. Recently, it finally occurred to me that I could solve this with VLANs.

So now the VMs have several VLANs that they use to talk to each other. All these VLANs are set up on a single interface in the VM that is bridged to the computer's actual Ethernet interface. The interesting thing is that everything, including my cheap unmanaged 10/100/1000 switch, passes along the resulting packets with VLAN tags without issue, so VMs on different computers can actually talk to each other this way. And then I just add a VLAN interface under MacOS in order to be able to connect to these VMs easily, with a command like:

sudo ifconfig vlan203 create vlan 203 vlandev en0

(Or set up a VLAN interface permanently through the System Preferences.)

That all worked very well. On some Ethernet hardware, at least. I originally tried this with the cheap USB-C adapter (the one that doesn't do half duplex) and also checked on Apple's USB 10/100 adapter. But when I switched to the Apple Thunderbolt 10/100/1000 adapter, and then this setup stopped working. This adapter has the capability "VLAN_HWTAGGING", so I assume the NIC processes the VLAN tag in some way that creates problems.

The Mac Mini's NIC doesn't have (or at least list) the VLAN hardware tagging capability, and the behavior is different than what I've seen from all the other adapters: the VLAN virtual interface on MacOS has no issues talking to other systems, and neither do the VLAN virtual interfaces within the VM. They just can't talk to each other. Weird.

By the way, it's possible to set up jumboframes (a larger MTU size such as 9000 bytes) for just the VLAN virtual interface and not for the physical interface through System Preferences. This way, it's possible to have systems that support jumboframes to use those between them, without creating issues for the communication with systems that don't support jumboframes. Perhaps this will come in handy when I have more computers with 2.5/5/10 GE, but at 1 GE performance is already at the upper limit anyway.

Final thoughts

Obviously, the Mac Mini comes with MacOS 10.15 "Catalina" installed. My MacBook Pros are still on 10.14, as I didn't want to lose compatibility with 32-bit applications, and there are software quality as well as security nagging issues with 10.15. However, Catalina on the Mac Mini hasn't been a disaster. There are actually one or two nice new features, such as authorizing actions with the Apple Watch rather than typing your password, as well as automatically switching between light and dark mode.

One thing I don't get is why Apple removed the ability to change the columns in the mail overview (sub) window. This is exceedingly annoying and I can't think of any benefits this change could possibly have.

Most of the time, the security popups were fine, although a few seem a bit too much, such as having to give permission for an application to use a USB flash drive. However, this is a new machine and I didn't transfer any old settings or applications, making the potential for problems relatively small. My thinking was that if 10.15 was really problematic, I could probably install 10.14 on this machine, as it's basically a 2018 model so all the drivers should be in 10.14. But I think I'll stick with 10.15 on this machine. However, I'm in no hurry to upgrade my existing laptops that are still on 10.14.

The one real limitation of this machine is that it has relatively weak integrated graphics. I rarely, if ever, run applications that require GPU horse power, so for me this is not an issue. And there is always the option to hook up an external GPU over Thunderbolt.

After using it for a week, I really like this small desktop computer that's set up to stay firmly in place and is connected to its peripherals on a permanent basis. I'm happy that I chose the slowest Mac Mini, as performance and responsiveness are still excellent, and I get to run video encodes and similar tasks in the background without hearing any fans.

by .

Archives: 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021