Learning PowerShell for Chia

Windows so far is slower than Linux by (don’t quote me) 5-10%? That’s in the Wiki somewhere.

GUI plotting just saves to whatever folder you tell it to. I think you’re question isn’t what you’re trying to ask.

Forget about optimizing for now. Learn the basics first. It’ll save you a lot of trouble later on. PowerShell let’s you precisely control how you plot. Learn the CLI.

1 Like

yeah ive read that too man. i really want to learn more, but i must say i’m a complete novice. i got involved with this as i genuinely see the scalability; and believe in bram and the team unequivocally. in regards to short term price action, I’m way behind the curve so this long term unification in my eyes… thanks mr @roybot ill check out the Wiki, in greater detail.

best regards :call_me_hand:

I can give you some pointers. What OS will you be using?

1 Like

legend.
i’m using windows 10.

Something like this? Plotting with PowerShell on Windows – The Chia Farmer

4 Likes

When you’ll be using the command line in PowerShell. PowerShell is a program on your PC. If you search for it in your programs, “Windows PowerShell” will come up.

When you’re using PowerShell you’re giving your computer precise instructions to do things. You need to be careful and take it slow. You could easily mess things up (so always double check your commands).

When you run a command, the format generally is command-name + arguments(aka settings)

An example: moving around your computer file structure.

When you open up PowerShell you’ll be in your home folder (aka directory), which is located at C:/Users/YOURUSERNAME Powershell will let you know where you are at because in front of the cursor it will show you were you are at.

Let’s take a look and see what’s around us. If you just type ls and hit return, you will get a list of all the folders in your current directory. In this case, the folders in your home directory. You will see something like this (note, it’s similar for everyone, but there might be some differences):

Mode                 LastWriteTime         Length Name                                                                 
----                 -------------         ------ ----                                                                                                                             
d-----         1/30/2021   1:40 PM                .ssh                                                                 
d-r---         1/12/2021   8:14 PM                3D Objects                                                           
d-r---         1/12/2021   8:14 PM                Contacts                                                             
d-r---         4/27/2021   7:03 PM                Desktop                                                              
d-r---         4/21/2021  10:53 PM                Documents                                                            
d-r---         4/27/2021   7:03 PM                Downloads                                                            
d-r---         1/12/2021   8:14 PM                Favorites                                                            
d-r---         1/12/2021   8:14 PM                Links                                                                
d-r---         1/12/2021   8:14 PM                Music                                                                
d-r---         4/12/2021  10:16 PM                OneDrive                                                             
d-r---         4/20/2021   6:25 AM                Pictures                                                             
d-r---         1/12/2021   8:14 PM                Saved Games                                                          
d-r---         1/12/2021   8:15 PM                Searches                                                             
d-r---         4/27/2021   1:53 PM                Videos                  

Congrats, that’s your first use of the command line. Using ls is great because you can use the info it gives to traverse your directories.

Let’s move around. There’s the cd aka “change directory” command. You can give it relative or absolute paths. Relative means relative to your current directory. So you can easily go to some other folder in your home directory. Another directory in your home directory is Downloads. If you type cd Dow then hit the tab button, it’ll autocomplete to cd .\Downloads\. Hit enter. Now you’re in the Downloads folder.

Get a feel for moving around.

Now, using the CLI with Chia is all like this, just a few more parts. There’s more typing/text but it’s all basically the same command + arguments

First, get familiar with the Chia Wiki: Home · Chia-Network/chia-blockchain Wiki · GitHub

Read through the Beginner’s Guide, the Quick Start guide, and the CLI commands reference.

Follow the guides step by step and you’ll be well on your way to be a Chia farmer.

Read through the FAQ too. You’ll learn the basics from all this. Good luck!

5 Likes

@findingmyglasses this is a good intro too. But read the Chia Github Wiki first.

thanks @Blueoxx i knew a guy at school that had the same name as you! :wink:

1 Like

To avoid having multiple plots trying to write to final spinning disk storage at the same time, I have started installing an inexpensive SSD in all my rigs that works as a staging area for newly minted plots. Then I have a looping batch/cmd file that uses robocopy to move the files of to permanent storage one at a time. This saves me from having to deal with staggering the plots too much.

I start off 5 plots staggered with a -n 10 to do 10 plots each (50 total), but ultimately after the 2nd or 3rd plot they start stepping on each other when writing to the final disk, so the internal SSD takes care of that pretty well.

HTH,

Dan

4 Likes

ive read up about robocopy to take the pressure off the final phase. im all still very new to this though, i do have a separate ssd, which has my os on. i guess to avoid it stacking up that ssd should be a considerable size too (depending on plots and the frequency of staggering obviously) but nice point. i need to get over the basics first. i understand the theory but straggling with the practical bits atm haha

Yep, this is how I do it too. Makes good use of the thunderbolt port, which is otherwise so awkward to take advantage of… thank god they are merging USB 3 and Thunderbolt 3 in USB 4…

okay so after several attempts i believe i now have a full node running in powershell. is this going to be a problem to run the GUI on the same machine?

this is where im currently at. would appreciate it greatly if i get any responses- its only taken me like 8 hours LOL :sweat_smile:

\AppData\Local\chia-blockchain\app-1.1.2\resources\app.asar.unpacked\daemon> from here i ave connected a full node then i am trying to connect all services, such as farmer, wallet etc but it keeps coming up object not found.

1 Like

One pro tip for grep equivalent in powershell… if you have info level logging you’ll have a bunch of logs like this in

C:\Users\user\.chia\mainnet\log

Tell me if I won any proofs / coins!

select-string -path "*.log*" -pattern "1 proof" >proofs.txt

List all my eligibility checks so I can scan the harvester times

select-string -path "*.log*" -pattern "eligible" >eligible.txt

5 Likes

For checking the farmer, a little less memorable, a little more powerful:

gc ~\.chia\mainnet\log\*.log* | ? {$_ -match "INFO.*(?<Plots>\d+) plots.*Found (?<Proofs>\d+).*Time\: (?<Time>\d+\.\d+) s"} | %{$matches} | select Plots,Proofs,Time

You can also sort by time:
gc ~\.chia\mainnet\log\*.log* | ? {$_ -match "INFO.*(?<Plots>\d+) plots.*Found (?<Proofs>\d+).*Time\: (?<Time>\d+\.\d+) s"} | %{$matches} | select Plots,Proofs,Time | sort time

Which gives a clear indication of whether everything is within the expected proof response time.

Foot note: I configured my SuperMicro 846 to flash all the drive status lights if either the proof times go above 5s or no proofs have been tested in the past 60 seconds by scanning the log using a similar trick.

5 Likes

You can launch from CLI, then launch the GUI separately. Unfortunately, when you shut down the GUI, it partially shuts down the one you launched from the CLI, so then you need to relaunch from the CLI. Check GitHub - JustinLloyd/chia-utilities as I have an absolutely non-optimal way of launching the farmer & full-node from the CLI that I trigger on Task Scheduler every couple of hours just in case I took my eye off the ball.

2 Likes

Results are:

proofs.txt :raised_hands:

debug.log.4:127889:2021-05-01T02:12:30.977 harvester chia.harvester.harvester: INFO     2 plots were eligible for 
farming 0629980355... Found 1 proofs. Time: 4.77180 s. Total 1425 plots

eligible.txt :stopwatch:

debug.log:40:2021-05-01T09:23:31.885 harvester chia.harvester.harvester: INFO     1 plots were eligible for farming 
084aaf01e7... Found 0 proofs. Time: 4.34273 s. Total 1425 plots
debug.log:100:2021-05-01T09:23:38.930 harvester chia.harvester.harvester: INFO     6 plots were eligible for farming 
084aaf01e7... Found 0 proofs. Time: 3.87409 s. Total 1425 plots
debug.log:141:2021-05-01T09:23:47.441 harvester chia.harvester.harvester: INFO     4 plots were eligible for farming 
084aaf01e7... Found 0 proofs. Time: 4.16846 s. Total 1425 plots
debug.log:222:2021-05-01T09:23:55.674 harvester chia.harvester.harvester: INFO     2 plots were eligible for farming 
084aaf01e7... Found 0 proofs. Time: 3.51480 s. Total 1425 plots
debug.log:299:2021-05-01T09:24:06.721 harvester chia.harvester.harvester: INFO     1 plots were eligible for farming 
084aaf01e7... Found 0 proofs. Time: 4.42084 s. Total 1425 plots

Not sure why it adds the extra newlines in there…

can you share further on how to use this script. I try putting in Powershell but does not seem to work. Already edit the path and all

2 Likes

okay so ive changed the log level to INFO and ive got a note saying 0 plots eligible for farming althought the gui says its farming. i also have a few lines which say duplicate compact proof. how do i actually make sure the plots i have are farming

i also need some help here

This works in newer pwsh versions but not the default ones shipped with windows. There you need to make $matches into an object select-object expects. The difference is between:

$matches | select *

and

new-object -type psobject -property $matches | select *

So this works:

$logpattern = "INFO.*(?<Plots>\d+) plots.*Found (?<Proofs>\d+).*Time\: (?<Time>\d+\.\d+) s"

get-content ~\.chia\mainnet\log\*.log* |
where-object {$_ -match $logpattern} |
%{new-object -type psobject -property $matches} |
select Plots,Proofs,Time
3 Likes