Building the Intel NUC Chia Plotter

In an earlier post, I shared a design for a Chia plotter/farmer based around the Intel NUC NUC10i7FNH tiny computer.

Today I built that machine, and it’s running its first plot as I type this.

If you landed here, you might be interested in my other recent Chia posts:

Pricing disclaimer: All prices, availability info, and links are accurate as of the writing of this article (May 3, 2021) unless otherwise noted. Prices vary from day to day and availability does too. Use this info with a grain of salt especially if you are reading this in 2022 or beyond.

Here’s a quick rundown of what was involved in the process.

Shopping List

Feel free to shop in your preferred venues online or locally, or if you already have components, use them. These links are Amazon affiliate links, and if you use them, I get a few bucks to go toward my next hardware adventure. (I bought my NUC and RAM from Central Computer, a local computer store in Silicon Valley, and the NVMe drive came from Amazon.)

Base computer – NUC10i7FNH1 currently $570 at Amazon. You want the i7, and you want the FNH which is the “high” case that holds a 2.5″ drive as well as the m.2.

RAM – 32GB (2x16GB) DDR4 2666 or better SODIMM. Crucial 16GBx2 kit around $182 at Amazon. You can install 64GB, but you probably don’t need it with this processor.

Boot drive – I used a Samsung PM851 that’s not available on Amazon at the moment. Any 2.5″ SATA drive will do, even a HDD. Amazon has the WD Blue SSD 250GB for $45 or 500GB for $60. If you have something else on hand that’s at least 120GB, go ahead and use it, or if you want some internal plot storage, get something bigger. 

Plotting drive – 2TB Inland Premium NVMe is popular with its 3200TBW rating, about $240 on Amazon but out of stock for the next week. If you watch your drive life, you can use cheaper NVMe or even SATA m.2 storage. But check the TBW (Total Bytes Written, or Terabytes Written) and warranty for your drive and take that into account. 

OS install drive – Get a USB 3.0 drive with 16GB or more space, and use Balena Etcher or Rufus to burn Ubuntu 20.04 LTS to it.I like the Sandisk Ultra 32GB for price point and quality, about $10 at Amazon

External long-term plot/farm storage – I’ll be using an 8TB external drive in the near term, but you can use whatever you have, even NAS storage. 

Bonus: Staging disk. A user on r/chia suggested using a staging drive to copy your final plot file to, so that your plot process ends faster than if it has to be copied to slow disk. You can then automate moving the plot files to your external HDD at your leisure, and get back to plotting again up to an hour faster. For this, you can use an external USB 3.0 or better SSD like the WD My Passport SSD ($150 for 1TB), Crucial X8 ($148 for 1TB), or pretty much any SSD that will hold a batch of your plots (1TB will hold 9 plot files). You can also use a directory on your NVMe drive for this, but make sure you don’t let it fill up.

Mise En Place – Getting Your Gear Together

You’ll need your NUC10i7FNH computer, some memory (two 16GB DDR4L SODIMMs are recommended), a boot drive (2.5″ SATA, preferably a SSD but a HDD will work), a plotting temp drive (M.2 NVMe, preferably with high write endurance), a power outlet, a monitor, a keyboard, and if practical, an Ethernet network connection. 

You’ll also need a USB drive to install Ubuntu 20.04 from, and while you’re at it, download the latest BIOS update (FNCML357 as of this writing) from the Intel Download Center. Drop it on a flash drive, and once you have the kit assembled, you can use the boot menu to flash the BIOS before installing your OS.

Lay out this gear on a reasonably sized workspace, get a Philips screwdriver or two (standard #2 for the case screws, a smaller bit for the NVMe drive screw) and let’s get started. 

An Intel NUC NUC10i7FNH computer and the components to complete it

Yes, I set up a desk on my patio so I could build in the fresh air.

Assembling the Computer

Take your #2 or similar screwdriver and open the four captive screws on the bottom. Pull the bottom out carefully. It holds the 2.5″ SSD, and is connected to the motherboard by a ribbon cable you don’t want to break. 

Install the two SODIMMs in the slots. 

Take the smaller screwdriver and carefully remove the m.2 retention screw (bottom right in the photo above, bottom left in the photo below). Insert the m.2 drive in the slot, and screw it back in. 

Slide the 2.5″ SATA drive into the slot – no screws required – and carefully insert it into the SATA connector. 

Now we’re ready to close it back up. Exhausting, wasn’t it? Have a refreshing beverage of your choice, and then let’s get back to it.

Now plug in the USB drive with the BIOS update on it, the USB keyboard, your HDMI video cable or adapter, and finally the power adapter. We’re ready to set the machine up. Feel free to remove plastic film covering the top and power button if you like. 

Updating the BIOS

I found that I wasn’t getting the “F2” option for the BIOS on my NUC, perhaps because it defaults to Secure Boot. Luckily, there’s a workaround for this – Power Button Menu from Intel. 

Hold the power button down for 3 seconds. The light will turn from blue to red, and you can release the button. As they say in the Holy Hand Grenade of Antioch instructions, count not to 2, unless you then continue to 3, and do not count to 4. Five is right out.

In a moment you will see a menu that will let you go into the BIOS to turn off secure boot or make other adjustments (optional at this time), and another option to press F7 to update your BIOS from a USB drive. Go ahead and do that, choosing the .CAP file you downloaded above. It will take a few minutes to update the various firmware elements, and then we’re good to go. When the system reboots, remove the drive and insert the Ubuntu drive. 

Configuring Ubuntu 20

We’re using Ubuntu 20.04 Server here, so there aren’t as many configuration options at install time. Use the tab key to move around the screen. The main things to do are:

  • Set your boot drive to the SATA disk, not the NVMe drive. If you’re reusing a drive, you can delete existing partitions, which I forgot to do.
  • You can set up the NVMe drive to be formatted and mounted. I chose to use the full drive and mount it under /plots … you can also set it up later. 
  • Enable OpenSSH server, so you can get in later without the monitor
  • Create your user account to log into after installation
  • Wait 3-5 minutes patiently

I’ll admit the newer Ubuntu flow confused me a bit, especially with the “curtin” spinner continuing after the system was done installing. But when that “Installing system” message at the top turns to “Installation Complete” or something like that, you can tab down to the reboot option and reboot your new server. 

Pretty easy, huh? 

Post-install updates and Chia install

When you’re done with the OS install, you can reboot and get into the system on console (keyboard/monitor) or via SSH (putty or ssh on your other computer). You may have to check your router or dhcp server to see what IP was assigned, or you can statically assign one in advance based on the NUC’s MAC address.

1. Update the operating system. 

This is easy but may be slow (5-10 minutes). 

  • sudo apt update
    This updates your index of the packages available, and compares to what’s installed to tell you what’s available to upgrade. 
    rnovak@chianuc1:~$ sudo apt update
    [sudo] password for rnovak:
    […stuff…]
    Fetched 18.7 MB in 4s (4,554 kB/s)
    Reading package lists… Done
    Building dependency tree
    Reading state information… Done
    91 packages can be upgraded. Run ‘apt list –upgradable’ to see them
  • sudo apt upgrade
    This actually pulls those upgradable packages (anything updated since the Ubuntu ISO was made). The speed of the operation depends on your Internet connection, but give it 5-10 minutes
  • Reboot your computer and run this cycle again just to be sure

2. Install Chia

You can get these instructions from the Chia github site.

If you already have keys created elsewhere (like on your Windows or Mac), use the command ‘chia keys add‘ to add the keys to this machine based on your mnemonic phrase. 

If you don’t have keys created elsewhere, use ‘chia keys generate‘ to create your new keys. Save the mnemonic somewhere secure and offline, or in a trusted password safe, or both; you’ll need them to set up new Chia machines in the future, or to retrieve your wallet. 

3. Start Chia node daemons

Use the command ‘chia start all‘ to start your daemons. If you know you only need some of them, you can do them individually. 

Now you’re ready to sync your blockchain and start plotting and farming. 

4. Check your sync status

Use the command ‘chia farm summary‘ to show your current status. It will take a while to get your initial sync completed (at least a day or two as of May 2021), so don’t worry. You can plot once the daemons are started. 

Start your first plot

There’s a lot of tuning to do on this process, but start with one plot. 

Pro-tip; Run ‘screen‘ to save your place even if you lose your ssh connection. This works the same way as ‘miner’ in hiveOS, for those of you joining us from that side of the world. 

Once you get into screen, cd to chia-blockchain and run ‘. ./activate‘ to set up your chia environment. Anytime you want to work with chia, you want (venv) on your prompt, as you see here. 

I used the following command:

time chia plots create -k 32 -b 6750 -u 128 -r 8 -n 1 -t /plots/chia-temp -d /plots/chia-final |tee firstplot.log

I boosted the memory and threads above the defaults, using the same NVMe drive for temp and long term storage (for now), running the ‘time command’ to track the length of the run and piping the output to a text file called ‘firstplot.log’ so I can look at progress later. 

While your plot is running, you can use Ctrl+A N to create a new screen “window,” and run ‘top’ or ‘htop’ to monitor resources. This may give you an idea of how to stagger your plots later. Or at least it’s more interesting than the plotter output.

Output of the ‘htop’ linux command, showing cpu/memory usage and processes

Output of the ‘top’ command, showing resource usage (press “1” to show all threads rather than summary of threads)

The end result will be a time summary like this (times are in seconds):

real 328m13.385s
user 452m3.267s
sys 23m48.800s
And a logfile I can check phase times in, with the command ‘fgrep “Time for phase” firstplot.log’
 
Time for phase 1 = 6467.025 seconds. CPU (245.950%) Tue May 4 01:12:33 2021
Time for phase 2 = 4675.478 seconds. CPU (97.000%) Tue May 4 02:30:28 2021
Time for phase 3 = 7779.143 seconds. CPU (96.210%) Tue May 4 04:40:07 2021
Time for phase 4 = 531.161 seconds. CPU (97.950%) Tue May 4 04:48:58 2021
Update: The times and phase times are now actual times for my first plot on this build. 
 

Where do we go from here?

Check out the metrics in my first Chia post under “Hardware Considerations” and figure out what you can do in parallel. Check your logs, and experiment if you like.

Read some of the blogs and reddit posts, dig into plotman, and get your farm going. 

Oh, and plug in your external HDD for “permanent” plot storage, and maybe that staging SSD I mentioned above.

 

9 thoughts on “Building the Intel NUC Chia Plotter

  1. Pingback: Chia hardware starting points | rsts11 – Robert Novak on system administration

  2. Pingback: So you think you want to farm chia? | rsts11 – Robert Novak on system administration

  3. Pingback: Frequently Ungoogled Chia Questions | rsts11 – Robert Novak on system administration

  4. Pingback: Chia update and frequently answered questions | rsts11 – Robert Novak on system administration

  5. Hey Robert – Thanks for this – I used your plans and am using this exact setup – but plotting keeps freezing. Did you face this issue? I’ve ran MemTest (no errors), upgraded to 32GB – same issue – running 2TB NvMe for temp – same issue.

    Like

    • Hi there. I am using the exact configuration you see above (the only divergence is that the SSD shown in the photo didn’t work so I replaced it with the Samsung one). it does not freeze for me. I have 12 plots running in parallel right now.

      One other person reported the plotting freezing, but I don’t have enough detail to know what causes the problem.

      I would take a look in the plotter logs to see where the process is stopping. If you’re running plotman, the logs should be in the directory specified by log: in ~/.config/plotman/plotman.yaml (or wherever your installation puts it).

      I would also double-check your paths. I’ve had cases where I had one letter off in a path and it wrote to (and filled up) my root filesystem. That’s mostly because I was lazy with my mount points for external USB drives though.

      Like

  6. Help. Sorry newbie here, please bare with me. I’m stuck on start your first plot. “screen” command didn’t seem to do anything but take me out of venv. And mkdir isn’t working (see error below). Also I don’t understand when/how to get my external USB HDD involved. Here is what I see:
    me@chianuc:~/chia-blockchain$ . ./activate
    (venv) me@chianuc::~/chia-blockchain$ sudo mkdir /plots/chi-temp /plots/chia-final
    [sudo] password for me:
    mkdir: cannot create directory ‘/plots/chi-temp’: No such file or directory
    mkdir: cannot create directory ‘/plots/chia-final’: No such file or directory

    Like

    • Do you have your NVMe drive mounted as /plots ? The error message you give suggests that there is not a /plots directory so you cannot make a directory under it.

      Filesystem Size Used Avail Use% Mounted on
      /dev/nvme0n1p1 1.9T 1.7T 161G 92% /plots

      Screen is a program that creates “windows” that you don’t have to be logged in to keep running. This way if you run plots manually you can log out of the NUC without losing them.

      If you can keep your session open to the NUC, you can do your first plot without screen, but I suggest reading up on it (or tmux or something like those) for long term use.

      Like

  7. Thanks for the help. I don’t have the NVMe drive mounted. I missed the first two steps of Configuring Ubuntu 20 because I didn’t know how to do them. Sorry if the blog covers this, I just don’t see it.

    How do I set the SATA disk as my boot drive…I think I must have lucked out and did this during the Upuntu install. But I totally missed mounting the NVMe drive. How do I mount the NVMe drive under /plots? I’m not even sure how to determine the drive name, assuming that is needed to mount it. Here is what I see:
    Filesystem Size Used Avail Use% Mounted on
    udev 16G 0 16G 0% /dev
    tmpfs 3.2G 1.7M 3.2G 1% /run
    /dev/mapper/ubuntu–vg-ubuntu–lv 196G 16G 171G 9% /
    tmpfs 16G 60K 16G 1% /dev/shm
    tmpfs 5.0M 0 5.0M 0% /run/lock
    tmpfs 16G 0 16G 0% /sys/fs/cgroup
    /dev/sda2 976M 106M 803M 12% /boot
    /dev/sda1 511M 7.9M 504M 2% /boot/efi
    /dev/loop0 56M 56M 0 100% /snap/core18/1944
    /dev/loop1 70M 70M 0 100% /snap/lxd/19188
    /dev/loop2 32M 32M 0 100% /snap/snapd/10707
    tmpfs 3.2G 0 3.2G 0% /run/user/1000
    /dev/loop3 33M 33M 0 100% /snap/snapd/11841
    /dev/loop4 56M 56M 0 100% /snap/core18/2066
    /dev/loop5 68M 68M 0 100% /snap/lxd/20326

    Like

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.