From ebfa6e337635a9b49425fdd76c4ba42cbe473e7e Mon Sep 17 00:00:00 2001
From: Useless Guru <30080938+UselessGuru@users.noreply.github.com>
Date: Sun, 4 Aug 2024 10:18:57 +0200
Subject: [PATCH] v6.2.23
Changes:
- Rework 'README.md'
Enhancements:
- Core: Remove obsolete code & minor code optimizations
- Miners: Minor code optimizations when reading miner objects
Fixes:
- Core: Miners not getting stopped when idle detection stops mining
- Web GUI: Watchdog timer table not getting cleared when no watchdog timers exist
Miner changes:
- SRBMinerMulti-v2.6.0
---
Balances/HashCryptos.ps1 | 4 +-
Balances/HiveON.ps1 | 4 +-
Balances/MiningDutch.ps1 | 4 +-
Balances/MiningPoolHub.ps1 | 4 +-
Balances/NiceHash External.ps1 | 4 +-
Balances/NiceHash Internal.ps1 | 4 +-
Balances/ProHashing.ps1 | 4 +-
Balances/ZergPool.ps1 | 4 +-
Balances/Zpool.ps1 | 4 +-
Brains/HashCryptos.ps1 | 4 +-
Brains/MiningDutch.ps1 | 4 +-
Brains/ProHashing.ps1 | 4 +-
Brains/ZPool.ps1 | 4 +-
Brains/ZergPool.ps1 | 4 +-
Changelog.txt | 18 +
Data/CoinNames.json | 1 +
Data/DagData.json | 366 +++----
Data/UnprofitableAlgorithms.json | 6 +-
Includes/APIServer.psm1 | 4 +-
Includes/BalancesTracker.ps1 | 4 +-
Includes/Core.ps1 | 10 +-
Includes/Dev/CoinNames.ps1 | 35 +
Includes/Dev/DataReader.ps1 | 146 +++
Includes/Dev/DevAPI.ps1 | 967 ++++++++++++++++++
Includes/Dev/GetMinerData2.ps1 | 53 +
Includes/Dev/GetMinerDataRunspace.ps1 | 47 +
Includes/Dev/SSE.ps1 | 23 +
Includes/Downloader.ps1 | 4 +-
Includes/Include.psm1 | 119 ++-
Includes/LegacyGUI.ps1 | 197 ++--
Includes/MinerAPIs/BzMiner.ps1 | 4 +-
Includes/MinerAPIs/Ccminer.ps1 | 4 +-
Includes/MinerAPIs/EthMiner.ps1 | 4 +-
Includes/MinerAPIs/FireIce.ps1 | 4 +-
Includes/MinerAPIs/Gminer.ps1 | 4 +-
Includes/MinerAPIs/HellMiner.ps1 | 4 +-
Includes/MinerAPIs/MiniZ.ps1 | 4 +-
Includes/MinerAPIs/NBMiner.ps1 | 4 +-
Includes/MinerAPIs/NanoMiner.ps1 | 4 +-
Includes/MinerAPIs/OneZero.ps1 | 4 +-
Includes/MinerAPIs/Rigel.ps1 | 4 +-
Includes/MinerAPIs/SRBMiner.ps1 | 4 +-
Includes/MinerAPIs/TeamBlackMiner.ps1 | 4 +-
Includes/MinerAPIs/Trex.ps1 | 4 +-
Includes/MinerAPIs/Xgminer.ps1 | 4 +-
Includes/MinerAPIs/XmRig.ps1 | 4 +-
Includes/MinerAPIs/lolMiner.ps1 | 4 +-
Miners/BzMiner-v21.4.0.ps1 | 10 +-
Miners/CcminerAlexis78-v1.5.2.ps1 | 8 +-
Miners/CcminerDyn-v1.0.2.ps1 | 6 +-
Miners/CcminerKlausT-v8.25.ps1 | 8 +-
Miners/CcminerKlausT-v8.26x2.ps1 | 8 +-
Miners/CcminerLyra2z330-v8.21r9.ps1 | 8 +-
Miners/CcminerLyraYesscrypt-v8.21r18v5.ps1 | 8 +-
Miners/CcminerMemeHash-v2.5.5.9.ps1 | 10 +-
Miners/CcminerNeoscryptXaya-v0.2.ps1 | 6 +-
Miners/CcminerVerusCpu-v3.8.3.ps1 | 8 +-
Miners/CcminerVerusGpu-v3.8.3.ps1 | 8 +-
Miners/ClaymoreNeoscrypt-v1.2.ps1 | 8 +-
Miners/CpuMiner-v1.4.ps1 | 6 +-
Miners/CpuMinerAurum-v3.23.1.ps1 | 6 +-
Miners/CryptoDredge-v0.16.0.ps1 | 8 +-
Miners/CryptoDredge-v0.27.0.ps1 | 6 +-
Miners/EthMiner-v0.19.0.18.ps1 | 6 +-
Miners/EvrProgPow-v1p3p0.ps1 | 6 +-
Miners/FrkHashMiner-v1.3.14.ps1 | 6 +-
Miners/GMiner-v2.75.ps1 | 12 +-
Miners/GMiner-v3.44.ps1 | 14 +-
Miners/HellMiner-v0.59.1.ps1 | 6 +-
Miners/JayddeeCpu-v24.4.ps1 | 6 +-
Miners/KawpowMiner-v1.2.4cl.ps1 | 6 +-
Miners/KawpowMiner-v1.2.4cuda.ps1 | 6 +-
Miners/Kudaraidee-v1.2.0a.ps1 | 6 +-
Miners/MeowPowMiner-v2.0.0cl.ps1 | 6 +-
Miners/MeowPowMiner-v2.0.0cuda.ps1 | 6 +-
Miners/MiniZ-v2.4d.ps1 | 11 +-
Miners/NBMiner-v42.3.ps1 | 11 +-
Miners/NSFMiner-v1.3.14.ps1 | 6 +-
Miners/NanoMiner-v3.9.2.ps1 | 69 +-
Miners/Ninjarig-1.0.3.ps1 | 6 +-
Miners/NosuchCpu-v3.8.8.1.ps1 | 6 +-
Miners/OneZeroMiner-v1.3.7.ps1 | 8 +-
Miners/PhoenixMiner-v6.2c.ps1 | 13 +-
Miners/Radiator-v1.0.0.ps1 | 10 +-
Miners/Raptor3umCpu-v2.0.ps1 | 6 +-
Miners/Rigel-v1.18.1.ps1 | 12 +-
Miners/RplantCpu-v5.0.41.ps1 | 6 +-
Miners/RrkzCpu-v4.2.ps1 | 6 +-
Miners/SCCminer-v1.1.0.ps1 | 8 +-
Miners/SRBMinerMulti-v0.9.4.ps1 | 9 +-
...ti-v2.5.9.ps1 => SRBMinerMulti-v2.6.0.ps1} | 31 +-
Miners/SgMinerFancyIX-v0.9.4.ps1 | 8 +-
Miners/Suprminer-v2.31v2.ps1 | 6 +-
Miners/TTMiner-v2024.3.2.ps1 | 18 +-
Miners/TTMiner-v5.0.3.ps1 | 14 +-
Miners/TeamBlackMiner-v2.25.ps1 | 13 +-
Miners/TeamRedMiner-v0.10.21.ps1 | 10 +-
Miners/Trex-v0.26.8.ps1 | 18 +-
Miners/Wildrig-v0.40.6.ps1 | 6 +-
Miners/XLArig-v5.2.4.ps1 | 6 +-
Miners/XmRig-v6.21.3.15.ps1 | 8 +-
Miners/XmrStak-v2.10.8.ps1 | 6 +-
Miners/ZealotEnemy-v2.6.3.ps1 | 8 +-
Miners/lolMiner-v1.88.ps1 | 8 +-
Pools/HashCryptos.ps1 | 4 +-
Pools/HiveON.ps1 | 4 +-
Pools/MiningDutch.ps1 | 4 +-
Pools/MiningPoolHub.ps1 | 4 +-
Pools/NiceHash.ps1 | 4 +-
Pools/ProHashing.ps1 | 4 +-
Pools/ZPool.ps1 | 4 +-
Pools/ZergPool.ps1 | 4 +-
README.md | 70 +-
UG-Miner.ps1 | 36 +-
Version.txt | 2 +-
Web/scripts/demo.ps1 | 4 +-
116 files changed, 2044 insertions(+), 779 deletions(-)
create mode 100644 Includes/Dev/CoinNames.ps1
create mode 100644 Includes/Dev/DataReader.ps1
create mode 100644 Includes/Dev/DevAPI.ps1
create mode 100644 Includes/Dev/GetMinerData2.ps1
create mode 100644 Includes/Dev/GetMinerDataRunspace.ps1
create mode 100644 Includes/Dev/SSE.ps1
rename Miners/{SRBMinerMulti-v2.5.9.ps1 => SRBMinerMulti-v2.6.0.ps1} (97%)
diff --git a/Balances/HashCryptos.ps1 b/Balances/HashCryptos.ps1
index 9078d156..cd5913dc 100644
--- a/Balances/HashCryptos.ps1
+++ b/Balances/HashCryptos.ps1
@@ -18,8 +18,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
File: \Balances\HashCryptos.ps1
-Version: 6.2.22
-Version date: 2024/08/01
+Version: 6.2.23
+Version date: 2024/08/04
#>
$Name = [String](Get-Item $MyInvocation.MyCommand.Path).BaseName
diff --git a/Balances/HiveON.ps1 b/Balances/HiveON.ps1
index 3fb493ec..af157a51 100644
--- a/Balances/HiveON.ps1
+++ b/Balances/HiveON.ps1
@@ -18,8 +18,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
File: \Balances\Hiveon.ps1
-Version: 6.2.22
-Version date: 2024/08/01
+Version: 6.2.23
+Version date: 2024/08/04
#>
$Name = [String](Get-Item $MyInvocation.MyCommand.Path).BaseName
diff --git a/Balances/MiningDutch.ps1 b/Balances/MiningDutch.ps1
index baf767c4..5dd2f0fa 100644
--- a/Balances/MiningDutch.ps1
+++ b/Balances/MiningDutch.ps1
@@ -18,8 +18,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
File: \Balances\MiningDutch.ps1
-Version: 6.2.22
-Version date: 2024/08/01
+Version: 6.2.23
+Version date: 2024/08/04
#>
$Name = [String](Get-Item $MyInvocation.MyCommand.Path).BaseName
diff --git a/Balances/MiningPoolHub.ps1 b/Balances/MiningPoolHub.ps1
index 97f96779..0920f362 100644
--- a/Balances/MiningPoolHub.ps1
+++ b/Balances/MiningPoolHub.ps1
@@ -18,8 +18,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
File: \Balances\MiningPoolHub.ps1
-Version: 6.2.22
-Version date: 2024/08/01
+Version: 6.2.23
+Version date: 2024/08/04
#>
$Name = [String](Get-Item $MyInvocation.MyCommand.Path).BaseName
diff --git a/Balances/NiceHash External.ps1 b/Balances/NiceHash External.ps1
index 367f39cc..10f2af01 100644
--- a/Balances/NiceHash External.ps1
+++ b/Balances/NiceHash External.ps1
@@ -18,8 +18,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
File: \Balances\NiceHash Internal.ps1
-Version: 6.2.22
-Version date: 2024/08/01
+Version: 6.2.23
+Version date: 2024/08/04
#>
$Name = [String](Get-Item $MyInvocation.MyCommand.Path).BaseName
diff --git a/Balances/NiceHash Internal.ps1 b/Balances/NiceHash Internal.ps1
index b69456a5..e11da002 100644
--- a/Balances/NiceHash Internal.ps1
+++ b/Balances/NiceHash Internal.ps1
@@ -18,8 +18,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
File: \Balances\NiceHash Internal.ps1
-Version: 6.2.22
-Version date: 2024/08/01
+Version: 6.2.23
+Version date: 2024/08/04
#>
$Name = [String](Get-Item $MyInvocation.MyCommand.Path).BaseName
diff --git a/Balances/ProHashing.ps1 b/Balances/ProHashing.ps1
index e14d5d50..c71b52d5 100644
--- a/Balances/ProHashing.ps1
+++ b/Balances/ProHashing.ps1
@@ -18,8 +18,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
File: \Balances\ProHashing.ps1
-Version: 6.2.22
-Version date: 2024/08/01
+Version: 6.2.23
+Version date: 2024/08/04
#>
$Name = [String](Get-Item $MyInvocation.MyCommand.Path).BaseName
diff --git a/Balances/ZergPool.ps1 b/Balances/ZergPool.ps1
index df6ecbf5..85ab0653 100644
--- a/Balances/ZergPool.ps1
+++ b/Balances/ZergPool.ps1
@@ -18,8 +18,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
File: \Balances\ZergPool.ps1
-Version: 6.2.22
-Version date: 2024/08/01
+Version: 6.2.23
+Version date: 2024/08/04
#>
$Name = [String](Get-Item $MyInvocation.MyCommand.Path).BaseName
diff --git a/Balances/Zpool.ps1 b/Balances/Zpool.ps1
index 7fe034f1..0fe78294 100644
--- a/Balances/Zpool.ps1
+++ b/Balances/Zpool.ps1
@@ -18,8 +18,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
File: \Balances\Zpool.ps1
-Version: 6.2.22
-Version date: 2024/08/01
+Version: 6.2.23
+Version date: 2024/08/04
#>
$Name = [String](Get-Item $MyInvocation.MyCommand.Path).BaseName
diff --git a/Brains/HashCryptos.ps1 b/Brains/HashCryptos.ps1
index 0aacbcd2..933c725c 100644
--- a/Brains/HashCryptos.ps1
+++ b/Brains/HashCryptos.ps1
@@ -19,8 +19,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
File: \Brains\MiningDutch.ps1
-Version: 6.2.22
-Version date: 2024/08/01
+Version: 6.2.23
+Version date: 2024/08/04
#>
using module ..\Includes\Include.psm1
diff --git a/Brains/MiningDutch.ps1 b/Brains/MiningDutch.ps1
index 8d43fba0..0e8b1510 100644
--- a/Brains/MiningDutch.ps1
+++ b/Brains/MiningDutch.ps1
@@ -19,8 +19,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
File: \Brains\MiningDutch.ps1
-Version: 6.2.22
-Version date: 2024/08/01
+Version: 6.2.23
+Version date: 2024/08/04
#>
using module ..\Includes\Include.psm1
diff --git a/Brains/ProHashing.ps1 b/Brains/ProHashing.ps1
index 2a6f6681..fd9ac716 100644
--- a/Brains/ProHashing.ps1
+++ b/Brains/ProHashing.ps1
@@ -19,8 +19,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
File: \Brains\ProHashing.ps1
-Version: 6.2.22
-Version date: 2024/08/01
+Version: 6.2.23
+Version date: 2024/08/04
#>
using module ..\Includes\Include.psm1
diff --git a/Brains/ZPool.ps1 b/Brains/ZPool.ps1
index 52239fcf..e53fee41 100644
--- a/Brains/ZPool.ps1
+++ b/Brains/ZPool.ps1
@@ -19,8 +19,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
File: \Brains\ZPool.ps1
-Version: 6.2.22
-Version date: 2024/08/01
+Version: 6.2.23
+Version date: 2024/08/04
#>
using module ..\Includes\Include.psm1
diff --git a/Brains/ZergPool.ps1 b/Brains/ZergPool.ps1
index df21e60f..4964d2f7 100644
--- a/Brains/ZergPool.ps1
+++ b/Brains/ZergPool.ps1
@@ -19,8 +19,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
File: \Brains\ZergPool.ps1
-Version: 6.2.22
-Version date: 2024/08/01
+Version: 6.2.23
+Version date: 2024/08/04
#>
using module ..\Includes\Include.psm1
diff --git a/Changelog.txt b/Changelog.txt
index ffa4bf73..9f3dadd1 100644
--- a/Changelog.txt
+++ b/Changelog.txt
@@ -3,6 +3,24 @@ Known issues:
- UG-Miner has issues with new Windows Terminal when the default terminal application is set to 'Let windows decide' or 'Windows Terminal'.
-> It is recommended to set it to 'Windows Console Host'
+Changelog UG-Miner 6.2.23 2024/08/04
+====================================
+
+Changes:
+- Rework 'README.md'
+
+Enhancements:
+- Core: Remove obsolete code & minor code optimizations
+- Miners: Minor code optimizations when reading miner objects
+
+Fixes:
+- Core: Miners not getting stopped when idle detection stops mining
+- Web GUI: Watchdog timer table not getting cleared when no watchdog timers exist
+
+Miner changes:
+- SRBMinerMulti-v2.6.0
+
+
Changelog UG-Miner 6.2.22 2024/08/01
====================================
diff --git a/Data/CoinNames.json b/Data/CoinNames.json
index a2ad641e..f9b31ed5 100644
--- a/Data/CoinNames.json
+++ b/Data/CoinNames.json
@@ -341,6 +341,7 @@
"XCH": "Chia",
"XDN": "Digitalnote",
"XEC": "Ecash",
+ "XEL": "Xelis",
"XEQ": "Equilibria",
"XHV": "Haven",
"XLA": "Scala",
diff --git a/Data/DagData.json b/Data/DagData.json
index e3d9e966..ccf33805 100644
--- a/Data/DagData.json
+++ b/Data/DagData.json
@@ -1,15 +1,15 @@
{
"Algorithm": {
"Autolykos2": {
- "BlockHeight": 1320510,
+ "BlockHeight": 1322642,
"CoinName": [
"ERG"
],
"DAGsize": 4118968140,
- "Epoch": 884
+ "Epoch": 886
},
"EtcHash": {
- "BlockHeight": 20401152,
+ "BlockHeight": 20420441,
"CoinName": [
"ETC"
],
@@ -17,7 +17,7 @@
"Epoch": 342
},
"Ethash": {
- "BlockHeight": 19983295,
+ "BlockHeight": 20002795,
"CoinName": [
"ETHW"
],
@@ -25,15 +25,15 @@
"Epoch": 668
},
"EthashB3": {
- "BlockHeight": 3740242,
+ "BlockHeight": 3769957,
"CoinName": [
"HYP"
],
- "DAGsize": 2130700672,
- "Epoch": 126
+ "DAGsize": 2139092608,
+ "Epoch": 127
},
"EvrProgPow": {
- "BlockHeight": 916082,
+ "BlockHeight": 920401,
"CoinName": [
"EVR"
],
@@ -41,15 +41,15 @@
"Epoch": 78
},
"FiroPow": {
- "BlockHeight": 932231,
+ "BlockHeight": 933878,
"CoinName": [
"FIRO"
],
- "DAGsize": 7105149824,
- "Epoch": 719
+ "DAGsize": 7113536896,
+ "Epoch": 720
},
"FishHash": {
- "BlockHeight": 677615,
+ "BlockHeight": 681992,
"CoinName": [
"IRON"
],
@@ -57,12 +57,12 @@
"Epoch": 448
},
"KawPow": {
- "BlockHeight": 3434578,
+ "BlockHeight": 3438860,
"CoinName": [
"RVN"
],
- "DAGsize": 4924110976,
- "Epoch": 459
+ "DAGsize": 4932499328,
+ "Epoch": 460
},
"MeowPow": {
"BlockHeight": 971453,
@@ -73,15 +73,15 @@
"Epoch": 131
},
"Octopus": {
- "BlockHeight": 101513374,
+ "BlockHeight": 101734613,
"CoinName": [
"CFX"
],
- "DAGsize": 7566520064,
- "Epoch": 195
+ "DAGsize": 7583300864,
+ "Epoch": 196
},
"ProgPowSero": {
- "BlockHeight": 13140240,
+ "BlockHeight": 13160278,
"CoinName": [
"SERO"
],
@@ -89,7 +89,7 @@
"Epoch": 440
},
"ProgPowZ": {
- "BlockHeight": 2746004,
+ "BlockHeight": 2750295,
"CoinName": [
"ZANO"
],
@@ -97,7 +97,7 @@
"Epoch": 93
},
"SCCpow": {
- "BlockHeight": 956188,
+ "BlockHeight": 958364,
"CoinName": [
"SCC"
],
@@ -115,44 +115,44 @@
},
"Currency": {
"*": {
- "BlockHeight": 101513374,
+ "BlockHeight": 101734613,
"CoinName": "*",
- "DAGsize": 7566520064,
- "Epoch": 884
+ "DAGsize": 7583300864,
+ "Epoch": 886
},
"AIDP": {
"Algorithm": "KawPow",
- "BlockHeight": 138691,
+ "BlockHeight": 143018,
"CoinName": "AiDepin",
- "DAGsize": 1241513344,
- "Date": "2024-08-01T07:41:03.8349722Z",
- "Epoch": 20,
- "Url": "https://zergpool.com/api/currencies"
+ "DAGsize": 1249902464,
+ "Date": "2024-08-04T07:29:37.6214341Z",
+ "Epoch": 21,
+ "Url": "https://whattomine.com/coins.json"
},
"AIPG": {
"Algorithm": "KawPow",
- "BlockHeight": 337606,
+ "BlockHeight": 341895,
"CoinName": "Aipowergrid",
"DAGsize": 1468006016,
- "Date": "2024-08-01T07:41:03.8558995Z",
+ "Date": "2024-08-04T07:29:37.6360067Z",
"Epoch": 47,
- "Url": "https://zergpool.com/api/currencies"
+ "Url": "https://whattomine.com/coins.json"
},
"AITT": {
"Algorithm": "KawPow",
- "BlockHeight": 867792,
+ "BlockHeight": 884906,
"CoinName": "AittCoin",
- "DAGsize": 2055208576,
- "Date": "2024-08-01T07:41:03.8585104Z",
- "Epoch": 117,
- "Url": "https://zergpool.com/api/currencies"
+ "DAGsize": 2071981952,
+ "Date": "2024-08-04T07:29:37.6526342Z",
+ "Epoch": 119,
+ "Url": "https://whattomine.com/coins.json"
},
"AKA": {
"Algorithm": "Ethash",
"BlockHeight": 11735607,
"CoinName": "AKA",
"DAGsize": 4370458496,
- "Date": "2024-08-01T07:41:04.3811581Z",
+ "Date": "2024-08-04T07:29:38.1779069Z",
"Epoch": 393,
"Url": "https://minerstat.com/dag-size-calculator"
},
@@ -167,47 +167,47 @@
},
"ANOK": {
"Algorithm": "KawPow",
- "BlockHeight": 175833,
+ "BlockHeight": 179618,
"CoinName": "Anokas",
"DAGsize": 1283453312,
- "Date": "2024-08-01T07:41:03.9630252Z",
+ "Date": "2024-08-04T07:29:37.6022193Z",
"Epoch": 25,
"Url": "https://whattomine.com/coins.json"
},
"AVS": {
"Algorithm": "Ethash",
- "BlockHeight": 4044313,
+ "BlockHeight": 4064447,
"CoinName": "Aves",
- "DAGsize": 2214587264,
- "Date": "2024-08-01T07:41:03.876886Z",
- "Epoch": 136,
+ "DAGsize": 2222979712,
+ "Date": "2024-08-04T07:29:37.3994247Z",
+ "Epoch": 137,
"Url": "https://zergpool.com/api/currencies"
},
"BTN": {
"Algorithm": "Ethash",
- "BlockHeight": 2578226,
+ "BlockHeight": 2598482,
"CoinName": "Bitnetmoney",
- "DAGsize": 1803550592,
- "Date": "2024-08-01T07:41:03.9251565Z",
- "Epoch": 87,
- "Url": "https://zergpool.com/api/currencies"
+ "DAGsize": 1811937664,
+ "Date": "2024-08-04T07:29:37.6653126Z",
+ "Epoch": 88,
+ "Url": "https://whattomine.com/coins.json"
},
"CAU": {
"Algorithm": "Ethash",
- "BlockHeight": 4677475,
+ "BlockHeight": 4718496,
"CoinName": "Canxium",
- "DAGsize": 2390748544,
- "Date": "2024-08-01T07:41:04.4082136Z",
- "Epoch": 157,
+ "DAGsize": 2407530368,
+ "Date": "2024-08-04T07:29:38.2025287Z",
+ "Epoch": 159,
"Url": "https://minerstat.com/dag-size-calculator"
},
"CFX": {
"Algorithm": "Octopus",
- "BlockHeight": 101513374,
+ "BlockHeight": 101734613,
"CoinName": "Conflux",
- "DAGsize": 7566520064,
- "Date": "2024-08-01T07:41:07.0853082Z",
- "Epoch": 195,
+ "DAGsize": 7583300864,
+ "Date": "2024-08-04T07:29:41.0618243Z",
+ "Epoch": 196,
"Url": "https://prohashing.com/api/v1/currencies"
},
"CLO": {
@@ -221,56 +221,56 @@
},
"CLORE": {
"Algorithm": "KawPow",
- "BlockHeight": 859471,
+ "BlockHeight": 863750,
"CoinName": "Clore",
- "DAGsize": 2046819968,
- "Date": "2024-08-01T07:41:03.9418939Z",
- "Epoch": 116,
- "Url": "https://zergpool.com/api/currencies"
+ "DAGsize": 2055208576,
+ "Date": "2024-08-04T07:29:37.5975101Z",
+ "Epoch": 117,
+ "Url": "https://whattomine.com/coins.json"
},
"CMS": {
"Algorithm": "KawPow",
- "BlockHeight": 167063,
+ "BlockHeight": 170767,
"CoinName": "Cmusicai",
"DAGsize": 1275067264,
- "Date": "2024-08-01T07:41:03.9446848Z",
+ "Date": "2024-08-04T07:29:37.5331684Z",
"Epoch": 24,
"Url": "https://zergpool.com/api/currencies"
},
"DINT": {
"Algorithm": "KawPow",
- "BlockHeight": 342399,
+ "BlockHeight": 346484,
"CoinName": "Dinartether",
- "DAGsize": 1468006016,
- "Date": "2024-08-01T07:41:03.9764986Z",
- "Epoch": 47,
+ "DAGsize": 1476394112,
+ "Date": "2024-08-04T07:29:37.6165676Z",
+ "Epoch": 48,
"Url": "https://zergpool.com/api/currencies"
},
"DOGETHER": {
"Algorithm": "Ethash",
- "BlockHeight": 1117083,
+ "BlockHeight": 1131494,
"CoinName": "Dogether",
"DAGsize": 1400897408,
- "Date": "2024-08-01T07:41:04.0571325Z",
+ "Date": "2024-08-04T07:29:37.679507Z",
"Epoch": 39,
"Url": "https://whattomine.com/coins.json"
},
"EGAZ": {
"Algorithm": "EtcHash",
- "BlockHeight": 5605526,
+ "BlockHeight": 5625583,
"CoinName": "Etica",
- "DAGsize": 2650796416,
- "Date": "2024-08-01T07:41:04.0275857Z",
- "Epoch": 188,
+ "DAGsize": 2659188352,
+ "Date": "2024-08-04T07:29:37.6876244Z",
+ "Epoch": 189,
"Url": "https://whattomine.com/coins.json"
},
"EGEM": {
"Algorithm": "Ethash",
- "BlockHeight": 16106745,
+ "BlockHeight": 16128028,
"CoinName": "Ethergem",
- "DAGsize": 5586811264,
- "Date": "2024-08-01T07:41:04.0040793Z",
- "Epoch": 538,
+ "DAGsize": 5595193216,
+ "Date": "2024-08-04T07:29:37.6774103Z",
+ "Epoch": 539,
"Url": "https://whattomine.com/coins.json"
},
"ELH": {
@@ -284,11 +284,11 @@
},
"ERG": {
"Algorithm": "Autolykos2",
- "BlockHeight": 1320510,
+ "BlockHeight": 1322642,
"CoinName": "Ergo",
"DAGsize": 4118968140,
- "Date": "2024-08-01T07:41:07.0799834Z",
- "Epoch": 884,
+ "Date": "2024-08-04T07:29:41.0582911Z",
+ "Epoch": 886,
"Url": "https://prohashing.com/api/v1/currencies"
},
"ESN": {
@@ -296,16 +296,16 @@
"BlockHeight": 6408009,
"CoinName": "Ethersocial",
"DAGsize": 2877286784,
- "Date": "2024-08-01T07:41:04.3899963Z",
+ "Date": "2024-08-04T07:29:38.1962238Z",
"Epoch": 215,
"Url": "https://minerstat.com/dag-size-calculator"
},
"ETC": {
"Algorithm": "EtcHash",
- "BlockHeight": 20401152,
+ "BlockHeight": 20420441,
"CoinName": "EthereumClassic",
"DAGsize": 3942645376,
- "Date": "2024-08-01T07:41:04.0480528Z",
+ "Date": "2024-08-04T07:29:37.6720276Z",
"Epoch": 342,
"Url": "https://whattomine.com/coins.json"
},
@@ -320,19 +320,19 @@
},
"ETHO": {
"Algorithm": "Ethash",
- "BlockHeight": 14590593,
+ "BlockHeight": 14610908,
"CoinName": "EthoProtocol",
- "DAGsize": 5167382144,
- "Date": "2024-08-01T07:41:04.003142Z",
- "Epoch": 488,
- "Url": "https://zergpool.com/api/currencies"
+ "DAGsize": 5175769472,
+ "Date": "2024-08-04T07:29:37.6591833Z",
+ "Epoch": 489,
+ "Url": "https://whattomine.com/coins.json"
},
"ETHW": {
"Algorithm": "Ethash",
- "BlockHeight": 19983295,
+ "BlockHeight": 20002795,
"CoinName": "EthereumPow",
"DAGsize": 6677330048,
- "Date": "2024-08-01T07:41:04.0429987Z",
+ "Date": "2024-08-04T07:29:37.6740202Z",
"Epoch": 668,
"Url": "https://whattomine.com/coins.json"
},
@@ -347,21 +347,21 @@
},
"ETP": {
"Algorithm": "Ethash",
- "BlockHeight": 9790668,
+ "BlockHeight": 9802807,
"CoinName": "Metaverse",
"DAGsize": 3825204608,
- "Date": "2024-08-01T07:41:04.38352Z",
+ "Date": "2024-08-04T07:29:38.1824431Z",
"Epoch": 328,
"Url": "https://minerstat.com/dag-size-calculator"
},
"EVR": {
"Algorithm": "EvrProgPow",
- "BlockHeight": 916082,
+ "BlockHeight": 920401,
"CoinName": "Evrmore",
"DAGsize": 3875536256,
- "Date": "2024-08-01T07:41:04.0368781Z",
+ "Date": "2024-08-04T07:29:37.5727867Z",
"Epoch": 78,
- "Url": "https://zergpool.com/api/currencies"
+ "Url": "https://whattomine.com/coins.json"
},
"EXP": {
"Algorithm": "Ethash",
@@ -374,11 +374,11 @@
},
"FIRO": {
"Algorithm": "FiroPow",
- "BlockHeight": 932231,
+ "BlockHeight": 933878,
"CoinName": "Firo",
- "DAGsize": 7105149824,
- "Date": "2024-08-01T07:41:03.9745026Z",
- "Epoch": 719,
+ "DAGsize": 7113536896,
+ "Date": "2024-08-04T07:29:37.5922062Z",
+ "Epoch": 720,
"Url": "https://whattomine.com/coins.json"
},
"FLORA": {
@@ -386,26 +386,26 @@
"BlockHeight": 789635,
"CoinName": "",
"DAGsize": 1308619904,
- "Date": "2024-08-01T07:41:05.261277Z",
+ "Date": "2024-08-04T07:29:38.9649596Z",
"Epoch": 28,
"Url": "https://minerstat.com/dag-size-calculator"
},
"FREN": {
"Algorithm": "KawPow",
- "BlockHeight": 1289795,
+ "BlockHeight": 1298389,
"CoinName": "FrenCoin",
- "DAGsize": 2524970368,
- "Date": "2024-08-01T07:41:04.054897Z",
- "Epoch": 173,
- "Url": "https://zergpool.com/api/currencies"
+ "DAGsize": 2541743488,
+ "Date": "2024-08-04T07:29:37.6484506Z",
+ "Epoch": 175,
+ "Url": "https://whattomine.com/coins.json"
},
"GPN": {
"Algorithm": "KawPow",
- "BlockHeight": 657105,
+ "BlockHeight": 661404,
"CoinName": "Gamepass",
- "DAGsize": 1820327552,
- "Date": "2024-08-01T07:41:04.0751178Z",
- "Epoch": 89,
+ "DAGsize": 1828711552,
+ "Date": "2024-08-04T07:29:37.7519238Z",
+ "Epoch": 90,
"Url": "https://zergpool.com/api/currencies"
},
"HVQ": {
@@ -419,38 +419,38 @@
},
"HYP": {
"Algorithm": "EthashB3",
- "BlockHeight": 3740242,
+ "BlockHeight": 3769957,
"CoinName": "Hypra",
- "DAGsize": 2130700672,
- "Date": "2024-08-01T07:41:04.0997379Z",
- "Epoch": 126,
+ "DAGsize": 2139092608,
+ "Date": "2024-08-04T07:29:37.7743434Z",
+ "Epoch": 127,
"Url": "https://zergpool.com/api/currencies"
},
"IRON": {
"Algorithm": "FishHash",
- "BlockHeight": 677615,
+ "BlockHeight": 681992,
"CoinName": "Ironfish",
"DAGsize": 4831838208,
- "Date": "2024-08-01T07:41:03.9474635Z",
+ "Date": "2024-08-04T07:29:37.6424275Z",
"Epoch": 448,
"Url": "https://whattomine.com/coins.json"
},
"KIIRO": {
"Algorithm": "FiroPow",
- "BlockHeight": 217292,
+ "BlockHeight": 218917,
"CoinName": "KiiroCoin",
- "DAGsize": 2491414144,
- "Date": "2024-08-01T07:41:04.111093Z",
- "Epoch": 169,
- "Url": "https://zergpool.com/api/currencies"
+ "DAGsize": 2499803776,
+ "Date": "2024-08-04T07:29:37.6447339Z",
+ "Epoch": 170,
+ "Url": "https://whattomine.com/coins.json"
},
"LRS": {
"Algorithm": "Ethash",
- "BlockHeight": 1348965,
+ "BlockHeight": 1369024,
"CoinName": "Larissa",
- "DAGsize": 1459615616,
- "Date": "2024-08-01T07:41:04.0458582Z",
- "Epoch": 46,
+ "DAGsize": 1468006016,
+ "Date": "2024-08-04T07:29:37.6680194Z",
+ "Epoch": 47,
"Url": "https://whattomine.com/coins.json"
},
"META": {
@@ -473,38 +473,38 @@
},
"MOAC": {
"Algorithm": "Ethash",
- "BlockHeight": 14014514,
+ "BlockHeight": 14033937,
"CoinName": "",
"DAGsize": 5007998848,
- "Date": "2024-08-01T07:41:04.3730478Z",
+ "Date": "2024-08-04T07:29:37.8453314Z",
"Epoch": 469,
"Url": "https://minerstat.com/dag-size-calculator"
},
"NEOX": {
"Algorithm": "KawPow",
- "BlockHeight": 1152679,
+ "BlockHeight": 1156973,
"CoinName": "Neoxa",
- "DAGsize": 2373966976,
- "Date": "2024-08-01T07:41:04.1360821Z",
- "Epoch": 155,
- "Url": "https://zergpool.com/api/currencies"
+ "DAGsize": 2382363008,
+ "Date": "2024-08-04T07:29:37.5999242Z",
+ "Epoch": 156,
+ "Url": "https://whattomine.com/coins.json"
},
"NILU": {
"Algorithm": "Ethash",
- "BlockHeight": 6244732,
+ "BlockHeight": 6244736,
"CoinName": "",
"DAGsize": 2835349376,
- "Date": "2024-08-01T07:41:04.3914685Z",
+ "Date": "2024-08-04T07:29:38.1977733Z",
"Epoch": 210,
"Url": "https://minerstat.com/dag-size-calculator"
},
"NIR": {
"Algorithm": "ProgPowZ",
- "BlockHeight": 566827,
+ "BlockHeight": 575414,
"CoinName": "Nirmata",
- "DAGsize": 1241513344,
- "Date": "2024-08-01T07:41:03.9161741Z",
- "Epoch": 20,
+ "DAGsize": 1249902464,
+ "Date": "2024-08-04T07:29:37.5941499Z",
+ "Epoch": 21,
"Url": "https://whattomine.com/coins.json"
},
"NUKO": {
@@ -512,26 +512,26 @@
"BlockHeight": 8848535,
"CoinName": "",
"DAGsize": 3556763264,
- "Date": "2024-08-01T07:41:04.38716Z",
+ "Date": "2024-08-04T07:29:38.1913143Z",
"Epoch": 296,
"Url": "https://minerstat.com/dag-size-calculator"
},
"OCTA": {
"Algorithm": "Ethash",
- "BlockHeight": 5167935,
+ "BlockHeight": 5188025,
"CoinName": "Octaspace",
"DAGsize": 2533359232,
- "Date": "2024-08-01T07:41:04.0366213Z",
+ "Date": "2024-08-04T07:29:37.6701624Z",
"Epoch": 174,
"Url": "https://whattomine.com/coins.json"
},
"PAPRY": {
"Algorithm": "KawPow",
- "BlockHeight": 756905,
+ "BlockHeight": 761207,
"CoinName": "Paprika",
- "DAGsize": 1929379456,
- "Date": "2024-08-01T07:41:04.1629621Z",
- "Epoch": 102,
+ "DAGsize": 1937765504,
+ "Date": "2024-08-04T07:29:38.2653765Z",
+ "Epoch": 103,
"Url": "https://zergpool.com/api/currencies"
},
"PGC": {
@@ -545,20 +545,20 @@
},
"PRCO": {
"Algorithm": "KawPow",
- "BlockHeight": 1122029,
+ "BlockHeight": 1126339,
"CoinName": "ProcyonCoin",
- "DAGsize": 2340420224,
- "Date": "2024-08-01T07:41:04.3183493Z",
- "Epoch": 151,
+ "DAGsize": 2348808064,
+ "Date": "2024-08-04T07:29:38.3756001Z",
+ "Epoch": 152,
"Url": "https://zergpool.com/api/currencies"
},
"QKC": {
"Algorithm": "Ethash",
- "BlockHeight": 16916997,
+ "BlockHeight": 16943348,
"CoinName": "Quarkchain",
- "DAGsize": 5813300608,
- "Date": "2024-08-01T07:41:04.0409853Z",
- "Epoch": 565,
+ "DAGsize": 5821692544,
+ "Date": "2024-08-04T07:29:37.6817094Z",
+ "Epoch": 566,
"Url": "https://whattomine.com/coins.json"
},
"REDEV2": {
@@ -581,37 +581,37 @@
},
"RVN": {
"Algorithm": "KawPow",
- "BlockHeight": 3434578,
+ "BlockHeight": 3438860,
"CoinName": "RavenCoin",
- "DAGsize": 4924110976,
- "Date": "2024-08-01T07:41:07.0826073Z",
- "Epoch": 459,
+ "DAGsize": 4932499328,
+ "Date": "2024-08-04T07:29:41.0600256Z",
+ "Epoch": 460,
"Url": "https://prohashing.com/api/v1/currencies"
},
"SATOX": {
"Algorithm": "KawPow",
- "BlockHeight": 807975,
+ "BlockHeight": 812282,
"CoinName": "Sato",
- "DAGsize": 1988093056,
- "Date": "2024-08-01T07:41:04.4098742Z",
- "Epoch": 109,
- "Url": "https://zergpool.com/api/currencies"
+ "DAGsize": 1996487552,
+ "Date": "2024-08-04T07:29:37.6340357Z",
+ "Epoch": 110,
+ "Url": "https://whattomine.com/coins.json"
},
"SCC": {
"Algorithm": "SCCpow",
- "BlockHeight": 956188,
+ "BlockHeight": 958364,
"CoinName": "Stakecube",
"DAGsize": 3565157248,
- "Date": "2024-08-01T07:41:07.1680327Z",
+ "Date": "2024-08-04T07:29:41.1489066Z",
"Epoch": 297,
"Url": "https://www.coinexplorer.net/api/v1/SCC/getblockcount"
},
"SERO": {
"Algorithm": "ProgPowSero",
- "BlockHeight": 13140240,
+ "BlockHeight": 13160278,
"CoinName": "Sero",
"DAGsize": 4764727936,
- "Date": "2024-08-01T07:41:03.9303236Z",
+ "Date": "2024-08-04T07:29:37.6194576Z",
"Epoch": 440,
"Url": "https://whattomine.com/coins.json"
},
@@ -629,27 +629,27 @@
"BlockHeight": 5517628,
"CoinName": "Ubiq",
"DAGsize": 2625631616,
- "Date": "2024-08-01T07:41:04.3933399Z",
+ "Date": "2024-08-04T07:29:38.200264Z",
"Epoch": 185,
"Url": "https://minerstat.com/dag-size-calculator"
},
"VLC": {
"Algorithm": "KawPow",
- "BlockHeight": 224004,
+ "BlockHeight": 227741,
"CoinName": "Vultaic",
- "DAGsize": 1333787776,
- "Date": "2024-08-01T07:41:05.0325227Z",
- "Epoch": 31,
+ "DAGsize": 1342176128,
+ "Date": "2024-08-04T07:29:38.6811783Z",
+ "Epoch": 32,
"Url": "https://zergpool.com/api/currencies"
},
"XNA": {
"Algorithm": "KawPow",
- "BlockHeight": 673749,
+ "BlockHeight": 678044,
"CoinName": "Neurai",
- "DAGsize": 1837102976,
- "Date": "2024-08-01T07:41:03.924718Z",
- "Epoch": 91,
- "Url": "https://whattomine.com/coins.json"
+ "DAGsize": 1845488768,
+ "Date": "2024-08-04T07:29:38.7254598Z",
+ "Epoch": 92,
+ "Url": "https://zergpool.com/api/currencies"
},
"XPB": {
"Algorithm": "Ethash",
@@ -662,10 +662,10 @@
},
"ZANO": {
"Algorithm": "ProgPowZ",
- "BlockHeight": 2746004,
+ "BlockHeight": 2750295,
"CoinName": "Zano",
"DAGsize": 1853879936,
- "Date": "2024-08-01T07:41:03.906939Z",
+ "Date": "2024-08-04T07:29:37.5698836Z",
"Epoch": 93,
"Url": "https://whattomine.com/coins.json"
}
@@ -673,10 +673,10 @@
"Updated": {
"https://evr.cryptoscope.io/api/getblockcount": "2024-07-13T01:20:59.3256634Z",
"https://mewc.cryptoscope.io/api/getblockcount": "2024-07-14T13:29:49.1181315Z",
- "https://minerstat.com/dag-size-calculator": "2024-08-01T07:41:05.8266089Z",
- "https://prohashing.com/api/v1/currencies": "2024-08-01T07:41:07.0857034Z",
- "https://whattomine.com/coins.json": "2024-08-01T07:41:04.0601355Z",
- "https://www.coinexplorer.net/api/v1/SCC/getblockcount": "2024-08-01T07:41:07.1683917Z",
- "https://zergpool.com/api/currencies": "2024-08-01T07:41:05.0328332Z"
+ "https://minerstat.com/dag-size-calculator": "2024-08-04T07:29:39.8465059Z",
+ "https://prohashing.com/api/v1/currencies": "2024-08-04T07:29:41.0622917Z",
+ "https://whattomine.com/coins.json": "2024-08-04T07:29:37.6897893Z",
+ "https://www.coinexplorer.net/api/v1/SCC/getblockcount": "2024-08-04T07:29:41.1493575Z",
+ "https://zergpool.com/api/currencies": "2024-08-04T07:29:38.7265952Z"
}
}
diff --git a/Data/UnprofitableAlgorithms.json b/Data/UnprofitableAlgorithms.json
index 438731d4..0fe5f7ed 100644
--- a/Data/UnprofitableAlgorithms.json
+++ b/Data/UnprofitableAlgorithms.json
@@ -51,6 +51,7 @@
"Sha256AsicBoost": "*",
"SHA256d": "*",
"SHA256t": "*",
+ "SHA512256d": "*",
"Sia": "1",
"Sib": "*",
"Skein": "*",
@@ -63,7 +64,10 @@
"X14": "*",
"X15": "*",
"X16r": "*",
+ "X16rv2": "*",
"X17": "*",
"X22i": "*",
- "Yesscrypt": "*"
+ "X25": "*",
+ "Yesscrypt": "*",
+ "YesscryptR32": "*"
}
diff --git a/Includes/APIServer.psm1 b/Includes/APIServer.psm1
index 520d4aaa..8e53c3a3 100644
--- a/Includes/APIServer.psm1
+++ b/Includes/APIServer.psm1
@@ -18,8 +18,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
File: \Includes\APIServer.psm1
-Version: 6.2.22
-Version date: 2024/08/01
+Version: 6.2.23
+Version date: 2024/08/04
#>
Function Start-APIServer {
diff --git a/Includes/BalancesTracker.ps1 b/Includes/BalancesTracker.ps1
index 4338268d..1c84806a 100644
--- a/Includes/BalancesTracker.ps1
+++ b/Includes/BalancesTracker.ps1
@@ -19,8 +19,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
File: \Includes\BalancesTracker.ps1
-Version: 6.2.22
-Version date: 2024/08/01
+Version: 6.2.23
+Version date: 2024/08/04
#>
using module .\Include.psm1
diff --git a/Includes/Core.ps1 b/Includes/Core.ps1
index 04b96e9f..e7ce235e 100644
--- a/Includes/Core.ps1
+++ b/Includes/Core.ps1
@@ -19,8 +19,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
File: Core.ps1
-Version: 6.2.22
-Version date: 2024/08/01
+Version: 6.2.23
+Version date: 2024/08/04
#>
using module .\Include.psm1
@@ -81,7 +81,7 @@ Do {
$Variables.PoolsConfig = $Config.PoolsConfig.Clone()
# Tuning parameters require local admin rights
- $Variables.UseMinerTweaks = $Variables.IsLocalAdmin -and $Config.UseMinerTweaks
+ $Variables.ApplyMinerTweaks = $Variables.IsLocalAdmin -and $Config.UseMinerTweaks
Write-Message -Level Info "Started new cycle."
@@ -592,7 +592,7 @@ Do {
# Ensure we get the hashrate for running miners prior looking for best miner
ForEach ($Miner in $Variables.MinersBest | Sort-Object { [String]$_.DeviceNames }) {
If ($Miner.DataReaderJob.HasMoreData -and $Miner.Status -ne [MinerStatus]::DryRun) {
- If ($Samples = @($Miner.DataReaderJob | Receive-Job | Select-Object)) {
+ If ($Samples = @($Miner.DataReaderJob | Receive-Job).Where({ $_.Date })) {
$Sample = $Samples[-1]
If ([Math]::Floor(($Sample.Date - $Miner.ValidDataSampleTimestamp).TotalSeconds) -ge 0) { $Samples.ForEach({ $Miner.Data.Add($_) }) }
$Miner.Hashrates_Live = $Sample.Hashrate.PSObject.Properties.Value
@@ -1427,7 +1427,7 @@ Do {
}
Else {
If ($Miner.DataReaderJob.HasMoreData) {
- If ($Samples = @($Miner.DataReaderJob | Receive-Job | Select-Object)) {
+ If ($Samples = @($Miner.DataReaderJob | Receive-Job).Where({ $_.Date })) {
$Sample = $Samples[-1]
$Miner.Hashrates_Live = $Sample.Hashrate.PSObject.Properties.Value
$Miner.DataSampleTimestamp = $Sample.Date
diff --git a/Includes/Dev/CoinNames.ps1 b/Includes/Dev/CoinNames.ps1
new file mode 100644
index 00000000..caaec1fe
--- /dev/null
+++ b/Includes/Dev/CoinNames.ps1
@@ -0,0 +1,35 @@
+using module c:\Users\Stephan\Desktop\UG-Miner\Includes\Include.psm1
+
+Set-Location c:\Users\Stephan\Desktop\UG-Miner\
+
+$DB = c:\Users\Stephan\Desktop\UG-Miner\Includes\Dev\CoinsDB.json | ConvertFrom-Json
+
+$AlgorithmCurrencies = [Ordered]@{ }
+$CoinList = [Ordered]@{ }
+$CoinDB = [PSCustomObject]@{ }
+$CoinDB2 = @{ }
+(($Db | Get-Member -MemberType NoteProperty).Name | Sort-Object -Unique).ForEach(
+ {
+ $Algorithm = Get-Algorithm $DB.$_.Algo
+ $Currency = $_ -replace '-.+$'
+ $CoinName = $DB.$_.Name -replace 'cash$', 'Cash' -replace 'gold$', "Gold" -replace 'coin$', 'Coin' -replace 'token$', 'Token'
+ $CoinList.$Currency = $CoinName
+ $Data = [PSCustomObject]@{
+ "Algorithm" = $Algorithm
+ "CoinName" = $CoinName
+ "Currency" = $Currency
+ }
+ $CoinDB | Add-Member $_ $Data
+ }
+)
+
+ForEach ($Algorithm in (($CoinDB | Get-Member -MemberType NoteProperty).Name).ForEach({ $CoinDB.$_.Algorithms }) | Sort-Object -Unique) {
+
+ $Currencies = ($CoinDB | Get-Member -MemberType NoteProperty).Name.Where({ $CoinDB.$_.Algorithms -match $Algorithm })
+ If ($Currencies.Count -eq 1) {
+ $AlgorithmCurrencies.$Algorithm = $Currencies
+ }
+}
+
+$CoinList | ConvertTo-Json > c:\Users\Stephan\Desktop\UG-Miner\Includes\CoinNames.json
+$AlgorithmCurrencies | ConvertTo-Json > c:\Users\Stephan\Desktop\UG-Miner\Includes\AlgorithmCurrency.json
diff --git a/Includes/Dev/DataReader.ps1 b/Includes/Dev/DataReader.ps1
new file mode 100644
index 00000000..b7cf9166
--- /dev/null
+++ b/Includes/Dev/DataReader.ps1
@@ -0,0 +1,146 @@
+Add-Type -TypeDefinition @'
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.Management.Automation;
+using System.Management.Automation.Runspaces;
+namespace InProcess
+{
+ public class InMemoryJob : System.Management.Automation.Job
+ {
+ public InMemoryJob(PowerShell PowerShell, string name)
+ {
+ _PowerShell = PowerShell;
+ SetUpStreams(name);
+ }
+ private void SetUpStreams(string name)
+ {
+ _PowerShell.Streams.Verbose = this.Verbose;
+ _PowerShell.Streams.Error = this.Error;
+ _PowerShell.Streams.Debug = this.Debug;
+ _PowerShell.Streams.Warning = this.Warning;
+ _PowerShell.Streams.Information = this.Information;
+ _PowerShell.Runspace.AvailabilityChanged += new EventHandler(Runspace_AvailabilityChanged);
+ int id = System.Threading.Interlocked.Add(ref InMemoryJobNumber, 1);
+ if (!string.IsNullOrEmpty(name))
+ {
+ this.Name = name;
+ }
+ else
+ {
+ this.Name = "InProcessJob" + id;
+ }
+ }
+ void Runspace_AvailabilityChanged(object sender, RunspaceAvailabilityEventArgs e)
+ {
+ if (e.RunspaceAvailability == RunspaceAvailability.Available)
+ {
+ this.SetJobState(JobState.Completed);
+ }
+ }
+ PowerShell _PowerShell;
+ static int InMemoryJobNumber = 0;
+ public override bool HasMoreData
+ {
+ get {
+ return (Output.Count > 0);
+ }
+ }
+ public override string Location
+ {
+ get { return "In Process"; }
+ }
+ public override string StatusMessage
+ {
+ get { return "A new status message"; }
+ }
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing)
+ {
+ if (!isDisposed)
+ {
+ isDisposed = true;
+ try
+ {
+ if (!IsFinishedState(JobStateInfo.State))
+ {
+ StopJob();
+ }
+ foreach (Job job in ChildJobs)
+ {
+ job.Dispose();
+ }
+ }
+ finally
+ {
+ base.Dispose(disposing);
+ }
+ }
+ }
+ }
+ private bool isDisposed = false;
+ internal bool IsFinishedState(JobState state)
+ {
+ return (state == JobState.Completed || state == JobState.Failed || state == JobState.Stopped);
+ }
+ public override void StopJob()
+ {
+ _PowerShell.Stop();
+ _PowerShell.EndInvoke(_asyncResult);
+ SetJobState(JobState.Stopped);
+ }
+ public void Start()
+ {
+ _asyncResult = _PowerShell.BeginInvoke(null, Output);
+ SetJobState(JobState.Running);
+ }
+ IAsyncResult _asyncResult;
+ public void WaitJob()
+ {
+ _asyncResult.AsyncWaitHandle.WaitOne();
+ }
+ public void WaitJob(TimeSpan timeout)
+ {
+ _asyncResult.AsyncWaitHandle.WaitOne(timeout);
+ }
+ }
+}
+'@
+
+function Start-JobInProcess {
+ [CmdletBinding()]
+ Param
+ (
+ [ScriptBlock] $ScriptBlock,
+ $ArgumentList,
+ [String] $Name
+ )
+
+ Function Get-JobRepository {
+ [CmdletBinding()]
+ Param ()
+ $PScmdlet.JobRepository
+ }
+
+ Function Add-Job {
+ [CmdletBinding()]
+ Param
+ (
+ $Job
+ )
+ $PScmdlet.JobRepository.Add($Job)
+ }
+
+ $PowerShell = [PowerShell]::Create().AddScript($ScriptBlock)
+
+ if ($ArgumentList) {
+ $ArgumentList.ForEach({ $PowerShell.AddArgument($_) })
+ }
+
+ $MemoryJob = New-Object InProcess.InMemoryJob $PowerShell, $Name
+
+ $MemoryJob.Start()
+ Add-Job $MemoryJob
+ $MemoryJob
+}
diff --git a/Includes/Dev/DevAPI.ps1 b/Includes/Dev/DevAPI.ps1
new file mode 100644
index 00000000..7682a122
--- /dev/null
+++ b/Includes/Dev/DevAPI.ps1
@@ -0,0 +1,967 @@
+$Request = '2022-12-13 22:33:07: http://127.0.0.1:3999/functions/config/set?{"Algorithm"%3A%5B%5D%2C"APILogfile"%3A"Debug%5C%5CAPILog.txt"%2C"APIPort"%3A3999%2C"AutoReboot"%3Atrue%2C"AutoUpdate"%3Atrue%2C"AutoUpdateCheckInterval"%3A1%2C"BackupOnAutoUpdate"%3Atrue%2C"BadShareRatioThreshold"%3A0.05%2C"BalancesKeepAlive"%3Atrue%2C"BalancesShowAverages"%3Afalse%2C"BalancesShowInAllCurrencies"%3Afalse%2C"BalancesShowInMainCurrency"%3Atrue%2C"BalancesShowSums"%3Afalse%2C"BalancesTrackerExcludePool"%3A%5B"_BlockMasters"%5D%2C"BalancesTrackerLog"%3Afalse%2C"BalancesTrackerPollInterval"%3A10%2C"CalculatePowerCost"%3Atrue%2C"ConfigFileVersion"%3A"4.3.4.6"%2C"CPUMinerProcessPriority"%3A-2%2C"Currency"%3A"CHF"%2C"DecimalsMax"%3A6%2C"Delay"%3A0%2C"DisableDualAlgoMining"%3Afalse%2C"DisableMinerFee"%3Afalse%2C"DisableMinersWithFee"%3Afalse%2C"DisableSingleAlgoMining"%3Afalse%2C"Donation"%3A2%2C"EarningsAdjustmentFactor"%3A0.8%2C"ExcludeDeviceName"%3A%5B"CPU%2300"%5D%2C"ExcludeMinerName"%3A%5B%5D%2C"ExtraCurrencies"%3A%5B"ETH"%2C"USD"%2C"EUR"%2C"NZD"%2C"AUD"%2C"THB"%5D%2C"GPUMinerProcessPriority"%3A-1%2C"IdleDetection"%3Afalse%2C"IdleSec"%3A5%2C"IgnoreMinerFee"%3Afalse%2C"IgnorePoolFee"%3Afalse%2C"IgnorePowerCost"%3Atrue%2C"Interval"%3A30%2C"LogBalanceAPIResponse"%3Afalse%2C"LogToFile"%3A%5B"Info"%2C"Warn"%2C"Error"%2C"Verbose"%2C"Debug"%5D%2C"LogToScreen"%3A%5B"Info"%2C"Warn"%2C"Error"%2C"Verbose"%2C"Debug"%5D%2C"MinAccuracy"%3A0.5%2C"MinDataSample"%3A20%2C"MinDataSampleAlgoMultiplier"%3A{"X16r"%3A3}%2C"MinerInstancePerDeviceModel"%3Atrue%2C"MinerSet"%3A2%2C"MinerSwitchingThreshold"%3A2.5%2C"MinerWindowStyle"%3A"minimized"%2C"MinerWindowStyleNormalWhenBenchmarking"%3Atrue%2C"MiningDutchAPIKey"%3A"7c5ea2d2e997f5094a55969d3a855c4169b46d5eee6065d4fa9251e026980714"%2C"MiningDutchUserName"%3A"UselessGuru"%2C"MiningPoolHubAPIKey"%3A"28328accdd4306c631a881bd8130f0d258a94b0e33569e0eef7e83773d018c98"%2C"MiningPoolHubUserName"%3A"UselessGuru"%2C"MinInterval"%3A3%2C"MinWorker"%3A0%2C"MonitoringServer"%3A"https%3A%2F%2FUG-Miner.com"%2C"MonitoringUser"%3A"8e92d491-a5e6-42d7-8928-5be72d743b0c"%2C"NiceHashAPIKey"%3A"0dfa9c5b-12f9-4f62-9152-41d6a517de00"%2C"NiceHashAPISecret"%3A"15a4618a-1f3a-4b96-924a-48845f435d98f4f28ac4-a51b-4de0-bf8d-584929764dd5"%2C"NiceHashOrganizationId"%3A"f48afaf4-fc54-4645-af2d-56334a48aebb"%2C"NiceHashWallet"%3A"33hZYX8iFg5zm9E3geqrNgeP6TMzszZk5R"%2C"NiceHashWalletIsInternal"%3Atrue%2C"OpenFirewallPorts"%3Atrue%2C"PayoutCurrency"%3A"BTC"%2C"PoolAPIAllowedFailureCount"%3A3%2C"PoolAPIretryInterval"%3A3%2C"PoolAPItimeout"%3A3%2C"PoolName"%3A%5B"Hiveon"%2C"MiningDutchPlus"%2C"MiningPoolHubCoins"%2C"NiceHash"%2C"ProHashingPlus"%2C"ZergPoolCoinsPlus"%2C"ZPoolPlus"%5D%2C"PoolsConfigFile"%3A".%5C%5CConfig%5C%5CPoolsConfig.json"%2C"PoolTimeout"%3A30%2C"PowerPricekWh"%3A{"00%3A00"%3A0.26}%2C"PowerUsage"%3A{"_GPU%2302"%3A35}%2C"PowerUsageIdleSystemW"%3A160%2C"ProfitabilityThreshold"%3A-12.6%2C"ProHashingAPIKey"%3A"8ea6a00dea6945172167708c9784b8deead1da2f5e543ef312bfc7ed1073fe4a"%2C"ProHashingMiningMode"%3A"PPLNS"%2C"ProHashingUserName"%3A"UselessGuru"%2C"Proxy"%3A""%2C"Region"%3A"Europe"%2C"ReportToServer"%3Atrue%2C"ShowAccuracy"%3Atrue%2C"ShowAllMiners"%3Afalse%2C"ShowChangeLog"%3Atrue%2C"ShowCoinName"%3Atrue%2C"ShowCurrency"%3Atrue%2C"ShowEarning"%3Atrue%2C"ShowEarningBias"%3Atrue%2C"ShowMinerFee"%3Atrue%2C"ShowPool"%3Atrue%2C"ShowPoolBalances"%3Afalse%2C"ShowPoolFee"%3Atrue%2C"ShowPowerCost"%3Atrue%2C"ShowPowerUsage"%3Atrue%2C"ShowProfit"%3Atrue%2C"ShowProfitBias"%3Atrue%2C"ShowUser"%3Afalse%2C"ShowWorkerStatus"%3Atrue%2C"LogViewerConfig"%3A".%5C%5CUtils%5C%5CUG-Miner_LogReader.xml"%2C"SnakeTailExe"%3A".%5C%5CUtils%5C%5CSnakeTail.exe"%2C"SSL"%3A"Prefer"%2C"StartGUI"%3Afalse%2C"StartGUIMinimized"%3Afalse%2C"StartupMode"%3A"Running"%2C"SubtractBadShares"%3Atrue%2C"SyncWindow"%3A3%2C"Transcript"%3Afalse%2C"UIStyle"%3A"light"%2C"UnrealMinerEarningFactor"%3A1%2C"UnrealPoolPriceFactor"%3A2%2C"UseAnycast"%3Atrue%2C"UseColorForMinerStatus"%3Atrue%2C"UsemBTC"%3Atrue%2C"UseMinerTweaks"%3Atrue%2C"Wallets"%3A{"BTC"%3A"1GPSq8txFnyrYdXL8t6S94mYdF8cGqVQJF"%2C"ETC"%3A"0x7CF99ec9029A98AFd385f106A93977D8105Fec0f"%2C"ETH"%3A"0x92e6F22C1493289e6AD2768E1F502Fc5b414a287"}%2C"Watchdog"%3Atrue%2C"WatchdogCount"%3A3%2C"WebGUI"%3Atrue%2C"WorkerName"%3A"Blackbox"}'
+
+
+Set-Location("c:\Users\Stephan\Desktop\UG-Miner\")
+$ScriptBody = "using module .\Includes\Include.psm1"; $Script = [ScriptBlock]::Create($ScriptBody); . $Script
+
+$Parameters = @{ }
+$Variables = [Ordered]@{ }
+# $Variables.Miners = Get-Content .\Debug\Miners.json | ConvertFrom-Json
+$Variables.Pools = Get-Content .\Debug\Pools.json | ConvertFrom-Json
+$Variables.ConfigFile = ".\Config\config.json"
+$Variables.PoolsConfigFile = ".\Config\PoolsConfig.json"
+$Variables.Earnings = Get-Content .\Debug\Earnings.json | ConvertFrom-Json
+$Variables.AvailableCommandLineParameters = @("Algorithm")
+$Variables.WatchdogTimers = Get-Content .\Debug\WatchdogTimers.json | ConvertFrom-Json
+$Variables.BalancesData = Get-Content "C:\Users\Stephan\Desktop\UG-Miner\Logs\BalancesTrackerData.json" | ConvertFrom-Json
+
+# Load stats, required for stat management
+Get-Stat | Out-Null
+
+Read-Config -ConfigFile $Variables.ConfigFile
+
+$Request = $Request.Substring(42)
+$Path = $Request -replace '\?.+'
+
+$Request -replace '.+\?' -split '&' | Foreach-Object {
+ $Key, $Value = $_ -split '='
+ # Decode any url escaped characters in the key and value
+ $Key = [URI]::UnescapeDataString($Key)
+ $Value = [URI]::UnescapeDataString($Value)
+ If ($Key -and $Value) { $Parameters.$Key = $Value }
+}
+
+# Create a new response and the defaults for associated settings
+$Response = $Context.Response
+$ContentType = "application/json"
+$StatusCode = 200
+$Data = ""
+
+# Set the proper content type, status code and data for each resource
+Switch ($Path) {
+ "/functions/algorithm/disable" {
+ # Disable algorithm@pool in poolsconfig.json
+ $PoolNames = @($Parameters.Pools | ConvertFrom-Json -ErrorAction Ignore).Name
+ $Algorithms = @($Parameters.Pools | ConvertFrom-Json -ErrorAction Ignore).Algorithm
+ If ($Pools = @($Variables.Pools.Where({ $_.Name -in $PoolNames -and $_.Algorithm -in $Algorithms }))) {
+ $PoolsConfig = Get-Content -Path $Config.PoolsConfigFile | ConvertFrom-Json
+ ForEach ($Pool in $Pools) {
+ If ($PoolsConfig.($Pool.Name).Algorithm -like "-*") {
+ $PoolsConfig.($Pool.Name).Algorithm = @($PoolsConfig.($Pool.Name).Algorithm += "-$($Pool.Algorithm)" | Sort-Object -Unique)
+ $Pool.Reasons = [System.Collections.Generic.List[String]]@($Pool.Reasons.Add("Algorithm disabled (`-$($Pool.Algorithm)` in $($Pool.Name) pool config)") | Sort-Object -Unique)
+ }
+ Else {
+ $PoolsConfig.($Pool.Name).Algorithm = @($PoolsConfig.($Pool.Name).Algorithm.Where({ $_ -ne "+$($Pool.Algorithm)" }) | Sort-Object -Unique)
+ $Pool.Reasons = [System.Collections.Generic.List[String]]@($Pool.Reasons.Add("Algorithm not enabled in $($Pool.Name) pool config") | Sort-Object -Unique)
+ }
+ $Pool.Available = $false
+ $Data += "$($Pool.Algorithm)@$($Pool.Name)"
+ }
+ Remove-Variable Pool
+ $Message = "$($Pools.Count) $(If ($Pools.Count -eq 1) { "pool" } Else { "pools" }) disabled."
+ Write-Message -Level Verbose "Web GUI: $Message"
+ $Data = "$($Data -join "`n")`n`n$Message"
+ $PoolsConfig | Get-SortedObject | ConvertTo-Json -Depth 10 | Out-File -LiteralPath $Variables.PoolsConfigFile -Force
+ }
+ Else {
+ $Data = "No matching stats found."
+ }
+ Break
+ }
+ "/functions/algorithm/enable" {
+ # Enable algorithm@pool in poolsconfig.json
+ $PoolNames = @($Parameters.Pools | ConvertFrom-Json -ErrorAction Ignore).Name
+ $Algorithms = @($Parameters.Pools | ConvertFrom-Json -ErrorAction Ignore).Algorithm
+ If ($Pools = @($Variables.Pools.Where({ $_.Name -in $PoolNames -and $_.Algorithm -in $Algorithms }))) {
+ $PoolsConfig = Get-Content -Path $Config.PoolsConfigFile | ConvertFrom-Json
+ ForEach ($Pool in $Pools) {
+ If ($PoolsConfig.($Pool.Name).Algorithm -like "+*") {
+ $PoolsConfig.($Pool.Name).Algorithm = @($PoolsConfig.($Pool.Name).Algorithm += "+$($Pool.Algorithm)" | Sort-Object -Unique)
+ $Pool.Reasons = [System.Collections.Generic.List[String]]@($Pool.Reasons.Where({ $_ -ne "Algorithm not enabled in $($Pool.Name) pool config" }) | Sort-Object -Unique)
+ }
+ Else {
+ $PoolsConfig.($Pool.Name).Algorithm = @($PoolsConfig.($Pool.Name).Algorithm.Where({ $_ -ne "-$($Pool.Algorithm)" }) | Sort-Object -Unique)
+ $Pool.Reasons = [System.Collections.Generic.List[String]]@($Pool.Reasons.Where({ $_ -ne "Algorithm disabled (`-$($Pool.Algorithm)` in $($Pool.Name) pool config)" }) | Sort-Object -Unique)
+ }
+ If (-not $Pool.Reasons) { $Pool.Available = $true }
+ $Data += "$($Pool.Algorithm)@$($Pool.Name)"
+ }
+ Remove-Variable Pool
+ $Message = "$($Pools.Count) $(If ($Pools.Count -eq 1) { "pool" } Else { "pools" }) enabled."
+ Write-Message -Level Verbose "Web GUI: $Message"
+ $Data = "$($Data -join "`n")`n`n$Message"
+ $PoolsConfig | Get-SortedObject | ConvertTo-Json -Depth 10 | Out-File -LiteralPath $Variables.PoolsConfigFile -Force
+ }
+ Else {
+ $Data = "No matching stats found."
+ }
+ Break
+ }
+ "/functions/api/stop" {
+ Write-Message -Level Verbose "API: API stopped!"
+ Return
+ }
+ "/functions/balancedata/remove" {
+ If ($Parameters.Data) {
+ $BalanceDataEntries = $Variables.BalancesData
+ $Variables.BalancesData = @((Compare-Object $Variables.BalancesData @($Parameters.Data | ConvertFrom-Json -ErrorAction Ignore) -PassThru -Property DateTime, Pool, Currency, Wallet).Where({ $_.SideIndicator -eq "<=" }) | Select-Object -ExcludeProperty SideIndicator)
+ $Variables.BalancesData | ConvertTo-Json | Out-File ".\Data\BalancesTrackerData.json"
+ $RemovedEntriesCount = $BalanceDataEntries.Count - $Variables.BalancesData.Count
+ If ($RemovedEntriesCount-gt 0) {
+ $Message = "$RemovedEntriesCount $(If ($RemovedEntriesCount -eq 1) { "balance data entry" } Else { "balance data entries" }) removed."
+ Write-Message -Level Verbose "Web GUI: $Message"
+ $Data = $Message
+ }
+ Else {
+ $Data = "No matching entries found."
+ }
+ Break
+ }
+ }
+ "/functions/config/device/disable" {
+ ForEach ($Key in $Parameters.Keys) {
+ If ($Values = @(($Parameters.$Key -split ',').Where({ $_ -notin $Config.ExcludeDeviceName }))) {
+ Try {
+ $ExcludeDeviceName = $Config.ExcludeDeviceName
+ $Config.ExcludeDeviceName = @((@($Config.ExcludeDeviceName) + $Values) | Sort-Object -Unique)
+ Write-Config -ConfigFile $Variables.ConfigFile -Config $Config
+ $Data = "Device configuration changed`n`nOld values:"
+ $Data += "`nExcludeDeviceName: '[$($ExcludeDeviceName -join ', ')]'"
+ $Data += "`n`nNew values:"
+ $Data += "`nExcludeDeviceName: '[$($Config."ExcludeDeviceName" -join ', ')]'"
+ $Data += "`n`nConfiguration saved to '$($Variables.ConfigFile.Replace("$(Convert-Path ".\")\", ".\"))'.`nIt will become active in next cycle."
+ ForEach ($DeviceName in $Values) {
+ $Variables.Devices.Where({ $_.Name -eq $DeviceName }).ForEach(
+ {
+ $_.State = [DeviceState]::Disabled
+ If ($_.SubStatus -in ("Benchmarking", "Running", "WarmingUp")) { $_.StatusInfo = "$($_.StatusInfo); will get disabled at end of cycle" }
+ Else {
+ $_.StatusInfo = "Disabled (ExcludeDeviceName: '$($_.Name)')"
+ $_.Status = "Idle"
+ }
+ }
+ )
+ }
+ Remove-Variable DeviceName
+ Write-Message -Level Verbose "Web GUI: Device$(If ($Values.Count -ne 1) { "s" }) '$($Values -join ', ')' disabled. Configuration file '$($Variables.ConfigFile)' updated."
+ }
+ Catch {
+ $Data = "Error saving configuration file '$($Variables.ConfigFile.Replace("$(Convert-Path ".\")\", ".\"))'.`n`n[ $($_) ]"
+ }
+ }
+ Else {
+ $Data = "No configuration change."
+ }
+ }
+ Remove-Variable Key
+ Break
+ }
+ "/functions/config/device/enable" {
+ ForEach ($Key in $Parameters.Keys) {
+ If ($Values = @(($Parameters.$Key -split ',').Where({ $_ -in $Config.ExcludeDeviceName }))) {
+ Try {
+ $ExcludeDeviceName = $Config.ExcludeDeviceName
+ $Config.ExcludeDeviceName = @($Config.ExcludeDeviceName.Where({ $_ -notin $Values }) | Sort-Object -Unique)
+ Write-Config -ConfigFile $Variables.ConfigFile -Config $Config
+ $Variables.FreshConfig = $false
+ $Data = "Device configuration changed`n`nOld values:"
+ $Data += "`nExcludeDeviceName: '[$($ExcludeDeviceName -join ', ')]'"
+ $Data += "`n`nNew values:"
+ $Data += "`nExcludeDeviceName: '[$($Config."ExcludeDeviceName" -join ', ')]'"
+ $Data += "`n`nConfiguration saved to '$($Variables.ConfigFile.Replace("$(Convert-Path ".\")\", ".\"))'.`nIt will become active in next cycle."
+ $Variables.Devices.Where({ $_.Name -in $Values }).ForEach(
+ {
+ $_.State = [DeviceState]::Enabled
+ If ($_.StatusInfo -like "* {*@*}; will get disabled at end of cycle") { $_.StatusInfo = $_.StatusInfo -replace '; will get enabled at end of cycle' }
+ Else { $_.Status = $_.StatusInfo = $_.SubStatus = "Idle" }
+ }
+ )
+ Write-Message -Level Verbose "Web GUI: Device$(If ($Values.Count -ne 1) { "s" }) '$($Values -join ', ')' enabled. Configuration file '$($Variables.ConfigFile)' updated."
+ }
+ Catch {
+ $Data = "Error saving configuration file '$($Variables.ConfigFile.Replace("$(Convert-Path ".\")\", ".\"))'.`n`n[ $($_) ]."
+ }
+ }
+ Else {
+ $Data = "No configuration change."
+ }
+ }
+ Remove-Variable Key
+ Break
+ }
+ "/functions/config/set" {
+ Try {
+ $TempConfig = ($Key | ConvertFrom-Json -AsHashtable)
+ Write-Config -ConfigFile $Variables.ConfigFile -Config $TempConfig
+ $TempConfig.Keys.ForEach({ $Config.$_ = $TempConfig.$_ })
+ Remove-Variable TempConfig
+
+ $Variables.Devices.Where({ $_.State -ne [DeviceState]::Unsupported }).ForEach(
+ {
+ If ($_.Name -in $Config.ExcludeDeviceName) {
+ $_.State = [DeviceState]::Disabled
+ If ($_.Status -like "Mining *}") { $_.Status = "$($_.Status); will get disabled at end of cycle" }
+ }
+ Else {
+ $_.State = [DeviceState]::Enabled
+ If ($_.Status -like "*; will get disabled at end of cycle") { $_.Status = $_.Status -replace '; will get disabled at end of cycle' If ($_.Status -like "Disabled *") { $_.Status = "Idle" }
+ }
+ }
+ )
+ $Variables.RestartCycle = $true
+ $Variables.FreshConfig = $false
+ Write-Message -Level Verbose "Web GUI: Configuration saved. It will become fully active in the next cycle."
+ $Data = "Configuration saved to '$($Variables.ConfigFile.Replace("$(Convert-Path ".\")\", ".\"))'.`nIt will become fully active in the next cycle."
+ }
+ Catch {
+ $Data = "Error saving configuration file '$($Variables.ConfigFile.Replace("$(Convert-Path ".\")\", ".\"))'.`n`n[ $($_) ]."
+ }
+ Break
+ }
+ "/functions/file/edit" {
+ $Data = Edit-File $Parameters.FileName
+ Break
+ }
+ "/functions/file/showcontent" {
+ $Data = (Get-Content -Path $Parameters.FileName -Raw)
+ $ContentType = "text/html"
+ Break
+ }
+ "/functions/log/get" {
+ $Lines = If ([Int]$Parameters.Lines) { [Int]$Parameters.Lines } Else { 100 }
+ $Data = "$((Get-Content -Path $Variables.LogFile -Tail $Lines).ForEach({ "$($_)`n" }))"
+ Break
+ }
+ "/functions/mining/getstatus" {
+ If ($Variables.FreshConfig) {
+ $Data = "FreshConfig" | ConvertTo-Json
+ }
+ Else {
+ $Data = $Variables.NewMiningStatus | ConvertTo-Json
+ }
+ Break
+ }
+ "/functions/mining/pause" {
+ If ($Variables.MiningStatus -ne "Paused") {
+ $Variables.NewMiningStatus = "Paused"
+ $Data = "Mining is being paused...`n$(If ($Variables.BalancesTrackerPollInterval -gt 0) { If ($Variables.BalancesTrackerRunning) { "Balances tracker running." } Else { "Balances tracker starting..." } })"
+ $Variables.RestartCycle = $true
+ }
+ Break
+ }
+ "/functions/mining/start" {
+ If ($Variables.MiningStatus -ne "Running") {
+ $Variables.NewMiningStatus = "Running"
+ $Data = "Mining processes starting...`n$(If ($Variables.BalancesTrackerPollInterval -gt 0) { If ($Variables.BalancesTrackerRunning) { "Balances tracker running." } Else { "Balances tracker starting..." } })"
+ $Variables.RestartCycle = $true
+ }
+ Break
+ }
+ "/functions/mining/stop" {
+ If ($Variables.MiningStatus -ne "Idle") {
+ $Variables.NewMiningStatus = "Idle"
+ $Data = "$($Variables.Branding.ProductLabel) is stopping...`n"
+ $Variables.RestartCycle = $true
+ }
+ Break
+ }
+ "/functions/querypoolapi" {
+ If (-not $Config.PoolsConfig.$($Parameters.Pool).BrainConfig.$($Parameters.Type)) {
+ $Data = "No pool configuration data for '/functions/querypoolapi?Pool=$($Parameters.Pool)&Type=$($Parameters.Type)'."
+ }
+ ElseIf (-not ($Data = (Invoke-RestMethod -Uri $Config.PoolsConfig.$($Parameters.Pool).BrainConfig.$($Parameters.Type) -Headers @{ "Cache-Control" = "no-cache" } -SkipCertificateCheck -TimeoutSec 5) | ConvertTo-Json)) {
+ $Data = "No data for '/functions/querypoolapi?Pool=$($Parameters.Pool)&Type=$($Parameters.Type)'."
+ }
+ break
+ }
+ "/functions/removeorphanedminerstats" {
+ If ($StatNames = Remove-ObsoleteMinerStats) {
+ $Data = $StatNames | ConvertTo-Json
+ }
+ Else {
+ $Data = "No matching stats found."
+ }
+ Break
+ }
+ "/functions/getminerdetail" {
+ $Miner = $Variables.Miners.Where({ $_.Info -eq $Key })
+ If ($Miner) {
+ $Data = $Miner | ConvertTo-Json -Depth 10
+ }
+ Else {
+ $Data = "Miner with key '$Key' not found."
+ }
+ Break
+ }
+ "/functions/stat/disable" {
+ If ($Parameters.Miners) {
+ If ($Miners = @(Compare-Object -PassThru -IncludeEqual -ExcludeDifferent @($Variables.Miners | Select-Object) @($Parameters.Miners | ConvertFrom-Json -ErrorAction Ignore | Select-Object) -Property Info)) {
+ $Data = @()
+ $Miners.Where({ -not $_.Disabled }).ForEach(
+ {
+ $Data += $_.Name
+ ForEach ($Worker in $_.Workers) {
+ Disable-Stat -Name "$($_.Name)_$($Worker.Pool.Algorithm)_Hashrate"
+ $Worker.Hashrate = [Double]::NaN
+ }
+ Remove-Variable Worker
+ $_.Disabled = $true
+ $_.Reasons += "Disabled by user"
+ $_.Reasons = [System.Collections.Generic.List[String]]@($_.Reasons.Where({ $_ -ne "Disabled by user" }) | Sort-Object -Unique)
+ }
+ )
+ $Data = $Data | Sort-Object -Unique
+ $Message = "$($Data.Count) $(If ($Data.Count -eq 1) { "miner" } Else { "miners" }) disabled."
+ Write-Message -Level Verbose "Web GUI: $Message"
+ $Data = "$($Data -join "`n")`n`n$Message"
+ }
+ Else {
+ $Data = "No matching miner stats found."
+ }
+ Break
+ }
+ }
+ "/functions/stat/enable" {
+ If ($Parameters.Miners) {
+ If ($Miners = @(Compare-Object -PassThru -IncludeEqual -ExcludeDifferent @($Variables.Miners | Select-Object) @($Parameters.Miners | ConvertFrom-Json -ErrorAction Ignore | Select-Object) -Property Info)) {
+ $Data = @()
+ $Miners.Where({ $_.Disabled }).ForEach(
+ {
+ $Data += $_.Name
+ ForEach ($Worker in $_.Workers) {
+ Enable-Stat -Name "$($_.Name)_$($Worker.Pool.Algorithm)_Hashrate"
+ }
+ Remove-Variable Worker
+ $_.Disabled = $false
+ $_.Reasons = [System.Collections.Generic.List[String]]@($_.Reasons.Where({ $_ -ne "Disabled by user" }) | Sort-Object -Unique)
+ If (-not $_.Reasons) { $_.Available = $true }
+ }
+ )
+ $Data = $Data | Sort-Object -Unique
+ $Message = "$($Data.Count) $(If ($Data.Count -eq 1) { "miner" } Else { "miners" }) enabled."
+ Write-Message -Level Verbose "Web GUI: $Message"
+ $Data = "$($Data -join "`n")`n`n$Message"
+ }
+ Else {
+ $Data = "No matching miner stats found."
+ }
+ Break
+ }
+ }
+ "/functions/stat/get" {
+ $TempStats = @(If ($null -ne $Parameters.Value) { @($Stats.psBase.Keys.Where({ $_ -like "*_$($Parameters.Type)" -and $Stats[$_].Live -eq $Parameters.Value }).ForEach({ $Stats[$_] })) } Else { @($Stats) })
+ If ($TempStats) {
+ If ($null -ne $Parameters.Value) {
+ ($TempStats.Name | Sort-Object).ForEach({ $Data += "$($_ -replace '(_Hashrate|_PowerConsumption)$')`n" })
+ If ($Parameters.Type -eq "Hashrate") { $Data += "`n$($TempStats.Count) stat file$(If ($TempStats.Count -ne 1) { "s" }) with $($Parameters.Value)H/s hashrate." }
+ ElseIf ($Parameters.Type -eq "PowerConsumption") { $Data += "`n$($TempStats.Count) stat file$(If ($TempStats.Count -ne 1) { "s" }) with $($Parameters.Value)W power consumption." }
+ }
+ Else {
+ $Data = $TempStats | ConvertTo-Json
+ }
+ }
+ Else {
+ $Data = "No matching stats found."
+ }
+ Break
+ }
+ "/functions/stat/remove" {
+ If ($Parameters.Pools) {
+ If ($Pools = @(Compare-Object -PassThru -IncludeEqual -ExcludeDifferent @($Variables.Pools | Select-Object) @($Parameters.Pools | ConvertFrom-Json -ErrorAction Ignore | Select-Object) -Property Algorithm, Currency, Name)) {
+ $Data = @()
+ ($Pools | Sort-Object -Property Name, Algorithm, Currency).ForEach(
+ {
+ $StatName = "$($_.Name)_$($_.Algorithm)$(If ($_.Currency) { "-$($_.Currency)" })"
+ $Data += $StatName
+ Remove-Stat -Name "$($StatName)_Profit"
+ $_.Reasons = [System.Collections.Generic.List[String]]@()
+ $_.Price = $_.Price_Bias = $_.StablePrice = $_.Accuracy = [Double]::Nan
+ $_.Available = $true
+ $_.Disabled = $false
+ }
+ )
+ $Data = $Data | Sort-Object -Unique
+ $Message = "Reset pool stats for $($Pools.Count) $(If ($Pools.Count -eq 1) { "pool" } Else { "pools" })."
+ Write-Message -Level Verbose "Web GUI: $Message"
+ $Data = "$($Data -join "`n")`n`n$Message"
+ }
+ Else {
+ $Data = "No matching pool stats found."
+ }
+ Break
+ }
+ ElseIf ($Parameters.Miners -and $Parameters.Type -eq "Hashrate") {
+ If ($Miners = @(Compare-Object -PassThru -IncludeEqual -ExcludeDifferent @($Variables.Miners | Select-Object) @($Parameters.Miners | ConvertFrom-Json -ErrorAction Ignore | Select-Object) -Property Info)) {
+ $Data = @()
+ $Miners.ForEach(
+ {
+ $_.Activated = 0 # To allow 3 attempts
+ $_.Available = $true
+ $_.Benchmark = $true
+ $_.Earning_Accuracy = [Double]::NaN
+ $_.Disabled = $false
+ $Data += $_.Name
+ ForEach ($Worker in $_.Workers) {
+ Remove-Stat -Name "$($_.Name)_$($Worker.Pool.Algorithm)_Hashrate"
+ $Worker.Hashrate = [Double]::NaN
+ }
+ Remove-Variable Worker
+
+ # Clear power consumption
+ Remove-Stat -Name "$($_.Name)_PowerConsumption"
+ $_.PowerConsumption = $_.PowerCost = $_.Profit = $_.Profit_Bias = $_.Earning = $_.Earning_Bias = [Double]::NaN
+
+ # Remove watchdog
+ $Variables.WatchdogTimers = @($Variables.WatchdogTimers | Where-Object MinerName -ne $_.Name)
+
+ $_.Reasons = [System.Collections.Generic.List[String]]@($_.Reasons.Where({ $_ -ne "Disabled by user" }))
+ $_.Reasons = [System.Collections.Generic.List[String]]@($_.Reasons.Where({ $_ -ne "0 H/s Stat file" }))
+ $_.Reasons = [System.Collections.Generic.List[String]] @($_.Reasons.Where({ $_ -notlike "Unreal profit data *" }) | Sort-Object -Unique)
+ If (-not $_.Reasons) { $_.Available = $true }
+ If ($_.Status -eq "Disabled") { $_.Status = "Idle" }
+ }
+ )
+ $Data = $Data | Sort-Object -Unique
+ $Message = "Re-benchmark triggered for $($Data.Count) $(If ($Data.Count -eq 1) { "miner" } Else { "miners" })."
+ Write-Message -Level Verbose "Web GUI: $Message"
+ $Data = "$($Data -join "`n")`n`n$Message"
+ }
+ Else {
+ $Data = "No matching hashrate stats found."
+ }
+ Break
+ }
+ ElseIf ($Parameters.Miners -and $Parameters.Type -eq "PowerConsumption") {
+ If ($Miners = @(Compare-Object -PassThru -IncludeEqual -ExcludeDifferent @($Variables.Miners | Select-Object) @($Parameters.Miners | ConvertFrom-Json -ErrorAction Ignore | Select-Object) -Property Info)) {
+ $Data = @()
+ $Miners.ForEach(
+ {
+ If ($_.Earning -eq 0) { $_.Available = $true }
+ If ($Variables.CalculatePowerCost) {
+ $_.MeasurePowerConsumption = $true
+ $_.Activated = 0 # To allow 3 attempts
+ }
+ $_.PowerConsumption = [Double]::NaN
+ $StatName = $_.Name
+ $Data += $StatName
+ Remove-Stat -Name "$($StatName)_PowerConsumption"
+ $_.PowerConsumption = $_.PowerCost = $_.Profit = $_.Profit_Bias = $_.Earning = $_.Earning_Bias = [Double]::NaN
+ If ($_.Status -eq "Disabled") { $_.Status = "Idle" }
+ }
+ )
+ $Data = $Data | Sort-Object -Unique
+ $Message = "Re-measure power consumption triggered for $($Data.Count) $(If ($Data.Count -eq 1) { "miner" } Else { "miners" })."
+ Write-Message -Level Verbose "Web GUI: $Message"
+ $Data = "$($Data -join "`n")`n`n$Message"
+ }
+ Else {
+ $Data = "No matching power consumption stats found."
+ }
+ Break
+ }
+ If ($Parameters.Value) { $TempStats = @($Stats.psBase.Keys.Where({ $_ -like "*_$($Parameters.Type)" -and $Stats[$_].Live -eq $Parameters.Value }).ForEach({ $Stats[$_] })) }
+ Else { $TempStats = @( (Get-ChildItem -Path ".\Stats\*_$($Parameters.Type).txt").BaseName.ForEach({ $Stats[$_] })) }
+ If ($TempStats) {
+ $Data = @()
+ ($TempStats | Sort-Object -Property Name).ForEach(
+ {
+ Remove-Stat -Name $_.Name
+ $Data += $_.Name -replace '(_Hashrate|_PowerConsumption)$'
+ }
+ )
+ $Data = $Data | Sort-Object -Unique
+ If ($Parameters.Type -eq "Hashrate") { $Message = "Reset $($TempStats.Count) stat file$(If ($TempStats.Count -ne 1) { "s" })$(If ($null -ne $Parameters.Value) { " with $($Parameters.Value)H/s hashrate" })." }
+ ElseIf ($Parameters.Type -eq "PowerConsumption") { $Message = "Reset $($TempStats.Count) stat file$(If ($TempStats.Count -ne 1) { "s" })$(If ($null -ne $Parameters.Value) { " with $($Parameters.Value)W power consumption" })." }
+ ElseIf ($Parameters.Type -eq "Profit") { $Message = "Reset $($TempStats.Count) pool stat file$(If ($TempStats.Count -ne 1) { "s" })." }
+ Write-Message -Level Info "Web GUI: $Message"
+ $Data = "$($Data -join "`n")`n`n$Message"
+ }
+ Else {
+ $Data = "No matching stats found."
+ }
+ Break
+ }
+ "/functions/stat/set" {
+ If ($Parameters.Miners -and $Parameters.Type -eq "Hashrate" -and $null -ne $Parameters.Value) {
+ $Data = @()
+ If ($Miners = @(Compare-Object -PassThru -IncludeEqual -ExcludeDifferent @($Variables.Miners | Select-Object) @($Parameters.Miners | ConvertFrom-Json -ErrorAction Ignore | Select-Object) -Property Info)) {
+ $Miners.ForEach(
+ {
+ If ($Parameters.Value -le 0 -and $Parameters.Type -eq "Hashrate") { $_.Available = $false; $_.Disabled = $true }
+ $Data += $_.Name
+ ForEach ($Algorithm in $_.Algorithms) {
+ $StatName = "$($_.Name)_$($Algorithm)_$($Parameters.Type)"
+ If ($Parameters.Value -eq 0) { # Miner failed
+ Remove-Stat -Name $StatName
+ Set-Stat -Name $StatName -Value $Parameters.Value -FaultDetection $false | Out-Null
+ $_.Profit = $_.Profit_Bias = $_.Earning = $_.Earning_Bias = $_.Earning_Accuracy = [Double]::NaN
+ $_.Available = $false
+ $_.Disabled = $false
+ If ($_.Reasons -notcontains "0 H/s Stat file" ) { $_.Reasons.Add("0 H/s Stat file") }
+ $_.Reasons = [System.Collections.Generic.List[String]]@($_.Reasons.Where({ $_ -notlike "Disabled by user" }) | Sort-Object -Unique)
+ $_.Status = [MinerStatus]::Failed
+ }
+ }
+ Remove-Variable Algorithm
+ }
+ )
+ $Data = $Data | Sort-Object -Unique
+ $Message = "$(If ($Data.Count -eq 1) { "The miner is" } Else { "$($Data.Count) miners are" }) $(If ($Parameters.Value -eq 0) { "marked as failed" } ElseIf ($Parameters.Value -eq -1) { "disabled" } Else { "set to value $($Parameters.Value)" })."
+ Write-Message -Level Verbose "Web GUI: $Message"
+ $Data = "$($Data -join "`n")`n`n$Message"
+ }
+ Else {
+ $Data = "No matching miners found."
+ }
+ Break
+ }
+ }
+ "/functions/switchinglog/clear" {
+ Get-ChildItem -Path ".\Logs\switchinglog.csv" -File | Remove-Item -Force
+ $Data = "Switching log '.\Logs\switchinglog.csv' cleared."
+ Write-Message -Level Verbose "Web GUI: $Data"
+ Break
+ }
+ "/functions/variables/get" {
+ If ($Key) {
+ $Data = $Variables.($Key -replace '\\|/', '.' -split '\.'[-1]) | Get-SortedObject | ConvertTo-Json -Depth 10
+ }
+ Else {
+ $Data = $Variables.psBase.Keys | Sort-Object | ConvertTo-Json -Depth 1
+ }
+ Break
+ }
+ "/functions/watchdogtimers/remove" {
+ $Data = @()
+ ForEach ($Miner in @($Parameters.Miners | ConvertFrom-Json -ErrorAction Ignore)) {
+ # Update miner
+ $Variables.Miners.Where({ $_.Name -eq $Miner.Name -and $_.Reasons -like "Miner suspended by watchdog *" }).ForEach(
+ {
+ $Data += "$($_.Name)"
+ $_.Reasons = [System.Collections.Generic.List[String]]@($_.Reasons.Where({ $_ -notlike "Miner suspended by watchdog *" }) | Sort-Object -Unique)
+ If (-not $_.Reasons) { $_.Available = $true }
+ }
+ )
+
+ # Remove Watchdog timers
+ $Variables.WatchdogTimers = @($Variables.WatchdogTimers.Where({ $_.MinerName -ne $Miner.Name }))
+ }
+ Remove-Variable Miner
+
+ ForEach ($Pool in @($Parameters.Pools | ConvertFrom-Json -ErrorAction Ignore)) {
+ # Update pool
+ $Variables.Pools.Where({ $_.Name -eq $Pool.Name -and $_.Algorithm -eq $Pool.Algorithm -and $_.Reasons -like "Pool suspended by watchdog *" }).ForEach(
+ {
+ $Data += "$($_.Key) ($($_.Region))"
+ $_.Reasons = [System.Collections.Generic.List[String]]@($_.Reasons.Where({ $_ -notlike "Pool suspended by watchdog *" }) | Sort-Object -Unique)
+ If (-not $_.Reasons) { $_.Available = $true }
+ }
+ )
+
+ # Remove Watchdog timers
+ $Variables.WatchdogTimers = @($Variables.WatchdogTimers.Where({ $_.PoolName -ne $Pool.Name -or $_.Algorithm -ne $Pool.Algorithm }))
+ }
+ Remove-Variable Pool
+ If ($Data) {
+ $Data = $Data | Sort-Object -Unique
+ $Message = "$($Data.Count) watchdog $(If ($Data.Count -eq 1) { "timer" } Else { "timers" }) removed."
+ Write-Message -Level Verbose "Web GUI: $Message"
+ $Data = "$($Data -join "`n")`n`n$Message"
+ }
+ Else {
+ $Data = "No matching watchdog timers found."
+ }
+ Break
+ }
+ "/functions/watchdogtimers/reset" {
+ $Variables.WatchDogTimers = @()
+ $Variables.Miners.ForEach(
+ {
+ $_.Reasons = [System.Collections.Generic.List[String]]@($_.Reasons.Where({ $_ -notlike "Miner suspended by watchdog *" }) | Sort-Object -Unique)
+ $_.Where({ -not $_.Reasons }).ForEach({ $_.Available = $true })
+ }
+ )
+ $Variables.Pools.ForEach(
+ {
+ $_.Reasons = [System.Collections.Generic.List[String]]@($_.Reasons.Where({ $_ -notlike "*Pool suspended by watchdog" }) | Sort-Object -Unique)
+ $_.Where({ -not $_.Reasons }).ForEach({ $_.Available = $true })
+ }
+ )
+ Write-Message -Level Verbose "Web GUI: All watchdog timers reset."
+ $Data = "Watchdog timers will be recreated in next cycle."
+ Break
+ }
+ "/algorithms" {
+ $Data = ConvertTo-Json -Depth 10 @($Variables.Algorithms | Select-Object)
+ Break
+ }
+ "/algorithms/lastused" {
+ $Data = ConvertTo-Json -Depth 10 $Variables.AlgorithmsLastUsed
+ Break
+ }
+ "/allcurrencies" {
+ $Data = ConvertTo-Json -Depth 10 @($Variables.AllCurrencies)
+ break
+ }
+ "/apiversion" {
+ $Data = $APIVersion
+ Break
+ }
+ "/balances" {
+ $Data = ConvertTo-Json -Depth 10 ($Variables.Balances | Sort-Object -Property DateTime -Bottom 10000 | Select-Object)
+ Break
+ }
+ "/balancedata" {
+ $Data = ConvertTo-Json -Depth 10 @($Variables.BalancesData | Sort-Object -Property DateTime -Descending)
+ Break
+ }
+ "/btc" {
+ $Data = $Variables.Rates.BTC.($Config.MainCurrency)
+ Break
+ }
+ "/balancescurrencies" {
+ $Data = ConvertTo-Json -Depth 10 @($Variables.BalancesCurrencies)
+ break
+ }
+ "/braindata" {
+ $Data = ConvertTo-Json -Depth 2 ($Variables.BrainData | Get-SortedObject)
+ Break
+ }
+ "/coinnames" {
+ $Data = Get-Content -Path ".\Data\CoinNames.json"
+ Break
+ }
+ "/config" {
+ $Data = ConvertTo-Json -Depth 10 (Get-Content -Path $Variables.ConfigFile | ConvertFrom-Json -Depth 10 | Get-SortedObject)
+ If (-not ($Data | ConvertFrom-Json).ConfigFileVersion) {
+ $Data = ConvertTo-Json -Depth 10 ($Config | Select-Object -ExcludeProperty PoolsConfig)
+ }
+ Break
+ }
+ "/configfile" {
+ $Data = $Variables.ConfigFile
+ break
+ }
+ "/configrunning" {
+ $Data = ConvertTo-Json -Depth 10 ($Config | Get-SortedObject)
+ Break
+ }
+ "/currency" {
+ $Data = $Config.MainCurrency
+ Break
+ }
+ "/currencyalgorithm" {
+ $Data = Get-Content -Path ".\Data\CurrencyAlgorithm.json"
+ Break
+ }
+ "/dagdata" {
+ $Data = ConvertTo-Json -Depth 10 ($Variables.DAGdata | Select-Object)
+ Break
+ }
+ "/devices" {
+ $Data = ConvertTo-Json -Depth 10 @($Variables.Devices | Select-Object | Sort-Object -Property Name)
+ Break
+ }
+ "/devices/enabled" {
+ $Data = ConvertTo-Json -Depth 10 @($Variables.Devices.Where({ $_.State -eq "Enabled" }) | Sort-Object -Property Name)
+ Break
+ }
+ "/devices/disabled" {
+ $Data = ConvertTo-Json -Depth 10 @($Variables.Devices.Where({ $_.State -eq "Disabled" }) | Sort-Object -Property Name)
+ Break
+ }
+ "/devices/unsupported" {
+ $Data = ConvertTo-Json -Depth 10 @($Variables.Devices.Where({ $_.State -eq "Unsupported" }) | Sort-Object -Property Name)
+ Break
+ }
+ "/donationdata" {
+ $Data = ConvertTo-Json $Variables.DonationData
+ Break
+ }
+ "/donationlog" {
+ $Data = ConvertTo-Json $Variables.DonationLog
+ Break
+ }
+ "/driverversion" {
+ $Data = ConvertTo-Json -Depth 10 ($Variables.DriverVersion | Select-Object)
+ Break
+ }
+ "/earningschartdata" {
+ $Data = ConvertTo-Json $Variables.EarningsChartData
+ Break
+ }
+ "/equihashcoinpers" {
+ $Data = Get-Content -Path ".\Data\EquihashCoinPers.json"
+ Break
+ }
+ "/extracurrencies" {
+ $Data = ConvertTo-Json -Depth 10 $Config.ExtraCurrencies
+ break
+ }
+ "/fiatcurrencies" {
+ $Data = ConvertTo-Json -Depth 10 ($Variables.FIATcurrencies | Select-Object)
+ Break
+ }
+ "/miners" {
+ $Data = ConvertTo-Json -Depth 4 -Compress @(($Variables.Miners | Select-Object -ExcludeProperty Arguments, Data, DataReaderJob, DataSampleTimestamp, Devices, EnvVars, PoolNames, Process, ProcessJob, SideIndicator, StatEnd, StatStart, ValidDataSampleTimestamp).ForEach({ If ($_.WorkersRunning) { $_.Workers = $_.WorkersRunning }; $_ }) | Select-Object -ExcludeProperty WorkersRunning | Sort-Object @{ Expression = { $_.Best }; Descending = $true }, DeviceNames, Name)
+ Break
+ }
+ "/miners/available" {
+ $Bias = If ($Variables.CalculatePowerCost -and -not $Config.IgnorePowerCost) { "Profit_Bias" } Else { "Earning_Bias" }
+ $Data = ConvertTo-Json -Depth 4 @($Variables.Miners.Where({ $_.Available }) | Select-Object -ExcludeProperty Arguments, Data, DataReaderJob, DataSampleTimestamp, Devices, EnvVars, PoolNames, Process, ProcessJob, SideIndicator, StatEnd, StatStart, ValidDataSampleTimestamp | Sort-Object DeviceNames, @{ Expression = $Bias; Descending = $true })
+ Remove-Variable Bias
+ Break
+ }
+ "/miners/bestperdevice" {
+ $Data = ConvertTo-Json -Depth 4 @(($Variables.MinersBestPerDevice | Select-Object -ExcludeProperty Arguments, Data, DataReaderJob, DataSampleTimestamp, Devices, EnvVars, PoolNames, Process, ProcessJob, SideIndicator, StatEnd, StatStart, ValidDataSampleTimestamp).ForEach({ If ($_.WorkersRunning) { $_.Workers = $_.WorkersRunning }; $_ }) | Select-Object -ExcludeProperty WorkersRunning | Sort-Object -Property DeviceName)
+ Break
+ }
+ "/miners/best" {
+ $Data = ConvertTo-Json -Depth 4 @($Variables.MinersBest | Sort-Object DeviceNames | Select-Object -ExcludeProperty Arguments, Data, DataReaderJob, DataSampleTimestamp, Devices, EnvVars, PoolNames, Process, ProcessJob, StatEnd, StatStart, SideIndicator, ValidDataSampleTimestamp)
+ Break
+ }
+ "/miners/disabled" {
+ $Data = ConvertTo-Json -Depth 4 @($Variables.Miners.Where({ $_.Status -eq [MinerStatus]::Disabled }) | Select-Object -ExcludeProperty Arguments, Data, DataReaderJob, DataSampleTimestamp, Devices, EnvVars, PoolNames, Process, ProcessJob, SideIndicator, StatEnd, StatStart, ValidDataSampleTimestamp | Sort-Object -Property { $_.DeviceNames }, EndTime)
+ Break
+ }
+ "/miners/failed" {
+ $Data = ConvertTo-Json -Depth 4 @($Variables.Miners.Where({ $_.Status -eq [MinerStatus]::Failed }) | Select-Object -ExcludeProperty Arguments, Data, DataReaderJob, DataSampleTimestamp, Devices, EnvVars, PoolNames, Process, ProcessJob, SideIndicator, StatEnd, StatStart, ValidDataSampleTimestamp | Sort-Object -Property { $_.DeviceNames }, EndTime)
+ Break
+ }
+ "/miners/launched" {
+ $Data = ConvertTo-Json -Depth 4 @(($Variables.MinersBest | Select-Object -ExcludeProperty Arguments, Data, DataReaderJob, DataSampleTimestamp, Devices, EnvVars, PoolNames, Process, ProcessJob, SideIndicator, StatEnd, StatStart, ValidDataSampleTimestamp).ForEach({ $_.Workers = $_.WorkersRunning; $_ }) | Select-Object -ExcludeProperty WorkersRunning)
+ Break
+ }
+ "/miners/optimal" {
+ $Bias = If ($Variables.CalculatePowerCost -and -not $Config.IgnorePowerCost) { "Profit_Bias" } Else { "Earning_Bias" }
+ $Data = ConvertTo-Json -Depth 4 @($Variables.MinersOptimal | Select-Object -ExcludeProperty Arguments, Data, DataReaderJob, DataSampleTimestamp, Devices, EnvVars, PoolNames, Process, ProcessJob, SideIndicator, StatEnd, StatStart, ValidDataSampleTimestamp | Sort-Object @{ Expression = { $_.Best }; Descending = $true }, DeviceNames, @{ Expression = $Bias; Descending = $true })
+ Remove-Variable Bias
+ Break
+ }
+ "/miners/running" {
+ $Data = ConvertTo-Json -Depth 4 @(($Variables.Miners.Where({ $_.Status -eq [MinerStatus]::Running }) | Select-Object -ExcludeProperty Arguments, Data, DataReaderJob, DataSampleTimestamp, Devices, EnvVars, PoolNames, Process, ProcessJob, SideIndicator, StatEnd, StatStart, ValidDataSampleTimestamp).ForEach({ $_.Workers = $_.WorkersRunning; $_ }) | Select-Object -ExcludeProperty WorkersRunning)
+ Break
+ }
+ "/miners/unavailable" {
+ $Data = ConvertTo-Json -Depth 4 @($Variables.Miners.Where({ $_.Available -ne $true }) | Select-Object -ExcludeProperty Arguments, Data, DataReaderJob, DataSampleTimestamp, Devices, EnvVars, PoolNames, Process, ProcessJob, SideIndicator, StatEnd, StatStart, ValidDataSampleTimestamp | Sort-Object -Property { $_.DeviceNames }, Name, Algorithm)
+ Break
+ }
+ "/miningpowercost" {
+ $Data = $Variables.MiningPowerCost
+ Break
+ }
+ "/miningearning" {
+ $Data = $Variables.MiningEarning
+ Break
+ }
+ "/miningprofit" {
+ $Data = $Variables.MiningProfit
+ Break
+ }
+ "/poolname" {
+ $Data = ConvertTo-Json -Depth 10 $Config.PoolName
+ break
+ }
+ "/pooldata" {
+ $Data = ConvertTo-Json -Depth 10 $Variables.PoolData
+ break
+ }
+ "/poolsconfig" {
+ $Data = ConvertTo-Json -Depth 10 ($Config.PoolsConfig | Select-Object)
+ Break
+ }
+ "/poolsconfigfile" {
+ $Data = $Config.PoolsConfigFile
+ Break
+ }
+ "/pools" {
+ $Data = ConvertTo-Json -Depth 10 @($Variables.Pools | Select-Object | Sort-Object -Property Algorithm, Name, Region)
+ Break
+ }
+ "/pools/added" {
+ $Data = ConvertTo-Json -Depth 10 @($Variables.PoolsAdded | Select-Object | Sort-Object -Property Algorithm, Name, Region)
+ Break
+ }
+ "/pools/available" {
+ $Data = ConvertTo-Json -Depth 10 @($Variables.Pools.Where({ $_.Available }) | Select-Object | Sort-Object -Property Algorithm, Name, Region)
+ Break
+ }
+ "/pools/best" {
+ $Data = ConvertTo-Json -Depth 10 @($Variables.PoolsBest | Select-Object | Sort-Object -Property Algorithm, Name, Region)
+ Break
+ }
+ "/pools/expired" {
+ $Data = ConvertTo-Json -Depth 10 @($Variables.PoolsExpired | Select-Object | Sort-Object -Property Algorithm, Name, Region)
+ Break
+ }
+ "/pools/new" {
+ $Data = ConvertTo-Json -Depth 10 @($Variables.PoolsNew | Select-Object | Sort-Object -Property Algorithm, Name, Region)
+ Break
+ }
+ "/pools/minersprimaryalgorithm" {
+ $Data = ConvertTo-Json -Depth 10 @($Variables.MinerPools[0] | Select-Object)
+ Break
+ }
+ "/pools/minerssecondaryalgorithm" {
+ $Data = ConvertTo-Json -Depth 10 @($Variables.MinerPools[1] | Select-Object)
+ Break
+ }
+ "/pools/lastearnings" {
+ $Data = ConvertTo-Json -Depth 10 $Variables.PoolsLastEarnings
+ Break
+ }
+ "/pools/lastused" {
+ $Data = ConvertTo-Json -Depth 10 $Variables.PoolsLastUsed
+ Break
+ }
+ "/pools/unavailable" {
+ $Data = ConvertTo-Json -Depth 10 @($Variables.Pools.Where({ -not $_.Available }) | Sort-Object -Property Algorithm, Name, Region)
+ Break
+ }
+ "/pools/updated" {
+ $Data = ConvertTo-Json -Depth 10 @($Variables.PoolsUpdated | Select-Object | Sort-Object -Property Algorithm, Name, Region)
+ Break
+ }
+ "/poolreasons" {
+ $Data = ConvertTo-Json -Depth 10 ($Variables.Pools.Where({ -not $_.Available }).Reasons | Sort-Object -Unique)
+ Break
+ }
+ "/poolvariants" {
+ $Data = ConvertTo-Json -Depth 10 $Variables.PoolVariants
+ break
+ }
+ "/rates" {
+ $Data = ConvertTo-Json -Depth 10 ($Variables.Rates | Select-Object)
+ Break
+ }
+ "/refreshtimestamp" {
+ $Data = $Variables.RefreshTimestamp | ConvertTo-Json
+ break
+ }
+ "/regions" {
+ $Data = ConvertTo-Json -Depth 10 @($Variables.Regions[0] | Sort-Object)
+ Break
+ }
+ "/regionsdata" {
+ $Data = ConvertTo-Json -Depth 10 $Variables.Regions
+ Break
+ }
+ "/stats" {
+ $Data = ConvertTo-Json -Depth 10 ($Stats | Select-Object)
+ Break
+ }
+ "/summarytext" {
+ $Data = ConvertTo-Json -Depth 10 @((($Variables.Summary -replace ' / ', '/' -replace ' ', ' ' -replace ' ', ' ') -split '
').trim())
+ Break
+ }
+ "/summary" {
+ $Data = ConvertTo-Json -Depth 10 @($Variables.Summary | Select-Object)
+ Break
+ }
+ "/switchinglog" {
+ $Data = ConvertTo-Json -Depth 10 @(Get-Content ".\Logs\switchinglog.csv" | ConvertFrom-Csv | Select-Object -Last 1000 | Sort-Object -Property DateTime -Descending)
+ Break
+ }
+ "/unprofitablealgorithms" {
+ $Data = ConvertTo-Json -Depth 10 @($Variables.UnprofitableAlgorithms | Select-Object)
+ Break
+ }
+ "/version" {
+ $Data = ConvertTo-Json @("$($Variables.Branding.ProductLabel) Version: $($Variables.Branding.Version)", "API Version: $($Variables.APIVersion)", "PWSH Version: $($PSVersionTable.PSVersion.ToString())")
+ Break
+ }
+ "/watchdogtimers" {
+ $Data = ConvertTo-Json -Depth 10 @($Variables.WatchdogTimers | Select-Object)
+ Break
+ }
+ "/wallets" {
+ $Data = ConvertTo-Json -Depth 10 ($Config.Wallets | Select-Object)
+ Break
+ }
+ "/watchdogexpiration" {
+ $Data = $Variables.WatchdogReset
+ Break
+ }
+ "/workers" {
+ If ($Config.ShowWorkerStatus -and $Config.MonitoringUser -and $Config.MonitoringServer -and $Variables.WorkersLastUpdated -lt [DateTime]::Now.AddSeconds(-30)) {
+ Read-MonitoringData
+ }
+ $Workers = [System.Collections.ArrayList]@(
+ $Variables.Workers | Select-Object @(
+ @{ Name = "Algorithm"; Expression = { ($_.data.ForEach({ $_.Algorithm -split ',' -join " & " })) -join '
' } },
+ @{ Name = "Benchmark Hashrate"; Expression = { ($_.data.ForEach({ ($_.EstimatedSpeed.ForEach({ If ([Double]$_ -gt 0) { "$($_ | ConvertTo-Hash)/s" -replace '\s+', ' ' } Else { "-" } })) -join " & " })) -join '
' } },
+ @{ Name = "Currency"; Expression = { $_.Data.Currency | Select-Object -Unique } },
+ @{ Name = "EstimatedEarning"; Expression = { [Decimal](($_.Data.Earning | Measure-Object -Sum | Select-Object -ExpandProperty Sum) * $Variables.Rates.BTC.($_.Data.Currency | Select-Object -Unique)) } },
+ @{ Name = "EstimatedProfit"; Expression = { [Decimal]($_.Profit * $Variables.Rates.BTC.($_.Data.Currency | Select-Object -Unique)) } },
+ @{ Name = "LastSeen"; Expression = { "$($_.date)" } },
+ @{ Name = "Live Hashrate"; Expression = { ($_.data.ForEach({ ($_.CurrentSpeed.ForEach({ If ([Double]$_ -gt 0) { "$($_ | ConvertTo-Hash)/s" -replace '\s+', ' ' } Else { '-' } })) -join " & " })) -join '
' } },
+ @{ Name = "Miner"; Expression = { $_.data.name -join '
'} },
+ @{ Name = "Pool"; Expression = { ($_.data.ForEach({ (($_.Pool -split ",").ForEach({ $_ -replace 'Internal$', ' (Internal)' -replace 'External', ' (External)' })) -join " & "})) -join '
' } },
+ @{ Name = "Status"; Expression = { $_.status } },
+ @{ Name = "Version"; Expression = { $_.version } },
+ @{ Name = "Worker"; Expression = { $_.worker } }
+ ) | Sort-Object -Property "Worker"
+ )
+ $Data = ConvertTo-Json @($Workers | Select-Object) -Depth 4
+ Break
+ }
+ Default {
+ # Set index page
+ If ($Path -eq "/") { $Path = "/index.html" }
+
+ # Check if there is a file with the requested path
+ $Filename = "$BasePath$Path"
+ If (Test-Path -LiteralPath $Filename -PathType Leaf) {
+ # If the file is a PowerShell script, execute it and return the output. A $Parameters parameter is sent built from the query string
+ # Otherwise, just return the contents of the file
+ $File = Get-ChildItem $Filename -File
+
+ If ($File.Extension -eq ".ps1") {
+ $Data = & $File.FullName -Parameters $Parameters
+ }
+ Else {
+ $Data = Get-Content $Filename -Raw
+
+ # Process server side includes for html files
+ # Includes are in the traditional '' format used by many web servers
+ If ($File.Extension -eq ".html") {
+ $IncludeRegex = [regex]''
+ $IncludeRegex.Matches($Data).Foreach(
+ {
+ $IncludeFile = $BasePath + '/' + $_.Groups[1].Value
+ If (Test-Path -LiteralPath $IncludeFile -PathType Leaf) {
+ $IncludeData = Get-Content $IncludeFile -Raw
+ $Data = $Data -replace $_.Value, $IncludeData
+ }
+ }
+ )
+ }
+ }
+
+ # Set content type based on file extension
+ If ($MIMETypes.ContainsKey($File.Extension)) {
+ $ContentType = $MIMETypes[$File.Extension]
+ }
+ Else {
+ # If it's an unrecognized file type, prompt for download
+ $ContentType = "application/octet-stream"
+ }
+ }
+ Else {
+ $StatusCode = 404
+ $ContentType = "text/html"
+ $Data = "URI '$Path' is not a valid resource."
+ }
+ }
+}
+
+# If $Data is null, the API will just return whatever data was in the previous request. Instead, show an error
+# This happens if the script just started and hasn't filled all the properties in yet.
+If ($null -eq $Data) {
+ $Data = @{ "Error" = "API data not available" } | ConvertTo-Json
+}
+
+# Fix for Powershell 5.1, cannot handle NaN in Json
+If ($PSVersionTable.PSVersion -lt [Version]"6.0.3" ) { $Data = $Data -replace '":\s*NaN,', '": "-",' }
+
+$Data
\ No newline at end of file
diff --git a/Includes/Dev/GetMinerData2.ps1 b/Includes/Dev/GetMinerData2.ps1
new file mode 100644
index 00000000..7ca46625
--- /dev/null
+++ b/Includes/Dev/GetMinerData2.ps1
@@ -0,0 +1,53 @@
+<#
+Copyright (c) 2018-2024 UselessGuru
+
+UG-Miner is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+UG-Miner is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see .
+#>
+
+<#
+Product: UG-Miner
+File: GetMinerData.ps1
+Version: 4.2.1.0
+Version date: 02 September 2022
+#>
+
+using module ".\Include.psm1"
+
+[CmdletBinding()]
+Param(
+ [Parameter(Mandatory = $true)]
+ [Miner]$Miner
+)
+
+Try {
+
+
+ "$($Miner.name) Start" > "$($Miner.Name)_Debug.txt"
+
+ $Miner.
+ While ($true) {
+ "$($Miner.name) '$($Miner.DataCollectInterval)'" >> "$($Miner.Name)_Debug.txt"
+ $NextLoop = [DateTime]::Now.AddSeconds($Miner.DataCollectInterval)
+ If ($Data = $Miner.GetMinerData()) {
+ $Miner.LastSample = $Data
+ $Miner.Data.Add($Data)
+ $Data | ConvertTo-Json >> "$($Miner.name)_Data.txt"
+ }
+
+ While ([DateTime]::Now -lt $NextLoop) { Start-Sleep -Milliseconds 200 }
+ }
+}
+Catch {
+ Return $Error[0]
+}
diff --git a/Includes/Dev/GetMinerDataRunspace.ps1 b/Includes/Dev/GetMinerDataRunspace.ps1
new file mode 100644
index 00000000..6ec550d6
--- /dev/null
+++ b/Includes/Dev/GetMinerDataRunspace.ps1
@@ -0,0 +1,47 @@
+# Setup runspace to collect miner data in a separate thread
+$Runspace = [RunspaceFactory]::CreateRunspace()
+$Runspace.Name = "$($this.Name)_GetMinerData"
+$Runspace.Open()
+
+[Void]$Runspace.SessionStateProxy.Path.SetLocation($Variables.MainPath)
+
+# $Runspace.SessionStateProxy.SetVariable('Miner', $this)
+$Runspace.SessionStateProxy.SetVariable('Miner', $Miner)
+# $Runspace.SessionStateProxy.SetVariable('Config', $Config)
+# $Runspace.SessionStateProxy.SetVariable('Variables', $Variables)
+
+$PowerShell = [PowerShell]::Create()
+$PowerShell.Runspace = $Runspace
+$PowerShell.AddScript(
+ {
+ $ScriptBody = "using module .\Includes\Include.psm1"; $Script = [ScriptBlock]::Create($ScriptBody); . $Script
+
+ $Data = [PSCustomObject]@{ }
+
+ While ($true) {
+ $NextLoop = [DateTime]::Now.AddSeconds($Miner.DataCollectInterval)
+ Try {
+ "$($Miner.name) '$($Miner.DataCollectInterval)' 1" >> "$($Miner.Name)_Debug.txt"
+ If ($Data = $Miner.GetMinerData()) {
+ "$($Miner.name) '$($Miner.DataCollectInterval)' 2" >> "$($Miner.Name)_Debug.txt"
+ $Miner.LastSample = $Data
+ $Miner.Data += $Data
+ $Data | ConvertTo-Json >> "$($Miner.name)_Data.txt"
+ }
+ }
+ Catch {
+ "$($Miner.name) '$($Miner.DataCollectInterval)' 3" >> "$($Miner.Name)_Debug.txt"
+ $Error[0] >> "$($Miner.Name)_Debug.txt"
+ }
+ While (([DateTime]::Now -lt $NextLoop) { Start-Sleep -Milliseconds 200 }
+ }
+ }
+)
+
+$AsyncObject = $PowerShell.BeginInvoke()
+# $Miner.GetMinerDataRunspace = $Runspace
+# $Miner.GetMinerDataPowerShell = $PowerShell
+
+# $Miner.GetMinerDataRunspace | Add-Member -Force @{
+# AsyncObject = $AsyncObject
+# }
diff --git a/Includes/Dev/SSE.ps1 b/Includes/Dev/SSE.ps1
new file mode 100644
index 00000000..612779f5
--- /dev/null
+++ b/Includes/Dev/SSE.ps1
@@ -0,0 +1,23 @@
+
+$Body = @{
+ title = "foo"
+ body = "bar"
+ userId = 1
+}
+
+# The ContentType will automatically be set to application/x-www-form-urlencoded for
+# all POST requests, unless specified otherwise.
+$Params = @{
+ Method = "Put"
+ Uri = "http://localhost:3999/"
+ Body = $JsonBody
+ ContentType = "text/event-stream"
+ Headers = @{
+ "Connection" = "keep-alive"
+ "Cache-Control" = "no-cache"
+ }
+}
+
+$Result = Invoke-RestMethod @Params
+
+Start-Sleep -Seconds 0
\ No newline at end of file
diff --git a/Includes/Downloader.ps1 b/Includes/Downloader.ps1
index 6af714f0..121fc341 100644
--- a/Includes/Downloader.ps1
+++ b/Includes/Downloader.ps1
@@ -18,8 +18,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
File: \Includes\Downloader.ps1
-Version: 6.2.22
-Version date: 2024/08/01
+Version: 6.2.23
+Version date: 2024/08/04
#>
using module .\Includes\Include.psm1
diff --git a/Includes/Include.psm1 b/Includes/Include.psm1
index 1ed3ae93..e90c3aa4 100644
--- a/Includes/Include.psm1
+++ b/Includes/Include.psm1
@@ -18,8 +18,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
File: \Includes\include.ps1
-Version: 6.2.22
-Version date: 2024/08/01
+Version: 6.2.23
+Version date: 2024/08/04
#>
$Global:DebugPreference = "SilentlyContinue"
@@ -476,7 +476,6 @@ Class Miner {
$this.StatusInfo = "Idle"
$this.SubStatus = $this.Status
}
- # $this.Data = [System.Collections.Generic.List[PSCustomObject]]@()
$this.WorkersRunning = [Worker[]]@()
}
@@ -817,27 +816,10 @@ Function Start-Core {
Function Stop-Core {
- # Allow up to 30 seconds for all miners to get stopped
- $Counter = 0
- While ($Counter -lt 30 -and $Variables.Miners.Where({ [MinerStatus]::DryRun, [MinerStatus]::Running -contains $_.Status })) {
- Start-Sleep -Seconds 1
- $Counter ++
- }
- Remove-Variable Counter
-
If ($Global:CoreRunspace) {
$Global:CoreRunspace.PowerShell.Stop() | Out-Null
$Global:CoreRunspace.PowerShell.EndInvoke($Global:CoreRunspace.AsyncObject) | Out-Null
- If ($Variables.NewMiningStatus -eq "Idle") {
- $Variables.Pools = $Variables.PoolsBest = $Variables.PoolsNew = [Pool[]]@()
- $Variables.PoolsCount = 0
- $Variables.Miners = $Variables.MinersBestPerDevice = $Variables.MinersBests = $Variables.MinersOptimal = $Variables.RunningMiners = [Miner[]]@()
- $Variables.MiningEarning = $Variables.MiningProfit = $Variables.MiningPowerCost = [Double]::NaN
- $Variables.CycleStarts = @()
- $Variables.Timer = $null
- }
-
$Variables.MinersBest = [Miner[]]@()
$Variables.BenchmarkingOrMeasuringMiners = [Miner[]]@()
$Variables.FailedMiners = [Miner[]]@()
@@ -851,7 +833,89 @@ Function Stop-Core {
$Global:CoreRunspace.Remove("PowerShell")
Remove-Variable CoreRunspace -Scope Global -ErrorAction Ignore
+
+ # Stop all running miners
+ ForEach ($Miner in $Variables.Miners.Where({ [MinerStatus]::DryRun, [MinerStatus]::Running -contains $_.Status })) {
+ # $Miner.SetStatus([MinerStatus]::Idle) # does not work here (still investigating)
+ $Miner.StatusInfo = "Stopping miner '$($Miner.Info)'..."
+ Write-Message -Level Info $Miner.StatusInfo
+
+ ForEach ($Worker in $Miner.WorkersRunning) {
+ If ($WatchdogTimers = @($Variables.WatchdogTimers.Where({ $_.MinerName -eq $Miner.Name -and $_.PoolName -eq $Worker.Pool.Name -and $_.PoolRegion -eq $Worker.Pool.Region -and $_.AlgorithmVariant -eq $Worker.Pool.AlgorithmVariant -and $_.DeviceNames -eq $Miner.DeviceNames }))) {
+ # Remove Watchdog timers
+ $Variables.WatchdogTimers = @($Variables.WatchdogTimers.Where({ $_ -notin $WatchdogTimers }))
+ }
+ }
+ $Miner.SetStatus([MinerStatus]::Idle)
+ Remove-Variable WatchdogTimers, Worker -ErrorAction Ignore
+
+ $Miner.StopDataReader()
+
+ $Miner.EndTime = [DateTime]::Now.ToUniversalTime()
+
+ If ($Miner.ProcessId) {
+ If (Get-Process -Id $Miner.ProcessId -ErrorAction Ignore) { Stop-Process -Id $Miner.ProcessId -Force -ErrorAction Ignore | Out-Null }
+ $Miner.ProcessId = $null
+ }
+
+ If ($Miner.Process) {
+ [Void]$Miner.Process.CloseMainWindow()
+ $Miner.Process = $null
+ }
+
+ If ($Miner.ProcessJob) {
+ Try { $Miner.Active += $Miner.ProcessJob.PSEndTime - $Miner.ProcessJob.PSBeginTime } Catch { }
+ $Miner.ProcessJob = $null
+ }
+
+ $Miner.Status = If ([MinerStatus]::Running, [MinerStatus]::DryRun -contains $Miner.Status) { [MinerStatus]::Idle } Else { [MinerStatus]::Failed }
+
+ # Log switching information to .\Logs\SwitchingLog
+ [PSCustomObject]@{
+ DateTime = (Get-Date -Format o)
+ Action = If ($Miner.Status -eq [MinerStatus]::Idle) { "Stopped" } Else { "Failed" }
+ Name = $Miner.Name
+ Activated = $Miner.Activated
+ Accounts = $Miner.WorkersRunning.Pool.User -join " "
+ Algorithms = $Miner.WorkersRunning.Pool.AlgorithmVariant -join " "
+ Benchmark = $Miner.Benchmark
+ CommandLine = $Miner.CommandLine
+ Cycle = $Miner.ContinousCycle
+ DeviceNames = $Miner.DeviceNames -join " "
+ Duration = "{0:hh\:mm\:ss}" -f ($Miner.EndTime - $Miner.BeginTime)
+ Earning = $Miner.Earning
+ Earning_Bias = $Miner.Earning_Bias
+ LastDataSample = $Miner.Data | Select-Object -Last 1 | ConvertTo-Json -Compress
+ MeasurePowerConsumption = $Miner.MeasurePowerConsumption
+ Pools = ($Miner.WorkersRunning.Pool.Name | Select-Object -Unique) -join " "
+ Profit = $Miner.Profit
+ Profit_Bias = $Miner.Profit_Bias
+ Reason = If ($Miner.StatusInfo -and $Miner.Status -eq [MinerStatus]::Failed) { $Miner.StatusInfo -replace "'$($Miner.StatusInfo)' " } Else { "" }
+ Type = $Miner.Type
+ } | Export-Csv -Path ".\Logs\SwitchingLog.csv" -Append -NoTypeInformation
+
+ If ($Miner.Status -eq [MinerStatus]::Idle) {
+ $Miner.StatusInfo = "Idle"
+ $Miner.SubStatus = $Miner.Status
+ }
+ $Miner.WorkersRunning = [Worker[]]@()
+
+ $Variables.Devices.Where({ $Miner.DeviceNames -contains $_.Name }).ForEach({ $_.Status = $Miner.Status; $_.StatusInfo = $Miner.StatusInfo; $_.SubStatus = $Miner.SubStatus })
+ }
+
+ If ($Variables.NewMiningStatus -eq "Idle") {
+ $Variables.Pools = $Variables.PoolsBest = $Variables.PoolsNew = [Pool[]]@()
+ $Variables.PoolsCount = 0
+ $Variables.Miners = $Variables.MinersBestPerDevice = $Variables.MinersBests = $Variables.MinersOptimal = $Variables.RunningMiners = [Miner[]]@()
+ $Variables.MiningEarning = $Variables.MiningProfit = $Variables.MiningPowerCost = [Double]::NaN
+ $Variables.CycleStarts = @()
+ $Variables.Timer = $null
+ }
+
+ # Refresh selected tab
+ If ($LegacyGUIform) { Update-TabControl }
}
+
[System.GC]::Collect()
}
@@ -3065,9 +3129,6 @@ Function Update-DAGdata {
}
}
- # Faster shutdown
- If ($Variables.NewMiningStatus -ne "Running" -or $Variables.IdleDetectionRunspace.MiningStatus -eq "Idle") { Continue }
-
# Update on script start, once every 24hrs or if unable to get data from source
$Url = "https://minerstat.com/dag-size-calculator"
If ($Variables.DAGdata.Updated.$Url -lt $Variables.ScriptStartTime -or $Variables.DAGdata.Updated.$Url -lt [DateTime]::Now.ToUniversalTime().AddDays(-1)) {
@@ -3107,9 +3168,6 @@ Function Update-DAGdata {
}
}
- # Faster shutdown
- If ($Variables.NewMiningStatus -ne "Running" -or $Variables.IdleDetectionRunspace.MiningStatus -eq "Idle") { Continue }
-
# Update on script start, once every 24hrs or if unable to get data from source
$Url = "https://prohashing.com/api/v1/currencies"
If ($Variables.DAGdata.Updated.$Url -lt $Variables.ScriptStartTime -or $Variables.DAGdata.Updated.$Url -lt [DateTime]::Now.ToUniversalTime().AddDays(-1)) {
@@ -3147,9 +3205,6 @@ Function Update-DAGdata {
}
}
- # Faster shutdown
- If ($Variables.NewMiningStatus -ne "Running" -or $Variables.IdleDetectionRunspace.MiningStatus -eq "Idle") { Continue }
-
# Update on script start, once every 24hrs or if unable to get data from source
$Currency = "SCC"
$Url = "https://www.coinexplorer.net/api/v1/SCC/getblockcount"
@@ -3176,9 +3231,6 @@ Function Update-DAGdata {
}
}
- # Faster shutdown
- If ($Variables.NewMiningStatus -ne "Running" -or $Variables.IdleDetectionRunspace.MiningStatus -eq "Idle") { Continue }
-
# Update on script start, once every 24hrs or if unable to get data from source
$Currency = "EVR"
$Url = "https://evr.cryptoscope.io/api/getblockcount"
@@ -3208,9 +3260,6 @@ Function Update-DAGdata {
}
}
- # Faster shutdown
- If ($Variables.NewMiningStatus -ne "Running" -or $Variables.IdleDetectionRunspace.MiningStatus -eq "Idle") { Continue }
-
$Currency = "MEWC"
$Url = "https://mewc.cryptoscope.io/api/getblockcount"
If (-not $Variables.DAGdata.Currency.$Currency.BlockHeight -or $Variables.DAGdata.Updated.$Url -lt $Variables.ScriptStartTime -or $Variables.DAGdata.Updated.$Url -lt [DateTime]::Now.ToUniversalTime().AddDays(-1)) {
diff --git a/Includes/LegacyGUI.ps1 b/Includes/LegacyGUI.ps1
index c1d18b0a..a7c61e82 100644
--- a/Includes/LegacyGUI.ps1
+++ b/Includes/LegacyGUI.ps1
@@ -18,8 +18,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
File: \Includes\LegacyGUI.psm1
-Version: 6.2.22
-Version date: 2024/08/01
+Version: 6.2.23
+Version date: 2024/08/04
#>
[Void][System.Reflection.Assembly]::Load("System.Windows.Forms")
@@ -296,47 +296,47 @@ Function Update-TabControl {
If ($Config.BalancesTrackerPollInterval -gt 0) {
If ($Variables.Balances) {
$LegacyGUIbalancesLabel.Text = "Balances data updated $(($Variables.Balances.Values.LastUpdated | Sort-Object -Bottom 1).ToLocalTime().ToString())"
-
- $LegacyGUIbalancesDGV.BeginInit()
- $LegacyGUIbalancesDGV.ClearSelection()
- $LegacyGUIbalancesDGV.DataSource = $Variables.Balances.Values | Select-Object @(
- @{ Name = "Currency"; Expression = { $_.Currency } },
- @{ Name = "Pool [Currency]"; Expression = { "$($_.Pool) [$($_.Currency)]" } },
- @{ Name = "Balance ($($Config.MainCurrency))"; Expression = { "{0:n$($Config.DecimalsMax)}" -f ($_.Balance * $Variables.Rates.($_.Currency).($Config.MainCurrency)) } },
- @{ Name = "Avg. $($Config.MainCurrency)/day"; Expression = { "{0:n$($Config.DecimalsMax)}" -f ($_.AvgDailyGrowth * $Variables.Rates.($_.Currency).($Config.MainCurrency)) } },
- @{ Name = "$($Config.MainCurrency) in 1h"; Expression = { "{0:n$($Config.DecimalsMax)}" -f ($_.Growth1 * $Variables.Rates.($_.Currency).($Config.MainCurrency)) } },
- @{ Name = "$($Config.MainCurrency) in 6h"; Expression = { "{0:n$($Config.DecimalsMax)}" -f ($_.Growth6 * $Variables.Rates.($_.Currency).($Config.MainCurrency)) } },
- @{ Name = "$($Config.MainCurrency) in 24h"; Expression = { "{0:n$($Config.DecimalsMax)}" -f ($_.Growth24 * $Variables.Rates.($_.Currency).($Config.MainCurrency)) } },
- @{ Name = "Projected pay date"; Expression = { If ($_.ProjectedPayDate -is [DateTime]) { $_.ProjectedPayDate.ToShortDateString() } Else { $_.ProjectedPayDate } } },
- @{ Name = "Payout threshold"; Expression = { If ($_.PayoutThresholdCurrency -eq "BTC" -and $Config.UsemBTC) { $PayoutThresholdCurrency = "mBTC"; $mBTCfactor = 1000 } Else { $PayoutThresholdCurrency = $_.PayoutThresholdCurrency; $mBTCfactor = 1 }; "{0:P2} of {1} {2} " -f ($_.Balance / $_.PayoutThreshold * $Variables.Rates.($_.Currency).($_.PayoutThresholdCurrency)), ($_.PayoutThreshold * $mBTCfactor), $PayoutThresholdCurrency } }
- ) | Sort-Object -Property Pool | Out-DataTable
-
- If ($LegacyGUIbalancesDGV.Columns) {
- $LegacyGUIbalancesDGV.Columns[0].Visible = $false
- $LegacyGUIbalancesDGV.Columns[1].FillWeight = 140
- $LegacyGUIbalancesDGV.Columns[2].FillWeight = 90; $LegacyGUIbalancesDGV.Columns[2].DefaultCellStyle.Alignment = "MiddleRight"; $LegacyGUIbalancesDGV.Columns[2].HeaderCell.Style.Alignment = "MiddleRight"
- $LegacyGUIbalancesDGV.Columns[3].FillWeight = 90; $LegacyGUIbalancesDGV.Columns[3].DefaultCellStyle.Alignment = "MiddleRight"; $LegacyGUIbalancesDGV.Columns[3].HeaderCell.Style.Alignment = "MiddleRight"
- $LegacyGUIbalancesDGV.Columns[4].FillWeight = 75; $LegacyGUIbalancesDGV.Columns[4].DefaultCellStyle.Alignment = "MiddleRight"; $LegacyGUIbalancesDGV.Columns[4].HeaderCell.Style.Alignment = "MiddleRight"
- $LegacyGUIbalancesDGV.Columns[5].FillWeight = 75; $LegacyGUIbalancesDGV.Columns[5].DefaultCellStyle.Alignment = "MiddleRight"; $LegacyGUIbalancesDGV.Columns[5].HeaderCell.Style.Alignment = "MiddleRight"
- $LegacyGUIbalancesDGV.Columns[6].FillWeight = 75; $LegacyGUIbalancesDGV.Columns[6].DefaultCellStyle.Alignment = "MiddleRight"; $LegacyGUIbalancesDGV.Columns[6].HeaderCell.Style.Alignment = "MiddleRight"
- $LegacyGUIbalancesDGV.Columns[7].FillWeight = 80
- $LegacyGUIbalancesDGV.Columns[8].FillWeight = 100
- }
- $LegacyGUIbalancesDGV.Rows.ForEach(
- {
- $_.Cells[2].ToolTipText = "$($_.Cells[0].Value) {0:n$($Config.DecimalsMax)}" -f ([Double]$_.Cells[2].Value * $Variables.Rates.($Config.MainCurrency).($_.Cells[0].Value))
- $_.Cells[3].ToolTipText = "$($_.Cells[0].Value) {0:n$($Config.DecimalsMax)}" -f ([Double]$_.Cells[3].Value * $Variables.Rates.($Config.MainCurrency).($_.Cells[0].Value))
- $_.Cells[4].ToolTipText = "$($_.Cells[0].Value) {0:n$($Config.DecimalsMax)}" -f ([Double]$_.Cells[4].Value * $Variables.Rates.($Config.MainCurrency).($_.Cells[0].Value))
- $_.Cells[5].ToolTipText = "$($_.Cells[0].Value) {0:n$($Config.DecimalsMax)}" -f ([Double]$_.Cells[5].Value * $Variables.Rates.($Config.MainCurrency).($_.Cells[0].Value))
- $_.Cells[6].ToolTipText = "$($_.Cells[0].Value) {0:n$($Config.DecimalsMax)}" -f ([Double]$_.Cells[6].Value * $Variables.Rates.($Config.MainCurrency).($_.Cells[0].Value))
- }
- )
- Resize-Form # To fully show lauched miners gridview
- $LegacyGUIbalancesDGV.EndInit()
}
Else {
$LegacyGUIbalancesLabel.Text = "Waiting for balances data..."
}
+
+ $LegacyGUIbalancesDGV.BeginInit()
+ $LegacyGUIbalancesDGV.ClearSelection()
+ $LegacyGUIbalancesDGV.DataSource = $Variables.Balances.Values | Select-Object @(
+ @{ Name = "Currency"; Expression = { $_.Currency } },
+ @{ Name = "Pool [Currency]"; Expression = { "$($_.Pool) [$($_.Currency)]" } },
+ @{ Name = "Balance ($($Config.MainCurrency))"; Expression = { "{0:n$($Config.DecimalsMax)}" -f ($_.Balance * $Variables.Rates.($_.Currency).($Config.MainCurrency)) } },
+ @{ Name = "Avg. $($Config.MainCurrency)/day"; Expression = { "{0:n$($Config.DecimalsMax)}" -f ($_.AvgDailyGrowth * $Variables.Rates.($_.Currency).($Config.MainCurrency)) } },
+ @{ Name = "$($Config.MainCurrency) in 1h"; Expression = { "{0:n$($Config.DecimalsMax)}" -f ($_.Growth1 * $Variables.Rates.($_.Currency).($Config.MainCurrency)) } },
+ @{ Name = "$($Config.MainCurrency) in 6h"; Expression = { "{0:n$($Config.DecimalsMax)}" -f ($_.Growth6 * $Variables.Rates.($_.Currency).($Config.MainCurrency)) } },
+ @{ Name = "$($Config.MainCurrency) in 24h"; Expression = { "{0:n$($Config.DecimalsMax)}" -f ($_.Growth24 * $Variables.Rates.($_.Currency).($Config.MainCurrency)) } },
+ @{ Name = "Projected pay date"; Expression = { If ($_.ProjectedPayDate -is [DateTime]) { $_.ProjectedPayDate.ToShortDateString() } Else { $_.ProjectedPayDate } } },
+ @{ Name = "Payout threshold"; Expression = { If ($_.PayoutThresholdCurrency -eq "BTC" -and $Config.UsemBTC) { $PayoutThresholdCurrency = "mBTC"; $mBTCfactor = 1000 } Else { $PayoutThresholdCurrency = $_.PayoutThresholdCurrency; $mBTCfactor = 1 }; "{0:P2} of {1} {2} " -f ($_.Balance / $_.PayoutThreshold * $Variables.Rates.($_.Currency).($_.PayoutThresholdCurrency)), ($_.PayoutThreshold * $mBTCfactor), $PayoutThresholdCurrency } }
+ ) | Sort-Object -Property Pool | Out-DataTable
+
+ If ($LegacyGUIbalancesDGV.Columns) {
+ $LegacyGUIbalancesDGV.Columns[0].Visible = $false
+ $LegacyGUIbalancesDGV.Columns[1].FillWeight = 140
+ $LegacyGUIbalancesDGV.Columns[2].FillWeight = 90; $LegacyGUIbalancesDGV.Columns[2].DefaultCellStyle.Alignment = "MiddleRight"; $LegacyGUIbalancesDGV.Columns[2].HeaderCell.Style.Alignment = "MiddleRight"
+ $LegacyGUIbalancesDGV.Columns[3].FillWeight = 90; $LegacyGUIbalancesDGV.Columns[3].DefaultCellStyle.Alignment = "MiddleRight"; $LegacyGUIbalancesDGV.Columns[3].HeaderCell.Style.Alignment = "MiddleRight"
+ $LegacyGUIbalancesDGV.Columns[4].FillWeight = 75; $LegacyGUIbalancesDGV.Columns[4].DefaultCellStyle.Alignment = "MiddleRight"; $LegacyGUIbalancesDGV.Columns[4].HeaderCell.Style.Alignment = "MiddleRight"
+ $LegacyGUIbalancesDGV.Columns[5].FillWeight = 75; $LegacyGUIbalancesDGV.Columns[5].DefaultCellStyle.Alignment = "MiddleRight"; $LegacyGUIbalancesDGV.Columns[5].HeaderCell.Style.Alignment = "MiddleRight"
+ $LegacyGUIbalancesDGV.Columns[6].FillWeight = 75; $LegacyGUIbalancesDGV.Columns[6].DefaultCellStyle.Alignment = "MiddleRight"; $LegacyGUIbalancesDGV.Columns[6].HeaderCell.Style.Alignment = "MiddleRight"
+ $LegacyGUIbalancesDGV.Columns[7].FillWeight = 80
+ $LegacyGUIbalancesDGV.Columns[8].FillWeight = 100
+ }
+ $LegacyGUIbalancesDGV.Rows.ForEach(
+ {
+ $_.Cells[2].ToolTipText = "$($_.Cells[0].Value) {0:n$($Config.DecimalsMax)}" -f ([Double]$_.Cells[2].Value * $Variables.Rates.($Config.MainCurrency).($_.Cells[0].Value))
+ $_.Cells[3].ToolTipText = "$($_.Cells[0].Value) {0:n$($Config.DecimalsMax)}" -f ([Double]$_.Cells[3].Value * $Variables.Rates.($Config.MainCurrency).($_.Cells[0].Value))
+ $_.Cells[4].ToolTipText = "$($_.Cells[0].Value) {0:n$($Config.DecimalsMax)}" -f ([Double]$_.Cells[4].Value * $Variables.Rates.($Config.MainCurrency).($_.Cells[0].Value))
+ $_.Cells[5].ToolTipText = "$($_.Cells[0].Value) {0:n$($Config.DecimalsMax)}" -f ([Double]$_.Cells[5].Value * $Variables.Rates.($Config.MainCurrency).($_.Cells[0].Value))
+ $_.Cells[6].ToolTipText = "$($_.Cells[0].Value) {0:n$($Config.DecimalsMax)}" -f ([Double]$_.Cells[6].Value * $Variables.Rates.($Config.MainCurrency).($_.Cells[0].Value))
+ }
+ )
+ Resize-Form # To fully show lauched miners gridview
+ $LegacyGUIbalancesDGV.EndInit()
}
Else {
$LegacyGUIbalancesLabel.Text = "BalanceTracker is disabled (Configuration item 'BalancesTrackerPollInterval' -eq 0)"
@@ -481,47 +481,45 @@ Function Update-TabControl {
# Read-MonitoringData | Out-Null
- # If ($Variables.Workers) {
- # $nl = "`n" # Must use variable, cannot join with '`n' directly
-
- # $LegacyGUIworkersDGV.BeginInit()
- # $LegacyGUIworkersDGV.ClearSelection()
- # $LegacyGUIworkersDGV.DataSource = $Variables.Workers | Select-Object @(
- # @{ Name = "Worker"; Expression = { $_.worker } },
- # @{ Name = "Status"; Expression = { $_.status } },
- # @{ Name = "Last seen"; Expression = { (Get-TimeSince $_.date) } },
- # @{ Name = "Version"; Expression = { $_.version } },
- # @{ Name = "Currency"; Expression = { $_.data.Currency | Select-Object -Unique } },
- # @{ Name = "Estimated earning/day"; Expression = { If ($null -ne $_.Data) { "{0:n$($Config.DecimalsMax)}" -f (($_.Data.Earning.Where({ -not [Double]::IsNaN($_) }) | Measure-Object -Sum).Sum * $Variables.Rates.BTC.($_.data.Currency | Select-Object -Unique)) } } },
- # @{ Name = "Estimated profit/day"; Expression = { If ($null -ne $_.Data) { " {0:n$($Config.DecimalsMax)}" -f (($_.Data.Profit.Where({ -not [Double]::IsNaN($_) }) | Measure-Object -Sum).Sum * $Variables.Rates.BTC.($_.data.Currency | Select-Object -Unique)) } } },
- # @{ Name = "Miner"; Expression = { $_.data.Name -join $nl } },
- # @{ Name = "Pool"; Expression = { $_.data.ForEach({ $_.Pool -split "," -join " & " }) -join $nl } },
- # @{ Name = "Algorithm"; Expression = { $_.data.ForEach({ $_.Algorithm -split "," -join " & " }) -join $nl } },
- # @{ Name = "Live hashrate"; Expression = { $_.data.ForEach({ $_.CurrentSpeed.ForEach({ If ([Double]::IsNaN($_)) { "n/a" } Else { $_ | ConvertTo-Hash } }) -join " & " }) -join $nl } },
- # @{ Name = "Benchmark hashrate(s)"; Expression = { $_.data.ForEach({ $_.EstimatedSpeed.ForEach({ If ([Double]::IsNaN($_)) { "n/a" } Else { $_ | ConvertTo-Hash } }) -join " & " }) -join $nl } }
- # ) | Sort-Object -Property "Worker" | Out-DataTable
- # If ($LegacyGUIworkersDGV.Columns) {
- # $LegacyGUIworkersDGV.Columns[0].FillWeight = 70
- # $LegacyGUIworkersDGV.Columns[1].FillWeight = 60
- # $LegacyGUIworkersDGV.Columns[2].FillWeight = 80
- # $LegacyGUIworkersDGV.Columns[3].FillWeight = 70
- # $LegacyGUIworkersDGV.Columns[4].FillWeight = 40
- # $LegacyGUIworkersDGV.Columns[5].FillWeight = 65; $LegacyGUIworkersDGV.Columns[5].DefaultCellStyle.Alignment = "MiddleRight"; $LegacyGUIworkersDGV.Columns[5].HeaderCell.Style.Alignment = "MiddleRight"
- # $LegacyGUIworkersDGV.Columns[6].FillWeight = 65; $LegacyGUIworkersDGV.Columns[6].DefaultCellStyle.Alignment = "MiddleRight"; $LegacyGUIworkersDGV.Columns[6].HeaderCell.Style.Alignment = "MiddleRight"
- # $LegacyGUIworkersDGV.Columns[7].FillWeight = 150
- # $LegacyGUIworkersDGV.Columns[8].FillWeight = 95
- # $LegacyGUIworkersDGV.Columns[9].FillWeight = 75
- # $LegacyGUIworkersDGV.Columns[10].FillWeight = 65; $LegacyGUIworkersDGV.Columns[10].DefaultCellStyle.Alignment = "MiddleRight"; $LegacyGUIworkersDGV.Columns[10].HeaderCell.Style.Alignment = "MiddleRight"
- # $LegacyGUIworkersDGV.Columns[11].FillWeight = 65; $LegacyGUIworkersDGV.Columns[11].DefaultCellStyle.Alignment = "MiddleRight"; $LegacyGUIworkersDGV.Columns[11].HeaderCell.Style.Alignment = "MiddleRight"
- # }
- # Set-WorkerColor
- # $LegacyGUIworkersDGV.EndInit()
+ # If ($Variables.Workers) { $LegacyGUIworkersLabel.Text = "Worker status updated $($Variables.WorkersLastUpdated.ToString())" }
+ # ElseIf ($Variables.MiningStatus -eq "Idle") { $LegacyGUIworkersLabel.Text = "No data - mining is stopped" }
+ # ElseIf ($Variables.MiningStatus -eq "Paused") { $LegacyGUIworkersLabel.Text = "No data - mining is paused" }
+ # Else { $LegacyGUIworkersLabel.Text = "Waiting for data..." }
+
+ # $nl = "`n" # Must use variable, cannot join with '`n' directly
+
+ # $LegacyGUIworkersDGV.BeginInit()
+ # $LegacyGUIworkersDGV.ClearSelection()
+ # $LegacyGUIworkersDGV.DataSource = $Variables.Workers | Select-Object @(
+ # @{ Name = "Worker"; Expression = { $_.worker } },
+ # @{ Name = "Status"; Expression = { $_.status } },
+ # @{ Name = "Last seen"; Expression = { (Get-TimeSince $_.date) } },
+ # @{ Name = "Version"; Expression = { $_.version } },
+ # @{ Name = "Currency"; Expression = { $_.data.Currency | Select-Object -Unique } },
+ # @{ Name = "Estimated earning/day"; Expression = { If ($null -ne $_.Data) { "{0:n$($Config.DecimalsMax)}" -f (($_.Data.Earning.Where({ -not [Double]::IsNaN($_) }) | Measure-Object -Sum).Sum * $Variables.Rates.BTC.($_.data.Currency | Select-Object -Unique)) } } },
+ # @{ Name = "Estimated profit/day"; Expression = { If ($null -ne $_.Data) { " {0:n$($Config.DecimalsMax)}" -f (($_.Data.Profit.Where({ -not [Double]::IsNaN($_) }) | Measure-Object -Sum).Sum * $Variables.Rates.BTC.($_.data.Currency | Select-Object -Unique)) } } },
+ # @{ Name = "Miner"; Expression = { $_.data.Name -join $nl } },
+ # @{ Name = "Pool"; Expression = { $_.data.ForEach({ $_.Pool -split "," -join " & " }) -join $nl } },
+ # @{ Name = "Algorithm"; Expression = { $_.data.ForEach({ $_.Algorithm -split "," -join " & " }) -join $nl } },
+ # @{ Name = "Live hashrate"; Expression = { $_.data.ForEach({ $_.CurrentSpeed.ForEach({ If ([Double]::IsNaN($_)) { "n/a" } Else { $_ | ConvertTo-Hash } }) -join " & " }) -join $nl } },
+ # @{ Name = "Benchmark hashrate(s)"; Expression = { $_.data.ForEach({ $_.EstimatedSpeed.ForEach({ If ([Double]::IsNaN($_)) { "n/a" } Else { $_ | ConvertTo-Hash } }) -join " & " }) -join $nl } }
+ # ) | Sort-Object -Property "Worker" | Out-DataTable
+ # If ($LegacyGUIworkersDGV.Columns) {
+ # $LegacyGUIworkersDGV.Columns[0].FillWeight = 70
+ # $LegacyGUIworkersDGV.Columns[1].FillWeight = 60
+ # $LegacyGUIworkersDGV.Columns[2].FillWeight = 80
+ # $LegacyGUIworkersDGV.Columns[3].FillWeight = 70
+ # $LegacyGUIworkersDGV.Columns[4].FillWeight = 40
+ # $LegacyGUIworkersDGV.Columns[5].FillWeight = 65; $LegacyGUIworkersDGV.Columns[5].DefaultCellStyle.Alignment = "MiddleRight"; $LegacyGUIworkersDGV.Columns[5].HeaderCell.Style.Alignment = "MiddleRight"
+ # $LegacyGUIworkersDGV.Columns[6].FillWeight = 65; $LegacyGUIworkersDGV.Columns[6].DefaultCellStyle.Alignment = "MiddleRight"; $LegacyGUIworkersDGV.Columns[6].HeaderCell.Style.Alignment = "MiddleRight"
+ # $LegacyGUIworkersDGV.Columns[7].FillWeight = 150
+ # $LegacyGUIworkersDGV.Columns[8].FillWeight = 95
+ # $LegacyGUIworkersDGV.Columns[9].FillWeight = 75
+ # $LegacyGUIworkersDGV.Columns[10].FillWeight = 65; $LegacyGUIworkersDGV.Columns[10].DefaultCellStyle.Alignment = "MiddleRight"; $LegacyGUIworkersDGV.Columns[10].HeaderCell.Style.Alignment = "MiddleRight"
+ # $LegacyGUIworkersDGV.Columns[11].FillWeight = 65; $LegacyGUIworkersDGV.Columns[11].DefaultCellStyle.Alignment = "MiddleRight"; $LegacyGUIworkersDGV.Columns[11].HeaderCell.Style.Alignment = "MiddleRight"
# }
- # If ($Variables.Workers) { $LegacyGUIworkersLabel.Text = "Worker status updated $($Variables.WorkersLastUpdated.ToString())" }
- # ElseIf ($Variables.MiningStatus -eq "Idle") { $LegacyGUIworkersLabel.Text = "No data - mining is stopped" }
- # ElseIf ($Variables.MiningStatus -eq "Paused") { $LegacyGUIworkersLabel.Text = "No data - mining is paused" }
- # Else { $LegacyGUIworkersLabel.Text = "Waiting for data..." }
-
+ # Set-WorkerColor
+ # $LegacyGUIworkersDGV.EndInit()
# }
# Else {
# $LegacyGUIworkersLabel.Text = "Worker status reporting is disabled$(If (-not $Variables.APIRunspace) { " (Configuration item 'ShowWorkerStatus' -eq `$false)" })."
@@ -549,28 +547,28 @@ Function Update-TabControl {
If ($Config.Watchdog) {
If ($Variables.WatchdogTimers) {
$LegacyGUIwatchdogTimersLabel.Text = "Watchdog timers updated $([DateTime]::Now.ToString())"
-
- $LegacyGUIwatchdogTimersDGV.BeginInit()
- $LegacyGUIwatchdogTimersDGV.ClearSelection()
- $LegacyGUIwatchdogTimersDGV.DataSource = $Variables.WatchdogTimers | Sort-Object -Property MinerName, Kicked | Select-Object @(
- @{ Name = "Name"; Expression = { $_.MinerName } },
- @{ Name = "Algorithms"; Expression = { $_.Algorithm } },
- @{ Name = "Pool name"; Expression = { $_.PoolName } },
- @{ Name = "Region"; Expression = { $_.PoolRegion } },
- @{ Name = "Device(s)"; Expression = { $_.DeviceNames -join ", " } },
- @{ Name = "Last updated"; Expression = { (Get-TimeSince $_.Kicked.ToLocalTime()) } }
- ) | Out-DataTable
- If ($LegacyGUIwatchdogTimersDGV.Columns) {
- $LegacyGUIwatchdogTimersDGV.Columns[0].FillWeight = 120
- $LegacyGUIwatchdogTimersDGV.Columns[1].FillWeight = 100
- $LegacyGUIwatchdogTimersDGV.Columns[2].FillWeight = 100
- $LegacyGUIwatchdogTimersDGV.Columns[3].FillWeight = 60
- $LegacyGUIwatchdogTimersDGV.Columns[4].FillWeight = 30 + ($Variables.WatchdogTimers.ForEach({ $_.DeviceNames.Count }) | Measure-Object -Maximum).Maximum * 20
- $LegacyGUIwatchdogTimersDGV.Columns[5].FillWeight = 100
- }
- $LegacyGUIwatchdogTimersDGV.EndInit()
}
Else { $LegacyGUIwatchdogTimersLabel.Text = "Watchdog timers - no data" }
+
+ $LegacyGUIwatchdogTimersDGV.BeginInit()
+ $LegacyGUIwatchdogTimersDGV.ClearSelection()
+ $LegacyGUIwatchdogTimersDGV.DataSource = $Variables.WatchdogTimers | Sort-Object -Property MinerName, Kicked | Select-Object @(
+ @{ Name = "Name"; Expression = { $_.MinerName } },
+ @{ Name = "Algorithms"; Expression = { $_.Algorithm } },
+ @{ Name = "Pool name"; Expression = { $_.PoolName } },
+ @{ Name = "Region"; Expression = { $_.PoolRegion } },
+ @{ Name = "Device(s)"; Expression = { $_.DeviceNames -join ", " } },
+ @{ Name = "Last updated"; Expression = { (Get-TimeSince $_.Kicked.ToLocalTime()) } }
+ ) | Out-DataTable
+ If ($LegacyGUIwatchdogTimersDGV.Columns) {
+ $LegacyGUIwatchdogTimersDGV.Columns[0].FillWeight = 120
+ $LegacyGUIwatchdogTimersDGV.Columns[1].FillWeight = 100
+ $LegacyGUIwatchdogTimersDGV.Columns[2].FillWeight = 100
+ $LegacyGUIwatchdogTimersDGV.Columns[3].FillWeight = 60
+ $LegacyGUIwatchdogTimersDGV.Columns[4].FillWeight = 30 + ($Variables.WatchdogTimers.ForEach({ $_.DeviceNames.Count }) | Measure-Object -Maximum).Maximum * 20
+ $LegacyGUIwatchdogTimersDGV.Columns[5].FillWeight = 100
+ }
+ $LegacyGUIwatchdogTimersDGV.EndInit()
}
Else {
$LegacyGUIwatchdogTimersLabel.Text = "Watchdog is disabled (Configuration item 'Watchdog' -eq `$false)"
@@ -690,6 +688,7 @@ Function Update-GUIstatus {
$LegacyGUIbuttonStop.Enabled = $true
}
}
+ Update-TabControl
$Variables.TextBoxSystemLog.ScrollToCaret()
}
diff --git a/Includes/MinerAPIs/BzMiner.ps1 b/Includes/MinerAPIs/BzMiner.ps1
index a801ae0a..9d78ebd9 100644
--- a/Includes/MinerAPIs/BzMiner.ps1
+++ b/Includes/MinerAPIs/BzMiner.ps1
@@ -18,8 +18,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
File: \Includes\MinerAPIs\BzMiner.ps1
-Version: 6.2.22
-Version date: 2024/08/01
+Version: 6.2.23
+Version date: 2024/08/04
#>
Class BzMiner : Miner {
diff --git a/Includes/MinerAPIs/Ccminer.ps1 b/Includes/MinerAPIs/Ccminer.ps1
index e648950b..74713376 100644
--- a/Includes/MinerAPIs/Ccminer.ps1
+++ b/Includes/MinerAPIs/Ccminer.ps1
@@ -18,8 +18,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
File: \Includes\MinerAPIs\CCminer.ps1
-Version: 6.2.22
-Version date: 2024/08/01
+Version: 6.2.23
+Version date: 2024/08/04
#>
Class CcMiner : Miner {
diff --git a/Includes/MinerAPIs/EthMiner.ps1 b/Includes/MinerAPIs/EthMiner.ps1
index 36ecb866..0766f5fc 100644
--- a/Includes/MinerAPIs/EthMiner.ps1
+++ b/Includes/MinerAPIs/EthMiner.ps1
@@ -18,8 +18,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
File: \Includes\MinerAPIs\EthMiner.ps1
-Version: 6.2.22
-Version date: 2024/08/01
+Version: 6.2.23
+Version date: 2024/08/04
#>
Class EthMiner : Miner {
diff --git a/Includes/MinerAPIs/FireIce.ps1 b/Includes/MinerAPIs/FireIce.ps1
index 9025fa56..b01a68c5 100644
--- a/Includes/MinerAPIs/FireIce.ps1
+++ b/Includes/MinerAPIs/FireIce.ps1
@@ -18,8 +18,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
File: \Includes\MinerAPIs\FireIce.ps1
-Version: 6.2.22
-Version date: 2024/08/01
+Version: 6.2.23
+Version date: 2024/08/04
#>
Class Fireice : Miner {
diff --git a/Includes/MinerAPIs/Gminer.ps1 b/Includes/MinerAPIs/Gminer.ps1
index 38359539..fd088f72 100644
--- a/Includes/MinerAPIs/Gminer.ps1
+++ b/Includes/MinerAPIs/Gminer.ps1
@@ -18,8 +18,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
File: \Includes\MinerAPIs\GMiner.ps1
-Version: 6.2.22
-Version date: 2024/08/01
+Version: 6.2.23
+Version date: 2024/08/04
#>
Class GMiner : Miner {
diff --git a/Includes/MinerAPIs/HellMiner.ps1 b/Includes/MinerAPIs/HellMiner.ps1
index 2e11d4f1..5468be73 100644
--- a/Includes/MinerAPIs/HellMiner.ps1
+++ b/Includes/MinerAPIs/HellMiner.ps1
@@ -18,8 +18,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
File: \Includes\MinerAPIs\lolMiner.ps1
-Version: 6.2.22
-Version date: 2024/08/01
+Version: 6.2.23
+Version date: 2024/08/04
#>
Class HellMiner : Miner {
diff --git a/Includes/MinerAPIs/MiniZ.ps1 b/Includes/MinerAPIs/MiniZ.ps1
index b517200a..4036212c 100644
--- a/Includes/MinerAPIs/MiniZ.ps1
+++ b/Includes/MinerAPIs/MiniZ.ps1
@@ -18,8 +18,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
File: \Includes\MinerAPIs\MiniZ.ps1
-Version: 6.2.22
-Version date: 2024/08/01
+Version: 6.2.23
+Version date: 2024/08/04
#>
Class MiniZ : Miner {
diff --git a/Includes/MinerAPIs/NBMiner.ps1 b/Includes/MinerAPIs/NBMiner.ps1
index 4cc5fb92..1cd7e65d 100644
--- a/Includes/MinerAPIs/NBMiner.ps1
+++ b/Includes/MinerAPIs/NBMiner.ps1
@@ -18,8 +18,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
File: \Includes\MinerAPIs\NBMiner.ps1
-Version: 6.2.22
-Version date: 2024/08/01
+Version: 6.2.23
+Version date: 2024/08/04
#>
Class NBMiner : Miner {
diff --git a/Includes/MinerAPIs/NanoMiner.ps1 b/Includes/MinerAPIs/NanoMiner.ps1
index 9e631930..dba1dd82 100644
--- a/Includes/MinerAPIs/NanoMiner.ps1
+++ b/Includes/MinerAPIs/NanoMiner.ps1
@@ -18,8 +18,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
File: \Includes\MinerAPIs\NanoMiner.ps1
-Version: 6.2.22
-Version date: 2024/08/01
+Version: 6.2.23
+Version date: 2024/08/04
#>
Class NanoMiner : Miner {
diff --git a/Includes/MinerAPIs/OneZero.ps1 b/Includes/MinerAPIs/OneZero.ps1
index 4fa667b7..260f244e 100644
--- a/Includes/MinerAPIs/OneZero.ps1
+++ b/Includes/MinerAPIs/OneZero.ps1
@@ -18,8 +18,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
File: \Includes\MinerAPIs\Trex.ps1
-Version: 6.2.22
-Version date: 2024/08/01
+Version: 6.2.23
+Version date: 2024/08/04
#>
Class OneZero : Miner {
diff --git a/Includes/MinerAPIs/Rigel.ps1 b/Includes/MinerAPIs/Rigel.ps1
index 725fb462..2573e0b6 100644
--- a/Includes/MinerAPIs/Rigel.ps1
+++ b/Includes/MinerAPIs/Rigel.ps1
@@ -18,8 +18,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
File: \Includes\MinerAPIs\Rigel.ps1
-Version: 6.2.22
-Version date: 2024/08/01
+Version: 6.2.23
+Version date: 2024/08/04
#>
Class Rigel : Miner {
diff --git a/Includes/MinerAPIs/SRBMiner.ps1 b/Includes/MinerAPIs/SRBMiner.ps1
index fbb40edc..c15939a2 100644
--- a/Includes/MinerAPIs/SRBMiner.ps1
+++ b/Includes/MinerAPIs/SRBMiner.ps1
@@ -18,8 +18,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
File: \Includes\MinerAPIs\SRBminer.ps1
-Version: 6.2.22
-Version date: 2024/08/01
+Version: 6.2.23
+Version date: 2024/08/04
#>
Class SRBMiner : Miner {
diff --git a/Includes/MinerAPIs/TeamBlackMiner.ps1 b/Includes/MinerAPIs/TeamBlackMiner.ps1
index 34a1243a..b625ddce 100644
--- a/Includes/MinerAPIs/TeamBlackMiner.ps1
+++ b/Includes/MinerAPIs/TeamBlackMiner.ps1
@@ -18,8 +18,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
File: \Includes\MinerAPIs\lolMiner.ps1
-Version: 6.2.22
-Version date: 2024/08/01
+Version: 6.2.23
+Version date: 2024/08/04
#>
Class TeamBlackMiner : Miner {
diff --git a/Includes/MinerAPIs/Trex.ps1 b/Includes/MinerAPIs/Trex.ps1
index 6da22ab6..03343977 100644
--- a/Includes/MinerAPIs/Trex.ps1
+++ b/Includes/MinerAPIs/Trex.ps1
@@ -18,8 +18,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
File: \Includes\MinerAPIs\Trex.ps1
-Version: 6.2.22
-Version date: 2024/08/01
+Version: 6.2.23
+Version date: 2024/08/04
#>
Class Trex : Miner {
diff --git a/Includes/MinerAPIs/Xgminer.ps1 b/Includes/MinerAPIs/Xgminer.ps1
index 7ac26cee..7f1174df 100644
--- a/Includes/MinerAPIs/Xgminer.ps1
+++ b/Includes/MinerAPIs/Xgminer.ps1
@@ -18,8 +18,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
File: \Includes\MinerAPIs\Xgminer.ps1
-Version: 6.2.22
-Version date: 2024/08/01
+Version: 6.2.23
+Version date: 2024/08/04
#>
Class XgMiner : Miner {
diff --git a/Includes/MinerAPIs/XmRig.ps1 b/Includes/MinerAPIs/XmRig.ps1
index da6a4799..23054c74 100644
--- a/Includes/MinerAPIs/XmRig.ps1
+++ b/Includes/MinerAPIs/XmRig.ps1
@@ -18,8 +18,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
File: \Includes\MinerAPIs\XmRig.ps1
-Version: 6.2.22
-Version date: 2024/08/01
+Version: 6.2.23
+Version date: 2024/08/04
#>
Class XmRig : Miner {
diff --git a/Includes/MinerAPIs/lolMiner.ps1 b/Includes/MinerAPIs/lolMiner.ps1
index d3f3ab22..2100668c 100644
--- a/Includes/MinerAPIs/lolMiner.ps1
+++ b/Includes/MinerAPIs/lolMiner.ps1
@@ -18,8 +18,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
File: \Includes\MinerAPIs\lolMiner.ps1
-Version: 6.2.22
-Version date: 2024/08/01
+Version: 6.2.23
+Version date: 2024/08/04
#>
Class lolMiner : Miner {
diff --git a/Miners/BzMiner-v21.4.0.ps1 b/Miners/BzMiner-v21.4.0.ps1
index 436cf0cd..96b7fefb 100644
--- a/Miners/BzMiner-v21.4.0.ps1
+++ b/Miners/BzMiner-v21.4.0.ps1
@@ -17,8 +17,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
-Version: 6.2.22
-Version date: 2024/08/01
+Version: 6.2.23
+Version date: 2024/08/04
#>
If (-not ($Devices = $Variables.EnabledDevices.Where({ "AMD", "INTEL" -contains $_.Type -or ($_.OpenCL.ComputeCapability -ge "5.0" -and $_.OpenCL.DriverVersion -ge [Version]"460.27.03") }))) { Return }
@@ -106,8 +106,8 @@ If ($Algorithms) {
If ($SupportedMinerDevices = $MinerDevices.Where({ (-not $ExcludeGPUmodel -or $_.Model -notmatch $ExcludeGPUmodel) -and $_.Architecture -notin $ExcludeGPUarchitectures })) {
$ExcludePools = $_.ExcludePools
- ForEach ($Pool0 in $MinerPools[0][$_.Algorithms[0]].Where({ $_.Name -notin $ExcludePools[0] -and ($Config.SSL -ne "Always" -or $_.SSLselfSignedCertificate -ne $true) })) {
- ForEach ($Pool1 in $MinerPools[1][$_.Algorithms[1]].Where({ $_.Name -notin $ExcludePools[1] -and ($Config.SSL -ne "Always" -or $_.SSLselfSignedCertificate -ne $true) })) {
+ ForEach ($Pool0 in $MinerPools[0][$_.Algorithms[0]].Where({ $ExcludePools[0] -notcontains $_.Name -and ($Config.SSL -ne "Always" -or $_.SSLselfSignedCertificate -ne $true) })) {
+ ForEach ($Pool1 in $MinerPools[1][$_.Algorithms[1]].Where({ $ExcludePools[1] -notcontains $_.Name -and ($Config.SSL -ne "Always" -or $_.SSLselfSignedCertificate -ne $true) })) {
$MinMemGiB = $_.MinMemGiB + $Pool0.DAGSizeGiB + $Pool1.DAGSizeGiB
If ($AvailableMinerDevices = $SupportedMinerDevices.Where({ $_.MemoryGiB -ge $MinMemGiB })) {
@@ -149,7 +149,7 @@ If ($Algorithms) {
$WarmupTimes[0] += [UInt16](($Pool0.DAGSizeGiB + $Pool1.DAGSizeGiB) * 2)
# Apply tuning parameters
- If ($Variables.UseMinerTweaks) { $Arguments += $_.Tuning }
+ If ($Variables.ApplyMinerTweaks) { $Arguments += $_.Tuning }
[PSCustomObject]@{
API = "BzMiner"
diff --git a/Miners/CcminerAlexis78-v1.5.2.ps1 b/Miners/CcminerAlexis78-v1.5.2.ps1
index c7c4fe62..8d66ed16 100644
--- a/Miners/CcminerAlexis78-v1.5.2.ps1
+++ b/Miners/CcminerAlexis78-v1.5.2.ps1
@@ -17,8 +17,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
-Version: 6.2.22
-Version date: 2024/08/01
+Version: 6.2.23
+Version date: 2024/08/04
#>
If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.OpenCL.ComputeCapability -ge "5.1" }))) { Return }
@@ -63,11 +63,11 @@ If ($Algorithms) {
$MinerName = "$Name-$($AvailableMinerDevices.Count)x$Model-$($_.Algorithm)"
# $ExcludePools = $_.ExcludePools
- # ForEach ($Pool in $MinerPools[0][$_.Algorithm].Where({ $_.PoolPorts[0] -and $_.Name -notin $ExcludePools })) {
+ # ForEach ($Pool in $MinerPools[0][$_.Algorithm].Where({ $_.PoolPorts[0] -and $ExcludePools -notcontains $_.Name })) {
ForEach ($Pool in $MinerPools[0][$_.Algorithm].Where({ $_.PoolPorts[0] })) {
$Arguments = $_.Arguments
- If ($AvailableMinerDevices.Where({ $_.MemoryGiB -le 2 })) { $Arguments = $Arguments -replace ' --intensity [0-9\.]+' }
+ If ($AvailableMinerDevices.Where({ $_.MemoryGiB -le 2 })) { $Arguments = $Arguments -replace " --intensity [0-9\.]+" }
[PSCustomObject]@{
API = "CcMiner"
diff --git a/Miners/CcminerDyn-v1.0.2.ps1 b/Miners/CcminerDyn-v1.0.2.ps1
index a09dbb04..0d5add49 100644
--- a/Miners/CcminerDyn-v1.0.2.ps1
+++ b/Miners/CcminerDyn-v1.0.2.ps1
@@ -17,8 +17,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
-Version: 6.2.22
-Version date: 2024/08/01
+Version: 6.2.23
+Version date: 2024/08/04
#>
If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.OpenCL.ComputeCapability -ge "5.0" }))) { Return } # Cuda error in func 'argon2d_hash_cuda' at line 89 : an illegal instruction was encountered on GTX 750
@@ -52,7 +52,7 @@ If ($Algorithms) {
$MinerName = "$Name-$($AvailableMinerDevices.Count)x$Model-$($_.Algorithm)"
# $ExcludePools = $_.ExcludePools
- # ForEach ($Pool in $MinerPools[0][$_.Algorithm].Where({ $_.PoolPorts[0] -and $_.Name -notin $ExcludePools })) {
+ # ForEach ($Pool in $MinerPools[0][$_.Algorithm].Where({ $_.PoolPorts[0] -and $ExcludePools -notcontains $_.Name })) {
ForEach ($Pool in $MinerPools[0][$_.Algorithm].Where({ $_.PoolPorts[0] })) {
[PSCustomObject]@{
diff --git a/Miners/CcminerKlausT-v8.25.ps1 b/Miners/CcminerKlausT-v8.25.ps1
index ffd85917..0a53f0e9 100644
--- a/Miners/CcminerKlausT-v8.25.ps1
+++ b/Miners/CcminerKlausT-v8.25.ps1
@@ -17,8 +17,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
-Version: 6.2.22
-Version date: 2024/08/01
+Version: 6.2.23
+Version date: 2024/08/04
#>
If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.OpenCL.ComputeCapability -and $_.OpenCL.ComputeCapability -lt "6.0" -and $_.Architecture -ne "Other" }))) { Return }
@@ -65,11 +65,11 @@ If ($Algorithms) {
$MinerName = "$Name-$($AvailableMinerDevices.Count)x$Model-$($_.Algorithm)"
# $ExcludePools = $_.ExcludePools
- # ForEach ($Pool in $MinerPools[0][$_.Algorithm].Where({ $_.PoolPorts[0] -and $_.Name -notin $ExcludePools })) {
+ # ForEach ($Pool in $MinerPools[0][$_.Algorithm].Where({ $_.PoolPorts[0] -and $ExcludePools -notcontains $_.Name })) {
ForEach ($Pool in $MinerPools[0][$_.Algorithm].Where({ $_.PoolPorts[0] })) {
$Arguments = $_.Arguments
- If ($AvailableMinerDevices.Where({ $_.MemoryGiB -le 2 })) { $Arguments = $Arguments -replace ' --intensity [0-9\.]+' }
+ If ($AvailableMinerDevices.Where({ $_.MemoryGiB -le 2 })) { $Arguments = $Arguments -replace " --intensity [0-9\.]+" }
[PSCustomObject]@{
API = "CcMiner"
diff --git a/Miners/CcminerKlausT-v8.26x2.ps1 b/Miners/CcminerKlausT-v8.26x2.ps1
index 70ecdd91..04794679 100644
--- a/Miners/CcminerKlausT-v8.26x2.ps1
+++ b/Miners/CcminerKlausT-v8.26x2.ps1
@@ -17,8 +17,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
-Version: 6.2.22
-Version date: 2024/08/01
+Version: 6.2.23
+Version date: 2024/08/04
#>
If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.OpenCL.ComputeCapability -ge [Version]"6.0" }))) { Return }
@@ -69,11 +69,11 @@ If ($Algorithms) {
$MinerName = "$Name-$($AvailableMinerDevices.Count)x$Model-$($_.Algorithm)"
# $ExcludePools = $_.ExcludePools
- # ForEach ($Pool in $MinerPools[0][$_.Algorithm].Where({ $_.PoolPorts[0] -and $_.Name -notin $ExcludePools })) {
+ # ForEach ($Pool in $MinerPools[0][$_.Algorithm].Where({ $_.PoolPorts[0] -and $ExcludePools -notcontains $_.Name })) {
ForEach ($Pool in $MinerPools[0][$_.Algorithm].Where({ $_.PoolPorts[0] })) {
$Arguments = $_.Arguments
- If ($AvailableMinerDevices.Where({ $_.MemoryGiB -le 2 })) { $Arguments = $Arguments -replace ' --intensity [0-9\.]+' }
+ If ($AvailableMinerDevices.Where({ $_.MemoryGiB -le 2 })) { $Arguments = $Arguments -replace " --intensity [0-9\.]+" }
[PSCustomObject]@{
API = "CcMiner"
diff --git a/Miners/CcminerLyra2z330-v8.21r9.ps1 b/Miners/CcminerLyra2z330-v8.21r9.ps1
index 66c7c5f3..7470cc36 100644
--- a/Miners/CcminerLyra2z330-v8.21r9.ps1
+++ b/Miners/CcminerLyra2z330-v8.21r9.ps1
@@ -17,8 +17,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
-Version: 6.2.22
-Version date: 2024/08/01
+Version: 6.2.23
+Version date: 2024/08/04
#>
If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.OpenCL.ComputeCapability -ge "5.1" }))) { Return }
@@ -57,11 +57,11 @@ If ($Algorithms) {
$MinerName = "$Name-$($AvailableMinerDevices.Count)x$Model-$($_.Algorithm)"
# $ExcludePools = $_.ExcludePools
- # ForEach ($Pool in $MinerPools[0][$_.Algorithm].Where({ $_.PoolPorts[0] -and $_.Name -notin $ExcludePools })) {
+ # ForEach ($Pool in $MinerPools[0][$_.Algorithm].Where({ $_.PoolPorts[0] -and $ExcludePools -notcontains $_.Name })) {
ForEach ($Pool in $MinerPools[0][$_.Algorithm].Where({ $_.PoolPorts[0] })) {
$Arguments = $_.Arguments
- If ($AvailableMinerDevices.Where({ $_.MemoryGiB -le 2 })) { $Arguments = $Arguments -replace ' --intensity [0-9\.]+' }
+ If ($AvailableMinerDevices.Where({ $_.MemoryGiB -le 2 })) { $Arguments = $Arguments -replace " --intensity [0-9\.]+" }
[PSCustomObject]@{
API = "CcMiner"
diff --git a/Miners/CcminerLyraYesscrypt-v8.21r18v5.ps1 b/Miners/CcminerLyraYesscrypt-v8.21r18v5.ps1
index f7831813..fc492a54 100644
--- a/Miners/CcminerLyraYesscrypt-v8.21r18v5.ps1
+++ b/Miners/CcminerLyraYesscrypt-v8.21r18v5.ps1
@@ -17,8 +17,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
-Version: 6.2.22
-Version date: 2024/08/01
+Version: 6.2.23
+Version date: 2024/08/04
#>
If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.OpenCL.ComputeCapability -ge "5.1" }))) { Return }
@@ -58,11 +58,11 @@ If ($Algorithms) {
$MinerName = "$Name-$($AvailableMinerDevices.Count)x$Model-$($_.Algorithm)"
# $ExcludePools = $_.ExcludePools
- # ForEach ($Pool in $MinerPools[0][$_.Algorithm].Where({ $_.PoolPorts[0] -and $_.Name -notin $ExcludePools })) {
+ # ForEach ($Pool in $MinerPools[0][$_.Algorithm].Where({ $_.PoolPorts[0] -and $ExcludePools -notcontains $_.Name })) {
ForEach ($Pool in $MinerPools[0][$_.Algorithm].Where({ $_.PoolPorts[0] })) {
$Arguments = $_.Arguments
- If ($AvailableMinerDevices.Where({ $_.MemoryGiB -le 2 })) { $Arguments = $Arguments -replace ' --intensity [0-9\.]+' }
+ If ($AvailableMinerDevices.Where({ $_.MemoryGiB -le 2 })) { $Arguments = $Arguments -replace " --intensity [0-9\.]+" }
[PSCustomObject]@{
API = "CcMiner"
diff --git a/Miners/CcminerMemeHash-v2.5.5.9.ps1 b/Miners/CcminerMemeHash-v2.5.5.9.ps1
index 337208a6..db6ac435 100644
--- a/Miners/CcminerMemeHash-v2.5.5.9.ps1
+++ b/Miners/CcminerMemeHash-v2.5.5.9.ps1
@@ -17,8 +17,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
-Version: 6.2.22
-Version date: 2024/08/01
+Version: 6.2.23
+Version date: 2024/08/04
#>
If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.OpenCL.ComputeCapability -ge "5.0" }))) { Return }
@@ -48,16 +48,16 @@ If ($Algorithms) {
{
$ExcludeGPUarchitectures = $_.ExcludeGPUarchitectures
$MinMemGiB = $_.MinMemGiB
- If ($AvailableMinerDevices = $MinerDevices.Where({ $_.MemoryGiB -ge $MinMemGiB -and $_.Architecture -notin $ExcludeGPUarchitectures } )) {
+ If ($AvailableMinerDevices = $MinerDevices.Where({ $_.MemoryGiB -ge $MinMemGiB -and $_.Architecture -notin $ExcludeGPUarchitectures })) {
$MinerName = "$Name-$($AvailableMinerDevices.Count)x$Model-$($_.Algorithm)"
# $ExcludePools = $_.ExcludePools
- # ForEach ($Pool in $MinerPools[0][$_.Algorithm].Where({ $_.PoolPorts[0] -and $_.Name -notin $ExcludePools })) {
+ # ForEach ($Pool in $MinerPools[0][$_.Algorithm].Where({ $_.PoolPorts[0] -and $ExcludePools -notcontains $_.Name })) {
ForEach ($Pool in $MinerPools[0][$_.Algorithm].Where({ $_.PoolPorts[0] })) {
$Arguments = $_.Arguments
- If ($AvailableMinerDevices.Where({ $_.MemoryGiB -le 2 })) { $Arguments = $Arguments -replace ' --intensity [0-9\.]+' }
+ If ($AvailableMinerDevices.Where({ $_.MemoryGiB -le 2 })) { $Arguments = $Arguments -replace " --intensity [0-9\.]+" }
[PSCustomObject]@{
API = "CcMiner"
diff --git a/Miners/CcminerNeoscryptXaya-v0.2.ps1 b/Miners/CcminerNeoscryptXaya-v0.2.ps1
index 5ea9d0d5..2a27af58 100644
--- a/Miners/CcminerNeoscryptXaya-v0.2.ps1
+++ b/Miners/CcminerNeoscryptXaya-v0.2.ps1
@@ -17,8 +17,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
-Version: 6.2.22
-Version date: 2024/08/01
+Version: 6.2.23
+Version date: 2024/08/04
#>
If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.OpenCL.ComputeCapability -ge "5.0" -and $_.Architecture -ne "Other" }))) { Return } # Cuda error in func 'neoscrypt_hash_k4' at line 1518 : an illegal instruction was encountered on GTX 750
@@ -52,7 +52,7 @@ If ($Algorithms) {
$MinerName = "$Name-$($AvailableMinerDevices.Count)x$Model-$($_.Algorithm)"
# $ExcludePools = $_.ExcludePools
- # ForEach ($Pool in $MinerPools[0][$_.Algorithm].Where({ $_.PoolPorts[0] -and $_.Name -notin $ExcludePools })) {
+ # ForEach ($Pool in $MinerPools[0][$_.Algorithm].Where({ $_.PoolPorts[0] -and $ExcludePools -notcontains $_.Name })) {
ForEach ($Pool in $MinerPools[0][$_.Algorithm].Where({ $_.PoolPorts[0] })) {
$Arguments = $_.Arguments
diff --git a/Miners/CcminerVerusCpu-v3.8.3.ps1 b/Miners/CcminerVerusCpu-v3.8.3.ps1
index 130be0eb..f41562ac 100644
--- a/Miners/CcminerVerusCpu-v3.8.3.ps1
+++ b/Miners/CcminerVerusCpu-v3.8.3.ps1
@@ -17,8 +17,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
-Version: 6.2.22
-Version date: 2024/08/01
+Version: 6.2.23
+Version date: 2024/08/04
#>
If (-not ($AvailableMinerDevices = $Variables.EnabledDevices.Where({ $_.Type -eq "CPU" }))) { Return }
@@ -29,7 +29,7 @@ $Path = "Bin\$Name\ccminer.exe"
$DeviceEnumerator = "Type_Vendor_Index"
$Algorithms = @(
- @{ Algorithm = "VerusHash"; MinerSet = 1; WarmupTimes = @(90, 300); ExcludePools = @("NiceHash"); Arguments = " --algo verus" } # SRBMinerMulti-v2.5.9 is fastest, but has 0.85% miner fee
+ @{ Algorithm = "VerusHash"; MinerSet = 1; WarmupTimes = @(90, 300); ExcludePools = @("NiceHash"); Arguments = " --algo verus" } # SRBMinerMulti-v2.6.0 is fastest, but has 0.85% miner fee
)
$Algorithms = $Algorithms.Where({ $_.MinerSet -le $Config.MinerSet })
@@ -45,7 +45,7 @@ If ($Algorithms) {
$MinerName = "$Name-$($AvailableMinerDevices.Count)x$($AvailableMinerDevices.Model | Select-Object -Unique)-$($_.Algorithm)"
$ExcludePools = $_.ExcludePools
- ForEach ($Pool in $MinerPools[0][$_.Algorithm].Where({ $_.PoolPorts[0] -and $_.Name -notin $ExcludePools })) {
+ ForEach ($Pool in $MinerPools[0][$_.Algorithm].Where({ $_.PoolPorts[0] -and $ExcludePools -notcontains $_.Name })) {
[PSCustomObject]@{
API = "CcMiner"
diff --git a/Miners/CcminerVerusGpu-v3.8.3.ps1 b/Miners/CcminerVerusGpu-v3.8.3.ps1
index 3966d257..0d0be60b 100644
--- a/Miners/CcminerVerusGpu-v3.8.3.ps1
+++ b/Miners/CcminerVerusGpu-v3.8.3.ps1
@@ -17,8 +17,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
-Version: 6.2.22
-Version date: 2024/08/01
+Version: 6.2.23
+Version date: 2024/08/04
#>
If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.OpenCL.ComputeCapability -ge "7.5" }))) { Return }
@@ -52,10 +52,10 @@ If ($Algorithms) {
$MinerName = "$Name-$($AvailableMinerDevices.Count)x$Model-$($_.Algorithm)"
$ExcludePools = $_.ExcludePools
- ForEach ($Pool in $MinerPools[0][$_.Algorithm].Where({ $_.PoolPorts[0] -and $_.Name -notin $ExcludePools })) {
+ ForEach ($Pool in $MinerPools[0][$_.Algorithm].Where({ $_.PoolPorts[0] -and $ExcludePools -notcontains $_.Name })) {
$Arguments = $_.Arguments
- If ($AvailableMinerDevices.Where({ $_.MemoryGiB -le 2 })) { $Arguments = $Arguments -replace ' --intensity [0-9\.]+' }
+ If ($AvailableMinerDevices.Where({ $_.MemoryGiB -le 2 })) { $Arguments = $Arguments -replace " --intensity [0-9\.]+" }
[PSCustomObject]@{
API = "CcMiner"
diff --git a/Miners/ClaymoreNeoscrypt-v1.2.ps1 b/Miners/ClaymoreNeoscrypt-v1.2.ps1
index e725c53a..d555e0c6 100644
--- a/Miners/ClaymoreNeoscrypt-v1.2.ps1
+++ b/Miners/ClaymoreNeoscrypt-v1.2.ps1
@@ -17,8 +17,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
-Version: 6.2.22
-Version date: 2024/08/01
+Version: 6.2.23
+Version date: 2024/08/04
#>
If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.Type -eq "AMD" -and $Variables.DriverVersion.CIM.AMD -lt [Version]"26.20.15011.10003" }))) { Return }
@@ -48,12 +48,12 @@ If ($Algorithms) {
{
$ExcludeGPUarchitectures = $_.ExcludeGPUarchitectures
$MinMemGiB = $_.MinMemGiB
- If ($AvailableMinerDevices = $MinerDevices.Where({ $_.MemoryGiB -ge $MinMemGiB -and $_.Architecture -notin $ExcludeGPUarchitectures } )) {
+ If ($AvailableMinerDevices = $MinerDevices.Where({ $_.MemoryGiB -ge $MinMemGiB -and $_.Architecture -notin $ExcludeGPUarchitectures })) {
$MinerName = "$Name-$($AvailableMinerDevices.Count)x$Model-$($_.Algorithm)"
# $ExcludePools = $_.ExcludePools
- # ForEach ($Pool in $MinerPools[0][$_.Algorithm].Where({ $_.PoolPorts[0] -and $_.Name -notin $ExcludePools })) {
+ # ForEach ($Pool in $MinerPools[0][$_.Algorithm].Where({ $_.PoolPorts[0] -and $ExcludePools -notcontains $_.Name })) {
ForEach ($Pool in $MinerPools[0][$_.Algorithm].Where({ $_.PoolPorts[0] })) {
# Disable dev fee mining
diff --git a/Miners/CpuMiner-v1.4.ps1 b/Miners/CpuMiner-v1.4.ps1
index 9d1ab808..a8c7fcb2 100644
--- a/Miners/CpuMiner-v1.4.ps1
+++ b/Miners/CpuMiner-v1.4.ps1
@@ -17,8 +17,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
-Version: 6.2.22
-Version date: 2024/08/01
+Version: 6.2.23
+Version date: 2024/08/04
#>
If (-not ($AvailableMinerDevices = $Variables.EnabledDevices.Where({ $_.Type -eq "CPU" }))) { Return }
@@ -44,7 +44,7 @@ If ($Algorithms) {
$MinerName = "$Name-$($AvailableMinerDevices.Count)x$($AvailableMinerDevices.Model | Select-Object -Unique)-$($_.Algorithm)"
# $ExcludePools = $_.ExcludePools
- # ForEach ($Pool in $MinerPools[0][$_.Algorithm].Where({ $_.PoolPorts[0] -and $_.Name -notin $ExcludePools })) {
+ # ForEach ($Pool in $MinerPools[0][$_.Algorithm].Where({ $_.PoolPorts[0] -and $ExcludePools -notcontains $_.Name })) {
ForEach ($Pool in $MinerPools[0][$_.Algorithm].Where({ $_.PoolPorts[0] })) {
[PSCustomObject]@{
diff --git a/Miners/CpuMinerAurum-v3.23.1.ps1 b/Miners/CpuMinerAurum-v3.23.1.ps1
index 9b98ec65..02e2ba75 100644
--- a/Miners/CpuMinerAurum-v3.23.1.ps1
+++ b/Miners/CpuMinerAurum-v3.23.1.ps1
@@ -17,8 +17,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
-Version: 6.2.22
-Version date: 2024/08/01
+Version: 6.2.23
+Version date: 2024/08/04
#>
If (-not ($AvailableMinerDevices = $Variables.EnabledDevices.Where({ $_.Type -eq "CPU" }))) { Return }
@@ -53,7 +53,7 @@ If ($Algorithms) {
$MinerName = "$Name-$($AvailableMinerDevices.Count)x$($AvailableMinerDevices.Model | Select-Object -Unique)-$($_.Algorithm)"
# $ExcludePools = $_.ExcludePools
- # ForEach ($Pool in $MinerPools[0][$_.Algorithm].Where({ $_.Name -notin $ExcludePools })) {
+ # ForEach ($Pool in $MinerPools[0][$_.Algorithm].Where({ $ExcludePools -notcontains $_.Name })) {
ForEach ($Pool in $MinerPools[0][$_.Algorithm]) {
[PSCustomObject]@{
diff --git a/Miners/CryptoDredge-v0.16.0.ps1 b/Miners/CryptoDredge-v0.16.0.ps1
index 2f6f4601..814c3a7d 100644
--- a/Miners/CryptoDredge-v0.16.0.ps1
+++ b/Miners/CryptoDredge-v0.16.0.ps1
@@ -17,8 +17,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
-Version: 6.2.22
-Version date: 2024/08/01
+Version: 6.2.23
+Version date: 2024/08/04
#>
If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.OpenCL.ComputeCapability -ge "5.0" }))) { Return }
@@ -59,13 +59,13 @@ If ($Algorithms) {
{
# $ExcludeGPUarchitectures = $_.ExcludeGPUArchitectures
$MinMemGiB = $_.MinMemGiB
- # If ($AvailableMinerDevices = $MinerDevices.Where({ $_.MemoryGiB -ge $MinMemGiB -and $_.Architecture -notin $ExcludeGPUarchitectures } )) {
+ # If ($AvailableMinerDevices = $MinerDevices.Where({ $_.MemoryGiB -ge $MinMemGiB -and $_.Architecture -notin $ExcludeGPUarchitectures })) {
If ($AvailableMinerDevices = $MinerDevices.Where({ $_.MemoryGiB -ge $MinMemGiB })) {
$MinerName = "$Name-$($AvailableMinerDevices.Count)x$Model-$($_.Algorithm)"
$ExcludePools = $_.ExcludePools
- ForEach ($Pool in $MinerPools[0][$_.Algorithm].Where({ $_.PoolPorts[0] -and $_.Name -notin $ExcludePools })) {
+ ForEach ($Pool in $MinerPools[0][$_.Algorithm].Where({ $_.PoolPorts[0] -and $ExcludePools -notcontains $_.Name })) {
$Arguments = $_.Arguments
$Arguments += " --url stratum+tcp://$($Pool.Host):$($Pool.PoolPorts[0]) --user $($Pool.User)"
diff --git a/Miners/CryptoDredge-v0.27.0.ps1 b/Miners/CryptoDredge-v0.27.0.ps1
index c35d3d3b..0c9865f0 100644
--- a/Miners/CryptoDredge-v0.27.0.ps1
+++ b/Miners/CryptoDredge-v0.27.0.ps1
@@ -17,8 +17,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
-Version: 6.2.22
-Version date: 2024/08/01
+Version: 6.2.23
+Version date: 2024/08/04
#>
If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.OpenCL.ComputeCapability -ge "5.0" -and $_.Architecture -ne "Other" }))) { Return }
@@ -66,7 +66,7 @@ If ($Algorithms) {
If ($SupportedMinerDevices = $MinerDevices.Where({ [Double]$_.OpenCL.ComputeCapability -ge $MinComputeCapability })) {
$ExcludePools = $_.ExcludePools
- ForEach ($Pool in $MinerPools[0][$_.Algorithm].Where({ $_.PoolPorts[0] -and $_.Name -notin $ExcludePools })) {
+ ForEach ($Pool in $MinerPools[0][$_.Algorithm].Where({ $_.PoolPorts[0] -and $ExcludePools -notcontains $_.Name })) {
$MinMemGiB = $_.MinMemGiB + $Pool.DAGSizeGiB
If ($AvailableMinerDevices = $SupportedMinerDevices.Where({ $_.MemoryGiB -ge $MinMemGiB })) {
diff --git a/Miners/EthMiner-v0.19.0.18.ps1 b/Miners/EthMiner-v0.19.0.18.ps1
index 4e6b4ae7..d3382f4b 100644
--- a/Miners/EthMiner-v0.19.0.18.ps1
+++ b/Miners/EthMiner-v0.19.0.18.ps1
@@ -17,8 +17,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
-Version: 6.2.22
-Version date: 2024/08/01
+Version: 6.2.23
+Version date: 2024/08/04
#>
If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.Type -eq "AMD" -or ($_.OpenCL.ComputeCapability -ge "5.0" -and $_.CUDAVersion -ge [Version]"9.1") }))) { Return }
@@ -56,7 +56,7 @@ If ($Algorithms) {
$Algorithms.Where({ $_.Type -eq $Type }).ForEach(
{
# $ExcludePools = $_.ExcludePools
- # ForEach ($Pool in $MinerPools[0][$_.Algorithm].Where({ $_.Name -notin $ExcludePools })) {
+ # ForEach ($Pool in $MinerPools[0][$_.Algorithm].Where({ $ExcludePools -notcontains $_.Name })) {
ForEach ($Pool in $MinerPools[0][$_.Algorithm]) {
$MinMemGiB = $_.MinMemGiB + $Pool.DAGSizeGiB
diff --git a/Miners/EvrProgPow-v1p3p0.ps1 b/Miners/EvrProgPow-v1p3p0.ps1
index 81f99e22..5f1d4d9c 100644
--- a/Miners/EvrProgPow-v1p3p0.ps1
+++ b/Miners/EvrProgPow-v1p3p0.ps1
@@ -17,8 +17,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
-Version: 6.2.22
-Version date: 2024/08/01
+Version: 6.2.23
+Version date: 2024/08/04
#>
If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.OpenCL.ComputeCapability -ge "5.0" }))) { Return }
@@ -50,7 +50,7 @@ If ($Algorithms) {
# If ($SupportedMinerDevices = $MinerDevices.Where({ $_.Architecture -notin $ExcludeGPUarchitectures })) {
# $ExcludePools = $_.ExcludePools
- # ForEach ($Pool in $MinerPools[0][$_.Algorithm].Where({ $_.Name -notin $ExcludePools })) {
+ # ForEach ($Pool in $MinerPools[0][$_.Algorithm].Where({ $ExcludePools -notcontains $_.Name })) {
ForEach ($Pool in $MinerPools[0][$_.Algorithm]) {
$MinMemGiB = $_.MinMemGiB + $Pool.DAGSizeGiB
diff --git a/Miners/FrkHashMiner-v1.3.14.ps1 b/Miners/FrkHashMiner-v1.3.14.ps1
index 95cdacdf..973f652e 100644
--- a/Miners/FrkHashMiner-v1.3.14.ps1
+++ b/Miners/FrkHashMiner-v1.3.14.ps1
@@ -17,8 +17,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
-Version: 6.2.22
-Version date: 2024/08/01
+Version: 6.2.23
+Version date: 2024/08/04
#>
If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.OpenCL.ComputeCapability -ge "5.0" -and $_.CUDAVersion -ge [Version]"9.1" }))) { Return }
@@ -53,7 +53,7 @@ If ($Algorithms) {
$MinerName = "$Name-$($AvailableMinerDevices.Count)x$Model-$($_.Algorithm)"
# $ExcludePools = $_.ExcludePools
- # ForEach ($Pool in $MinerPools[0][$_.Algorithm].Where({ $_.Name -notin $ExcludePools })) {
+ # ForEach ($Pool in $MinerPools[0][$_.Algorithm].Where({ $ExcludePools -notcontains $_.Name })) {
ForEach ($Pool in $MinerPools[0][$_.Algorithm]) {
[PSCustomObject]@{
diff --git a/Miners/GMiner-v2.75.ps1 b/Miners/GMiner-v2.75.ps1
index 9aab27af..be387dc7 100644
--- a/Miners/GMiner-v2.75.ps1
+++ b/Miners/GMiner-v2.75.ps1
@@ -17,8 +17,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
-Version: 6.2.22
-Version date: 2024/08/01
+Version: 6.2.23
+Version date: 2024/08/04
#>
If (-not ($Devices = $Variables.EnabledDevices.Where({ ($_.Type -eq "AMD" -and $_.OpenCL.ClVersion -ge "OpenCL C 1.2") -or $_.OpenCL.ComputeCapability -ge "5.0" }))) { Return }
@@ -48,8 +48,11 @@ If ($Algorithms) {
$Algorithms.Where({ $_.Type -eq $Type }).ForEach(
{
+ # Apply tuning parameters
+ If ($Variables.ApplyMinerTweaks) { $_.Arguments += $_.Tuning }
+
# $ExcludePools = $_.ExcludePools
- # ForEach ($Pool in $MinerPools[0][$_.Algorithm].Where({ $_.Name -notin $ExcludePools })) {
+ # ForEach ($Pool in $MinerPools[0][$_.Algorithm].Where({ $ExcludePools -notcontains $_.Name })) {
ForEach ($Pool in $MinerPools[0][$_.Algorithm]) {
$MinMemGiB = $_.MinMemGiB + $Pool.DAGSizeGiB
@@ -66,9 +69,6 @@ If ($Algorithms) {
If ($Pool.PoolPorts[1]) { $Arguments += " --ssl 1" }
If ($_.AutoCoinPers) { $Arguments += $(Get-EquihashCoinPers -Command " --pers " -Currency $Pool.Currency -DefaultCommand $_.AutoCoinPers) }
- # Apply tuning parameters
- If ($Variables.UseMinerTweaks) { $Arguments += $_.Tuning }
-
# Contest ETH address (if ETH wallet is specified in config)
# $Arguments += If ($Config.Wallets.ETH) { " --contest_wallet $($Config.Wallets.ETH)" } Else { " --contest_wallet 0x92e6F22C1493289e6AD2768E1F502Fc5b414a287" }
diff --git a/Miners/GMiner-v3.44.ps1 b/Miners/GMiner-v3.44.ps1
index e5478ab3..3453bce5 100644
--- a/Miners/GMiner-v3.44.ps1
+++ b/Miners/GMiner-v3.44.ps1
@@ -17,8 +17,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
-Version: 6.2.22
-Version date: 2024/08/01
+Version: 6.2.23
+Version date: 2024/08/04
#>
If (-not ($Devices = $Variables.EnabledDevices.Where({ ($_.Type -eq "AMD" -and $_.OpenCL.ClVersion -ge "OpenCL C 1.2") -or $_.OpenCL.ComputeCapability -ge "5.0" }))) { Return }
@@ -86,9 +86,12 @@ If ($Algorithms) {
$ExcludeGPUarchitectures = $_.ExcludeGPUarchitectures
If ($SupportedMinerDevices = $MinerDevices.Where({ $_.Architecture -notin $ExcludeGPUarchitectures })) {
+ # Apply tuning parameters
+ If ($Variables.ApplyMinerTweaks) { $_.Arguments += $_.Tuning }
+
$ExcludePools = $_.ExcludePools
- ForEach ($Pool0 in $MinerPools[0][$_.Algorithms[0]].Where({ $_.Name -notin $ExcludePools[0] })) {
- ForEach ($Pool1 in $MinerPools[1][$_.Algorithms[1]].Where({ $_.Name -notin $ExcludePools[1] })) {
+ ForEach ($Pool0 in $MinerPools[0][$_.Algorithms[0]].Where({ $ExcludePools[0] -notcontains $_.Name })) {
+ ForEach ($Pool1 in $MinerPools[1][$_.Algorithms[1]].Where({ $ExcludePools[1] -notcontains $_.Name })) {
$MinMemGiB = $_.MinMemGiB + $Pool0.DAGSizeGiB + $Pool1.DAGSizeGiB
If ($AvailableMinerDevices = $SupportedMinerDevices.Where({ $_.MemoryGiB -ge $MinMemGiB })) {
@@ -117,9 +120,6 @@ If ($Algorithms) {
If ($Pool1.WorkerName -and $Pool1.User -notmatch "\.$($Pool1.WorkerName)$") { $Arguments += " --dworker $($Pool1.WorkerName)" }
}
- # Apply tuning parameters
- If ($Variables.UseMinerTweaks) { $Arguments += $_.Tuning }
-
# Contest ETH address (if ETH wallet is specified in config)
# $Arguments += If ($Config.Wallets.ETH) { " --contest_wallet $($Config.Wallets.ETH)" } Else { " --contest_wallet 0x92e6F22C1493289e6AD2768E1F502Fc5b414a287" }
diff --git a/Miners/HellMiner-v0.59.1.ps1 b/Miners/HellMiner-v0.59.1.ps1
index 7ed829a6..34013697 100644
--- a/Miners/HellMiner-v0.59.1.ps1
+++ b/Miners/HellMiner-v0.59.1.ps1
@@ -17,8 +17,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
-Version: 6.2.22
-Version date: 2024/08/01
+Version: 6.2.23
+Version date: 2024/08/04
#>
If (-not ($AvailableMinerDevices = $Variables.EnabledDevices.Where({ $_.Type -eq "CPU" }))) { Return }
@@ -47,7 +47,7 @@ If ($Algorithms) {
$MinerName = "$Name-$($AvailableMinerDevices.Count)x$($AvailableMinerDevices.Model | Select-Object -Unique)-$($_.Algorithm)"
# $ExcludePools = $_.ExcludePools
- # ForEach ($Pool in $MinerPools[0][$_.Algorithm].Where({ $_.PoolPorts[0] -and $_.Name -notin $ExcludePools })) {
+ # ForEach ($Pool in $MinerPools[0][$_.Algorithm].Where({ $_.PoolPorts[0] -and $ExcludePools -notcontains $_.Name })) {
ForEach ($Pool in $MinerPools[0][$_.Algorithm].Where({ $_.PoolPorts[0] })) {
[PSCustomObject]@{
diff --git a/Miners/JayddeeCpu-v24.4.ps1 b/Miners/JayddeeCpu-v24.4.ps1
index 60200d5d..d1724055 100644
--- a/Miners/JayddeeCpu-v24.4.ps1
+++ b/Miners/JayddeeCpu-v24.4.ps1
@@ -17,8 +17,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
-Version: 6.2.22
-Version date: 2024/08/01
+Version: 6.2.23
+Version date: 2024/08/04
#>
If (-not ($AvailableMinerDevices = $Variables.EnabledDevices.Where({ $_.Type -eq "CPU" }))) { Return }
@@ -96,7 +96,7 @@ If ($Algorithms) {
}
# $ExcludePools = $_.ExcludePools
- # ForEach ($Pool in $MinerPools[0][$_.Algorithm].Where({ $_.Name -notin $ExcludePools })) {
+ # ForEach ($Pool in $MinerPools[0][$_.Algorithm].Where({ $ExcludePools -notcontains $_.Name })) {
ForEach ($Pool in $MinerPools[0][$_.Algorithm]) {
[PSCustomObject]@{
diff --git a/Miners/KawpowMiner-v1.2.4cl.ps1 b/Miners/KawpowMiner-v1.2.4cl.ps1
index 8963f61d..7864ea1b 100644
--- a/Miners/KawpowMiner-v1.2.4cl.ps1
+++ b/Miners/KawpowMiner-v1.2.4cl.ps1
@@ -17,8 +17,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
-Version: 6.2.22
-Version date: 2024/08/01
+Version: 6.2.23
+Version date: 2024/08/04
#>
If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.Type -eq "AMD" }))) { Return }
@@ -50,7 +50,7 @@ If ($Algorithms) {
# If ($SupportedMinerDevices = $MinerDevices.Where({ $_.Architecture -notin $ExcludeGPUarchitectures })) {
# $ExcludePools = $_.ExcludePools
- # ForEach ($Pool in $MinerPools[0][$_.Algorithm].Where({ $_.Name -notin $ExcludePools })) {
+ # ForEach ($Pool in $MinerPools[0][$_.Algorithm].Where({ $ExcludePools -notcontains $_.Name })) {
ForEach ($Pool in $MinerPools[0][$_.Algorithm]) {
$MinMemGiB = $_.MinMemGiB + $Pool.DAGSizeGiB
diff --git a/Miners/KawpowMiner-v1.2.4cuda.ps1 b/Miners/KawpowMiner-v1.2.4cuda.ps1
index c3dd8016..f526af92 100644
--- a/Miners/KawpowMiner-v1.2.4cuda.ps1
+++ b/Miners/KawpowMiner-v1.2.4cuda.ps1
@@ -17,8 +17,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
-Version: 6.2.22
-Version date: 2024/08/01
+Version: 6.2.23
+Version date: 2024/08/04
#>
If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.OpenCL.ComputeCapability -ge "5.0" }))) { Return }
@@ -50,7 +50,7 @@ If ($Algorithms) {
# If ($SupportedMinerDevices = $MinerDevices.Where({ $_.Architecture -notin $ExcludeGPUarchitectures })) {
# $ExcludePools = $_.ExcludePools
- # ForEach ($Pool in $MinerPools[0][$_.Algorithm].Where({ $_.Name -notin $ExcludePools })) {
+ # ForEach ($Pool in $MinerPools[0][$_.Algorithm].Where({ $ExcludePools -notcontains $_.Name })) {
ForEach ($Pool in $MinerPools[0][$_.Algorithm]) {
$MinMemGiB = $_.MinMemGiB + $Pool.DAGSizeGiB
diff --git a/Miners/Kudaraidee-v1.2.0a.ps1 b/Miners/Kudaraidee-v1.2.0a.ps1
index 923bf5ca..64e0c420 100644
--- a/Miners/Kudaraidee-v1.2.0a.ps1
+++ b/Miners/Kudaraidee-v1.2.0a.ps1
@@ -17,8 +17,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
-Version: 6.2.22
-Version date: 2024/08/01
+Version: 6.2.23
+Version date: 2024/08/04
#>
If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.Type -eq "AMD" -or ($_.Type -eq "NVIDIA" -and $_.CUDAVersion -ge [Version]"10.2") }))) { Return }
@@ -64,7 +64,7 @@ If ($Algorithms) {
$MinerName = "$Name-$($AvailableMinerDevices.Count)x$Model-$($_.Algorithm)"
# $ExcludePools = $_.ExcludePools
- # ForEach ($Pool in $MinerPools[0][$_.Algorithm].Where({ $_.PoolPorts[0] -and $_.Name -notin $ExcludePools })) {
+ # ForEach ($Pool in $MinerPools[0][$_.Algorithm].Where({ $_.PoolPorts[0] -and $ExcludePools -notcontains $_.Name })) {
ForEach ($Pool in $MinerPools[0][$_.Algorithm].Where({ $_.PoolPorts[0] })) {
$BlockSize = $_.BlockSize
diff --git a/Miners/MeowPowMiner-v2.0.0cl.ps1 b/Miners/MeowPowMiner-v2.0.0cl.ps1
index 33957293..8bdb5808 100644
--- a/Miners/MeowPowMiner-v2.0.0cl.ps1
+++ b/Miners/MeowPowMiner-v2.0.0cl.ps1
@@ -17,8 +17,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
-Version: 6.2.22
-Version date: 2024/08/01
+Version: 6.2.23
+Version date: 2024/08/04
#>
If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.Type -eq "AMD" }))) { Return }
@@ -50,7 +50,7 @@ If ($Algorithms) {
# If ($SupportedMinerDevices = $MinerDevices.Where({ $_.Architecture -notin $ExcludeGPUarchitectures })) {
# $ExcludePools = $_.ExcludePools
- # ForEach ($Pool in $MinerPools[0][$_.Algorithm].Where({ $_.Name -notin $ExcludePools })) {
+ # ForEach ($Pool in $MinerPools[0][$_.Algorithm].Where({ $ExcludePools -notcontains $_.Name })) {
ForEach ($Pool in $MinerPools[0][$_.Algorithm]) {
$MinMemGiB = $_.MinMemGiB + $Pool.DAGSizeGiB
diff --git a/Miners/MeowPowMiner-v2.0.0cuda.ps1 b/Miners/MeowPowMiner-v2.0.0cuda.ps1
index be9567e1..d1dbe5e9 100644
--- a/Miners/MeowPowMiner-v2.0.0cuda.ps1
+++ b/Miners/MeowPowMiner-v2.0.0cuda.ps1
@@ -17,8 +17,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
-Version: 6.2.22
-Version date: 2024/08/01
+Version: 6.2.23
+Version date: 2024/08/04
#>
If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.OpenCL.ComputeCapability -ge "5.0" }))) { Return }
@@ -50,7 +50,7 @@ If ($Algorithms) {
# If ($SupportedMinerDevices = $MinerDevices.Where({ $_.Architecture -notin $ExcludeGPUarchitectures })) {
# $ExcludePools = $_.ExcludePools
- # ForEach ($Pool in $MinerPools[0][$_.Algorithm].Where({ $_.Name -notin $ExcludePools })) {
+ # ForEach ($Pool in $MinerPools[0][$_.Algorithm].Where({ $ExcludePools -notcontains $_.Name })) {
ForEach ($Pool in $MinerPools[0][$_.Algorithm]) {
$MinMemGiB = $_.MinMemGiB + $Pool.DAGSizeGiB
diff --git a/Miners/MiniZ-v2.4d.ps1 b/Miners/MiniZ-v2.4d.ps1
index 2ef6d8e6..ef089586 100644
--- a/Miners/MiniZ-v2.4d.ps1
+++ b/Miners/MiniZ-v2.4d.ps1
@@ -17,8 +17,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
-Version: 6.2.22
-Version date: 2024/08/01
+Version: 6.2.23
+Version date: 2024/08/04
#>
If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.Type -eq "AMD" -or $_.OpenCL.ComputeCapability -ge "5.0" }))) { Return }
@@ -85,9 +85,11 @@ If ($Algorithms) {
{
$ExcludeGPUarchitectures = $_.ExcludeGPUarchitectures
If ($SupportedMinerDevices = $MinerDevices.Where({ $_.Architecture -notin $ExcludeGPUarchitectures })) {
+ # Apply tuning parameters
+ If ($Variables.ApplyMinerTweaks) { $_.Arguments += $_.Tuning }
$ExcludePools = $_.ExcludePools
- ForEach ($Pool in $MinerPools[0][$_.Algorithm].Where({ $_.Name -notin $ExcludePools })) {
+ ForEach ($Pool in $MinerPools[0][$_.Algorithm].Where({ $ExcludePools -notcontains $_.Name })) {
$MinMemGiB = $_.MinMemGiB + $Pool.DAGSizeGiB
If ($AvailableMinerDevices = $SupportedMinerDevices.Where({ $_.MemoryGiB -ge $MinMemGiB })) {
@@ -100,9 +102,6 @@ If ($Algorithms) {
If ($Pool.WorkerName -and $Pool.User -notmatch "\.$($Pool.WorkerName)$") { $Arguments += " --worker=$($Pool.WorkerName)" }
If ($_.AutoCoinPers) { $Arguments += $(Get-EquihashCoinPers -Command " --pers " -Currency $Pool.Currency -DefaultCommand $_.AutoCoinPers) }
- # Apply tuning parameters
- If ($Variables.UseMinerTweaks) { $Arguments += $_.Tuning }
-
[PSCustomObject]@{
API = "MiniZ"
Arguments = "$Arguments --jobtimeout=900 --retries=99 --retrydelay=1 --stat-int=10 --nohttpheaders --latency --all-shares --extra --tempunits=C --show-pers --fee-time=60 --telemetry $MinerAPIPort -cd $(($AvailableMinerDevices.$DeviceEnumerator | Sort-Object -Unique).ForEach({ '{0:d2}' -f $_ }) -join ' ')"
diff --git a/Miners/NBMiner-v42.3.ps1 b/Miners/NBMiner-v42.3.ps1
index 922b9ed5..38d65e9b 100644
--- a/Miners/NBMiner-v42.3.ps1
+++ b/Miners/NBMiner-v42.3.ps1
@@ -17,8 +17,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
-Version: 6.2.22
-Version date: 2024/08/01
+Version: 6.2.23
+Version date: 2024/08/04
#>
If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.Type -eq "AMD" -or ($_.OpenCL.ComputeCapability -ge "6.0" -and $_.CUDAVersion -ge [Version]"10.0") }))) { Return }
@@ -60,9 +60,11 @@ If ($Algorithms) {
$ExcludeGPUarchitectures = $_.ExcludeGPUarchitectures
$MinComputeCapability = $_.MinComputeCapability
If ($SupportedMinerDevices = $MinerDevices.Where({ [Double]$_.OpenCL.ComputeCapability -ge $MinComputeCapability -and $_.Architecture -notin $ExcludeGPUarchitectures })) {
+ # Apply tuning parameters
+ If ($Variables.ApplyMinerTweaks) { $_.Arguments += $_.Tuning }
$ExcludePools = $_.ExcludePools
- ForEach ($Pool in $MinerPools[0][$_.Algorithm].Where({ $_.Name -notin $ExcludePools })) {
+ ForEach ($Pool in $MinerPools[0][$_.Algorithm].Where({ $ExcludePools -notcontains $_.Name })) {
$MinMemGiB = $_.MinMemGiB + $Pool.DAGSizeGiB
# Windows 10 requires more memory on some algos
@@ -92,9 +94,6 @@ If ($Algorithms) {
$WarmupTimes = [UInt16[]]$_.WarmupTimes
$WarmupTimes[0] += [UInt16](($Pool0.DAGSizeGiB + $Pool1.DAGSizeGiB) * 2)
- # Apply tuning parameters
- If ($Variables.UseMinerTweaks) { $Arguments += $_.Tuning }
-
[PSCustomObject]@{
API = "NBMiner"
Arguments = "$Arguments --no-watchdog --api 127.0.0.1:$($MinerAPIPort) --devices $(($AvailableMinerDevices.$DeviceEnumerator | Sort-Object -Unique).ForEach({ '{0:x}' -f $_ }) -join ',')"
diff --git a/Miners/NSFMiner-v1.3.14.ps1 b/Miners/NSFMiner-v1.3.14.ps1
index 85c157a6..55f907d2 100644
--- a/Miners/NSFMiner-v1.3.14.ps1
+++ b/Miners/NSFMiner-v1.3.14.ps1
@@ -17,8 +17,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
-Version: 6.2.22
-Version date: 2024/08/01
+Version: 6.2.23
+Version date: 2024/08/04
#>
If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.Type -eq "AMD" -or ($_.OpenCL.ComputeCapability -ge "5.0" -and $_.CUDAVersion -ge [Version]"9.1") }))) { Return }
@@ -56,7 +56,7 @@ If ($Algorithms) {
$Algorithms.Where({ $_.Type -eq $Type }).ForEach(
{
# $ExcludePools = $_.ExcludePools
- # ForEach ($Pool in $MinerPools[0][$_.Algorithm].Where({ $_.Name -notin $ExcludePools })) {
+ # ForEach ($Pool in $MinerPools[0][$_.Algorithm].Where({ $ExcludePools -notcontains $_.Name })) {
ForEach ($Pool in $MinerPools[0][$_.Algorithm]) {
$MinMemGiB = $_.MinMemGiB + $Pool.DAGSizeGiB
diff --git a/Miners/NanoMiner-v3.9.2.ps1 b/Miners/NanoMiner-v3.9.2.ps1
index 738cdfc8..49d2f927 100644
--- a/Miners/NanoMiner-v3.9.2.ps1
+++ b/Miners/NanoMiner-v3.9.2.ps1
@@ -17,8 +17,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
-Version: 6.2.22
-Version date: 2024/08/01
+Version: 6.2.23
+Version date: 2024/08/04
#>
If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.Type -eq "CPU" -or $_.Type -ne "NVIDIA" -or ($_.OpenCL.ComputeCapability -ge "5.0" -and $_.OpenCL.DriverVersion -ge [Version]"455.23") }))) { Return }
@@ -66,23 +66,23 @@ $Algorithms = @(
@{ Algorithms = @("Octopus"); Type = "INTEL"; Fee = @(0.02); MinMemGiB = 1.08; MinerSet = 2; WarmupTimes = @(45, 0); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @()); Arguments = @(" -algo Octopus") } # NBMiner-v42.3 is faster
@{ Algorithms = @("UbqHash"); Type = "INTEL"; Fee = @(0.01); MinMemGiB = 1.08; MinerSet = 2; WarmupTimes = @(75, 45); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @()); Arguments = @(" -algo Ubqhash") }
- @{ Algorithms = @("Autolykos2"); Type = "NVIDIA"; Fee = @(0.025); MinMemGiB = 1.08; MinerSet = 1; Tuning = " -coreClocks +20 -memClocks +100"; WarmupTimes = @(45, 0); ExcludeGPUarchitectures = @(); ExcludePools = @(@("NiceHash"), @()); Arguments = @(" -algo Autolykos") } # Trex-v0.26.8 is fastest @{ Algorithms = @("Autolykos2", "HeavyHashKaspa"); Type = "NVIDIA"; Fee = @(0.025, 0.025); MinMemGiB = 1.24; MinerSet = 1; Tuning = " -coreClocks +20 -memClocks +100"; WarmupTimes = @(45, 0); ExcludePools = @(@("NiceHash"), @("NiceHash", "ProHashing", "ZergPool")); ExcludeGPUarchitectures = @(); Arguments = @(" -algo Autolykos", " -algo Kaspa -protocol JSON-RPC") } # ASIC
- @{ Algorithms = @("Blake3"); Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 2; MinerSet = 2; Tuning = " -coreClocks +20 -memClocks +100"; WarmupTimes = @(45, 0); ExcludeGPUarchitectures = @("Other");ExcludePools = @(@(), @()); Arguments = @(" -algo Alephium") }
- @{ Algorithms = @("EtcHash"); Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1.08; MinerSet = 2; Tuning = " -coreClocks +20 -memClocks +100"; WarmupTimes = @(45, 0); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @()); Arguments = @(" -algo Etchash") } # PhoenixMiner-v6.2c is fastest
-# @{ Algorithms = @("EtcHash", "HeavyHashKaspa"); Type = "NVIDIA"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; Tuning = " -coreClocks +20 -memClocks +100"; WarmupTimes = @(45, 60); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @("NiceHash", "ProHashing", "ZergPool")); Arguments = @(" -algo Etchash", " -algo Kaspa -protocol JSON-RPC") } # ASIC
- @{ Algorithms = @("Ethash"); Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1.08; MinerSet = 2; Tuning = " -coreClocks +20 -memClocks +100"; WarmupTimes = @(45, 0); ExcludeGPUarchitectures = @("Other");ExcludePools = @(@(), @()); Arguments = @(" -algo Ethash") } # PhoenixMiner-v6.2c is fastest
-# @{ Algorithms = @("Ethash", "HeavyHashKaspa"); Type = "NVIDIA"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; Tuning = " -coreClocks +20 -memClocks +100"; WarmupTimes = @(45, 60); ExcludeGPUarchitectures = @("Other");ExcludePools = @(@(), @("NiceHash", "ProHashing", "ZergPool")); Arguments = @(" -algo Ethash", " -algo Kaspa -protocol JSON-RPC") } # ASIC
- @{ Algorithms = @("EthashB3"); Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1.08; MinerSet = 2; Tuning = " -coreClocks +20 -memClocks +100"; WarmupTimes = @(45, 0); ExcludeGPUarchitectures = @("Other");ExcludePools = @(@(), @()); Arguments = @(" -algo EthashB3") }
-# @{ Algorithms = @("EthashB3", "HeavyHashKaspa"); Type = "NVIDIA"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; Tuning = " -coreClocks +20 -memClocks +100"; WarmupTimes = @(45, 60); ExcludeGPUarchitectures = @("Other");ExcludePools = @(@(), @("NiceHash", "ProHashing", "ZergPool")); Arguments = @(" -algo EthashB3", " -algo Kaspa -protocol JSON-RPC") } # ASIC
- @{ Algorithms = @("EvrProgPow"); Type = "NVIDIA"; Fee = @(0.02); MinMemGiB = 1.08; MinerSet = 1; Tuning = " -coreClocks +20 -memClocks +100"; WarmupTimes = @(45, 0); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @()); Arguments = @(" -algo Evrprogpow") }
- @{ Algorithms = @("FiroPow"); Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1.08; MinerSet = 0; Tuning = " -coreClocks +20 -memClocks +100"; WarmupTimes = @(45, 0); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @()); Arguments = @(" -algo FiroPow") }
- @{ Algorithms = @("FishHash"); Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1.08; MinerSet = 1; Tuning = " -coreClocks +20 -memClocks +100"; WarmupTimes = @(45, 0); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @()); Arguments = @(" -algo Fishhash") }
- @{ Algorithms = @("HeavyHashKarlsen"); Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 2; MinerSet = 2; Tuning = " -coreClocks +20 -memClocks +100"; WarmupTimes = @(45, 0); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @()); Arguments = @(" -algo Karlsen") }
- @{ Algorithms = @("HeavyHashPyrin"); Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 2; MinerSet = 2; Tuning = " -coreClocks +20 -memClocks +100"; WarmupTimes = @(45, 0); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @()); Arguments = @(" -algo Pyrin") }
-# @{ Algorithms = @("HeavyHashKaspa"); Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 2; MinerSet = 2; Tuning = " -coreClocks +20 -memClocks +100"; WarmupTimes = @(45, 0); ExcludeGPUarchitectures = @(); ExcludePools = @(@("NiceHash", "ProHashing", "ZergPool"), @()); Arguments = @(" -algo Kaspa -protocol JSON-RPC") } # ASIC
- @{ Algorithms = @("KawPow"); Type = "NVIDIA"; Fee = @(0.02); MinMemGiB = 1.08; MinerSet = 0; Tuning = " -coreClocks +20 -memClocks +100"; WarmupTimes = @(45, 0); ExcludeGPUarchitectures = @(); ExcludePools = @(@("ProHashing"), @()); Arguments = @(" -algo KawPow") } # Trex-v0.26.8 is fastest
- @{ Algorithms = @("Octopus"); Type = "NVIDIA"; Fee = @(0.02); MinMemGiB = 1.08; MinerSet = 2; Tuning = " -coreClocks +20 -memClocks +100"; WarmupTimes = @(45, 0); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @()); Arguments = @(" -algo Octopus") } # NBMiner-v42.3 is faster
- @{ Algorithms = @("UbqHash"); Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1.08; MinerSet = 1; Tuning = " -coreClocks +20 -memClocks +100"; WarmupTimes = @(45, 0); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @()); Arguments = @(" -algo Ubqhash") } # PhoenixMiner-v6.2c is fastest
+ @{ Algorithms = @("Autolykos2"); Type = "NVIDIA"; Fee = @(0.025); MinMemGiB = 1.08; MinerSet = 1; Tuning = " -coreClocks +20 -memClocks +100"; WarmupTimes = @(45, 0); ExcludeGPUarchitectures = @(); ExcludePools = @(@("NiceHash"), @()); Arguments = @(" -algo Autolykos") } # Trex-v0.26.8 is fastest @{ Algorithms = @("Autolykos2", "HeavyHashKaspa"); Type = "NVIDIA"; Fee = @(0.025, 0.025); MinMemGiB = 1.24; MinerSet = 1; Tuning = " -coreClocks +20 -memClocks +100"; WarmupTimes = @(45, 0); ExcludePools = @(@("NiceHash"), @("NiceHash", "ProHashing", "ZergPool")); ExcludeGPUarchitectures = @(); Arguments = @(" -algo Autolykos", " -algo Kaspa -protocol JSON-RPC") } # ASIC
+ @{ Algorithms = @("Blake3"); Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 2; MinerSet = 2; Tuning = " -coreClocks +20 -memClocks +100"; WarmupTimes = @(45, 0); ExcludeGPUarchitectures = @("Other"); ExcludePools = @(@(), @()); Arguments = @(" -algo Alephium") }
+ @{ Algorithms = @("EtcHash"); Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1.08; MinerSet = 2; Tuning = " -coreClocks +20 -memClocks +100"; WarmupTimes = @(45, 0); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @()); Arguments = @(" -algo Etchash") } # PhoenixMiner-v6.2c is fastest
+# @{ Algorithms = @("EtcHash", "HeavyHashKaspa"); Type = "NVIDIA"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; Tuning = " -coreClocks +20 -memClocks +100"; WarmupTimes = @(45, 60); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @("NiceHash", "ProHashing", "ZergPool")); Arguments = @(" -algo Etchash", " -algo Kaspa -protocol JSON-RPC") } # ASIC
+ @{ Algorithms = @("Ethash"); Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1.08; MinerSet = 2; Tuning = " -coreClocks +20 -memClocks +100"; WarmupTimes = @(45, 0); ExcludeGPUarchitectures = @("Other"); ExcludePools = @(@(), @()); Arguments = @(" -algo Ethash") } # PhoenixMiner-v6.2c is fastest
+# @{ Algorithms = @("Ethash", "HeavyHashKaspa"); Type = "NVIDIA"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; Tuning = " -coreClocks +20 -memClocks +100"; WarmupTimes = @(45, 60); ExcludeGPUarchitectures = @("Other"); ExcludePools = @(@(), @("NiceHash", "ProHashing", "ZergPool")); Arguments = @(" -algo Ethash", " -algo Kaspa -protocol JSON-RPC") } # ASIC
+ @{ Algorithms = @("EthashB3"); Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1.08; MinerSet = 2; Tuning = " -coreClocks +20 -memClocks +100"; WarmupTimes = @(45, 0); ExcludeGPUarchitectures = @("Other"); ExcludePools = @(@(), @()); Arguments = @(" -algo EthashB3") }
+# @{ Algorithms = @("EthashB3", "HeavyHashKaspa"); Type = "NVIDIA"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; Tuning = " -coreClocks +20 -memClocks +100"; WarmupTimes = @(45, 60); ExcludeGPUarchitectures = @("Other"); ExcludePools = @(@(), @("NiceHash", "ProHashing", "ZergPool")); Arguments = @(" -algo EthashB3", " -algo Kaspa -protocol JSON-RPC") } # ASIC
+ @{ Algorithms = @("EvrProgPow"); Type = "NVIDIA"; Fee = @(0.02); MinMemGiB = 1.08; MinerSet = 1; Tuning = " -coreClocks +20 -memClocks +100"; WarmupTimes = @(45, 0); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @()); Arguments = @(" -algo Evrprogpow") }
+ @{ Algorithms = @("FiroPow"); Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1.08; MinerSet = 0; Tuning = " -coreClocks +20 -memClocks +100"; WarmupTimes = @(45, 0); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @()); Arguments = @(" -algo FiroPow") }
+ @{ Algorithms = @("FishHash"); Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1.08; MinerSet = 1; Tuning = " -coreClocks +20 -memClocks +100"; WarmupTimes = @(45, 0); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @()); Arguments = @(" -algo Fishhash") }
+ @{ Algorithms = @("HeavyHashKarlsen"); Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 2; MinerSet = 2; Tuning = " -coreClocks +20 -memClocks +100"; WarmupTimes = @(45, 0); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @()); Arguments = @(" -algo Karlsen") }
+ @{ Algorithms = @("HeavyHashPyrin"); Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 2; MinerSet = 2; Tuning = " -coreClocks +20 -memClocks +100"; WarmupTimes = @(45, 0); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @()); Arguments = @(" -algo Pyrin") }
+# @{ Algorithms = @("HeavyHashKaspa"); Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 2; MinerSet = 2; Tuning = " -coreClocks +20 -memClocks +100"; WarmupTimes = @(45, 0); ExcludeGPUarchitectures = @(); ExcludePools = @(@("NiceHash", "ProHashing", "ZergPool"), @()); Arguments = @(" -algo Kaspa -protocol JSON-RPC") } # ASIC
+ @{ Algorithms = @("KawPow"); Type = "NVIDIA"; Fee = @(0.02); MinMemGiB = 1.08; MinerSet = 0; Tuning = " -coreClocks +20 -memClocks +100"; WarmupTimes = @(45, 0); ExcludeGPUarchitectures = @(); ExcludePools = @(@("ProHashing"), @()); Arguments = @(" -algo KawPow") } # Trex-v0.26.8 is fastest
+ @{ Algorithms = @("Octopus"); Type = "NVIDIA"; Fee = @(0.02); MinMemGiB = 1.08; MinerSet = 2; Tuning = " -coreClocks +20 -memClocks +100"; WarmupTimes = @(45, 0); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @()); Arguments = @(" -algo Octopus") } # NBMiner-v42.3 is faster
+ @{ Algorithms = @("UbqHash"); Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1.08; MinerSet = 1; Tuning = " -coreClocks +20 -memClocks +100"; WarmupTimes = @(45, 0); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @()); Arguments = @(" -algo Ubqhash") } # PhoenixMiner-v6.2c is fastest
)
$Algorithms = $Algorithms.Where({ $_.MinerSet -le $Config.MinerSet })
@@ -103,9 +103,18 @@ If ($Algorithms) {
$ExcludeGPUarchitectures = $_.ExcludeGPUarchitectures
If ($SupportedMinerDevices = $MinerDevices.Where({ $_.Type -eq "CPU" -or $_.Architecture -notin $ExcludeGPUarchitectures })) {
+ If ($_.Algorithm -eq "VertHash" -and (Get-Item -Path $Variables.VerthashDatPath -ErrorAction Ignore).length -ne 1283457024) {
+ $PrerequisitePath = $Variables.VerthashDatPath
+ $PrerequisiteURI = "https://github.com/UselessGuru/UG-Miner-Extras/releases/download/VertHashDataFile/VertHash.dat"
+ }
+ Else {
+ $PrerequisitePath = ""
+ $PrerequisiteURI = ""
+ }
+
$ExcludePools = $_.ExcludePools
- ForEach ($Pool0 in $MinerPools[0][$_.Algorithms[0]].Where({ $_.Name -notin $ExcludePools[0] -and ($Config.SSL -ne "Always" -or $_.SSLselfSignedCertificate -ne $true) }) | Select-Object -Last $(If ($_.Type -eq "CPU") { 1 } Else { $MinerPools[0][$_.Algorithms[0]].Count })) {
- ForEach ($Pool1 in $MinerPools[1][$_.Algorithms[1]].Where({ $_.Name -notin $ExcludePools[1] -and ($Config.SSL -ne "Always" -or $_.SSLselfSignedCertificate -ne $true) }) | Select-Object -Last $(If ($_.Type -eq "CPU") { 1 } Else { $MinerPools[1][$_.Algorithms[1]].Count })) {
+ ForEach ($Pool0 in $MinerPools[0][$_.Algorithms[0]].Where({ $ExcludePools[0] -notcontains $_.Name[0] -and ($Config.SSL -ne "Always" -or $_.SSLselfSignedCertificate -ne $true) }) | Select-Object -Last $(If ($_.Type -eq "CPU") { 1 } Else { $MinerPools[0][$_.Algorithms[0]].Count })) {
+ ForEach ($Pool1 in $MinerPools[1][$_.Algorithms[1]].Where({ $ExcludePools[1] -notcontains $_.Name[1] -and ($Config.SSL -ne "Always" -or $_.SSLselfSignedCertificate -ne $true) }) | Select-Object -Last $(If ($_.Type -eq "CPU") { 1 } Else { $MinerPools[1][$_.Algorithms[1]].Count })) {
$Pools = @(($Pool0, $Pool1).Where({ $_ }))
$MinMemGiB = $_.MinMemGiB + $Pool0.DAGSizeGiB + $Pool1.DAGSizeGiB
@@ -127,23 +136,7 @@ If ($Algorithms) {
$Arguments += " -mport 0 -webPort $MinerAPIPort -checkForUpdates false -noLog true -watchdog false"
# Apply tuning parameters
- If ($Variables.UseMinerTweaks) { $Arguments += $_.Tuning }
-
- If ($_.Algorithms -contains "VertHash") {
- If ((Get-Item -Path $Variables.VerthashDatPath -ErrorAction Ignore).length -eq 1283457024) {
- If (-not (Get-Item -Path ".\Bin\$Name\VertHash.dat" -ErrorAction Ignore).length -eq 1283457024) {
- New-Item -ItemType HardLink -Path ".\Bin\$Name\VertHash.dat" -Target $Variables.VerthashDatPath -Force | Out-Null
- }
- }
- Else {
- $PrerequisitePath = $Variables.VerthashDatPath
- $PrerequisiteURI = "https://github.com/UselessGuru/UG-Miner-Extras/releases/download/VertHashDataFile/VertHash.dat"
- }
- }
- Else {
- $PrerequisitePath = ""
- $PrerequisiteURI = ""
- }
+ If ($Variables.ApplyMinerTweaks) { $Arguments += $_.Tuning }
[PSCustomObject]@{
API = "NanoMiner"
diff --git a/Miners/Ninjarig-1.0.3.ps1 b/Miners/Ninjarig-1.0.3.ps1
index 48184bf5..6aa4a9b7 100644
--- a/Miners/Ninjarig-1.0.3.ps1
+++ b/Miners/Ninjarig-1.0.3.ps1
@@ -17,8 +17,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
-Version: 6.2.22
-Version date: 2024/08/01
+Version: 6.2.23
+Version date: 2024/08/04
#>
If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.OpenCL.ComputeCapability -ge "5.0" }))) { Return }
@@ -48,7 +48,7 @@ If ($Algorithms) {
$MinerName = "$Name-$($AvailableMinerDevices.Count)x$Model-$($_.Algorithm)"
# $ExcludePools = $_.ExcludePools
- # ForEach ($Pool in $MinerPools[0][$_.Algorithm].Where({ $_.Name -notin $ExcludePools })) {
+ # ForEach ($Pool in $MinerPools[0][$_.Algorithm].Where({ $ExcludePools -notcontains $_.Name })) {
ForEach ($Pool in $MinerPools[0][$_.Algorithm]) {
If ("MiningPoolHub", "NiceHash", "ProHashing" -contains $Pool.Name) { $Arguments += " --nicehash" }
diff --git a/Miners/NosuchCpu-v3.8.8.1.ps1 b/Miners/NosuchCpu-v3.8.8.1.ps1
index 89ab576a..30d319ea 100644
--- a/Miners/NosuchCpu-v3.8.8.1.ps1
+++ b/Miners/NosuchCpu-v3.8.8.1.ps1
@@ -17,8 +17,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
-Version: 6.2.22
-Version date: 2024/08/01
+Version: 6.2.23
+Version date: 2024/08/04
#>
If (-not ($AvailableMinerDevices = $Variables.EnabledDevices.Where({ $_.Type -eq "CPU" }))) { Return }
@@ -48,7 +48,7 @@ If ($Algorithms) {
$MinerName = "$Name-$($AvailableMinerDevices.Count)x$($AvailableMinerDevices.Model | Select-Object -Unique)-$($_.Algorithm)"
# $ExcludePools = $_.ExcludePools
- # ForEach ($Pool in $MinerPools[0][$_.Algorithm].Where({ $_.PoolPorts[0] -and $_.Name -notin $ExcludePools })) {
+ # ForEach ($Pool in $MinerPools[0][$_.Algorithm].Where({ $_.PoolPorts[0] -and $ExcludePools -notcontains $_.Name })) {
ForEach ($Pool in $MinerPools[0][$_.Algorithm].Where({ $_.PoolPorts[0] })) {
[PSCustomObject]@{
diff --git a/Miners/OneZeroMiner-v1.3.7.ps1 b/Miners/OneZeroMiner-v1.3.7.ps1
index a5ca4bdc..fc28c08b 100644
--- a/Miners/OneZeroMiner-v1.3.7.ps1
+++ b/Miners/OneZeroMiner-v1.3.7.ps1
@@ -17,8 +17,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
-Version: 6.2.22
-Version date: 2024/08/01
+Version: 6.2.23
+Version date: 2024/08/04
#>
If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.Type -eq "NVIDIA" -and $_.OpenCL.DriverVersion -ge [Version]"450.80.02" }))) { Return }
@@ -49,12 +49,12 @@ If ($Algorithms) {
# $ExcludeGPUarchitectures = $_.ExcludeGPUarchitectures
$MinMemGiB = $_.MinMemGiB
If ($AvailableMinerDevices = $MinerDevices.Where({ $_.MemoryGiB -ge $MinMemGiB })) {
- # If ($AvailableMinerDevices = $MinerDevices.Where({ $_.MemoryGiB -ge $MinMemGiB -and $_.Architecture -notin $ExcludeGPUarchitectures } )) {
+ # If ($AvailableMinerDevices = $MinerDevices.Where({ $_.MemoryGiB -ge $MinMemGiB -and $_.Architecture -notin $ExcludeGPUarchitectures })) {
$MinerName = "$Name-$($AvailableMinerDevices.Count)x$Model-$($_.Algorithm)"
# $ExcludePools = $_.ExcludePools
- # ForEach ($Pool in $MinerPools[0][$_.Algorithm].Where({ $_.Name -notin $ExcludePools })) {
+ # ForEach ($Pool in $MinerPools[0][$_.Algorithm].Where({ $ExcludePools -notcontains $_.Name })) {
ForEach ($Pool in $MinerPools[0][$_.Algorithm]) {
[PSCustomObject]@{
diff --git a/Miners/PhoenixMiner-v6.2c.ps1 b/Miners/PhoenixMiner-v6.2c.ps1
index 043428d4..d02a9b59 100644
--- a/Miners/PhoenixMiner-v6.2c.ps1
+++ b/Miners/PhoenixMiner-v6.2c.ps1
@@ -17,8 +17,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
-Version: 6.2.22
-Version date: 2024/08/01
+Version: 6.2.23
+Version date: 2024/08/04
#>
If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.Type -eq "AMD" -or $_.OpenCL.ComputeCapability -ge "5.0" }))) { Return }
@@ -84,11 +84,13 @@ If ($Algorithms) {
{
$ExcludeGPUarchitectures = $_.ExcludeGPUarchitectures
If ($SupportedMinerDevices = $MinerDevices.Where({ $_.Architecture -notin $ExcludeGPUarchitectures })) {
+ # Apply tuning parameters
+ If ($Variables.ApplyMinerTweaks) { $_.Arguments += $_.Tuning }
# $ExcludePools = $_.ExcludePools
- # ForEach ($Pool0 in $MinerPools[0][$_.Algorithms[0]].Where({ $_.Name -notin $ExcludePools[0] -and $_.Epoch -lt 602 -and $_.Algorithm -ne "EtcHash" -or $_.Epoch -lt 302 })) {
+ # ForEach ($Pool0 in $MinerPools[0][$_.Algorithms[0]].Where({ $ExcludePools -notcontains $_.Name[0] -and $_.Epoch -lt 602 -and $_.Algorithm -ne "EtcHash" -or $_.Epoch -lt 302 })) {
ForEach ($Pool0 in $MinerPools[0][$_.Algorithms[0]].Where({ $_.Epoch -lt 602 -and $_.Algorithm -ne "EtcHash" -or $_.Epoch -lt 302 })) {
- # ForEach ($Pool1 in $MinerPools[1][$_.Algorithms[1]].Where({ $_.Name -notin $ExcludePools[1] })) {
+ # ForEach ($Pool1 in $MinerPools[1][$_.Algorithms[1]].Where({ $ExcludePools -notcontains $_.Name[1] })) {
ForEach ($Pool1 in $MinerPools[1][$_.Algorithms[1]]) {
$MinMemGiB = $_.MinMemGiB + $Pool0.DAGSizeGiB + $Pool1.DAGSizeGiB
@@ -139,9 +141,6 @@ If ($Algorithms) {
$WarmupTimes = [UInt16[]]$_.WarmupTimes
$WarmupTimes[0] += [UInt16](($Pool0.DAGSizeGiB + $Pool1.DAGSizeGiB) * 2)
- # Apply tuning parameters
- If ($Variables.UseMinerTweaks) { $Arguments += $_.Tuning }
-
[PSCustomObject]@{
API = "EthMiner"
Arguments = "$Arguments -vmdag 0 -log 0 -wdog 0 -cdmport $MinerAPIPort -gpus $(($AvailableMinerDevices.$DeviceEnumerator | Sort-Object -Unique).ForEach({ '{0:d}' -f ($_ + 1) }) -join ',')"
diff --git a/Miners/Radiator-v1.0.0.ps1 b/Miners/Radiator-v1.0.0.ps1
index e3fe6577..7ad0bd96 100644
--- a/Miners/Radiator-v1.0.0.ps1
+++ b/Miners/Radiator-v1.0.0.ps1
@@ -17,8 +17,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
-Version: 6.2.22
-Version date: 2024/08/01
+Version: 6.2.23
+Version date: 2024/08/04
#>
If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.OpenCL.ComputeCapability -ge "5.0" }))) { Return }
@@ -54,16 +54,16 @@ If ($Algorithms) {
# $ExcludeGPUarchitectures = $_.ExcludeGPUarchitectures
$MinMemGiB = $_.MinMemGiB
If ($AvailableMinerDevices = $MinerDevices.Where({ $_.MemoryGiB -ge $MinMemGiB })) {
- # If ($AvailableMinerDevices = $MinerDevices.Where({ $_.MemoryGiB -ge $MinMemGiB -and $_.Architecture -notin $ExcludeGPUarchitectures } )) {
+ # If ($AvailableMinerDevices = $MinerDevices.Where({ $_.MemoryGiB -ge $MinMemGiB -and $_.Architecture -notin $ExcludeGPUarchitectures })) {
$MinerName = "$Name-$($AvailableMinerDevices.Count)x$Model-$($_.Algorithm)"
# $ExcludePools = $_.ExcludePools
- # ForEach ($Pool in $MinerPools[0][$_.Algorithm].Where({ $_.PoolPorts[0] -and $_.Name -notin $ExcludePools })) {
+ # ForEach ($Pool in $MinerPools[0][$_.Algorithm].Where({ $_.PoolPorts[0] -and $ExcludePools -notcontains $_.Name })) {
ForEach ($Pool in $MinerPools[0][$_.Algorithm].Where({ $_.PoolPorts[0] })) {
$Arguments = $_.Arguments
- If ($AvailableMinerDevices.Where({ $_.MemoryGiB -le 2 })) { $Arguments = $Arguments -replace ' --intensity [0-9\.]+' }
+ If ($AvailableMinerDevices.Where({ $_.MemoryGiB -le 2 })) { $Arguments = $Arguments -replace " --intensity [0-9\.]+" }
[PSCustomObject]@{
API = "CcMiner"
diff --git a/Miners/Raptor3umCpu-v2.0.ps1 b/Miners/Raptor3umCpu-v2.0.ps1
index b5ea7a5e..7f83cc25 100644
--- a/Miners/Raptor3umCpu-v2.0.ps1
+++ b/Miners/Raptor3umCpu-v2.0.ps1
@@ -17,8 +17,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
-Version: 6.2.22
-Version date: 2024/08/01
+Version: 6.2.23
+Version date: 2024/08/04
#>
If (-not ($AvailableMinerDevices = $Variables.EnabledDevices.Where({ $_.Type -eq "CPU" }))) { Return }
@@ -50,7 +50,7 @@ If ($Algorithms) {
$MinerName = "$Name-$($AvailableMinerDevices.Count)x$($AvailableMinerDevices.Model | Select-Object -Unique)-$($_.Algorithm)"
# $ExcludePools = $_.ExcludePools
- # ForEach ($Pool in $MinerPools[0][$_.Algorithm].Where({ $_.Name -notin $ExcludePools })) {
+ # ForEach ($Pool in $MinerPools[0][$_.Algorithm].Where({ $ExcludePools -notcontains $_.Name })) {
ForEach ($Pool in $MinerPools[0][$_.Algorithm]) {
[PSCustomObject]@{
diff --git a/Miners/Rigel-v1.18.1.ps1 b/Miners/Rigel-v1.18.1.ps1
index 6a1cb6c6..c696e77a 100644
--- a/Miners/Rigel-v1.18.1.ps1
+++ b/Miners/Rigel-v1.18.1.ps1
@@ -17,8 +17,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
-Version: 6.2.22
-Version date: 2024/08/01
+Version: 6.2.23
+Version date: 2024/08/04
#>
# Return
@@ -99,8 +99,8 @@ If ($Algorithms) {
# If ($SupportedMinerDevices = $MinerDevices.Where({ $_.Architecture -notin $ExcludeGPUarchitectures })) {
$ExcludePools = $_.ExcludePools
- ForEach ($Pool0 in $MinerPools[0][$_.Algorithms[0]].Where({ $_.Name -notin $ExcludePools[0] })) {
- ForEach ($Pool1 in $MinerPools[1][$_.Algorithms[1]].Where({ $_.Name -notin $ExcludePools[1] })) {
+ ForEach ($Pool0 in $MinerPools[0][$_.Algorithms[0]].Where({ $ExcludePools[0] -notcontains $_.Name })) {
+ ForEach ($Pool1 in $MinerPools[1][$_.Algorithms[1]].Where({ $ExcludePools[1] -notcontains $_.Name })) {
$Pools = @(($Pool0, $Pool1).Where({ $_ }))
$MinMemGiB = $_.MinMemGiB + $Pool0.DAGSizeGiB
@@ -109,7 +109,7 @@ If ($Algorithms) {
$MinerName = "$Name-$($AvailableMinerDevices.Count)x$Model-$($Pool0.AlgorithmVariant)$(If ($Pool1) { "&$($Pool1.AlgorithmVariant)" })"
$Arguments = $_.Arguments
- If ("ABEL","AIPG","ALPH","CFX","CLORE","ERGO","ETC.ETHW","GRAM","HYP","IRON","KLS","NEOX","NEXA","NX","OCTA","PYI","RXD","XEL","XNA","XPB","ZIL" -contains $Pool0.Currency) { $Arguments += " --coin $($Pool0.Currency.ToLower())" }
+ If ("ABEL", "AIPG", "ALPH", "CFX", "CLORE", "ERGO", "ETC", "ETHW", "GRAM", "HYP", "IRON", "KLS", "NEOX", "NEXA", "NX", "OCTA", "PYI", "RXD", "XEL", "XNA", "XPB", "ZIL" -contains $Pool0.Currency) { $Arguments += " --coin $($Pool0.Currency.ToLower())" }
$Index = 1
ForEach ($Pool in $Pools) {
@@ -136,7 +136,7 @@ If ($Algorithms) {
$WarmupTimes[0] += [UInt16](($Pool0.DAGSizeGiB + $Pool1.DAGSizeGiB) * 2)
# Apply tuning parameters
- If ($Variables.UseMinerTweaks -and ($AvailableMinerDevices.Architecture | Sort-Object -Unique) -eq "Pascal" -and $Model -notmatch "^MX\d+") { $Arguments += $_.Tuning }
+ If ($Variables.ApplyMinerTweaks -and ($AvailableMinerDevices.Architecture | Sort-Object -Unique) -eq "Pascal" -and $Model -notmatch "^MX\d+") { $Arguments += $_.Tuning }
[PSCustomObject]@{
API = "Rigel"
diff --git a/Miners/RplantCpu-v5.0.41.ps1 b/Miners/RplantCpu-v5.0.41.ps1
index f909d46c..55218d36 100644
--- a/Miners/RplantCpu-v5.0.41.ps1
+++ b/Miners/RplantCpu-v5.0.41.ps1
@@ -17,8 +17,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
-Version: 6.2.22
-Version date: 2024/08/01
+Version: 6.2.23
+Version date: 2024/08/04
#>
If (-not ($AvailableMinerDevices = $Variables.EnabledDevices.Where({ $_.Type -eq "CPU" }))) { Return }
@@ -123,7 +123,7 @@ If ($Algorithms) {
$MinerName = "$Name-$($AvailableMinerDevices.Count)x$($AvailableMinerDevices.Model | Select-Object -Unique)-$($_.Algorithm)"
$ExcludePools = $_.ExcludePools
- ForEach ($Pool in $MinerPools[0][$_.Algorithm].Where({ $_.Name -notin $ExcludePools })) {
+ ForEach ($Pool in $MinerPools[0][$_.Algorithm].Where({ $ExcludePools -notcontains $_.Name })) {
[PSCustomObject]@{
API = "CcMiner"
diff --git a/Miners/RrkzCpu-v4.2.ps1 b/Miners/RrkzCpu-v4.2.ps1
index 61d5d923..9d839e0b 100644
--- a/Miners/RrkzCpu-v4.2.ps1
+++ b/Miners/RrkzCpu-v4.2.ps1
@@ -17,8 +17,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
-Version: 6.2.22
-Version date: 2024/08/01
+Version: 6.2.23
+Version date: 2024/08/04
#>
If (-not ($AvailableMinerDevices = $Variables.EnabledDevices.Where({ $_.Type -eq "CPU" }))) { Return }
@@ -46,7 +46,7 @@ If ($Algorithms) {
$MinerName = "$Name-$($AvailableMinerDevices.Count)x$($AvailableMinerDevices.Model | Select-Object -Unique)-$($_.Algorithm)"
# $ExcludePools = $_.ExcludePools
- # ForEach ($Pool in $MinerPools[0][$_.Algorithm].Where({ $_.Name -notin $ExcludePools })) {
+ # ForEach ($Pool in $MinerPools[0][$_.Algorithm].Where({ $ExcludePools -notcontains $_.Name })) {
ForEach ($Pool in $MinerPools[0][$_.Algorithm]) {
[PSCustomObject]@{
diff --git a/Miners/SCCminer-v1.1.0.ps1 b/Miners/SCCminer-v1.1.0.ps1
index 70cc2269..b4428b50 100644
--- a/Miners/SCCminer-v1.1.0.ps1
+++ b/Miners/SCCminer-v1.1.0.ps1
@@ -17,13 +17,13 @@ along with this program. If not, see .
<#
Product: UG-Miner
-Version: 6.2.22
-Version date: 2024/08/01
+Version: 6.2.23
+Version date: 2024/08/04
#>
Return # Bad shares
-If (-not ($Devices = $Variables.EnabledDevices.Where({ ($_.Type -eq "NVIDIA" -and $_.OpenCL.ComputeCapability -gt "5.0") -or "AMD", "NVIDIA" -contains $_.Type } ))) { Return }
+If (-not ($Devices = $Variables.EnabledDevices.Where({ ($_.Type -eq "NVIDIA" -and $_.OpenCL.ComputeCapability -gt "5.0") -or "AMD", "NVIDIA" -contains $_.Type }))) { Return }
$URI = Switch ($Variables.DriverVersion.CUDA) {
{ $_ -ge "11.0" } { "https://github.com/UselessGuru/UG-Miner-Binaries/releases/download/SCCminer/sccminer-1.1.0-Windows.zip" }
@@ -54,7 +54,7 @@ If ($Algorithms) {
$Algorithms.Where({ $_.Type -eq $Type }).ForEach(
{
# $ExcludePools = $_.ExcludePools
- # ForEach ($Pool in $MinerPools[0][$_.Algorithm].Where({ $_.Name -notin $ExcludePools })) {
+ # ForEach ($Pool in $MinerPools[0][$_.Algorithm].Where({ $ExcludePools -notcontains $_.Name })) {
ForEach ($Pool in $MinerPools[0][$_.Algorithm]) {
$MinMemGiB = $_.MinMemGiB + $Pool.DAGSizeGiB
diff --git a/Miners/SRBMinerMulti-v0.9.4.ps1 b/Miners/SRBMinerMulti-v0.9.4.ps1
index f3347cfa..6b2d735c 100644
--- a/Miners/SRBMinerMulti-v0.9.4.ps1
+++ b/Miners/SRBMinerMulti-v0.9.4.ps1
@@ -17,11 +17,12 @@ along with this program. If not, see .
<#
Product: UG-Miner
-Version: 6.2.22
-Version date: 2024/08/01
+Version: 6.2.23
+Version date: 2024/08/04
#>
-If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.Type -eq "AMD" -and $_.Architecture -eq "Other" }))) { Return }
+# Support for Pitcairn, Tahiti, Hawaii, Fiji and Tonga was removed in later versions
+If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.Type -eq "AMD" -and $_.Architecture -match "GCN[1-3]" }))) { Return }
$URI = "https://github.com/doktor83/SRBMiner-Multi/releases/download/0.9.4/SRBMiner-Multi-0-9-4-win64.zip"
$Name = [String](Get-Item $MyInvocation.MyCommand.Path).BaseName
@@ -89,7 +90,7 @@ If ($Algorithms) {
}
# $ExcludePools = $_.ExcludePools
- # ForEach ($Pool in $MinerPools[0][$_.Algorithm].Where({ $_.Name -notin $ExcludePools })) {
+ # ForEach ($Pool in $MinerPools[0][$_.Algorithm].Where({ $ExcludePools -notcontains $_.Name })) {
ForEach ($Pool in $MinerPools[0][$_.Algorithm]) {
$MinMemGiB = $_.MinMemGiB + $Pool.DAGSizeGiB
diff --git a/Miners/SRBMinerMulti-v2.5.9.ps1 b/Miners/SRBMinerMulti-v2.6.0.ps1
similarity index 97%
rename from Miners/SRBMinerMulti-v2.5.9.ps1
rename to Miners/SRBMinerMulti-v2.6.0.ps1
index 5a5aee38..02888180 100644
--- a/Miners/SRBMinerMulti-v2.5.9.ps1
+++ b/Miners/SRBMinerMulti-v2.6.0.ps1
@@ -17,13 +17,13 @@ along with this program. If not, see .
<#
Product: UG-Miner
-Version: 6.2.22
-Version date: 2024/08/01
+Version: 6.2.23
+Version date: 2024/08/04
#>
-If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.Type -eq "CPU" -or $_.Type -eq "INTEL" -or ($_.Type -eq "AMD" -and $_.Model -notmatch "^RX5[5|6]0$" -and $_.OpenCL.ClVersion -ge "OpenCL C 2.0") -or ($_.OpenCL.ComputeCapability -ge "5.0" -and $_.OpenCL.DriverVersion -ge "510.00") }))) { Return }
+If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.Type -eq "CPU" -or $_.Type -eq "INTEL" -or ($_.Type -eq "AMD" -and $_.Model -notmatch "^GCN[1-3]" -and $_.OpenCL.ClVersion -ge "OpenCL C 2.0") -or ($_.OpenCL.ComputeCapability -ge "5.0" -and $_.OpenCL.DriverVersion -ge "510.00") }))) { Return }
-$URI = "https://github.com/doktor83/SRBMiner-Multi/releases/download/2.5.9/SRBMiner-Multi-2-5-9-win64.zip"
+$URI = "https://github.com/doktor83/SRBMiner-Multi/releases/download/2.6.0/SRBMiner-Multi-2-6-0-win64.zip"
$Name = [String](Get-Item $MyInvocation.MyCommand.Path).BaseName
$Path = "Bin\$Name\SRBMiner-MULTI.exe"
$DeviceEnumerator = "Type_Vendor_Slot"
@@ -67,7 +67,7 @@ $Algorithms = @(
@{ Algorithms = @("EthashB3", "Blake3"); Type = "AMD"; Fee = @(0.0085, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 30); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm ethashb3", " --algorithm blake3_alephium") }
@{ Algorithms = @("EthashB3", "Decred"); Type = "AMD"; Fee = @(0.0085, 0.01); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 30); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm ethashb3", " --algorithm blake3_decred") }
@{ Algorithms = @("EthashB3", "HeavyHashKarlsen"); Type = "AMD"; Fee = @(0.0085, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 60); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm ethashb3", " --algorithm karlsenhash") }
- @{ Algorithms = @("EthashB3", "SHA256dt"); Type = "AMD"; Fee = @(0.01, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 30); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm ethashb3", " --algorithm sha256dt") }
+ @{ Algorithms = @("EthashB3", "SHA256dt"); Type = "AMD"; Fee = @(0.01, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 40); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm ethashb3", " --algorithm sha256dt") }
@{ Algorithms = @("EthashB3", "SHA512256d"); Type = "AMD"; Fee = @(0.0085, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 60); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm ethashb3", " --algorithm sha512_256d_radiant") }
@{ Algorithms = @("EvrProgPow"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 15); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm evrprogpow") }
@{ Algorithms = @("FiroPow"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1.24; MinerSet = 1; WarmupTimes = @(60, 15); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm firopow") }
@@ -90,7 +90,7 @@ $Algorithms = @(
@{ Algorithms = @("ProgPowVeriblock"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(45, 30); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm progpow_veriblock") }
@{ Algorithms = @("ProgPowZ"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 0); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm progpow_zano") }
@{ Algorithms = @("Pufferfish2BMB"); Type = "AMD"; Fee = @(0.01); MinMemGiB = 8; MinerSet = 2; WarmupTimes = @(30, 0); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm pufferfish2bmb") }
-# @{ Algorithms = @("SCCpow"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1.24; MinerSet = 1; WarmupTimes = @(60, 15); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm firopow") } # Bad shares
+ @{ Algorithms = @("SCCpow"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1.24; MinerSet = 1; WarmupTimes = @(60, 15); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm firopow") }
@{ Algorithms = @("SHA256dt"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(45, 20); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm sha256dt") }
@{ Algorithms = @("SHA3d"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(30, 0); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm sha3d") } # FPGA
@{ Algorithms = @("SHA512256d"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(30, 0); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm sha512_256d_radiant") }
@@ -132,7 +132,7 @@ $Algorithms = @(
@{ Algorithms = @("RandomxScash"); Type = "CPU"; Fee = @(0.0085); MinerSet = 2; WarmupTimes = @(90, 20); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm randomscash --Randomx-use-1gb-pages") }
@{ Algorithms = @("RandomXeq"); Type = "CPU"; Fee = @(0.0085); MinerSet = 2; WarmupTimes = @(60, 0); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm randomxeq --Randomx-use-1gb-pages") }
@{ Algorithms = @("RandomYada"); Type = "CPU"; Fee = @(0.0085); MinerSet = 2; WarmupTimes = @(60, 0); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm randomyada --Randomx-use-1gb-pages") }
- @{ Algorithms = @("SHA3d"); Type = "CPU"; Fee = @(0.02); MinerSet = 2; WarmupTimes = @(90, 20); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm flex") }
+# @{ Algorithms = @("SHA3d"); Type = "CPU"; Fee = @(0.02); MinerSet = 2; WarmupTimes = @(90, 20); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm flex") } # Not profitable with CPU
@{ Algorithms = @("VerusHash"); Type = "CPU"; Fee = @(0.0085); MinerSet = 2; WarmupTimes = @(60, 20); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm verushash") }
@{ Algorithms = @("YescryptR16"); Type = "CPU"; Fee = @(0.0085); MinerSet = 2; WarmupTimes = @(60, 25); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm yescryptr16") }
@{ Algorithms = @("YescryptR32"); Type = "CPU"; Fee = @(0.0085); MinerSet = 2; WarmupTimes = @(60, 45); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm yescryptr32") }
@@ -196,11 +196,12 @@ $Algorithms = @(
@{ Algorithms = @("ProgPowVeil"); Type = "INTEL"; Fee = @(0.0085); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 30); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-nvidia --algorithm progpow_veil") }
@{ Algorithms = @("ProgPowVeriblock"); Type = "INTEL"; Fee = @(0.0085); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(45, 30); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-nvidia --algorithm progpow_veriblock") }
@{ Algorithms = @("ProgPowZ"); Type = "INTEL"; Fee = @(0.0085); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 0); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-nvidia --algorithm progpow_zano") }
-# @{ Algorithms = @("FiroPow"); Type = "INTEL"; Fee = @(0.0085); MinMemGiB = 1.24; MinerSet = 1; WarmupTimes = @(60, 30); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-nvidia --algorithm firopow") } # Bad shares
+ @{ Algorithms = @("FiroPow"); Type = "INTEL"; Fee = @(0.0085); MinMemGiB = 1.24; MinerSet = 1; WarmupTimes = @(60, 30); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-nvidia --algorithm firopow") }
@{ Algorithms = @("SHA256dt"); Type = "INTEL"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 1; WarmupTimes = @(30, 30); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-nvidia --algorithm sha256dt") }
@{ Algorithms = @("SHA3d"); Type = "INTEL"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(30, 0); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-nvidia --algorithm sha3d") } # FPGA
@{ Algorithms = @("SHA512256d"); Type = "INTEL"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 1; WarmupTimes = @(30, 30); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-nvidia --algorithm sha512_256d_radiant") }
@{ Algorithms = @("UbqHash"); Type = "INTEL"; Fee = @(0.0065); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 15); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-nvidia --algorithm ubqhash") }
+ @{ Algorithms = @("VertHash"); Type = "INTEL"; Fee = @(0.01); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(30, 30); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-nvidia --algorithm verthash --verthash-dat-path ..\.$($Variables.VerthashDatPath)") }
@{ Algorithms = @("XelisHash"); Type = "INTEL"; Fee = @(0.02); MinMemGiB = 1; MinerSet = 2; WarmupTimes = @(15, 20); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-nvidia --algorithm xelishash") }
@{ Algorithms = @("Autolykos2"); Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1.24; MinerSet = 1; WarmupTimes = @(30, 20); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm autolykos2") }
@@ -244,18 +245,19 @@ $Algorithms = @(
@{ Algorithms = @("HeavyHashKarlsen"); Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1; MinerSet = 1; WarmupTimes = @(15, 30); ExcludeGPUarchitectures = @("Other"); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm karlsenhash") }
@{ Algorithms = @("KawPow"); Type = "NVIDIA"; Fee = @(0.0085); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 20); ExcludeGPUarchitectures = @(); ExcludePools = @(@("ProHashing"), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm kawpow") }
@{ Algorithms = @("Lyra2v2Webchain"); Type = "NVIDIA"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 2; WarmupTimes = @(30, 30); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm lyra2v2_webchain") }
- @{ Algorithms = @("MemeHash"); Type = "NVIDIA"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 2; WarmupTimes = @(60, 15); ExcludeGPUarchitectures = @("Other"); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm memehash") }
+ @{ Algorithms = @("MemeHash"); Type = "NVIDIA"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 2; WarmupTimes = @(60, 15); ExcludeGPUarchitectures = @("Other", "Pascal"); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm memehash") }
@{ Algorithms = @("MeowPow"); Type = "NVIDIA"; Fee = @(0.0085); MinMemGiB = 1.24; MinerSet = 1; WarmupTimes = @(60, 15); ExcludeGPUarchitectures = @(); ExcludePools = @(@("ProHashing"), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm meowpow") }
@{ Algorithms = @("ProgPowEpic"); Type = "NVIDIA"; Fee = @(0.0085); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 30); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm progpow_epic") }
@{ Algorithms = @("ProgPowSero"); Type = "NVIDIA"; Fee = @(0.0085); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 30); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm progpow_sero") }
@{ Algorithms = @("ProgPowVeil"); Type = "NVIDIA"; Fee = @(0.0085); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 30); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm progpow_veil") }
@{ Algorithms = @("ProgPowVeriblock"); Type = "NVIDIA"; Fee = @(0.0085); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(45, 30); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm progpow_veriblock") }
@{ Algorithms = @("ProgPowZ"); Type = "NVIDIA"; Fee = @(0.0085); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 0); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm progpow_zano") }
-# @{ Algorithms = @("SCCpow"); Type = "NVIDIA"; Fee = @(0.0085); MinMemGiB = 1.24; MinerSet = 1; WarmupTimes = @(60, 0); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm firopow") } # Bad shares
+ @{ Algorithms = @("SCCpow"); Type = "NVIDIA"; Fee = @(0.0085); MinMemGiB = 1.24; MinerSet = 1; WarmupTimes = @(60, 0); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm firopow") }
@{ Algorithms = @("SHA256dt"); Type = "NVIDIA"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(45, 15); ExcludeGPUarchitectures = @("Other"); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm sha256dt") }
@{ Algorithms = @("SHA3d"); Type = "NVIDIA"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(45, 0); ExcludeGPUarchitectures = @("Other"); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm sha3d") } # FPGA
@{ Algorithms = @("SHA512256d"); Type = "NVIDIA"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(45, 0); ExcludeGPUarchitectures = @("Other"); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm sha512_256d_radiant") }
@{ Algorithms = @("UbqHash"); Type = "NVIDIA"; Fee = @(0.0065); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 15); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm ubqhash") }
+ @{ Algorithms = @("VertHash"); Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(30, 30); ExcludeGPUarchitectures = @("Other"); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm verthash --verthash-dat-path ..\.$($Variables.VerthashDatPath)") }
)
$Algorithms = $Algorithms.Where({ $_.MinerSet -le $Config.MinerSet })
@@ -293,6 +295,8 @@ If ($Algorithms) {
{
$ExcludeGPUarchitectures = $_.ExcludeGPUarchitectures
If ($SupportedMinerDevices = $MinerDevices.Where({ $_.Type -eq "CPU" -or $_.Architecture -notin $ExcludeGPUarchitectures })) {
+ # Apply tuning parameters
+ If ($_.Type -eq "CPU" -and -not $Variables.ApplyMinerTweaks) { $_.Arguments += " --disable-msr-tweaks" }
If ($_.Algorithms[0] -eq "VertHash" -and (Get-Item -Path $Variables.VerthashDatPath -ErrorAction Ignore).length -ne 1283457024) {
$PrerequisitePath = $Variables.VerthashDatPath
@@ -304,8 +308,8 @@ If ($Algorithms) {
}
$ExcludePools = $_.ExcludePools
- ForEach ($Pool0 in $MinerPools[0][$_.Algorithms[0]].Where({ $_.Name -notin $ExcludePools[0] }) | Select-Object -Last $(If ($_.Type -eq "CPU") { 1 } Else { $MinerPools[0][$_.Algorithms[0]].Count })) {
- ForEach ($Pool1 in $MinerPools[1][$_.Algorithms[1]].Where({ $_.Name -notin $ExcludePools[1] }) | Select-Object -Last $(If ($_.Type -eq "CPU") { 1 } Else { $MinerPools[1][$_.Algorithms[1]].Count })) {
+ ForEach ($Pool0 in $MinerPools[0][$_.Algorithms[0]].Where({ $ExcludePools -notcontains $_.Name }) | Select-Object -Last $(If ($_.Type -eq "CPU") { 1 } Else { $MinerPools[0][$_.Algorithms[0]].Count })) {
+ ForEach ($Pool1 in $MinerPools[1][$_.Algorithms[1]].Where({ $ExcludePools -notcontains $_.Name }) | Select-Object -Last $(If ($_.Type -eq "CPU") { 1 } Else { $MinerPools[1][$_.Algorithms[1]].Count })) {
$Pools = @(($Pool0, $Pool1).Where({ $_ }))
$MinMemGiB = $_.MinMemGiB + $Pool0.DAGSizeGiB + $Pool1.DAGSizeGiB
@@ -341,9 +345,6 @@ If ($Algorithms) {
$WarmupTimes = [UInt16[]]$_.WarmupTimes
$WarmupTimes[0] += [UInt16](($Pool0.DAGSizeGiB + $Pool1.DAGSizeGiB) * 2)
- # Apply tuning parameters
- If ($_.Type -eq "CPU" -and $Variables.UseMinerTweaks) { $Arguments += " --disable-msr-tweaks" }
-
[PSCustomObject]@{
API = "SRBMiner"
Arguments = "$Arguments --api-rig-name $($Config.WorkerName) --api-enable --api-port $MinerAPIPort"
diff --git a/Miners/SgMinerFancyIX-v0.9.4.ps1 b/Miners/SgMinerFancyIX-v0.9.4.ps1
index 3cec352e..20160fde 100644
--- a/Miners/SgMinerFancyIX-v0.9.4.ps1
+++ b/Miners/SgMinerFancyIX-v0.9.4.ps1
@@ -17,8 +17,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
-Version: 6.2.22
-Version date: 2024/08/01
+Version: 6.2.23
+Version date: 2024/08/04
#>
If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.Type -eq "AMD" }))) { Return }
@@ -53,12 +53,12 @@ If ($Algorithms) {
# $ExcludeGPUarchitectures = $_.ExcludeGPUarchitectures
$MinMemGiB = $_.MinMemGiB
If ($AvailableMinerDevices = $MinerDevices.Where({ $_.MemoryGiB -ge $MinMemGiB })) {
- # If ($AvailableMinerDevices = $MinerDevices.Where({ $_.MemoryGiB -ge $MinMemGiB -and $_.Architecture -notin $ExcludeGPUarchitectures } )) {
+ # If ($AvailableMinerDevices = $MinerDevices.Where({ $_.MemoryGiB -ge $MinMemGiB -and $_.Architecture -notin $ExcludeGPUarchitectures })) {
$MinerName = "$Name-$($AvailableMinerDevices.Count)x$Model-$($_.Algorithm)"
$ExcludePools = $_.ExcludePools
- ForEach ($Pool in $MinerPools[0][$_.Algorithm].Where({ $_.PoolPorts[0] -and $_.Name -notin $ExcludePools })) {
+ ForEach ($Pool in $MinerPools[0][$_.Algorithm].Where({ $_.PoolPorts[0] -and $ExcludePools -notcontains $_.Name })) {
[PSCustomObject]@{
API = "Xgminer"
diff --git a/Miners/Suprminer-v2.31v2.ps1 b/Miners/Suprminer-v2.31v2.ps1
index f464d58c..490e6ca9 100644
--- a/Miners/Suprminer-v2.31v2.ps1
+++ b/Miners/Suprminer-v2.31v2.ps1
@@ -17,8 +17,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
-Version: 6.2.22
-Version date: 2024/08/01
+Version: 6.2.23
+Version date: 2024/08/04
#>
If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.OpenCL.ComputeCapability -ge "5.0" }))) { Return }
@@ -55,7 +55,7 @@ If ($Algorithms) {
$MinerName = "$Name-$($AvailableMinerDevices.Count)x$Model-$($_.Algorithm)"
# $ExcludePools = $_.ExcludePools
- # ForEach ($Pool in $MinerPools[0][$_.Algorithm].Where({ $_.PoolPorts[0] -and $_.Name -notin $ExcludePools})) {
+ # ForEach ($Pool in $MinerPools[0][$_.Algorithm].Where({ $_.PoolPorts[0] -and $ExcludePools -notcontains $_.Name})) {
ForEach ($Pool in $MinerPools[0][$_.Algorithm].Where({ $_.PoolPorts[0] })) {
$Arguments = $_.Arguments
diff --git a/Miners/TTMiner-v2024.3.2.ps1 b/Miners/TTMiner-v2024.3.2.ps1
index ae542ea9..380fb8ac 100644
--- a/Miners/TTMiner-v2024.3.2.ps1
+++ b/Miners/TTMiner-v2024.3.2.ps1
@@ -17,13 +17,13 @@ along with this program. If not, see .
<#
Product: UG-Miner
-Version: 6.2.22
-Version date: 2024/08/01
+Version: 6.2.23
+Version date: 2024/08/04
#>
# TT needs avx2 and aes https://github.com/TrailingStop/TT-Miner-beta/issues/7#issuecomment-2158058291
If (($Variables.CPUfeatures -match "^AES$|^AVX2$").count -ne 2) { Return }
-If (-not ($Devices = $Variables.EnabledDevices.Where({ ($_.Type -eq "NVIDIA" -and $_.OpenCL.ComputeCapability -gt "5.0") -or "AMD", "NVIDIA" -contains $_.Type } ))) { Return }
+If (-not ($Devices = $Variables.EnabledDevices.Where({ ($_.Type -eq "NVIDIA" -and $_.OpenCL.ComputeCapability -gt "5.0") -or "AMD", "NVIDIA" -contains $_.Type }))) { Return }
$URI = Switch ($Variables.DriverVersion.CUDA) {
{ $_ -ge "11.0" } { "https://github.com/TrailingStop/TT-Miner-release/releases/download/2024.3.2/TT-Miner-2024.3.2.zip" }
@@ -105,7 +105,7 @@ If ($Algorithms) {
If ($SupportedMinerDevices = $MinerDevices.Where({ $_.Architecture -notin $ExcludeGPUarchitectures })) {
# $ExcludePools = $_.ExcludePools
- # ForEach ($Pool in $MinerPools[0][$_.Algorithm].Where({ $_.PoolPorts[0] -and $_.Name -notin $ExcludePools })) {
+ # ForEach ($Pool in $MinerPools[0][$_.Algorithm].Where({ $_.PoolPorts[0] -and $ExcludePools -notcontains $_.Name })) {
ForEach ($Pool in $MinerPools[0][$_.Algorithm].Where({ $_.PoolPorts[0] })) {
$MinMemGiB = $_.MinMemGiB + $Pool.DAGSizeGiB
@@ -119,17 +119,17 @@ If ($Algorithms) {
Else {
$Arguments = $_.Arguments
}
- If ($AvailableMinerDevices.Where({ $_.MemoryGiB -le 2 })) { $Arguments = $Arguments -replace ' -intensity [0-9\.]+' }
+ If ($AvailableMinerDevices.Where({ $_.MemoryGiB -le 2 })) { $Arguments = $Arguments -replace " -intensity [0-9\.]+" }
$Arguments += " -o $(If ($_.Algorithm -match "^Ethash") { "stratum+" })$(If ($Pool.PoolPorts[1]) { "ssl://" } Else { "tcp://" })$($Pool.Host):$($Pool.PoolPorts | Select-Object -Last 1)"
$Arguments += " -u $($Pool.User)"
If ($Pool.Pass) { $Arguments += " -p $($Pool.Pass)" }
If ($Pool.WorkerName) { $Arguments += " -w $($Pool.WorkerName)" }
- # Allow more time to build larger DAGs, must use type cast to keep values in $_
- $WarmupTimes = [UInt16[]]$_.WarmupTimes
- $WarmupTimes[0] += [UInt16]($Pool.DAGSizeGiB * 5)
+ # Allow more time to build larger DAGs, must use type cast to keep values in $_
+ $WarmupTimes = [UInt16[]]$_.WarmupTimes
+ $WarmupTimes[0] += [UInt16]($Pool.DAGSizeGiB * 5)
- [PSCustomObject]@{
+ [PSCustomObject]@{
API = "EthMiner"
Arguments = "$Arguments -report-average 5 -report-interval 5$(If ($_.Algorithm -match $Variables.RegexAlgoHasDAG) { " -daginfo" }) -b 127.0.0.1:$($MinerAPIPort)$(If ($_.Type -eq "CPU") { " -cpu $AvailableMinerDevices.$($AvailableMinerDevices.CIM.NumberOfLogicalProcessors -$($Config.CPUMiningReserveCPUcore))" } Else { " -d $(($AvailableMinerDevices.$DeviceEnumerator | Sort-Object -Unique).ForEach({ '{0:x}' -f $_ }) -join ',')" })"
DeviceNames = $AvailableMinerDevices.Name
diff --git a/Miners/TTMiner-v5.0.3.ps1 b/Miners/TTMiner-v5.0.3.ps1
index 458dea65..47f12943 100644
--- a/Miners/TTMiner-v5.0.3.ps1
+++ b/Miners/TTMiner-v5.0.3.ps1
@@ -17,8 +17,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
-Version: 6.2.22
-Version date: 2024/08/01
+Version: 6.2.23
+Version date: 2024/08/04
#>
If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.OpenCL.ComputeCapability -ge "5.0" }))) { Return }
@@ -33,7 +33,7 @@ $Algorithms = @(
@{ Algorithm = "Ethash"; MinMemGiB = 1.22; MinerSet = 0; WarmupTimes = @(45, 60); ExcludeGPUarchitectures = @(); ExcludePools = @(); Arguments = " -algo ETHASH -intensity 15" }
@{ Algorithm = "KawPow"; MinMemGiB = 1.22; MinerSet = 2; WarmupTimes = @(90, 60); ExcludeGPUarchitectures = @(); ExcludePools = @(); Arguments = " -algo KAWPOW" }
# @{ Algorithm = "Lyra2RE3"; MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 60); ExcludeGPUarchitectures = @(); ExcludePools = @(); Arguments = " -algo LYRA2V3" } # ASIC
- @{ Algorithm = "MTP"; MinMemGiB = 3; MinerSet = 2; WarmupTimes = @(30, 60); ExcludeGPUarchitectures = @(); ExcludePools = @(); Arguments = " -algo MTP -intensity 21" } # Algorithm is dead
+# @{ Algorithm = "MTP"; MinMemGiB = 3; MinerSet = 2; WarmupTimes = @(30, 60); ExcludeGPUarchitectures = @(); ExcludePools = @(); Arguments = " -algo MTP -intensity 21" } # Algorithm is dead
@{ Algorithm = "ProgPowEpic"; MinMemGiB = 1.22; MinerSet = 2; WarmupTimes = @(45, 60); ExcludeGPUarchitectures = @(); ExcludePools = @(); Arguments = " -coin EPIC" }
@{ Algorithm = "ProgPowSero"; MinMemGiB = 1.22; MinerSet = 2; WarmupTimes = @(45, 60); ExcludeGPUarchitectures = @(); ExcludePools = @(); Arguments = " -coin SERO" }
@{ Algorithm = "ProgPowVeil"; MinMemGiB = 1.22; MinerSet = 2; WarmupTimes = @(45, 60); ExcludeGPUarchitectures = @(); ExcludePools = @(); Arguments = " -coin VEIL" }
@@ -62,11 +62,11 @@ If ($Algorithms) {
# If ($SupportedMinerDevices = $MinerDevices.Where({ $_.Architecture -notin $ExcludeGPUarchitectures })) {
# $ExcludePools = $_.ExcludePools
- # ForEach ($Pool in $MinerPools[0][$_.Algorithm].Where({ $_.PoolPorts[0] -and $_.Name -notin $ExcludePools -and $_.Algorithm -notin @("Ethash", "KawPow") -or (<# Miner supports Ethash up to epoch 384 #>$_.Algorithm -eq "Ethash" -and $_.Epoch -le 384) -or (<# Miner supports Kawpow up to 4GB #>$_.Algorithm -eq "KawPow" -and $_.DAGSizeGiB -lt 4) })) {
- ForEach ($Pool in $MinerPools[0][$_.Algorithm].Where({ $_.PoolPorts[0] -and $_.Algorithm -notin @("Ethash", "KawPow") -or (<# Miner supports Ethash up to epoch 384 #>$_.Algorithm -eq "Ethash" -and $_.Epoch -le 384) -or (<# Miner supports Kawpow up to 4GB #>$_.Algorithm -eq "KawPow" -and $_.DAGSizeGiB -lt 4) })) {
+ # ForEach ($Pool in $MinerPools[0][$_.Algorithm].Where({ $_.PoolPorts[0] -and $ExcludePools -notcontains $_.Name -and $_.Algorithm -notin @("Ethash", "KawPow") -or (<# Miner supports Ethash up to epoch 384 #>$_.Algorithm -eq "Ethash" -and $_.Epoch -le 384) -or (<# Miner supports Kawpow up to 4GB #>$_.Algorithm -eq "KawPow" -and $_.DAGSizeGiB -lt 4) })) {
+ ForEach ($Pool in $MinerPools[0][$_.Algorithm].Where({ $_.PoolPorts[0] -and "Ethash", "KawPow" -notcontains $_.Algorithm -or (<# Miner supports Ethash up to epoch 384 #>$_.Algorithm -eq "Ethash" -and $_.Epoch -le 384) -or (<# Miner supports Kawpow up to 4GB #>$_.Algorithm -eq "KawPow" -and $_.DAGSizeGiB -lt 4) })) {
$MinMemGiB = $_.MinMemGiB + $Pool.DAGSizeGiB
- If ($AvailableMinerDevices = $SupportedMinerDevices.Where({ $_.MemoryGiB -ge $MinMemGiB }) ) {
+ If ($AvailableMinerDevices = $SupportedMinerDevices.Where({ $_.MemoryGiB -ge $MinMemGiB })) {
$MinerName = "$Name-$($AvailableMinerDevices.Count)x$Model-$($Pool.AlgorithmVariant)"
@@ -74,7 +74,7 @@ If ($Algorithms) {
If ("CLO", "ETC", "ETH", "ETP", "EXP", "MUSIC", "PIRL", "RVN", "TCR", "UBQ", "VBK", "ZANO", "ZCOIN", "ZELS" -contains $Pool.Currency) {
$Arguments = " -coin $($Pool.Currency)$($_.Arguments -replace ' -algo \w+')"
}
- If ($AvailableMinerDevices.Where({ $_.MemoryGiB -le 2 })) { $Arguments = $Arguments -replace ' -intensity [0-9\.]+' }
+ If ($AvailableMinerDevices.Where({ $_.MemoryGiB -le 2 })) { $Arguments = $Arguments -replace " -intensity [0-9\.]+" }
$Arguments += If ($Pool.Protocol -like "ethproxy*" -or $_.Algorithm -eq "ProgPowZ") { " -pool stratum1+tcp://" } Else { " -pool stratum+tcp://" }
$Arguments += "$($Pool.Host):$($Pool.PoolPorts[0]) -user $($Pool.User)"
diff --git a/Miners/TeamBlackMiner-v2.25.ps1 b/Miners/TeamBlackMiner-v2.25.ps1
index 48ee9e1d..8cecf84d 100644
--- a/Miners/TeamBlackMiner-v2.25.ps1
+++ b/Miners/TeamBlackMiner-v2.25.ps1
@@ -17,8 +17,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
-Version: 6.2.22
-Version date: 2024/08/01
+Version: 6.2.23
+Version date: 2024/08/04
#>
If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.Type -eq "AMD" -or ($_.OpenCL.ComputeCapability -ge "5.0" -and $_.CUDAVersion -ge [Version]"11.6") }))) { Return }
@@ -101,6 +101,8 @@ If ($Algorithms) {
{
$ExcludeGPUarchitectures = $_.ExcludeGPUArchitectures
If ($SupportedMinerDevices = $MinerDevices.Where({ $_.Architecture -notin $ExcludeGPUarchitectures })) {
+ # Apply tuning parameters
+ If ($Variables.ApplyMinerTweaks) { $_.Arguments += $_.Tuning }
If ($_.Algorithms -contains "VertHash" -and (Get-Item -Path $Variables.VerthashDatPath -ErrorAction Ignore).length -ne 1283457024) {
$PrerequisitePath = $Variables.VerthashDatPath
@@ -112,8 +114,8 @@ If ($Algorithms) {
}
$ExcludePools = $_.ExcludePools
- ForEach ($Pool0 in $MinerPools[0][$_.Algorithms[0]].Where({ $_.Name -notin $ExcludePools[0] })) {
- ForEach ($Pool1 in $MinerPools[1][$_.Algorithms[1]].Where({ $_.Name -notin $ExcludePools[1] })) {
+ ForEach ($Pool0 in $MinerPools[0][$_.Algorithms[0]].Where({ $ExcludePools[0] -notcontains $_.Name })) {
+ ForEach ($Pool1 in $MinerPools[1][$_.Algorithms[1]].Where({ $ExcludePools[1] -notcontains $_.Name })) {
# Dual algorithm mining: Both pools must support same protocol (SSL or non-SSL) :-(
If (-not $_.Algorithms[1] -or ($Pool0.PoolPorts[0] -and $Pool1.PoolPorts[0]) -or ($Pool0.PoolPorts[1] -and $Pool1.PoolPorts[1])) {
@@ -148,9 +150,6 @@ If ($Algorithms) {
$WarmupTimes = [UInt16[]]$_.WarmupTimes
$WarmupTimes[0] += [UInt16](($Pool0.DAGSizeGiB + $Pool1.DAGSizeGiB) * 5)
- # Apply tuning parameters
- If ($Variables.UseMinerTweaks) { $Arguments += $_.Tuning }
-
[PSCustomObject]@{
API = "TeamBlackMiner"
Arguments = "$Arguments --api --api-version 1.4 --api-port $MinerAPIPort$($DeviceSelector.($AvailableMinerDevices.Type | Select-Object -Unique)) [$((($AvailableMinerDevices.$DeviceEnumerator | Sort-Object -Unique).ForEach({ '{0:x}' -f $_ })) -join ',')]"
diff --git a/Miners/TeamRedMiner-v0.10.21.ps1 b/Miners/TeamRedMiner-v0.10.21.ps1
index 70decd6f..82888ca9 100644
--- a/Miners/TeamRedMiner-v0.10.21.ps1
+++ b/Miners/TeamRedMiner-v0.10.21.ps1
@@ -17,8 +17,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
-Version: 6.2.22
-Version date: 2024/08/01
+Version: 6.2.23
+Version date: 2024/08/04
#>
If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.Type -eq "AMD" -and $_.OpenCL.ClVersion -ge "OpenCL C 2.0" }))) { Return }
@@ -77,7 +77,7 @@ $Algorithms = @(
@{ Algorithms = @("HeavyHashPyrin"); Fee = @(0.01); MinMemGiB = 2.0; MinerSet = 0; WarmupTimes = @(60, 15); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @()); Arguments = " --algo=pyrin" }
# @{ Algorithms = @("Lyra2Z"); Fee = @(0.03); MinMemGiB = 2.0; MinerSet = 0; WarmupTimes = @(60, 15); ExcludeGPUarchitectures = @("GCN1", "RDNA1", "RDNA2", "RDNA3"); ExcludePools = @(@(), @()); Arguments = " --algo=lyra2z" } # ASIC
# @{ Algorithms = @("Lyra2RE3"); Fee = @(0.025); MinMemGiB = 2.0; MinerSet = 2; WarmupTimes = @(60, 15); ExcludeGPUarchitectures = @("GCN1", "RDNA1", "RDNA2", "RDNA3"); ExcludePools = @(@(), @()); Arguments = " --algo=lyra2rev3" } # ASIC
- @{ Algorithms = @("MTP"); Fee = @(0.025); MinMemGiB = 2.0; MinerSet = 2; WarmupTimes = @(45, 45); ExcludeGPUarchitectures = @("GCN1", "RDNA3"); ExcludePools = @(@(), @()); Arguments = " --algo=mtp" } # Algorithm is dead
+# @{ Algorithms = @("MTP"); Fee = @(0.025); MinMemGiB = 2.0; MinerSet = 2; WarmupTimes = @(45, 45); ExcludeGPUarchitectures = @("GCN1", "RDNA3"); ExcludePools = @(@(), @()); Arguments = " --algo=mtp" } # Algorithm is dead
@{ Algorithms = @("Nimiq"); Fee = @(0.025); MinMemGiB = 4.0; MinerSet = 2; WarmupTimes = @(60, 15); ExcludeGPUarchitectures = @("GCN1", "RDNA3"); ExcludePools = @(@(), @()); Arguments = " --algo=nimiq" }
@{ Algorithms = @("Phi2"); Fee = @(0.03); MinMemGiB = 2.0; MinerSet = 2; WarmupTimes = @(60, 15); ExcludeGPUarchitectures = @("GCN1", "RDNA1", "RDNA2", "RDNA3"); ExcludePools = @(@(), @()); Arguments = " --algo=phi2" }
@{ Algorithms = @("VertHash"); Fee = @(0.02); MinMemGiB = 4.0; MinerSet = 1; WarmupTimes = @(75, 15); ExcludeGPUarchitectures = @("GCN1"); ExcludePools = @(@(), @()); Arguments = " --algo=verthash --verthash_file=..\.$($Variables.VerthashDatPath)" }
@@ -115,8 +115,8 @@ If ($Algorithms) {
}
$ExcludePools = $_.ExcludePools
- ForEach ($Pool0 in $MinerPools[0][$_.Algorithms[0]].Where({ $_.Name -notin $ExcludePools[0] -and ($Config.SSL -ne "Always" -or $_.SSLselfSignedCertificate -ne $true) })) {
- ForEach ($Pool1 in $MinerPools[1][$_.Algorithms[1]].Where({ $_.Name -notin $ExcludePools[1] -and ($Config.SSL -ne "Always" -or $_.SSLselfSignedCertificate -ne $true) })) {
+ ForEach ($Pool0 in $MinerPools[0][$_.Algorithms[0]].Where({ $ExcludePools[0] -notcontains $_.Name -and ($Config.SSL -ne "Always" -or $_.SSLselfSignedCertificate -ne $true) })) {
+ ForEach ($Pool1 in $MinerPools[1][$_.Algorithms[1]].Where({ $ExcludePools[1] -notcontains $_.Name -and ($Config.SSL -ne "Always" -or $_.SSLselfSignedCertificate -ne $true) })) {
$MinMemGiB = $_.MinMemGiB + $Pool0.DAGSizeGiB + $Pool1.DAGSizeGiB
If ($AvailableMinerDevices = $SupportedMinerDevices.Where({ $_.MemoryGiB -ge $MinMemGiB })) {
diff --git a/Miners/Trex-v0.26.8.ps1 b/Miners/Trex-v0.26.8.ps1
index 241396f0..cc9aa7d4 100644
--- a/Miners/Trex-v0.26.8.ps1
+++ b/Miners/Trex-v0.26.8.ps1
@@ -17,8 +17,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
-Version: 6.2.22
-Version date: 2024/08/01
+Version: 6.2.23
+Version date: 2024/08/04
#>
If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.OpenCL.ComputeCapability -ge "5.0" }))) { Return }
@@ -41,7 +41,7 @@ $Algorithms = @(
@{ Algorithms = @("Ethash", "Octopus"); Fee = @(0.01, 0.02); MinMemGiB = 8; MinerSet = 2; Tuning = " --mt 3"; WarmupTimes = @(60, 15); ExcludePools = @(@(), @()); Arguments = " --algo ethash --dual-algo octopus --lhr-tune -1" }
@{ Algorithms = @("FiroPow"); Fee = @(0.01); MinMemGiB = 1.08; MinerSet = 1; Tuning = " --mt 3"; WarmupTimes = @(60, 30); ExcludePools = @(@(), @()); Arguments = " --algo firopow --intensity 25" }
@{ Algorithms = @("KawPow"); Fee = @(0.01); MinMemGiB = 1.08; MinerSet = 1; Tuning = " --mt 3"; WarmupTimes = @(45, 20); ExcludePools = @(@(), @()); Arguments = " --algo kawpow --intensity 25" } # XmRig-v6.21.3.15 is almost as fast but has no fee
- @{ Algorithms = @("MTP"); Fee = @(0.01); MinMemGiB = 3; MinerSet = 2; Tuning = " --mt 3"; WarmupTimes = @(30, 15); ExcludePools = @(@(), @()); Arguments = " --algo mtp --intensity 21" } # Algorithm is dead
+# @{ Algorithms = @("MTP"); Fee = @(0.01); MinMemGiB = 3; MinerSet = 2; Tuning = " --mt 3"; WarmupTimes = @(30, 15); ExcludePools = @(@(), @()); Arguments = " --algo mtp --intensity 21" } # Algorithm is dead
@{ Algorithms = @("MTPTcr"); Fee = @(0.01); MinMemGiB = 3; MinerSet = 2; Tuning = " --mt 3"; WarmupTimes = @(30, 15); ExcludePools = @(@(), @()); Arguments = " --algo mtp-tcr --intensity 21" }
@{ Algorithms = @("Multi"); Fee = @(0.01); MinMemGiB = 2; MinerSet = 2; Tuning = " --mt 3"; WarmupTimes = @(30, 0); ExcludePools = @(@(), @()); Arguments = " --algo multi --intensity 25" }
@{ Algorithms = @("Octopus"); Fee = @(0.02); MinMemGiB = 1.08; MinerSet = 2; Tuning = " --mt 3"; WarmupTimes = @(60, 15); ExcludePools = @(@(), @()); Arguments = " --algo octopus" } # 6GB is not enough
@@ -67,10 +67,13 @@ If ($Algorithms) {
$Algorithms.ForEach(
{
+ # Apply tuning parameters
+ If ($Variables.ApplyMinerTweaks) { $_.Arguments += $_.Tuning }
+
# $ExcludePools = $_.ExcludePools
- # ForEach ($Pool0 in $MinerPools[0][$_.Algorithms[0]].Where({ $_.Name -notin $ExcludePools[0] -and ($Config.SSL -ne "Always" -or $_.SSLselfSignedCertificate -ne $true) })) {
+ # ForEach ($Pool0 in $MinerPools[0][$_.Algorithms[0]].Where({ $ExcludePools[0] -notcontains $_.Name[0] -and ($Config.SSL -ne "Always" -or $_.SSLselfSignedCertificate -ne $true) })) {
ForEach ($Pool0 in $MinerPools[0][$_.Algorithms[0]].Where({ $Config.SSL -ne "Always" -or $_.SSLselfSignedCertificate -ne $true })) {
- # ForEach ($Pool1 in $MinerPools[1][$_.Algorithms[1]].Where({ $_.Name -notin $ExcludePools[1] -and ($Config.SSL -ne "Always" -or $_.SSLselfSignedCertificate -ne $true) })) {
+ # ForEach ($Pool1 in $MinerPools[1][$_.Algorithms[1]].Where({ $ExcludePools[1] -notcontains $_.Name[1] -and ($Config.SSL -ne "Always" -or $_.SSLselfSignedCertificate -ne $true) })) {
ForEach ($Pool1 in $MinerPools[1][$_.Algorithms[1]].Where({ $Config.SSL -ne "Always" -or $_.SSLselfSignedCertificate -ne $true })) {
$MinMemGiB = $_.MinMemGiB + $Pool0.DAGSizeGiB + $Pool1.DAGSizeGiB
@@ -78,7 +81,7 @@ If ($Algorithms) {
$MinerName = "$Name-$($AvailableMinerDevices.Count)x$Model-$($Pool0.AlgorithmVariant)$(If ($Pool1) { "&$($Pool1.AlgorithmVariant)" })"
- If ($AvailableMinerDevices.Where({ $_.MemoryGiB -le 2 })) { $Arguments = $Arguments -replace ' --intensity [0-9\.]+' }
+ If ($AvailableMinerDevices.Where({ $_.MemoryGiB -le 2 })) { $Arguments = $Arguments -replace " --intensity [0-9\.]+" }
$Arguments = $_.Arguments
$Arguments += Switch ($Pool0.Protocol) {
@@ -111,9 +114,6 @@ If ($Algorithms) {
If ($Pool1.WorkerName) { $Arguments += " --worker2 $($Pool1.WorkerName)" }
}
- # Apply tuning parameters
- If ($Variables.UseMinerTweaks) { $Arguments += $_.Tuning }
-
If ($Arguments -notmatch "--kernel [0-9]") { $_.WarmupTimes[0] += 15 } # Allow extra seconds for kernel auto tuning
[PSCustomObject]@{
diff --git a/Miners/Wildrig-v0.40.6.ps1 b/Miners/Wildrig-v0.40.6.ps1
index 82e82ecb..512eceaa 100644
--- a/Miners/Wildrig-v0.40.6.ps1
+++ b/Miners/Wildrig-v0.40.6.ps1
@@ -17,8 +17,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
-Version: 6.2.22
-Version date: 2024/08/01
+Version: 6.2.23
+Version date: 2024/08/04
#>
If (-not ($Devices = $Variables.EnabledDevices.Where({ ($_.Type -eq "AMD" -and $_.OpenCL.ClVersion -ge "OpenCL C 1.2") -or $_.Type -eq "INTEL" -or ($_.OpenCL.ComputeCapability -ge "5.0" -and $_.OpenCL.DriverVersion -ge [Version]"452.39.00") }))) { Return }
@@ -280,7 +280,7 @@ If ($Algorithms) {
If ($SupportedMinerDevices = $MinerDevices.Where({ $_.Architecture -notmatch $ExcludeGPUarchitectures })) {
$ExcludePools = $_.ExcludePools
- ForEach ($Pool in $MinerPools[0][$_.Algorithm].Where({ $_.Name -notin $ExcludePools })) {
+ ForEach ($Pool in $MinerPools[0][$_.Algorithm].Where({ $ExcludePools -notcontains $_.Name })) {
$MinMemGiB = $_.MinMemGiB + $Pool.DAGSizeGiB
If ($AvailableMinerDevices = $SupportedMinerDevices.Where({ $_.MemoryGiB -ge $MinMemGiB })) {
diff --git a/Miners/XLArig-v5.2.4.ps1 b/Miners/XLArig-v5.2.4.ps1
index d9bf0967..dc6af744 100644
--- a/Miners/XLArig-v5.2.4.ps1
+++ b/Miners/XLArig-v5.2.4.ps1
@@ -17,8 +17,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
-Version: 6.2.22
-Version date: 2024/08/01
+Version: 6.2.23
+Version date: 2024/08/04
#>
# https://github.com/scala-network/XLArig/issues/59; Need to remove temp fix in \Includes\MinerAPIs\XMrig.psm1 when resolved
@@ -47,7 +47,7 @@ If ($Algorithms) {
$Fee = If ($Config.DisableMinerFee) { 0 } Else { 5 }
# $ExcludePools = $_.ExcludePools
- # ForEach ($Pool in $MinerPools[0][$_.Algorithm].Where({ $_.PoolPorts[0] -and $_.Name -notin $ExcludePools })) {
+ # ForEach ($Pool in $MinerPools[0][$_.Algorithm].Where({ $_.PoolPorts[0] -and $ExcludePools -notcontains $_.Name })) {
ForEach ($Pool in $MinerPools[0][$_.Algorithm]) {
[PSCustomObject]@{
diff --git a/Miners/XmRig-v6.21.3.15.ps1 b/Miners/XmRig-v6.21.3.15.ps1
index 602d7dea..ca0e2966 100644
--- a/Miners/XmRig-v6.21.3.15.ps1
+++ b/Miners/XmRig-v6.21.3.15.ps1
@@ -17,8 +17,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
-Version: 6.2.22
-Version date: 2024/08/01
+Version: 6.2.23
+Version date: 2024/08/04
#>
If (-not ($Devices = $Variables.EnabledDevices.Where({ "AMD", "CPU", "INTEL" -contains $_.Type -or $_.OpenCL.ComputeCapability -gt "5.0" }))) { Return }
@@ -190,7 +190,7 @@ If ($Algorithms) {
$Algorithms.Where({ $_.Type -eq $Type }).ForEach(
{
# $ExcludePools = $_.ExcludePools
- # ForEach ($Pool in $MinerPools[0][$_.Algorithm].Where({ $_.Name -notin $ExcludePools }) | Select-Object -Last $(If ($_.Type -eq "CPU") { 1 } Else { $MinerPools[0][$_.Algorithm].Count })) {
+ # ForEach ($Pool in $MinerPools[0][$_.Algorithm].Where({ $ExcludePools -notcontains $_.Name }) | Select-Object -Last $(If ($_.Type -eq "CPU") { 1 } Else { $MinerPools[0][$_.Algorithm].Count })) {
ForEach ($Pool in $MinerPools[0][$_.Algorithm] | Select-Object -Last $(If ($_.Type -eq "CPU") { 1 } Else { $MinerPools[0][$_.Algorithm].Count })) {
$MinMemGiB = $_.MinMemGiB + $Pool.DAGSizeGiB
@@ -200,7 +200,7 @@ If ($Algorithms) {
$Arguments = $_.Arguments
If ($_.Type -eq "CPU") { $Arguments += " --threads=$($AvailableMinerDevices.CIM.NumberOfLogicalProcessors -$($Config.CPUMiningReserveCPUcore))" }
- ElseIF ("AMD", "INTEL" -contains $_.Type) { $Arguments += " --no-cpu --opencl --opencl-platform $($AvailableMinerDevices.PlatformId) --opencl-devices=$(($AvailableMinerDevices.$DeviceEnumerator | Sort-Object -Unique).ForEach({ '{0:x}' -f $_ }) -join ',')" }
+ ElseIf ("AMD", "INTEL" -contains $_.Type) { $Arguments += " --no-cpu --opencl --opencl-platform $($AvailableMinerDevices.PlatformId) --opencl-devices=$(($AvailableMinerDevices.$DeviceEnumerator | Sort-Object -Unique).ForEach({ '{0:x}' -f $_ }) -join ',')" }
Else { $Arguments += " --no-cpu --cuda --cuda-devices=$(($AvailableMinerDevices.$DeviceEnumerator | Sort-Object -Unique).ForEach({ '{0:x}' -f $_ }) -join ',')" }
If ("Flex", "RandomXeq" -contains $_.Algorithm) { $Path = $Path -replace '\\xmrig.exe$', '\xmrig-mo.exe' } # https://github.com/RainbowMiner/RainbowMiner/issues/2800
diff --git a/Miners/XmrStak-v2.10.8.ps1 b/Miners/XmrStak-v2.10.8.ps1
index 591ff470..2ed24a92 100644
--- a/Miners/XmrStak-v2.10.8.ps1
+++ b/Miners/XmrStak-v2.10.8.ps1
@@ -17,8 +17,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
-Version: 6.2.22
-Version date: 2024/08/01
+Version: 6.2.23
+Version date: 2024/08/04
#>
If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.Type -ne "NVIDIA" -or $_.OpenCL.ComputeCapability -ge "5.0" }))) { Return }
@@ -114,7 +114,7 @@ If ($Algorithms) {
$MinerName = "$Name-$($AvailableMinerDevices.Count)x$Model-$($_.Algorithm)"
# $ExcludePools = $_.ExcludePools
- # ForEach ($Pool in $MinerPools[0][$_.Algorithm].Where({ $_.Name -notin $ExcludePools }) | Select-Object -Last $(If ($_.Type -eq "CPU") { 1 } Else { $MinerPools[0][$_.Algorithm].Count })) {
+ # ForEach ($Pool in $MinerPools[0][$_.Algorithm].Where({ $ExcludePools -notcontains $_.Name }) | Select-Object -Last $(If ($_.Type -eq "CPU") { 1 } Else { $MinerPools[0][$_.Algorithm].Count })) {
ForEach ($Pool in $MinerPools[0][$_.Algorithm] | Select-Object -Last $(If ($_.Type -eq "CPU") { 1 } Else { $MinerPools[0][$_.Algorithm].Count })) {
# Note: For fine tuning directly edit the config files in the miner binary directory
diff --git a/Miners/ZealotEnemy-v2.6.3.ps1 b/Miners/ZealotEnemy-v2.6.3.ps1
index e344466e..3c4ca43a 100644
--- a/Miners/ZealotEnemy-v2.6.3.ps1
+++ b/Miners/ZealotEnemy-v2.6.3.ps1
@@ -17,8 +17,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
-Version: 6.2.22
-Version date: 2024/08/01
+Version: 6.2.23
+Version date: 2024/08/04
#>
If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.OpenCL.ComputeCapability -ge "5.0" }))) { Return }
@@ -70,7 +70,7 @@ If ($Algorithms) {
# If ($SupportedMinerDevices = $MinerDevices.Where({ $_.Architecture -notin $ExcludeGPUarchitectures })) {
# $ExcludePools = $_.ExcludePools
- # ForEach ($Pool in $MinerPools[0][$_.Algorithm].Where({ $_.Name -notin $ExcludePools })) {
+ # ForEach ($Pool in $MinerPools[0][$_.Algorithm].Where({ $ExcludePools -notcontains $_.Name })) {
ForEach ($Pool in $MinerPools[0][$_.Algorithm]) {
$MinMemGiB = $_.MinMemGiB + $Pool.DAGSizeGiB
@@ -80,7 +80,7 @@ If ($Algorithms) {
$MinerName = "$Name-$($AvailableMinerDevices.Count)x$Model-$($Pool.AlgorithmVariant)"
$Arguments = $_.Arguments
- If ($AvailableMinerDevices.Where({ $_.MemoryGiB -le 2 })) { $Arguments = $Arguments -replace ' --intensity [0-9\.]+' }
+ If ($AvailableMinerDevices.Where({ $_.MemoryGiB -le 2 })) { $Arguments = $Arguments -replace " --intensity [0-9\.]+" }
[PSCustomObject]@{
API = "Trex"
diff --git a/Miners/lolMiner-v1.88.ps1 b/Miners/lolMiner-v1.88.ps1
index a068c4fe..8cf657e7 100644
--- a/Miners/lolMiner-v1.88.ps1
+++ b/Miners/lolMiner-v1.88.ps1
@@ -17,8 +17,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
-Version: 6.2.22
-Version date: 2024/08/01
+Version: 6.2.23
+Version date: 2024/08/04
#>
If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.Type -eq "INTEL" -or ($_.Type -eq "AMD" -and $_.Architecture -match "GCN4|RDNA[1|2|3]") -or $_.OpenCL.ComputeCapability -ge "6.0" }))) { Return }
@@ -154,8 +154,8 @@ If ($Algorithms) {
If ($SupportedMinerDevices = $MinerDevices.Where({ $_.Architecture -notmatch $ExcludeGPUarchitectures })) {
$ExcludePools = $_.ExcludePools
- ForEach ($Pool0 in $MinerPools[0][$_.Algorithms[0]].Where({ $_.Name -notin $ExcludePools[0] })) {
- ForEach ($Pool1 in $MinerPools[1][$_.Algorithms[1]].Where({ $_.Name -notin $ExcludePools[1] })) {
+ ForEach ($Pool0 in $MinerPools[0][$_.Algorithms[0]].Where({ $ExcludePools -notcontains $_.Name })) {
+ ForEach ($Pool1 in $MinerPools[1][$_.Algorithms[1]].Where({ $ExcludePools -notcontains $_.Name })) {
$MinMemGiB = $_.MinMemGiB + $Pool0.DAGSizeGiB + $Pool1.DAGSizeGiB
# Windows 10 requires more memory on some algos
diff --git a/Pools/HashCryptos.ps1 b/Pools/HashCryptos.ps1
index a6215c3f..9ab6e924 100644
--- a/Pools/HashCryptos.ps1
+++ b/Pools/HashCryptos.ps1
@@ -19,8 +19,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
File: \Pools\HashCryptos.ps1
-Version: 6.2.22
-Version date: 2024/08/01
+Version: 6.2.23
+Version date: 2024/08/04
#>
Param(
diff --git a/Pools/HiveON.ps1 b/Pools/HiveON.ps1
index 26326f64..30aad805 100644
--- a/Pools/HiveON.ps1
+++ b/Pools/HiveON.ps1
@@ -19,8 +19,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
File: \Pools\Hiveon.ps1
-Version: 6.2.22
-Version date: 2024/08/01
+Version: 6.2.23
+Version date: 2024/08/04
#>
Param(
diff --git a/Pools/MiningDutch.ps1 b/Pools/MiningDutch.ps1
index 4ee1f1f6..72df591c 100644
--- a/Pools/MiningDutch.ps1
+++ b/Pools/MiningDutch.ps1
@@ -19,8 +19,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
File: \Pools\MiningDutch.ps1
-Version: 6.2.22
-Version date: 2024/08/01
+Version: 6.2.23
+Version date: 2024/08/04
#>
Param(
diff --git a/Pools/MiningPoolHub.ps1 b/Pools/MiningPoolHub.ps1
index bec32904..d756522c 100644
--- a/Pools/MiningPoolHub.ps1
+++ b/Pools/MiningPoolHub.ps1
@@ -19,8 +19,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
File: \Pools\MiningPoolHub.ps1
-Version: 6.2.22
-Version date: 2024/08/01
+Version: 6.2.23
+Version date: 2024/08/04
#>
Param(
diff --git a/Pools/NiceHash.ps1 b/Pools/NiceHash.ps1
index ffbf8637..35b721c5 100644
--- a/Pools/NiceHash.ps1
+++ b/Pools/NiceHash.ps1
@@ -19,8 +19,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
File: \Pools\NiceHash.ps1
-Version: 6.2.22
-Version date: 2024/08/01
+Version: 6.2.23
+Version date: 2024/08/04
#>
Param(
diff --git a/Pools/ProHashing.ps1 b/Pools/ProHashing.ps1
index 4875aae3..5b88c355 100644
--- a/Pools/ProHashing.ps1
+++ b/Pools/ProHashing.ps1
@@ -19,8 +19,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
File: \Pools\ProHashing.ps1
-Version: 6.2.22
-Version date: 2024/08/01
+Version: 6.2.23
+Version date: 2024/08/04
#>
Param(
diff --git a/Pools/ZPool.ps1 b/Pools/ZPool.ps1
index d7d67bfe..1b36d3e0 100644
--- a/Pools/ZPool.ps1
+++ b/Pools/ZPool.ps1
@@ -19,8 +19,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
File: \Pools\ZPool.ps1
-Version: 6.2.22
-Version date: 2024/08/01
+Version: 6.2.23
+Version date: 2024/08/04
#>
Param(
diff --git a/Pools/ZergPool.ps1 b/Pools/ZergPool.ps1
index 4f648356..c1def07b 100644
--- a/Pools/ZergPool.ps1
+++ b/Pools/ZergPool.ps1
@@ -19,8 +19,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
File: \Pools\ZergPool.ps1
-Version: 6.2.22
-Version date: 2024/08/01
+Version: 6.2.23
+Version date: 2024/08/04
#>
Param(
diff --git a/README.md b/README.md
index 8e2a30bc..20665ec5 100644
--- a/README.md
+++ b/README.md
@@ -3,7 +3,7 @@
UG-Miner monitors mining pools in real-time in order to find the most profitable algorithm
and runs the most profitable miner.
-Updated 2024/08/01
+Updated 2024/08/04
Copyright (c) 2018-2024 UselessGuru
@@ -53,11 +53,7 @@ UG-Miner code is partly based on
(2) MiningPoolHub is no longer trustworthy.
Outstanding balances will not get paid and support will not respond. Use at your own risk!
-<<<<<<< HEAD
-**Easy configuration, easy start:**
-=======
## Easy configuration, easy start
->>>>>>> 276e906e63ab9ff43d00e598f4e210b02f8d8167
Run UG-Miner.bat
1. Edit configuration (http://localhost:3999/configedit.html)
@@ -143,33 +139,7 @@ Will mine only EVR and KIIRO
Currency list blank
Will mine anything
-<<<<<<< HEAD
-**Developer Donation**
-
- Donation fee is approx. 1% (15 minutes per day) and can be increased or decreased in the configuration editor.
- Please help support the great team behind UG-Miner by leaving mining donations turned on.
- We want to stay completely transparent on the way fees are managed in the product.
- Donation cycle occurs only once in 24hrs (or once until midnight if UG-Miner has been running less than 24hrs).
- Donation start time is randomized each day.
- It will then mine for UselessGuru for the configured duration.
-
- Example for default parameters (15 minutes):
- - UG-Miner was started at 10:00h
- - First donation cycle starts somewhen between 10:01h and 23:45h and will then donate for 15 minutes, then mine for you again until the next donation run.
- - After 00:00h the donation start time is randomized again.
- - When donation start time is reached it will then donate for 15 minutes, then mine for you again until the next donation run.
-
- The donation data is stored in '[UG-Miner directory]\Data\DonationData.json'.
- All donation time and addresses are recorded in the domation log file '[UG-Miner directory]\Log\DonateLog.json'.
-
-
-**Web & Legacy GUI**
-
- UG-Miner relies on config files. There is no need to edit bat files. Simply run UG-Miner.bat
- Set the config in the Web GUI (http://localhost:3999/configedit.html), apply & start mining.
-=======
## Web & legacy GUI
->>>>>>> 276e906e63ab9ff43d00e598f4e210b02f8d8167
UG-Miner can be controlled & configured through the Web GUI.
For most scenarios there is no need to edit configration files manually.
@@ -179,27 +149,15 @@ Some settings can be configured per [advanced pool configuration](>>>>>> 276e906e63ab9ff43d00e598f4e210b02f8d8167
Brains will still run in the background avoiding the learning phase on resume.
-<<<<<<< HEAD
-**PreRun**
-=======
BalancesTracker will still run in the background to keep the pool balances up to date.
->>>>>>> 276e906e63ab9ff43d00e598f4e210b02f8d8167
## PreRun
-<<<<<<< HEAD
-**Per pool config (Advanced, see 'Data\PoolsConfig-Template.json')**
-=======
Ability to run a batch script prior switching to a specific miner and/or algorithm.
->>>>>>> 276e906e63ab9ff43d00e598f4e210b02f8d8167
The prerun scripts can be used to apply per miner/algorithm overclocking settings via nvidiaInspector or OverdriveNTool.
@@ -227,11 +185,7 @@ A separate section can be added for each pool. If a pool is listed in this file,
the specific settings will be taken into account. If not, the built in default values will be used.
See 'Data\PoolData.json' for the basic structure of the file 'Config\PoolsConfig.json'
-<<<<<<< HEAD
-**Pool Variants**
-=======
You can set specific options per pool. For example, you can mine NiceHash on the internal wallet and other pools on a valid wallet. See 'Data\PoolsConfig-Template.json' for some pool specific configuration options.
->>>>>>> 276e906e63ab9ff43d00e598f4e210b02f8d8167
**Available options:**
@@ -250,12 +204,8 @@ You can set specific options per pool. For example, you can mine NiceHash on the
- Add an entry for the pool you want to customize
The name must be the pool base name (omit *24hrs or *Plus), e.g ZergPool (even if you have configured ZergPoolPlus in the pool list)
-<<<<<<< HEAD
-**Balances Tracking**
-=======
Note that the GUI only updates default values (valid for ALL pools unless there is pool specific configuration setting defined in 'Config\PoolConfig.json').
Any other changes need to be done manually.
->>>>>>> 276e906e63ab9ff43d00e598f4e210b02f8d8167
## Balances tracking
@@ -263,15 +213,6 @@ Displays available balances and an estimation of when the pool payment threshold
Supported pools:
-<<<<<<< HEAD
-**Experimental**
-
- More than one instance of UG-Miner can run on the same rig
- Each instance must be placed in its own directory
- Must use non-overlapping port ranges (configuration item '$APIport')
- Do not use the same miner devices in more than one instance (this will give invalid hash rate
- & power consumption readings causing incorrect best miner selection)
-=======
- HashCryptos
- Hiveon (1)
- MiningDutch
@@ -282,18 +223,13 @@ Supported pools:
- Zpool
(1) Pool does not support auto-exchange to other currencies. You need to configure a wallet address for each currency you want to mine.
->>>>>>> 276e906e63ab9ff43d00e598f4e210b02f8d8167
UG-Miner shows stats for all supported pools.
Press key 'e' in the console window to show/hide earnings.
## Miner switching log
-<<<<<<< HEAD
-**Console Display Options**
-=======
A simple miner switching log in csv format is written to '[UG-Miner directory]\Logs\SwitchingLog.csv'.
->>>>>>> 276e906e63ab9ff43d00e598f4e210b02f8d8167
## Console display options
@@ -302,9 +238,6 @@ UI style can be set to 'light' or 'full':
- Light (default)
Information about miners run in the past 24hrs, failed miners in the past 24hrs & watchdog timers will be not be shown
-<<<<<<< HEAD
-**Requirements**
-=======
- Full
Information about miners run in the past 24hrs, failed miners in the past 24hrs & watchdog timers will be shown
@@ -331,7 +264,6 @@ In the main text window (session console) the following hot keys are supported:
y: Toggle 'Currency' column visibility (currently on)
## Requirements
->>>>>>> 276e906e63ab9ff43d00e598f4e210b02f8d8167
Windows 10.x and PowerShell Version 7.x is required.
diff --git a/UG-Miner.ps1 b/UG-Miner.ps1
index 76fd01e9..effe296f 100644
--- a/UG-Miner.ps1
+++ b/UG-Miner.ps1
@@ -18,8 +18,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
File: UG-Miner.ps1
-Version: 6.2.22
-Version date: 2024/08/01
+Version: 6.2.23
+Version date: 2024/08/04
#>
using module .\Includes\Include.psm1
@@ -300,7 +300,7 @@ $Variables.Branding = [PSCustomObject]@{
BrandName = "UG-Miner"
BrandWebSite = "https://github.com/UselessGuru/UG-Miner"
ProductLabel = "UG-Miner"
- Version = [System.Version]"6.2.22"
+ Version = [System.Version]"6.2.23"
}
$WscriptShell = New-Object -ComObject Wscript.Shell
@@ -550,6 +550,7 @@ Function MainLoop {
If ($Global:CoreRunspace) {
Write-Message -Level Info "Ending cycle (System activity detected)."
Stop-Core
+ $Variables.EndCycleTime = [DateTime]::Now.ToUniversalTime()
Write-Host "System activity detected. Mining is suspended."
$Variables.Summary = "Mining is suspended until system is idle for $($Config.IdleSec) second$(If ($Config.IdleSec -ne 1) { "s" })."
Write-Message -Level Verbose $Variables.Summary
@@ -561,7 +562,6 @@ Function MainLoop {
If ($Variables.Timer) {
$Variables.Summary = "Resuming mining.
System has been idle for $($Config.IdleSec) second$(If ($Config.IdleSec -ne 1) { "s" })."
Write-Message -Level Verbose ($Variables.Summary -replace "
", " ")
- Write-Host ($Variables.Summary -replace "
", " ")
$LegacyGUIminingSummaryLabel.Text = ($Variables.Summary -replace "
", " ")
}
If ($LegacyGUIform) { Update-GUIstatus }
@@ -755,16 +755,16 @@ Function MainLoop {
Write-Host
Write-Host "a: Toggle '" -NoNewline; Write-Host "A" -ForegroundColor Cyan -NoNewline; Write-Host "ccuracy' column visibility (currently " -NoNewline; If ($Variables.ShowAccuracy) { Write-Host "on" -ForegroundColor Green -NoNewline } Else { Write-Host "off" -ForegroundColor Red -NoNewline }; Write-Host ")"
If ($Variables.CalculatePowerCost) {
- Write-Host "c: Toggle 'Power" -NoNewline; Write-Host "C" -ForegroundColor Cyan -NoNewline; Write-Host "ost' column visibility (currently " -NoNewline; If ($Variables.ShowPowerCost) { Write-Host "on" -ForegroundColor Green -NoNewline } Else { Write-Host "off" -ForegroundColor Red -NoNewline }; Write-Host ")"
+ Write-Host "c: Toggle 'Power " -NoNewline; Write-Host "c" -ForegroundColor Cyan -NoNewline; Write-Host "ost' column visibility (currently " -NoNewline; If ($Variables.ShowPowerCost) { Write-Host "on" -ForegroundColor Green -NoNewline } Else { Write-Host "off" -ForegroundColor Red -NoNewline }; Write-Host ")"
}
Write-Host "e: Toggle '" -NoNewline; Write-Host "E" -ForegroundColor Cyan -NoNewline; Write-Host "arnings' column visibility (currently " -NoNewline; If ($Variables.ShowEarning) { Write-Host "on" -ForegroundColor Green -NoNewline } Else { Write-Host "off" -ForegroundColor Red -NoNewline }; Write-Host ")"
Write-Host "f: Toggle Pool '" -NoNewline; Write-Host "F" -ForegroundColor Cyan -NoNewline; Write-Host "ees' column visibility (currently " -NoNewline; If ($Variables.ShowPoolFee) { Write-Host "on" -ForegroundColor Green -NoNewline } Else { Write-Host "off" -ForegroundColor Red -NoNewline }; Write-Host ")"
- Write-Host "i: Toggle 'EarningB" -NoNewline; Write-Host "i" -ForegroundColor Cyan -NoNewline; Write-Host "as' column visibility (currently " -NoNewline; If ($Variables.ShowEarningBias) { Write-Host "on" -ForegroundColor Green -NoNewline } Else { Write-Host "off" -ForegroundColor Red -NoNewline }; Write-Host ")"
- Write-Host "m: Toggle " -NoNewline; Write-Host "M" -ForegroundColor Cyan -NoNewline; Write-Host "iner 'Fees' column visibility (currently " -NoNewline; If ($Variables.ShowMinerFee) { Write-Host "on" -ForegroundColor Green -NoNewline } Else { Write-Host "off" -ForegroundColor Red -NoNewline }; Write-Host ")"
+ Write-Host "i: Toggle 'Earning b" -NoNewline; Write-Host "i" -ForegroundColor Cyan -NoNewline; Write-Host "as' column visibility (currently " -NoNewline; If ($Variables.ShowEarningBias) { Write-Host "on" -ForegroundColor Green -NoNewline } Else { Write-Host "off" -ForegroundColor Red -NoNewline }; Write-Host ")"
+ Write-Host "m: Toggle " -NoNewline; Write-Host "M" -ForegroundColor Cyan -NoNewline; Write-Host "iner 'fees' column visibility (currently " -NoNewline; If ($Variables.ShowMinerFee) { Write-Host "on" -ForegroundColor Green -NoNewline } Else { Write-Host "off" -ForegroundColor Red -NoNewline }; Write-Host ")"
Write-Host "n: Toggle 'Coin" -NoNewline; Write-Host "N" -ForegroundColor Cyan -NoNewline; Write-Host "ame' column visibility (currently " -NoNewline; If ($Variables.ShowCoinName) { Write-Host "on" -ForegroundColor Green -NoNewline } Else { Write-Host "off" -ForegroundColor Red -NoNewline }; Write-Host ")"
Write-Host "p: Toggle '" -NoNewline; Write-Host "P" -ForegroundColor Cyan -NoNewline; Write-Host "ool' column visibility (currently " -NoNewline; If ($Variables.ShowPool) { Write-Host "on" -ForegroundColor Green -NoNewline } Else { Write-Host "off" -ForegroundColor Red -NoNewline }; Write-Host ")"
If ($Variables.CalculatePowerCost) {
- Write-Host "r: Toggle 'P" -NoNewline; Write-Host "r" -ForegroundColor Cyan -NoNewline; Write-Host "ofitBias' column visibility (currently " -NoNewline; If ($Variables.ShowProfitBias) { Write-Host "on" -ForegroundColor Green -NoNewline } Else { Write-Host "off" -ForegroundColor Red -NoNewline }; Write-Host ")"
+ Write-Host "r: Toggle 'P" -NoNewline; Write-Host "r" -ForegroundColor Cyan -NoNewline; Write-Host "ofit bias' column visibility (currently " -NoNewline; If ($Variables.ShowProfitBias) { Write-Host "on" -ForegroundColor Green -NoNewline } Else { Write-Host "off" -ForegroundColor Red -NoNewline }; Write-Host ")"
}
If ($Variables.CalculatePowerCost) {
Write-Host "t: Toggle 'Profi" -NoNewline; Write-Host "t" -ForegroundColor Cyan -NoNewline; Write-Host "' column visibility (currently " -NoNewline; If ($Variables.ShowProfit) { Write-Host "on" -ForegroundColor Green -NoNewline } Else { Write-Host "off" -ForegroundColor Red -NoNewline }; Write-Host ")"
@@ -862,11 +862,11 @@ Function MainLoop {
If ($LegacyGUIform) {
$LegacyGUIform.Text = $host.UI.RawUI.WindowTitle
- If ($Variables.BenchmarkingOrMeasuringMiners -or -not $Variables.MinersBest) { $LegacyGUIminingSummaryLabel.ForeColor = [System.Drawing.Color]::Black }
- ElseIf ($Variables.MiningProfit -ge 0) { $LegacyGUIminingSummaryLabel.ForeColor = [System.Drawing.Color]::Green }
- ElseIf ($Variables.MiningProfit -lt 0) { $LegacyGUIminingSummaryLabel.ForeColor = [System.Drawing.Color]::Red }
-
If ($Variables.MyIP) {
+ If ($Variables.BenchmarkingOrMeasuringMiners -or -not $Variables.MinersBest) { $LegacyGUIminingSummaryLabel.ForeColor = [System.Drawing.Color]::Black }
+ ElseIf ($Variables.MiningProfit -ge 0) { $LegacyGUIminingSummaryLabel.ForeColor = [System.Drawing.Color]::Green }
+ ElseIf ($Variables.MiningProfit -lt 0) { $LegacyGUIminingSummaryLabel.ForeColor = [System.Drawing.Color]::Red }
+
$LegacyGUIminingSummaryLabel.Text = ""
$LegacyGUIminingSummaryLabel.SendToBack()
(($Variables.Summary -replace "Power Cost", "
Power Cost" -replace " / ", "/" -replace " ", " " -replace " ", " ") -split "
").ForEach({ $LegacyGUIminingSummaryLabel.Text += "`r`n$_" })
@@ -919,18 +919,18 @@ Function MainLoop {
[System.Collections.ArrayList]$MinerTable = @(
@{ Label = "Miner"; Expression = { $_.Name } }
If ($Variables.ShowMinerFee -and ($Variables.Miners.Workers.Fee)) { @{ Label = "Fee"; Expression = { $_.Workers.Fee.ForEach({ "{0:P2}" -f [Double]$_ }) }; Align = "right" } }
- If ($Variables.ShowEarningBias) { @{ Label = "EarningBias"; Expression = { If ([Double]::IsNaN($_.Earning_Bias)) { "n/a" } Else { "{0:n$($Config.DecimalsMax)}" -f ($_.Earning_Bias * $Variables.Rates.($Config.PayoutCurrency).($Config.MainCurrency)) } }; Align = "right" } }
+ If ($Variables.ShowEarningBias) { @{ Label = "Earning bias"; Expression = { If ([Double]::IsNaN($_.Earning_Bias)) { "n/a" } Else { "{0:n$($Config.DecimalsMax)}" -f ($_.Earning_Bias * $Variables.Rates.($Config.PayoutCurrency).($Config.MainCurrency)) } }; Align = "right" } }
If ($Variables.ShowEarning) { @{ Label = "Earning"; Expression = { If ([Double]::IsNaN($_.Earning)) { "n/a" } Else { "{0:n$($Config.DecimalsMax)}" -f ($_.Earning * $Variables.Rates.($Config.PayoutCurrency).($Config.MainCurrency)) } }; Align = "right" } }
- If ($Variables.ShowPowerCost -and $Config.CalculatePowerCost -and $Variables.MiningPowerCost) { @{ Label = "PowerCost"; Expression = { If ([Double]::IsNaN($_.PowerConsumption)) { "n/a" } Else { "-{0:n$($Config.DecimalsMax)}" -f ($_.PowerCost * $Variables.Rates.($Config.PayoutCurrency).($Config.MainCurrency)) } }; Align = "right" } }
- If ($Variables.MiningPowerCost -and $Variables.ShowProfitBias) { @{ Label = "ProfitBias"; Expression = { If ([Double]::IsNaN($_.Profit_Bias)) { "n/a" } Else { "{0:n$($Config.DecimalsMax)}" -f ($_.Profit_Bias * $Variables.Rates.($Config.PayoutCurrency).($Config.MainCurrency)) } }; Align = "right" } }
+ If ($Variables.ShowPowerCost -and $Config.CalculatePowerCost -and $Variables.MiningPowerCost) { @{ Label = "Power cost"; Expression = { If ([Double]::IsNaN($_.PowerConsumption)) { "n/a" } Else { "-{0:n$($Config.DecimalsMax)}" -f ($_.PowerCost * $Variables.Rates.($Config.PayoutCurrency).($Config.MainCurrency)) } }; Align = "right" } }
+ If ($Variables.MiningPowerCost -and $Variables.ShowProfitBias) { @{ Label = "Profit bias"; Expression = { If ([Double]::IsNaN($_.Profit_Bias)) { "n/a" } Else { "{0:n$($Config.DecimalsMax)}" -f ($_.Profit_Bias * $Variables.Rates.($Config.PayoutCurrency).($Config.MainCurrency)) } }; Align = "right" } }
If ($Variables.MiningPowerCost -and $Variables.ShowProfit) { @{ Label = "Profit"; Expression = { If ([Double]::IsNaN($_.Profit)) { "n/a" } Else { "{0:n$($Config.DecimalsMax)}" -f ($_.Profit * $Variables.Rates.($Config.PayoutCurrency).($Config.MainCurrency)) } }; Align = "right" } }
If ($Variables.ShowPowerConsumption -and $Config.CalculatePowerCost) { @{ Label = "Power consumption"; Expression = { If ($_.MeasurePowerConsumption) { If ($_.Status -eq "Running") { "Measuring..." } Else { "Unmeasured" } } Else { If ([Double]::IsNaN($_.PowerConsumption)) { "n/a" } Else { "$($_.PowerConsumption.ToString("N2")) W" } } }; Align = "right" } }
If ($Variables.ShowAccuracy) { @{ Label = "Accuracy"; Expression = { $_.Workers.Pool.Accuracy.ForEach({ "{0:P0}" -f [Double]$_ }) }; Align = "right" } }
- @{ Label = "Algorithm"; Expression = { $_.Workers.Pool.Algorithm -join " & " } }
- If ($Variables.ShowPool) { @{ Label = "Pool"; Expression = { $_.Workers.Pool.Name -join " & " } } }
+ @{ Label = "Algorithm"; Expression = { $_.Workers.Pool.Algorithm } }
+ If ($Variables.ShowPool) { @{ Label = "Pool"; Expression = { $_.Workers.Pool.Name } } }
If ($Variables.ShowPoolFee -and ($Variables.Miners.Workers.Pool.Fee)) { @{ Label = "Fee"; Expression = { $_.Workers.Pool.Fee.ForEach({ "{0:P2}" -f [Double]$_ }) }; Align = "right" } }
@{ Label = "Hashrate"; Expression = { If ($_.Benchmark) { If ($_.Status -eq "Running") { "Benchmarking..." } Else { "Benchmark pending" } } Else { $_.Workers.ForEach({ $_.Hashrate | ConvertTo-Hash }) } }; Align = "right" }
- If ($Variables.ShowUser) { @{ Label = "User"; Expression = { $_.Workers.Pool.User -join " & " } } }
+ If ($Variables.ShowUser) { @{ Label = "User"; Expression = { $_.Workers.Pool.User } } }
If ($Variables.ShowCurrency) { @{ Label = "Currency"; Expression = { $_.Workers.Pool.Currency } } }
If ($Variables.ShowCoinName) { @{ Label = "CoinName"; Expression = { $_.Workers.Pool.CoinName } } }
)
diff --git a/Version.txt b/Version.txt
index 80f77730..ebab1156 100644
--- a/Version.txt
+++ b/Version.txt
@@ -1,6 +1,6 @@
{
"Product": "UG-Miner",
- "Version": "6.2.22",
+ "Version": "6.2.23",
"AutoUpdate": true,
"Uri": "https://github.com/UselessGuru/UG-Miner/archive/refs/heads/master.zip",
"Message": "https://github.com/UselessGuru/UG-Miner/releases"
diff --git a/Web/scripts/demo.ps1 b/Web/scripts/demo.ps1
index 025a3718..15f1413d 100644
--- a/Web/scripts/demo.ps1
+++ b/Web/scripts/demo.ps1
@@ -18,8 +18,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
File: demo.psm1
-Version: 6.2.22
-Version date: 2024/08/01
+Version: 6.2.23
+Version date: 2024/08/04
#>
# Try running this script as: http://localhost:3999/scripts/demo.ps1?message=Hello%20World!