Revisiting Flexfarmer five months later – efficient Chia farming on Raspberry Pi and more

This is another piece on a part of the Chia and cryptocurrency landscapes. See previous posts at https://rsts11.com/crypto

Back in August 2021, I wrote here about Increasing Chia farmer efficiency with Flexpool’s new FlexFarmer. I was alpha testing on Windows, Linux, and a Rock64 Pi-like computer before that, and I found that it was quite efficient, handling my 90TB farm easily on any platform without breaking a sweat, and carving around 100 watts off the power I needed to keep a dedicated farmer going.

Five months and several versions later, I wanted to come back with my experience and observations since then. I’ll also answer a couple of frequently answered questions here, for those of you who have common questions.

Disclosure: I still work for Flexpool as of this writing, but this post is based on my experience, not a press release or the pool admin’s expectations. Some of the testing I did was “on the clock” alongside support tasks, but I was not paid or asked to write this post.

Quick Flexfarmer recap

The basics are the same. With a tiny distributed binary and config file (under 10MB download) and the specifics of your PlotNFT in Chia (farmer secret key, launcher ID, payout address), at least one plot, you can start farming Chia without a fully synced node (which could save you over a week on a Pi-class machine, and at least a day or more on a more full-size PC).

Want to build a compact, inexpensive machine for farming? Read my three suggestions from a January 2022 post.

With Flexfarmer, you get reported space (not just calculated/estimated), easy worker naming, flexible control of reward payout address, no need to have wallet keys or a wallet at all on the farmers (so a cold wallet is practical again), and no real need for more than 100MB of RAM or so even into the hundreds of terabytes. You also get automatic region failover in case the pool server you’re connected to is unavailable or inaccessible.

You do still need a fully synced node to create a PlotNFT, join it to Flexpool, and extract your Farmer Secret Key to sign blocks and partials. That may change someday soon though. #spoilers

You also still need plotting software to make plots, and a full node or wallet to make transactions on the blockchain. Flexfarmer is a farmer, not a full node or wallet or plotter.

And you do still need to be farming to Flexpool. The Flexfarmer architecture requires connection to a blockchain bridge that is only available on Flexpool, so other pools will not be able to use it unless they write a compatible bridge themselves. You can’t farm OG (non-portable/non-plotting-protocol) plots to an official pool protocol pool, so it won’t replace Chia software for your pre-July plots.

But once you get going, you’re good for a while. Software updates come out when a bug is found or a new feature is introduced, like Discord integration, API changes, DNS-over-HTTPS (hi Chinese mainland farmers)

What’s new?

As of this writing (mid-January 2022), we’re on version 2.0.3, with support for pretty much any platform that has Golang libraries available. Most of you will be looking at Windows x86/x64, Linux x86/x64, and Linux arm64 (Raspberry Pi 4 et al), although Linux arm32 (Pi3 and Pi Zero), Mac OS, and over a dozen more esoteric builds (OpenBSD mips64, Solaris amd64, Linux s390x and risc64) are available, as well as a standard Docker container on Dockerhub that does very well on Synology NASes.

As hinted above, some of the newer features have improved plot change detection on certain filesystems, meaning the client picks up on added, moved, and removed plots better. It’s still not perfect, as some OSes and filesystems are better than others at filesystem notifies.

Also, with certain constraints being provided to Chinese miners, a recent version includes DNS-over-HTTPS support so that it’s harder for government-controlled ISPs to block or poison resolution of farming pools.

You also get Discord webhooks, concurrency limitation, an easter egg I pushed for (that you’ll see if you farm a block for the pool), and large plot support (k33 and above).

And after months of confusion, the Chia Network team has accepted that the use of the farmer secret key doesn’t change who farms the block, or put the farmer’s wallet in peril. This isn’t a code feature, but after months of people claiming that the signing key for blocks could be used to steal funds from the wallet, it was nice to see this clarification last month on Reddit.

So how do I get started?

First, start syncing your full node, probably on a bigger computer like your desktop or plotter, if you haven’t already. This requires installing the Chia software and running it until the blockchain database is up to date, as well as the wallet database. if you need to do any of the prep steps, do them when practical: create a PlotNFT, join it to Flexpool, create your plots, and put them somewhere your farming machine can get to them.

Raspberry Pi server hanging by the Ethernet cable

Actual full Chia node and flexfarmer system, currently running on one of my networks. This mounting method is not recommended though.

While that’s happening, pick your farming machine. This can be anything from a Raspberry Pi Zero to a huge server, but you’ll probably want the lower end of that wide spectrum. Get an OS on it (I recommend Ubuntu Server), put it somewhere it won’t fall on the floor or get attacked by pets or children.

Download the Flexfarmer software from the flexpool.io get started page. Extract it on your farming machine. Use the instructions on the get started page to extract your farmer secret key from your keychain on the full node

You’ll also want to get your payout address and launcher id via “chia plotnft show” or the GUI on the client from Chia Network. You will probably have to wait for your node to fully sync before you can do this.

With this info in hand, we’re ready to create/modify the config.yml file.

plot_directories:
- /mnt/usb1/
- /mnt/usb2/
farmer_secret_key: "SECRET_KEY_HERE" # Used to sign partials & blocks
launcher_id: "LAUNCHER_ID_HERE"
worker_name: WORKERNAME
region: us-west
payout_address: YOUR_WALLET_ADDRESS_HERE
log_file_path: /home/ubuntu/flexfarmer/flexfarmer.log
license: true

Above is an example from my running Pi farmer, and a slightly easier to copy and paste version in case you want to start from this. You can also just enter the relevant info in the sample file. You can change the region name if you want, but any of the four regions (us-east, us-west, de, sg) should be fine from anywhere with a reasonable Internet connection.

When this is all ready to go, the command to start farming is pretty easy. On Linux and other UNIX type operating systems (Mac OS, Solaris, OpenBSD, FreeBSD, etc):

./flexfarmer -c ./config.yml

Or on Windows:

.\flexfarmer.exe -c .\config.yml

You should see something like this:

And once you see a line that says “Partial accepted” you know you’re submitting work to the pool.

So what about those frequently asked questions?

First, yes, you need to have a fully synced node to get the config parameters required for Flexfarmer. You don’t need it running for farming, for earning, or for payouts.

Second, yes, you can shut off the node after you get that info, or you can keep it running to help strengthen the network. I wrote recently about some low power full node options that you might consider. You can even run flexfarmer on a full node (even the Pi 4b 4GB versions), just don’t farm the same plots on Chia Network software and Flexfarmer at the same time or you’ll get a lot of duplicates or stale partials.

There are some common errors that will come up. If you get a few of these here and there, it’s normal and not a big issue. For example,

Duplicate partial, ensure that only ONE farmer instance is running with these plots

Partial rejected ... error=pool error: 1 Requested signage point was reverted

The Chia Network is unstable - Challenge Chain reorganization detected. Duplicate partials may occur.

Out of the last 614,059 signage points, I’ve seen 291 duplicate partials, 231 signage point reverted, and 1058 Challenge Chain messages. If you’re under 1%, it’s probably just normal chain operation.

Difficulty by default is 1, and for most farmers this is not a problem (it improves the granularity of your statistics, and doesn’t use a lot more energy on a properly configured farm). If you have larger plots, you’ll see higher difficulty (any k33 plots will push you to difficulty 2, k34 to 3, and so forth).

Flexpool recently added a feature to the Chia dashboard to set your difficulty. If you really want it higher and know what you’re doing, you can give that a try. You probably don’t need to.

Since there’s no practical way for the pool staff to verify ownership of a wallet, you can’t merge or transfer balances between Chia payout addresses on the pool. Since there are no fees at this time for payouts, you can pay out as low as 0.01 XCH at any time and change addresses if desired.

Where do we go from here?

I’m working on planning to stop procrastinating moving my farm in from the garage to a shelf near my “stage” desk (the sit/stand desk near the coffeemaker and beer fridge, that I use for any video meetings). I found an older NUC under the television downstairs that will probably become my farming machine for the big cluster, and maybe I’ll get Chia moved off of my Synology NASes someday so they can be used for normal stuff again.

1 thought on “Revisiting Flexfarmer five months later – efficient Chia farming on Raspberry Pi and more

  1. Pingback: Increasing Chia farmer efficiency with Flexpool’s new ‘FlexFarmer’ | rsts11 – Robert Novak on system administration

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 )

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.