If you’ve been tracking my homelab adventures, you’ll know that I’ve been on the lookout for a small, powerful, and quiet Ryzen desktop and mini-server. I’ve been using a Ryzen 7 5700U
-based laptop for almost three years now and it’s been a great experience, but I wanted to explore the desktop side of things, especially since my meanderings into edge computing have shown that ARM
-based servers are at an interesting inflection point for running small AI models, and I just had no real data on AMD
’s capabilities in that space.
Ryzen-based mini-PCs have been around for a while, but the previous generation of mobile processors (like the 4700U
and 5700U
) never quite managed to get traction in that space. Now, with Intel leaving the NUC
segment to its licensees and a resurgence of interest in small, powerful desktops with good integrated GPU
s (thanks in large part to the Steam Deck and its custom APU
), there’s a lot of possibilities to explore.
The Quest
In short, I was looking for something that had a better iGPU
and could handle virtualization workloads without excessive power consumption, since my experiences with borg
and the U59 has shown me that Intel CPUs have spread out into extremes where they either consume too much power for the performance they deliver or are just built too cheaply.
So when I stumbled upon the AceMagic AM18 and saw that it was based on the 7840HS
–a 4nm process, 8C/16T processor that can go up to 5.1GHz–I decided to give it a try.
Disclaimer: AceMagic sent me a review unit (for which I thank them), and this article follows my Review Policy. Also, as usual, I purposely avoid doing any detailed price comparisons.
The Plan, and a Change of Plans
However, with ollama
starting to support AMD graphics this week and my having some trouble in (and lack of time for) dealing with ROCm
and ZLUDA
, I decided to split this review in two:
- This post focuses on the hardware and a little detour through the Linux gaming experience (let’s admit it, I need a little fun)
- A second piece (that is about 1/3rd done, but struggling to get finished due to several challenges with
ROCm
) will circle back to the AI and homelab side of things
So let’s get started.
Hardware
The AceMagic AM18 is, as you would expect, nice and compact, following the usual NUC
-like flattened cube form factor with ports on the front and back. It’s a bit larger than a NUC
and has a large cooling fan on top, but it’s small enough to fit under a monitor or under a TV (which is actually where I kept it the week it arrived).
The model I received had the following specs:
- AMD Ryzen 7 7840HS (4 nm, 8C/16T, turbo up to 5.1 GHz)
- 32GB
DDR5
RAM
(in a nice dual-channel configuration using CrucialCT16G56C46S5.M8D1
SODIMM
s, rated for 5600MT/s, and, interestingly enough, mentioned by Crucial as having on-dieECC
support) - 512GB M.2 2280
NVME
SSD (in a PCIe 4.0 slot) that identifies itself as aRS512GSSD710
from TenaFe and (unusually for mini-pcs) has a built-in temperature sensor. - 4x
USB-A
3.0 ports (two in the front, two in the back. Confusingly, the back ones are black and the front ones are blue) - Three display connectors (
USB-C
in the front,HDMI
andDisplayPort
in the back–I would have preferred twoHDMI
ports, but they are all rated for 8K@60Hz, and use the amusingly named “Pink Sardine”AMD
chipset.) - An internal M.2
RTL8852BE
Wi-Fi 6/Bluetooth 5.2, which sits underneath theSSD
. - 2 Ethernet ports (2.5Gbit/s and 1Gbit/s, both Intel chipsets)
- A beefy external
USB-C
100WPSU
, rated at 20V/5A.
The front also has a TTRS
audio jack and a power button. There are no Kensington lock slots, which might deter business users, but the machine is small enough to be easily hidden away.
I also got a VESA
mount, display cables, etc., but, interestingly, no SATA
cables or brackets–the reason for that only became clear when I opened up the machine:
Internals
The machine is relatively easy to open for cleaning and expansion–the top four decorative screws provide easy access to the fan for cleaning (but not removal), whereas (sadly) you need to remove the rubber feet to get at the bottom screws that allow you to pop the bottom cover.
Once you remove the bottom, it’s easy to see why there is no SATA
cable supplied–the single NVME
slot is all that you get for storage expansion, and even though the plastic is moulded to hold a 2.5” drive, the bottom fan is mounted in that slot.
It’s not necessary to remove the internal bracket to access the Wi-Fi card, but I did it anyway, and it revealed the CMOS
battery, a UART
header tucked near the USB
ports (which seems really interesting to play with later) and a (pinless) debug header, plus a red CMOS
clearing jumper and assorted wiring.
Before you ask (since I have purposefully delayed mentioning it), the RGB
lighting can be controlled only via the front button, and can fortunately be turned off entirely.
I did find the white setting to quite useful when trying to work around the machine under my TV, and I suspect it will come in even handier when I move it to my server closet.
Software and BIOS
Settings
The machine arrived with a basic Windows 10 Home install that has been customized to (at least) include some chipset drivers and Google Chrome:
I am not a fan of anything being added to the Windows images except drivers (and AceMagic has recently had to change their base images), but I understand that there are markets where this is a requirement or preference. I did not find anything wrong with the install, but since I need at least Windows Pro for working and my plan was to use it as a Linux machine, I wiped the install and set up Bazzite on the internal SSD
, and then later replaced the internal SSD
with a 1TB one to run Proxmox (which I will write about in a follow-up post).
I did, however, take a look at the BIOS
settings, and found them to be quite comprehensive:
Things I liked to see, and intend to use in a server configuration:
- AC Power resume
- Wake-on-Lan and RTC wake
- Power Configuration and Limits
- Basic fan curve control
PXE
bootIOMMU
andPCIe
features
Unlike my 5700U
machine, I did’t see any obvious way to pre-allocate RAM to the iGPU
, but I suspect that’s just because it is a different chipset.
If you’re curious, I have an annex with the output from sensors
and lshw
that I am using as a basis for tweaking the Proxmox setup I’ll be posting about in the second part of this review.
Linux Gaming
Since the machine arrived on a day when I had not a whit of clear desk space in my office on account of my testing another 3D printer it went directly to my living room, where I plugged it into a power monitoring socket next to my TV.
Linux setup was as easy as installing the bazzite-gnome-deck
spin of Bazzite, rebooting, and then setting the resolution to 1080p–and after going through the initial install wizard and configuring Steam, it felt pretty much like any game console would.
A pleasant surprise was that the M780
iGPU
detected my TV without any issues–it is a relatively old LG
that goes up to 4K 120Hz with HDR
support, and I was able to set it at anywhere between 1080p/60Hz to 4K/120Hz without any issues.
I eventually trimmed it down to 1080p/120Hz to make sure I could get a decent frame rate–the AMD
Radeon M780
iGPU
can handle the full resolution for regular desktop work, but there was no point in harming the gaming experience1.
I then paired an Xbox controller via Bluetooth, and started downloading my Steam library.
Wi-Fi, Power Consumption and Noise
That helped me get an early start on testing power consumption and Wi-Fi speeds–impressively, it was able to download my Steam library at a peak 480Mbps, which is only slightly less what my streaming server gets on a wired Gigabit connection–and I don’t have Wi-Fi 6 in my house yet:
The power consumption was also quite good, and I was able to measure it at various loads:
Operating System | Power (W) | Notes |
---|---|---|
Bazzite (Fedora 39) | 60.3 | Gaming (Steam, average over the games listed) |
50.9 | Steam downloads over Wi-Fi |
|
45.6 | Gaming (Emulation) |
|
21.7 | Booting |
|
11.2 | Idle, TV/display on |
|
0.1 | Suspend |
This will, of course, be expanded upon in the server part of this review, but I was quite pleased to see that the machine was able to idle at around 12W and consume less than 100W under heavy load.
As to noise, and being extraordinarily fan-averse to the point of preferring streaming over local gaming, I was quite pleased to find that the fan was generally barely audible even when gaming, and I could only notice it for a few seconds at a time when under heavy load.
But I did place the machine squarely under the center speaker of my audio setup, so it was a bit of a moot point–I suspect it would be more noticeable (and annoying) if I had it right beside me–but I will eventually do more detailed measurements when I get around to posting the server part of this review.
The good thing is that tweaking the fan curves in the BIOS
is a feasible option on this machine–plus the sheer size of the top fan (in mini-PC terms, it’s pretty massive) means that it is relatively quiet and completely non-whiny even when running at full speed.
Game Compatibility and Emulation
Throughout that first week I installed a few games and emulators to test over the evenings, and was able to play a few hours of Halo Infinite, Borderlands 3, Hades and Stray without any issues.
I also synced my RetroDECK setup and experimented with a few emulators, and everything worked fine other than dual control presses in the 8bitdo Ultimate Controller I tried to use for a particular game–but that’s just the combination of a couple of rough edges in Bazzite and RetroDECK.
As you’d expect, everything flagged as Steam compatible “just worked”. I only had trouble with Horizon: Zero Dawn, which is known to be fickle and does work on my streaming setup, but I suspect it’s just a matter of getting a few more Proton/AMD
updates down the line:
I also emulated that which cannot be named anymore on the very evening it was rendered extinct, and it was… glorious, both in 1080p and in 4K (although I think the M780
is smack in the middle between smooth 1080p/30fps and 4K/30fps). Even without any immediate way to tweak the frame rate, I suspect 1080p/60fps is well within reach.
Benchmarking
I will be doing more detailed benchmarking in the follow-up post, but I did want to run a throughput test on the shipping PCIe
4.0 SSD
for later comparison:
# fio --filename=/<path>/file --size=5GB --direct=1 --rw=randrw --bs=64k --ioengine=libaio --iodepth=64 --runtime=120 --numjobs=4 --time_based --group_reporting --name=random-read-write --eta-newline=1
random-read-write: (groupid=0, jobs=4): err= 0: pid=7251: Sun Mar 17 18:20:12 2024
read: IOPS=115k, BW=7218MiB/s (7568MB/s)(846GiB/120001msec)
slat (usec): min=4, max=2551, avg= 9.39, stdev= 2.54
clat (usec): min=10, max=4139, avg=1091.34, stdev=72.41
lat (usec): min=17, max=4155, avg=1100.73, stdev=72.50
clat percentiles (usec):
| 1.00th=[ 938], 5.00th=[ 979], 10.00th=[ 1004], 20.00th=[ 1037],
| 30.00th=[ 1057], 40.00th=[ 1074], 50.00th=[ 1090], 60.00th=[ 1106],
| 70.00th=[ 1123], 80.00th=[ 1156], 90.00th=[ 1188], 95.00th=[ 1205],
| 99.00th=[ 1270], 99.50th=[ 1287], 99.90th=[ 1418], 99.95th=[ 1532],
| 99.99th=[ 2057]
bw ( MiB/s): min= 7004, max= 7437, per=100.00%, avg=7221.87, stdev=17.80, samples=956
iops : min=112078, max=119006, avg=115549.98, stdev=284.76, samples=956
write: IOPS=115k, BW=7215MiB/s (7565MB/s)(845GiB/120001msec); 0 zone resets
slat (usec): min=6, max=2872, avg=23.47, stdev= 6.27
clat (nsec): min=1272, max=4136.1k, avg=1092150.09, stdev=72495.42
lat (usec): min=9, max=4156, avg=1115.62, stdev=72.91
clat percentiles (usec):
| 1.00th=[ 938], 5.00th=[ 979], 10.00th=[ 1004], 20.00th=[ 1037],
| 30.00th=[ 1057], 40.00th=[ 1074], 50.00th=[ 1090], 60.00th=[ 1106],
| 70.00th=[ 1123], 80.00th=[ 1156], 90.00th=[ 1188], 95.00th=[ 1205],
| 99.00th=[ 1270], 99.50th=[ 1287], 99.90th=[ 1418], 99.95th=[ 1532],
| 99.99th=[ 2057]
bw ( MiB/s): min= 7014, max= 7312, per=100.00%, avg=7218.74, stdev= 9.64, samples=956
iops : min=112230, max=117002, avg=115499.83, stdev=154.17, samples=956
lat (usec) : 2=0.01%, 20=0.01%, 50=0.01%, 100=0.01%, 250=0.01%
lat (usec) : 500=0.01%, 750=0.01%, 1000=8.92%
lat (msec) : 2=91.07%, 4=0.01%, 10=0.01%
cpu : usr=9.18%, sys=90.07%, ctx=11180, majf=0, minf=54
IO depths : 1=0.1%, 2=0.1%, 4=0.1%, 8=0.1%, 16=0.1%, 32=0.1%, >=64=100.0%
submit : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
complete : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.1%, >=64=0.0%
issued rwts: total=13858307,13852536,0,0 short=0,0,0,0 dropped=0,0,0,0
latency : target=0, window=0, percentile=100.00%, depth=64
Run status group 0 (all jobs):
READ: bw=7218MiB/s (7568MB/s), 7218MiB/s-7218MiB/s (7568MB/s-7568MB/s), io=846GiB (908GB), run=120001-120001msec
WRITE: bw=7215MiB/s (7565MB/s), 7215MiB/s-7215MiB/s (7565MB/s-7565MB/s), io=845GiB (908GB), run=120001-120001msec
That’s a whopping 115k IOPS
, which is very impressive for a vendor-supplied SSD
and should be more than enough for most workloads. It might even be slower than the one I got for testing Proxmox… but we’ll see.
Conclusion
From a gaming perspective (and from someone who just can’t retire from gaming), the AceMagic AM18 is very solid, and as a first hands-on experience with a 7840HS
-based machine, it’s quite impressive in terms of performance and power consumption.
This becomes ever more apparent if I compare it with my NVIDIA RTX 3060-based streaming setup, which is nominally more powerful and acting as a streaming server but, in the end, provides a similar gaming experience on my TV at the expense of a lot more power (and heat).
And yes, the AceMagic AM18 can be a Steam/Moonlight server as well–I tried it out of curiosity and it worked fine on lighter games, but the real reason I wanted to test it was to understand the limits of the AMD
APU
architecture, and I’m trying really hard not to go down any more rabbit holes right now.
But if you came here looking for a small, powerful, and quiet desktop that can, perhaps, replace your conventional console, I’d have to say maybe. And that’s simply because comparing the AceMagic AM18 directly with a console is a bit unfair in either direction.
If you’re still looking for a bias on my part instead of a fully formulated opinion, then I’d say that spec-wise it is a good match for the current generation of consoles if you don’t care about AAA 4K gaming or console exclusives2.
And I’d leave it at that until Proton gets more optimizations for this new crop of Ryzen APU
s.
But at this power envelope, I’m really impressed. It’s not Apple Silicon, but definitely the next best thing in terms of average performance per watt.
-
The only teething issue I had was apparent lack of
HDMI-CEC
support–I do have anHDMI
switch in between that also has other (working) devices plugged into it, and I still had to fiddle with buttons to switch inputs. I suspect that’s a combination of theM780
iGPU
and Bazzite, and there were no obviousBIOS
settings to tweak. ↩︎ -
And if I think about it, the idea of replacing a console with a Steam-based home theatre PC is something I might do myself some day. ↩︎