Unofficial quick guide to FlexFarmer + Gigahorse compressed plots + Windows + WSL on Flexpool

[Crossposted from Reddit r/Flexpool by original poster/co-author]

Hi folks,

As you’re aware, compressed plots can be farmed with FlexFarmer on Linux only, as of this writing (March 19, 2023). We have no projection for when this will change or when FlexFarmer native on Windows will support compressed plots.

If you’re on Windows 10 or later, you can use Windows Services for Linux (WSL) to run FlexFarmer and access the GPU/CPU and plots you have on Windows under Ubuntu (or other Linux distros).

dew1803 on our Discord, who also helped me with the FlexFarmer + Synology Docker guide from a while back, came up with a simple guide, and I tested it out myself and made minor changes for it. Here it is.

Since this is based on two different people’s testing and screenshots, some details may vary, but we hope you’ll understand the underlying details.

Note that Flexpool support does not officially provide support for your hardware, Windows, WSL, or Ubuntu. If you need help, you may ask on the community forums (here, Discord, Reddit).

Also be sure to check the Gigahorse Github for hardware requirements - FlexFarmer generally has the same requirements listed there, although actual MiB/GiB may vary a bit (not much).

  1. Get into powershell
  • Click the Windows button,
  • type Powershell,
  • right click on Windows PowerShell,
  • click Run as administrator

Note that you do not want PowerShell x86, PowerShell ISE, or PowerShell ISE (x86) or anything but “Windows PowerShell”

2. Install WSL[1] and Ubuntu

  • at the prompt, type wsl --install -d ubuntu
  • For some users, you may not have to type -d ubuntu but it doesn’t hurt to do so just in case.
  • When you see “The requested operation is successful” you are done installing.

3. Reboot (may or may not be necessary)

  • If you see “Changes will not be effective until the system is rebooted” as shown above, reboot with the command shutdown /r /t 0 or reboot however you usually reboot (Windows button, ctrl-alt-delete, etc).
  • If you see something like the screen below, your configuration may be a bit different (mine was), and you don’t have to reboot.

2a-wsl-smooth-explicit

Linux will pop up in another window if you get this message

4. Create userid/password (may or may not be necessary)

  • If you are prompted for this, follow the instructions.
  • If you are not prompted for this, your Windows login is probably being used for WSL.

At this point you should see some Ubuntu details (your version may be 20.04 or 22.04, doesn’t really matter):

5. Download and install FlexFarmer

  • Download flexfarmer with the following command (that’s a capital O not a zero):

curl -O https://static.flexpool.io/dl/flexfarmer/flexfarmer-linux-amd64-v2.3.2.tar.gz

This will download the flexfarmer package to your home directory.

  • Then use the command:

tar -xf flexfarmer-linux-amd64-v2.3.2.tar.gz

This will create the flexfarmer directory and expand the software into it.

6. Set up your configuration (config.yml, drive paths, etc)

If you have not set up FlexFarmer before, go to

Follow instructions there to generate the contents of your config file. Once you get to step 7 on the page, please review the following:

  • Data location of plots. Each of your disks should show up under the following location: \\wsl.localhost\Ubuntu\mnt
  • This means that if you have drives D and E that contain plots, you will add the following plot directories to your config file:/mnt/d/mnt/e

if you already have a config.yml file, you can make a copy and move it to the following location: \\wsl.localhost\Ubuntu\home\<youruserid>\flexfarmer

Be sure to update your file with the appropriate plot directories as mentioned above.

You should be able to confirm the file is in the correct directory by issuing the ls command. In addition to all the default files you should now see the recently copied config.yml file.

7. Run FlexFarmer

Run FlexFarmer with the following command (that’s dot slash):

./flexfarmer -c config.yml

You should see FlexFarmer output like this:

user@windowspc:~/flexfarmer$ ./flexfarmer -c config.yml

[2023-03-17 17:40:27] INFO config: Loaded config address=xch1xxxxx farmer-pk=0xwwwww launcher=0xqqqqqqq region=us worker=windowspc

[2023-03-17 17:40:27] INFO Configured file logging path=/mnt/f/ryzen1wsl.log

[2023-03-17 17:40:27] INFO Starting FlexFarmer platform=linux/amd64 version=v2.3.2

[2023-03-17 17:40:27] INFO worker: Configured automatic failover regions regions=[de sg]

[2023-03-17 17:40:27] INFO worker: Configured farming identity plotnft-plotting-address=xch1xxxxx

[2023-03-17 17:40:27] INFO worker: Initializing plots dirs=[/mnt/f/c5] max-async=1024

[2023-03-17 17:40:28] INFO plots: Initialized plot directory dir=/mnt/f/c5 invalid=0 space=4.68 TB space-effective=6.09 TB valid=56

[2023-03-17 17:40:28] INFO plots: Initialized plots plots=56 sequential=false space=4.68 TB

[2023-03-17 17:40:28] INFO worker: Initialized Gigahorse hardware accelerator name=NVIDIA GeForce RTX 3060 num=0 platform=CUDA

[2023-03-17 17:40:28] INFO worker: Initialized Gigahorse plot backend cpu-fee=1.5% gpu-fee=3% hw-accelerators=1

[2023-03-17 17:40:28] INFO worker: Connected to the blockchain bridge gateway gateway=xch-gateway-us.flexpool.io

[2023-03-17 17:40:28] INFO worker: New signage point ch=d0bf3544b332 elapsed=57.47µs eligible-plots=1 index=40 space=4.68 TB space-effective=6.09 TB

[2023-03-17 17:40:29] INFO worker: Processed signage point elapsed=860.019485ms plots=1 proofs=0

[2023-03-17 17:40:33] INFO worker: New signage point ch=d0bf3544b332 elapsed=44.93µs eligible-plots=0 index=41 space=4.68 TB space-effective=6.09 TB

[2023-03-17 17:40:33] INFO worker: Processed signage point elapsed=452.508µs plots=0 proofs=0

You’ll know you’re GPU farming if you see that “Initialized Gigahorse hardware accelerator” with “platform=CUDA” – if your GPU isn’t supported (Maxwell 2.0/Cuda CC 5.2 or newer), you’ll see this to indicate CPU farming.

[2023-03-17 17:43:00] WARN worker: Disabled Gigahorse hardware acceleration

If you don’t see either, and the space= and space-effective= numbers are the same, you do not have compressed plots in the configured directories, and you either need to fix your config, or you can just run FlexFarmer in Windows natively.

Note that your farmer will not show up until you have one of these entries:

[2023-03-17 17:38:18] INFO pool: Partial accepted ch=c065683800de compressed=true diff=3 elapsed=2.348642583s gpu=true new-diff=3 plot=79211e96908b size=32

And it may take 10-20 minutes after that. If you have fewer than 72 plots, you will probably appear offline/inactive from time to time (same as any other farmer). But your points and work will still count.

[1] One of our Discord users noted that you may have to turn on Virtual Machine Platform and Windows Hypervisor Platform in “Windows Features” if they’re not already on, and make sure you’re running WSL 2 if you had installed WSL 1 before. Error code: Wsl/Service/CreateInstance/CreateVm/HCS_E_SERVICE_NOT_AVAILABLE · Issue #8693 · microsoft/WSL · GitHub may be of use.

2 Likes

Thanks for your clean post.
Got it to run but flexfarmer access the shared network drives. I must jhave the syntax wrong

In my working Windows Flexfarmer the network share folder is listed like this :

“\\192.168.1.230\CHIA\CHIAFARM_02\Flex”

Do you know the correct path via IP addresses for the Linux config.yml
or do the network drives have to be mounted first in linux ?
Thanks for sharing !

Wor

Y:\

1 Like

I don’t know, as I haven’t used shared drives on Windows under WSL, but I would guess they do have to be mounted in WSL first. Linux would probably not use the SMB format for path in any event, and I know that my SMB mounts in Windows were not automatically inherited by WSL.

When I added the F: drive after WSL was already running, I had to manually mount it.

I’d google “mount smb in wsl” and you’ll find a lot of options.

I think I am in a situation that is not covered by this guide.

… I don’t see this, BUT my C8 plots are reported correctly …

INFO plots: Initialized plot directory dir=/mnt/h/plots/ invalid=4 space=2.61 TB space-effective=3.7 TB valid=34

I am using a Tesla P4 on a PC, which I have successfully used for C8 plotting. The Nvidia GPU Utilization widget shows 0% utilization during farming, but was sometimes 100% when plotting. It seems that flexfarmer is not finding the P4 GPU. Is there additional configuration required for using flexfarmer with some GPU such as the Tesla P4 ?

My guess is that for whatever reason, the P4 is not detected, and you are CPU farming as a result.

The only configuration option specific to compressed plots is the “disable gpu” option.

gigahorse:
disable_hw: true

If you have this two-line config stanza in config.yml, it will not try to use a GPU at all.

This should do the job ( :

To mount a networked (SMB/CIFS) drive, with permissions such that everything is not owned by root:

sudo apt install cifs-utils
sudo mkdir /mnt/f
sudo mount -t cifs -o user=REMOTE_USER,pass=REMOTE_PASS,$( \
           echo uid=$(id -u),gid=$(id -g) )                                                             \
           //REMOTE_SERVER/SHARE_NAME /mnt/f 


It should be mentioned that if you want to to auto-mount an UNC path during startup via `/etc/fstab`, you need to escape backslashes with an additional backslash:

sudo mkdir /mnt/remoteshare
sudo echo ‘\\RemoteMachine\RemoteShare /mnt/remoteshare drvfs 0 0’ >> /etc/fstab
sudo mount -a

1 Like

I checked with the devs and they said they did test with P4 successfully. Make sure you check that the drivers are installed in the base operating system (I don’t believe WSL has its own GPU drivers, as the hardware seems to be virtualized through to WSL).

.