The J3355 is DUAL-core

Regular readers will probably know by now that I’m enamoured of the tiny, all-in-one, Intel-based systems generally referred to as “Mini-PCs”.  They are more expensive than a Raspberry Pi, but they come with a case, a PSU, an on-board RTC, generally a decent amount of memory and sometimes built-in eMMC storage, too.  Prices have increased over the past few months (the C-19 effect, again), but the bottom-end models (generally the quad-core Atom Z8350 equipped systems) are still available for around the $100 range (GearBest, FastTech, CDiscount, etc).

I already have a few of these mini systems and one which underwhelmed me on first impressions was the AP35 Beelink J3355-based box, mainly because it was advertised as “fanless”, but does have a CPU blower and because the eMMC just would not work reliably.  I gave up on the eMMC and put in a small, internal SSD and since then it has been giving sterling service as a mini NAS (ZFS filesystems with TimeMachine as a backup server for various Macs) as well as running a couple of Bhyve virtual machines (doing very light duty).  Once I stopped trying to use the eMMC and put it in the basement “computer room”, my opinion of it increased considerably.  It’s a little work horse and, although not a speed monster, performs well enough for my requirements and has been absolutely reliable over the past year (again, since I gave up on the eMMC).

I mention that system specifically simply because I’ve been keeping an eye on prices, with the idea of adding another machine to the collection, if the price is right and the target machine has more than two USB-3 ports.  I’ve noticed that there are a few other J3355-based models appearing, with a form-factor pretty much the same as the Z8350 systems and priced in the same general area (ie:- the bottom end of the price range).  One thing which I’ve noticed recently though, is that almost all of the advertisments for these systems specify the J3355 as a “quad-core” CPU chip.  It isn’t.  Here’s an excerpt from the dmesg output of the AP35:-

FreeBSD 12.1-RELEASE-p6 GENERIC amd64
FreeBSD clang version 8.0.1 (tags/RELEASE_801/final 366581) (based on LLVM 8.0.1)
VT(efifb): resolution 800×600
Skipping TSC calibration since no legacy devices reported by FADT and CPUID works
CPU: Intel(R) Celeron(R) CPU J3355 @ 2.00GHz (1996.80-MHz K8-class CPU)
Origin=”GenuineIntel” Id=0x506c9 Family=0x6 Model=0x5c Stepping=9
Features=0xbfebfbff
Features2=0x4ff8ebb7
AMD Features=0x2c100800
AMD Features2=0x101
Structured Extended Features=0x2294e283
Structured Extended Features3=0x2c000000
IA32_ARCH_CAPS=0x1
VT-x: PAT,HLT,MTF,PAUSE,EPT,UG,VPID,VID,PostIntr
TSC: P-state invariant, performance statistics
real memory = 4294967296 (4096 MB)
avail memory = 3894444032 (3714 MB)
Event timer “LAPIC” quality 600
ACPI APIC Table:
WARNING: L1 data cache covers fewer APIC IDs than a core (0 < 1)
FreeBSD/SMP: Multiprocessor System Detected: 2 CPUs
FreeBSD/SMP: 1 package(s) x 2 core(s)

…and, just in case you think FreeBSD might be mis-reporting, you can go to the Intel information page for the CPU and check.

Having said all of that, here’s a link to a system on FastTech’s site to an MII-V with 4GB/64GB, GbE and four USB-3 ports which, at $112.45 (with free shipping), seems to be the best, generally available deal on this class of machine at the moment …just remember, it is DUAL-core (no matter what they say).

[ …and, Beelink please take note, so is the N3350. ]

Netatalk/AFPD/TimeMachine server set-up on FreeBSD-12.1

This entry is more of a memo to myself to remind me of  what the syntax is for the /usr/local/etc/afp.conf file for FreeBSD-12.1.

I’m consolidating a couple of my servers onto one physical machine (the Beelink AP35 which I mentioned a few months back)†, using FreeBSD as the OS.  Not surprisingly, the syntax for the afpd daemon‡ set-up is very different from the ARM-Linux box which is currently running that particular service (which provides a local TimeMachine server for all of the Mac users in the family).  This is the magic incantation which worked for me:-

[Global]
login message = “AFP Service on \”herons\””
vol preset = TimeMachine
log level = default:debug
log file = /var/log/afp.log
uam list = uams_guest.so,uams_dhx.so,uams_dhx2.so
mac charset = MAC_JAPANESE
unix charset = UTF8
mimic model = Xserve
zeroconf = yes
zeroconf name = “Herons-Store”

[Herons TimeMachine]
path = /store/TimeMachine
cnid scheme = dbd
ea = ad
time machine = yes

The “log level” setting of “default:debug” is quite verbose, but really helps with debugging problems during set-up.  Once your configuration is up and running you can remove that line completely to go back to the default logging level of “default:note”.

The “Mimic model” setting tells the server which Apple device icon to display on the client machine.  Using “Xserve” shows a rack-mount server, but you can also try “TimeCapsule8,119” or “TimeCapsule6,116” to see two different versions of a TimeCapsule icon.

The “zeroconf” lines were essential (in my environment, anyway) to having the clients recognize the new server.

The “charset” lines are probably unnecessary (or at least will need local modification) for users outside of Japan.


†  The AP35 is classed as a “mini-pc” (basically a device aimed at the set-top box market, but with an Intel CPU, rather than ARM).  This model comes with a dual-core J3355 CPU and 4 x USB3 ports, making it quite a versatile little machine.

‡  Note that the current, “approved” method for implementing a non-Mac hosted TimeMachine is the Samba (SMB) suite.  However, the older netatalk method described above is still simpler and a lot lighter (in terms of the number of support packages pulled in when using “pkg install”) than Samba if you only want to implement a TimeMachine instance (as opposed to a general, network file server).

Z83-II Mini-PC (Quad core 8350)

Another departure from the ESP8266, but for something that ESP8266-hackers might find interesting.


Update Mar 12th 2020  —  The most recent deals that I’ve found on Intel-based mini-pc boxes are here.

Update Aug 23rd 2019 —  Tanix (the TV-box maker) has just started selling its own version of the 4GB/64GB Z8350, designating it the “TX85”.  With both HDMI and VGA connectors and what seems to be an improved ventilation system, it has started showing up on most of the common techie retail sites.  I just bought two from the Shenzhen BoxKing Technology Company for $87 each, plus shipping.  The seller took a few days to mark them as shipped, but they arrived just four days after that.

Update Aug 6th 2019 —  As Z8350 afficionados will know, the “Z85” version of this popular little box is generally regarded as the “big brother” of the version described in the body of this article, as it comes with an added VGA port and (usually) 4GB of RAM and a 64GB eMMC.  Well you can currently get the Z85 from this seller on Aliexpress in the 2GB/32GB configuration (definitely –not– recommended for Windows 10) for just $78.16 including free shipping (or $86.19 for the 4GB/64GB version).

Update June 22nd 2019 —  !!EUROPE ONLY!! —  A very similar box (Z8350 but with 4GB/64GB and VGA/HDMI video connectors) is now selling for €65.99 (~$74) at Cdiscount (France).   If you’re not in Europe and don’t have a plug-adapter to hand, you can still get an updated 64GB eMMC version with dual video outputs (one VGA, one HDMI) for $99.99 (plus shipping). 

Update #2 June 22nd 2019  —  If you’re interested, a Celeron J3160 system (that’s the Z8350’s big brother) is currently on sale, too.

Update May 22nd 2019  —  !!EUROPE ONLY!!  —  …and if you’re interested in a laptop (admittedly, not a very good one) based on this same quad-core chip, CDiscount currently have another one of their insanely cheap offers on the “Yepo” version of the T-Bao R8 (which I played with a while back:-  I-Initial_Impressions  II-Installing_Linux).  Again, available only to residents of the countries listed above, but for a mere €67.80 (about $76).

P.S. – Change your GearBest password now!.


Over the past couple of years I’ve been ditching most of the big, ugly, power-hungry desk-top and server machines which used to run my mighty empire (aka “the house”) and replacing them with machines that are a lot smaller and a great deal less power-hungry.  I’ve got a few SBCs of various sorts; all ARM based, mostly multi-core and almost all still shamefully naked and gathering dust, even though they’re alive and kicking and running various essential services on our home network.  In addition to the lack of a case, almost all of them have other drawbacks of some sort (not well supported by the operating systems which I prefer to run, missing critical hardware, etc), so I keep looking for the perfect mini system.

I thought I’d found it a while back when I splashed out on a SolidRun CuBox-i4.  It’s small (very small, in fact), has a quad-core processor, 2GB of memory, GbE, USB ports, HDMI and (a major plus) comes in a diddy little black-plastic case.  Unfortunately, it turned out to be a major pain in the proverbial trying to install and run a reasonable operating system and lots of hoops needed to be jumped through (in the correct order) to even start the OS installation.  It has been running FreeBSD for quite some time now, but it suffers greatly from the lack of a real-time-clock (and unlike a Raspberry-Pi, for instance, it’s not easy to add one), has limited USB functionality and tends to fall over in a messy heap at reboots if the moon happens to be full or the wind is coming from the east.

So the quest goes on for a truly great (cheap) mini system and, right in the middle of the purple Thursday (or was it cerise Saturday?) sales, I found a new system on GearBest that seemed too good to miss.  Because it was on sale, it was a few dollars more expensive than normal (???) , but it was still a pretty good price, given the specs.

ZX83-II Z8350-based mini-pc

It’s an Intel quad-core Atom X5-Z8350 based system, with 2GB of main memory and 32GB of eMMC.  It has GbE, two USB-2.0 ports and one USB-3.0 port.  There’s also an SD-card slot and an HDMI video connector.  For those who care (and I don’t), it also comes pre-loaded with Windows-10 (don’t ask me for more details on what specific version, because I don’t know).  It’s a 64-bit system (but read on for the limitation on that) and it also comes with built in Bluetooth and a/b/g/n/ac WiFi (neither of which I’ve used).  More importantly for me, it’s also a fanless system.  It is advertised as coming with an “English User Manual”, but you can save yourself a few seconds of “I don’t believe this crap!” frustration by throwing said “manual” straight into the bin; there is nothing in it which is even remotely useful.  It does come with a fairly substantial looking mounting bracket (to attach it to a monitor, or wall) and two HDMI cables — one short and one long(er).  A power adapter is also included (but you need to make sure that you order the correct version for your particular country).  The shipping box is also very sturdy and should hold up well if a passing elephant accidentally treads on it.

I would have been quite happy to boot into some sensible operating system and immediately wipe Windows from the disk (eMMC), but it was not to be.  The one, big gotcha with this system is the BIOS.  At first glance, the BIOS menus are very sparse indeed and you’re not going to get very far at all with this system unless you know the magic incantations (it may also help to have a spare chicken to sacrifice …I haven’t actually tried this yet, though).  I did get through quite a few blank CDs and DVDs while trying to get various distributions to boot from a USB-connected DVD.  No matter what I did though, the dang machine just kept on booting into Windows (which was quite disconcerting at first, as I couldn’t see how to shut it down).  Some ‘net searches turned up suggestions for adding BIOS passwords (there are two in the version of BIOS which my machine has) to trigger extra BIOS menu items — Nope, doesn’t work.  You can forget that.  There was also one quite long diversion where some folks (seemingly correctly) noted that some functions which affect BIOS start-up are only available from within Windows, despite how stupidly chicken-and-egg-ish this seems to be (for those who want to try it, you need to select the shutdown function from the start menu and then hold down the shift key while selecting “shutdown”.  This will bring up a whole scad of extra menus which will change the UEFI boot settings …and then it will just merrily boot straight back up into Windows again).

It turns out that the UEFI boot  (which stands for “Unified ‘Effing Firmware Interface”, by the way) is the key to all of this.  It’s a versatile system which is replacing the outmoded BIOS of years gone by with an updated and secure method of booting you into Windows …and booting you into Windows …and booting you into Windows (you get the picture), no matter what you actually want to do.   On some systems (and yes, the Z83-II is one of them) it has the added twist of limiting a 64-bit system to booting from 32-bit code (you’d better go back and read that sentence again …I wrote it and I still can’t quite grok  it!).  For some reason (lost in the mists of Redmont),  Windows was/is limited to booting from 32-bit bootloaders, so because everyone-and-his-dog only ever runs Windows, some machines (like the 64-bit, Z83-II) have a UEFI which will –only– handle 32-bit bootloaders.  Now before you start jumping up and down with your hand in  the air shouting “Teacher!  Teacher! I know!  Just  run a 32-bit OS!” you should also note that, because UEFI is new-ish and 32-bit systems are just so last decade, very, very few 32-bit distributions of any sort actually have any UEFI boot capability bundled into them at all.

I know the mantra is “never give up!”, but by this stage my fingers were twitching and the old grey-matter was sending signals to my hand to grab hold of that handy, 3kg lump-hammer and send the Z83-II and its UEFI back to meet its maker in very, very small pieces.  It was only the nagging annoyance of those extra couple of dollars for the maroon Monday “sale” price that held my arm in check.

By this point I’d read so many posts and articles on the UEFI and booting systems that I’d actually stumbled across one piece of related (and essential) information which actually worked with the Z83-II.  I’d discovered already that hitting ESC during initial, power-on boot would bring up the BIOS menu, but in a couple of posts related to other mini-pc systems people mentioned that F7 would bring up the boot-device selection menu.  It worked, too.  Not only did I get a device menu (what the system had detected at boot up, rather than the BIOS preferred-device list), but it also gave a tiny bit of extra information about what the system thought it had detected on each particular device.  For the most part, to begin with anyway, that information was limited to “Windows boot manager” on the eMMC device.  This turned out to useful, though.  It quickly became apparent that having a DVD in the drive with something that the BIOS (and, presumably the UEFI) could read would result in that entry in the menu changing to give the maker’s name and model, instead of just a vanilla “USB CD/DVD” entry.  Unfortunately, very few of those DVDs would boot successfully, but at least it meant I didn’t have to go through the tedious process of having the system boot into Windows, yet again,  if there was obviously no readable disk in the drive.

I’d read in a couple of places that the latest Debian versions (greater than 8.0) had solved this 32/64-bit problem, so I burned a couple more DVDs and tried them.  I could get the extra info in the menu, but they wouldn’t boot.  A couple of other mainstream Linux distributions were also flagged (in Distrowatch) as being fixed, but none of the ones I tried actually booted.  Then I came  across a reference to Ian Morrison’s Linuxium site.  Ian obviously spends a lot of time mucking about with set-top boxes, mini-PCs and PC-sticks and has done a ton of work to get Linux booting on those devices.  He has also modded some mainstream distributions to boot on these infamous 32-cum-64 bit devices.  Ian’s modified Ubuntu 16.10 was the first thing that successfully booted on the Z83-II and proved that it could successfully boot and run something other than the dreaded “W” (thanks Ian!).  If you’re looking for a stable Linux distribution you could do a lot worse than to mosey on over to Ian’s page and check out his offerings.

Finally there was light at the end of the tunnel.  The Windows reboot cycle was broken.  I went off to see what I had to do to get OpenBSD or FreeBSD onto the system.  I didn’t have to look very far.  In another one of those “Duh!” moments, it turned out that OpenBSD had also introduced the 32/64 UEFI fix and the latest snapshot (booted from a USB thumb drive this time) not only installed, but also automatically created a dedicated UEFI “i” partition and populated it with the required boot files.  Not only that, but the BIOS now “knew” about the new, bootable drive and I could easily make it the default power-on boot device.  Yay!

So, in summary …at power on, use ESC to get into the BIOS and F7 to get into the boot device selection menu and use Ian Morrison’s modified versions of Linux, or OpenBSD 6.0 or greater, to prove that you can boot and install something other than “W” on the Z83-II.

…and don’t buy anything during a turquoise Tuesday sale.


For anyone who’s interested, the output from “dmesg” (OpenBSD 6.0) for this system is available here.


FreeBSD Hint  —  If you’re trying to boot FreeBSD on one of these boxes and experience a hang at (or very shortly after) the point where the kernel discovers the keyboard (atkbd0),do a reset and then select option #3 (“Escape to loader prompt”) from the FreeBSD boot menu and type in these lines:-


set hint.uart.0.disabled=1
set hint.uart.1.disabled=1
boot

Once the system boots up, add the same fix into /boot/device.hints (without the “set”) to make it permanent:-


hint.uart.0.disabled="1"
hint.uart.1.disabled="1"


Update –  I wrote this original article just a few days before Christmas in 2016.  It’s now mid April 2017 and this little system has been running flawlessly for four months.  I have to say that I really like it.  It chugs along running as primary for all of the main services on our home network (DNS, DHCP, NTP, BOOT, Mosquitto, syslog, etc) and also works as the back-up hub for all of our other machines.  The smaller, single-core machines on the network send their uncompressed dump files over the network and this machine pipes the data through the “xz” compressor (running on two of the four cores) before storing it to disk (the multi-core systems compress their data before sending it).  The dump disks are on the USB3 bus and the throughput with the GbE network is a big improvement over USB2 and 10/100.  The killer months are yet to come, though.  This is a fanless system and, over the last four winter months it has been just mildly warm.  It remains to be seen how it will  deal with a hot, humid Japanese summer.  I’ll be sure to let you know, either way.


Update – Sept 2017 –   Well, we’re “over the hump” of the blazingly hot and steamily humid summer weather and this little system has just chugged along, right through the worst of it.  I also threw some fairly heavy-duty, very large (hundreds of gigs) compression jobs at it during the height of August and monitored the CPU temperatures fairly closely (this wasn’t any sort of benchmark; it was work that needed to be done and I was quite worried that this fanless system might shut itself down half-way through, so I was keeping a close eye on it).  With an ambient temperature hovering around 40C, the CPU reading never got above 82C, with the “xz” compression tasks limited to two cores (“xz  -T2”).  That’s hot, but not hot enough to melt anything.


You might also want to check out this later article on the Beelink AP35, which is a Celeron J3355 4GB/64GB system with four USB-3.0 ports and a mounting in the base of the case for a 2.5″ drive.