Chia Plotter – Intel NUC

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

Checkout the Intel NUC Performance from our amazon affiliate link.

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

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

Shopping List

This site contains affiliate links to products. We may receive a commission for purchases made through these links. 

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.  

Crucial MX500 500GB 3D NAND SATA 2.5 Inch Internal SSD, up to 560MB/s - CT500MX500SSD1

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:
    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.

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