Thoughts on Pioneer Hard-Drive Support

A few thoughts on adding a hard-drive to the Pioneer FreedomBox

Background

A couple of weeks ago my Pioneer FreedomBox ceased working, and rebooting didn’t fix the problem. It seems that something went wrong with a system update, as reported in the Update — when to panic? post by various users who experienced similar problems.

So, having to face a fresh system installation, I wanted to look into adding a hard-drive to my Pioneer. This is something that has been on my mind since I purchased the Pioneer, because I was already aware of the durability problems with SD Cards, which have a limited number of writes and then become corrupted.

Since the Pioneer FreedomBox has been my first self-hosted server, I considered it a first experiment, in order to evaluate if running a server would prove beneficial and practical (in terms of management). Now that I had a chance to appreciate hosting a FreedomBox, I’m ready to move on and upgrade the server with a proper hard-drive, except that the task at hand seems harder to crack than I expected — and I’d like to share my thoughts and findings on this, since I believe that many (if not most) Pioneer owners will also like to eventually add an hard disk to their Pioneer FreedomBox, and currently there doesn’t seem to be a dedicated tutorial or page on the topic.

Ultimately, in this post I’ll explain why I deemed adding a hard-drive to my Pioneer unfeasible (for both economic and technical reasons) and instead opted to move-on to a new hardware to host my FreedomBox.

Mounting the Disk Bay

As it turns out, physically mounting an hard disk drive to the Pioneer FreedomBox is rather straight forward, thanks to the hard-drive bay kit by Olimex:

The kit comes in various options — with or without hard-drive, with a 2.5-inch hard disk drive (HDD) or a solid-state drive (SDD) — and includes the SATA connection board.

The disk bay is an ad hoc disk enclosure which gets attached under the Pioneer case, fixed in place by screws. Since the Pioneer case and the disk-bay were designed for each other, their fitting is seamless.

A20-OLinuXino-LIME2 mounted with HDD bay

According to the official LIME2 documentation, adding a hard-drive will increase power consumption and will require a 2A power supply adapter. Since my FreedomBox came with a 1A power adapter, chances are that you’ll also need to purchase the 2A adapter after mounting the hard-disk:

(honestly, this kind of sucks, since both adapters come at the same price I’m left wondering why they didn’t ship the Pioneer with the 2A adapter straight away)

To resume, adding a 512GB SSD to my Pioneer would cost me (at the current price rate) around €69 + €7 for the power supply + shipping & VAT — probably around €100. Although this is a reasonable fee for what I’d be getting, it was ultimately a determining factor in my choice to buy a new computer instead, as I’ll explain further down.

Booting from the SSD

Acquiring the hard-drive and its bay, and mounting them to the Pioneer is a straight forward operation that requires no technical skills. I also believe that having FreedomBox recognize and set up the new drive is a trivial operation which can be handled via the Plinth panel.

The real problem is being able to install the FreedomBox OS on the SSD, and stop using the SD Card altogether.

In GitLab Issue #2192, Benedek Nagy mentions Sunil Mohan Adapa’s reply to his inquiry about booting directly from the SSD (bold added):

The A20 processor in the Pioneer edition does not have the ability to boot from an SSD directly. It needs a tiny boot loader (first 4MiB of the image file) to be present in an SD card that is inserted into the SD card slot.

Sunil then goes on explaining how to create the tiny boot loader, which is the main topic of that Issue (#2192).

As the discussion at the above mentioned Issue points out, this tiny boot loader solution is rather hackish, and too technical for the non-geeky end users. Furthermore, this limitation only affects the base model of the A20-OLinuXino-LIME2 — i.e. the one used in the Pioneer FreedomBox kit — but other models allow to circumvent booting from the SD Card, as we shall in the next section.

LIME2 with eMMC/NAND

The Pioneer FreedomBox kit includes the base model of LIME2. If we look at the LIME2 product page we can see that there are variants of the base model which include an extra embedded Flash memory storage which can be used to install the OS, or for the tiny boot loader solution mentioned earlier:

The flash memory variants come with either an eMMC or NAND storage, suffixed with -e and -n in the product name, respectively; their retail cost difference is around €10 compared to the base model.

Both the eMMC (16GB) and NAND (8GB) memory can be used for booting, disposing of the need of the SD Card altogether:

It seems that the eMMC solution is recommended over NAND, but both involve technical intervention. Furthermore, it seems that currently only the Debian Jessie release is supported for eMMC installation (probably you can simply update the OS after installation, I’m not sure).

I think it would be reasonable to imagine that the FreedomBox project could come up with a dedicated solution for helping owners of a LIME2 with eMMC or NAND to install FreedomBox on the SSD/HDD drive and upload a tiny boot loader in the eMMC/NAND to handle booting the OS from the SSD/HDD drive, instead of the SD Card.

The NAND storage is only 8GB, so it’s unlikely to be suitable to host the FreedomBox OS (it’s also slower than the SD Card), but the eMMC storage is 16GB, which is still less than the SD Card, but more reasonable.

The best usage scenario here seems to be using eMMC/NAND as boot loaders for the OS installed on the SSD/HHD.

A Pioneer Kit with HDD?

It’s reasonable to expect that many Pioneer FreedomBox will eventually (or from the onset) wish to add the hard-drive bay, not only to have a bigger storage capacity, but also because a SSD would be much faster than the SD Card when the system exceeds the RAM limit and starts swapping to disk — this, and the fact that SD Cards corrupt over time, are the main reasons why most users would like to install the OS directly on the SSD, bypassing the SD Card altogether.

I was wondering whether the FreedomBox project and Olimex might consider creating a dedicated Pioneer FreedomBox kit that ships already with a mounted drive bay, using a LIME2 model that comes with eMMC — with either FreedomBox installed on the eMMC, or configured to use the eMMC just as a tiny boot to load the OS from the SSD drive.

Obviously, I can’t say how many people would prefer the kit with the SSD over the base kit (only a users poll could provide insight into this), but if I had that option at the time, I would have most likely purchased the version with the disk bay straight away.

In hindsight, if I had the current knowledge when I purchased my Pioneer FreedomBox kit, I would have instead chosen to buy an A20-OLinuXino-LIME2 board with eMMC (e.g. the A20-OLinuXino-LIME2-e16Gs16M), along with the encasing, the disk bay + SSD kit, and the power-adapter. Probably buying these single items separately would have costed me slightly more compared to the Pioneer kit, but I would have still chosen this solution over the Pioneer kit.

Personally, I think that the Pioneer kit should also offer the option to purchase the alternative LIME2 models with eMMC/NAND, and not be limited to the base edition of the LIME2.

Why I Moved-on from Pioneer

Now that my Pioneer crashed and needed reinstalling from scratch, I realized that I wanted more from my FreedomBox, especially in terms of disk storage, but I also wanted to free myself from the “curse of the SD Card corruption” — it’s never a matter of “if” it happens, but rather of “when,” and having seen first hand how frequently the system updates, my guess is that it’s rather soon than later.

Adding a 512GB SSD drive to my Pioneer would have costed me around €100. With that in mind, I started looking into so-called Mini-ITX options (small factor PCs), to see whether I could buy a small factor x8086 computer, with more RAM. The 1GB RAM limitation of the Pioneer has always been a concern to me, especially since I was hoping to use i2p or Retroshare in the future (which are known to be memory-hungry).

As it turns out, I was able to buy for €120 a refurbished HP mini-PC, with i5 processor (4 cores), 8GB RAM, and 256GB SSD. That’s only €20 more that it would have costed me to upgrade my Pioneer with an SSD (although a bigger one, double the size).

I know that comparing this mini-PC to the Pioneer is like comparing apples and oranges — and it’s an unfair comparison too, since the latter is fully open hardware and uses only open source software, consumes much less electricity, and has a battery that would keep it running for days (maybe weeks) if the power goes out.

But still … compare them I will.

I’ve been exploring the idea of a home-hosted SBC server for quite a few years, before I finally found the resolve to purchased my Pioneer FreedomBox. I couldn’t avoid noticing that there’s an invisible threshold that separates the world of RISC architecture SBCs from that of CISC small form factor PCs (aka Mini-ITX) when it comes to hardware targeting home-hosted server machines.

The obvious benefits of using ARM processors is that CISC architecture consumes much less power, resulting in SBCs that can be powered via a small power adapter, don’t require cooling fans, and can run 24/7 with a negligible impact on the electricity bill. But, I also notice that these SBCs all rely on SD Cards for memory storage, and rarely ship with a large RAM (although lately we’re seeing 4GB editions too, e.g. with the RasPi 4).

My guess is that there’s a implicit goal to design these products to be extremely cheap (under €70), and that if their price exceeds €150 they end up competing with the low end of small form factor x8086 PCs.

Although the base price for a decent x8086 mini-PC is usually above €200, I’ve noticed that lately older models have dropped significantly in price. I speculate that the hardware requisites of Windows 11 may have led many people to migrate to newer hardware, providing the second-hand market with lots of working machines which are only being sold because they can’t support Win 11. At any rate, it seems that a PC which is not Win 11 compatible is now viewed as “older hardware” even when brand new, which might be why those who have them in store them are eager to sell the quickly at bargain prices.

In my case, I’ve got a good deal: €120 for an i5 (quad core) with 8GB DDR3 RAM and 256GB SSD — not the cutting edge in technology, but definitely decent hardware (refurbished). Other PCs with similar feature (but less known brands) where available for as low as €99, so now there are definitely more options than before for the lower-budget end.

Sure, power consumption is going to more (from what I’ve read, 10A when idle, with peaks of 35A), and I can expect some noise from the fans, when they activate. Also, in term of bulk, it’s the size of a paperback book, weighing 1.7Kg (definitely not as small as a Pioneer).

Since I’ve always mostly on x8086 processors, for me (as a developer) this a friendlier environment to work with — without all the incompatibility issues between ARM processors, which ultimately affect software availability. Besides installing FreedomBox, my new machine supports about any OS (it even ships with a licensed Win 10 Home).

The decision to purchase a new machine, rather than upgrading my Pioneer with the SSD bay, was twofold:

  1. By spending just €20 more I’d end up with an x8086 quad-core i5 with 8GB RAM.
  2. The fact that my LIME2 doesn’t have eMMC or NAND means I’m stuck to using a SD Card with the tiny boot loader hack, which adds complexity, especially when the system crashes and has to be reinstalled without loosing the SSD data (all operations which I haven’t done before).

Above all, the 8GB RAM was the main driving factor, since I was hoping to host a Tor node, and in the future experiment with i2p (when is back) and Retroshare (when it will be ready) — all of which require more than 1GB RAM to work efficiently. I wish the Pioneer had at least 2GB RAM, but unfortunately that’s not the case, and the RAM can’t be expanded either (on my new machine, I can expand it up to 16GB).

Conclusions

I bought the Pioneer FreedomBox as my first home-server experiment, and have been very pleased with it. Lately, an update gone wrong rendered the OS unusable, and needed to reinstall from scratch. This was the moment to decide whether to get more from my FreedomBox, and consider upgrading the Pioneer with the SSD bay.

As it turned out, the cost of the upgrade was just €20 less than buying a new (refurbished) i5 (quad core) mini PC with 8GB RAM and 256GB SSD, which ultimately is what I went for.

This wasn’t an easy decision, because I’m switching from a OSHW-Server to proprietary hardware. The philosophy behind the Pioneer FreedomBox, i.e. its behind entirely open-hardware, was a strong motivating factor for me — and, honestly, one that makes any price comparison unfair and unethical, since you can’t compare the efforts of small companies on the same scale of corporate mass-produced hardware. But I saw no other means to overcome the current RAM limitations, and some other technical problems relating to installing the OS on the SSD instead of the SD Card.

In any case, I’ll surely find a use for my old Pioneer — either as an intranet tool, or as a gift for a friend.

I would like to see a Pioneer alternative kit, that ships with an SSD-bay and a LIME2 board with eMMC, already configured to boot the (preinstalled) FreedomBox OS from the SSD, instead of the SD Card (which would no longer be needed). This ready-made solution, although more expensive than the current Pioneer kit, would still be very appealing to those who need lots of disk space (filesharing, etc.) and faster disk I/O access.

Basically, this would be a variant of the current LIME2-SERVER product by Olimex, except that it would ship with the LIME2-e16Gs16M board, the FreedomBox logo on the case, and the preinstalled FreedomBox OS on the SSD/HHD, and the boot-loader pre-hacked into the eMMC.

By comparing the retail price differences between the Pioneer FreedomBox and LIME2-SERVER kits, it should be reasonable for this alternative kit to cost around €120/€150, depending on the drive type and size — which would be a fair difference compared to €70 for the base Pioneer, especially since it wouldn’t require any hacks or installation on the end user’s side.

I also really hope that the Pioneer FreedomBox base kit will be made available with the eMMC option too, for those who’d like to install the OS there instead of the SD Card, or use it as a boot loader at a later time. I really regret not having the eMMC on my board, and wish I knew about it before the purchase.

Hopefully, this information will prove useful to others in my same situation, or be of guidance to those who haven’t yet decided which hardware to buy.

I’d also like to read more on these topics by users with more experience and technical knowledge than me — I am in no way an expert on any of these topics, especially not on hardware, but also have limited experience with Debian, and much less with FreedomBox.

NOTE — feel free to reuse any parts of this post, in case they might be useful to create a Wiki page or tutorial on the topic. No need to ask me for permission or provide attribution, just copy-&-paste and adapt whatever you need.

Reference Links

After having dug this forum and other sources to find information on how to add an hard disk drive to the Pioneer FreedomBox, the following links seem to be the primary sources of valuable information on this topic (at least, those I could find, and which seem to be frequently mentioned):

8 Likes

Hello.

The FreedomBox-Installation can be moved from a MicroSD-card to an SSD/HDD with
btrfs replace:
https://manpages.debian.org/bookworm/btrfs-progs/btrfs-replace.8.en.html#EXAMPLES

The “/boot”-partition needs to remain on a MicroSD-card though, because the hardware of the FreedomBox Pioneer can not boot (start) from a connected SSD/HDD.

As this is a change to the filesystem, i recommend doing a data-backup before doing this, so it can be restored, if necessary. This change should be quite safe to do though.


On my own FreedomBox Pioneer, i needed to enter these 3 Commands to use my SSD as the main-storage:

(The paths may be different depending on the connected storage-devices and system-configuration.
Which storage-device-paths to use, can be looked up in the “Storage”-menu of the “Cockpit”-app.)

  1. sudo btrfs replace start /dev/mmcblk0p2 /dev/sda/ /
    To copy the btrfs-filesystem (data) from the second partition of the MicroSD-card [which was “/dev/mmcblk0p2”, and originally mounted as “/” (root)] to the SSD (which was “/dev/sda/”) and mounting it as the new “/” (root).
    The current progress of this can then be seen with:
    sudo btrfs replace status /

Then, after the transfer has been completed:

  1. sudo btrfs filesystem resize max /
    To increase the size of the new btrfs-filesystem to the entire space that is available.

The data that has been copied from the MicroSD-card, may be removed from the MicroSD-card after that.

2 Likes

It was mentioned by several people that the 2A power adapter is not suitable, I got a 5A one and then it works.

The script is supposed to work for the Olimex Debian image, which is not a pure Debian and includes proprietary firmware, which is not acceptable for me. It does not work on a pure Debian and when I asked Olimex they said “look at the script”. I will try again but it is not a high priority thing on my todo list.

As reported by @MoonlightWave-12, you can just do a normal freedombox install on the SD card and move everything except boot to the SSD, which I believe is a good solution (and what I did).

The design of the board is open source but the design of the A20 is not. To me, the major difference is not whether the hardware design is open source or not, but that the A20 (and the board) can boot with only free software while Intel processors (at least, not the ones after core 2 duo) can’t and have their situation getting worse as time passes (the ME is already a backdoor, the FSP looks like the perfect place for a rootkit).

I still need to measure the power consumption of my OLinuxino-Lime2 with SSD but I suspect it is pretty low and possibly 10 times lower than a similar setup with an Intel processor.

Thanks for the tip.

I had read about this solution (although not with such detailed guidance) but my concern with this approach is how to be able to then reinstall the system from scratch without loosing all the settings and data. If I’ve understood correctly, this solution extends the main logical disk to include the hard-drive, as if they were a single disk, which I supposed implies that all data (system and user data) is spread across the two storage units (SD Card and SSD). So, it’s unclear to me whether the SSD data can be recovered in case of fresh reinstallation, and how technically complex this operation would be.

It would be nice to see a full fledged tutorial for this topic on the FBox Wiki, highlighting the pros and cons, and providing detailed instructions for the initial setup as well as for a crash-recovery scenario.

In this solution, only the bootloader and the /boot partition remain on the SD card, the root partition is entirely moved to the SSD (or HDD).

The way to do that is to do remote backups on your system, then install a fresh system and restore the remove backups. I somehow described this in this message. That procedure does not depend on the type of storage.

1 Like

btrfs replace does not extend the original partition; it replaces it.
The new storage-device/partition is independent from the original data-storage.
The original partition will still exist, but it will be (permanently) unmounted, so it will not be used anymore.

After reinstalling the FreedomBox-software to the MicroSD-card, the data on the SSD/HDD will still be completely intact.

Here are some images showing the filesystem-layout of my FreedomBox Pioneer, to make it more visible:

  • “/dev/mmcblk0p1” is the first partition on the MicroSD-card, and mounted as “/boot”.
    It contains the software necessary for booting (starting) the FreedomBox.
  • “/dev/sda” is the (entire) SSD, and mounted as “/” (root).
    It contains the FreedomBox-software and the data for it.
  • “/dev/sdb1” is a USB-storage-device.

This is the partition-layout of my MicroSD-card:


There is one partition on it, which is mounted as “/boot”.
I deleted the partition which btrfs replace copied from.

I hope this makes it more clearly understandable.


There is one potential issue with a reinstallation though:
The ID of the BTRFS-filesystem of the FreedomBox-installation on the SSD/HDD can be identical to the one of the reinstalled FreedomBox-software on the MicroSD-card, because the FreedomBox-software is installed by restoring a filesystem-backup to a MicroSD-card.
This may cause some weird behavior, if the SSD/HDD is connected while booting (starting) the reinstalled FreedomBox.
I once had to disconnect the SSD on my FreedomBox Pioneer after reinstalling to a MicroSD-card, then connect the SSD again later, and set the SSD up again (by formatting it, and then using btrfs replace), for it to be usable.
A USB-to-SATA-adapter/-case can be convenient in such a situation; it is a bit tricky to do with the storage-add-on (but doable). :slight_smile:

1 Like

Additionally, this article Replacing_a_disk helped me perform the MicroSD-card to SSD switch. Make sure to create a GPT partition on the SSD and you do not need to mkfs.btrfs on the SSD. The btrfs replace command will do that for you. Use lsblk --fs to see what is going on. As the last step, be sure to use btrfs filesystem resize 1:max / to grow the root filesystem to the larger size of the SSD.

2 Likes