The AP34 Ultimate combines the passive cooling of an Apollo Lake N3450 SoC with 8GB of RAM and 64GB of storage in a small box form-factor mini PC.
Together with the device comes a pair of HDMI cables, a power adapter, VESA mount with screws, and a couple of leaflets covering basic information.

Not only does this device have three USB 3.0 ports, full size SD card, Gigabit Ethernet, headphone jack and HDMI port, it also has a (vacant) M.2 slot allowing additional storage with the full specification being:
although there was no included remote control.
The device comes pre-loaded with activated Windows 10 Home 64-bit and plenty of available free space at (initially before updates) just over 43GB.
The Windows performance is unremarkable and the reason for this is obvious looking at the basic benchmarks.


The reason being that the eMMC is slow which is disappointing for an ‘ultimate’ device. The eMMC chip is a Toshiba THGBM5G9B8JBAIE 64GB eMMC version 4.41 which used the HS200 interface..
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
linuxium@AP34-ULTIMATE:~$ dmesg | egrep -i sdhci\|mmc [ 0.181332] PCI: MMCONFIG for domain 0000 [bus 00-ff] at [mem 0xe0000000-0xefffffff] (base 0xe0000000) [ 0.181351] PCI: MMCONFIG at [mem 0xe0000000-0xefffffff] reserved in E820 [ 3.722740] sdhci: Secure Digital Host Controller Interface driver [ 3.722741] sdhci: Copyright(c) Pierre Ossman [ 3.729621] sdhci-pci 0000:00:1b.0: SDHCI controller found [8086:5aca] (rev b) [ 3.731414] sdhci-pci 0000:00:1b.0: enabling device (0000 -> 0002) [ 3.735868] mmc0: SDHCI controller on PCI [0000:00:1b.0] using ADMA 64-bit [ 3.740029] sdhci-pci 0000:00:1c.0: SDHCI controller found [8086:5acc] (rev b) [ 3.742509] mmc1: SDHCI controller on PCI [0000:00:1c.0] using ADMA 64-bit [ 3.742540] sdhci-pci 0000:00:1e.0: SDHCI controller found [8086:5ad0] (rev b) [ 3.742551] sdhci-pci 0000:00:1e.0: enabling device (0000 -> 0002) [ 3.745040] mmc2: SDHCI controller on PCI [0000:00:1e.0] using ADMA 64-bit [ 3.953159] mmc1: new HS200 MMC card at address 0001 [ 3.956816] mmcblk1: mmc1:0001 064G93 58.2 GiB [ 3.956995] mmcblk1boot0: mmc1:0001 064G93 partition 1 4.00 MiB [ 3.957147] mmcblk1boot1: mmc1:0001 064G93 partition 2 4.00 MiB [ 3.957279] mmcblk1rpmb: mmc1:0001 064G93 partition 3 512 KiB [ 3.960187] mmcblk1: p1 p2 p3 p4 p5 [ 5.386372] EXT4-fs (mmcblk1p5): mounted filesystem with ordered data mode. Opts: (null) [ 6.218320] EXT4-fs (mmcblk1p5): re-mounted. Opts: errors=remount-ro linuxium@AP34-ULTIMATE:~$ |
… compared with other devices like the Beelink AP42 whose eMMC (Samsung KLMCG4JENB-B041) is version 5.1 making use of the faster HS400 interface.
Installing Ubuntu as dual-boot is now much simpler as my updated ‘isorespin.sh’ script includes installing the rEFInd bootloader which enables booting on Apollo Lake devices when the BIOS doesn’t support Linux. Performance is again as expected given the limitation of the eMMC.


Looking a key features in more detail the first point to note is that the BIOS is simplified with no access to features you might want to control in an ‘ultimate’ device
The CPU is a quad core Intel N3450:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
linuxium@AP34-ULTIMATE:~$ sudo lshw -C cpu *-cpu description: CPU product: Intel(R) Celeron(R) CPU N3450 @ 1.10GHz vendor: Intel Corp. physical id: 38 bus info: cpu@0 version: Intel(R) Celeron(R) CPU N3450 @ 1.10GHz slot: SOCKET 0 size: 2189MHz capacity: 2400MHz width: 64 bits clock: 100MHz capabilities: x86-64 fpu fpu_exception wp vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp constant_tsc art arch_perfmon pebs bts rep_good nopl xtopology tsc_reliable nonstop_tsc aperfmperf tsc_known_freq pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 sdbg cx16 xtpr pdcm sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave rdrand lahf_lm 3dnowprefetch cat_l2 intel_pt tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust smep erms mpx rdt_a rdseed smap clflushopt sha_ni xsaveopt xsavec xgetbv1 xsaves dtherm ida arat pln pts cpufreq configuration: cores=4 enabledcores=4 threads=4 linuxium@AP34-ULTIMATE:~$ |
and memory is dual-channel DDR3 1600MHz:
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 |
linuxium@AP34-ULTIMATE:~$ sudo lshw -C memory *-firmware description: BIOS vendor: American Megatrends Inc. physical id: 0 version: 00.14 date: 04/17/2017 size: 64KiB capacity: 5056KiB capabilities: pci upgrade shadowing cdboot bootselect socketedrom edd int13floppy1200 int13floppy720 int13floppy2880 int5printscreen int14serial int17printer acpi usb biosbootspecification uefi *-memory description: System Memory physical id: 30 slot: System board or motherboard size: 8GiB *-bank:0 description: DIMM DDR3 Synchronous 1600 MHz (0.6 ns) vendor: 0000 physical id: 0 serial: 00000000 slot: ChannelA-DIMM0 size: 2GiB width: 16 bits clock: 1600MHz (0.6ns) *-bank:1 description: DIMM DDR3 Synchronous 1600 MHz (0.6 ns) vendor: 0000 physical id: 1 serial: 00000000 slot: ChannelA-DIMM1 size: 2GiB width: 16 bits clock: 1600MHz (0.6ns) *-bank:2 description: DIMM DDR3 Synchronous 1600 MHz (0.6 ns) vendor: 0000 physical id: 2 serial: 00000000 slot: ChannelB-DIMM0 size: 2GiB width: 8 bits clock: 1600MHz (0.6ns) *-bank:3 description: DIMM DDR3 Synchronous 1600 MHz (0.6 ns) vendor: 0000 physical id: 3 serial: 00000000 slot: ChannelB-DIMM1 size: 2GiB width: 8 bits clock: 1600MHz (0.6ns) *-cache:0 description: L1 cache physical id: 36 slot: CPU Internal L1 size: 224KiB capacity: 224KiB capabilities: synchronous internal write-back configuration: level=1 *-cache:1 description: L2 cache physical id: 37 slot: CPU Internal L2 size: 2MiB capacity: 2MiB capabilities: synchronous internal write-back unified configuration: level=2 linuxium@AP34-ULTIMATE:~$ |
Networking is Gigabit Ethernet and Intel 3165 (ac) wireless:
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 |
linuxium@AP34-ULTIMATE:~$ sudo lshw -C network *-network description: Ethernet interface product: RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller vendor: Realtek Semiconductor Co., Ltd. physical id: 0 bus info: pci@0000:01:00.0 logical name: enp1s0 version: 0c serial: 84:39:be:64:90:0a size: 1Gbit/s capacity: 1Gbit/s width: 64 bits clock: 33MHz capabilities: pm msi pciexpress msix vpd bus_master cap_list ethernet physical tp mii 10bt 10bt-fd 100bt 100bt-fd 1000bt 1000bt-fd autonegotiation configuration: autonegotiation=on broadcast=yes driver=r8169 driverversion=2.3LK-NAPI duplex=full firmware=rtl8168g-2_0.0.1 02/06/13 ip=10.88.88.123 latency=0 link=yes multicast=yes port=MII speed=1Gbit/s resources: irq:368 ioport:e000(size=256) memory:92200000-92200fff memory:92400000-92403fff *-network description: Wireless interface product: Wireless 3165 vendor: Intel Corporation physical id: 0 bus info: pci@0000:02:00.0 logical name: wlp2s0 version: 91 serial: 46:34:79:38:91:f6 width: 64 bits clock: 33MHz capabilities: pm msi pciexpress bus_master cap_list ethernet physical wireless configuration: broadcast=yes driver=iwlwifi driverversion=4.10.0-19-generic firmware=22.391740.0 latency=0 link=no multicast=yes wireless=IEEE 802.11 resources: irq:373 memory:92100000-92101fff linuxium@AP34-ULTIMATE:~$ |
and audio is available through HDMI and headphones
Kodi plays 4k video but however 8K is unwatchable
Both internal and external temperatures are fine under load:
So what are the advantages of having 8GB RAM? Well it means the device works better as a mini PC, as it means you can use more memory-hungry applications like browser tabs. As an example I fired up twenty Chrome tabs in Ubuntu
I was going to fire up twenty more but while I was refreshing each tab to make sure I used the most memory Chrome crashed.
However as I hadn’t run out of memory I decided to try with Firefox. Having opened forty tabs in Firefox, I then refreshed the previous twenty Chrome tabs. Everything was now working fine and I was hovering around the 7GB RAM usage with the temperature stable at 61°C
1 2 3 4 |
linuxium@AP34-ULTIMATE:~$ inxi -s Sensors: System Temperatures: cpu: 61.0C mobo: N/A Fan Speeds (in rpm): cpu: N/A linuxium@AP34-ULTIMATE:~$ |
But what use is a device with slow storage? I re-read the license leaflet that came with the device:
and checked the license using ‘slmgr -dli’ which confirmed I had an activated ‘RETAIL’ license. As the device has 8GB RAM and 64GB storage, I can only assume that the device has a full Windows 10 license which means I should be able to use the M.2 drive as the Windows drive. So in theory if I used a small M.2 drive and installed Windows it should then automatically activate as the product key is held in the BIOS.
First I had to install the M.2 drive. This involves prising off the four rubber feet on the base of the device, unscrewing the four screws that are revealed, and then forcing off the base plate which is somewhat stuck to the motherboard by a thermal pad.
Then unscrew the three screws that secure the motherboard to the case and gently lift out the motherboard being careful not to loose the power-button which is now loose and also not ripping off the two wifi antena wires.
You will need a 22mm wide and 42mm long M.2 (or 2242) with at least an “M” slot SSD. The socket is near the yellow battery which the SSD actually covers when installed.
Windows can then be installed using a Windows 10 Disc Image (ISO File) downloaded from Miscrosoftand written to USB.
Except that activation didn’t work. Research seemed to indicate that this was because the drive was seen as a removable device which apparently Windows doesn’t like.
So instead I installed Windows to the eMMC I had just wiped
which activates successfully
and after turning off hibernation and setting the paging file to the minimum the Windows partition can be shrunk
and moved to the M.2 SSD using an Ubuntu LiveUSB and the ‘dd’ command
after which the M.2 drive needs to be ‘fixed’ using ‘gdisk’
and the original eMMC wiped using ‘gparted’ to prevent conflicts
Once rebooted the M.2 should be resized
and after performing updates the M.2 SSD is the C: drive with activated Windows
Although fine as a proof of concept I only used a relatively slow and small capacity (16GB) M.2 SSD. The real question was whether the initially installed Windows could be moved to a larger and faster SSD? The answer is yes!
And when using a 256GB M.2 SSD
an improvement in performance is seen
The fundamental consideration in choosing this device is whether you have the need for 8GB RAM over 4GB as this is an USD 80 question. The slow eMMC whilst disappointing can be overcome through utilizing the M.2 slot. However, it is worth checking how readily available 2242 M.2 SSDs are as they are not common in Australia for example. The price vs specification still favors these type of mini PCs when compared to NUCs and similar. However the convergence point is close, especially when factoring warranty and support. Overall the Apollo Lake CPU offers a slight improvement to last year’s Cherry Trail devices and the passive cooling of this device are definite positives with HDMI 1.4 being the obvious negative, although the limited BIOS might also be too restrictive for some.
I’d like to thank GearBest for providing Beelink AP34 Ultimate for review. If you are interested, you can purchase the device on their website for $259 including shipping [Update: Coupon GBAP348 should lower the price to $239.99. Valid until October 31st.] You’ll also find the fanless mini PC on Aliexpress, just make sure you select the blue version if you want 8GB RAM, the gray version for 4GB RAM.

Ian is interested in mini PCs and helps with reviews of mini PCs running Windows, Ubuntu and other Linux operating systems. You can follow him on Facebook or Twitter.
Great review!
Thanks for sharing.
Yep pretty cool review!
be carrefull for linux stability with this intel familly N3540.
I have an N3450 laptop and i have to deactivate c-cache “intel_idle.max_cstate=1” in the grub to keep a stable OS without random hanging. it’s more power hungry in deep sleep.
What a palava to install the M.2 drive.
That shows very poor design.
And putting in that Tosh eMMC really does hamper the boxes ability.
Couple these things with the awful Beelink support and I’m glad I followed my gut instinct in not purchasing one.
Which 256 GB M.2 SSD did you use?
@tkaiser
MyDigitalSSD 256GB Super Boot 2 (SB2) 42mm M.2 2242 NGFF SATA III (6G) SSD
@Linuxium
Thank you (also for the great review). I’m looking for performant M.2 2242 (SATA) SSDs for quite some time.
GearBest Coupon for Beelink AP34 Ultimate: GBAP348. Valid until October 31st.
Great review! I would like to use only mainly Linux through an extra SSD – the MyDigitalSSD – and use Windows 10 through Virtualbox whenever needed. Can the Windows 10 license be transferred to a Windows VM ? How shall we proceed – need to activate Windows 10 on eMMC first ? Windows licensing is such a pain – but fortunately licenses can be bought through Ebay if needed …
@number6
Not tried, but it looks feasible by creating a VMDK file in Linux that points to the eMMC flash where Windows is installed: http://www.serverwatch.com/server-tutorials/using-a-physical-hard-drive-with-a-virtualbox-vm.html
@number6
Windows activation might see the VM as different ‘hardware’ so why not leave Windows on the eMMC and install Linux on the M.2 SSD and run as dual boot?
Thanks cnxsoft & Linuxium for your replies. Multiboot can be an option to start – but after sometime I always find it painful.
Maybe I can transfer the license to a VM by contacting Microsoft later on – Retail license is way less restrictive than OEM : http://www.velocitymicro.com/blog/difference-between-retail-original-equipment-manufacturers-oem/
If not maybe I will have to consider using Microsoft – free & valid for 90 days VMs : https://developer.microsoft.com/en-us/microsoft-edge/tools/vms/
I will also consider the VMDK solution when I’ll receive the SSD drive – and do some research in the meantime.
I think this is an amazing review. It’s very possible that I have found my ultimate media pc for streaming radio, watching movies, and hook up for my picoprojector. Yep, I see that needs a pretty m.2 sata storage, and perfectly can hide it under the shelf. Thank you again.
@bob
Which one, Chuwi?
I’m planning to connect it to a Dell 2.560 x 1.440 Monitor (U2515H).
In this scenario is the HDMI 1.4 a real limitation in some way?
Now that is clear that it’s not possible to reinstall Win10 directly to the additional SSD, can I just move the original OS from the eMMC to the SSD?
@The Italian Dude
HDMI 1.3/1.4 has enough bandwidth to output 2560×1440 up to 60 Hz so I would not expect any issues.
For Windows 10 to work on the SSD you need to follow the instructions provided by Linuxium in the post above. Better backup any data you had before.
@cnxsoft
Yes, but my point was slightly different: Linuxium cleared the original Win10 installation on the eMMC because he expected to be able to setup a brand new one directly on the SSD. Since this didn’t work he was forced to reinstall Win10 on the eMMC and then transfer it to the SSD.
Knowing that, can I just move the original Win10 installation from the eMMC to the SSD or I really need to reinstall Win10 on the eMMC first?
@The Italian Dude
good question
Well, well – unbeknownst to me, AP34 had already been reviewed on cnx (thanks @linuxium) while I happened to buy it on BG for $150 recently (black friday deal). Looks like I got a bargain.
@GanjaBear
The unit I just purchased contains 10 Pro. As you received yours only a few weeks before me, did you get Home or Pro?
The first thing it did was download the latest Windows 10. The little “hard” drive got pretty full, pretty fast. The download was over wifi. I’ve since hooked it up to the LAN. LAN is about 3 times faster than wifi.
I am pleasantly surprised at how perky this thing is.