diff --git a/Balances/HashCryptos.ps1 b/Balances/HashCryptos.ps1
index 3d3cca8a..6b137140 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.3.3
-Version date: 2024/09/11
+Version: 6.3.4
+Version date: 2024/09/13
#>
$Name = [String](Get-Item $MyInvocation.MyCommand.Path).BaseName
diff --git a/Balances/HiveON.ps1 b/Balances/HiveON.ps1
index cf65db32..c0ee9069 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.3.3
-Version date: 2024/09/11
+Version: 6.3.4
+Version date: 2024/09/13
#>
$Name = [String](Get-Item $MyInvocation.MyCommand.Path).BaseName
diff --git a/Balances/MiningDutch.ps1 b/Balances/MiningDutch.ps1
index 25c07973..a77ecf3b 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.3.3
-Version date: 2024/09/11
+Version: 6.3.4
+Version date: 2024/09/13
#>
$Name = [String](Get-Item $MyInvocation.MyCommand.Path).BaseName
diff --git a/Balances/NiceHash External.ps1 b/Balances/NiceHash External.ps1
index bb22cf41..26df7abc 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.3.3
-Version date: 2024/09/11
+Version: 6.3.4
+Version date: 2024/09/13
#>
$Name = [String](Get-Item $MyInvocation.MyCommand.Path).BaseName
diff --git a/Balances/NiceHash Internal.ps1 b/Balances/NiceHash Internal.ps1
index 152a18b4..8535ca8f 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.3.3
-Version date: 2024/09/11
+Version: 6.3.4
+Version date: 2024/09/13
#>
$Name = [String](Get-Item $MyInvocation.MyCommand.Path).BaseName
diff --git a/Balances/ProHashing.ps1 b/Balances/ProHashing.ps1
index d6c5a83d..480010b0 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.3.3
-Version date: 2024/09/11
+Version: 6.3.4
+Version date: 2024/09/13
#>
$Name = [String](Get-Item $MyInvocation.MyCommand.Path).BaseName
diff --git a/Balances/ZergPool.ps1 b/Balances/ZergPool.ps1
index 442c5f47..b34529de 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.3.3
-Version date: 2024/09/11
+Version: 6.3.4
+Version date: 2024/09/13
#>
$Name = [String](Get-Item $MyInvocation.MyCommand.Path).BaseName
diff --git a/Balances/Zpool.ps1 b/Balances/Zpool.ps1
index 47c416bb..5818112d 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.3.3
-Version date: 2024/09/11
+Version: 6.3.4
+Version date: 2024/09/13
#>
$Name = [String](Get-Item $MyInvocation.MyCommand.Path).BaseName
diff --git a/Brains/HashCryptos.ps1 b/Brains/HashCryptos.ps1
index d5e96519..d349909c 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.3.3
-Version date: 2024/09/11
+Version: 6.3.4
+Version date: 2024/09/13
#>
using module ..\Includes\Include.psm1
diff --git a/Brains/MiningDutch.ps1 b/Brains/MiningDutch.ps1
index 96842651..684fa7c6 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.3.3
-Version date: 2024/09/11
+Version: 6.3.4
+Version date: 2024/09/13
#>
using module ..\Includes\Include.psm1
diff --git a/Brains/ProHashing.ps1 b/Brains/ProHashing.ps1
index 1e9e663f..87c2c0bb 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.3.3
-Version date: 2024/09/11
+Version: 6.3.4
+Version date: 2024/09/13
#>
using module ..\Includes\Include.psm1
diff --git a/Brains/ZPool.ps1 b/Brains/ZPool.ps1
index 70edd009..7a4dec2c 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.3.3
-Version date: 2024/09/11
+Version: 6.3.4
+Version date: 2024/09/13
#>
using module ..\Includes\Include.psm1
diff --git a/Brains/ZergPool.ps1 b/Brains/ZergPool.ps1
index a326200e..7df2e121 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.3.3
-Version date: 2024/09/11
+Version: 6.3.4
+Version date: 2024/09/13
#>
using module ..\Includes\Include.psm1
diff --git a/Changelog.txt b/Changelog.txt
index 1f55062a..d84a2774 100644
--- a/Changelog.txt
+++ b/Changelog.txt
@@ -4,14 +4,48 @@ Known issues:
-> It is recommended to set it to 'Windows Console Host'
+Changelog UG-Miner 6.3.4 2024/09/13
+===================================
+
+Changes:
+- Legacy GUI: Use --P instead of -- button to suspend core (same as in console window)
+
+Improvements:
+- Web GUI / Miners tables: Optimize colum width handling
+- Core: Use 'Close-CoreRunspace' instead of 'Stop-Core' on error in 'Core.ps1'
+
+Miner changes:
+- lolMiner-v1.89
+
+
+Changelog UG-Miner 6.3.3 2024/09/11
+===================================
+
+Enhancement:
+- Legacy GUI: -- button suspends core (same --P in console window)
+
+Fixes:
+- Core: Benchmarking or power usage measuring not stopping on time when no valid samples are found
+- Core: Watchdog not suspending algorithm@pool
+- Core: Watchdog suspending wrong miner
+
+Improvements:
+- Minor code optimizations
+
+Miner updates:
+- Rigel-v1.19.0
+- SRBMinerMulti-v2.6.4
+
+
Changelog UG-Miner 6.3.2 2024/09/09
===================================
Changes:
-- Keep miners when paused
+- Keep miners when mining is paused
Enhancements:
- Core / Includes.psm1: Function 'Update-DAGdata' can now handle TLS (ProgPowTelestai) data
+- Core: Add support for 'HeavyHashKarlsenV2' & 'HeavyHashPyrinV2' algorithms
Fixes:
- Legacy GUI: Miners table not getting cleared when no miners available
diff --git a/Config/Config.json b/Config/Config.json
new file mode 100644
index 00000000..905d14bb
--- /dev/null
+++ b/Config/Config.json
@@ -0,0 +1,163 @@
+// This file was generated by UG-Miner
+// UG-Miner will automatically add / convert / rename / update new settings when updating to a new version
+{
+ "Algorithm": [],
+ "APILogfile": "",
+ "APIPort": 3999,
+ "AutoReboot": true,
+ "AutoUpdate": true,
+ "AutoUpdateCheckInterval": 1,
+ "BackupOnAutoUpdate": true,
+ "BadShareRatioThreshold": 0.05,
+ "BalancesKeepAlive": true,
+ "BalancesShowAverages": true,
+ "BalancesShowInAllCurrencies": false,
+ "BalancesShowInFIATcurrency": true,
+ "BalancesShowSums": false,
+ "BalancesTrackerExcludePools": [
+ "MiningPoolHub"
+ ],
+ "BalancesTrackerLog": false,
+ "BalancesTrackerPollInterval": 0,
+ "BenchmarkAllPoolAlgorithmCombinations": true,
+ "CalculatePowerCost": true,
+ "ConfigFileVersion": "6.3.4",
+ "CPUMinerProcessPriority": -2,
+ "CPUMiningReserveCPUcore": 1,
+ "CryptoCompareAPIKeyParam": "af9b92255132dac6d1560c6eb1e04067d9fc0fb4c6630df00fb1d055bf858352",
+ "Currency": [],
+ "DecimalsMax": 8,
+ "Delay": 0,
+ "DisableCpuMiningOnBattery": false,
+ "DisableDualAlgoMining": false,
+ "DisableMinerFee": true,
+ "DisableMinersWithFee": false,
+ "DisableSingleAlgoMining": false,
+ "Donation": 2,
+ "DryRun": true,
+ "EarningsAdjustmentFactor": 0.8,
+ "ExcludeDeviceName": [],
+ "ExcludeMinerName": [],
+ "ExtraCurrencies": [
+ "ETH",
+ "EUR",
+ "THB",
+ "USD"
+ ],
+ "FIATcurrency": "CHF",
+ "GPUMinerProcessPriority": -1,
+ "IdleDetection": false,
+ "IdleSec": 5,
+ "IgnoreMinerFee": false,
+ "IgnorePoolFee": false,
+ "IgnorePowerCost": true,
+ "Interval": 120,
+ "LegacyGUI": true,
+ "LegacyGUIStartMinimized": false,
+ "LogBalanceAPIResponse": false,
+ "LogToFile": [
+ "Error",
+ "Info",
+ "Verbose",
+ "Warn"
+ ],
+ "LogToScreen": [
+ "Error",
+ "Info",
+ "Verbose",
+ "Warn"
+ ],
+ "LogViewerConfig": ".\\Utils\\UG-Miner_LogReader.xml",
+ "LogViewerExe": ".\\Utils\\SnakeTail.exe",
+ "MinAccuracy": 0,
+ "MinCycle": 3,
+ "MinDataSample": 20,
+ "MinerSet": 3,
+ "MinerSwitchingThreshold": 2,
+ "MinerUseBestPoolsOnly": false,
+ "MinerWindowStyle": "minimized",
+ "MinerWindowStyleNormalWhenBenchmarking": false,
+ "MiningDutchAPIKey": "7c5ea2d2e997f5094a55969d3a855c4169b46d5eee6065d4fa9251e026980714",
+ "MiningDutchUserName": "UselessGuru",
+ "MiningPoolHubAPIKey": "28328accdd4306c631a881bd8130f0d258a94b0e33569e0eef7e83773d018c98",
+ "MiningPoolHubUserName": "UselessGuru",
+ "MinWorker": 0,
+ "NiceHashAPIKey": "0dfa9c5b-12f9-4f62-9152-41d6a517de00",
+ "NiceHashAPISecret": "15a4618a-1f3a-4b96-924a-48845f435d98f4f28ac4-a51b-4de0-bf8d-584929764dd5",
+ "NiceHashOrganizationId": "f48afaf4-fc54-4645-af2d-56334a48aebb",
+ "NiceHashWallet": "33hZYX8iFg5zm9E3geqrNgeP6TMzszZk5R",
+ "NiceHashWalletIsInternal": true,
+ "OpenFirewallPorts": true,
+ "PayoutCurrency": "BTC",
+ "PoolAllow0Hashrate": true,
+ "PoolAPIallowedFailureCount": 3,
+ "PoolAPIretryInterval": 3,
+ "PoolAPItimeout": 5,
+ "PoolName": [
+ "HashCryptosPlus",
+ "Hiveon",
+ "MiningDutchPlus",
+ "MiningPoolHub",
+ "NiceHash",
+ "ProHashingPlus",
+ "ZergPoolPlus",
+ "ZPoolPlus"
+ ],
+ "PoolsConfigFile": ".\\Config\\PoolsConfig.json",
+ "PoolTimeout": 30,
+ "PowerConsumption": {
+ "GPU#05": 20
+ },
+ "PowerConsumptionIdleSystemW": 120,
+ "PowerPricekWh": {
+ "00:00": 0.4
+ },
+ "ProfitabilityThreshold": -20,
+ "ProHashingAPIKey": "8ea6a00dea6945172167708c9784b8deead1da2f5e543ef312bfc7ed1073fe4a",
+ "ProHashingMiningMode": "PPLNS",
+ "ProHashingUserName": "UselessGuru",
+ "Proxy": "",
+ "Region": "Europe",
+ "ReportToServer": false,
+ "ShowAccuracy": true,
+ "ShowAllMiners": false,
+ "ShowChangeLog": true,
+ "ShowCoinName": true,
+ "ShowConsole": true,
+ "ShowCurrency": true,
+ "ShowEarning": false,
+ "ShowEarningBias": true,
+ "ShowMinerFee": true,
+ "ShowPool": true,
+ "ShowPoolBalances": false,
+ "ShowPoolFee": true,
+ "ShowPowerConsumption": true,
+ "ShowPowerCost": true,
+ "ShowProfit": false,
+ "ShowProfitBias": true,
+ "ShowShares": true,
+ "ShowUser": true,
+ "ShowWorkerStatus": false,
+ "SSL": "Prefer",
+ "SSLallowSelfSignedCertificate": true,
+ "StartupMode": "Running",
+ "SubtractBadShares": true,
+ "SyncWindow": 3,
+ "Transcript": false,
+ "UIStyle": "light",
+ "UnrealMinerEarningFactor": 1,
+ "UnrealPoolPriceFactor": 5,
+ "UseAnycast": true,
+ "UseColorForMinerStatus": true,
+ "UsemBTC": true,
+ "UseMinerTweaks": false,
+ "Wallets": {
+ "BTC": "1GPSq8txFnyrYdXL8t6S94mYdF8cGqVQJF",
+ "ETC": "0x7CF99ec9029A98AFd385f106A93977D8105Fec0f",
+ "ETH": "0x92e6F22C1493289e6AD2768E1F502Fc5b414a287"
+ },
+ "Watchdog": true,
+ "WatchdogCount": 2,
+ "WebGUI": true,
+ "WorkerName": "Blackbox"
+}
diff --git a/Config/Config.json_2024-09-08_10-01-01.backup b/Config/Config.json_2024-09-08_10-01-01.backup
new file mode 100644
index 00000000..7145be38
--- /dev/null
+++ b/Config/Config.json_2024-09-08_10-01-01.backup
@@ -0,0 +1,165 @@
+// This file was generated by UG-Miner
+// UG-Miner will automatically add / convert / rename / update new settings when updating to a new version
+{
+ "Algorithm": [],
+ "APILogfile": "",
+ "APIPort": 3999,
+ "AutoReboot": true,
+ "AutoUpdate": true,
+ "AutoUpdateCheckInterval": 1,
+ "BackupOnAutoUpdate": true,
+ "BadShareRatioThreshold": 0.05,
+ "BalancesKeepAlive": true,
+ "BalancesShowAverages": true,
+ "BalancesShowInAllCurrencies": false,
+ "BalancesShowInFIATcurrency": true,
+ "BalancesShowSums": false,
+ "BalancesTrackerExcludePools": [
+ "MiningPoolHub"
+ ],
+ "BalancesTrackerLog": false,
+ "BalancesTrackerPollInterval": 10,
+ "BenchmarkAllPoolAlgorithmCombinations": true,
+ "CalculatePowerCost": true,
+ "ConfigFileVersion": "6.3.2",
+ "CPUMinerProcessPriority": -2,
+ "CPUMiningReserveCPUcore": 1,
+ "CryptoCompareAPIKeyParam": "af9b92255132dac6d1560c6eb1e04067d9fc0fb4c6630df00fb1d055bf858352",
+ "Currency": [],
+ "DecimalsMax": 8,
+ "Delay": 0,
+ "DisableCpuMiningOnBattery": false,
+ "DisableDualAlgoMining": false,
+ "DisableMinerFee": true,
+ "DisableMinersWithFee": false,
+ "DisableSingleAlgoMining": false,
+ "Donation": 2,
+ "DryRun": true,
+ "EarningsAdjustmentFactor": 0.8,
+ "ExcludeDeviceName": [],
+ "ExcludeMinerName": [
+ "TeamBlackMiner"
+ ],
+ "ExtraCurrencies": [
+ "ETH",
+ "EUR",
+ "THB",
+ "USD"
+ ],
+ "FIATcurrency": "CHF",
+ "GPUMinerProcessPriority": -1,
+ "IdleDetection": false,
+ "IdleSec": 5,
+ "IgnoreMinerFee": false,
+ "IgnorePoolFee": false,
+ "IgnorePowerCost": true,
+ "Interval": 120,
+ "LegacyGUI": true,
+ "LegacyGUIStartMinimized": false,
+ "LogBalanceAPIResponse": false,
+ "LogToFile": [
+ "Error",
+ "Info",
+ "Verbose",
+ "Warn"
+ ],
+ "LogToScreen": [
+ "Error",
+ "Info",
+ "Verbose",
+ "Warn"
+ ],
+ "LogViewerConfig": ".\\Utils\\UG-Miner_LogReader.xml",
+ "LogViewerExe": ".\\Utils\\SnakeTail.exe",
+ "MinAccuracy": 0,
+ "MinCycle": 3,
+ "MinDataSample": 20,
+ "MinerSet": 3,
+ "MinerSwitchingThreshold": 2,
+ "MinerUseBestPoolsOnly": false,
+ "MinerWindowStyle": "minimized",
+ "MinerWindowStyleNormalWhenBenchmarking": false,
+ "MiningDutchAPIKey": "7c5ea2d2e997f5094a55969d3a855c4169b46d5eee6065d4fa9251e026980714",
+ "MiningDutchUserName": "UselessGuru",
+ "MiningPoolHubAPIKey": "28328accdd4306c631a881bd8130f0d258a94b0e33569e0eef7e83773d018c98",
+ "MiningPoolHubUserName": "UselessGuru",
+ "MinWorker": 0,
+ "NiceHashAPIKey": "0dfa9c5b-12f9-4f62-9152-41d6a517de00",
+ "NiceHashAPISecret": "15a4618a-1f3a-4b96-924a-48845f435d98f4f28ac4-a51b-4de0-bf8d-584929764dd5",
+ "NiceHashOrganizationId": "f48afaf4-fc54-4645-af2d-56334a48aebb",
+ "NiceHashWallet": "33hZYX8iFg5zm9E3geqrNgeP6TMzszZk5R",
+ "NiceHashWalletIsInternal": true,
+ "OpenFirewallPorts": true,
+ "PayoutCurrency": "BTC",
+ "PoolAllow0Hashrate": false,
+ "PoolAPIallowedFailureCount": 3,
+ "PoolAPIretryInterval": 3,
+ "PoolAPItimeout": 5,
+ "PoolName": [
+ "HashCryptosPlus",
+ "Hiveon",
+ "MiningDutchPlus",
+ "MiningPoolHub",
+ "NiceHash",
+ "ProHashingPlus",
+ "ZergPoolPlus",
+ "ZPoolPlus"
+ ],
+ "PoolsConfigFile": ".\\Config\\PoolsConfig.json",
+ "PoolTimeout": 30,
+ "PowerConsumption": {
+ "GPU#05": 20
+ },
+ "PowerConsumptionIdleSystemW": 120,
+ "PowerPricekWh": {
+ "00:00": 0.4
+ },
+ "ProfitabilityThreshold": -20,
+ "ProHashingAPIKey": "8ea6a00dea6945172167708c9784b8deead1da2f5e543ef312bfc7ed1073fe4a",
+ "ProHashingMiningMode": "PPLNS",
+ "ProHashingUserName": "UselessGuru",
+ "Proxy": "",
+ "Region": "Europe",
+ "ReportToServer": false,
+ "ShowAccuracy": true,
+ "ShowAllMiners": false,
+ "ShowChangeLog": true,
+ "ShowCoinName": true,
+ "ShowConsole": true,
+ "ShowCurrency": true,
+ "ShowEarning": false,
+ "ShowEarningBias": true,
+ "ShowMinerFee": true,
+ "ShowPool": true,
+ "ShowPoolBalances": false,
+ "ShowPoolFee": true,
+ "ShowPowerConsumption": true,
+ "ShowPowerCost": true,
+ "ShowProfit": false,
+ "ShowProfitBias": true,
+ "ShowShares": true,
+ "ShowUser": true,
+ "ShowWorkerStatus": false,
+ "SSL": "Prefer",
+ "SSLallowSelfSignedCertificate": true,
+ "StartupMode": "Running",
+ "SubtractBadShares": true,
+ "SyncWindow": 3,
+ "Transcript": false,
+ "UIStyle": "light",
+ "UnrealMinerEarningFactor": 1,
+ "UnrealPoolPriceFactor": 5,
+ "UseAnycast": true,
+ "UseColorForMinerStatus": true,
+ "UsemBTC": true,
+ "UseMinerTweaks": false,
+ "Wallets": {
+ "BTC": "1GPSq8txFnyrYdXL8t6S94mYdF8cGqVQJF",
+ "ETC": "0x7CF99ec9029A98AFd385f106A93977D8105Fec0f",
+ "ETH": "0x92e6F22C1493289e6AD2768E1F502Fc5b414a287"
+ },
+ "Watchdog": false,
+ "WatchdogCount": 2,
+ "WebGUI": true,
+ "WorkerName": "Blackbox"
+}
diff --git a/Config/Config.json_2024-09-08_15-55-17.backup b/Config/Config.json_2024-09-08_15-55-17.backup
new file mode 100644
index 00000000..cddd7c53
--- /dev/null
+++ b/Config/Config.json_2024-09-08_15-55-17.backup
@@ -0,0 +1,163 @@
+// This file was generated by UG-Miner
+// UG-Miner will automatically add / convert / rename / update new settings when updating to a new version
+{
+ "Algorithm": [],
+ "APILogfile": "",
+ "APIPort": 3999,
+ "AutoReboot": true,
+ "AutoUpdate": true,
+ "AutoUpdateCheckInterval": 1,
+ "BackupOnAutoUpdate": true,
+ "BadShareRatioThreshold": 0.05,
+ "BalancesKeepAlive": true,
+ "BalancesShowAverages": true,
+ "BalancesShowInAllCurrencies": false,
+ "BalancesShowInFIATcurrency": true,
+ "BalancesShowSums": false,
+ "BalancesTrackerExcludePools": [
+ "MiningPoolHub"
+ ],
+ "BalancesTrackerLog": false,
+ "BalancesTrackerPollInterval": 10,
+ "BenchmarkAllPoolAlgorithmCombinations": true,
+ "CalculatePowerCost": true,
+ "ConfigFileVersion": "6.3.2",
+ "CPUMinerProcessPriority": -2,
+ "CPUMiningReserveCPUcore": 1,
+ "CryptoCompareAPIKeyParam": "af9b92255132dac6d1560c6eb1e04067d9fc0fb4c6630df00fb1d055bf858352",
+ "Currency": [],
+ "DecimalsMax": 8,
+ "Delay": 0,
+ "DisableCpuMiningOnBattery": false,
+ "DisableDualAlgoMining": false,
+ "DisableMinerFee": true,
+ "DisableMinersWithFee": false,
+ "DisableSingleAlgoMining": false,
+ "Donation": 2,
+ "DryRun": true,
+ "EarningsAdjustmentFactor": 0.8,
+ "ExcludeDeviceName": [],
+ "ExcludeMinerName": [],
+ "ExtraCurrencies": [
+ "ETH",
+ "EUR",
+ "THB",
+ "USD"
+ ],
+ "FIATcurrency": "CHF",
+ "GPUMinerProcessPriority": -1,
+ "IdleDetection": false,
+ "IdleSec": 5,
+ "IgnoreMinerFee": false,
+ "IgnorePoolFee": false,
+ "IgnorePowerCost": true,
+ "Interval": 120,
+ "LegacyGUI": true,
+ "LegacyGUIStartMinimized": false,
+ "LogBalanceAPIResponse": false,
+ "LogToFile": [
+ "Error",
+ "Info",
+ "Verbose",
+ "Warn"
+ ],
+ "LogToScreen": [
+ "Error",
+ "Info",
+ "Verbose",
+ "Warn"
+ ],
+ "LogViewerConfig": ".\\Utils\\UG-Miner_LogReader.xml",
+ "LogViewerExe": ".\\Utils\\SnakeTail.exe",
+ "MinAccuracy": 0,
+ "MinCycle": 3,
+ "MinDataSample": 20,
+ "MinerSet": 3,
+ "MinerSwitchingThreshold": 2,
+ "MinerUseBestPoolsOnly": false,
+ "MinerWindowStyle": "minimized",
+ "MinerWindowStyleNormalWhenBenchmarking": false,
+ "MiningDutchAPIKey": "7c5ea2d2e997f5094a55969d3a855c4169b46d5eee6065d4fa9251e026980714",
+ "MiningDutchUserName": "UselessGuru",
+ "MiningPoolHubAPIKey": "28328accdd4306c631a881bd8130f0d258a94b0e33569e0eef7e83773d018c98",
+ "MiningPoolHubUserName": "UselessGuru",
+ "MinWorker": 0,
+ "NiceHashAPIKey": "0dfa9c5b-12f9-4f62-9152-41d6a517de00",
+ "NiceHashAPISecret": "15a4618a-1f3a-4b96-924a-48845f435d98f4f28ac4-a51b-4de0-bf8d-584929764dd5",
+ "NiceHashOrganizationId": "f48afaf4-fc54-4645-af2d-56334a48aebb",
+ "NiceHashWallet": "33hZYX8iFg5zm9E3geqrNgeP6TMzszZk5R",
+ "NiceHashWalletIsInternal": true,
+ "OpenFirewallPorts": true,
+ "PayoutCurrency": "BTC",
+ "PoolAllow0Hashrate": false,
+ "PoolAPIallowedFailureCount": 3,
+ "PoolAPIretryInterval": 3,
+ "PoolAPItimeout": 5,
+ "PoolName": [
+ "HashCryptosPlus",
+ "Hiveon",
+ "MiningDutchPlus",
+ "MiningPoolHub",
+ "NiceHash",
+ "ProHashingPlus",
+ "ZergPoolPlus",
+ "ZPoolPlus"
+ ],
+ "PoolsConfigFile": ".\\Config\\PoolsConfig.json",
+ "PoolTimeout": 30,
+ "PowerConsumption": {
+ "GPU#05": 20
+ },
+ "PowerConsumptionIdleSystemW": 120,
+ "PowerPricekWh": {
+ "00:00": 0.4
+ },
+ "ProfitabilityThreshold": -20,
+ "ProHashingAPIKey": "8ea6a00dea6945172167708c9784b8deead1da2f5e543ef312bfc7ed1073fe4a",
+ "ProHashingMiningMode": "PPLNS",
+ "ProHashingUserName": "UselessGuru",
+ "Proxy": "",
+ "Region": "Europe",
+ "ReportToServer": false,
+ "ShowAccuracy": true,
+ "ShowAllMiners": false,
+ "ShowChangeLog": true,
+ "ShowCoinName": true,
+ "ShowConsole": true,
+ "ShowCurrency": true,
+ "ShowEarning": false,
+ "ShowEarningBias": true,
+ "ShowMinerFee": true,
+ "ShowPool": true,
+ "ShowPoolBalances": false,
+ "ShowPoolFee": true,
+ "ShowPowerConsumption": true,
+ "ShowPowerCost": true,
+ "ShowProfit": false,
+ "ShowProfitBias": true,
+ "ShowShares": true,
+ "ShowUser": true,
+ "ShowWorkerStatus": false,
+ "SSL": "Prefer",
+ "SSLallowSelfSignedCertificate": true,
+ "StartupMode": "Running",
+ "SubtractBadShares": true,
+ "SyncWindow": 3,
+ "Transcript": false,
+ "UIStyle": "light",
+ "UnrealMinerEarningFactor": 1,
+ "UnrealPoolPriceFactor": 5,
+ "UseAnycast": true,
+ "UseColorForMinerStatus": true,
+ "UsemBTC": true,
+ "UseMinerTweaks": false,
+ "Wallets": {
+ "BTC": "1GPSq8txFnyrYdXL8t6S94mYdF8cGqVQJF",
+ "ETC": "0x7CF99ec9029A98AFd385f106A93977D8105Fec0f",
+ "ETH": "0x92e6F22C1493289e6AD2768E1F502Fc5b414a287"
+ },
+ "Watchdog": false,
+ "WatchdogCount": 2,
+ "WebGUI": true,
+ "WorkerName": "Blackbox"
+}
diff --git a/Config/Config.json_2024-09-08_16-52-58.backup b/Config/Config.json_2024-09-08_16-52-58.backup
new file mode 100644
index 00000000..ca33261f
--- /dev/null
+++ b/Config/Config.json_2024-09-08_16-52-58.backup
@@ -0,0 +1,163 @@
+// This file was generated by UG-Miner
+// UG-Miner will automatically add / convert / rename / update new settings when updating to a new version
+{
+ "Algorithm": [],
+ "APILogfile": "",
+ "APIPort": 3999,
+ "AutoReboot": true,
+ "AutoUpdate": true,
+ "AutoUpdateCheckInterval": 1,
+ "BackupOnAutoUpdate": true,
+ "BadShareRatioThreshold": 0.05,
+ "BalancesKeepAlive": true,
+ "BalancesShowAverages": true,
+ "BalancesShowInAllCurrencies": false,
+ "BalancesShowInFIATcurrency": true,
+ "BalancesShowSums": false,
+ "BalancesTrackerExcludePools": [
+ "MiningPoolHub"
+ ],
+ "BalancesTrackerLog": false,
+ "BalancesTrackerPollInterval": 10,
+ "BenchmarkAllPoolAlgorithmCombinations": true,
+ "CalculatePowerCost": true,
+ "ConfigFileVersion": "6.3.2",
+ "CPUMinerProcessPriority": -2,
+ "CPUMiningReserveCPUcore": 1,
+ "CryptoCompareAPIKeyParam": "af9b92255132dac6d1560c6eb1e04067d9fc0fb4c6630df00fb1d055bf858352",
+ "Currency": [],
+ "DecimalsMax": 8,
+ "Delay": 0,
+ "DisableCpuMiningOnBattery": false,
+ "DisableDualAlgoMining": false,
+ "DisableMinerFee": true,
+ "DisableMinersWithFee": false,
+ "DisableSingleAlgoMining": false,
+ "Donation": 2,
+ "DryRun": true,
+ "EarningsAdjustmentFactor": 0.8,
+ "ExcludeDeviceName": [],
+ "ExcludeMinerName": [],
+ "ExtraCurrencies": [
+ "ETH",
+ "EUR",
+ "THB",
+ "USD"
+ ],
+ "FIATcurrency": "CHF",
+ "GPUMinerProcessPriority": -1,
+ "IdleDetection": true,
+ "IdleSec": 5,
+ "IgnoreMinerFee": false,
+ "IgnorePoolFee": false,
+ "IgnorePowerCost": true,
+ "Interval": 120,
+ "LegacyGUI": true,
+ "LegacyGUIStartMinimized": false,
+ "LogBalanceAPIResponse": false,
+ "LogToFile": [
+ "Error",
+ "Info",
+ "Verbose",
+ "Warn"
+ ],
+ "LogToScreen": [
+ "Error",
+ "Info",
+ "Verbose",
+ "Warn"
+ ],
+ "LogViewerConfig": ".\\Utils\\UG-Miner_LogReader.xml",
+ "LogViewerExe": ".\\Utils\\SnakeTail.exe",
+ "MinAccuracy": 0,
+ "MinCycle": 3,
+ "MinDataSample": 20,
+ "MinerSet": 3,
+ "MinerSwitchingThreshold": 2,
+ "MinerUseBestPoolsOnly": false,
+ "MinerWindowStyle": "minimized",
+ "MinerWindowStyleNormalWhenBenchmarking": false,
+ "MiningDutchAPIKey": "7c5ea2d2e997f5094a55969d3a855c4169b46d5eee6065d4fa9251e026980714",
+ "MiningDutchUserName": "UselessGuru",
+ "MiningPoolHubAPIKey": "28328accdd4306c631a881bd8130f0d258a94b0e33569e0eef7e83773d018c98",
+ "MiningPoolHubUserName": "UselessGuru",
+ "MinWorker": 0,
+ "NiceHashAPIKey": "0dfa9c5b-12f9-4f62-9152-41d6a517de00",
+ "NiceHashAPISecret": "15a4618a-1f3a-4b96-924a-48845f435d98f4f28ac4-a51b-4de0-bf8d-584929764dd5",
+ "NiceHashOrganizationId": "f48afaf4-fc54-4645-af2d-56334a48aebb",
+ "NiceHashWallet": "33hZYX8iFg5zm9E3geqrNgeP6TMzszZk5R",
+ "NiceHashWalletIsInternal": true,
+ "OpenFirewallPorts": true,
+ "PayoutCurrency": "BTC",
+ "PoolAllow0Hashrate": false,
+ "PoolAPIallowedFailureCount": 3,
+ "PoolAPIretryInterval": 3,
+ "PoolAPItimeout": 5,
+ "PoolName": [
+ "HashCryptosPlus",
+ "Hiveon",
+ "MiningDutchPlus",
+ "MiningPoolHub",
+ "NiceHash",
+ "ProHashingPlus",
+ "ZergPoolPlus",
+ "ZPoolPlus"
+ ],
+ "PoolsConfigFile": ".\\Config\\PoolsConfig.json",
+ "PoolTimeout": 30,
+ "PowerConsumption": {
+ "GPU#05": 20
+ },
+ "PowerConsumptionIdleSystemW": 120,
+ "PowerPricekWh": {
+ "00:00": 0.4
+ },
+ "ProfitabilityThreshold": -20,
+ "ProHashingAPIKey": "8ea6a00dea6945172167708c9784b8deead1da2f5e543ef312bfc7ed1073fe4a",
+ "ProHashingMiningMode": "PPLNS",
+ "ProHashingUserName": "UselessGuru",
+ "Proxy": "",
+ "Region": "Europe",
+ "ReportToServer": false,
+ "ShowAccuracy": true,
+ "ShowAllMiners": false,
+ "ShowChangeLog": true,
+ "ShowCoinName": true,
+ "ShowConsole": true,
+ "ShowCurrency": true,
+ "ShowEarning": false,
+ "ShowEarningBias": true,
+ "ShowMinerFee": true,
+ "ShowPool": true,
+ "ShowPoolBalances": false,
+ "ShowPoolFee": true,
+ "ShowPowerConsumption": true,
+ "ShowPowerCost": true,
+ "ShowProfit": false,
+ "ShowProfitBias": true,
+ "ShowShares": true,
+ "ShowUser": true,
+ "ShowWorkerStatus": false,
+ "SSL": "Prefer",
+ "SSLallowSelfSignedCertificate": true,
+ "StartupMode": "Running",
+ "SubtractBadShares": true,
+ "SyncWindow": 3,
+ "Transcript": false,
+ "UIStyle": "light",
+ "UnrealMinerEarningFactor": 1,
+ "UnrealPoolPriceFactor": 5,
+ "UseAnycast": true,
+ "UseColorForMinerStatus": true,
+ "UsemBTC": true,
+ "UseMinerTweaks": false,
+ "Wallets": {
+ "BTC": "1GPSq8txFnyrYdXL8t6S94mYdF8cGqVQJF",
+ "ETC": "0x7CF99ec9029A98AFd385f106A93977D8105Fec0f",
+ "ETH": "0x92e6F22C1493289e6AD2768E1F502Fc5b414a287"
+ },
+ "Watchdog": false,
+ "WatchdogCount": 2,
+ "WebGUI": true,
+ "WorkerName": "Blackbox"
+}
diff --git a/Config/Config.json_2024-09-08_20-57-48.backup b/Config/Config.json_2024-09-08_20-57-48.backup
new file mode 100644
index 00000000..cddd7c53
--- /dev/null
+++ b/Config/Config.json_2024-09-08_20-57-48.backup
@@ -0,0 +1,163 @@
+// This file was generated by UG-Miner
+// UG-Miner will automatically add / convert / rename / update new settings when updating to a new version
+{
+ "Algorithm": [],
+ "APILogfile": "",
+ "APIPort": 3999,
+ "AutoReboot": true,
+ "AutoUpdate": true,
+ "AutoUpdateCheckInterval": 1,
+ "BackupOnAutoUpdate": true,
+ "BadShareRatioThreshold": 0.05,
+ "BalancesKeepAlive": true,
+ "BalancesShowAverages": true,
+ "BalancesShowInAllCurrencies": false,
+ "BalancesShowInFIATcurrency": true,
+ "BalancesShowSums": false,
+ "BalancesTrackerExcludePools": [
+ "MiningPoolHub"
+ ],
+ "BalancesTrackerLog": false,
+ "BalancesTrackerPollInterval": 10,
+ "BenchmarkAllPoolAlgorithmCombinations": true,
+ "CalculatePowerCost": true,
+ "ConfigFileVersion": "6.3.2",
+ "CPUMinerProcessPriority": -2,
+ "CPUMiningReserveCPUcore": 1,
+ "CryptoCompareAPIKeyParam": "af9b92255132dac6d1560c6eb1e04067d9fc0fb4c6630df00fb1d055bf858352",
+ "Currency": [],
+ "DecimalsMax": 8,
+ "Delay": 0,
+ "DisableCpuMiningOnBattery": false,
+ "DisableDualAlgoMining": false,
+ "DisableMinerFee": true,
+ "DisableMinersWithFee": false,
+ "DisableSingleAlgoMining": false,
+ "Donation": 2,
+ "DryRun": true,
+ "EarningsAdjustmentFactor": 0.8,
+ "ExcludeDeviceName": [],
+ "ExcludeMinerName": [],
+ "ExtraCurrencies": [
+ "ETH",
+ "EUR",
+ "THB",
+ "USD"
+ ],
+ "FIATcurrency": "CHF",
+ "GPUMinerProcessPriority": -1,
+ "IdleDetection": false,
+ "IdleSec": 5,
+ "IgnoreMinerFee": false,
+ "IgnorePoolFee": false,
+ "IgnorePowerCost": true,
+ "Interval": 120,
+ "LegacyGUI": true,
+ "LegacyGUIStartMinimized": false,
+ "LogBalanceAPIResponse": false,
+ "LogToFile": [
+ "Error",
+ "Info",
+ "Verbose",
+ "Warn"
+ ],
+ "LogToScreen": [
+ "Error",
+ "Info",
+ "Verbose",
+ "Warn"
+ ],
+ "LogViewerConfig": ".\\Utils\\UG-Miner_LogReader.xml",
+ "LogViewerExe": ".\\Utils\\SnakeTail.exe",
+ "MinAccuracy": 0,
+ "MinCycle": 3,
+ "MinDataSample": 20,
+ "MinerSet": 3,
+ "MinerSwitchingThreshold": 2,
+ "MinerUseBestPoolsOnly": false,
+ "MinerWindowStyle": "minimized",
+ "MinerWindowStyleNormalWhenBenchmarking": false,
+ "MiningDutchAPIKey": "7c5ea2d2e997f5094a55969d3a855c4169b46d5eee6065d4fa9251e026980714",
+ "MiningDutchUserName": "UselessGuru",
+ "MiningPoolHubAPIKey": "28328accdd4306c631a881bd8130f0d258a94b0e33569e0eef7e83773d018c98",
+ "MiningPoolHubUserName": "UselessGuru",
+ "MinWorker": 0,
+ "NiceHashAPIKey": "0dfa9c5b-12f9-4f62-9152-41d6a517de00",
+ "NiceHashAPISecret": "15a4618a-1f3a-4b96-924a-48845f435d98f4f28ac4-a51b-4de0-bf8d-584929764dd5",
+ "NiceHashOrganizationId": "f48afaf4-fc54-4645-af2d-56334a48aebb",
+ "NiceHashWallet": "33hZYX8iFg5zm9E3geqrNgeP6TMzszZk5R",
+ "NiceHashWalletIsInternal": true,
+ "OpenFirewallPorts": true,
+ "PayoutCurrency": "BTC",
+ "PoolAllow0Hashrate": false,
+ "PoolAPIallowedFailureCount": 3,
+ "PoolAPIretryInterval": 3,
+ "PoolAPItimeout": 5,
+ "PoolName": [
+ "HashCryptosPlus",
+ "Hiveon",
+ "MiningDutchPlus",
+ "MiningPoolHub",
+ "NiceHash",
+ "ProHashingPlus",
+ "ZergPoolPlus",
+ "ZPoolPlus"
+ ],
+ "PoolsConfigFile": ".\\Config\\PoolsConfig.json",
+ "PoolTimeout": 30,
+ "PowerConsumption": {
+ "GPU#05": 20
+ },
+ "PowerConsumptionIdleSystemW": 120,
+ "PowerPricekWh": {
+ "00:00": 0.4
+ },
+ "ProfitabilityThreshold": -20,
+ "ProHashingAPIKey": "8ea6a00dea6945172167708c9784b8deead1da2f5e543ef312bfc7ed1073fe4a",
+ "ProHashingMiningMode": "PPLNS",
+ "ProHashingUserName": "UselessGuru",
+ "Proxy": "",
+ "Region": "Europe",
+ "ReportToServer": false,
+ "ShowAccuracy": true,
+ "ShowAllMiners": false,
+ "ShowChangeLog": true,
+ "ShowCoinName": true,
+ "ShowConsole": true,
+ "ShowCurrency": true,
+ "ShowEarning": false,
+ "ShowEarningBias": true,
+ "ShowMinerFee": true,
+ "ShowPool": true,
+ "ShowPoolBalances": false,
+ "ShowPoolFee": true,
+ "ShowPowerConsumption": true,
+ "ShowPowerCost": true,
+ "ShowProfit": false,
+ "ShowProfitBias": true,
+ "ShowShares": true,
+ "ShowUser": true,
+ "ShowWorkerStatus": false,
+ "SSL": "Prefer",
+ "SSLallowSelfSignedCertificate": true,
+ "StartupMode": "Running",
+ "SubtractBadShares": true,
+ "SyncWindow": 3,
+ "Transcript": false,
+ "UIStyle": "light",
+ "UnrealMinerEarningFactor": 1,
+ "UnrealPoolPriceFactor": 5,
+ "UseAnycast": true,
+ "UseColorForMinerStatus": true,
+ "UsemBTC": true,
+ "UseMinerTweaks": false,
+ "Wallets": {
+ "BTC": "1GPSq8txFnyrYdXL8t6S94mYdF8cGqVQJF",
+ "ETC": "0x7CF99ec9029A98AFd385f106A93977D8105Fec0f",
+ "ETH": "0x92e6F22C1493289e6AD2768E1F502Fc5b414a287"
+ },
+ "Watchdog": false,
+ "WatchdogCount": 2,
+ "WebGUI": true,
+ "WorkerName": "Blackbox"
+}
diff --git a/Config/Config.json_2024-09-13_11-00-02.backup b/Config/Config.json_2024-09-13_11-00-02.backup
new file mode 100644
index 00000000..29a87c6b
--- /dev/null
+++ b/Config/Config.json_2024-09-13_11-00-02.backup
@@ -0,0 +1,163 @@
+// This file was generated by UG-Miner
+// UG-Miner will automatically add / convert / rename / update new settings when updating to a new version
+{
+ "Algorithm": [],
+ "APILogfile": "",
+ "APIPort": 3999,
+ "AutoReboot": true,
+ "AutoUpdate": true,
+ "AutoUpdateCheckInterval": 1,
+ "BackupOnAutoUpdate": true,
+ "BadShareRatioThreshold": 0.05,
+ "BalancesKeepAlive": true,
+ "BalancesShowAverages": true,
+ "BalancesShowInAllCurrencies": false,
+ "BalancesShowInFIATcurrency": true,
+ "BalancesShowSums": false,
+ "BalancesTrackerExcludePools": [
+ "MiningPoolHub"
+ ],
+ "BalancesTrackerLog": false,
+ "BalancesTrackerPollInterval": 0,
+ "BenchmarkAllPoolAlgorithmCombinations": true,
+ "CalculatePowerCost": true,
+ "ConfigFileVersion": "6.3.4",
+ "CPUMinerProcessPriority": -2,
+ "CPUMiningReserveCPUcore": 1,
+ "CryptoCompareAPIKeyParam": "af9b92255132dac6d1560c6eb1e04067d9fc0fb4c6630df00fb1d055bf858352",
+ "Currency": [],
+ "DecimalsMax": 8,
+ "Delay": 0,
+ "DisableCpuMiningOnBattery": false,
+ "DisableDualAlgoMining": false,
+ "DisableMinerFee": true,
+ "DisableMinersWithFee": false,
+ "DisableSingleAlgoMining": false,
+ "Donation": 2,
+ "DryRun": true,
+ "EarningsAdjustmentFactor": 0.8,
+ "ExcludeDeviceName": [],
+ "ExcludeMinerName": [],
+ "ExtraCurrencies": [
+ "ETH",
+ "EUR",
+ "THB",
+ "USD"
+ ],
+ "FIATcurrency": "CHF",
+ "GPUMinerProcessPriority": -1,
+ "IdleDetection": false,
+ "IdleSec": 5,
+ "IgnoreMinerFee": false,
+ "IgnorePoolFee": false,
+ "IgnorePowerCost": true,
+ "Interval": 120,
+ "LegacyGUI": true,
+ "LegacyGUIStartMinimized": false,
+ "LogBalanceAPIResponse": false,
+ "LogToFile": [
+ "Error",
+ "Info",
+ "Verbose",
+ "Warn"
+ ],
+ "LogToScreen": [
+ "Error",
+ "Info",
+ "Verbose",
+ "Warn"
+ ],
+ "LogViewerConfig": ".\\Utils\\UG-Miner_LogReader.xml",
+ "LogViewerExe": ".\\Utils\\SnakeTail.exe",
+ "MinAccuracy": 0,
+ "MinCycle": 3,
+ "MinDataSample": 20,
+ "MinerSet": 3,
+ "MinerSwitchingThreshold": 2,
+ "MinerUseBestPoolsOnly": false,
+ "MinerWindowStyle": "minimized",
+ "MinerWindowStyleNormalWhenBenchmarking": false,
+ "MiningDutchAPIKey": "7c5ea2d2e997f5094a55969d3a855c4169b46d5eee6065d4fa9251e026980714",
+ "MiningDutchUserName": "UselessGuru",
+ "MiningPoolHubAPIKey": "28328accdd4306c631a881bd8130f0d258a94b0e33569e0eef7e83773d018c98",
+ "MiningPoolHubUserName": "UselessGuru",
+ "MinWorker": 0,
+ "NiceHashAPIKey": "0dfa9c5b-12f9-4f62-9152-41d6a517de00",
+ "NiceHashAPISecret": "15a4618a-1f3a-4b96-924a-48845f435d98f4f28ac4-a51b-4de0-bf8d-584929764dd5",
+ "NiceHashOrganizationId": "f48afaf4-fc54-4645-af2d-56334a48aebb",
+ "NiceHashWallet": "33hZYX8iFg5zm9E3geqrNgeP6TMzszZk5R",
+ "NiceHashWalletIsInternal": true,
+ "OpenFirewallPorts": true,
+ "PayoutCurrency": "BTC",
+ "PoolAllow0Hashrate": false,
+ "PoolAPIallowedFailureCount": 3,
+ "PoolAPIretryInterval": 3,
+ "PoolAPItimeout": 5,
+ "PoolName": [
+ "HashCryptosPlus",
+ "Hiveon",
+ "MiningDutchPlus",
+ "MiningPoolHub",
+ "NiceHash",
+ "ProHashingPlus",
+ "ZergPoolPlus",
+ "ZPoolPlus"
+ ],
+ "PoolsConfigFile": ".\\Config\\PoolsConfig.json",
+ "PoolTimeout": 30,
+ "PowerConsumption": {
+ "GPU#05": 20
+ },
+ "PowerConsumptionIdleSystemW": 120,
+ "PowerPricekWh": {
+ "00:00": 0.4
+ },
+ "ProfitabilityThreshold": -20,
+ "ProHashingAPIKey": "8ea6a00dea6945172167708c9784b8deead1da2f5e543ef312bfc7ed1073fe4a",
+ "ProHashingMiningMode": "PPLNS",
+ "ProHashingUserName": "UselessGuru",
+ "Proxy": "",
+ "Region": "Europe",
+ "ReportToServer": false,
+ "ShowAccuracy": true,
+ "ShowAllMiners": false,
+ "ShowChangeLog": true,
+ "ShowCoinName": true,
+ "ShowConsole": true,
+ "ShowCurrency": true,
+ "ShowEarning": false,
+ "ShowEarningBias": true,
+ "ShowMinerFee": true,
+ "ShowPool": true,
+ "ShowPoolBalances": false,
+ "ShowPoolFee": true,
+ "ShowPowerConsumption": true,
+ "ShowPowerCost": true,
+ "ShowProfit": false,
+ "ShowProfitBias": true,
+ "ShowShares": true,
+ "ShowUser": true,
+ "ShowWorkerStatus": false,
+ "SSL": "Prefer",
+ "SSLallowSelfSignedCertificate": true,
+ "StartupMode": "Running",
+ "SubtractBadShares": true,
+ "SyncWindow": 3,
+ "Transcript": false,
+ "UIStyle": "light",
+ "UnrealMinerEarningFactor": 1,
+ "UnrealPoolPriceFactor": 5,
+ "UseAnycast": true,
+ "UseColorForMinerStatus": true,
+ "UsemBTC": true,
+ "UseMinerTweaks": false,
+ "Wallets": {
+ "BTC": "1GPSq8txFnyrYdXL8t6S94mYdF8cGqVQJF",
+ "ETC": "0x7CF99ec9029A98AFd385f106A93977D8105Fec0f",
+ "ETH": "0x92e6F22C1493289e6AD2768E1F502Fc5b414a287"
+ },
+ "Watchdog": true,
+ "WatchdogCount": 2,
+ "WebGUI": true,
+ "WorkerName": "Blackbox"
+}
diff --git a/Config/Config.json_2024-09-13_11-06-41.backup b/Config/Config.json_2024-09-13_11-06-41.backup
new file mode 100644
index 00000000..15e9a8f5
--- /dev/null
+++ b/Config/Config.json_2024-09-13_11-06-41.backup
@@ -0,0 +1,164 @@
+// This file was generated by UG-Miner
+// UG-Miner will automatically add / convert / rename / update new settings when updating to a new version
+{
+ "Algorithm": [],
+ "APILogfile": "",
+ "APIPort": 3999,
+ "AutoReboot": true,
+ "AutoUpdate": true,
+ "AutoUpdateCheckInterval": 1,
+ "BackupOnAutoUpdate": true,
+ "BadShareRatioThreshold": 0.05,
+ "BalancesKeepAlive": true,
+ "BalancesShowAverages": true,
+ "BalancesShowInAllCurrencies": false,
+ "BalancesShowInFIATcurrency": true,
+ "BalancesShowSums": false,
+ "BalancesTrackerExcludePools": [
+ "MiningPoolHub"
+ ],
+ "BalancesTrackerLog": false,
+ "BalancesTrackerPollInterval": 0,
+ "BenchmarkAllPoolAlgorithmCombinations": true,
+ "CalculatePowerCost": true,
+ "ConfigFileVersion": "6.3.4",
+ "CPUMinerProcessPriority": -2,
+ "CPUMiningReserveCPUcore": 1,
+ "CryptoCompareAPIKeyParam": "af9b92255132dac6d1560c6eb1e04067d9fc0fb4c6630df00fb1d055bf858352",
+ "Currency": [],
+ "DecimalsMax": 8,
+ "Delay": 0,
+ "DisableCpuMiningOnBattery": false,
+ "DisableDualAlgoMining": false,
+ "DisableMinerFee": true,
+ "DisableMinersWithFee": false,
+ "DisableSingleAlgoMining": false,
+ "Donation": 2,
+ "DryRun": true,
+ "EarningsAdjustmentFactor": 0.8,
+ "ExcludeDeviceName": [],
+ "ExcludeMinerName": [],
+ "ExtraCurrencies": [
+ "ETH",
+ "EUR",
+ "THB",
+ "USD"
+ ],
+ "FIATcurrency": "CHF",
+ "GPUMinerProcessPriority": -1,
+ "IdleDetection": false,
+ "IdleSec": 5,
+ "IgnoreMinerFee": false,
+ "IgnorePoolFee": false,
+ "IgnorePowerCost": true,
+ "Interval": 120,
+ "LegacyGUI": true,
+ "LegacyGUIStartMinimized": false,
+ "LogBalanceAPIResponse": false,
+ "LogToFile": [
+ "Debug",
+ "Error",
+ "Info",
+ "Verbose",
+ "Warn"
+ ],
+ "LogToScreen": [
+ "Error",
+ "Info",
+ "Verbose",
+ "Warn"
+ ],
+ "LogViewerConfig": ".\\Utils\\UG-Miner_LogReader.xml",
+ "LogViewerExe": ".\\Utils\\SnakeTail.exe",
+ "MinAccuracy": 0,
+ "MinCycle": 3,
+ "MinDataSample": 20,
+ "MinerSet": 3,
+ "MinerSwitchingThreshold": 2,
+ "MinerUseBestPoolsOnly": false,
+ "MinerWindowStyle": "minimized",
+ "MinerWindowStyleNormalWhenBenchmarking": false,
+ "MiningDutchAPIKey": "7c5ea2d2e997f5094a55969d3a855c4169b46d5eee6065d4fa9251e026980714",
+ "MiningDutchUserName": "UselessGuru",
+ "MiningPoolHubAPIKey": "28328accdd4306c631a881bd8130f0d258a94b0e33569e0eef7e83773d018c98",
+ "MiningPoolHubUserName": "UselessGuru",
+ "MinWorker": 0,
+ "NiceHashAPIKey": "0dfa9c5b-12f9-4f62-9152-41d6a517de00",
+ "NiceHashAPISecret": "15a4618a-1f3a-4b96-924a-48845f435d98f4f28ac4-a51b-4de0-bf8d-584929764dd5",
+ "NiceHashOrganizationId": "f48afaf4-fc54-4645-af2d-56334a48aebb",
+ "NiceHashWallet": "33hZYX8iFg5zm9E3geqrNgeP6TMzszZk5R",
+ "NiceHashWalletIsInternal": true,
+ "OpenFirewallPorts": true,
+ "PayoutCurrency": "BTC",
+ "PoolAllow0Hashrate": false,
+ "PoolAPIallowedFailureCount": 3,
+ "PoolAPIretryInterval": 3,
+ "PoolAPItimeout": 5,
+ "PoolName": [
+ "HashCryptosPlus",
+ "Hiveon",
+ "MiningDutchPlus",
+ "MiningPoolHub",
+ "NiceHash",
+ "ProHashingPlus",
+ "ZergPoolPlus",
+ "ZPoolPlus"
+ ],
+ "PoolsConfigFile": ".\\Config\\PoolsConfig.json",
+ "PoolTimeout": 30,
+ "PowerConsumption": {
+ "GPU#05": 20
+ },
+ "PowerConsumptionIdleSystemW": 120,
+ "PowerPricekWh": {
+ "00:00": 0.4
+ },
+ "ProfitabilityThreshold": -20,
+ "ProHashingAPIKey": "8ea6a00dea6945172167708c9784b8deead1da2f5e543ef312bfc7ed1073fe4a",
+ "ProHashingMiningMode": "PPLNS",
+ "ProHashingUserName": "UselessGuru",
+ "Proxy": "",
+ "Region": "Europe",
+ "ReportToServer": false,
+ "ShowAccuracy": true,
+ "ShowAllMiners": false,
+ "ShowChangeLog": true,
+ "ShowCoinName": true,
+ "ShowConsole": true,
+ "ShowCurrency": true,
+ "ShowEarning": false,
+ "ShowEarningBias": true,
+ "ShowMinerFee": true,
+ "ShowPool": true,
+ "ShowPoolBalances": false,
+ "ShowPoolFee": true,
+ "ShowPowerConsumption": true,
+ "ShowPowerCost": true,
+ "ShowProfit": false,
+ "ShowProfitBias": true,
+ "ShowShares": true,
+ "ShowUser": true,
+ "ShowWorkerStatus": false,
+ "SSL": "Prefer",
+ "SSLallowSelfSignedCertificate": true,
+ "StartupMode": "Running",
+ "SubtractBadShares": true,
+ "SyncWindow": 3,
+ "Transcript": false,
+ "UIStyle": "light",
+ "UnrealMinerEarningFactor": 1,
+ "UnrealPoolPriceFactor": 5,
+ "UseAnycast": true,
+ "UseColorForMinerStatus": true,
+ "UsemBTC": true,
+ "UseMinerTweaks": false,
+ "Wallets": {
+ "BTC": "1GPSq8txFnyrYdXL8t6S94mYdF8cGqVQJF",
+ "ETC": "0x7CF99ec9029A98AFd385f106A93977D8105Fec0f",
+ "ETH": "0x92e6F22C1493289e6AD2768E1F502Fc5b414a287"
+ },
+ "Watchdog": true,
+ "WatchdogCount": 2,
+ "WebGUI": true,
+ "WorkerName": "Blackbox"
+}
diff --git a/Config/PoolsConfig.json b/Config/PoolsConfig.json
new file mode 100644
index 00000000..b6260e26
--- /dev/null
+++ b/Config/PoolsConfig.json
@@ -0,0 +1,55 @@
+{
+ "HashCryptos": {
+ "Algorithm": [
+ "-MemeHash"
+ ],
+ "BrainDebug": false
+ },
+ "Hiveon": {
+ "Algorithm": []
+ },
+ "MiningDutch": {
+ "Algorithm": [
+ "-MemeHash",
+ "-YescryptR16"
+ ],
+ "BrainDebug": false,
+ "EarningsAdjustmentFactor": 0.8,
+ "ExcludeRegion": []
+ },
+ "MiningPoolHub": {
+ "ExcludeRegion": [],
+ "PayoutThreshold": {
+ "ETH": 0.25,
+ "mBTC": 50
+ }
+ },
+ "NiceHash": {
+ "Algorithm": []
+ },
+ "ProHashing": {
+ "Algorithm": [
+ ],
+ "BrainDebug": false
+ },
+ "ZergPool": {
+ "Algorithm": [
+ "_-Ethash",
+ "_-EthashB3",
+ "_-HeavyHashKarlsen",
+ "_-HeavyHashPyrin",
+ "_-Kawpow"
+ ],
+ "BrainDebug": false,
+ "Currency": [
+ "_-NXL"
+ ],
+ "PoolAllow0Hashrate": false,
+ "SSL": "Never",
+ "SSLselfSignedCertificate": true
+ },
+ "ZPool": {
+ "Algorithm": [],
+ "BrainDebug": false
+ }
+}
diff --git a/Config/WindowSettings.json b/Config/WindowSettings.json
new file mode 100644
index 00000000..48047e13
--- /dev/null
+++ b/Config/WindowSettings.json
@@ -0,0 +1,21 @@
+{
+ "Location": {
+ "IsEmpty": false,
+ "X": 948,
+ "Y": 542
+ },
+ "Size": {
+ "IsEmpty": false,
+ "Width": 2215,
+ "Height": 1178
+ },
+ "X": 948,
+ "Y": 542,
+ "Width": 2215,
+ "Height": 1178,
+ "Left": 948,
+ "Top": 542,
+ "Right": 3163,
+ "Bottom": 1720,
+ "IsEmpty": false
+}
diff --git a/Config/config.json_2024-09-09_10-53-35.backup b/Config/config.json_2024-09-09_10-53-35.backup
new file mode 100644
index 00000000..e61297e3
--- /dev/null
+++ b/Config/config.json_2024-09-09_10-53-35.backup
@@ -0,0 +1,163 @@
+// This file was generated by UG-Miner
+// UG-Miner will automatically add / convert / rename / update new settings when updating to a new version
+{
+ "Algorithm": [],
+ "APILogfile": "",
+ "APIPort": 3999,
+ "AutoReboot": true,
+ "AutoUpdate": true,
+ "AutoUpdateCheckInterval": 1,
+ "BackupOnAutoUpdate": true,
+ "BadShareRatioThreshold": 0.05,
+ "BalancesKeepAlive": true,
+ "BalancesShowAverages": true,
+ "BalancesShowInAllCurrencies": false,
+ "BalancesShowInFIATcurrency": true,
+ "BalancesShowSums": false,
+ "BalancesTrackerExcludePools": [
+ "MiningPoolHub"
+ ],
+ "BalancesTrackerLog": false,
+ "BalancesTrackerPollInterval": 10,
+ "BenchmarkAllPoolAlgorithmCombinations": true,
+ "CalculatePowerCost": true,
+ "ConfigFileVersion": "6.3.2",
+ "CPUMinerProcessPriority": -2,
+ "CPUMiningReserveCPUcore": 1,
+ "CryptoCompareAPIKeyParam": "af9b92255132dac6d1560c6eb1e04067d9fc0fb4c6630df00fb1d055bf858352",
+ "Currency": [],
+ "DecimalsMax": 8,
+ "Delay": 0,
+ "DisableCpuMiningOnBattery": false,
+ "DisableDualAlgoMining": false,
+ "DisableMinerFee": true,
+ "DisableMinersWithFee": false,
+ "DisableSingleAlgoMining": false,
+ "Donation": 2,
+ "DryRun": true,
+ "EarningsAdjustmentFactor": 0.8,
+ "ExcludeDeviceName": [],
+ "ExcludeMinerName": [],
+ "ExtraCurrencies": [
+ "ETH",
+ "EUR",
+ "THB",
+ "USD"
+ ],
+ "FIATcurrency": "CHF",
+ "GPUMinerProcessPriority": -1,
+ "IdleDetection": false,
+ "IdleSec": 5,
+ "IgnoreMinerFee": false,
+ "IgnorePoolFee": false,
+ "IgnorePowerCost": true,
+ "Interval": 120,
+ "LegacyGUI": true,
+ "LegacyGUIStartMinimized": false,
+ "LogBalanceAPIResponse": false,
+ "LogToFile": [
+ "Error",
+ "Info",
+ "Verbose",
+ "Warn"
+ ],
+ "LogToScreen": [
+ "Error",
+ "Info",
+ "Verbose",
+ "Warn"
+ ],
+ "LogViewerConfig": ".\\Utils\\UG-Miner_LogReader.xml",
+ "LogViewerExe": ".\\Utils\\SnakeTail.exe",
+ "MinAccuracy": 0,
+ "MinCycle": 3,
+ "MinDataSample": 20,
+ "MinerSet": 3,
+ "MinerSwitchingThreshold": 2,
+ "MinerUseBestPoolsOnly": false,
+ "MinerWindowStyle": "minimized",
+ "MinerWindowStyleNormalWhenBenchmarking": false,
+ "MiningDutchAPIKey": "7c5ea2d2e997f5094a55969d3a855c4169b46d5eee6065d4fa9251e026980714",
+ "MiningDutchUserName": "UselessGuru",
+ "MiningPoolHubAPIKey": "28328accdd4306c631a881bd8130f0d258a94b0e33569e0eef7e83773d018c98",
+ "MiningPoolHubUserName": "UselessGuru",
+ "MinWorker": 0,
+ "NiceHashAPIKey": "0dfa9c5b-12f9-4f62-9152-41d6a517de00",
+ "NiceHashAPISecret": "15a4618a-1f3a-4b96-924a-48845f435d98f4f28ac4-a51b-4de0-bf8d-584929764dd5",
+ "NiceHashOrganizationId": "f48afaf4-fc54-4645-af2d-56334a48aebb",
+ "NiceHashWallet": "33hZYX8iFg5zm9E3geqrNgeP6TMzszZk5R",
+ "NiceHashWalletIsInternal": true,
+ "OpenFirewallPorts": true,
+ "PayoutCurrency": "BTC",
+ "PoolAllow0Hashrate": false,
+ "PoolAPIallowedFailureCount": 3,
+ "PoolAPIretryInterval": 3,
+ "PoolAPItimeout": 5,
+ "PoolName": [
+ "HashCryptosPlus",
+ "Hiveon",
+ "MiningDutchPlus",
+ "MiningPoolHub",
+ "NiceHash",
+ "ProHashingPlus",
+ "ZergPoolPlus",
+ "ZPoolPlus"
+ ],
+ "PoolsConfigFile": ".\\Config\\PoolsConfig.json",
+ "PoolTimeout": 30,
+ "PowerConsumption": {
+ "GPU#05": 20
+ },
+ "PowerConsumptionIdleSystemW": 120,
+ "PowerPricekWh": {
+ "00:00": 0.4
+ },
+ "ProfitabilityThreshold": -20,
+ "ProHashingAPIKey": "8ea6a00dea6945172167708c9784b8deead1da2f5e543ef312bfc7ed1073fe4a",
+ "ProHashingMiningMode": "PPLNS",
+ "ProHashingUserName": "UselessGuru",
+ "Proxy": "",
+ "Region": "Europe",
+ "ReportToServer": false,
+ "ShowAccuracy": true,
+ "ShowAllMiners": false,
+ "ShowChangeLog": true,
+ "ShowCoinName": true,
+ "ShowConsole": true,
+ "ShowCurrency": true,
+ "ShowEarning": false,
+ "ShowEarningBias": true,
+ "ShowMinerFee": true,
+ "ShowPool": true,
+ "ShowPoolBalances": false,
+ "ShowPoolFee": true,
+ "ShowPowerConsumption": true,
+ "ShowPowerCost": true,
+ "ShowProfit": false,
+ "ShowProfitBias": true,
+ "ShowShares": true,
+ "ShowUser": true,
+ "ShowWorkerStatus": false,
+ "SSL": "Prefer",
+ "SSLallowSelfSignedCertificate": true,
+ "StartupMode": "Running",
+ "SubtractBadShares": true,
+ "SyncWindow": 3,
+ "Transcript": false,
+ "UIStyle": "light",
+ "UnrealMinerEarningFactor": 1,
+ "UnrealPoolPriceFactor": 5,
+ "UseAnycast": true,
+ "UseColorForMinerStatus": true,
+ "UsemBTC": true,
+ "UseMinerTweaks": false,
+ "Wallets": {
+ "BTC": "1GPSq8txFnyrYdXL8t6S94mYdF8cGqVQJF",
+ "ETC": "0x7CF99ec9029A98AFd385f106A93977D8105Fec0f",
+ "ETH": "0x92e6F22C1493289e6AD2768E1F502Fc5b414a287"
+ },
+ "Watchdog": true,
+ "WatchdogCount": 2,
+ "WebGUI": true,
+ "WorkerName": "Blackbox"
+}
diff --git a/Config/config.json_2024-09-11_22-52-25.backup b/Config/config.json_2024-09-11_22-52-25.backup
new file mode 100644
index 00000000..29a87c6b
--- /dev/null
+++ b/Config/config.json_2024-09-11_22-52-25.backup
@@ -0,0 +1,163 @@
+// This file was generated by UG-Miner
+// UG-Miner will automatically add / convert / rename / update new settings when updating to a new version
+{
+ "Algorithm": [],
+ "APILogfile": "",
+ "APIPort": 3999,
+ "AutoReboot": true,
+ "AutoUpdate": true,
+ "AutoUpdateCheckInterval": 1,
+ "BackupOnAutoUpdate": true,
+ "BadShareRatioThreshold": 0.05,
+ "BalancesKeepAlive": true,
+ "BalancesShowAverages": true,
+ "BalancesShowInAllCurrencies": false,
+ "BalancesShowInFIATcurrency": true,
+ "BalancesShowSums": false,
+ "BalancesTrackerExcludePools": [
+ "MiningPoolHub"
+ ],
+ "BalancesTrackerLog": false,
+ "BalancesTrackerPollInterval": 0,
+ "BenchmarkAllPoolAlgorithmCombinations": true,
+ "CalculatePowerCost": true,
+ "ConfigFileVersion": "6.3.4",
+ "CPUMinerProcessPriority": -2,
+ "CPUMiningReserveCPUcore": 1,
+ "CryptoCompareAPIKeyParam": "af9b92255132dac6d1560c6eb1e04067d9fc0fb4c6630df00fb1d055bf858352",
+ "Currency": [],
+ "DecimalsMax": 8,
+ "Delay": 0,
+ "DisableCpuMiningOnBattery": false,
+ "DisableDualAlgoMining": false,
+ "DisableMinerFee": true,
+ "DisableMinersWithFee": false,
+ "DisableSingleAlgoMining": false,
+ "Donation": 2,
+ "DryRun": true,
+ "EarningsAdjustmentFactor": 0.8,
+ "ExcludeDeviceName": [],
+ "ExcludeMinerName": [],
+ "ExtraCurrencies": [
+ "ETH",
+ "EUR",
+ "THB",
+ "USD"
+ ],
+ "FIATcurrency": "CHF",
+ "GPUMinerProcessPriority": -1,
+ "IdleDetection": false,
+ "IdleSec": 5,
+ "IgnoreMinerFee": false,
+ "IgnorePoolFee": false,
+ "IgnorePowerCost": true,
+ "Interval": 120,
+ "LegacyGUI": true,
+ "LegacyGUIStartMinimized": false,
+ "LogBalanceAPIResponse": false,
+ "LogToFile": [
+ "Error",
+ "Info",
+ "Verbose",
+ "Warn"
+ ],
+ "LogToScreen": [
+ "Error",
+ "Info",
+ "Verbose",
+ "Warn"
+ ],
+ "LogViewerConfig": ".\\Utils\\UG-Miner_LogReader.xml",
+ "LogViewerExe": ".\\Utils\\SnakeTail.exe",
+ "MinAccuracy": 0,
+ "MinCycle": 3,
+ "MinDataSample": 20,
+ "MinerSet": 3,
+ "MinerSwitchingThreshold": 2,
+ "MinerUseBestPoolsOnly": false,
+ "MinerWindowStyle": "minimized",
+ "MinerWindowStyleNormalWhenBenchmarking": false,
+ "MiningDutchAPIKey": "7c5ea2d2e997f5094a55969d3a855c4169b46d5eee6065d4fa9251e026980714",
+ "MiningDutchUserName": "UselessGuru",
+ "MiningPoolHubAPIKey": "28328accdd4306c631a881bd8130f0d258a94b0e33569e0eef7e83773d018c98",
+ "MiningPoolHubUserName": "UselessGuru",
+ "MinWorker": 0,
+ "NiceHashAPIKey": "0dfa9c5b-12f9-4f62-9152-41d6a517de00",
+ "NiceHashAPISecret": "15a4618a-1f3a-4b96-924a-48845f435d98f4f28ac4-a51b-4de0-bf8d-584929764dd5",
+ "NiceHashOrganizationId": "f48afaf4-fc54-4645-af2d-56334a48aebb",
+ "NiceHashWallet": "33hZYX8iFg5zm9E3geqrNgeP6TMzszZk5R",
+ "NiceHashWalletIsInternal": true,
+ "OpenFirewallPorts": true,
+ "PayoutCurrency": "BTC",
+ "PoolAllow0Hashrate": false,
+ "PoolAPIallowedFailureCount": 3,
+ "PoolAPIretryInterval": 3,
+ "PoolAPItimeout": 5,
+ "PoolName": [
+ "HashCryptosPlus",
+ "Hiveon",
+ "MiningDutchPlus",
+ "MiningPoolHub",
+ "NiceHash",
+ "ProHashingPlus",
+ "ZergPoolPlus",
+ "ZPoolPlus"
+ ],
+ "PoolsConfigFile": ".\\Config\\PoolsConfig.json",
+ "PoolTimeout": 30,
+ "PowerConsumption": {
+ "GPU#05": 20
+ },
+ "PowerConsumptionIdleSystemW": 120,
+ "PowerPricekWh": {
+ "00:00": 0.4
+ },
+ "ProfitabilityThreshold": -20,
+ "ProHashingAPIKey": "8ea6a00dea6945172167708c9784b8deead1da2f5e543ef312bfc7ed1073fe4a",
+ "ProHashingMiningMode": "PPLNS",
+ "ProHashingUserName": "UselessGuru",
+ "Proxy": "",
+ "Region": "Europe",
+ "ReportToServer": false,
+ "ShowAccuracy": true,
+ "ShowAllMiners": false,
+ "ShowChangeLog": true,
+ "ShowCoinName": true,
+ "ShowConsole": true,
+ "ShowCurrency": true,
+ "ShowEarning": false,
+ "ShowEarningBias": true,
+ "ShowMinerFee": true,
+ "ShowPool": true,
+ "ShowPoolBalances": false,
+ "ShowPoolFee": true,
+ "ShowPowerConsumption": true,
+ "ShowPowerCost": true,
+ "ShowProfit": false,
+ "ShowProfitBias": true,
+ "ShowShares": true,
+ "ShowUser": true,
+ "ShowWorkerStatus": false,
+ "SSL": "Prefer",
+ "SSLallowSelfSignedCertificate": true,
+ "StartupMode": "Running",
+ "SubtractBadShares": true,
+ "SyncWindow": 3,
+ "Transcript": false,
+ "UIStyle": "light",
+ "UnrealMinerEarningFactor": 1,
+ "UnrealPoolPriceFactor": 5,
+ "UseAnycast": true,
+ "UseColorForMinerStatus": true,
+ "UsemBTC": true,
+ "UseMinerTweaks": false,
+ "Wallets": {
+ "BTC": "1GPSq8txFnyrYdXL8t6S94mYdF8cGqVQJF",
+ "ETC": "0x7CF99ec9029A98AFd385f106A93977D8105Fec0f",
+ "ETH": "0x92e6F22C1493289e6AD2768E1F502Fc5b414a287"
+ },
+ "Watchdog": true,
+ "WatchdogCount": 2,
+ "WebGUI": true,
+ "WorkerName": "Blackbox"
+}
diff --git a/Config/config.json_2024-09-11_22-53-10.backup b/Config/config.json_2024-09-11_22-53-10.backup
new file mode 100644
index 00000000..15e9a8f5
--- /dev/null
+++ b/Config/config.json_2024-09-11_22-53-10.backup
@@ -0,0 +1,164 @@
+// This file was generated by UG-Miner
+// UG-Miner will automatically add / convert / rename / update new settings when updating to a new version
+{
+ "Algorithm": [],
+ "APILogfile": "",
+ "APIPort": 3999,
+ "AutoReboot": true,
+ "AutoUpdate": true,
+ "AutoUpdateCheckInterval": 1,
+ "BackupOnAutoUpdate": true,
+ "BadShareRatioThreshold": 0.05,
+ "BalancesKeepAlive": true,
+ "BalancesShowAverages": true,
+ "BalancesShowInAllCurrencies": false,
+ "BalancesShowInFIATcurrency": true,
+ "BalancesShowSums": false,
+ "BalancesTrackerExcludePools": [
+ "MiningPoolHub"
+ ],
+ "BalancesTrackerLog": false,
+ "BalancesTrackerPollInterval": 0,
+ "BenchmarkAllPoolAlgorithmCombinations": true,
+ "CalculatePowerCost": true,
+ "ConfigFileVersion": "6.3.4",
+ "CPUMinerProcessPriority": -2,
+ "CPUMiningReserveCPUcore": 1,
+ "CryptoCompareAPIKeyParam": "af9b92255132dac6d1560c6eb1e04067d9fc0fb4c6630df00fb1d055bf858352",
+ "Currency": [],
+ "DecimalsMax": 8,
+ "Delay": 0,
+ "DisableCpuMiningOnBattery": false,
+ "DisableDualAlgoMining": false,
+ "DisableMinerFee": true,
+ "DisableMinersWithFee": false,
+ "DisableSingleAlgoMining": false,
+ "Donation": 2,
+ "DryRun": true,
+ "EarningsAdjustmentFactor": 0.8,
+ "ExcludeDeviceName": [],
+ "ExcludeMinerName": [],
+ "ExtraCurrencies": [
+ "ETH",
+ "EUR",
+ "THB",
+ "USD"
+ ],
+ "FIATcurrency": "CHF",
+ "GPUMinerProcessPriority": -1,
+ "IdleDetection": false,
+ "IdleSec": 5,
+ "IgnoreMinerFee": false,
+ "IgnorePoolFee": false,
+ "IgnorePowerCost": true,
+ "Interval": 120,
+ "LegacyGUI": true,
+ "LegacyGUIStartMinimized": false,
+ "LogBalanceAPIResponse": false,
+ "LogToFile": [
+ "Debug",
+ "Error",
+ "Info",
+ "Verbose",
+ "Warn"
+ ],
+ "LogToScreen": [
+ "Error",
+ "Info",
+ "Verbose",
+ "Warn"
+ ],
+ "LogViewerConfig": ".\\Utils\\UG-Miner_LogReader.xml",
+ "LogViewerExe": ".\\Utils\\SnakeTail.exe",
+ "MinAccuracy": 0,
+ "MinCycle": 3,
+ "MinDataSample": 20,
+ "MinerSet": 3,
+ "MinerSwitchingThreshold": 2,
+ "MinerUseBestPoolsOnly": false,
+ "MinerWindowStyle": "minimized",
+ "MinerWindowStyleNormalWhenBenchmarking": false,
+ "MiningDutchAPIKey": "7c5ea2d2e997f5094a55969d3a855c4169b46d5eee6065d4fa9251e026980714",
+ "MiningDutchUserName": "UselessGuru",
+ "MiningPoolHubAPIKey": "28328accdd4306c631a881bd8130f0d258a94b0e33569e0eef7e83773d018c98",
+ "MiningPoolHubUserName": "UselessGuru",
+ "MinWorker": 0,
+ "NiceHashAPIKey": "0dfa9c5b-12f9-4f62-9152-41d6a517de00",
+ "NiceHashAPISecret": "15a4618a-1f3a-4b96-924a-48845f435d98f4f28ac4-a51b-4de0-bf8d-584929764dd5",
+ "NiceHashOrganizationId": "f48afaf4-fc54-4645-af2d-56334a48aebb",
+ "NiceHashWallet": "33hZYX8iFg5zm9E3geqrNgeP6TMzszZk5R",
+ "NiceHashWalletIsInternal": true,
+ "OpenFirewallPorts": true,
+ "PayoutCurrency": "BTC",
+ "PoolAllow0Hashrate": false,
+ "PoolAPIallowedFailureCount": 3,
+ "PoolAPIretryInterval": 3,
+ "PoolAPItimeout": 5,
+ "PoolName": [
+ "HashCryptosPlus",
+ "Hiveon",
+ "MiningDutchPlus",
+ "MiningPoolHub",
+ "NiceHash",
+ "ProHashingPlus",
+ "ZergPoolPlus",
+ "ZPoolPlus"
+ ],
+ "PoolsConfigFile": ".\\Config\\PoolsConfig.json",
+ "PoolTimeout": 30,
+ "PowerConsumption": {
+ "GPU#05": 20
+ },
+ "PowerConsumptionIdleSystemW": 120,
+ "PowerPricekWh": {
+ "00:00": 0.4
+ },
+ "ProfitabilityThreshold": -20,
+ "ProHashingAPIKey": "8ea6a00dea6945172167708c9784b8deead1da2f5e543ef312bfc7ed1073fe4a",
+ "ProHashingMiningMode": "PPLNS",
+ "ProHashingUserName": "UselessGuru",
+ "Proxy": "",
+ "Region": "Europe",
+ "ReportToServer": false,
+ "ShowAccuracy": true,
+ "ShowAllMiners": false,
+ "ShowChangeLog": true,
+ "ShowCoinName": true,
+ "ShowConsole": true,
+ "ShowCurrency": true,
+ "ShowEarning": false,
+ "ShowEarningBias": true,
+ "ShowMinerFee": true,
+ "ShowPool": true,
+ "ShowPoolBalances": false,
+ "ShowPoolFee": true,
+ "ShowPowerConsumption": true,
+ "ShowPowerCost": true,
+ "ShowProfit": false,
+ "ShowProfitBias": true,
+ "ShowShares": true,
+ "ShowUser": true,
+ "ShowWorkerStatus": false,
+ "SSL": "Prefer",
+ "SSLallowSelfSignedCertificate": true,
+ "StartupMode": "Running",
+ "SubtractBadShares": true,
+ "SyncWindow": 3,
+ "Transcript": false,
+ "UIStyle": "light",
+ "UnrealMinerEarningFactor": 1,
+ "UnrealPoolPriceFactor": 5,
+ "UseAnycast": true,
+ "UseColorForMinerStatus": true,
+ "UsemBTC": true,
+ "UseMinerTweaks": false,
+ "Wallets": {
+ "BTC": "1GPSq8txFnyrYdXL8t6S94mYdF8cGqVQJF",
+ "ETC": "0x7CF99ec9029A98AFd385f106A93977D8105Fec0f",
+ "ETH": "0x92e6F22C1493289e6AD2768E1F502Fc5b414a287"
+ },
+ "Watchdog": true,
+ "WatchdogCount": 2,
+ "WebGUI": true,
+ "WorkerName": "Blackbox"
+}
diff --git a/Config/config.json_2024-09-13_14-13-44.backup b/Config/config.json_2024-09-13_14-13-44.backup
new file mode 100644
index 00000000..29a87c6b
--- /dev/null
+++ b/Config/config.json_2024-09-13_14-13-44.backup
@@ -0,0 +1,163 @@
+// This file was generated by UG-Miner
+// UG-Miner will automatically add / convert / rename / update new settings when updating to a new version
+{
+ "Algorithm": [],
+ "APILogfile": "",
+ "APIPort": 3999,
+ "AutoReboot": true,
+ "AutoUpdate": true,
+ "AutoUpdateCheckInterval": 1,
+ "BackupOnAutoUpdate": true,
+ "BadShareRatioThreshold": 0.05,
+ "BalancesKeepAlive": true,
+ "BalancesShowAverages": true,
+ "BalancesShowInAllCurrencies": false,
+ "BalancesShowInFIATcurrency": true,
+ "BalancesShowSums": false,
+ "BalancesTrackerExcludePools": [
+ "MiningPoolHub"
+ ],
+ "BalancesTrackerLog": false,
+ "BalancesTrackerPollInterval": 0,
+ "BenchmarkAllPoolAlgorithmCombinations": true,
+ "CalculatePowerCost": true,
+ "ConfigFileVersion": "6.3.4",
+ "CPUMinerProcessPriority": -2,
+ "CPUMiningReserveCPUcore": 1,
+ "CryptoCompareAPIKeyParam": "af9b92255132dac6d1560c6eb1e04067d9fc0fb4c6630df00fb1d055bf858352",
+ "Currency": [],
+ "DecimalsMax": 8,
+ "Delay": 0,
+ "DisableCpuMiningOnBattery": false,
+ "DisableDualAlgoMining": false,
+ "DisableMinerFee": true,
+ "DisableMinersWithFee": false,
+ "DisableSingleAlgoMining": false,
+ "Donation": 2,
+ "DryRun": true,
+ "EarningsAdjustmentFactor": 0.8,
+ "ExcludeDeviceName": [],
+ "ExcludeMinerName": [],
+ "ExtraCurrencies": [
+ "ETH",
+ "EUR",
+ "THB",
+ "USD"
+ ],
+ "FIATcurrency": "CHF",
+ "GPUMinerProcessPriority": -1,
+ "IdleDetection": false,
+ "IdleSec": 5,
+ "IgnoreMinerFee": false,
+ "IgnorePoolFee": false,
+ "IgnorePowerCost": true,
+ "Interval": 120,
+ "LegacyGUI": true,
+ "LegacyGUIStartMinimized": false,
+ "LogBalanceAPIResponse": false,
+ "LogToFile": [
+ "Error",
+ "Info",
+ "Verbose",
+ "Warn"
+ ],
+ "LogToScreen": [
+ "Error",
+ "Info",
+ "Verbose",
+ "Warn"
+ ],
+ "LogViewerConfig": ".\\Utils\\UG-Miner_LogReader.xml",
+ "LogViewerExe": ".\\Utils\\SnakeTail.exe",
+ "MinAccuracy": 0,
+ "MinCycle": 3,
+ "MinDataSample": 20,
+ "MinerSet": 3,
+ "MinerSwitchingThreshold": 2,
+ "MinerUseBestPoolsOnly": false,
+ "MinerWindowStyle": "minimized",
+ "MinerWindowStyleNormalWhenBenchmarking": false,
+ "MiningDutchAPIKey": "7c5ea2d2e997f5094a55969d3a855c4169b46d5eee6065d4fa9251e026980714",
+ "MiningDutchUserName": "UselessGuru",
+ "MiningPoolHubAPIKey": "28328accdd4306c631a881bd8130f0d258a94b0e33569e0eef7e83773d018c98",
+ "MiningPoolHubUserName": "UselessGuru",
+ "MinWorker": 0,
+ "NiceHashAPIKey": "0dfa9c5b-12f9-4f62-9152-41d6a517de00",
+ "NiceHashAPISecret": "15a4618a-1f3a-4b96-924a-48845f435d98f4f28ac4-a51b-4de0-bf8d-584929764dd5",
+ "NiceHashOrganizationId": "f48afaf4-fc54-4645-af2d-56334a48aebb",
+ "NiceHashWallet": "33hZYX8iFg5zm9E3geqrNgeP6TMzszZk5R",
+ "NiceHashWalletIsInternal": true,
+ "OpenFirewallPorts": true,
+ "PayoutCurrency": "BTC",
+ "PoolAllow0Hashrate": false,
+ "PoolAPIallowedFailureCount": 3,
+ "PoolAPIretryInterval": 3,
+ "PoolAPItimeout": 5,
+ "PoolName": [
+ "HashCryptosPlus",
+ "Hiveon",
+ "MiningDutchPlus",
+ "MiningPoolHub",
+ "NiceHash",
+ "ProHashingPlus",
+ "ZergPoolPlus",
+ "ZPoolPlus"
+ ],
+ "PoolsConfigFile": ".\\Config\\PoolsConfig.json",
+ "PoolTimeout": 30,
+ "PowerConsumption": {
+ "GPU#05": 20
+ },
+ "PowerConsumptionIdleSystemW": 120,
+ "PowerPricekWh": {
+ "00:00": 0.4
+ },
+ "ProfitabilityThreshold": -20,
+ "ProHashingAPIKey": "8ea6a00dea6945172167708c9784b8deead1da2f5e543ef312bfc7ed1073fe4a",
+ "ProHashingMiningMode": "PPLNS",
+ "ProHashingUserName": "UselessGuru",
+ "Proxy": "",
+ "Region": "Europe",
+ "ReportToServer": false,
+ "ShowAccuracy": true,
+ "ShowAllMiners": false,
+ "ShowChangeLog": true,
+ "ShowCoinName": true,
+ "ShowConsole": true,
+ "ShowCurrency": true,
+ "ShowEarning": false,
+ "ShowEarningBias": true,
+ "ShowMinerFee": true,
+ "ShowPool": true,
+ "ShowPoolBalances": false,
+ "ShowPoolFee": true,
+ "ShowPowerConsumption": true,
+ "ShowPowerCost": true,
+ "ShowProfit": false,
+ "ShowProfitBias": true,
+ "ShowShares": true,
+ "ShowUser": true,
+ "ShowWorkerStatus": false,
+ "SSL": "Prefer",
+ "SSLallowSelfSignedCertificate": true,
+ "StartupMode": "Running",
+ "SubtractBadShares": true,
+ "SyncWindow": 3,
+ "Transcript": false,
+ "UIStyle": "light",
+ "UnrealMinerEarningFactor": 1,
+ "UnrealPoolPriceFactor": 5,
+ "UseAnycast": true,
+ "UseColorForMinerStatus": true,
+ "UsemBTC": true,
+ "UseMinerTweaks": false,
+ "Wallets": {
+ "BTC": "1GPSq8txFnyrYdXL8t6S94mYdF8cGqVQJF",
+ "ETC": "0x7CF99ec9029A98AFd385f106A93977D8105Fec0f",
+ "ETH": "0x92e6F22C1493289e6AD2768E1F502Fc5b414a287"
+ },
+ "Watchdog": true,
+ "WatchdogCount": 2,
+ "WebGUI": true,
+ "WorkerName": "Blackbox"
+}
diff --git a/Data/Algorithms.json b/Data/Algorithms.json
index 3f008a11..c284c082 100644
--- a/Data/Algorithms.json
+++ b/Data/Algorithms.json
@@ -146,6 +146,7 @@
"kangaroo12": "K12",
"karlsen": "HeavyHashKarlsen",
"karlsenhash": "HeavyHashKarlsen",
+ "karlsenhashv2": "HeavyHashKarlsenV2",
"kaspa": "HeavyHashKaspa",
"kawpow": "KawPow",
"keccakc": "KeccakC",
@@ -214,6 +215,7 @@
"progpowzano": "ProgPowZ",
"pyrin": "HeavyHashPyrin",
"pyrinhash": "HeavyHashPyrin",
+ "pyrinhashv2": "HeavyHashPyrinV2",
"pufferfish2bmb": "Pufferfish2BMB",
"qogecoin": "QogeCoin",
"radiant": "SHA512256d",
diff --git a/Data/CurrencyAlgorithm.json b/Data/CurrencyAlgorithm.json
index a4319d25..be0d92f3 100644
--- a/Data/CurrencyAlgorithm.json
+++ b/Data/CurrencyAlgorithm.json
@@ -196,7 +196,7 @@
"KCN": "Flex",
"KEY": "MinotaurX",
"KIIRO": "FiroPow",
- "KLS": "HeavyHashKarlsen",
+ "KLS": "HeavyHashKarlsenV2",
"KMD": "Equihash2009",
"KOT": "Scrypt",
"KZC": "X11",
@@ -263,7 +263,7 @@
"PEP": "Scrypt",
"PEPE2": "Memehash",
"PEPENET": "Scrypt",
- "PEPEW": "MemeHash",
+ "PEPEW": "XelisV2PepePow",
"PGC": "Ethash",
"PGN": "X21s",
"PHL": "X16r",
@@ -277,7 +277,7 @@
"PRIV": "Yespower",
"PUG": "Heavyhashkarlsen",
"PXC": "Neoscrypt",
- "PYI": "HeavyHashPyrin",
+ "PYI": "HeavyHashPyrinV2",
"PYRK": "Lyra2z330",
"QCH": "Yespower",
"QKC": "Ethash",
@@ -313,8 +313,6 @@
"SERO": "ProgPowSero",
"SHAHE": "X16rv2",
"SHND": "SHA256",
- "SIN": null,
- "SISPOP": null,
"SKY": "SHAndwich256",
"SKYDOGE": "SHAndwich256",
"SKYT": "Ghostrider",
diff --git a/Data/DagData.json b/Data/DagData.json
index ddb0baf1..ae28090f 100644
--- a/Data/DagData.json
+++ b/Data/DagData.json
@@ -1,7 +1,7 @@
{
"Algorithm": {
"Autolykos2": {
- "BlockHeight": 1349661,
+ "BlockHeight": 1351264,
"CoinName": [
"Ergo"
],
@@ -9,10 +9,10 @@
"ERG"
],
"DAGsize": 4324915245,
- "Epoch": 913
+ "Epoch": 914
},
"EtcHash": {
- "BlockHeight": 20664951,
+ "BlockHeight": 20679980,
"CoinName": [
"EthereumClassic"
],
@@ -23,7 +23,7 @@
"Epoch": 346
},
"Ethash": {
- "BlockHeight": 20250327,
+ "BlockHeight": 20265719,
"CoinName": [
"EthereumPow"
],
@@ -45,7 +45,7 @@
"Epoch": 139
},
"EvrProgPow": {
- "BlockHeight": 974642,
+ "BlockHeight": 977972,
"CoinName": [
"Evrmore"
],
@@ -56,18 +56,18 @@
"Epoch": 83
},
"FiroPow": {
- "BlockHeight": 955744,
+ "BlockHeight": 957052,
"CoinName": [
"Firo"
],
"Currency": [
"FIRO"
],
- "DAGsize": 7256145536,
- "Epoch": 737
+ "DAGsize": 7264533376,
+ "Epoch": 738
},
"FishHash": {
- "BlockHeight": 736588,
+ "BlockHeight": 739980,
"CoinName": [
"Ironfish"
],
@@ -78,15 +78,15 @@
"Epoch": 448
},
"KawPow": {
- "BlockHeight": 3493098,
+ "BlockHeight": 3496447,
"CoinName": [
"Raven"
],
"Currency": [
"RVN"
],
- "DAGsize": 4991221376,
- "Epoch": 467
+ "DAGsize": 4999607168,
+ "Epoch": 468
},
"MeowPow": {
"BlockHeight": 971453,
@@ -100,7 +100,7 @@
"Epoch": 131
},
"Octopus": {
- "BlockHeight": 104434833,
+ "BlockHeight": 104612521,
"CoinName": [
"Conflux"
],
@@ -111,7 +111,7 @@
"Epoch": 201
},
"ProgPowSero": {
- "BlockHeight": 13413710,
+ "BlockHeight": 13427626,
"CoinName": [
"Sero"
],
@@ -122,7 +122,7 @@
"Epoch": 449
},
"ProgPowTelestai": {
- "BlockHeight": 55733,
+ "BlockHeight": 59026,
"CoinName": [
"Telestai"
],
@@ -133,7 +133,7 @@
"Epoch": 6
},
"ProgPowZ": {
- "BlockHeight": 2805034,
+ "BlockHeight": 2808334,
"CoinName": [
"Zano"
],
@@ -144,7 +144,7 @@
"Epoch": 95
},
"SCCpow": {
- "BlockHeight": 985575,
+ "BlockHeight": 987183,
"CoinName": [
"StakeCubeCoin"
],
@@ -174,36 +174,36 @@
},
"Currency": {
"*": {
- "BlockHeight": 104434833,
+ "BlockHeight": 104612521,
"Currency": "*",
"DAGsize": 7667185408,
- "Epoch": 913
+ "Epoch": 914
},
"AIDP": {
"Algorithm": "KawPow",
- "BlockHeight": 197141,
+ "BlockHeight": 200543,
"CoinName": "AiDepin",
"DAGsize": 1308619904,
- "Date": "2024-09-11T05:09:14.7532933Z",
+ "Date": "2024-09-13T13:10:52.1735649Z",
"Epoch": 28,
"Url": "https://whattomine.com/coins.json"
},
"AIPG": {
"Algorithm": "KawPow",
- "BlockHeight": 396040,
+ "BlockHeight": 399371,
"CoinName": "Aipowergrid",
- "DAGsize": 1526726528,
- "Date": "2024-09-11T05:09:15.0882032Z",
- "Epoch": 54,
- "Url": "https://minerstat.com/dag-size-calculator"
+ "DAGsize": 1535114624,
+ "Date": "2024-09-13T13:10:52.2327033Z",
+ "Epoch": 55,
+ "Url": "https://whattomine.com/coins.json"
},
"AITT": {
"Algorithm": "KawPow",
- "BlockHeight": 1101663,
+ "BlockHeight": 1115007,
"CoinName": "AittCoin",
- "DAGsize": 2315251072,
- "Date": "2024-09-11T05:09:14.8463703Z",
- "Epoch": 148,
+ "DAGsize": 2332032128,
+ "Date": "2024-09-13T13:10:52.2715762Z",
+ "Epoch": 150,
"Url": "https://whattomine.com/coins.json"
},
"AKA": {
@@ -211,7 +211,7 @@
"BlockHeight": 11735607,
"CoinName": "",
"DAGsize": 4370458496,
- "Date": "2024-09-11T05:09:15.0250232Z",
+ "Date": "2024-09-13T13:10:52.6385203Z",
"Epoch": 393,
"Url": "https://minerstat.com/dag-size-calculator"
},
@@ -226,10 +226,10 @@
},
"ANOK": {
"Algorithm": "KawPow",
- "BlockHeight": 227724,
+ "BlockHeight": 230689,
"CoinName": "Anokas",
"DAGsize": 1342176128,
- "Date": "2024-09-11T05:09:14.7756567Z",
+ "Date": "2024-09-13T13:10:52.1276519Z",
"Epoch": 32,
"Url": "https://whattomine.com/coins.json"
},
@@ -244,37 +244,37 @@
},
"BLOCX": {
"Algorithm": "Autolykos2",
- "BlockHeight": 294830,
+ "BlockHeight": 298025,
"CoinName": "Blocx",
"DAGsize": 2147483648,
- "Date": "2024-09-11T05:11:25.057681Z",
+ "Date": "2024-09-13T13:10:54.9410703Z",
"Epoch": 0,
"Url": "https://api-explorer.blocxscan.com/api/getblockcount"
},
"BTN": {
"Algorithm": "Ethash",
- "BlockHeight": 2852549,
+ "BlockHeight": 2868287,
"CoinName": "BitnetBtn",
"DAGsize": 1887431552,
- "Date": "2024-09-11T05:09:14.8439671Z",
+ "Date": "2024-09-13T13:10:52.3106282Z",
"Epoch": 97,
"Url": "https://whattomine.com/coins.json"
},
"CAU": {
"Algorithm": "Ethash",
- "BlockHeight": 5239719,
+ "BlockHeight": 5272984,
"CoinName": "",
- "DAGsize": 2550134144,
- "Date": "2024-09-11T05:09:15.0598786Z",
- "Epoch": 176,
+ "DAGsize": 2558525056,
+ "Date": "2024-09-13T13:10:52.684509Z",
+ "Epoch": 177,
"Url": "https://minerstat.com/dag-size-calculator"
},
"CFX": {
"Algorithm": "Octopus",
- "BlockHeight": 104434833,
+ "BlockHeight": 104612521,
"CoinName": "Conflux",
"DAGsize": 7667185408,
- "Date": "2024-09-11T05:09:16.3084934Z",
+ "Date": "2024-09-13T13:10:54.514506Z",
"Epoch": 201,
"Url": "https://prohashing.com/api/v1/currencies"
},
@@ -289,10 +289,10 @@
},
"CLORE": {
"Algorithm": "KawPow",
- "BlockHeight": 917962,
+ "BlockHeight": 921304,
"CoinName": "Clore",
"DAGsize": 2113928576,
- "Date": "2024-09-11T05:09:14.7809396Z",
+ "Date": "2024-09-13T13:10:52.1823644Z",
"Epoch": 124,
"Url": "https://whattomine.com/coins.json"
},
@@ -307,37 +307,37 @@
},
"DINT": {
"Algorithm": "KawPow",
- "BlockHeight": 398235,
+ "BlockHeight": 401422,
"CoinName": "Dinartether",
"DAGsize": 1535114624,
- "Date": "2024-09-11T05:09:15.0859555Z",
+ "Date": "2024-09-13T13:10:52.7157187Z",
"Epoch": 55,
"Url": "https://minerstat.com/dag-size-calculator"
},
"DOGETHER": {
"Algorithm": "Ethash",
- "BlockHeight": 1313151,
+ "BlockHeight": 1324296,
"CoinName": "Dogether",
- "DAGsize": 1451229056,
- "Date": "2024-09-11T05:09:14.8556704Z",
- "Epoch": 45,
+ "DAGsize": 1459615616,
+ "Date": "2024-09-13T13:10:52.2795806Z",
+ "Epoch": 46,
"Url": "https://whattomine.com/coins.json"
},
"EGAZ": {
"Algorithm": "EtcHash",
- "BlockHeight": 5879737,
+ "BlockHeight": 5894650,
"CoinName": "Etica",
- "DAGsize": 2726293376,
- "Date": "2024-09-11T05:09:14.8517013Z",
- "Epoch": 197,
+ "DAGsize": 2734685056,
+ "Date": "2024-09-13T13:10:52.2978268Z",
+ "Epoch": 198,
"Url": "https://whattomine.com/coins.json"
},
"EGEM": {
"Algorithm": "Ethash",
- "BlockHeight": 16387763,
+ "BlockHeight": 16403687,
"CoinName": "EtherGem",
"DAGsize": 5670694784,
- "Date": "2024-09-11T05:09:14.8364727Z",
+ "Date": "2024-09-13T13:10:52.2571298Z",
"Epoch": 548,
"Url": "https://whattomine.com/coins.json"
},
@@ -352,11 +352,11 @@
},
"ERG": {
"Algorithm": "Autolykos2",
- "BlockHeight": 1349661,
+ "BlockHeight": 1351264,
"CoinName": "Ergo",
"DAGsize": 4324915245,
- "Date": "2024-09-11T05:09:16.3040845Z",
- "Epoch": 913,
+ "Date": "2024-09-13T13:08:49.0958125Z",
+ "Epoch": 914,
"Url": "https://prohashing.com/api/v1/currencies"
},
"ESN": {
@@ -364,16 +364,16 @@
"BlockHeight": 6408009,
"CoinName": "EtherSocial",
"DAGsize": 2877286784,
- "Date": "2024-09-11T05:09:15.0393522Z",
+ "Date": "2024-09-13T13:10:52.6659302Z",
"Epoch": 215,
"Url": "https://minerstat.com/dag-size-calculator"
},
"ETC": {
"Algorithm": "EtcHash",
- "BlockHeight": 20664951,
+ "BlockHeight": 20679980,
"CoinName": "EthereumClassic",
"DAGsize": 3976200064,
- "Date": "2024-09-11T05:09:16.3101597Z",
+ "Date": "2024-09-13T13:10:54.6074804Z",
"Epoch": 346,
"Url": "https://prohashing.com/api/v1/currencies"
},
@@ -397,10 +397,10 @@
},
"ETHW": {
"Algorithm": "Ethash",
- "BlockHeight": 20250327,
+ "BlockHeight": 20265719,
"CoinName": "EthereumPow",
"DAGsize": 6752825984,
- "Date": "2024-09-11T05:09:16.3059636Z",
+ "Date": "2024-09-13T13:10:54.4984721Z",
"Epoch": 677,
"Url": "https://prohashing.com/api/v1/currencies"
},
@@ -415,19 +415,19 @@
},
"ETP": {
"Algorithm": "Ethash",
- "BlockHeight": 9954814,
+ "BlockHeight": 9964311,
"CoinName": "",
- "DAGsize": 3867147904,
- "Date": "2024-09-11T05:09:15.0310002Z",
- "Epoch": 333,
+ "DAGsize": 3875536256,
+ "Date": "2024-09-13T13:10:52.6476259Z",
+ "Epoch": 334,
"Url": "https://minerstat.com/dag-size-calculator"
},
"EVR": {
"Algorithm": "EvrProgPow",
- "BlockHeight": 974642,
+ "BlockHeight": 977972,
"CoinName": "Evrmore",
"DAGsize": 3917478784,
- "Date": "2024-09-11T05:09:16.8916532Z",
+ "Date": "2024-09-13T13:10:55.1745189Z",
"Epoch": 83,
"Url": "https://evr.cryptoscope.io/api/getblockcount"
},
@@ -442,11 +442,11 @@
},
"FIRO": {
"Algorithm": "FiroPow",
- "BlockHeight": 955744,
+ "BlockHeight": 957052,
"CoinName": "Firo",
- "DAGsize": 7256145536,
- "Date": "2024-09-11T05:09:14.7931511Z",
- "Epoch": 737,
+ "DAGsize": 7264533376,
+ "Date": "2024-09-13T13:10:52.1930582Z",
+ "Epoch": 738,
"Url": "https://whattomine.com/coins.json"
},
"FLORA": {
@@ -454,17 +454,17 @@
"BlockHeight": 789635,
"CoinName": "",
"DAGsize": 1308619904,
- "Date": "2024-09-11T05:09:15.0930977Z",
+ "Date": "2024-09-13T13:10:53.2170096Z",
"Epoch": 28,
"Url": "https://minerstat.com/dag-size-calculator"
},
"FREN": {
"Algorithm": "KawPow",
- "BlockHeight": 1406752,
+ "BlockHeight": 1413420,
"CoinName": "Fren",
- "DAGsize": 2659188352,
- "Date": "2024-09-11T05:09:14.825258Z",
- "Epoch": 189,
+ "DAGsize": 2667574912,
+ "Date": "2024-09-13T13:10:52.2237215Z",
+ "Epoch": 190,
"Url": "https://whattomine.com/coins.json"
},
"GPN": {
@@ -490,34 +490,34 @@
"BlockHeight": 4131748,
"CoinName": "Hypra",
"DAGsize": 2239758208,
- "Date": "2024-09-11T05:09:14.8327338Z",
+ "Date": "2024-09-13T13:10:52.2639669Z",
"Epoch": 139,
"Url": "https://whattomine.com/coins.json"
},
"IRON": {
"Algorithm": "FishHash",
- "BlockHeight": 736588,
+ "BlockHeight": 739980,
"CoinName": "Ironfish",
"DAGsize": 4831838208,
- "Date": "2024-09-11T05:09:14.7415217Z",
+ "Date": "2024-09-13T13:10:52.142727Z",
"Epoch": 448,
"Url": "https://whattomine.com/coins.json"
},
"KIIRO": {
"Algorithm": "FiroPow",
- "BlockHeight": 240648,
+ "BlockHeight": 241974,
"CoinName": "KiiroCoin",
- "DAGsize": 2642407552,
- "Date": "2024-09-11T05:09:14.8225586Z",
- "Epoch": 187,
+ "DAGsize": 2650796416,
+ "Date": "2024-09-13T13:10:52.2121368Z",
+ "Epoch": 188,
"Url": "https://whattomine.com/coins.json"
},
"LRS": {
"Algorithm": "Ethash",
- "BlockHeight": 1622557,
+ "BlockHeight": 1638054,
"CoinName": "Larissa",
"DAGsize": 1543503488,
- "Date": "2024-09-11T05:09:14.8575826Z",
+ "Date": "2024-09-13T13:10:52.3413665Z",
"Epoch": 56,
"Url": "https://whattomine.com/coins.json"
},
@@ -541,38 +541,38 @@
},
"MOAC": {
"Algorithm": "Ethash",
- "BlockHeight": 14245360,
+ "BlockHeight": 14261038,
"CoinName": "",
- "DAGsize": 5066717056,
- "Date": "2024-09-11T05:09:15.0196899Z",
- "Epoch": 476,
+ "DAGsize": 5075107456,
+ "Date": "2024-09-13T13:10:52.6183119Z",
+ "Epoch": 477,
"Url": "https://minerstat.com/dag-size-calculator"
},
"NEOX": {
"Algorithm": "KawPow",
- "BlockHeight": 1211176,
+ "BlockHeight": 1214517,
"CoinName": "Neoxa",
"DAGsize": 2441084288,
- "Date": "2024-09-11T05:09:14.7882366Z",
+ "Date": "2024-09-13T13:10:52.1669985Z",
"Epoch": 163,
"Url": "https://whattomine.com/coins.json"
},
"NILU": {
"Algorithm": "Ethash",
- "BlockHeight": 6244799,
+ "BlockHeight": 6244803,
"CoinName": "",
"DAGsize": 2835349376,
- "Date": "2024-09-11T05:09:15.0407866Z",
+ "Date": "2024-09-13T13:10:52.6703164Z",
"Epoch": 210,
"Url": "https://minerstat.com/dag-size-calculator"
},
"NIR": {
"Algorithm": "ProgPowZ",
- "BlockHeight": 684687,
+ "BlockHeight": 691421,
"CoinName": "Nirmata",
- "DAGsize": 1275067264,
- "Date": "2024-09-11T05:09:14.7664242Z",
- "Epoch": 24,
+ "DAGsize": 1283453312,
+ "Date": "2024-09-13T13:10:52.1404446Z",
+ "Epoch": 25,
"Url": "https://whattomine.com/coins.json"
},
"NUKO": {
@@ -580,26 +580,26 @@
"BlockHeight": 8848535,
"CoinName": "",
"DAGsize": 3556763264,
- "Date": "2024-09-11T05:09:15.0343462Z",
+ "Date": "2024-09-13T13:10:52.6566518Z",
"Epoch": 296,
"Url": "https://minerstat.com/dag-size-calculator"
},
"OCTA": {
"Algorithm": "Ethash",
- "BlockHeight": 5440743,
+ "BlockHeight": 5456315,
"CoinName": "Octaspace",
"DAGsize": 2608856192,
- "Date": "2024-09-11T05:09:14.8385259Z",
+ "Date": "2024-09-13T13:10:52.2882176Z",
"Epoch": 183,
"Url": "https://whattomine.com/coins.json"
},
"PAPRY": {
"Algorithm": "KawPow",
- "BlockHeight": 815277,
+ "BlockHeight": 818630,
"CoinName": "Paprika",
- "DAGsize": 1996487552,
- "Date": "2024-09-11T05:09:15.0786429Z",
- "Epoch": 110,
+ "DAGsize": 2004874624,
+ "Date": "2024-09-13T13:10:52.7015983Z",
+ "Epoch": 111,
"Url": "https://minerstat.com/dag-size-calculator"
},
"PGC": {
@@ -622,11 +622,11 @@
},
"QKC": {
"Algorithm": "Ethash",
- "BlockHeight": 17277895,
+ "BlockHeight": 17298530,
"CoinName": "Quarkchain",
- "DAGsize": 5913966976,
- "Date": "2024-09-11T05:09:14.8622296Z",
- "Epoch": 577,
+ "DAGsize": 5922352768,
+ "Date": "2024-09-13T13:10:52.3356136Z",
+ "Epoch": 578,
"Url": "https://whattomine.com/coins.json"
},
"REDEV2": {
@@ -649,37 +649,37 @@
},
"RVN": {
"Algorithm": "KawPow",
- "BlockHeight": 3493098,
+ "BlockHeight": 3496447,
"CoinName": "Raven",
- "DAGsize": 4991221376,
- "Date": "2024-09-11T05:09:15.0216444Z",
- "Epoch": 467,
- "Url": "https://minerstat.com/dag-size-calculator"
+ "DAGsize": 4999607168,
+ "Date": "2024-09-13T13:10:54.505704Z",
+ "Epoch": 468,
+ "Url": "https://prohashing.com/api/v1/currencies"
},
"SATOX": {
"Algorithm": "KawPow",
- "BlockHeight": 866426,
+ "BlockHeight": 869767,
"CoinName": "Sato",
"DAGsize": 2055208576,
- "Date": "2024-09-11T05:09:14.7951634Z",
+ "Date": "2024-09-13T13:10:52.201592Z",
"Epoch": 117,
"Url": "https://whattomine.com/coins.json"
},
"SCC": {
"Algorithm": "SCCpow",
- "BlockHeight": 985575,
+ "BlockHeight": 987183,
"CoinName": "StakeCubeCoin",
"DAGsize": 3640646528,
- "Date": "2024-09-11T05:09:16.5799142Z",
+ "Date": "2024-09-13T13:10:54.8245283Z",
"Epoch": 306,
"Url": "https://scc.ccore.online/api/getblockcount"
},
"SERO": {
"Algorithm": "ProgPowSero",
- "BlockHeight": 13413710,
+ "BlockHeight": 13427626,
"CoinName": "Sero",
"DAGsize": 4840226176,
- "Date": "2024-09-11T05:09:14.7354093Z",
+ "Date": "2024-09-13T13:10:52.1190153Z",
"Epoch": 449,
"Url": "https://whattomine.com/coins.json"
},
@@ -694,10 +694,10 @@
},
"TLS": {
"Algorithm": "ProgPowTelestai",
- "BlockHeight": 55733,
+ "BlockHeight": 59026,
"CoinName": "Telestai",
"DAGsize": 1124070016,
- "Date": "2024-09-11T05:09:16.4646815Z",
+ "Date": "2024-09-13T13:08:49.3304893Z",
"Epoch": 6,
"Url": "https://telestai.cryptoscope.io/api/getblockcount/"
},
@@ -706,7 +706,7 @@
"BlockHeight": 5517628,
"CoinName": "",
"DAGsize": 2625631616,
- "Date": "2024-09-11T05:09:15.0489109Z",
+ "Date": "2024-09-13T13:10:52.6787646Z",
"Epoch": 185,
"Url": "https://minerstat.com/dag-size-calculator"
},
@@ -721,11 +721,11 @@
},
"XNA": {
"Algorithm": "KawPow",
- "BlockHeight": 732248,
+ "BlockHeight": 735593,
"CoinName": "Neurai",
- "DAGsize": 1904212096,
- "Date": "2024-09-11T05:09:14.7852224Z",
- "Epoch": 99,
+ "DAGsize": 1912601216,
+ "Date": "2024-09-13T13:10:52.1621318Z",
+ "Epoch": 100,
"Url": "https://whattomine.com/coins.json"
},
"XPB": {
@@ -739,23 +739,23 @@
},
"ZANO": {
"Algorithm": "ProgPowZ",
- "BlockHeight": 2805034,
+ "BlockHeight": 2808334,
"CoinName": "Zano",
"DAGsize": 1870656896,
- "Date": "2024-09-11T05:09:14.761432Z",
+ "Date": "2024-09-13T13:10:52.0971305Z",
"Epoch": 95,
"Url": "https://whattomine.com/coins.json"
}
},
"Updated": {
- "https://api-explorer.blocxscan.com/api/getblockcount": "2024-09-11T05:11:25.0579614Z",
- "https://evr.cryptoscope.io/api/getblockcount": "2024-09-11T05:09:16.892045Z",
+ "https://api-explorer.blocxscan.com/api/getblockcount": "2024-09-13T13:10:54.9418562Z",
+ "https://evr.cryptoscope.io/api/getblockcount": "2024-09-13T13:10:55.1748475Z",
"https://mewc.cryptoscope.io/api/getblockcount": "2024-07-14T13:29:49.1181315Z",
- "https://minerstat.com/dag-size-calculator": "2024-09-11T05:09:15.1111173Z",
- "https://prohashing.com/api/v1/currencies": "2024-09-11T05:09:16.3105579Z",
- "https://scc.ccore.online/api/getblockcount": "2024-09-11T05:09:16.580234Z",
- "https://telestai.cryptoscope.io/api/getblockcount/": "2024-09-11T05:09:16.4650846Z",
- "https://whattomine.com/coins.json": "2024-09-11T05:09:14.8670911Z",
+ "https://minerstat.com/dag-size-calculator": "2024-09-13T13:10:53.4309219Z",
+ "https://prohashing.com/api/v1/currencies": "2024-09-13T13:10:54.6078402Z",
+ "https://scc.ccore.online/api/getblockcount": "2024-09-13T13:10:54.8248518Z",
+ "https://telestai.cryptoscope.io/api/getblockcount/": "2024-09-13T13:08:49.3308267Z",
+ "https://whattomine.com/coins.json": "2024-09-13T13:10:52.3443738Z",
"https://www.coinexplorer.net/api/v1/SCC/getblockcount": "2024-09-02T06:05:35.3039058Z",
"https://zergpool.com/api/currencies": "2024-08-26T19:03:15.0996499Z"
}
diff --git a/Includes/APIServer.psm1 b/Includes/APIServer.psm1
index c5099801..0c99af96 100644
--- a/Includes/APIServer.psm1
+++ b/Includes/APIServer.psm1
@@ -18,13 +18,13 @@ along with this program. If not, see .
<#
Product: UG-Miner
File: \Includes\APIServer.psm1
-Version: 6.3.3
-Version date: 2024/09/11
+Version: 6.3.4
+Version date: 2024/09/13
#>
Function Start-APIServer {
- $APIVersion = "0.5.4.20"
+ $APIVersion = "0.5.4.22"
If ($Variables.APIRunspace.AsyncObject.IsCompleted -or $Config.APIport -ne $Variables.APIRunspace.APIport) {
Stop-APIServer
@@ -833,7 +833,7 @@ Function Start-APIServer {
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)
+ $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)
Break
}
"/miners/available" {
@@ -876,7 +876,7 @@ Function Start-APIServer {
}
"/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 })
+ $Data = ConvertTo-Json -Depth 4 @($Variables.MinersOptimal | Select-Object -ExcludeProperty Arguments, Data, DataReaderJob, DataSampleTimestamp, Devices, EnvVars, PoolNames, Process, ProcessJob, SideIndicator, StatEnd, StatStart, ValidDataSampleTimestamp)
Remove-Variable Bias
Break
}
diff --git a/Includes/BalancesTracker.ps1 b/Includes/BalancesTracker.ps1
index 97dc459e..4f69bf35 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.3.3
-Version date: 2024/09/11
+Version: 6.3.4
+Version date: 2024/09/13
#>
using module .\Include.psm1
diff --git a/Includes/Core.ps1 b/Includes/Core.ps1
index 26293e15..f8af8a34 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.3.3
-Version date: 2024/09/11
+Version: 6.3.4
+Version date: 2024/09/13
#>
using module .\Include.psm1
@@ -1000,7 +1000,7 @@ Try {
Write-Message -Level Info "Selecting best miner$(If (($Variables.EnabledDevices.Model | Select-Object -Unique).Count -gt 1) { " combinations" }) based on$(If ($Variables.CalculatePowerCost -and -not $Config.IgnorePowerCost) { " profit (power cost $($Config.FIATcurrency) $($Variables.PowerPricekWh)/kWâ‹…h)" } Else { " earnings" })..."
If ($Miners.Where({ $_.Available }).Count -eq 1) {
- $MinersBest = $Variables.MinersBestPerDevice = $Variables.MinersOptimal = $Miners.Where({ $_.Available })
+ $MinersBest = $Variables.MinersBestPerDevice = $MinersOptimal = $Miners.Where({ $_.Available })
}
Else {
$Bias = If ($Variables.CalculatePowerCost -and -not $Config.IgnorePowerCost) { "Profit_Bias" } Else { "Earning_Bias" }
@@ -1009,7 +1009,7 @@ Try {
$Miners.Where({ $_.Status -eq [MinerStatus]::Running }).ForEach({ $_.$Bias *= $RunningMinerBonusFactor })
# Get the optimal miners per algorithm and device
- $Variables.MinersOptimal = ($Miners.Where({ $_.Available -and -not ($_.Benchmark -or $_.MeasurePowerConsumption) }) | Group-Object { [String]$_.DeviceNames }, { [String]$_.Algorithms }).ForEach({ ($_.Group | Sort-Object -Descending -Property KeepRunning, Prioritize, $Bias, Activated, @{ Expression = { $_.WarmupTimes[1] + $_.MinDataSample }; Descending = $true }, @{ Expression = { [String]$_.Algorithms }; Descending = $false } -Top 1).ForEach({ $_.Optimal = $true; $_ }) })
+ $MinersOptimal = ($Miners.Where({ $_.Available -and -not ($_.Benchmark -or $_.MeasurePowerConsumption) }) | Group-Object { [String]$_.DeviceNames }, { [String]$_.Algorithms }).ForEach({ ($_.Group | Sort-Object -Descending -Property KeepRunning, Prioritize, $Bias, Activated, @{ Expression = { $_.WarmupTimes[1] + $_.MinDataSample }; Descending = $true }, @{ Expression = { [String]$_.Algorithms }; Descending = $false } -Top 1).ForEach({ $_.Optimal = $true; $_ }) })
# Get the best miners per device
$Variables.MinersBestPerDevice = ($Miners.Where({ $_.Available }) | Group-Object { [String]$_.DeviceNames }).ForEach({ $_.Group | Sort-Object -Descending -Property Benchmark, MeasurePowerConsumption, KeepRunning, Prioritize, $Bias, Activated, @{ Expression = { $_.WarmupTimes[1] + $_.MinDataSample }; Descending = $true } -Top 1 })
$Variables.MinerDeviceNamesCombinations = (Get-Combination @($Variables.MinersBestPerDevice | Select-Object DeviceNames -Unique)).Where({ (Compare-Object ($_.Combination | Select-Object -ExpandProperty DeviceNames -Unique) ($_.Combination | Select-Object -ExpandProperty DeviceNames) | Measure-Object).Count -eq 0 })
@@ -1039,7 +1039,7 @@ Try {
# Revert running miner bonus
$Miners.Where({ $_.Status -eq [MinerStatus]::Running }).ForEach({ $_.$Bias /= $RunningMinerBonusFactor })
- Remove-Variable Bias, MinerCombinations, MinerDeviceNameCount, RunningMinerBonusFactor, SmallestBias -ErrorAction Ignore
+ Remove-Variable MinerCombinations, MinerDeviceNameCount, RunningMinerBonusFactor, SmallestBias -ErrorAction Ignore
}
$Variables.PowerConsumptionIdleSystemW = (($Config.PowerConsumptionIdleSystemW - ($MinersBest.Where({ $_.Type -eq "CPU" }) | Measure-Object PowerConsumption -Sum).Sum), 0 | Measure-Object -Maximum).Maximum
@@ -1052,10 +1052,9 @@ Try {
Else {
$Variables.PowerConsumptionIdleSystemW = (($Config.PowerConsumptionIdleSystemW), 0 | Measure-Object -Maximum).Maximum
$Variables.BasePowerCost = [Double]($Variables.PowerConsumptionIdleSystemW / 1000 * 24 * $Variables.PowerPricekWh / $Variables.Rates.($Config.PayoutCurrency).($Config.FIATcurrency))
- $Variables.MinersOptimal = $Variables.MinersBestPerDevice = $Variables.MinerDeviceNamesCombinations = $MinersBest = [Miner[]]@()
+ $Variables.MinersBestPerDevice = $Variables.MinerDeviceNamesCombinations = $MinersBest = $MinersOptimal = [Miner[]]@()
$Variables.MiningEarning = $Variables.MiningProfit = $Variables.MiningPowerCost = $Variables.MiningPowerConsumption = [Double]0
}
- Remove-Variable Bias -ErrorAction Ignore
}
$Variables.MinersNeedingBenchmark = $Miners.Where({ $_.Available -and $_.Benchmark }) | Sort-Object -Property Name -Unique
@@ -1212,9 +1211,10 @@ Try {
)
# Update data in API
- $Variables.Miners = $Miners.Where({ $_.SideIndicator -ne "<=" })
+ $Variables.Miners = $Miners.Where({ $_.SideIndicator -ne "<=" }) | Sort-Object @{ Expression = { $_.Best }; Descending = $true }, { [String]$_.DeviceNames }, Info
$Variables.MinersBest = $MinersBest | Sort-Object { [String]$_.DeviceNames }
- Remove-Variable Miners, MinersBest -ErrorAction Ignore
+ $Variables.MinersOptimal = $MinersOptimal | Sort-Object @{ Expression = { $_.Best }; Descending = $true }, { [String]$_.DeviceNames }, @{ Expression = $Bias; Descending = $true }
+ Remove-Variable Bias, Miners, MinersBest, MinersOptimal -ErrorAction Ignore
$Variables.Miners.ForEach({ $_.PSObject.Properties.Remove("SideIndicator") })
@@ -1500,6 +1500,9 @@ Try {
$Proc = Get-Process -Id $PID
Write-Message -Level MemDbg "$((Get-Item $MyInvocation.MyCommand.Path).BaseName) runspace: handles: $($Proc.HandleCount) / memory: $($Proc.PrivateMemorySize64 / 1mb) mb"
+ # Core suspended with P in MainLoop
+ While ($Variables.SuspendCycle) { Start-Sleep -Seconds 1 }
+
$Variables.RestartCycle = $true
If ($Variables.NewMiningStatus -eq "Running") { Write-Message -Level Info "Ending cycle$($Variables.EndCycleMessage)." }
@@ -1510,5 +1513,6 @@ Catch {
"$(Get-Date -Format "yyyy-MM-dd_HH:mm:ss")" >> $ErrorLogFile
$_.Exception | Format-List -Force >> $ErrorLogFile
$_.InvocationInfo | Format-List -Force >> $ErrorLogFile
- $Variables.EndCycleTime = $Variables.StartCycleTime.AddSeconds($Config.Interval) # Reset timers
+ # Reset timers
+ $Variables.EndCycleTime = [DateTime]::Now.ToUniversalTime()
}
\ No newline at end of file
diff --git a/Includes/Core_dev.ps1 b/Includes/Core_dev.ps1
deleted file mode 100644
index 05c203ea..00000000
--- a/Includes/Core_dev.ps1
+++ /dev/null
@@ -1,1530 +0,0 @@
-<#
-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: Core.ps1
-Version: 6.3.3
-Version date: 2024/09/11
-#>
-
-using module .\Include.psm1
-
-$ErrorLogFile = "Logs\$((Get-Item $MyInvocation.MyCommand.Path).BaseName)_Error_$(Get-Date -Format "yyyy-MM-dd").txt"
-
-Try {
- If ($Config.Transcript) { Start-Transcript -Path ".\Debug\$((Get-Item $MyInvocation.MyCommand.Path).BaseName)-Transcript_$(Get-Date -Format "yyyy-MM-dd_HH-mm-ss").log" }
-
- (Get-ChildItem -Path ".\Includes\MinerAPIs" -File).ForEach({ . $_.FullName })
-
- Do {
- Write-Message -Level Info "Started new cycle."
-
- If ($LegacyGUIform) { $host.UI.RawUI.WindowTitle }
-
- $Variables.EndCycleMessage = ""
-
- # Set master timer
- $Variables.Timer = [DateTime]::Now.ToUniversalTime()
-
- # Internet connection must be available
- $Global:DebugPreference = "SilentlyContinue"
- $NetworkInterface = (Get-NetConnectionProfile).Where({ $_.IPv4Connectivity -eq "Internet" }).InterfaceIndex
- $Variables.MyIP = If ($NetworkInterface) { (Get-NetIPAddress -InterfaceIndex $NetworkInterface -AddressFamily IPV4).IPAddress } Else { $null }
- $Global:DebugPreference = "Continue"
- Remove-Variable NetworkInterface
- If (-not $Variables.MyIP) {
- $Variables.Summary = "No internet connection - will retry in 60 seconds..."
- Write-Message -Level Error $Variables.Summary
- $Variables.RefreshNeeded = $true
- $Variables.RestartCycle = $true
-
- #Stop all miners
- ForEach ($Miner in $Variables.Miners.Where({ [MinerStatus]::Running, [MinerStatus]::DryRun -contains $_.Status })) {
- $Miner.SetStatus([MinerStatus]::Idle)
- $Variables.Devices.Where({ $Miner.DeviceNames -contains $_.Name }).ForEach({ $_.Status = $Miner.Status; $_.StatusInfo = $Miner.StatusInfo; $_.SubStatus = $Miner.SubStatus })
- }
- Remove-Variable Miner -ErrorAction Ignore
-
- $Variables.Miners.ForEach({ $_.Dispose })
- $Variables.Miners = [Miner[]]@()
- $Variables.MinersBenchmarkingOrMeasuring = [Miner[]]@()
- $Variables.MinersBest = [Miner[]]@()
- $Variables.MinersBestPerDevice = [Miner[]]@()
- $Variables.MinerDeviceNamesCombinations = [Miner[]]@()
- $Variables.MinersFailed = [Miner[]]@()
- $Variables.MinersMissingBinary = [Miner[]]@()
- $Variables.MissingMinerFirewallRule = [Miner[]]@()
- $Variables.MinersMissingPrerequisite = [Miner[]]@()
- $Variables.MinersOptimal = [Miner[]]@()
- $Variables.MinersRunning = [Miner[]]@()
-
- $Variables.MiningEarning = $Variables.MiningProfit = $Variables.MiningPowerCost = $Variables.MiningPowerConsumption = [Double]0
- $Variables.Remove("EndCycleTime")
- Start-Sleep -Seconds 60
- Continue
- }
-
- If ($Variables.NewMiningStatus -eq "Running") {
- # Read config only if config files have changed
- If ((Test-Path -Path $Variables.PoolsConfigFile) -and (Test-Path -Path $Variables.ConfigFile)) {
- If ($Variables.ConfigFileTimestamp -ne (Get-Item -Path $Variables.ConfigFile).LastWriteTime -or $Variables.PoolsConfigFileTimestamp -ne (Get-Item -Path $Variables.PoolsConfigFile).LastWriteTime) {
- [Void](Read-Config -ConfigFile $Variables.ConfigFile)
- Write-Message -Level Verbose "Activated changed configuration."
- }
- }
- }
-
- $Variables.PoolsConfig = $Config.PoolsConfig.Clone()
-
- # Tuning parameters require local admin rights
- $Variables.ApplyMinerTweaks = $Variables.IsLocalAdmin -and $Config.UseMinerTweaks
-
- # Must clear all existing miners & watchdog timers due to different miner names
- If ($Variables.Miners -and $Config.BenchmarkAllPoolAlgorithmCombinations -ne $Variables.BenchmarkAllPoolAlgorithmCombinations) {
- Write-Message -Level Info "Miner naming scheme has changed. Stopping all running miners..."
- # Stop all running miners
- ForEach ($Miner in $Variables.Miners.Where({ [MinerStatus]::DryRun, [MinerStatus]::Running -contains $_.Status })) {
- $Miner.SetStatus([MinerStatus]::Idle)
- $Variables.Devices.Where({ $Miner.DeviceNames -contains $_.Name }).ForEach({ $_.Status = $Miner.Status; $_.StatusInfo = $Miner.StatusInfo; $_.SubStatus = $Miner.SubStatus })
- }
-
- $Variables.Miners.ForEach({ $_.Dispose })
- $Variables.Miners = [Miner[]]@()
- $Variables.MinersBenchmarkingOrMeasuring = [Miner[]]@()
- $Variables.MinersBest = [Miner[]]@()
- $Variables.MinersBestPerDevice = [Miner[]]@()
- $Variables.MinerDeviceNamesCombinations = [Miner[]]@()
- $Variables.MinersFailed = [Miner[]]@()
- $Variables.MinersMissingBinary = [Miner[]]@()
- $Variables.MissingMinerFirewallRule = [Miner[]]@()
- $Variables.MinersMissingPrerequisite = [Miner[]]@()
- $Variables.MinersOptimal = [Miner[]]@()
- $Variables.MinersRunning = [Miner[]]@()
- $Variables.WatchdogTimers = [PSCustomObject[]]@()
-
- $Variables.MiningEarning = $Variables.MiningProfit = $Variables.MiningPowerCost = $Variables.MiningPowerConsumption = [Double]0
- }
-
- # Use values from config
- $Variables.BenchmarkAllPoolAlgorithmCombinations = $Config.BenchmarkAllPoolAlgorithmCombinations
- $Variables.NiceHashWalletIsInternal = $Config.NiceHashWalletIsInternal
- $Variables.PoolTimeout = [Math]::Floor($Config.PoolTimeout)
-
- If ($Variables.EnabledDevices = [Device[]]@($Variables.Devices.Where({ $_.State -ne [DeviceState]::Unsupported -and $_.Name -notin $Config.ExcludeDeviceName }).ForEach({ $_ | Select-Object -Property * }))) {
- # Update enabled devices
- $Variables.EnabledDevices.ForEach(
- {
- # Miner name must not contain spaces
- $_.Model = $_.Model -replace " "
- If ($_.Type -eq "GPU") {
- # For GPUs set type equal to vendor
- $_.Type = $_.Vendor
- }
- }
- )
-
- # Power cost preparations
- If ($Variables.CalculatePowerCost = $Config.CalculatePowerCost) {
- If ($Variables.EnabledDevices.Count -ge 1) {
- # HWiNFO64 verification
- $RegistryPath = "HKCU:\Software\HWiNFO64\VSB"
- If ($RegValue = Get-ItemProperty -Path $RegistryPath -ErrorAction Ignore) {
- $HWiNFO64RegTime = Get-RegTime "HKCU:\Software\HWiNFO64\VSB"
- If ($Variables.HWiNFO64RegTime -eq $HWiNFO64RegTime.AddSeconds(5)) {
- Write-Message -Level Warn "Power consumption data in registry has not been updated since $($Variables.HWiNFO64RegTime.ToString("yyyy-MM-dd HH:mm:ss")) [HWiNFO64 not running???] - disabling power consumption readout and profit calculations."
- $Variables.CalculatePowerCost = $false
- }
- Else {
- $Variables.HWiNFO64RegTime = $HWiNFO64RegTime
- $PowerConsumptionData = @{ }
- $DeviceName = ""
- $RegValue.PSObject.Properties.Where({ $_.Name -match "^Label[0-9]+$" -and (Compare-Object @($_.Value -split " " | Select-Object) @($Variables.EnabledDevices.Name) -IncludeEqual -ExcludeDifferent) }).ForEach(
- {
- $DeviceName = ($_.Value -split " ")[-1]
- Try {
- $PowerConsumptionData[$DeviceName] = $RegValue.($_.Name -replace "Label", "Value")
- }
- Catch {
- Write-Message -Level Warn "HWiNFO64 sensor naming is invalid [duplicate sensor for $DeviceName] - disabling power consumption and profit calculations."
- $Variables.CalculatePowerCost = $false
- }
- }
- )
- # Add configured power consumption
- $Variables.Devices.Name.ForEach(
- {
- $DeviceName = $_
- If ($ConfiguredPowerConsumption = $Config.PowerConsumption.$_ -as [Double]) {
- If ($Variables.EnabledDevices.Name -contains $_ -and -not $PowerConsumptionData.$_) { Write-Message -Level Info "HWiNFO64 cannot read power consumption data for device ($_). Using configured value of $ConfiguredPowerConsumption W." }
- $PowerConsumptionData[$_] = "$ConfiguredPowerConsumption W"
- }
- $Variables.EnabledDevices.Where({ $_.Name -eq $DeviceName }).ForEach({ $_.ConfiguredPowerConsumption = $ConfiguredPowerConsumption })
- $Variables.Devices.Where({ $_.Name -eq $DeviceName }).ForEach({ $_.ConfiguredPowerConsumption = $ConfiguredPowerConsumption })
- }
- )
- If ($DeviceNamesMissingSensor = (Compare-Object @($Variables.EnabledDevices.Name) @($PowerConsumptionData.psBase.Keys) -PassThru).Where({ $_.SideIndicator -eq "<=" })) {
- Write-Message -Level Warn "HWiNFO64 sensor naming is invalid [missing sensor configuration for $($DeviceNamesMissingSensor -join ", ")] - disabling power consumption and profit calculations."
- $Variables.CalculatePowerCost = $false
- }
-
- # Enable read power consumption for configured devices
- $Variables.EnabledDevices.ForEach({ $_.ReadPowerConsumption = $PowerConsumptionData.psBase.Keys -contains $_.Name })
- Remove-Variable ConfiguredPowerConsumption, DeviceName, DeviceNamesMissingSensor, PowerConsumptionData, HWiNFO64RegTime -ErrorAction Ignore
- }
- }
- Else {
- Write-Message -Level Warn "Cannot read power consumption data from registry [Key '$RegistryPath' does not exist - HWiNFO64 not running???] - disabling power consumption and profit calculations."
- $Variables.CalculatePowerCost = $false
- }
- Remove-Variable RegistryPath, RegValue -ErrorAction Ignore
- }
- Else { $Variables.CalculatePowerCost = $false }
- }
- If (-not $Variables.CalculatePowerCost ) {
- $Variables.EnabledDevices.ForEach({ $_.ReadPowerConsumption = $false })
- }
-
- # Power price
- If (-not $Config.PowerPricekWh.psBase.Keys) { $Config.PowerPricekWh."00:00" = 0 }
- ElseIf ($null -eq $Config.PowerPricekWh."00:00") {
- # 00:00h power price is the same as the latest price of the previous day
- $Config.PowerPricekWh."00:00" = $Config.PowerPricekWh.($Config.PowerPricekWh.psBase.Keys | Sort-Object -Bottom 1)
- }
- $Variables.PowerPricekWh = [Double]($Config.PowerPricekWh.($Config.PowerPricekWh.psBase.Keys.Where({ $_ -le (Get-Date -Format HH:mm).ToString() }) | Sort-Object -Bottom 1))
- $Variables.PowerCostBTCperW = [Double](1 / 1000 * 24 * $Variables.PowerPricekWh / $Variables.Rates.($Config.PayoutCurrency).($Config.FIATcurrency))
-
- # Core suspended with P in MainLoop
- While ($Variables.SuspendCycle) { Start-Sleep -Seconds 1 }
-
- If ($Variables.ConfigReadTimestamp -lt $Variables.Timer -and $Variables.Miners -and $Variables.Pools -and ($Variables.PoolDataCollectedTimeStamp.AddSeconds($Config.Interval) -ge [DateTime]::Now.ToUniversalTime() -and (Compare-Object @($Config.ExtraCurrencies | Select-Object) @($Variables.AllCurrencies | Select-Object)).Where({ $_.SideIndicator -ne "<=" }))) {
- # Skip some stuff when previous cycle was shorter than one cycle duration
- Write-Message -Level Info "Using $($Variables.Pools.Count) pool$(If ($Variables.Pools.Count -ne 1) { "s" }) from previous cycle$(If ($Variables.Pools.Where({ -not $_.Available })) { ", filtered out $(@($Variables.Pools.Where({ -not $_.Available })).Count) pool$(If (@($Variables.Pools.Where({ -not $_.Available })).Count -ne 1) { "s" })" }). $(@($Variables.Pools.Where({ $_.Available })).Count) available pool$(If (@($Variables.Pools.Where({ $_.Available })).Count -ne 1) { "s" }) remain$(If (@($Variables.Pools.Where({ $_.Available })).Count -eq 1) { "s" })."
-
- # Apply watchdog to pools
- Update-PoolWatchdog -Pools $Variables.Pools
-
- $Variables.EndCycleTime = [DateTime]::Now.ToUniversalTime().AddSeconds($Config.Interval)
- }
- Else {
- $Variables.BeginCycleTime = $Variables.Timer
- $Variables.EndCycleTime = $Variables.Timer.AddSeconds($Config.Interval)
-
- $Variables.CycleStarts += $Variables.Timer
- $Variables.CycleStarts = @($Variables.CycleStarts | Sort-Object -Bottom (3, ($Config.SyncWindow + 1) | Measure-Object -Maximum).Maximum)
-
- # Set minimum Watchdog count 3
- $Variables.WatchdogCount = (3, $Config.WatchdogCount | Measure-Object -Maximum).Maximum
- $Variables.WatchdogReset = $Variables.WatchdogCount * $Variables.WatchdogCount * $Variables.WatchdogCount * $Variables.WatchdogCount * $Config.Interval
-
- # Expire watchdog timers
- If ($Config.Watchdog) { $Variables.WatchdogTimers = @($Variables.WatchdogTimers.Where({ $_.Kicked -ge $Variables.Timer.AddSeconds( - $Variables.WatchdogReset) })) }
- Else { $Variables.WatchdogTimers = [PSCustomObject[]]@() }
-
- # Check for new version
- If ($Config.AutoUpdateCheckInterval -and $Variables.CheckedForUpdate -lt [DateTime]::Now.AddDays(-$Config.AutoUpdateCheckInterval)) { Get-Version }
-
- # Load unprofitable algorithms
- Try {
- If (-not $Variables.UnprofitableAlgorithms -or (Get-ChildItem -Path ".\Data\UnprofitableAlgorithms.json").LastWriteTime -gt $Variables.Timer.AddSeconds( - $Config.Interval)) {
- $Variables.UnprofitableAlgorithms = [System.IO.File]::ReadAllLines("$PWD\Data\UnprofitableAlgorithms.json") | ConvertFrom-Json -ErrorAction Stop -AsHashtable | Get-SortedObject
- Write-Message -Level Info "Loaded list of unprofitable algorithms ($($Variables.UnprofitableAlgorithms.Count) $(If ($Variables.UnprofitableAlgorithms.Count -ne 1) { "entries" } Else { "entry" }))."
- }
- }
- Catch {
- Write-Message -Level Error "Error loading list of unprofitable algorithms. File '.\Data\UnprofitableAlgorithms.json' is not a valid $($Variables.Branding.ProductLabel) JSON data file. Please restore it from your original download."
- $Variables.UnprofitableAlgorithms = @{ }
- }
-
- If ($Config.Donation -gt 0) {
- If (-not $Variables.DonationStart) {
- # Re-Randomize donation start and data once per day, do not donate if remaing time for today is less than donation duration
- If (($Variables.DonationLog.Start | Sort-Object -Bottom 1).Date -ne [DateTime]::Today) {
- If ($Config.Donation -lt (1440 - [Math]::Floor([DateTime]::Now.TimeOfDay.TotalMinutes))) {
- $Variables.DonationStart = [DateTime]::Now.AddMinutes((Get-Random -Minimum 0 -Maximum (1440 - [Math]::Floor([DateTime]::Now.TimeOfDay.TotalMinutes) - $Config.Donation)))
- }
- # $Variables.DonationStart = [DateTime]::Now
- }
- }
-
- If ($Variables.DonationStart -and [DateTime]::Now -ge $Variables.DonationStart) {
- If (-not $Variables.DonationEnd) {
- $Variables.DonationStart = [DateTime]::Now
- # Add pool config to config (in-memory only)
- $Variables.DonationRandomPoolsConfig = Get-RandomDonationPoolsConfig
- # Ensure full donation period
- $Variables.DonationEnd = $Variables.DonationStart.AddMinutes($Config.Donation)
- $Variables.EndCycleTime = ($Variables.DonationEnd).ToUniversalTime()
- Write-Message -Level Info "Donation run: Mining for '$($Variables.DonationRandom.Name)' for the next $(If (($Config.Donation - ([DateTime]::Now - $Variables.DonationStart).Minutes) -gt 1) { "$($Config.Donation - ([DateTime]::Now - $Variables.DonationStart).Minutes) minutes" } Else { "minute" })."
- $Variables.DonationRunning = $true
- }
- }
- }
-
- If ($Variables.DonationRunning) {
- If ($Config.Donation -gt 0 -and [DateTime]::Now -lt $Variables.DonationEnd) {
- # Use donation pool config
- $Variables.PoolName = $Variables.DonationRandomPoolsConfig.Keys
- $Variables.PoolsConfig = $Variables.DonationRandomPoolsConfig
- $Variables.NiceHashWalletIsInternal = $false
- }
- Else {
- # Donation end
- $Variables.DonationLog = $Variables.DonationLog | Select-Object -Last 365 # Keep data for one year
- [Array]$Variables.DonationLog += [PSCustomObject]@{
- Start = $Variables.DonationStart
- End = $Variables.DonationEnd
- Name = $Variables.DonationRandom.Name
- }
- $Variables.DonationLog | ConvertTo-Json | Out-File -LiteralPath ".\Logs\DonateLog.json" -Force -ErrorAction Ignore
- $Variables.DonationRandomPoolsConfig = $null
- $Variables.DonationStart = $null
- $Variables.DonationEnd = $null
- $Variables.PoolsConfig = $Config.PoolsConfig.Clone()
- Write-Message -Level Info "Donation run complete - thank you! Mining for you again. :-)"
- $Variables.DonationRunning = $false
- }
- }
-
- # Stop / Start brain background jobs
- If ($BrainsToStop = (Compare-Object @(Get-PoolBaseName $Config.PoolName | Select-Object) @(Get-PoolBaseName $Variables.PoolName | Select-Object) | Where-Object SideIndicator -EQ "=>").InputObject) {
- [Void](Stop-Brain $BrainsToStop)
- }
- Remove-Variable BrainsToStop
- $Variables.PoolName = $Config.PoolName
- [Void](Start-Brain @(Get-PoolBaseName $Variables.PoolName))
-
- # Core suspended with P in MainLoop
- While ($Variables.SuspendCycle) { Start-Sleep -Seconds 1 }
-
- # Remove stats that have been deleted from disk
- Try {
- If ($StatFiles = [String[]](Get-ChildItem -Path "Stats" -File).BaseName) {
- If ($Keys = [String[]]($Stats.psBase.Keys)) {
- (Compare-Object $StatFiles $Keys -PassThru).Where({ $_.SideIndicator -eq "=>" }).ForEach(
- {
- # Remove stat if deleted on disk
- $Stats.Remove($_)
- }
- )
- }
- }
- }
- Catch {}
- Remove-Variable Keys, StatFiles -ErrorAction Ignore
-
- # Get DAG data
- [Void](Update-DAGdata)
-
- # Core suspended with P in MainLoop
- While ($Variables.SuspendCycle) { Start-Sleep -Seconds 1 }
-
- # Collect pool data
- $Variables.PoolsCount = $Variables.Pools.Count
-
- If ($Variables.PoolName) {
- # Wait for pool data message
- If ($Variables.Brains.psBase.Keys.Where({ $Variables.Brains[$_].StartTime -gt $Variables.Timer.AddSeconds(- $Config.Interval) })) {
- # Newly started brains, allow extra time for brains to get ready
- $Variables.PoolTimeout = 60
- $Message = "Requesting initial pool data from $((Get-PoolBaseName $Variables.PoolName) -join ", " -replace ",([^,]*)$", ' &$1').
This may take up to $($Variables.PoolTimeout) seconds..."
- If ($Variables.CycleStarts.Count -le 1) {
- $Variables.Summary = $Message
- $Variables.RefreshNeeded = $true
- }
- Write-Message -Level Info ($Message -replace "
", " ")
- Remove-Variable Message
- }
- Else {
- Write-Message -Level Info "Requesting pool data from $((Get-PoolBaseName $Variables.PoolName) -join ", " -replace ",([^,]*)$", ' &$1')..."
- }
-
- # Wait for all brains
- $PoolDataCollectedTimeStamp = If ($Variables.PoolDataCollectedTimeStamp) { $Variables.PoolDataCollectedTimeStamp } Else { $Variables.ScriptStartTime }
- While ([DateTime]::Now.ToUniversalTime() -lt $Variables.Timer.AddSeconds($Variables.PoolTimeout) -and ($Variables.Brains.psBase.Keys.Where({ $Variables.Brains[$_].Updated -lt $PoolDataCollectedTimeStamp }))) {
- Start-Sleep -Seconds 1
- }
-
- $Variables.PoolsNew = $Variables.PoolName.ForEach(
- {
- $PoolName = Get-PoolBaseName $_
- If (Test-Path -LiteralPath ".\Pools\$PoolName.ps1") {
- Try {
- & ".\Pools\$PoolName.ps1" -Config $Config -PoolVariant $_ -Variables $Variables
- }
- Catch {
- Write-Message -Level Error "Error in pool file 'Pools\$PoolName.ps1'."
- "$(Get-Date -Format "yyyy-MM-dd_HH:mm:ss")" >> $ErrorLogFile
- $_.Exception | Format-List -Force >> $ErrorLogFile
- $_.InvocationInfo | Format-List -Force >> $ErrorLogFile
- }
- }
- }
- ).Where(
- {
- $_.Updated -gt $PoolDataCollectedTimeStamp
- }
- ).ForEach(
- {
- $Pool = $_
- Try {
- $Pool = [Pool]$_
- $Pool.Fee = If ($Config.IgnorePoolFee -or $Pool.Fee -lt 0 -or $Pool.Fee -gt 1) { 0 } Else { $Pool.Fee }
- $Factor = $Pool.EarningsAdjustmentFactor * (1 - $Pool.Fee)
- $Pool.Price *= $Factor
- $Pool.Price_Bias = $Pool.Price * $Pool.Accuracy
- $Pool.StablePrice *= $Factor
- $Pool.CoinName = $Variables.CoinNames[$Pool.Currency]
- $Pool
- }
- Catch {
- Write-Message -Level Error "Failed to add pool '$($Pool.Variant) [$($Pool.Algorithm)]' ($($Pool | ConvertTo-Json -Compress))"
- "$(Get-Date -Format "yyyy-MM-dd_HH:mm:ss")" >> $ErrorLogFile
- $_.Exception | Format-List -Force >> $ErrorLogFile
- $_.InvocationInfo | Format-List -Force >> $ErrorLogFile
- }
- }
- )
- Remove-Variable Factor, Pool, PoolDataCollectedTimeStamp, PoolName -ErrorAction Ignore
-
- If ($PoolsWithoutData = Compare-Object @($Variables.PoolName) @($Variables.PoolsNew.Variant | Sort-Object -Unique) -PassThru) {
- Write-Message -Level Warn "No data received from pool$(If ($PoolsWithoutData.Count -gt 1) { "s" }) $($PoolsWithoutData -join ", " -replace ",([^,]*)$", ' &$1')."
- }
- Remove-Variable PoolsWithoutData
- $Variables.PoolDataCollectedTimeStamp = [DateTime]::Now.ToUniversalTime()
-
- # Expire pools that have not been updated for 1 day
- $Timestamp = [DateTime]::Now.ToUniversalTime().AddHours(-24)
- $Variables.PoolsExpired = @($Variables.Pools.Where({ $_.Updated -lt $Timestamp }))
- $Variables.Pools = $Variables.Pools.Where({ $_.Updated -ge $Timestamp })
- Remove-Variable Timestamp
-
- # Remove de-configured pools
- $PoolsDeconfiguredCount = $Variables.Pools.Where({ $_.Variant -notin $Variables.PoolName }).Count
-
- If ($Pools = Compare-Object @($Variables.PoolsNew | Select-Object) @($Variables.Pools.Where({ $Variables.PoolName -contains $_.Variant }) | Select-Object) -Property Algorithm, Variant -IncludeEqual -PassThru) {
- # Find added & updated pools
- $Variables.PoolsAdded = $Pools.Where({ $_.SideIndicator -eq "<=" })
- $Variables.PoolsUpdated = $Pools.Where({ $_.SideIndicator -eq "==" })
-
- $Pools.ForEach(
- {
- $_.Best = $false
- $_.Prioritize = $false
-
- # PoolPorts[0] = non-SSL, PoolPorts[1] = SSL
- $_.PoolPorts = $(If ($Config.SSL -ne "Always" -and $_.Port) { [UInt16]$_.Port } Else { $null }), $(If ($Config.SSL -ne "Never" -and $_.PortSSL) { [UInt16]$_.PortSSL } Else { $null })
-
- If ($_.Algorithm -match $Variables.RegexAlgoHasDAG) {
- If (-not $Variables.PoolData.($_.Name).ProfitSwitching -and $Variables.DAGdata.Currency.($_.Currency).BlockHeight) {
- $_.BlockHeight = $Variables.DAGdata.Currency.($_.Currency).BlockHeight
- $_.Epoch = $Variables.DAGdata.Currency.($_.Currency).Epoch
- $_.DAGSizeGiB = $Variables.DAGdata.Currency.($_.Currency).DAGsize / 1GB
- }
- ElseIf ($Variables.DAGdata.Algorithm.($_.Algorithm).BlockHeight) {
- $_.BlockHeight = $Variables.DAGdata.Algorithm.($_.Algorithm).BlockHeight
- $_.Epoch = $Variables.DAGdata.Algorithm.($_.Algorithm).Epoch
- $_.DAGSizeGiB = $Variables.DAGdata.Algorithm.($_.Algorithm).DAGsize / 1GB
- }
- }
- If ($_.Algorithm -match $Variables.RegexAlgoHasDynamicDAG -and $_.DAGSizeGiB) {
- $_.AlgorithmVariant = "$($_.Algorithm)($([Math]::Ceiling($_.DAGSizeGiB))GiB)"
- }
- Else {
- $_.AlgorithmVariant = $_.Algorithm
- }
- }
- )
-
- # Lower accuracy on older pool data
- $Pools.Where({ $_.Updated -lt $Variables.CycleStarts[0] }).ForEach({ $_.Price_Bias *= [Math]::Pow(0.9, ($Variables.CycleStarts[0] - $_.Updated).TotalMinutes) })
-
- # Pool disabled by stat file
- $Pools.Where({ $_.Disabled }).ForEach({ $_.Reasons.Add("Disabled (by Stat file)") })
- # Min accuracy not reached
- $Pools.Where({ $_.Accuracy -lt $Config.MinAccuracy }).ForEach({ $_.Reasons.Add("MinAccuracy ($($Config.MinAccuracy * 100)%) not reached") })
- # Filter unavailable algorithms
- If ($Config.MinerSet -lt 3) { $Pools.Where({ $Variables.UnprofitableAlgorithms[$_.Algorithm] -eq "*" }).ForEach({ $_.Reasons.Add("Unprofitable Algorithm") }) }
- # Pool price 0
- $Pools.Where({ $_.Price -eq 0 }).ForEach({ $_.Reasons.Add("Price -eq 0") })
- # No price data
- $Pools.Where({ $_.Price -eq [Double]::NaN }).ForEach({ $_.Reasons.Add("No price data") })
- # Ignore pool if price is more than $Config.UnrealPoolPriceFactor higher than average of all pools with same algorithm & currency; NiceHash & MiningPoolHub are always right
- If ($Config.UnrealPoolPriceFactor -gt 1 -and ($Pools.Name | Sort-Object -Unique).Count -gt 1) {
- ($Pools.Where({ $_.Price_Bias -gt 0 }) | Group-Object -Property Algorithm, Currency).Where({ $_.Count -ge 2 }).ForEach(
- {
- If ($PriceThreshold = ($_.Group.Price_Bias | Measure-Object -Average).Average * $Config.UnrealPoolPriceFactor) {
- $_.Group.Where({ $_.Name -notin @("NiceHash", "MiningPoolHub") -and $_.Price_Bias -gt $PriceThreshold }).ForEach({ $_.Reasons.Add("Unreal price ($($Config.UnrealPoolPriceFactor)x higher than average price)") })
- }
- }
- )
- Remove-Variable PriceThreshold -ErrorAction Ignore
- }
- If ($Config.Algorithm -like "+*") {
- # Filter non-enabled algorithms
- $Pools.Where({ $Config.Algorithm -notcontains "+$($_.Algorithm)" }).ForEach({ $_.Reasons.Add("Algorithm not enabled in generic config") })
- $Pools.Where({ $Variables.PoolsConfig[$_.Name].Algorithm -like "+*" -and $Variables.PoolsConfig.$($_.Name).Algorithm -notcontains "+$($_.Algorithm)" }).ForEach({ $_.Reasons.Add("Algorithm not enabled in $($_.Name) pool config") })
- }
- Else {
- # Filter disabled algorithms
- $Pools.Where({ $Config.Algorithm -contains "-$($_.Algorithm)" }).ForEach({ $_.Reasons.Add("Algorithm disabled (``-$($_.Algorithm)`` in generic config)") })
- $Pools.Where({ $Variables.PoolsConfig[$_.Name].Algorithm -contains "-$($_.Algorithm)" }).ForEach({ $_.Reasons.Add("Algorithm disabled (``-$($_.Algorithm)`` in $($_.Name) pool config)") })
- $Pools.Where({ $Config.Algorithm -contains "-$($_.AlgorithmVariant)" }).ForEach({ $_.Reasons.Add("Algorithm disabled (``-$($_.AlgorithmVariant)`` in generic config)") })
- $Pools.Where({ $Variables.PoolsConfig[$_.Name].Algorithm -contains "-$($_.AlgorithmVariant)" }).ForEach({ $_.Reasons.Add("Algorithm disabled (``-$($_.AlgorithmVariant)`` in $($_.Name) pool config)") })
- }
- If ($Config.Currency -like "+*") {
- # Filter non-enabled currencies
- $Pools.Where({ $Config.Currency -notcontains "+$($_.Currency)" }).ForEach({ $_.Reasons.Add("Currency not enabled in generic config") })
- $Pools.Where({ $Variables.PoolsConfig[$_.Name].Currency -like "+*" -and $Variables.PoolsConfig.$($_.Name).Currency -notcontains "+$($_.Currency)" }).ForEach({ $_.Reasons.Add("Currency not enabled in $($_.Name) pool config") })
- }
- Else {
- # Filter disabled currencies
- $Pools.Where({ $Config.Currency -contains "-$($_.Currency)" }).ForEach({ $_.Reasons.Add("Currency disabled (``-$($_.Currency)`` in generic config)") })
- $Pools.Where({ $Variables.PoolsConfig[$_.Name].Currency -contains "-$($_.Currency)" }).ForEach({ $_.Reasons.Add("Currency disabled (``-$($_.Currency)`` in $($_.Name) pool config)") })
- }
- # MinWorkers
- $Pools.Where({ $null -ne $_.Workers -and $_.Workers -lt $Variables.PoolsConfig[$_.Name].MinWorker }).ForEach({ $_.Reasons.Add("Not enough workers at pool (MinWorker ``$($Variables.PoolsConfig[$_.Name].MinWorker)`` in $($_.Name) pool config)") })
- $Pools.Where({ $null -ne $_.Workers -and $_.Workers -lt $Config.MinWorker }).ForEach({ $_.Reasons.Add("Not enough workers at pool (MinWorker ``$($Config.MinWorker)`` in generic config)") })
- # SSL
- $Pools.Where({ $Variables.PoolsConfig[$_.Name].SSL -eq "Never" }).ForEach({ $_.PoolPorts[1] = $null })
- $Pools.Where({ $Variables.PoolsConfig[$_.Name].SSL -eq "Always" }).ForEach({ $_.PoolPorts[0] = $null })
- $Pools.Where({ $Variables.PoolsConfig[$_.Name].SSL -eq "Never" -and -not $_.PoolPorts[0] }).ForEach({ $_.Reasons.Add("Non-SSL port not available (SSL -eq 'Never' in $($_.Name) pool config)") })
- $Pools.Where({ $Variables.PoolsConfig[$_.Name].SSL -eq "Always" -and -not $_.PoolPorts[1] }).ForEach({ $_.Reasons.Add("SSL port not available (SSL -eq 'Always' in $($_.Name) pool config)") })
- If ($Config.SSL -eq "Never") { $Pools.Where({ -not $_.PoolPorts[0] -and $_.Reasons -notmatch "Non-SSL port not available .+" }).ForEach({ $_.Reasons.Add("Non-SSL port not available (SSL -eq 'Never' in generic config)") }) }
- If ($Config.SSL -eq "Always") { $Pools.Where({ -not $_.PoolPorts[1] -and $_.Reasons -notmatch "SSL port not available .+" }).ForEach({ $_.Reasons.Add("SSL port not available (SSL -eq 'Always' in generic config)") }) }
- # SSL Allow selfsigned certificate
- $Pools.Where({ $_.SSLselfSignedCertificate -and $Variables.PoolsConfig[$_.Name].SSLallowSelfSignedCertificate -ne $null -and $Variables.PoolsConfig[$_.Name].SSLallowSelfSignedCertificate -eq $false }).ForEach({ $_.Reasons.Add("Pool uses self signed certificate (SSLallowSelfSignedCertificate -eq '`$false' in $($_.Name) pool config)") })
- If (-not $Config.SSLallowSelfSignedCertificate) { $Pools.Where({ $_.SSLselfSignedCertificate -and $Variables.PoolsConfig[$_.Name].SSLallowSelfSignedCertificate -eq $null }).ForEach({ $_.Reasons.Add("Pool uses self signed certificate (SSLallowSelfSignedCertificate -eq '`$false' in generic config)") }) }
- # At least one port (SSL or non-SSL) must be available
- $Pools.Where({ -not ($_.PoolPorts | Select-Object) }).ForEach({ $_.Reasons.Add("No ports available") })
-
- # Apply watchdog to pools
- Update-PoolWatchdog -Pools $Pools
-
- # Make pools unavailable
- $Pools.ForEach({ $_.Available = -not [Boolean]$_.Reasons })
-
- # Filter pools on miner set
- If ($Config.MinerSet -lt 2) {
- $Pools.Where({ $Variables.UnprofitableAlgorithms[$_.Algorithm] -eq 1 }).ForEach({ $_.Reasons.Add("Unprofitable primary algorithm") })
- $Pools.Where({ $Variables.UnprofitableAlgorithms[$_.Algorithm] -eq 2 }).ForEach({ $_.Reasons.Add("Unprofitable secondary algorithm") })
- }
-
- If ($Variables.Pools.Count -gt 0) {
- Write-Message -Level Info "Had $($Variables.PoolsCount) pool$(If ($Variables.PoolsCount -ne 1) { "s" })$(If ($Variables.PoolsExpired.Count) { ", expired $($Variables.PoolsExpired.Count) pool$(If ($Variables.PoolsExpired.Count -gt 1) { "s" })" })$(If ($PoolsDeconfiguredCount) { ", removed $PoolsDeconfiguredCount deconfigured pool$(If ($PoolsDeconfiguredCount -gt 1) { "s" })" })$(If ($Variables.PoolsAdded.Count) { ", found $($Variables.PoolsAdded.Count) new pool$(If ($Variables.PoolsAdded.Count -ne 1) { "s" })" }), updated $($Variables.PoolsUpdated.Count) pool$(If ($Variables.PoolsUpdated.Count -ne 1) { "s" })$(If ($Pools.Where({ -not $_.Available })) { ", filtered out $(@($Pools.Where({ -not $_.Available })).Count) pool$(If (@($Pools.Where({ -not $_.Available })).Count -ne 1) { "s" })" }). $(@($Pools.Where({ $_.Available })).Count) available pool$(If (@($Pools.Where({ $_.Available })).Count -ne 1) { "s" }) remain$(If (@($Pools.Where({ $_.Available })).Count -eq 1) { "s" })."
- }
- Else {
- Write-Message -Level Info "Found $($Variables.PoolsNew.Count) pool$(If ($Variables.PoolsNew.Count -ne 1) { "s" })$(If ($Variables.PoolsExpired.Count) { ", expired $($Variables.PoolsExpired.Count) pool$(If ($Variables.PoolsExpired.Count -gt 1) { "s" })" }), filtered out $(@($Pools.Where({ -not $_.Available })).Count) pool$(If (@($Pools.Where({ -not $_.Available })).Count -ne 1) { "s" }). $(@($Pools.Where({ $_.Available })).Count) available pool$(If (@($Pools.Where({ $_.Available })).Count -ne 1) { "s" }) remain$(If (@($Pools.Where({ $_.Available })).Count -eq 1) { "s" })."
- }
-
- # Keep pool balances alive; force mining at pool even if it is not the best for the algo
- If ($Config.BalancesKeepAlive -and $Global:BalancesTrackerRunspace -and $Variables.PoolsLastEarnings.Count -gt 0 -and $Variables.PoolsLastUsed) {
- $Variables.PoolNamesToKeepBalancesAlive = @()
- ForEach ($Pool in @($Pools.Where({ $_.Name -notin $Config.BalancesTrackerExcludePool }) | Sort-Object -Property Name -Unique)) {
- If ($Variables.PoolsLastEarnings[$Pool.Name] -and $Variables.PoolsConfig[$Pool.Name].BalancesKeepAlive -gt 0 -and ([DateTime]::Now.ToUniversalTime() - $Variables.PoolsLastEarnings[$Pool.Name]).Days -ge ($Variables.PoolsConfig[$Pool.Name].BalancesKeepAlive - 10)) {
- $Variables.PoolNamesToKeepBalancesAlive += $Pool.Name
- Write-Message -Level Warn "Pool '$($Pool.Name)' prioritized to avoid forfeiting balance (pool would clear balance in 10 days)."
- }
- }
- Remove-Variable Pool
-
- If ($Variables.PoolNamesToKeepBalancesAlive) {
- $Pools.ForEach(
- {
- If ($Variables.PoolNamesToKeepBalancesAlive -contains $_.Name) { $_.Available = $true; $_.Prioritize = $true }
- Else { $_.Reasons.Add("BalancesKeepAlive prioritizes other pools") }
- }
- )
- }
- }
- $Pools.Where({ $_.Reasons }).ForEach({ $_.Reasons = [System.Collections.Generic.List[String]]@($_.Reasons | Sort-Object -Unique) })
-
- # Mark best pools, allow all DAG pools (optimal pool might not fit in GPU memory)
- ($Pools.Where({ $_.Available }) | Group-Object Algorithm).ForEach({ ($_.Group | Sort-Object -Property Prioritize, Price_Bias -Bottom $(If ($Config.MinerUseBestPoolsOnly -or $_.Group.Algorithm -notmatch $Variables.RegexAlgoHasDAG) { 1 } Else { $_.Group.Count })).ForEach({ $_.Best = $true }) })
-
- $Pools.ForEach({ $_.PSObject.Properties.Remove("SideIndicator") })
- }
-
- # Update data in API
- $Variables.Pools = $Pools
-
- Remove-Variable Pools, PoolsDeconfiguredCount, PoolsExpiredCount -ErrorAction Ignore
-
- # Core suspended with P in MainLoop
- While ($Variables.SuspendCycle) { Start-Sleep -Seconds 1 }
- }
- Else {
- # No configuired pools, clear all pools
- $Variables.Pools = [Pool[]]@()
- }
-
- $Variables.PoolsBest = $Variables.Pools.Where({ $_.Best }) | Sort-Object -Property Algorithm
- }
-
- # Ensure we get the hashrate for running miners prior looking for best miner
- ForEach ($Miner in $Variables.MinersBest) {
- If ($Miner.DataReaderJob.HasMoreData -and $Miner.Status -ne [MinerStatus]::DryRun) {
- If ($Samples = @($Miner.DataReaderJob | Receive-Job).Where({ $_.Date })) {
- $Sample = $Samples[-1]
- If ([Math]::Floor(($Sample.Date - $Miner.ValidDataSampleTimestamp).TotalSeconds) -ge 0) { $Samples.Where({ $_.Hashrate.PSObject.Properties.Value -notcontains 0 }).ForEach({ $Miner.Data.Add($_) }) }
- $Miner.Hashrates_Live = $Sample.Hashrate.PSObject.Properties.Value
- # Hashrate from primary algorithm is relevant
- If ($Sample.Hashrate.($Miner.Algorithms[0])) {
- $Miner.DataSampleTimestamp = $Sample.Date
- }
- }
- Remove-Variable Sample, Samples -ErrorAction Ignore
- }
- If ($Miner.Data.Count -gt $Miner.MinDataSample * 5) { $Miner.Data = [System.Collections.Generic.List[PSCustomObject]]($Miner.Data | Select-Object -Last ($Miner.MinDataSample * 5)) } # Reduce data to MinDataSample * 5
-
- If ([MinerStatus]::Running, [MinerStatus]::DryRun -contains $Miner.Status) {
- If ($Miner.Status -eq [MinerStatus]::DryRun -or $Miner.GetStatus() -eq [MinerStatus]::Running) {
- $Miner.ContinousCycle ++
- If ($Config.Watchdog) {
- ForEach ($Worker in $Miner.WorkersRunning) {
- If ($WatchdogTimer = $Variables.WatchdogTimers.Where({ $_.MinerName -eq $Miner.Name -and $_.PoolName -eq $Worker.Pool.Name -and $_.PoolRegion -eq $Worker.Pool.Region -and $_.Algorithm -eq $Worker.Pool.Algorithm }) | Sort-Object -Property Kicked -Bottom 1) {
- # Update watchdog timers
- $WatchdogTimer.Kicked = [DateTime]::Now.ToUniversalTime()
- }
- Else {
- # Create watchdog timer in case it got cleared
- $Variables.WatchdogTimers += [PSCustomObject]@{
- Algorithm = $Worker.Pool.Algorithm
- AlgorithmVariant = $Worker.Pool.AlgorithmVariant
- DeviceNames = $Miner.DeviceNames
- Kicked = [DateTime]::Now.ToUniversalTime()
- MinerBaseName = $Miner.BaseName
- MinerName = $Miner.Name
- MinerBaseName_Version_Device = $Miner.BaseName_Version_Device
- MinerBaseName_Version = $Miner.BaseName, $Miner.Version -join '-'
- MinerVersion = $Miner.Version
- PoolName = $Worker.Pool.Name
- PoolRegion = $Worker.Pool.Region
- PoolVariant = $Worker.Pool.Variant
- CommandLine = $Miner.CommandLine
- }
- }
- }
- Remove-Variable WatchdogTimer, Worker -ErrorAction Ignore
- }
- If ($Miner.Status -eq [MinerStatus]::Running -and $Config.BadShareRatioThreshold -gt 0) {
- If ($Shares = ($Miner.Data | Select-Object -Last 1).Shares) {
- ForEach ($Algorithm in $Miner.Algorithms) {
- If ($Shares.$Algorithm -and $Shares.$Algorithm[1] -gt 0 -and $Shares.$Algorithm[3] -gt [Math]::Floor(1 / $Config.BadShareRatioThreshold) -and $Shares.$Algorithm[1] / $Shares.$Algorithm[3] -gt $Config.BadShareRatioThreshold) {
- $Miner.StatusInfo = "'$($Miner.Info)' stopped. Too many bad shares: A$($Shares.$Algorithm[0])+R$($Shares.$Algorithm[1])+I$($Shares.$Algorithm[2])=T$($Shares.$Algorithm[3])"
- $Miner.SetStatus([MinerStatus]::Failed)
- $Variables.Devices.Where({ $Miner.DeviceNames -contains $_.Name }).ForEach({ $_.Status = $Miner.Status; $_.StatusInfo = $Miner.StatusInfo; $_.SubStatus = $Miner.SubStatus })
- }
- }
- }
- Remove-Variable Algorithm, Shares -ErrorAction Ignore
- }
- }
- Else {
- $Miner.StatusInfo = "'$($Miner.Info)' ($($Miner.Data.Count) Sample$(If ($Miner.Data.Count -ne 1) { "s" })) exited unexpectedly"
- $Miner.SetStatus([MinerStatus]::Failed)
- $Variables.Devices.Where({ $Miner.DeviceNames -contains $_.Name }).ForEach({ $_.Status = $Miner.Status; $_.StatusInfo = $Miner.StatusInfo; $_.SubStatus = $Miner.SubStatus })
- }
- }
-
- # Do not save data if stat just got removed (Miner.Activated < 1, set by API)
- If ($Miner.Activated -gt 0 -and $Miner.Status -ne [MinerStatus]::DryRun) {
- $MinerHashrates = @{ }
- If ($Miner.Data.Count) {
- # Collect hashrate from miner, returns an array of two values (safe, unsafe)
- $Miner.Hashrates_Live = @()
- ForEach ($Algorithm in $Miner.Algorithms) {
- $CollectedHashrate = $Miner.CollectHashrate($Algorithm, (-not $Miner.Benchmark -and $Miner.Data.Count -lt $Miner.MinDataSample))
- $Miner.Hashrates_Live += $CollectedHashrate[1]
- $MinerHashrates.$Algorithm = $CollectedHashrate[0]
- }
- If ($Miner.ReadPowerConsumption) {
- # Collect power consumption from miner, returns an array of two values (safe, unsafe)
- $CollectedPowerConsumption = $Miner.CollectPowerConsumption(-not $Miner.MeasurePowerConsumption -and $Miner.Data.Count -lt $Miner.MinDataSample)
- $Miner.PowerConsumption_Live = $CollectedPowerConsumption[1]
- $MinerPowerConsumption = $CollectedPowerConsumption[0]
- }
- }
-
- # We don't want to store hashrates if we have less than $MinDataSample
- If ($Miner.Data.Count -ge $Miner.MinDataSample -or $Miner.Activated -gt $Variables.WatchdogCount) {
- $Miner.StatEnd = [DateTime]::Now.ToUniversalTime()
- $Stat_Span = [TimeSpan]($Miner.StatEnd - $Miner.StatStart)
-
- ForEach ($Worker in $Miner.Workers) {
- $Algorithm = $Worker.Pool.Algorithm
- $MinerData = ($Miner.Data[-1]).Shares
- If ($Miner.Data.Count -gt $Miner.MinDataSample -and -not $Miner.Benchmark -and $Config.SubtractBadShares -and $MinerData.$Algorithm -gt 0) {
- # Need $Miner.MinDataSample shares before adjusting hashrate
- $Factor = (1 - $MinerData.$Algorithm[1] / $MinerData.$Algorithm[3])
- $MinerHashrates.$Algorithm *= $Factor
- }
- Else {
- $Factor = 1
- }
- $StatName = "$($Miner.Name)_$($Worker.Pool.Algorithm)_Hashrate"
- $Stat = Set-Stat -Name $StatName -Value $MinerHashrates.$Algorithm -Duration $Stat_Span -FaultDetection ($Miner.Data.Count -lt $Miner.MinDataSample -or $Miner.Activated -lt $Variables.WatchdogCount) -ToleranceExceeded ($Variables.WatchdogCount + 1)
- If ($Stat.Updated -gt $Miner.StatStart) {
- Write-Message -Level Info "Saved hashrate for '$($StatName -replace "_Hashrate$")': $(($MinerHashrates.$Algorithm | ConvertTo-Hash) -replace " ")$(If ($Factor -le 0.999) { " (adjusted by factor $($Factor.ToString("N3")) [Shares: A$($MinerData.$Algorithm[0])|R$($MinerData.$Algorithm[1])|I$($MinerData.$Algorithm[2])|T$($MinerData.$Algorithm[3])])" }) ($($Miner.Data.Count) Sample$(If ($Miner.Data.Count -ne 1) { "s" }))$(If ($Miner.Benchmark) { " [Benchmark done]" })."
- $Miner.StatStart = $Miner.StatEnd
- $Variables.AlgorithmsLastUsed.($Worker.Pool.Algorithm) = @{ Updated = $Stat.Updated; Benchmark = $Miner.Benchmark; MinerName = $Miner.Name }
- $Variables.PoolsLastUsed.($Worker.Pool.Name) = $Stat.Updated # most likely this will count at the pool to keep balances alive
- }
- ElseIf ($MinerHashrates.$Algorithm -gt 0 -and $Miner.Status -eq [MinerStatus]::Running -and $Stat.Week -and ($MinerHashrates.$Algorithm -gt $Stat.Week * 2 -or $MinerHashrates.$Algorithm -lt $Stat.Week / 2)) {
- # Stop miner if new value is outside ±200% of current value
- $Miner.StatusInfo = "'$($Miner.Info)' reported hashrate is unreal ($($Algorithm): $(($MinerHashrates.$Algorithm | ConvertTo-Hash) -replace " ") is not within ±200% of stored value of $(($Stat.Week | ConvertTo-Hash) -replace " "))"
- $Miner.SetStatus([MinerStatus]::Failed)
- $Variables.Devices.Where({ $Miner.DeviceNames -contains $_.Name }).ForEach({ $_.Status = $Miner.Status; $_.StatusInfo = $Miner.StatusInfo; $_.SubStatus = $Miner.SubStatus })
- }
- }
- Remove-Variable Factor -ErrorAction Ignore
- }
- If ($Miner.ReadPowerConsumption) {
- # We don't want to store power consumption if we have less than $MinDataSample, store even when fluctuating hash rates were recorded
- If ($Miner.Data.Count -ge $Miner.MinDataSample -or $Miner.Activated -gt $Variables.WatchdogCount) {
- If ([Double]::IsNaN($MinerPowerConsumption )) { $MinerPowerConsumption = 0 }
- $StatName = "$($Miner.Name)_PowerConsumption"
- # Always update power consumption when benchmarking
- $Stat = Set-Stat -Name $StatName -Value $MinerPowerConsumption -Duration $Stat_Span -FaultDetection (-not $Miner.Benchmark -and ($Miner.Data.Count -lt $Miner.MinDataSample -or $Miner.Activated -lt $Variables.WatchdogCount)) -ToleranceExceeded ($Variables.WatchdogCount + 1)
- If ($Stat.Updated -gt $Miner.StatStart) {
- Write-Message -Level Info "Saved power consumption for '$($StatName -replace "_PowerConsumption$")': $($Stat.Live.ToString("N2"))W ($($Miner.Data.Count) Sample$(If ($Miner.Data.Count -ne 1) { "s" }))$(If ($Miner.MeasurePowerConsumption) { " [Power consumption measurement done]" })."
- }
- ElseIf ($MinerPowerConsumption -gt 0 -and $Miner.Status -eq [MinerStatus]::Running -and $Stat.Week -and ($MinerPowerConsumption -gt $Stat.Week * 2 -or $MinerPowerConsumption -lt $Stat.Week / 2)) {
- # Stop miner if new value is outside ±200% of current value
- $Miner.StatusInfo = "'$($Miner.Info)' reported power consumption is unreal ($($PowerConsumption.ToString("N2"))W is not within ±200% of stored value of $(([Double]$Stat.Week).ToString("N2"))W)"
- $Miner.SetStatus([MinerStatus]::Failed)
- $Variables.Devices.Where({ $Miner.DeviceNames -contains $_.Name }).ForEach({ $_.Status = $Miner.Status; $_.StatusInfo = $Miner.StatusInfo; $_.SubStatus = $Miner.SubStatus })
- }
- }
- }
- Remove-Variable Algorithm, CollectedHashrateFactor, CollectedPowerConsumption, MinerData, MinerHashrates, MinerPowerConsumption, Stat, StatName, StatSpan, Worker -ErrorAction Ignore
- }
- }
- Remove-Variable Miner -ErrorAction Ignore
-
- # Update pools last used, required for BalancesKeepAlive
- If ($Variables.AlgorithmsLastUsed.Values.Updated -gt $Variables.BeginCycleTime) { $Variables.AlgorithmsLastUsed | Get-SortedObject | ConvertTo-Json | Out-File -LiteralPath ".\Data\AlgorithmsLastUsed.json" -Force }
- If ($Variables.PoolsLastUsed.values -gt $Variables.BeginCycleTime) { $Variables.PoolsLastUsed | Get-SortedObject | ConvertTo-Json | Out-File -LiteralPath ".\Data\PoolsLastUsed.json" -Force }
-
- # Send data to monitoring server
- # If ($Config.ReportToServer) { Write-MonitoringData }
-
- # Core suspended with P in MainLoop
- While ($Variables.SuspendCycle) { Start-Sleep -Seconds 1 }
-
- # Get new miners
- If ($AvailableMinerPools = If ($Config.MinerUseBestPoolsOnly) { $Variables.Pools.Where({ $_.Available -and ($_.Best -or $_.Prioritize) }) } Else { $Variables.Pools.Where({ $_.Available }) }) {
- $MinerPools = [Ordered]@{ }, [Ordered]@{ "" = "" } # Dummy secondary pool
- ($AvailableMinerPools.Where({ $_.Reasons -notcontains "Unprofitable primary algorithm" }) | Group-Object Algorithm).ForEach({ $MinerPools[0][$_.Name] = $_.Group })
- ($AvailableMinerPools.Where({ $_.Reasons -notcontains "Unprofitable secondary algorithm" }) | Group-Object Algorithm).ForEach({ $MinerPools[1][$_.Name] = $_.Group })
-
- $Message = "Loading miners.$(If (-not $Variables.Miners) { "
This may take a while." }).."
- If (-not $Variables.Miners) {
- $Variables.Summary = $Message
- $Variables.RefreshNeeded = $true
- }
- Write-Message -Level Info ($Message -replace "
", " ")
- Remove-Variable Message
-
- $MinersNew = (Get-ChildItem -Path ".\Miners\*.ps1").ForEach(
- {
- $MinerFileName = $_.Name
- Try {
- Write-Message -Level Debug "Miner definition file '$MinerFileName': Start building miner objects"
- & $_.FullName
- Write-Message -Level Debug "Miner definition file '$MinerFileName': End building miner objects"
- }
- Catch {
- Write-Message -Level Error "Miner file 'Miners\$MinerFileName': $_."
- "$(Get-Date -Format "yyyy-MM-dd_HH:mm:ss")" >> $ErrorLogFile
- $_.Exception | Format-List -Force >> $ErrorLogFile
- $_.InvocationInfo | Format-List -Force >> $ErrorLogFile
- }
- }
- ).ForEach(
- {
- $Miner = $_
- Try {
- ForEach ($Worker in $Miner.Workers) {
- $Miner.Workers[$Miner.Workers.IndexOf($Worker)].Fee = If ($Config.IgnoreMinerFee) { 0 } Else { $Miner.Fee[$Miner.Workers.IndexOf($Worker)] }
- }
- $Miner.PSObject.Properties.Remove("Fee")
- $Miner | Add-Member BaseName_Version_Device (($Miner.Name -split "-")[0..2] -join "-")
- $Miner | Add-Member Info "$($Miner.BaseName_Version_Device) {$($Miner.Workers.ForEach({ $_.Pool.AlgorithmVariant, $_.Pool.Name -join "@" }) -join " & ")}$(If (($Miner.Name -split "-")[4]) { " (Dual intensity $(($Miner.Name -split "-")[4]))" })"
- $Miner -as $_.API
- }
- Catch {
- Write-Message -Level Error "Failed to add miner '$($Miner.Name)' as '$($Miner.API)' ($($Miner | ConvertTo-Json -Compress))"
- "$(Get-Date -Format "yyyy-MM-dd_HH:mm:ss")" >> $ErrorLogFile
- $_.Exception | Format-List -Force >> $ErrorLogFile
- $_.InvocationInfo | Format-List -Force >> $ErrorLogFile
- }
- }
- )
- Remove-Variable Algorithm, Miner, MinerFileName, MinerPools -ErrorAction Ignore
-
- If ($Variables.BenchmarkAllPoolAlgorithmCombinations) { $MinersNew.ForEach({ $_.Name = $_.Info }) }
- }
- Remove-Variable AvailableMinerPools -ErrorAction Ignore
-
- # Sometimes there are no new miners (classes broken after GC?)
- If ($MinersNew) {
- $Miners = Compare-Object @($Variables.Miners | Select-Object) @($MinersNew | Select-Object) -Property Info -IncludeEqual -PassThru
- $MinerDevices = $Variables.EnabledDevices | Select-Object -Property Bus, ConfiguredPowerConsumption, Name, ReadPowerConsumption, Status
-
- # Make smaller groups for faster update
- $MinersNewGroups = $MinersNew | Group-Object -Property BaseName_Version_Device
- ($Miners.Where({ $_.SideIndicator -ne "<=" }) | Group-Object -Property BaseName_Version_Device).ForEach(
- {
- $Name = $_.Name
- $MinersNewGroup = $MinersNewGroups.Where({ $Name -eq $_.Name }).Group
- $_.Group.ForEach(
- {
- Try {
- $Miner = $_
- If ($_.KeepRunning = [MinerStatus]::Running, [MinerStatus]::DryRun -contains $_.Status -and ($Variables.DonationRunning -or $_.ContinousCycle -lt $Config.MinCycle)) {
- # Minimum numbers of cycles not yet reached
- $_.Restart = $false
- }
- Else {
- If ($_.SideIndicator -eq "=>") {
- $_.CommandLine = $_.GetCommandLine()
- # Newly added miners, these properties need to be set only once because they are not dependent on any config or pool information
- $_.BaseName, $_.Version = ($_.Name -split "-")[0, 1]
- $_.BaseName_Version = ($Miner.Name -split "-")[0..1] -join "-"
- $_.Algorithms = $_.Workers.Pool.Algorithm
- }
- Else {
- $Info = $_.Info
- $Miner = $MinersNewGroup.Where({ $Info -eq $_.Info })
- # Update existing miners
- If ($_.Restart = $_.Arguments -ne $Miner.Arguments) {
- $_.Arguments = $Miner.Arguments
- $_.CommandLine = $Miner.GetCommandLine()
- $_.Port = $Miner.Port
- }
- $_.PrerequisitePath = $Miner.PrerequisitePath
- $_.PrerequisiteURI = $Miner.PrerequisiteURI
- $_.WarmupTimes = $Miner.WarmupTimes
- $_.Workers = $Miner.Workers
- }
- }
- $DeviceNames = $_.DeviceNames
- $_.MeasurePowerConsumption = $Variables.CalculatePowerCost
- $_.Devices = $MinerDevices.Where({ $DeviceNames -contains $_.Name })
- $_.Refresh($Variables.PowerCostBTCperW, $Config)
- }
- Catch {
- Write-Message -Level Error "Failed to update miner '$($Miner.Name)': Error $_ ($($Miner | ConvertTo-Json -Compress)"
- "$(Get-Date -Format "yyyy-MM-dd_HH:mm:ss")" >> $ErrorLogFile
- $_.Exception | Format-List -Force >> $ErrorLogFile
- $_.InvocationInfo | Format-List -Force >> $ErrorLogFile
- }
- }
- )
- }
- )
- Remove-Variable DeviceNames, Info, Miner, MinerDevices, MinersNewGroup, MinersNewGroups, MinersNew, Name -ErrorAction Ignore
- }
- Else {
- $Miners = $Variables.Miners
- }
-
- # Core suspended with P in MainLoop
- While ($Variables.SuspendCycle) { Start-Sleep -Seconds 1 }
-
- # Filter miners
- $Miners.Where({ $_.Disabled }).ForEach({ $_.Reasons.Add("Disabled by user") })
- If ($Config.ExcludeMinerName.Count) { $Miners.Where({ (Compare-Object @($Config.ExcludeMinerName | Select-Object) @($_.BaseName, "$($_.BaseName)-$($_.Version)", $_.Name | Select-Object -Unique) -IncludeEqual -ExcludeDifferent | Measure-Object).Count -gt 0 }).ForEach({ $_.Reasons.Add("ExcludeMinerName ($($Config.ExcludeMinerName -join ", "))") }) }
- $Miners.Where({ $_.Earning -eq 0 }).ForEach({ $_.Reasons.Add("Earning -eq 0") })
- $Miners.Where({ -not $_.Benchmark -and $_.Workers.Hashrate -contains 0 }).ForEach({ $_.Reasons.Add("0 H/s Stat file") })
- If ($Config.DisableMinersWithFee) { $Miners.Where({ $_.Workers.Fee }).ForEach({ $_.Reasons.Add("Config.DisableMinersWithFee") }) }
- If ($Config.DisableDualAlgoMining) { $Miners.Where({ $_.Workers.Count -eq 2 }).ForEach({ $_.Reasons.Add("Config.DisableDualAlgoMining") }) }
- ElseIf ($Config.DisableSingleAlgoMining) { $Miners.Where({ $_.Workers.Count -eq 1 }).ForEach({ $_.Reasons.Add("Config.DisableSingleAlgoMining") }) }
-
- # Add reason 'Config.DisableCpuMiningOnBattery' for CPU miners when running on battery
- If ($Config.DisableCpuMiningOnBattery -and (Get-CimInstance Win32_Battery).BatteryStatus -eq 1) { $Miners.Where({ $_.Type -eq "CPU" }).ForEach({ $_.Reasons.Add("Config.DisableCpuMiningOnBattery") }) }
-
- # Add reason 'Unreal profit data...' for miners with unreal earning (> x times higher than average of the next best 10% or at least 5 miners)
- If ($Config.UnrealMinerEarningFactor -gt 1) {
- ($Miners.Where({ -not $_.Reasons }) | Group-Object { [String]$_.DeviceNames }).ForEach(
- {
- If ($ReasonableEarning = [Double]($_.Group | Sort-Object -Descending -Property Earning_Bias | Select-Object -Skip 1 -First (5, [Math]::Floor($_.Group.Count / 10) | Measure-Object -Maximum).Maximum | Measure-Object Earning -Average).Average * $Config.UnrealMinerEarningFactor) {
- ($_.Group.Where({ $_.Earning -gt $ReasonableEarning })).ForEach(
- { $_.Reasons.Add("Unreal profit data (-gt $($Config.UnrealMinerEarningFactor)x higher than the next best miners available miners)") }
- )
- }
- }
- )
- Remove-Variable ReasonableEarning -ErrorAction Ignore
- }
-
- $Variables.MinersMissingBinary = [Miner[]]@()
- ($Miners.Where({ -not $_.Reasons }) | Group-Object Path).Where({ -not (Test-Path -LiteralPath $_.Name -Type Leaf) }).Group.ForEach(
- {
- $_.Reasons.Add("Binary missing")
- $Variables.MinersMissingBinary += $_
- }
- )
-
- $Variables.MinersMissingPrerequisite = [Miner[]]@()
- $Miners.Where({ -not $_.Reasons -and $_.PrerequisitePath }).ForEach(
- {
- $_.Reasons.Add("Prerequisite missing ($(Split-Path -Path $_.PrerequisitePath -Leaf))")
- $Variables.MinersMissingPrerequisite += $_
- }
- )
-
- If ($DownloadList = @($Variables.MinersMissingPrerequisite | Select-Object @{ Name = "URI"; Expression = { $_.PrerequisiteURI } }, @{ Name = "Path"; Expression = { $_.PrerequisitePath } }, @{ Name = "Searchable"; Expression = { $false } }) + @($Variables.MinersMissingBinary | Select-Object URI, Path, @{ Name = "Searchable"; Expression = { $false } }) | Select-Object * -Unique) {
- If ($Variables.Downloader.State -ne "Running") {
- # Download miner binaries
- Write-Message -Level Info "Some miners binaries are missing ($($DownloadList.Count) item$(If ($DownloadList.Count -ne 1) { "s" })), starting downloader..."
- $DownloaderParameters = @{
- Config = $Config
- DownloadList = $DownloadList
- Variables = $Variables
- }
- $Variables.Downloader = Start-ThreadJob -Name Downloader -StreamingHost $null -FilePath ".\Includes\Downloader.ps1" -InitializationScript ([ScriptBlock]::Create("Set-Location '$($Variables.MainPath)'")) -ArgumentList $DownloaderParameters -ThrottleLimit (2 * $Variables.Devices.Count + 2)
- Remove-Variable DownloaderParameters
- }
- }
- Remove-Variable DownloadList
-
- # Open firewall ports for all miners
- $Variables.MissingMinerFirewallRule = [Miner[]]@()
- If ($Config.OpenFirewallPorts) {
- If (Get-Command Get-MpPreference) {
- If ((Get-Command Get-MpComputerStatus) -and (Get-MpComputerStatus)) {
- If (Get-Command Get-NetFirewallRule) {
- If ($MissingFirewallRules = (Compare-Object @(Get-NetFirewallApplicationFilter | Select-Object -ExpandProperty Program -Unique) @(($Miners | Select-Object -ExpandProperty Path -Unique).ForEach({ "$PWD\$($_)" })) -PassThru).Where({ $_.SideIndicator -eq "=>" })) {
- Try {
- If (-not $Variables.IsLocalAdmin) { Write-Message -Level Info "Initiating request to add $($MissingFirewallRules.Count) inbound firewall rule$(If ($MissingFirewallRules.Count -ne 1) { "s" })..." }
- Start-Process "pwsh" ("-Command Write-Host 'Adding $($MissingFirewallRules.Count) inbound firewall rule$(If ($MissingFirewallRules.Count -ne 1) { "s" })...'; Start-Sleep -Seconds 3; Import-Module NetSecurity; ('$($MissingFirewallRules | ConvertTo-Json -Compress)' | ConvertFrom-Json) | ForEach-Object { New-NetFirewallRule -DisplayName (Split-Path `$_ | Split-Path -leaf) -Program `$_ -Description 'Inbound rule added by $($Variables.Branding.ProductLabel) $($Variables.Branding.Version) on $([DateTime]::Now.ToString())' -Group '$($Variables.Branding.ProductLabel)' }" -replace '"', '\"') -Verb runAs
- Write-Message -Level Info "Added $($MissingFirewallRules.Count) inbound firewall rule$(If ($MissingFirewallRules.Count -ne 1) { "s" }) to Windows Defender Inbound Rules Group '$($Variables.Branding.ProductLabel)'."
- }
- Catch {
- Write-Message -Level Error "Could not add inbound firewall rules. Some miners will not be available."
- $Variables.MissingMinerFirewallRule = $Miners.Where({ $MissingFirewallRules -contains $_.Path })
- $Variables.MissingMinerFirewallRule.ForEach({ $_.Reasons.Add("Inbound firewall rule missing") })
- }
- }
- Remove-Variable MissingFirewallRules
- }
- }
- }
- }
-
- # Apply watchdog to miners
- If ($Config.Watchdog) {
- # We assume that miner is up and running, so watchdog timer is not relevant
- If ($RelevantWatchdogTimers = $Variables.WatchdogTimers.Where({ $_.MinerName -notin $Variables.MinersRunning.Name })) {
- # Only miners with a corresponding watchdog timer object are of interest
- If ($RelevantMiners = $Variables.Miners.Where({ $RelevantWatchdogTimers.MinerBaseName_Version -contains $_.BaseName_Version })) {
- # Add miner reason 'Miner suspended by watchdog [all algorithms & all devices]'
- ($RelevantWatchdogTimers | Group-Object -Property MinerBaseName_Version).ForEach(
- {
- If ($_.Count -gt 2 * $Variables.WatchdogCount * (($_.Group[0].MinerName -split "-")[3] -split "&").Count * ($_.Group.DeviceNames | Sort-Object -Unique).Count) {
- $WatchdogGroup = $_.Group
- If ($MinersToSuspend = $RelevantMiners.Where({ $_.MinerBaseName_Version -eq $WatchdogGroup.Name })) {
- $MinersToSuspend.ForEach({ $_.Reasons.Add("Miner suspended by watchdog [all algorithms & all devices]") })
- Write-Message -Level Warn "Miner '$($WatchdogGroup.Name) [all algorithms & all devices]' is suspended by watchdog until $(($WatchdogGroup.Kicked | Sort-Object -Top 1).AddSeconds($Variables.WatchdogReset).ToLocalTime().ToString("T"))."
- }
- }
- }
- )
- Remove-Variable MinersToSuspend, WatchdogGroup -ErrorAction Ignore
-
- If ($RelevantMiners = $RelevantMiners.Where({ -not ($_.Reasons -match "Miner suspended by watchdog .+") })) {
- # Add miner reason 'Miner suspended by watchdog [all algorithms]'
- ($RelevantWatchdogTimers | Group-Object { $_.MinerBaseName_Version_Device }).ForEach(
- {
- If ($_.Count -gt 2 * $Variables.WatchdogCount * (($_.Group[0].MinerName -split "-")[3] -split "&").Count) {
- $WatchdogGroup = $_.Group
- If ($MinersToSuspend = $RelevantMiners.Where({ $_.BaseName_Version_Device -eq $WatchdogGroup[0].MinerBaseName_Version_Device })) {
- $MinersToSuspend.ForEach({ $_.Reasons.Add("Miner suspended by watchdog [all algorithms]") })
- Write-Message -Level Warn "Miner '$($WatchdogGroup[0].MinerBaseName_Version_Device) [all algorithms]' is suspended by watchdog until $(($WatchdogGroup.Kicked | Sort-Object -Top 1).AddSeconds($Variables.WatchdogReset).ToLocalTime().ToString("T"))."
- }
- }
- }
- )
- Remove-Variable MinersToSuspend, WatchdogGroup -ErrorAction Ignore
-
- If ($RelevantMiners = $RelevantMiners.Where({ -not ($_.Reasons -match "Miner suspended by watchdog .+") })) {
- # Add miner reason 'Miner suspended by watchdog [Algorithm [Algorithm]]'
- ($RelevantWatchdogTimers.Where({ $_.Algorithm -eq $_.AlgorithmVariant }) | Group-Object -Property MinerBaseName_Version_Device).ForEach(
- {
- If ($_.Count / (($_.Group[0].MinerName -split "-")[3] -split "&").Count -ge $Variables.WatchdogCount) {
- $WatchdogGroup = $_.Group
- If ($MinersToSuspend = $RelevantMiners.Where({ $_.BaseName_Version_Device -eq $WatchdogGroup[0].MinerBaseName_Version_Device -and $_.Workers.Pool.Algorithm -contains $WatchdogGroup[0].Algorithm })) {
- $MinersToSuspend.ForEach({ $_.Reasons.Add("Miner suspended by watchdog [Algorithm $($WatchdogGroup[0].Algorithm)]") })
- Write-Message -Level Warn "Miner '$($WatchdogGroup[0].MinerBaseName_Version_Device) [$($WatchdogGroup[0].Algorithm)]' is suspended by watchdog until $(($WatchdogGroup.Kicked | Sort-Object -Top 1).AddSeconds($Variables.WatchdogReset).ToLocalTime().ToString("T"))."
- }
- }
- }
- )
- Remove-Variable MinersToSuspend, WatchdogGroup -ErrorAction Ignore
-
- If ($RelevantMiners = $RelevantMiners.Where({ -not ($_.Reasons -match "Miner suspended by watchdog .+") })) {
- # Add miner reason 'Miner suspended by watchdog [Algorithm [AlgorithmVariant]]'
- ($RelevantWatchdogTimers.Where({ $_.Algorithm -ne $_.AlgorithmVariant }) | Group-Object -Property MinerBaseName_Version_Device).ForEach(
- {
- If ($_.Count / (($_.Group[0].MinerName -split "-")[3] -split "&").Count -ge $Variables.WatchdogCount) {
- $WatchdogGroup = $_.Group
- If ($MinersToSuspend = $RelevantMiners.Where({ $_.BaseName_Version_Device -eq $WatchdogGroup[0].MinerBaseName_Version_Device -and $_.Workers.Pool.AlgorithmVariant -contains $WatchdogGroup[0].AlgorithmVariant })) {
- $MinersToSuspend.ForEach({ $_.Reasons.Add("Miner suspended by watchdog [Algorithm $($WatchdogGroup[0].AlgorithmVariant)]") })
- Write-Message -Level Warn "Miner '$($WatchdogGroup[0].MinerBaseName_Version_Device) [$($WatchdogGroup[0].AlgorithmVariant)]' is suspended by watchdog until $(($WatchdogGroup.Kicked | Sort-Object -Top 1).AddSeconds($Variables.WatchdogReset).ToLocalTime().ToString("T"))."
- }
- }
- }
- )
- Remove-Variable MinersToSuspend, WatchdogGroup -ErrorAction Ignore
- }
- }
- }
- }
- Remove-Variable RelevantMiners -ErrorAction Ignore
- }
- Remove-Variable RelevantWatchdogTimers -ErrorAction Ignore
- }
-
- $Miners.ForEach({ $_.Reasons = [System.Collections.Generic.List[String]]@($_.Reasons | Sort-Object -Unique); $_.Available = -not [Boolean]$_.Reasons })
-
- # Gone miners are no longer available
- $Miners.Where({ $_.SideIndicator -eq "<=" }).ForEach({ $_.Available = $false })
-
- Write-Message -Level Info "Loaded $($Miners.Where({ $_.SideIndicator -ne "<=" }).Count) miner$(If ($Miners.Where({ $_.SideIndicator -ne "<=" }).Count -ne 1) { "s" }), filtered out $($Miners.Where({ -not $_.Available }).Count) miner$(If ($Miners.Where({ -not $_.Available }).Count -ne 1) { "s" }). $($Miners.Where({ $_.Available }).Count) available miner$(If ($Miners.Where({ $_.Available }).Count -ne 1) { "s" }) remain$(If ($Miners.Where({ $_.Available }).Count -eq 1) { "s" })."
-
- If ($Miners.Where({ $_.Available })) {
- Write-Message -Level Info "Selecting best miner$(If (($Variables.EnabledDevices.Model | Select-Object -Unique).Count -gt 1) { " combinations" }) based on$(If ($Variables.CalculatePowerCost -and -not $Config.IgnorePowerCost) { " profit (power cost $($Config.FIATcurrency) $($Variables.PowerPricekWh)/kWâ‹…h)" } Else { " earnings" })..."
-
- If ($Miners.Where({ $_.Available }).Count -eq 1) {
- $MinersBest = $Variables.MinersBestPerDevice = $Variables.MinersOptimal = $Miners.Where({ $_.Available })
- }
- Else {
- $Bias = If ($Variables.CalculatePowerCost -and -not $Config.IgnorePowerCost) { "Profit_Bias" } Else { "Earning_Bias" }
- # Add running miner bonus
- $RunningMinerBonusFactor = 1 + $Config.MinerSwitchingThreshold / 100
- $Miners.Where({ $_.Status -eq [MinerStatus]::Running }).ForEach({ $_.$Bias *= $RunningMinerBonusFactor })
-
- # Get the optimal miners per algorithm and device
- $Variables.MinersOptimal = ($Miners.Where({ $_.Available -and -not ($_.Benchmark -or $_.MeasurePowerConsumption) }) | Group-Object { [String]$_.DeviceNames }, { [String]$_.Algorithms }).ForEach({ ($_.Group | Sort-Object -Descending -Property KeepRunning, Prioritize, $Bias, Activated, @{ Expression = { $_.WarmupTimes[1] + $_.MinDataSample }; Descending = $true }, @{ Expression = { [String]$_.Algorithms }; Descending = $false } -Top 1).ForEach({ $_.Optimal = $true; $_ }) })
- # Get the best miners per device
- $Variables.MinersBestPerDevice = ($Miners.Where({ $_.Available }) | Group-Object { [String]$_.DeviceNames }).ForEach({ $_.Group | Sort-Object -Descending -Property Benchmark, MeasurePowerConsumption, KeepRunning, Prioritize, $Bias, Activated, @{ Expression = { $_.WarmupTimes[1] + $_.MinDataSample }; Descending = $true } -Top 1 })
- $Variables.MinerDeviceNamesCombinations = (Get-Combination @($Variables.MinersBestPerDevice | Select-Object DeviceNames -Unique)).Where({ (Compare-Object ($_.Combination | Select-Object -ExpandProperty DeviceNames -Unique) ($_.Combination | Select-Object -ExpandProperty DeviceNames) | Measure-Object).Count -eq 0 })
-
- # Get most best miner combination i.e. AMD+INTEL+NVIDIA+CPU
- $MinerCombinations = $Variables.MinerDeviceNamesCombinations.ForEach(
- {
- $MinerDeviceNamesCombination = $_.Combination
- [PSCustomObject]@{
- Combination = $MinerDeviceNamesCombination.ForEach(
- {
- $DeviceNames = [String]$_.DeviceNames
- $Variables.MinersBestPerDevice.Where({ [String]$_.DeviceNames -eq $DeviceNames })
- }
- )
- }
- }
- )
- Remove-Variable DeviceNames, MinerDeviceNamesCombination -ErrorAction Ignore
-
- # Get smallest $Bias
- # Hack: Temporarily make all bias -ge 0 by adding smallest bias, MinerBest produces wrong sort order when some profits are negative
- $SmallestBias = $Variables.MinersBestPerDevice.$Bias | Sort-Object -Top 1
- $MinerCombinations.ForEach({ $_.Combination.ForEach({ $_.$Bias += $SmallestBias }) })
- $MinersBest = ($MinerCombinations | Sort-Object -Descending { $_.Combination.Where({ [Double]::IsNaN($_.$Bias) }).Count }, { ($_.Combination.$Bias | Measure-Object -Sum).Sum }, { ($_.Combination.Where({ $_.$Bias -ne 0 }) | Measure-Object).Count } -Top 1).Combination
- $MinerCombinations.ForEach({ $_.Combination.ForEach({ $_.$Bias -= $SmallestBias }) })
-
- # Revert running miner bonus
- $Miners.Where({ $_.Status -eq [MinerStatus]::Running }).ForEach({ $_.$Bias /= $RunningMinerBonusFactor })
- Remove-Variable Bias, MinerCombinations, MinerDeviceNameCount, RunningMinerBonusFactor, SmallestBias -ErrorAction Ignore
- }
-
- $Variables.PowerConsumptionIdleSystemW = (($Config.PowerConsumptionIdleSystemW - ($MinersBest.Where({ $_.Type -eq "CPU" }) | Measure-Object PowerConsumption -Sum).Sum), 0 | Measure-Object -Maximum).Maximum
- $Variables.BasePowerCost = [Double]($Variables.PowerConsumptionIdleSystemW / 1000 * 24 * $Variables.PowerPricekWh / $Variables.Rates.($Config.PayoutCurrency).($Config.FIATcurrency))
- $Variables.MiningEarning = [Double]($MinersBest | Measure-Object Earning_Bias -Sum).Sum
- $Variables.MiningPowerCost = [Double]($MinersBest | Measure-Object PowerCost -Sum).Sum
- $Variables.MiningPowerConsumption = [Double]($MinersBest | Measure-Object PowerConsumption -Sum).Sum
- $Variables.MiningProfit = [Double](($MinersBest | Measure-Object Profit_Bias -Sum).Sum - $Variables.BasePowerCost)
- }
- Else {
- $Variables.PowerConsumptionIdleSystemW = (($Config.PowerConsumptionIdleSystemW), 0 | Measure-Object -Maximum).Maximum
- $Variables.BasePowerCost = [Double]($Variables.PowerConsumptionIdleSystemW / 1000 * 24 * $Variables.PowerPricekWh / $Variables.Rates.($Config.PayoutCurrency).($Config.FIATcurrency))
- $Variables.MinersOptimal = $Variables.MinersBestPerDevice = $Variables.MinerDeviceNamesCombinations = $MinersBest = [Miner[]]@()
- $Variables.MiningEarning = $Variables.MiningProfit = $Variables.MiningPowerCost = $Variables.MiningPowerConsumption = [Double]0
- }
- Remove-Variable Bias -ErrorAction Ignore
- }
-
- $Variables.MinersNeedingBenchmark = $Miners.Where({ $_.Available -and $_.Benchmark }) | Sort-Object -Property Name -Unique
- $Variables.MinersNeedingPowerConsumptionMeasurement = $Miners.Where({ $_.Available -and $_.MeasurePowerConsumption }) | Sort-Object -Property Name -Unique
-
- # ProfitabilityThreshold check - OK to run miners?
- If ($Variables.Rates.($Config.PayoutCurrency)) {
- $Miners.ForEach({ $_.Best = $false })
- If ($Variables.DonationRunning -or $Variables.MinersNeedingBenchmark -or $Variables.MinersNeedingPowerConsumptionMeasurement -or -not $Variables.CalculatePowerCost -or $Variables.MiningProfit -ge ($Config.ProfitabilityThreshold / $Variables.Rates.BTC.($Config.FIATcurrency))) {
- $MinersBest.ForEach({ $_.Best = $true })
- If ($Variables.MinersNeedingBenchmark.Count) {
- $Variables.Summary = "Earning / day: n/a (Benchmarking: $($Variables.MinersNeedingBenchmark.Count) $(If ($Variables.MinersNeedingBenchmark.Count -eq 1) { "miner" } Else { "miners" }) left$(If ($Variables.EnabledDevices.Count -gt 1) { " [$((($Variables.MinersNeedingBenchmark | Group-Object { [String]$_.DeviceNames } | Sort-Object -Property Name).ForEach({ "$($_.Name): $($_.Count)" })) -join ", ")]" }))"
- }
- ElseIf ($Variables.MiningEarning -gt 0) {
- $Variables.Summary = "Earning / day: {0:n} {1}" -f ($Variables.MiningEarning * $Variables.Rates.($Config.PayoutCurrency).($Config.FIATcurrency)), $Config.FIATcurrency
- }
- Else {
- $Variables.Summary = ""
- }
-
- If ($Variables.CalculatePowerCost -and $Variables.PoolsBest) {
- If ($Variables.Summary -ne "") { $Variables.Summary += " " }
-
- If ($Variables.MinersNeedingPowerConsumptionMeasurement.Count -or [Double]::IsNaN($Variables.MiningPowerCost)) {
- $Variables.Summary += "Profit / day: n/a (Measuring power consumption: $($Variables.MinersNeedingPowerConsumptionMeasurement.Count) $(If ($Variables.MinersNeedingPowerConsumptionMeasurement.Count -eq 1) { "miner" } Else { "miners" }) left$(If ($Variables.EnabledDevices.Count -gt 1) { " [$((($Variables.MinersNeedingPowerConsumptionMeasurement | Group-Object { [String]$_.DeviceNames } | Sort-Object -Property Name).ForEach({ "$($_.Name): $($_.Count)" })) -join ", ")]" }))"
- }
- ElseIf ($Variables.MinersNeedingBenchmark.Count) {
- $Variables.Summary += "Profit / day: n/a"
- }
- ElseIf ($Variables.MiningPowerConsumption -gt 0) {
- $Variables.Summary += "Profit / day: {0:n} {1}" -f ($Variables.MiningProfit * $Variables.Rates.($Config.PayoutCurrency).($Config.FIATcurrency)), $Config.FIATcurrency
- }
- Else {
- $Variables.Summary += "Profit / day: n/a (no power data)"
- }
-
- If ($Variables.CalculatePowerCost) {
- If ($Variables.Summary -ne "") { $Variables.Summary += " " }
-
- If ([Double]::IsNaN($Variables.MiningEarning) -or [Double]::IsNaN($Variables.MiningPowerCost)) {
- $Variables.Summary += "Power cost / day: n/a [Miner$(If ($MinersBest.Count -ne 1) { "s" }): n/a; Base: {1:n} {0} ({2:n2} W)]" -f $Config.FIATcurrency, ($Variables.BasePowerCost * $Variables.Rates.($Config.PayoutCurrency).($Config.FIATcurrency)), $Variables.PowerConsumptionIdleSystemW
- }
- ElseIf ($Variables.MiningPowerConsumption -gt 0) {
- $Variables.Summary += "Power cost / day: {1:n} {0} [Miner$(If ($MinersBest.Count -ne 1) { "s" }): {2:n} {0} ({3:n2} W); Base: {4:n} {0} ({5:n2} W)]" -f $Config.FIATcurrency, (($Variables.MiningPowerCost + $Variables.BasePowerCost) * $Variables.Rates.($Config.PayoutCurrency).($Config.FIATcurrency)), ($Variables.MiningPowerCost * $Variables.Rates.($Config.PayoutCurrency).($Config.FIATcurrency)), $Variables.MiningPowerConsumption, ($Variables.BasePowerCost * $Variables.Rates.($Config.PayoutCurrency).($Config.FIATcurrency)), $Variables.PowerConsumptionIdleSystemW
- }
- Else {
- $Variables.Summary += "Power cost / day: n/a [Miner: n/a; Base: {1:n} {0} ({2:n2} W)]" -f $Config.FIATcurrency, ($Variables.BasePowerCost * $Variables.Rates.BTC.($Config.FIATcurrency)), $Variables.PowerConsumptionIdleSystemW
- }
- }
- }
- If ($Variables.Summary -ne "") { $Variables.Summary += "
" }
-
- # Add currency conversion rates
- ((@(If ($Config.UsemBTC) { "mBTC" } Else { ($Config.PayoutCurrency) }) + @($Config.ExtraCurrencies)) | Select-Object -Unique).Where({ $Variables.Rates.$_.($Config.FIATcurrency) }).ForEach(
- {
- $Variables.Summary += "1 $_ = {0:N$(Get-DecimalsFromValue -Value $Variables.Rates.$_.($Config.FIATcurrency) -DecimalsMax $Config.DecimalsMax)} $($Config.FIATcurrency) " -f $Variables.Rates.$_.($Config.FIATcurrency)
- }
- )
- }
- Else {
- # Mining earning/profit is below threshold
- $MinersBest = [Miner[]]@()
- $Variables.Summary = "Mining profit {0} {1:n$($Config.DecimalsMax)} / day is below the configured threshold of {0} {2:n$($Config.DecimalsMax)} / day. Mining is suspended until threshold is reached." -f $Config.FIATcurrency, (($Variables.MiningEarning - $(If ($Config.CalculatePowerCost) { $Variables.MiningPowerCost - $Variables.BasePowerCost } Else { 0 })) * $Variables.Rates.($Config.PayoutCurrency).($Config.FIATcurrency)), $Config.ProfitabilityThreshold
- Write-Message -Level Warn ($Variables.Summary -replace "
", " " -replace " / day", "/day")
- If ($Variables.Rates) {
- # Add currency conversion rates
- If ($Variables.Summary -ne "") { $Variables.Summary += "
" }
- ((@(If ($Config.UsemBTC) { "mBTC" } Else { $Config.PayoutCurrency }) + @($Config.ExtraCurrencies)) | Select-Object -Unique).Where({ $Variables.Rates.$_.($Config.FIATcurrency) }).ForEach(
- {
- $Variables.Summary += "1 $_ = {0:N$(Get-DecimalsFromValue -Value $Variables.Rates.$_.($Config.FIATcurrency) -DecimalsMax $Config.DecimalsMax)} $($Config.FIATcurrency) " -f $Variables.Rates.$_.($Config.FIATcurrency)
- }
- )
- }
- }
- }
- Else {
- $Variables.Summary = "Error:
Could not get BTC exchange rate from min-api.cryptocompare.com"
- }
-
- # Stop running miners
- ForEach ($Miner in @($Miners.Where({ [MinerStatus]::DryRun, [MinerStatus]::Running -contains $_.Status }) | Sort-Object { [String]$_.DeviceNames })) {
- If ($Miner.Status -eq [MinerStatus]::Running -and $Miner.GetStatus() -ne [MinerStatus]::Running) {
- $Miner.StatusInfo = "'$($Miner.Info)' ($($Miner.Data.Count) Sample$(If ($Miner.Data.Count -ne 1) { "s" })) exited unexpectedly"
- $Miner.SetStatus([MinerStatus]::Failed)
- }
- Else {
- If ($Miner.Benchmark -or $Miner.MeasurePowerConsumption) {
- If ($Miner.Activated -le 0) { $Miner.Restart = $true } # Re-benchmark sets Activated to 0
- }
- ElseIf ($Config.DryRun -and $Miner.Status -ne [MinerStatus]::DryRun) { $Miner.Restart = $true }
- ElseIf (-not $Config.DryRun -and $Miner.Status -eq [MinerStatus]::DryRun) { $Miner.Restart = $true }
- If ($Miner.Restart -or -not $Miner.Best -or $Variables.NewMiningStatus -ne "Running") {
- 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
- }
- }
- $Variables.Devices.Where({ $Miner.DeviceNames -contains $_.Name }).ForEach({ $_.Status = $Miner.Status; $_.StatusInfo = $Miner.StatusInfo; $_.SubStatus = $Miner.SubStatus })
- }
- Remove-Variable Miner, WatchdogTimers, Worker -ErrorAction Ignore
-
- # Kill stuck miners on subsequent cycles
- # If (-not ($Variables.MinersBest.Where({ $_.Benchmark -or $_.MeasurePowerConsumption }))) {
- $Loops = 0
- # Some miners, e.g. BzMiner spawn a second executable
- While ($StuckMinerProcessIDs = (Get-CimInstance CIM_Process).Where({ $_.ExecutablePath -and ($Miners.Path | Sort-Object -Unique) -contains $_.ExecutablePath -and (Get-CimInstance win32_process -Filter "ParentProcessId = $($_.ProcessId)") -and $Miners.ProcessID -notcontains $_.ProcessID }) | Select-Object -ExpandProperty ProcessID) {
- $StuckMinerProcessIDs.ForEach(
- {
- If ($Miner = $Miners | Where-Object ProcessID -EQ $_) { Write-Message -Level Verbose "Killing stuck miner '$($Miner.Name)'." }
- If ($ChildProcessID = (Get-CimInstance win32_process -Filter "ParentProcessId = $_").ProcessID) { Stop-Process -Id $ChildProcessID -Force -ErrorAction Ignore }
- Stop-Process -Id $_ -Force -ErrorAction Ignore | Out-Null
- }
- )
- Start-Sleep -Milliseconds 500
- $Loops ++
- If ($Loops -gt 50) {
- If ($Config.AutoReboot) {
- Write-Message -Level Error "$(If ($StuckMinerProcessIDs.Count -eq 1) { "A miner " } Else { "Some miners are" }) stuck and cannot get stopped graciously. Restarting computer in 30 seconds..."
- shutdown.exe /r /t 30 /c "$($Variables.Branding.ProductLabel) detected stuck miner$(If ($StuckMinerProcessIDs.Count -ne 1) { "s" }) and will reboot the computer in 30 seconds."
- Start-Sleep -Seconds 60
- }
- Else {
- Write-Message -Level Error "$(If ($StuckMinerProcessIDs.Count -eq 1) { "A miner " } Else { "Some miners are" }) stuck and cannot get stopped graciously. It is recommended to restart the computer."
- Start-Sleep -Seconds 30
- }
- }
- }
- Remove-Variable ChildProcessID, Loops, Message, Miner, StuckMinerProcessIDs -ErrorAction Ignore
- # }
-
- $Miners.ForEach(
- {
- If ($_.Disabled) {
- $_.Status = [MinerStatus]::Disabled
- $_.SubStatus = "disabled"
- }
- ElseIf (-not $_.Available) {
- $_.Status = [MinerStatus]::Unavailable
- $_.SubStatus = "unavailable"
- }
- ElseIf ($_.Status -eq [MinerStatus]::Unavailable) {
- $_.Status = [MinerStatus]::Idle
- $_.SubStatus = "idle"
- }
- ElseIf ($_.Status -eq [MinerStatus]::Idle) {
- $_.SubStatus = "idle"
- }
- }
- )
-
- # Update data in API
- $Variables.Miners = $Miners.Where({ $_.SideIndicator -ne "<=" })
- $Variables.MinersBest = $MinersBest | Sort-Object { [String]$_.DeviceNames }
- Remove-Variable Miners, MinersBest -ErrorAction Ignore
-
- $Variables.Miners.ForEach({ $_.PSObject.Properties.Remove("SideIndicator") })
-
- If (-not ($Variables.EnabledDevices -and $Variables.Miners.Where({ $_.Available }))) {
- $Variables.Miners = [Miner[]]@()
- $Variables.RefreshNeeded = $true
- If (-not $Variables.EnabledDevices) {
- Write-Message -Level Warn "No enabled devices - retrying in $($Config.Interval) seconds..."
- Start-Sleep -Seconds $Config.Interval
- Write-Message -Level Info "Ending cycle (No enabled devices)."
- }
- ElseIf (-not $Variables.PoolName) {
- Write-Message -Level Warn "No configured pools - retrying in $($Config.Interval) seconds..."
- Start-Sleep -Seconds $Config.Interval
- Write-Message -Level Info "Ending cycle (No configured pools)."
- }
- ElseIf (-not $Variables.PoolsBest) {
- Write-Message -Level Warn "No available pools - retrying in $($Config.Interval) seconds..."
- Start-Sleep -Seconds $Config.Interval
- Write-Message -Level Info "Ending cycle (No available pools)."
- }
- Else {
- Write-Message -Level Warn "No available miners - retrying in $($Config.Interval) seconds..."
- Start-Sleep -Seconds $Config.Interval
- Write-Message -Level Info "Ending cycle (No available miners)."
- }
- Continue
- }
-
- If (-not $Variables.MinersBest) {
- $Variables.Miners.ForEach({ $_.Status = [MinerStatus]::Idle; $_.StatusInfo = "Idle" })
- $Variables.Devices.Where({ $_.State -eq [DeviceState]::Enabled }).ForEach({ $_.Status = [MinerStatus]::Idle; $_.StatusInfo = "Idle" })
- $Variables.RefreshNeeded = $true
- Write-Message -Level Warn "No profitable miners - retrying in $($Config.Interval) seconds..."
- Start-Sleep -Seconds $Config.Interval
- Write-Message -Level Info "Ending cycle (No profitable miners)."
- Continue
- }
-
- # Core suspended with P in MainLoop
- While ($Variables.SuspendCycle) { Start-Sleep -Seconds 1 }
-
- # Optional delay to avoid blue screens
- Start-Sleep -Seconds $Config.Delay
-
- ForEach ($Miner in $Variables.MinersBest) {
- If ($Miner.Status -ne [MinerStatus]::DryRun -and $Miner.GetStatus() -ne [MinerStatus]::Running) {
- If ($Config.DryRun -and -not ($Miner.Benchmark -or $Miner.MeasurePowerConsumption)) {
- $Miner.SetStatus([MinerStatus]::DryRun)
- }
- Else {
- # Launch prerun if exists
- If (Test-Path -LiteralPath ".\Utils\Prerun\$($Miner.Type)Prerun.bat" -PathType Leaf) {
- Write-Message -Level Info "Launching Prerun: .\Utils\Prerun\$($Miner.Type)Prerun.bat"
- Start-Process ".\Utils\Prerun\$($Miner.Type)Prerun.bat" -WorkingDirectory ".\Utils\Prerun" -WindowStyle hidden
- Start-Sleep -Seconds 2
- }
- $MinerAlgorithmPrerunName = ".\Utils\Prerun\$($Miner.Name)$(If ($Miner.Algorithms.Count -eq 1) { "_$($Miner.Algorithms[0])" } Else { "_$($Miner.Algorithms -join '&')" }).bat"
- $AlgorithmPrerunName = ".\Utils\Prerun\$($Miner.Algorithms -join "&").bat"
- $DefaultPrerunName = ".\Utils\Prerun\default.bat"
- If (Test-Path -LiteralPath $MinerAlgorithmPrerunName -PathType Leaf) {
- Write-Message -Level Info "Launching Prerun: $MinerAlgorithmPrerunName"
- Start-Process $MinerAlgorithmPrerunName -WorkingDirectory ".\Utils\Prerun" -WindowStyle hidden
- Start-Sleep -Seconds 2
- }
- ElseIf (Test-Path -LiteralPath $AlgorithmPrerunName -PathType Leaf) {
- Write-Message -Level Info "Launching Prerun: $AlgorithmPrerunName"
- Start-Process $AlgorithmPrerunName -WorkingDirectory ".\Utils\Prerun" -WindowStyle hidden
- Start-Sleep -Seconds 2
- }
- ElseIf (Test-Path -LiteralPath $DefaultPrerunName -PathType Leaf) {
- Write-Message -Level Info "Launching Prerun: $DefaultPrerunName"
- Start-Process $DefaultPrerunName -WorkingDirectory ".\Utils\Prerun" -WindowStyle hidden
- Start-Sleep -Seconds 2
- }
- Remove-Variable AlgorithmPrerunName, DefaultPrerunName, MinerAlgorithmPrerunName -ErrorAction Ignore
-
- If ($Miner.Workers.Pool.DAGSizeGiB) {
- # Add extra time when CPU mining and miner requires DAG creation
- If ($Variables.MinersBest.Type -contains "CPU") { $Miner.WarmupTimes[0] += 15 <# seconds #> }
- # Add extra time when notebook runs on battery
- If ((Get-CimInstance Win32_Battery).BatteryStatus -eq 1) { $Miner.WarmupTimes[0] += 90 <# seconds #> }
- }
-
- # Do not wait for stable hash rates, for quick and dirty benchmarking
- If ($Config.DryRun -and $Variables.BenchmarkAllPoolAlgorithmCombinations) { $Miner.WarmupTimes[1] = 0 }
-
- $Miner.SetStatus([MinerStatus]::Running)
- }
- $Variables.Devices.Where({ $Miner.DeviceNames -contains $_.Name }).ForEach({ $_.Status = $Miner.Status; $_.StatusInfo = $Miner.StatusInfo; $_.SubStatus = $Miner.SubStatus })
-
- # Set window title
- If ($Miner.Process.MainWindowHandle) { [Void][Win32]::SetWindowText($Miner.Process.MainWindowHandle, $Miner.StatusInfo) }
-
- # Add watchdog timer
- If ($Config.Watchdog) {
- ForEach ($Worker in $Miner.Workers) {
- $Variables.WatchdogTimers += [PSCustomObject]@{
- Algorithm = $Worker.Pool.Algorithm
- AlgorithmVariant = $Worker.Pool.AlgorithmVariant
- DeviceNames = $Miner.DeviceNames
- Kicked = [DateTime]::Now.ToUniversalTime()
- MinerBaseName = $Miner.BaseName
- MinerName = $Miner.Name
- MinerBaseName_Version_Device = $Miner.BaseName_Version_Device
- MinerBaseName_Version = $Miner.BaseName, $Miner.Version -join '-'
- MinerVersion = $Miner.Version
- PoolName = $Worker.Pool.Name
- PoolRegion = $Worker.Pool.Region
- PoolVariant = $Worker.Pool.Variant
- CommandLine = $Miner.CommandLine
- }
- }
- Remove-Variable Worker -ErrorAction Ignore
- }
- }
- Else {
- $DataCollectInterval = If ($Miner.Benchmark -or $Miner.MeasurePowerConsumption) { 1 } Else { 5 }
- If ($Miner.DataCollectInterval -ne $DataCollectInterval) {
- $Miner.DataCollectInterval = $DataCollectInterval
- $Miner.RestartDataReader()
- }
- Remove-Variable DataCollectInterval
- }
- }
-
- ForEach ($Miner in $Variables.MinersBest) {
- If ($Message = "$(If ($Miner.Benchmark) { "Benchmarking" })$(If ($Miner.Benchmark -and $Miner.MeasurePowerConsumption) { " and measuring power consumption" } ElseIf ($Miner.MeasurePowerConsumption) { "Measuring power consumption" })") {
- Write-Message -Level Verbose "$Message for miner '$($Miner.Info)' in progress [Attempt $($Miner.Activated) of $($Variables.WatchdogCount + 1); min. $($Miner.MinDataSample) samples]..."
- }
- }
- Remove-Variable Miner, Message -ErrorAction Ignore
-
- ($Variables.Miners.Where({ $_.Available }) | Group-Object { [String]$_.DeviceNames }).ForEach(
- {
- # Display benchmarking progress
- If ($MinersDeviceGroupNeedingBenchmark = $_.Group.Where({ $_.Benchmark })) {
- $Count = ($MinersDeviceGroupNeedingBenchmark | Select-Object -Property Name -Unique).Count
- Write-Message -Level Info "Benchmarking for '$($_.Name)' in progress. $Count miner$(If ($Count -gt 1) { "s" }) left to complete benchmarking."
- }
- # Display power consumption measurement progress
- If ($MinersDeviceGroupNeedingPowerConsumptionMeasurement = $_.Group.Where({ $_.MeasurePowerConsumption })) {
- $Count = ($MinersDeviceGroupNeedingPowerConsumptionMeasurement | Select-Object -Property Name -Unique).Count
- Write-Message -Level Info "Power consumption measurement for '$($_.Name)' in progress. $Count miner$(If ($Count -gt 1) { "s" }) left to complete measuring."
- }
- }
- )
- Remove-Variable Count, MinersDeviceGroupNeedingBenchmark, MinersDeviceGroupNeedingPowerConsumptionMeasurement -ErrorAction Ignore
-
- If ($Variables.CycleStarts.Count -eq 1) {
- # Ensure a cycle on first loop
- $Variables.EndCycleTime = [DateTime]::Now.ToUniversalTime().AddSeconds($Config.Interval)
- }
-
- $Variables.MinersRunning = $Variables.MinersBest
- $Variables.MinersBenchmarkingOrMeasuring = $Variables.MinersRunning.Where({ $_.Benchmark -or $_.MeasurePowerConsumption })
- $Variables.MinersFailed = [Miner[]]@()
-
- # Core suspended with P in MainLoop
- While ($Variables.SuspendCycle) { Start-Sleep -Seconds 1 }
-
- $Variables.RefreshTimestamp = [DateTime]::Now.ToUniversalTime()
- $Variables.RefreshNeeded = $true
-
- Write-Message -Level Info "Collecting miner data while waiting for next cycle..."
-
- Do {
- $LoopEnd = [DateTime]::Now.AddSeconds(1)
- Try {
- ForEach ($Miner in $Variables.MinersRunning.Where({ $_.Status -ne [MinerStatus]::DryRun })) {
- # If ($DebugMinerGetData) {
- Write-Host "$($Miner.BaseName_Version_Device): $($Miner.GetMinerData() | ConvertTo-Json -Compress)"
- # }
- If ($Miner.GetStatus() -ne [MinerStatus]::Running) {
- # Miner crashed
- $Miner.StatusInfo = "'$($Miner.Info)' ($($Miner.Data.Count) Sample$(If ($Miner.Data.Count -ne 1) { "s" })) exited unexpectedly"
- $Miner.SetStatus([MinerStatus]::Failed)
- $Variables.MinersFailed += $Miner
- }
- ElseIf ($Miner.DataReaderJob.State -ne [MinerStatus]::Running) {
- # Miner data reader process failed
- $Miner.StatusInfo = "'$($Miner.Info)' ($($Miner.Data.Count) Sample$(If ($Miner.Data.Count -ne 1) { "s" })) miner data reader exited unexpectedly"
- $Miner.SetStatus([MinerStatus]::Failed)
- $Variables.MinersFailed += $Miner
- }
- Else {
- If ($Miner.DataReaderJob.HasMoreData) {
- If ($Samples = @($Miner.DataReaderJob | Receive-Job).Where({ $_.Date })) {
- $Sample = $Samples[-1]
- $Miner.Hashrates_Live = $Sample.Hashrate.PSObject.Properties.Value
- $Miner.DataSampleTimestamp = $Sample.Date
- If ($Miner.ReadPowerConsumption) { $Miner.PowerConsumption_Live = $Sample.PowerConsumption }
- # Need hashrates for all algorithms to count as a valid sample
- If ($Sample.Hashrate.PSObject.Properties.Value -notcontains 0 -and $Miner.ValidDataSampleTimestamp -eq [DateTime]0) { $Miner.ValidDataSampleTimestamp = $Sample.Date.AddSeconds($Miner.WarmupTimes[1]) }
- If (($Miner.ValidDataSampleTimestamp -ne [DateTime]0 -and ($Sample.Date - $Miner.ValidDataSampleTimestamp) -ge 0)) {
- $Samples.Where({ $_.Hashrate.PSObject.Properties.Value -notcontains 0 }).ForEach({ $Miner.Data.Add($_) })
- Write-Message -Level Verbose "$($Miner.Name) data sample collected [$(($Sample.Hashrate.PSObject.Properties.Name.ForEach({ "$($_): $(($Sample.Hashrate.$_ | ConvertTo-Hash) -replace " ")$(If ($Config.ShowShares) { " (Shares: A$($Sample.Shares.$_[0])+R$($Sample.Shares.$_[1])+I$($Sample.Shares.$_[2])=T$($Sample.Shares.$_[3]))" })" })) -join " & ")$(If ($Sample.PowerConsumption) { " | Power: $($Sample.PowerConsumption.ToString("N2"))W" })] ($($Miner.Data.Count) Sample$(If ($Miner.Data.Count -ne 1) { "s" }))"
- If ($Miner.Activated -gt 0 -and ($Miner.Benchmark -or $Miner.MeasurePowerConsumption)) {
- $Miner.StatusInfo = "$(If ($Miner.Benchmark) { "Benchmarking" })$(If ($Miner.Benchmark -and $Miner.MeasurePowerConsumption) { " and measuring power consumption" } ElseIf ($Miner.MeasurePowerConsumption) { "Measuring power consumption" }) '$($Miner.Info)'"
- $Miner.SubStatus = "benchmarking"
- }
- Else {
- $Miner.StatusInfo = "Mining '$($Miner.Info)'"
- $Miner.SubStatus = "running"
- }
- }
- Else {
- Write-Message -Level Verbose "$($Miner.Name) data sample discarded [$(($Sample.Hashrate.PSObject.Properties.Name.ForEach({ "$($_): $(($Sample.Hashrate.$_ | ConvertTo-Hash) -replace " ")$(If ($Config.ShowShares) { " (Shares: A$($Sample.Shares.$_[0])+R$($Sample.Shares.$_[1])+I$($Sample.Shares.$_[2])=T$($Sample.Shares.$_[3]))" })" })) -join " & ")$(If ($Sample.PowerConsumption) { " | Power: $($Sample.PowerConsumption.ToString("N2"))W" })]$(If ($Miner.ValidDataSampleTimestamp -ne [DateTime]0) { " (Miner is warming up [$(([DateTime]::Now.ToUniversalTime() - $Miner.ValidDataSampleTimestamp).TotalSeconds.ToString("0") -replace "-0", "0") sec])"} )"
- $Miner.StatusInfo = "Warming up '$($Miner.Info)'"
- $Miner.SubStatus = "warmingup"
- }
- }
- }
- If ($Variables.NewMiningStatus -eq "Running") {
- # Stop miner, it has not provided hash rate on time
- If ($Miner.ValidDataSampleTimestamp -eq [DateTime]0 -and [DateTime]::Now.ToUniversalTime() -gt $Miner.BeginTime.AddSeconds($Miner.WarmupTimes[0])) {
- $Miner.StatusInfo = "'$($Miner.Info)' has not provided first valid data sample in $($Miner.WarmupTimes[0]) seconds"
- $Miner.SetStatus([MinerStatus]::Failed)
- $Variables.MinersFailed += $Miner
- }
- # Miner stuck - no sample received in last few data collect intervals
- ElseIf ($Miner.ValidDataSampleTimestamp -gt [DateTime]0 -and [DateTime]::Now.ToUniversalTime() -gt $Miner.DataSampleTimestamp.AddSeconds((($Miner.DataCollectInterval * 5), 10 | Measure-Object -Maximum).Maximum * $Miner.Algorithms.Count)) {
- $Miner.StatusInfo = "'$($Miner.Info)' has not updated data for more than $((($Miner.DataCollectInterval * 5), 10 | Measure-Object -Maximum).Maximum * $Miner.Algorithms.Count) seconds"
- $Miner.SetStatus([MinerStatus]::Failed)
- $Variables.MinersFailed += $Miner
- }
- }
- If ($Miner.Process) {
- $Miner.Process.PriorityClass = $Global:PriorityNames.($Miner.ProcessPriority)
- # Set window title
- [Void][Win32]::SetWindowText($Miner.Process.MainWindowHandle, $Miner.StatusInfo)
- }
- }
- $Variables.Devices.Where({ $Miner.DeviceNames -contains $_.Name }).ForEach({ $_.Status = $Miner.Status; $_.StatusInfo = $Miner.StatusInfo; $_.SubStatus = $Miner.SubStatus })
- }
- Remove-Variable Miner, Sample, Samples -ErrorAction Ignore
-
- $Variables.MinersRunning = $Variables.MinersRunning.Where({ $_ -notin $Variables.MinersFailed })
- $Variables.MinersBenchmarkingOrMeasuring = $Variables.MinersRunning.Where({ $_.Benchmark -or $_.MeasurePowerConsumption })
-
- If ($Variables.MinersFailed) {
- # A miner crashed , exit loop immediately
- $Variables.EndCycleMessage = " prematurely (miner failed)"
- }
- ElseIf ($Variables.MinersBenchmarkingOrMeasuring.Where({ $_.Data.Count -ge $_.MinDataSample })) {
- # Enough samples collected for this loop, exit loop immediately
- $Variables.EndCycleMessage = " (a$(If ($Variables.MinersBenchmarkingOrMeasuring.Where({ $_.Benchmark })) { " benchmarking" })$(If ($Variables.MinersBenchmarkingOrMeasuring.Where({ $_.Benchmark -and $_.MeasurePowerConsumption })) { " and" })$(If ($Variables.MinersBenchmarkingOrMeasuring.Where({ $_.MeasurePowerConsumption })) { " power consumption measuring" }) miner has collected enough samples for this cycle)"
- }
- }
- Catch {
- Write-Message -Level Error "Error in file '$(($_.InvocationInfo.ScriptName -split "\\" | Select-Object -Last 2) -join "\")' line $($_.InvocationInfo.ScriptLineNumber) detected. Restarting cycle..."
- "$(Get-Date -Format "yyyy-MM-dd_HH:mm:ss")" >> $ErrorLogFile
- $_.Exception | Format-List -Force >> $ErrorLogFile
- $_.InvocationInfo | Format-List -Force >> $ErrorLogFile
- }
-
- # Core suspended with P in MainLoop
- While ($Variables.SuspendCycle) { Start-Sleep -Seconds 1 }
-
- # Wait until 1 second since loop start has passed
- While ([DateTime]::Now -le $LoopEnd) { Start-Sleep -Milliseconds 50 }
-
- # Exit loop when
- # - a miner crashed
- # - a benchmarking miner has collected enough samples
- # - WarmupTimes[0] is reached and no readout from miner
- # - when not benchmnarking: Interval time is over
- } While ($Variables.NewMiningStatus -eq "Running" -and -not $Variables.EndCycleMessage -and ((-not $Config.DryRun -and [DateTime]::Now.ToUniversalTime() -le $Variables.EndCycleTime) -or $Variables.MinersBenchmarkingOrMeasuring))
- Remove-Variable LoopEnd
-
- # Expire brains loop to collect data
- If ($Variables.EndCycleMessage -or $Config.DryRun) {
- $Variables.EndCycleTime = [DateTime]::Now.ToUniversalTime()
- Start-Sleep -Seconds 1
- }
-
- Get-Job -State "Completed" | Receive-Job | Out-Null
- Get-Job -State "Completed" | Remove-Job -Force -ErrorAction Ignore | Out-Null
- Get-Job -State "Failed" | Receive-Job | Out-Null
- Get-Job -State "Failed" | Remove-Job -Force -ErrorAction Ignore | Out-Null
- Get-Job -State "Stopped" | Receive-Job | Out-Null
- Get-Job -State "Stopped" | Remove-Job -Force -ErrorAction Ignore | Out-Null
-
- $Error.Clear()
- [System.GC]::Collect()
- $Proc = Get-Process -Id $PID
- Write-Message -Level MemDbg "$((Get-Item $MyInvocation.MyCommand.Path).BaseName) runspace: handles: $($Proc.HandleCount) / memory: $($Proc.PrivateMemorySize64 / 1mb) mb"
-
- $Variables.RestartCycle = $true
-
- If ($Variables.NewMiningStatus -eq "Running") { Write-Message -Level Info "Ending cycle$($Variables.EndCycleMessage)." }
- } While ($Variables.NewMiningStatus -eq "Running")
-}
-Catch {
- Write-Message -Level Error "Error in file '$(($_.InvocationInfo.ScriptName -split "\\" | Select-Object -Last 2) -join "\")' line $($_.InvocationInfo.ScriptLineNumber) detected."
- "$(Get-Date -Format "yyyy-MM-dd_HH:mm:ss")" >> $ErrorLogFile
- $_.Exception | Format-List -Force >> $ErrorLogFile
- $_.InvocationInfo | Format-List -Force >> $ErrorLogFile
- $Variables.EndCycleTime = $Variables.StartCycleTime.AddSeconds($Config.Interval) # Reset timers
-}
\ No newline at end of file
diff --git a/Includes/Downloader.ps1 b/Includes/Downloader.ps1
index 127b47a5..4aad2787 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.3.3
-Version date: 2024/09/11
+Version: 6.3.4
+Version date: 2024/09/13
#>
using module .\Includes\Include.psm1
diff --git a/Includes/Include.psm1 b/Includes/Include.psm1
index 0a866c52..e1509920 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.3.3
-Version date: 2024/09/11
+Version: 6.3.4
+Version date: 2024/09/13
#>
$Global:DebugPreference = "SilentlyContinue"
@@ -806,7 +806,7 @@ Function Stop-Core {
$Miner.SetStatus([MinerStatus]::Idle)
}
- $Variables.Miners.ForEach({ $_.Dispose })
+ $Variables.Miners.ForEach({ $_.Dispose() })
$Variables.Miners = [Miner[]]@()
$Variables.MinersBenchmarkingOrMeasuring = [Miner[]]@()
$Variables.MinersBest = [Miner[]]@()
diff --git a/Includes/LegacyGUI.ps1 b/Includes/LegacyGUI.ps1
index 83455a16..36e2d630 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.3.3
-Version date: 2024/09/11
+Version: 6.3.4
+Version date: 2024/09/13
#>
[Void][System.Reflection.Assembly]::Load("System.Windows.Forms")
@@ -147,11 +147,9 @@ Function Update-TabControl {
$LegacyGUIactiveMinersDGV.BeginInit()
$LegacyGUIactiveMinersDGV.ClearSelection()
$LegacyGUIactiveMinersDGV.DataSource = $Variables.MinersBest | Select-Object @(
- @{ Name = "Info"; Expression = { $_.info } }
@{ Name = "SubStatus"; Expression = { $_.SubStatus } }
@{ Name = "Device(s)"; Expression = { $_.DeviceNames -join " " } }
- @{ Name = "Miner"; Expression = { $_.Name } }
- @{ Name = "Status"; Expression = { $_.Status } },
+ @{ Name = "Status Info"; Expression = { $_.StatusInfo } }
@{ Name = "Earning (biased) $($Config.FIATcurrency)/day"; Expression = { If ([Double]::IsNaN($_.Earning)) { "n/a" } Else { "{0:n$($Config.DecimalsMax)}" -f ($_.Earning * $Variables.Rates.BTC.($Config.FIATcurrency)) } } }
@{ Name = "Power cost $($Config.FIATcurrency)/day"; Expression = { If ([Double]::IsNaN($_.PowerCost) -or -not $Variables.CalculatePowerCost) { "n/a" } Else { "{0:n$($Config.DecimalsMax)}" -f ($_.Powercost * $Variables.Rates.BTC.($Config.FIATcurrency)) } } }
@{ Name = "Profit (biased) $($Config.FIATcurrency)/day"; Expression = { If ([Double]::IsNaN($_.PowerCost) -or -not $Variables.CalculatePowerCost) { "n/a" } Else { "{0:n$($Config.DecimalsMax)}" -f ($_.Profit * $Variables.Rates.BTC.($Config.FIATcurrency)) } } }
@@ -161,25 +159,22 @@ Function Update-TabControl {
@{ Name = "Hashrate"; Expression = { If ($_.Benchmark) { If ($_.Status -eq "Running") { "Benchmarking..." } Else { "Benchmark pending" } } Else { $_.WorkersRunning.ForEach({ $_.Hashrate | ConvertTo-Hash }) -join " & " } } }
@{ Name = "Running time (hhh:mm:ss)"; Expression = { "{0}:{1:mm}:{1:ss}" -f [Math]::floor(([DateTime]::Now.ToUniversalTime() - $_.BeginTime).TotalDays * 24), ([DateTime]::Now.ToUniversalTime() - $_.BeginTime) } }
@{ Name = "Total active (hhh:mm:ss)"; Expression = { "{0}:{1:mm}:{1:ss}" -f [Math]::floor($_.TotalMiningDuration.TotalDays * 24), $_.TotalMiningDuration } }
- If ($LegacyGUIradioButtonPoolsUnavailable.checked) { @{ Name = "Reason"; Expression = { $_.Reasons -join ", " } } }
) | Sort-Object -Property "Device(s)" | Out-DataTable
$LegacyGUIactiveMinersDGV.ClearSelection()
If (-not $LegacyGUIactiveMinersDGV.ColumnWidthChanged -and $LegacyGUIactiveMinersDGV.Columns) {
$LegacyGUIactiveMinersDGV.Columns[0].Visible = $false
- $LegacyGUIactiveMinersDGV.Columns[1].Visible = $false
- $LegacyGUIactiveMinersDGV.Columns[2].FillWeight = 30 + ($Variables.MinersBest.ForEach({ $_.DeviceNames.Count }) | Measure-Object -Maximum).Maximum * 20
- $LegacyGUIactiveMinersDGV.Columns[3].FillWeight = 160
- $LegacyGUIactiveMinersDGV.Columns[4].FillWeight = 60
- $LegacyGUIactiveMinersDGV.Columns[5].FillWeight = 55; $LegacyGUIactiveMinersDGV.Columns[5].DefaultCellStyle.Alignment = "MiddleRight"; $LegacyGUIactiveMinersDGV.Columns[5].HeaderCell.Style.Alignment = "MiddleRight"
+ $LegacyGUIactiveMinersDGV.Columns[1].FillWeight = 20 + ($Variables.MinersBest.ForEach({ $_.DeviceNames.Count }) | Measure-Object -Maximum).Maximum * 20
+ $LegacyGUIactiveMinersDGV.Columns[2].FillWeight = 190
+ $LegacyGUIactiveMinersDGV.Columns[3].FillWeight = 55; $LegacyGUIactiveMinersDGV.Columns[3].DefaultCellStyle.Alignment = "MiddleRight"; $LegacyGUIactiveMinersDGV.Columns[3].HeaderCell.Style.Alignment = "MiddleRight"
+ $LegacyGUIactiveMinersDGV.Columns[4].FillWeight = 55; $LegacyGUIactiveMinersDGV.Columns[4].DefaultCellStyle.Alignment = "MiddleRight"; $LegacyGUIactiveMinersDGV.Columns[4].HeaderCell.Style.Alignment = "MiddleRight"; $LegacyGUIactiveMinersDGV.Columns[4].Visible = $Variables.CalculatePowerCost
+ $LegacyGUIactiveMinersDGV.Columns[5].FillWeight = 55; $LegacyGUIactiveMinersDGV.Columns[5].DefaultCellStyle.Alignment = "MiddleRight"; $LegacyGUIactiveMinersDGV.Columns[5].HeaderCell.Style.Alignment = "MiddleRight"; $LegacyGUIactiveMinersDGV.Columns[5].Visible = $Variables.CalculatePowerCost
$LegacyGUIactiveMinersDGV.Columns[6].FillWeight = 55; $LegacyGUIactiveMinersDGV.Columns[6].DefaultCellStyle.Alignment = "MiddleRight"; $LegacyGUIactiveMinersDGV.Columns[6].HeaderCell.Style.Alignment = "MiddleRight"; $LegacyGUIactiveMinersDGV.Columns[6].Visible = $Variables.CalculatePowerCost
- $LegacyGUIactiveMinersDGV.Columns[7].FillWeight = 55; $LegacyGUIactiveMinersDGV.Columns[7].DefaultCellStyle.Alignment = "MiddleRight"; $LegacyGUIactiveMinersDGV.Columns[7].HeaderCell.Style.Alignment = "MiddleRight"; $LegacyGUIactiveMinersDGV.Columns[7].Visible = $Variables.CalculatePowerCost
- $LegacyGUIactiveMinersDGV.Columns[8].FillWeight = 55; $LegacyGUIactiveMinersDGV.Columns[8].DefaultCellStyle.Alignment = "MiddleRight"; $LegacyGUIactiveMinersDGV.Columns[8].HeaderCell.Style.Alignment = "MiddleRight"; $LegacyGUIactiveMinersDGV.Columns[8].Visible = $Variables.CalculatePowerCost
- $LegacyGUIactiveMinersDGV.Columns[9].FillWeight = 70 + ($Variables.MinersBest.({ $_.Workers.Count }) | Measure-Object -Maximum).Maximum * 35
- $LegacyGUIactiveMinersDGV.Columns[10].FillWeight = 50 + ($Variables.MinersBest.({ $_.Workers.Count }) | Measure-Object -Maximum).Maximum * 25
- $LegacyGUIactiveMinersDGV.Columns[11].FillWeight = 50 + ($Variables.MinersBest.({ $_.Workers.Count }) | Measure-Object -Maximum).Maximum * 25; $LegacyGUIactiveMinersDGV.Columns[11].DefaultCellStyle.Alignment = "MiddleRight"; $LegacyGUIactiveMinersDGV.Columns[11].HeaderCell.Style.Alignment = "MiddleRight"
- $LegacyGUIactiveMinersDGV.Columns[12].FillWeight = 65; $LegacyGUIactiveMinersDGV.Columns[12].DefaultCellStyle.Alignment = "MiddleRight"; $LegacyGUIactiveMinersDGV.Columns[12].HeaderCell.Style.Alignment = "MiddleRight"
- $LegacyGUIactiveMinersDGV.Columns[13].FillWeight = 65; $LegacyGUIactiveMinersDGV.Columns[13].DefaultCellStyle.Alignment = "MiddleRight"; $LegacyGUIactiveMinersDGV.Columns[13].HeaderCell.Style.Alignment = "MiddleRight"
+ $LegacyGUIactiveMinersDGV.Columns[7].FillWeight = 60 + ($Variables.MinersBest.ForEach({ $_.Workers.Count }) | Measure-Object -Maximum).Maximum * 30
+ $LegacyGUIactiveMinersDGV.Columns[8].FillWeight = 45 + ($Variables.MinersBest.ForEach({ $_.Workers.Count }) | Measure-Object -Maximum).Maximum * 25
+ $LegacyGUIactiveMinersDGV.Columns[9].FillWeight = 45 + ($Variables.MinersBest.ForEach({ $_.Workers.Count }) | Measure-Object -Maximum).Maximum * 25; $LegacyGUIactiveMinersDGV.Columns[9].DefaultCellStyle.Alignment = "MiddleRight"; $LegacyGUIactiveMinersDGV.Columns[9].HeaderCell.Style.Alignment = "MiddleRight"
+ $LegacyGUIactiveMinersDGV.Columns[10].FillWeight = 50; $LegacyGUIactiveMinersDGV.Columns[10].DefaultCellStyle.Alignment = "MiddleRight"; $LegacyGUIactiveMinersDGV.Columns[10].HeaderCell.Style.Alignment = "MiddleRight"
+ $LegacyGUIactiveMinersDGV.Columns[11].FillWeight = 50; $LegacyGUIactiveMinersDGV.Columns[11].DefaultCellStyle.Alignment = "MiddleRight"; $LegacyGUIactiveMinersDGV.Columns[11].HeaderCell.Style.Alignment = "MiddleRight"
$LegacyGUIactiveMinersDGV | Add-Member ColumnWidthChanged $true
}
@@ -354,7 +349,7 @@ Function Update-TabControl {
$LegacyGUIcontextMenuStripItem6.Visible = $true
If ($LegacyGUIradioButtonMinersOptimal.checked) { $DataSource = $Variables.MinersOptimal }
- ElseIf ($LegacyGUIradioButtonMinersUnavailable.checked) { $DataSource = $Variables.Miners.Where({ -not $_.Available }) }
+ ElseIf ($LegacyGUIradioButtonMinersUnavailable.checked) { $DataSource = $Variables.Miners.Where({ -not $_.Available }) | Sort-Object { [String]$_.DeviceNames }, Info }
Else { $DataSource = $Variables.Miners }
If ($Variables.MiningStatus -eq "Idle") { $LegacyGUIminersLabel.Text = "No data - mining is stopped" }
@@ -364,7 +359,7 @@ Function Update-TabControl {
If (-not $LegacyGUIminersDGV.SelectedRows) {
$LegacyGUIminersLabel.Text = "Miner data updated $([DateTime]::Now.ToString())"
$LegacyGUIminersDGV.BeginInit()
- $LegacyGUIminersDGV.ClearSelection()
+
$LegacyGUIminersDGV.DataSource = $DataSource | Select-Object @(
@{ Name = "Info"; Expression = { $_.Info } },
@{ Name = "SubStatus"; Expression = { $_.SubStatus } },
@@ -380,7 +375,7 @@ Function Update-TabControl {
@{ Name = "Pool"; Expression = { $_.Workers.Pool.Name -join " & " } },
@{ Name = "Hashrate"; Expression = { If ($_.Benchmark) { If ($_.Status -eq "Running") { "Benchmarking..." } Else { "Benchmark pending" } } Else { $_.Workers.ForEach({ $_.Hashrate | ConvertTo-Hash }) -join " & " } } }
If ($LegacyGUIradioButtonMinersUnavailable.checked -or $LegacyGUIradioButtonMiners.checked) { @{ Name = "Reason(s)"; Expression = { $_.Reasons -join ", "} } }
- ) | Sort-Object @{ Expression = { $_.Best }; Descending = $true }, "Device(s)", Info | Out-DataTable
+ ) | Out-DataTable
$LegacyGUIminersDGV.ClearSelection()
If (-not $LegacyGUIminersDGV.ColumnWidthChanged -and $LegacyGUIminersDGV.Columns) {
@@ -388,17 +383,17 @@ Function Update-TabControl {
$LegacyGUIminersDGV.Columns[1].Visible = $false
$LegacyGUIminersDGV.Columns[2].Visible = $false
$LegacyGUIminersDGV.Columns[3].FillWeight = 160
- $LegacyGUIminersDGV.Columns[4].FillWeight = 25 + ($DataSource.ForEach({ $_.DeviceNames.Count }) | Measure-Object -Maximum).Maximum * 25
- $LegacyGUIminersDGV.Columns[5].Visible = -not $LegacyGUIradioButtonMinersUnavailable.checked; $LegacyGUIminersDGV.Columns[5].FillWeight = 50
- $LegacyGUIminersDGV.Columns[6].FillWeight = 55; $LegacyGUIminersDGV.Columns[6].DefaultCellStyle.Alignment = "MiddleRight"; $LegacyGUIminersDGV.Columns[6].HeaderCell.Style.Alignment = "MiddleRight"
- $LegacyGUIminersDGV.Columns[7].FillWeight = 60; $LegacyGUIminersDGV.Columns[7].DefaultCellStyle.Alignment = "MiddleRight"; $LegacyGUIminersDGV.Columns[7].HeaderCell.Style.Alignment = "MiddleRight"; $LegacyGUIminersDGV.Columns[7].Visible = $Variables.CalculatePowerCost
- $LegacyGUIminersDGV.Columns[8].FillWeight = 55; $LegacyGUIminersDGV.Columns[8].DefaultCellStyle.Alignment = "MiddleRight"; $LegacyGUIminersDGV.Columns[8].HeaderCell.Style.Alignment = "MiddleRight"; $LegacyGUIminersDGV.Columns[8].Visible = $Variables.CalculatePowerCost
- $LegacyGUIminersDGV.Columns[9].FillWeight = 55; $LegacyGUIminersDGV.Columns[9].DefaultCellStyle.Alignment = "MiddleRight"; $LegacyGUIminersDGV.Columns[9].HeaderCell.Style.Alignment = "MiddleRight"; $LegacyGUIminersDGV.Columns[9].Visible = $Variables.CalculatePowerCost
- $LegacyGUIminersDGV.Columns[10].FillWeight = 60 + ($DataSource.ForEach({ $_.Workers.Count }) | Measure-Object -Maximum).Maximum * 30
- $LegacyGUIminersDGV.Columns[11].FillWeight = 60 + ($DataSource.ForEach({ $_.Workers.Count }) | Measure-Object -Maximum).Maximum * 30
- $LegacyGUIminersDGV.Columns[12].FillWeight = 50 + ($DataSource.ForEach({ $_.Workers.Count }) | Measure-Object -Maximum).Maximum * 25; $LegacyGUIminersDGV.Columns[12].DefaultCellStyle.Alignment = "MiddleRight"; $LegacyGUIminersDGV.Columns[12].HeaderCell.Style.Alignment = "MiddleRight"
-
- $LegacyGUIminersDGV | Add-Member ColumnWidthChanged $true
+ $LegacyGUIminersDGV.Columns[4].FillWeight = 20 + ($DataSource.ForEach({ $_.DeviceNames.Count }) | Measure-Object -Maximum).Maximum * 15
+ $LegacyGUIminersDGV.Columns[5].Visible = -not $LegacyGUIradioButtonMinersUnavailable.checked; $LegacyGUIminersDGV.Columns[5].FillWeight = 30
+ $LegacyGUIminersDGV.Columns[6].FillWeight = 40; $LegacyGUIminersDGV.Columns[6].DefaultCellStyle.Alignment = "MiddleRight"; $LegacyGUIminersDGV.Columns[6].HeaderCell.Style.Alignment = "MiddleRight"
+ $LegacyGUIminersDGV.Columns[7].FillWeight = 40; $LegacyGUIminersDGV.Columns[7].DefaultCellStyle.Alignment = "MiddleRight"; $LegacyGUIminersDGV.Columns[7].HeaderCell.Style.Alignment = "MiddleRight"; $LegacyGUIminersDGV.Columns[7].Visible = $Variables.CalculatePowerCost
+ $LegacyGUIminersDGV.Columns[8].FillWeight = 40; $LegacyGUIminersDGV.Columns[8].DefaultCellStyle.Alignment = "MiddleRight"; $LegacyGUIminersDGV.Columns[8].HeaderCell.Style.Alignment = "MiddleRight"; $LegacyGUIminersDGV.Columns[8].Visible = $Variables.CalculatePowerCost
+ $LegacyGUIminersDGV.Columns[9].FillWeight = 40; $LegacyGUIminersDGV.Columns[9].DefaultCellStyle.Alignment = "MiddleRight"; $LegacyGUIminersDGV.Columns[9].HeaderCell.Style.Alignment = "MiddleRight"; $LegacyGUIminersDGV.Columns[9].Visible = $Variables.CalculatePowerCost
+ $LegacyGUIminersDGV.Columns[10].FillWeight = If ($LegacyGUIminersDGV.DataSource.Pool -like '* & ') { 90 } Else { 60 }
+ $LegacyGUIminersDGV.Columns[11].FillWeight = If ($LegacyGUIminersDGV.DataSource.Pool -like '* & ') { 85 } Else { 60 }
+ $LegacyGUIminersDGV.Columns[12].FillWeight = If ($LegacyGUIminersDGV.DataSource.Pool -like '* & ') { 80 } Else { 50 }; $LegacyGUIminersDGV.Columns[12].DefaultCellStyle.Alignment = "MiddleRight"; $LegacyGUIminersDGV.Columns[12].HeaderCell.Style.Alignment = "MiddleRight"
+
+ $LegacyGUIminersDGV | Add-Member ColumnWidthChanged $true -Force
}
$LegacyGUIminersDGV.EndInit()
}
@@ -691,9 +686,11 @@ Function Update-GUIstatus {
$LegacyGUIminingStatusLabel.ForeColor = [System.Drawing.Color]::Green
$LegacyGUIminingStatusLabel.Text = "$($Variables.Branding.ProductLabel) is running"
}
- $LegacyGUIminingSummaryLabel.Text = ""
- (($Variables.Summary -replace "Power cost", "
Power cost" -replace " ", " " -replace " ", " ") -split "
").ForEach({ $LegacyGUIminingSummaryLabel.Text += "`r`n$_" })
- $LegacyGUIminingSummaryLabel.Text += "`r`n "
+ If (-not $Variables.SuspendCycle) {
+ $LegacyGUIminingSummaryLabel.Text = ""
+ (($Variables.Summary -replace "Power cost", "
Power cost" -replace " ", " " -replace " ", " ") -split "
").ForEach({ $LegacyGUIminingSummaryLabel.Text += "`r`n$_" })
+ $LegacyGUIminingSummaryLabel.Text += "`r`n "
+ }
$LegacyGUIbuttonPause.Enabled = $true
$LegacyGUIbuttonStart.Enabled = $false
@@ -777,43 +774,13 @@ $LegacyGUIbuttonPause.Visible = $true
$LegacyGUIbuttonPause.Width = 100
$LegacyGUIbuttonPause.Add_Click(
{
- If ($LegacyGUIbuttonPause.Tag) {
- If (-not $Global:CoreRunspace.AsyncObject.IsCompleted -eq $false) {
- # Core is complete / gone. Cycle cannot be suspended anymore
- $Variables.SuspendCycle = $false
- }
- Else {
- $Variables.SuspendCycle = -not $Variables.SuspendCycle
- If ($Variables.SuspendCycle) {
- $Message = "'P' pressed. Core cycle is suspended until you press 'P' again."
- $LegacyGUIminingSummaryLabel.ForeColor = [System.Drawing.Color]::Blue
- $LegacyGUIminingSummaryLabel.Text = $Message
- Write-Host $Message -ForegroundColor Cyan
- }
- Else {
- $Message = "'P' pressed. Core cycle is running again."
- $LegacyGUIminingSummaryLabel.Text = $Message
- $LegacyGUIminingSummaryLabel.ForeColor = [System.Drawing.Color]::Blue
- Write-Host $Message -ForegroundColor Cyan
- If ([DateTime]::Now.ToUniversalTime() -gt $Variables.EndCycleTime) { $Variables.EndCycleTime = [DateTime]::Now.ToUniversalTime() }
- }
- Remove-Variable Message
- }
- }
- ElseIf ($Variables.NewMiningStatus -ne "Paused") {
+ If ($Variables.NewMiningStatus -ne "Paused" -and -not $Variables.SuspendCycle) {
$Variables.NewMiningStatus = "Paused"
$Variables.SuspendCycle = $false
$Variables.RestartCycle = $true
}
}
)
-$LegacyGUIbuttonPause.Add_KeyDown(
- {
- If ([System.Windows.Forms.UserControl]::MouseButtons -eq "Left") {
- $LegacyGUIbuttonPause.Tag = $_.Control -and $_.Alt
- }
- }
-)
$LegacyGUIControls += $LegacyGUIbuttonPause
$LegacyGUItooltip.SetToolTip($LegacyGUIbuttonPause, "Pause mining processes.`rBackground processes remain running.")
@@ -1287,6 +1254,8 @@ $LegacyGUIradioButtonMinersOptimal.Width = 150
$LegacyGUIradioButtonMinersOptimal.Add_Click(
{
$LegacyGUIform.Cursor = [System.Windows.Forms.Cursors]::WaitCursor
+ $LegacyGUIminersDGV | Add-Member ColumnWidthChanged $false -Force
+ $LegacyGUIminersDGV.ClearSelection()
Update-TabControl
$LegacyGUIform.Cursor = [System.Windows.Forms.Cursors]::Normal
}
@@ -1303,6 +1272,8 @@ $LegacyGUIradioButtonMinersUnavailable.Width = 170
$LegacyGUIradioButtonMinersUnavailable.Add_Click(
{
$LegacyGUIform.Cursor = [System.Windows.Forms.Cursors]::WaitCursor
+ $LegacyGUIminersDGV | Add-Member ColumnWidthChanged $false -Force
+ $LegacyGUIminersDGV.ClearSelection()
Update-TabControl
$LegacyGUIform.Cursor = [System.Windows.Forms.Cursors]::Normal
}
@@ -1319,6 +1290,8 @@ $LegacyGUIradioButtonMiners.Width = 100
$LegacyGUIradioButtonMiners.Add_Click(
{
$LegacyGUIform.Cursor = [System.Windows.Forms.Cursors]::WaitCursor
+ $LegacyGUIminersDGV | Add-Member ColumnWidthChanged $false -Force
+ $LegacyGUIminersDGV.ClearSelection()
Update-TabControl
$LegacyGUIform.Cursor = [System.Windows.Forms.Cursors]::Normal
}
@@ -1361,11 +1334,6 @@ $LegacyGUIminersDGV.Name = "MinersDGV"
$LegacyGUIminersDGV.ReadOnly = $true
$LegacyGUIminersDGV.RowHeadersVisible = $false
$LegacyGUIminersDGV.SelectionMode = "FullRowSelect"
-$LegacyGUIminersDGV.Add_ColumnWidthChanged(
- {
- $LegacyGUIminersDGV.ColumnWidthChanged = $true
- }
-)
$LegacyGUIminersDGV.Add_MouseUP(
{
If ($_.Button -eq [System.Windows.Forms.MouseButtons]::Right) {
@@ -1864,6 +1832,35 @@ $LegacyGUIform.Add_FormClosing(
$LegacyGUIform.Add_KeyDown(
{
If ($PSItem.KeyCode -eq "F5") { Update-TabControl }
+ If ($Variables.NewMiningStatus -eq "Running" -and $_.KeyCode -eq "P" -and $_.Control -and $_.Alt) {
+ If (-not $Global:CoreRunspace.AsyncObject.IsCompleted -eq $false) {
+ # Core is complete / gone. Cycle cannot be suspended anymore
+ $Variables.SuspendCycle = $false
+ }
+ Else {
+ $Variables.SuspendCycle = -not $Variables.SuspendCycle
+ If ($Variables.SuspendCycle) {
+ $Message = "'P' pressed. Core cycle is suspended until you press 'P' again."
+ If ($LegacyGUIform) {
+ $LegacyGUIminingSummaryLabel.ForeColor = [System.Drawing.Color]::Blue
+ $LegacyGUIminingSummaryLabel.Text = $Message
+ $LegacyGUIbuttonPause.Enabled = $false
+ }
+ Write-Host $Message -ForegroundColor Cyan
+ }
+ Else {
+ $Message = "'P' pressed. Core cycle is running again."
+ If ($LegacyGUIform) {
+ $LegacyGUIminingSummaryLabel.ForeColor = [System.Drawing.Color]::Blue
+ $LegacyGUIminingSummaryLabel.Text = $Message
+ $LegacyGUIbuttonPause.Enabled = $true
+ }
+ Write-Host $Message -ForegroundColor Cyan
+ If ([DateTime]::Now.ToUniversalTime() -gt $Variables.EndCycleTime) { $Variables.EndCycleTime = [DateTime]::Now.ToUniversalTime() }
+ }
+ Remove-Variable Message
+ }
+ }
}
)
diff --git a/Includes/MinerAPIs/BzMiner.ps1 b/Includes/MinerAPIs/BzMiner.ps1
index 1995bdab..00e49930 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.3.3
-Version date: 2024/09/11
+Version: 6.3.4
+Version date: 2024/09/13
#>
Class BzMiner : Miner {
diff --git a/Includes/MinerAPIs/Ccminer.ps1 b/Includes/MinerAPIs/Ccminer.ps1
index d7294a2a..dcfb87a2 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.3.3
-Version date: 2024/09/11
+Version: 6.3.4
+Version date: 2024/09/13
#>
Class CcMiner : Miner {
diff --git a/Includes/MinerAPIs/EthMiner.ps1 b/Includes/MinerAPIs/EthMiner.ps1
index 4d6a3262..94f006bc 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.3.3
-Version date: 2024/09/11
+Version: 6.3.4
+Version date: 2024/09/13
#>
Class EthMiner : Miner {
diff --git a/Includes/MinerAPIs/FireIce.ps1 b/Includes/MinerAPIs/FireIce.ps1
index 2da2e03a..4a266f66 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.3.3
-Version date: 2024/09/11
+Version: 6.3.4
+Version date: 2024/09/13
#>
Class Fireice : Miner {
diff --git a/Includes/MinerAPIs/Gminer.ps1 b/Includes/MinerAPIs/Gminer.ps1
index c12933d8..96c0de2d 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.3.3
-Version date: 2024/09/11
+Version: 6.3.4
+Version date: 2024/09/13
#>
Class GMiner : Miner {
diff --git a/Includes/MinerAPIs/HellMiner.ps1 b/Includes/MinerAPIs/HellMiner.ps1
index 12bda4d9..fbc5967c 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.3.3
-Version date: 2024/09/11
+Version: 6.3.4
+Version date: 2024/09/13
#>
Class HellMiner : Miner {
diff --git a/Includes/MinerAPIs/MiniZ.ps1 b/Includes/MinerAPIs/MiniZ.ps1
index 9819e9ca..1ab1779f 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.3.3
-Version date: 2024/09/11
+Version: 6.3.4
+Version date: 2024/09/13
#>
Class MiniZ : Miner {
diff --git a/Includes/MinerAPIs/NBMiner.ps1 b/Includes/MinerAPIs/NBMiner.ps1
index 9a90a217..a1df7515 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.3.3
-Version date: 2024/09/11
+Version: 6.3.4
+Version date: 2024/09/13
#>
Class NBMiner : Miner {
diff --git a/Includes/MinerAPIs/NanoMiner.ps1 b/Includes/MinerAPIs/NanoMiner.ps1
index 6a5c482a..fbfa1058 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.3.3
-Version date: 2024/09/11
+Version: 6.3.4
+Version date: 2024/09/13
#>
Class NanoMiner : Miner {
diff --git a/Includes/MinerAPIs/OneZero.ps1 b/Includes/MinerAPIs/OneZero.ps1
index 1f95656c..3e2312ac 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.3.3
-Version date: 2024/09/11
+Version: 6.3.4
+Version date: 2024/09/13
#>
Class OneZero : Miner {
diff --git a/Includes/MinerAPIs/Rigel.ps1 b/Includes/MinerAPIs/Rigel.ps1
index 3940ad28..f9d37498 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.3.3
-Version date: 2024/09/11
+Version: 6.3.4
+Version date: 2024/09/13
#>
Class Rigel : Miner {
diff --git a/Includes/MinerAPIs/SRBMiner.ps1 b/Includes/MinerAPIs/SRBMiner.ps1
index 82128723..3f511c4e 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.3.3
-Version date: 2024/09/11
+Version: 6.3.4
+Version date: 2024/09/13
#>
Class SRBMiner : Miner {
diff --git a/Includes/MinerAPIs/TeamBlackMiner.ps1 b/Includes/MinerAPIs/TeamBlackMiner.ps1
index 687dd99d..e5984c6d 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.3.3
-Version date: 2024/09/11
+Version: 6.3.4
+Version date: 2024/09/13
#>
Class TeamBlackMiner : Miner {
diff --git a/Includes/MinerAPIs/Trex.ps1 b/Includes/MinerAPIs/Trex.ps1
index 64f085bf..9c562012 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.3.3
-Version date: 2024/09/11
+Version: 6.3.4
+Version date: 2024/09/13
#>
Class Trex : Miner {
diff --git a/Includes/MinerAPIs/Xgminer.ps1 b/Includes/MinerAPIs/Xgminer.ps1
index 1ef9b962..3eac7c92 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.3.3
-Version date: 2024/09/11
+Version: 6.3.4
+Version date: 2024/09/13
#>
Class XgMiner : Miner {
diff --git a/Includes/MinerAPIs/XmRig.ps1 b/Includes/MinerAPIs/XmRig.ps1
index c1e8c8d5..e4b47ebc 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.3.3
-Version date: 2024/09/11
+Version: 6.3.4
+Version date: 2024/09/13
#>
Class XmRig : Miner {
diff --git a/Includes/MinerAPIs/lolMiner.ps1 b/Includes/MinerAPIs/lolMiner.ps1
index da40a097..d1b203c4 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.3.3
-Version date: 2024/09/11
+Version: 6.3.4
+Version date: 2024/09/13
#>
Class lolMiner : Miner {
diff --git a/Miners/BzMiner-v21.4.0.ps1 b/Miners/BzMiner-v21.4.0.ps1
index 46d32bef..b95466d8 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.3.3
-Version date: 2024/09/11
+Version: 6.3.4
+Version date: 2024/09/13
#>
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 }
diff --git a/Miners/CcminerAlexis78-v1.5.2.ps1 b/Miners/CcminerAlexis78-v1.5.2.ps1
index d3e82b37..9b09a7fd 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.3.3
-Version date: 2024/09/11
+Version: 6.3.4
+Version date: 2024/09/13
#>
If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.OpenCL.ComputeCapability -ge "5.1" }))) { Return }
diff --git a/Miners/CcminerDyn-v1.0.2.ps1 b/Miners/CcminerDyn-v1.0.2.ps1
index 3eab1c58..4d9a155f 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.3.3
-Version date: 2024/09/11
+Version: 6.3.4
+Version date: 2024/09/13
#>
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
diff --git a/Miners/CcminerKlausT-v8.25.ps1 b/Miners/CcminerKlausT-v8.25.ps1
index ba9e8a33..586c3c94 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.3.3
-Version date: 2024/09/11
+Version: 6.3.4
+Version date: 2024/09/13
#>
If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.OpenCL.ComputeCapability -and $_.OpenCL.ComputeCapability -lt "6.0" -and $_.Architecture -ne "Other" }))) { Return }
diff --git a/Miners/CcminerKlausT-v8.26x2.ps1 b/Miners/CcminerKlausT-v8.26x2.ps1
index 413f2f15..2ab717a7 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.3.3
-Version date: 2024/09/11
+Version: 6.3.4
+Version date: 2024/09/13
#>
If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.OpenCL.ComputeCapability -ge [Version]"6.0" }))) { Return }
diff --git a/Miners/CcminerLyra2z330-v8.21r9.ps1 b/Miners/CcminerLyra2z330-v8.21r9.ps1
index d6005ede..20236e06 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.3.3
-Version date: 2024/09/11
+Version: 6.3.4
+Version date: 2024/09/13
#>
If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.OpenCL.ComputeCapability -ge "5.1" }))) { Return }
diff --git a/Miners/CcminerLyraYesscrypt-v8.21r18v5.ps1 b/Miners/CcminerLyraYesscrypt-v8.21r18v5.ps1
index d2708580..bd5eac5e 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.3.3
-Version date: 2024/09/11
+Version: 6.3.4
+Version date: 2024/09/13
#>
If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.OpenCL.ComputeCapability -ge "5.1" }))) { Return }
diff --git a/Miners/CcminerMemeHash-v2.5.5.9.ps1 b/Miners/CcminerMemeHash-v2.5.5.9.ps1
index 0b037fb5..ca11c971 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.3.3
-Version date: 2024/09/11
+Version: 6.3.4
+Version date: 2024/09/13
#>
If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.OpenCL.ComputeCapability -ge "5.0" }))) { Return }
diff --git a/Miners/CcminerNeoscryptXaya-v0.2.ps1 b/Miners/CcminerNeoscryptXaya-v0.2.ps1
index 7a78f7d5..a587c40b 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.3.3
-Version date: 2024/09/11
+Version: 6.3.4
+Version date: 2024/09/13
#>
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
diff --git a/Miners/CcminerVerusCpu-v3.8.3.ps1 b/Miners/CcminerVerusCpu-v3.8.3.ps1
index 525459d7..812cb944 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.3.3
-Version date: 2024/09/11
+Version: 6.3.4
+Version date: 2024/09/13
#>
If (-not ($AvailableMinerDevices = $Variables.EnabledDevices.Where({ $_.Type -eq "CPU" }))) { Return }
diff --git a/Miners/CcminerVerusGpu-v3.8.3.ps1 b/Miners/CcminerVerusGpu-v3.8.3.ps1
index c9eb179f..2035e94f 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.3.3
-Version date: 2024/09/11
+Version: 6.3.4
+Version date: 2024/09/13
#>
If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.OpenCL.ComputeCapability -ge "7.5" }))) { Return }
diff --git a/Miners/ClaymoreNeoscrypt-v1.2.ps1 b/Miners/ClaymoreNeoscrypt-v1.2.ps1
index 603bae07..c6008473 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.3.3
-Version date: 2024/09/11
+Version: 6.3.4
+Version date: 2024/09/13
#>
If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.Type -eq "AMD" -and $Variables.DriverVersion.CIM.AMD -lt [Version]"26.20.15011.10003" }))) { Return }
diff --git a/Miners/CpuMiner-v1.4.ps1 b/Miners/CpuMiner-v1.4.ps1
index d2708b34..20fe006f 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.3.3
-Version date: 2024/09/11
+Version: 6.3.4
+Version date: 2024/09/13
#>
If (-not ($AvailableMinerDevices = $Variables.EnabledDevices.Where({ $_.Type -eq "CPU" }))) { Return }
diff --git a/Miners/CpuMinerAurum-v3.23.1.ps1 b/Miners/CpuMinerAurum-v3.23.1.ps1
index 4f624ed4..ecc9c2ed 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.3.3
-Version date: 2024/09/11
+Version: 6.3.4
+Version date: 2024/09/13
#>
If (-not ($AvailableMinerDevices = $Variables.EnabledDevices.Where({ $_.Type -eq "CPU" }))) { Return }
diff --git a/Miners/CryptoDredge-v0.16.0.ps1 b/Miners/CryptoDredge-v0.16.0.ps1
index d8ebbd36..4d9f7d40 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.3.3
-Version date: 2024/09/11
+Version: 6.3.4
+Version date: 2024/09/13
#>
If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.OpenCL.ComputeCapability -ge "5.0" }))) { Return }
diff --git a/Miners/CryptoDredge-v0.27.0.ps1 b/Miners/CryptoDredge-v0.27.0.ps1
index f7823fe2..94f727a3 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.3.3
-Version date: 2024/09/11
+Version: 6.3.4
+Version date: 2024/09/13
#>
If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.OpenCL.ComputeCapability -ge "5.0" -and $_.Architecture -ne "Other" }))) { Return }
diff --git a/Miners/EthMiner-v0.19.0.18.ps1 b/Miners/EthMiner-v0.19.0.18.ps1
index a5d63ed9..ff5d3816 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.3.3
-Version date: 2024/09/11
+Version: 6.3.4
+Version date: 2024/09/13
#>
If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.Type -eq "AMD" -or ($_.OpenCL.ComputeCapability -ge "5.0" -and $_.CUDAVersion -ge [Version]"9.1") }))) { Return }
diff --git a/Miners/EvrProgPow-v1p3p0.ps1 b/Miners/EvrProgPow-v1p3p0.ps1
index d33865d4..93022f5e 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.3.3
-Version date: 2024/09/11
+Version: 6.3.4
+Version date: 2024/09/13
#>
If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.OpenCL.ComputeCapability -ge "5.0" }))) { Return }
diff --git a/Miners/FrkHashMiner-v1.3.14.ps1 b/Miners/FrkHashMiner-v1.3.14.ps1
index fa76de1f..0c488381 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.3.3
-Version date: 2024/09/11
+Version: 6.3.4
+Version date: 2024/09/13
#>
If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.OpenCL.ComputeCapability -ge "5.0" -and $_.CUDAVersion -ge [Version]"9.1" }))) { Return }
diff --git a/Miners/GMiner-v2.75.ps1 b/Miners/GMiner-v2.75.ps1
index 41358e2a..1cc9cc9b 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.3.3
-Version date: 2024/09/11
+Version: 6.3.4
+Version date: 2024/09/13
#>
If (-not ($Devices = $Variables.EnabledDevices.Where({ ($_.Type -eq "AMD" -and $_.OpenCL.ClVersion -ge "OpenCL C 1.2") -or $_.OpenCL.ComputeCapability -ge "5.0" }))) { Return }
diff --git a/Miners/GMiner-v3.44.ps1 b/Miners/GMiner-v3.44.ps1
index 8b32ba81..5ac8201a 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.3.3
-Version date: 2024/09/11
+Version: 6.3.4
+Version date: 2024/09/13
#>
If (-not ($Devices = $Variables.EnabledDevices.Where({ ($_.Type -eq "AMD" -and $_.OpenCL.ClVersion -ge "OpenCL C 1.2") -or $_.OpenCL.ComputeCapability -ge "5.0" }))) { Return }
@@ -110,7 +110,7 @@ If ($Algorithms) {
$Arguments += " --user $($Pool0.User)"
$Arguments += " --pass $($Pool0.Pass)"
If ($Pool0.WorkerName -and $Pool0.User -notmatch "\.$($Pool0.WorkerName)$") { $Arguments += " --worker $($Pool0.WorkerName)" }
- If ($_.AutoCoinPers) { $Arguments += $(Get-EquihashCoinPers -Command " --pers " -Currency $Pool.Currency -DefaultCommand $_.AutoCoinPers) }
+ If ($_.AutoCoinPers) { $Arguments += $(Get-EquihashCoinPers -Command " --pers " -Currency $Pool0.Currency -DefaultCommand $_.AutoCoinPers) }
If (($_.Algorithms[1])) {
$Arguments += " --dserver $($Pool1.Host):$($Pool1.PoolPorts | Select-Object -Last 1)"
diff --git a/Miners/HellMiner-v0.59.1.ps1 b/Miners/HellMiner-v0.59.1.ps1
index 57ba9cda..53eb1344 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.3.3
-Version date: 2024/09/11
+Version: 6.3.4
+Version date: 2024/09/13
#>
If (-not ($AvailableMinerDevices = $Variables.EnabledDevices.Where({ $_.Type -eq "CPU" }))) { Return }
diff --git a/Miners/JayddeeCpu-v24.4.ps1 b/Miners/JayddeeCpu-v24.4.ps1
index 17567b98..2dcdac09 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.3.3
-Version date: 2024/09/11
+Version: 6.3.4
+Version date: 2024/09/13
#>
If (-not ($AvailableMinerDevices = $Variables.EnabledDevices.Where({ $_.Type -eq "CPU" }))) { Return }
diff --git a/Miners/KawpowMiner-v1.2.4cl.ps1 b/Miners/KawpowMiner-v1.2.4cl.ps1
index a17c2856..b3db4db0 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.3.3
-Version date: 2024/09/11
+Version: 6.3.4
+Version date: 2024/09/13
#>
If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.Type -eq "AMD" }))) { Return }
diff --git a/Miners/KawpowMiner-v1.2.4cuda.ps1 b/Miners/KawpowMiner-v1.2.4cuda.ps1
index e7d25cad..f54489ee 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.3.3
-Version date: 2024/09/11
+Version: 6.3.4
+Version date: 2024/09/13
#>
If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.OpenCL.ComputeCapability -ge "5.0" }))) { Return }
diff --git a/Miners/Kudaraidee-v1.2.0a.ps1 b/Miners/Kudaraidee-v1.2.0a.ps1
index 8960092f..d428634d 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.3.3
-Version date: 2024/09/11
+Version: 6.3.4
+Version date: 2024/09/13
#>
If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.Type -eq "AMD" -or ($_.Type -eq "NVIDIA" -and $_.CUDAVersion -ge [Version]"10.2") }))) { Return }
diff --git a/Miners/MeowPowMiner-v2.0.0cl.ps1 b/Miners/MeowPowMiner-v2.0.0cl.ps1
index 02c6956d..9d24f232 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.3.3
-Version date: 2024/09/11
+Version: 6.3.4
+Version date: 2024/09/13
#>
If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.Type -eq "AMD" }))) { Return }
diff --git a/Miners/MeowPowMiner-v2.0.0cuda.ps1 b/Miners/MeowPowMiner-v2.0.0cuda.ps1
index 3e4fcd80..2ae5f8a7 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.3.3
-Version date: 2024/09/11
+Version: 6.3.4
+Version date: 2024/09/13
#>
If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.OpenCL.ComputeCapability -ge "5.0" }))) { Return }
diff --git a/Miners/MiniZ-v2.4d.ps1 b/Miners/MiniZ-v2.4d.ps1
index 535fa65c..27eb249f 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.3.3
-Version date: 2024/09/11
+Version: 6.3.4
+Version date: 2024/09/13
#>
If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.Type -eq "AMD" -or $_.OpenCL.ComputeCapability -ge "5.0" }))) { Return }
@@ -30,7 +30,7 @@ $DeviceEnumerator = "Type_Vendor_Slot"
$Algorithms = @(
@{ Algorithm = "Equihash1254"; Type = "AMD"; Fee = @(0.02); MinMemGiB = 3.0; MinerSet = 1; WarmupTimes = @(30, 30); ExcludeGPUarchitectures = @(); ExcludePools = @(); AutoCoinPers = ""; Arguments = " --amd --par=125,4 --smart-pers" }
- @{ Algorithm = "Equihash1445"; Type = "AMD"; Fee = @(0.02); MinMemGiB = 2.0; MinerSet = 0; WarmupTimes = @(30, 30); ExcludeGPUarchitectures = @("GCN1"); ExcludePools = @(); AutoCoinPers = " --par=144,5"; Arguments = " --amd" } # FPGA
+ @{ Algorithm = "Equihash1445"; Type = "AMD"; Fee = @(0.02); MinMemGiB = 2.0; MinerSet = 0; WarmupTimes = @(30, 30); ExcludeGPUarchitectures = @("GCN1", "RDNA2"); ExcludePools = @(); AutoCoinPers = " --par=144,5"; Arguments = " --amd" } # FPGA
@{ Algorithm = "Equihash1505"; Type = "AMD"; Fee = @(0.02); MinMemGiB = 4.0; MinerSet = 0; WarmupTimes = @(30, 30); ExcludeGPUarchitectures = @("RDNA1"); ExcludePools = @(); AutoCoinPers = ""; Arguments = " --amd --par=150,5 --smart-pers" }
@{ Algorithm = "Equihash1927"; Type = "AMD"; Fee = @(0.02); MinMemGiB = 2.3; MinerSet = 1; WarmupTimes = @(30, 30); ExcludeGPUarchitectures = @(); ExcludePools = @(); AutoCoinPers = " --par=192,7"; Arguments = " --amd" } #FPGA
@{ Algorithm = "Equihash2109"; Type = "AMD"; Fee = @(0.02); MinMemGiB = 2.0; MinerSet = 2; WarmupTimes = @(30, 30); ExcludeGPUarchitectures = @("RDNA1"); ExcludePools = @(); AutoCoinPers = ""; Arguments = " --amd --par=210,9 --smart-pers" }
diff --git a/Miners/NBMiner-v42.3.ps1 b/Miners/NBMiner-v42.3.ps1
index dd66ea76..60c62815 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.3.3
-Version date: 2024/09/11
+Version: 6.3.4
+Version date: 2024/09/13
#>
If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.Type -eq "AMD" -or ($_.OpenCL.ComputeCapability -ge "6.0" -and $_.CUDAVersion -ge [Version]"10.0") }))) { Return }
diff --git a/Miners/NSFMiner-v1.3.14.ps1 b/Miners/NSFMiner-v1.3.14.ps1
index 7e2d1014..bb4514fd 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.3.3
-Version date: 2024/09/11
+Version: 6.3.4
+Version date: 2024/09/13
#>
If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.Type -eq "AMD" -or ($_.OpenCL.ComputeCapability -ge "5.0" -and $_.CUDAVersion -ge [Version]"9.1") }))) { Return }
diff --git a/Miners/NanoMiner-v3.9.2.ps1 b/Miners/NanoMiner-v3.9.2.ps1
index 96829718..b22f3cab 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.3.3
-Version date: 2024/09/11
+Version: 6.3.4
+Version date: 2024/09/13
#>
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 }
diff --git a/Miners/Ninjarig-1.0.3.ps1 b/Miners/Ninjarig-1.0.3.ps1
index b04d49e1..a0c42bef 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.3.3
-Version date: 2024/09/11
+Version: 6.3.4
+Version date: 2024/09/13
#>
If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.OpenCL.ComputeCapability -ge "5.0" }))) { Return }
diff --git a/Miners/NosuchCpu-v3.8.8.1.ps1 b/Miners/NosuchCpu-v3.8.8.1.ps1
index cf7b0509..117b4857 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.3.3
-Version date: 2024/09/11
+Version: 6.3.4
+Version date: 2024/09/13
#>
If (-not ($AvailableMinerDevices = $Variables.EnabledDevices.Where({ $_.Type -eq "CPU" }))) { Return }
diff --git a/Miners/OneZeroMiner-v1.3.7.ps1 b/Miners/OneZeroMiner-v1.3.7.ps1
index e04c8fd5..2260f617 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.3.3
-Version date: 2024/09/11
+Version: 6.3.4
+Version date: 2024/09/13
#>
If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.Type -eq "NVIDIA" -and $_.OpenCL.DriverVersion -ge [Version]"450.80.02" }))) { Return }
diff --git a/Miners/PhoenixMiner-v6.2c.ps1 b/Miners/PhoenixMiner-v6.2c.ps1
index 1d37dd7d..5a52cf2f 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.3.3
-Version date: 2024/09/11
+Version: 6.3.4
+Version date: 2024/09/13
#>
If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.Type -eq "AMD" -or $_.OpenCL.ComputeCapability -ge "5.0" }))) { Return }
@@ -55,23 +55,25 @@ If ($Algorithms) {
"Blake2s" = @(10, 20, 30, 40)
}
- # Build command sets for intensities
- $Algorithms = $Algorithms.ForEach(
- {
- $_.PsObject.Copy()
- If ($_.Algorithms[1]) {
- $Intensity = $_.Intensity
- $WarmupTimes = $_.WarmupTimes.PsObject.Copy()
- If ($_.Type -eq "NVIDIA" -and $Intensity) { $Intensity *= 5 } # Nvidia allows much higher intensity
- ForEach ($Intensity in $IntensityValues.($_.Algorithms[1]) | Select-Object) {
- $_ | Add-Member Intensity $Intensity -Force
- # Allow extra time for auto tuning
- $_.WarmupTimes[1] = $WarmupTimes[1] + 45
- $_.PsObject.Copy()
+ If (-not $Config.DryRun) {
+ # Build command sets for intensities
+ $Algorithms = $Algorithms.ForEach(
+ {
+ $_.PsObject.Copy()
+ If ($_.Algorithms[1]) {
+ $Intensity = $_.Intensity
+ $WarmupTimes = $_.WarmupTimes.PsObject.Copy()
+ If ($_.Type -eq "NVIDIA" -and $Intensity) { $Intensity *= 5 } # Nvidia allows much higher intensity
+ ForEach ($Intensity in $IntensityValues.($_.Algorithms[1]) | Select-Object) {
+ $_ | Add-Member Intensity $Intensity -Force
+ # Allow extra time for auto tuning
+ $_.WarmupTimes[1] = $WarmupTimes[1] + 45
+ $_.PsObject.Copy()
+ }
}
}
- }
- )
+ )
+ }
($Devices | Select-Object Type, Model -Unique).ForEach(
{
diff --git a/Miners/Radiator-v1.0.0.ps1 b/Miners/Radiator-v1.0.0.ps1
index 4e4dbaa6..562a0056 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.3.3
-Version date: 2024/09/11
+Version: 6.3.4
+Version date: 2024/09/13
#>
If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.OpenCL.ComputeCapability -ge "5.0" }))) { Return }
diff --git a/Miners/Raptor3umCpu-v2.0.ps1 b/Miners/Raptor3umCpu-v2.0.ps1
index 9b87d746..7d8d92be 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.3.3
-Version date: 2024/09/11
+Version: 6.3.4
+Version date: 2024/09/13
#>
If (-not ($AvailableMinerDevices = $Variables.EnabledDevices.Where({ $_.Type -eq "CPU" }))) { Return }
diff --git a/Miners/Rigel-v1.19.0.ps1 b/Miners/Rigel-v1.19.0.ps1
index 336a2717..cbd1ad4d 100644
--- a/Miners/Rigel-v1.19.0.ps1
+++ b/Miners/Rigel-v1.19.0.ps1
@@ -17,8 +17,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
-Version: 6.3.3
-Version date: 2024/09/11
+Version: 6.3.4
+Version date: 2024/09/13
#>
# Return
diff --git a/Miners/RplantCpu-v5.0.41.ps1 b/Miners/RplantCpu-v5.0.41.ps1
index 0c87e32e..ede70aec 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.3.3
-Version date: 2024/09/11
+Version: 6.3.4
+Version date: 2024/09/13
#>
If (-not ($AvailableMinerDevices = $Variables.EnabledDevices.Where({ $_.Type -eq "CPU" }))) { Return }
diff --git a/Miners/RrkzCpu-v4.2.ps1 b/Miners/RrkzCpu-v4.2.ps1
index c97a493b..587a6bab 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.3.3
-Version date: 2024/09/11
+Version: 6.3.4
+Version date: 2024/09/13
#>
If (-not ($AvailableMinerDevices = $Variables.EnabledDevices.Where({ $_.Type -eq "CPU" }))) { Return }
diff --git a/Miners/SCCminer-v1.1.0.ps1 b/Miners/SCCminer-v1.1.0.ps1
index b660c218..65dfaffd 100644
--- a/Miners/SCCminer-v1.1.0.ps1
+++ b/Miners/SCCminer-v1.1.0.ps1
@@ -17,8 +17,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
-Version: 6.3.3
-Version date: 2024/09/11
+Version: 6.3.4
+Version date: 2024/09/13
#>
Return # Bad shares
diff --git a/Miners/SRBMinerMulti-v0.9.4.ps1 b/Miners/SRBMinerMulti-v0.9.4.ps1
index b04722bf..a847e77c 100644
--- a/Miners/SRBMinerMulti-v0.9.4.ps1
+++ b/Miners/SRBMinerMulti-v0.9.4.ps1
@@ -17,8 +17,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
-Version: 6.3.3
-Version date: 2024/09/11
+Version: 6.3.4
+Version date: 2024/09/13
#>
# Support for Pitcairn, Tahiti, Hawaii, Fiji and Tonga was removed in later versions
diff --git a/Miners/SRBMinerMulti-v2.6.4.ps1 b/Miners/SRBMinerMulti-v2.6.4.ps1
index e71964c6..2b371ad8 100644
--- a/Miners/SRBMinerMulti-v2.6.4.ps1
+++ b/Miners/SRBMinerMulti-v2.6.4.ps1
@@ -17,8 +17,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
-Version: 6.3.3
-Version date: 2024/09/11
+Version: 6.3.4
+Version date: 2024/09/13
#>
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 }
@@ -32,86 +32,86 @@ $DeviceEnumerator = "Type_Vendor_Slot"
# Algorithm parameter values are case sensitive!
$Algorithms = @(
- @{ Algorithms = @("0x10"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(45, 45); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm 0x10") }
- @{ Algorithms = @("Argon2d16000"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(45, 0); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm argon2d_16000") }
- @{ Algorithms = @("Argon2d500"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 2; WarmupTimes = @(45, 45); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm argon2d_dynamic") }
- @{ Algorithms = @("Argon2Chukwa"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 2; WarmupTimes = @(45, 45); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm argon2id_chukwa") }
- @{ Algorithms = @("Argon2Chukwa2"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 2; WarmupTimes = @(45, 45); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm argon2id_chukwa2") }
- @{ Algorithms = @("Aurum"); Type = "AMD"; Fee = @(0.02); MinMemGiB = 2; MinerSet = 0; WarmupTimes = @(45, 20); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm aurum") }
- @{ Algorithms = @("Autolykos2"); Type = "AMD"; Fee = @(0.01); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm autolykos2") }
- @{ Algorithms = @("Autolykos2", "Blake3"); Type = "AMD"; Fee = @(0.01, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 30); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm autolykos2", " --algorithm blake3_alephium") }
- @{ Algorithms = @("Autolykos2", "Decred"); Type = "AMD"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 30); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm autolykos2", " --algorithm blake3_decred") }
- @{ Algorithms = @("Autolykos2", "HeavyHash"); 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 autolykos2", " --algorithm heavyhash") }
- @{ Algorithms = @("Autolykos2", "HeavyHashKarlsenV2"); Type = "AMD"; Fee = @(0.01, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 30); ExcludeGPUarchitectures = "^Other$|^GCN\d$"; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm autolykos2", " --algorithm karlsenhashv2") }
- @{ Algorithms = @("Autolykos2", "HeavyHashPyrin"); Type = "AMD"; Fee = @(0.01, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 30); ExcludeGPUarchitectures = "^Other$|^GCN\d$"; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm autolykos2", " --algorithm pyrinhash") }
- @{ Algorithms = @("Autolykos2", "HeavyHashPyrinV2"); Type = "AMD"; Fee = @(0.01, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 30); ExcludeGPUarchitectures = "^Other$|^GCN\d$"; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm autolykos2", " --algorithm pyrinhashv2") }
- @{ Algorithms = @("Autolykos2", "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 autolykos2", " --algorithm sha256dt") }
- @{ Algorithms = @("Autolykos2", "SHA512256d"); 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 autolykos2", " --algorithm sha512_256d_radiant") }
- @{ Algorithms = @("Blake3"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(45, 30); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm blake3_alephium") }
- @{ Algorithms = @("CryptonightGpu"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(60, 30); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm cryptonight_gpu") }
- @{ Algorithms = @("CryptonightHeavyXhv"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(30, 30); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm cryptonight_xhv") }
- @{ Algorithms = @("CryptonightTurtle"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 2; WarmupTimes = @(30, 30); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm cryptonight_turtle") } # TeamRedMiner-v0.10.21 is fastest
- @{ Algorithms = @("CryptonightUpx"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(60, 30); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm cryptonight_upx") }
- @{ Algorithms = @("CurveHash"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 2; MinerSet = 1; WarmupTimes = @(60, 30); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm curvehash") }
- @{ Algorithms = @("Decred"); Type = "AMD"; Fee = @(0.01); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(30, 30); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm blake3d_decred") }
- @{ Algorithms = @("EtcHash"); Type = "AMD"; Fee = @(0.0065); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm etchash") } # PhoenixMiner-v6.2c may be faster, but I see lower speed at the pool
- @{ Algorithms = @("EtcHash", "Blake3"); Type = "AMD"; Fee = @(0.0065, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 30); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm etchash", " --algorithm blake3_alephium") }
- @{ Algorithms = @("EtcHash", "Decred"); Type = "AMD"; Fee = @(0.0065, 0.01); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 30); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm etchash", " --algorithm blake3_decred") }
- @{ Algorithms = @("EtcHash", "HeavyHash"); Type = "AMD"; Fee = @(0.0065, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 60); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm etchash", " --algorithm heavyhash") }
- @{ Algorithms = @("EtcHash", "SHA256dt"); Type = "AMD"; Fee = @(0.0065, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 60); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm etchash", " --algorithm sha256dt") }
- @{ Algorithms = @("EtcHash", "SHA512256d"); Type = "AMD"; Fee = @(0.0065, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 60); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm etchash", " --algorithm sha512_256d_radiant") }
- @{ Algorithms = @("Ethash"); Type = "AMD"; Fee = @(0.0065); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm ethash") } # PhoenixMiner-v6.2c may be faster, but I see lower speed at the pool
- @{ Algorithms = @("Ethash", "Blake3"); Type = "AMD"; Fee = @(0.0065, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 30); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm ethash", " --algorithm blake3_alephium") }
- @{ Algorithms = @("Ethash", "Decred"); Type = "AMD"; Fee = @(0.0065, 0.01); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 30); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm ethash", " --algorithm blake3_decred") }
- @{ Algorithms = @("Ethash", "Heavyhash"); Type = "AMD"; Fee = @(0.0065, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 60); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm ethash", " --algorithm heavyhash") }
- @{ Algorithms = @("Ethash", "SHA256dt"); Type = "AMD"; Fee = @(0.0065, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 60); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm ethash", " --algorithm sha256dt") }
- @{ Algorithms = @("Ethash", "SHA512256d"); Type = "AMD"; Fee = @(0.0065, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 60); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm ethash", " --algorithm sha512_256d_radiant") }
- @{ Algorithms = @("EthashB3"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm ethashb3") }
- @{ 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", "HeavyHashKarlsenV2"); 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 karlsenhashv2") }
- @{ 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") }
- @{ Algorithms = @("FishHash"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 30); ExcludeGPUarchitectures = " "; ExcludePools = @(@("NiceHash"), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm fishhash") }
- @{ Algorithms = @("FishHash", "Blake3"); Type = "AMD"; Fee = @(0.0085, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 30); ExcludeGPUarchitectures = "^Other$|^GCN\d$"; ExcludePools = @(@("NiceHash"), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm fishhash", " --algorithm blake3_alephium") }
- @{ Algorithms = @("FishHash", "Decred"); Type = "AMD"; Fee = @(0.0085, 0.01); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 30); ExcludeGPUarchitectures = "^Other$|^GCN\d$"; ExcludePools = @(@("NiceHash"), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm fishhash", " --algorithm blake3_decred") }
- @{ Algorithms = @("FishHash", "HeavyHashKarlsen"); Type = "AMD"; Fee = @(0.0085, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 60); ExcludeGPUarchitectures = "^Other$|^GCN\d$"; ExcludePools = @(@("NiceHash"), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm fishhash", " --algorithm karlsenhash") }
- @{ Algorithms = @("FishHash", "HeavyHashKarlsenV2"); Type = "AMD"; Fee = @(0.0085, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 60); ExcludeGPUarchitectures = "^Other$|^GCN\d$"; ExcludePools = @(@("NiceHash"), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm fishhash", " --algorithm karlsenhashv2") }
- @{ Algorithms = @("FishHash", "HeavyHashPyrin"); Type = "AMD"; Fee = @(0.0085, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 60); ExcludeGPUarchitectures = "^Other$|^GCN\d$"; ExcludePools = @(@("NiceHash"), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm fishhash", " --algorithm pyrinhash") }
- @{ Algorithms = @("FishHash", "HeavyHashPyrinV2"); Type = "AMD"; Fee = @(0.0085, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 60); ExcludeGPUarchitectures = "^Other$|^GCN\d$"; ExcludePools = @(@("NiceHash"), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm fishhash", " --algorithm pyrinhashv2") }
- @{ Algorithms = @("FishHash", "SHA512256d"); Type = "AMD"; Fee = @(0.0085, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 60); ExcludeGPUarchitectures = "^Other$|^GCN\d$"; ExcludePools = @(@("NiceHash"), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm fishhash", " --algorithm sha512_256d_radiant") }
- @{ Algorithms = @("HeavyHash"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(45, 30); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm heavyhash") } # FPGA
- @{ Algorithms = @("HeavyHashKarlsen"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(30, 0); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm karlsenhash") }
- @{ Algorithms = @("HeavyHashKarlsenV2"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(30, 0); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm karlsenhashv2") }
- @{ Algorithms = @("HeavyHashKarlsenV2", "HeavyHashPyrinV2"); Type = "AMD"; Fee = @(0.01, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 30); ExcludeGPUarchitectures = "^Other$|^GCN\d$"; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm karlsenhashv2", " --algorithm pyrinhashv2") }
- @{ Algorithms = @("HeavyHashPyrin"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(45, 30); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm pyrinhash") }
- @{ Algorithms = @("HeavyHashPyrinV2"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(45, 30); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm pyrinhashv2") }
- @{ Algorithms = @("KawPow"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1.24; MinerSet = 1; WarmupTimes = @(45, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(@("ProHashing"), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm kawpow") }
- @{ Algorithms = @("Lyra2v2Webchain"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 2; WarmupTimes = @(30, 30); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm lyra2v2_webchain") }
- @{ Algorithms = @("MemeHash"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 2; WarmupTimes = @(60, 30); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm memehash") }
- @{ Algorithms = @("MeowPow"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1.24; MinerSet = 1; WarmupTimes = @(45, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm meowpow") }
- @{ Algorithms = @("ProgPowEpic"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 30); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm progpow_epic") }
- @{ Algorithms = @("ProgPowSero"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 30); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm progpow_sero") }
- @{ Algorithms = @("ProgPowTelestai"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 30); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm progpow_telestai") }
- @{ Algorithms = @("ProgPowVeil"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 30); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm progpow_veil") }
- @{ 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") }
- @{ 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") }
- @{ Algorithms = @("UbqHash"); Type = "AMD"; Fee = @(0.0065); MinMemGiB = 1.24; MinerSet = 1; WarmupTimes = @(45, 0); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm ubqhash") }
- @{ Algorithms = @("VerusHash"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(30, 0); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm verushash") }
- @{ Algorithms = @("VertHash"); Type = "AMD"; Fee = @(0.01); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(30, 30); ExcludeGPUarchitectures = "^Other$"; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm verthash --verthash-dat-path ..\.$($Variables.VerthashDatPath)") }
- @{ Algorithms = @("XelisHash"); Type = "AMD"; Fee = @(0.02); MinMemGiB = 1; MinerSet = 2; WarmupTimes = @(0, 20); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm xelishash") }
- @{ Algorithms = @("Yescrypt"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(90, 30); ExcludeGPUarchitectures = " "; ExcludePools = @(@("MiningDutch"), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm yescrypt") }
- @{ Algorithms = @("YescryptR8"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 2; WarmupTimes = @(90, 30); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm yescryptr8") }
- @{ Algorithms = @("YescryptR16"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(90, 30); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm yescryptr16") }
- @{ Algorithms = @("YescryptR32"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(90, 0); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm yescryptr32") }
+ @{ Algorithms = @("0x10"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(45, 45); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm 0x10") }
+ @{ Algorithms = @("Argon2d16000"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(45, 0); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm argon2d_16000") }
+ @{ Algorithms = @("Argon2d500"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 2; WarmupTimes = @(45, 45); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm argon2d_dynamic") }
+ @{ Algorithms = @("Argon2Chukwa"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 2; WarmupTimes = @(45, 45); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm argon2id_chukwa") }
+ @{ Algorithms = @("Argon2Chukwa2"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 2; WarmupTimes = @(45, 45); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm argon2id_chukwa2") }
+ @{ Algorithms = @("Aurum"); Type = "AMD"; Fee = @(0.02); MinMemGiB = 2; MinerSet = 0; WarmupTimes = @(45, 20); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm aurum") }
+ @{ Algorithms = @("Autolykos2"); Type = "AMD"; Fee = @(0.01); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm autolykos2") }
+ @{ Algorithms = @("Autolykos2", "Blake3"); Type = "AMD"; Fee = @(0.01, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 30); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm autolykos2", " --algorithm blake3_alephium") }
+ @{ Algorithms = @("Autolykos2", "Decred"); Type = "AMD"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 30); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm autolykos2", " --algorithm blake3_decred") }
+ @{ Algorithms = @("Autolykos2", "HeavyHash"); 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 autolykos2", " --algorithm heavyhash") }
+ @{ Algorithms = @("Autolykos2", "HeavyHashKarlsenV2"); Type = "AMD"; Fee = @(0.01, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 30); ExcludeGPUarchitectures = "^Other$|^GCN\d*$"; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm autolykos2", " --algorithm karlsenhashv2") }
+ @{ Algorithms = @("Autolykos2", "HeavyHashPyrin"); Type = "AMD"; Fee = @(0.01, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 30); ExcludeGPUarchitectures = "^Other$|^GCN\d*$"; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm autolykos2", " --algorithm pyrinhash") }
+ @{ Algorithms = @("Autolykos2", "HeavyHashPyrinV2"); Type = "AMD"; Fee = @(0.01, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 30); ExcludeGPUarchitectures = "^Other$|^GCN\d*$"; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm autolykos2", " --algorithm pyrinhashv2") }
+ @{ Algorithms = @("Autolykos2", "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 autolykos2", " --algorithm sha256dt") }
+ @{ Algorithms = @("Autolykos2", "SHA512256d"); 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 autolykos2", " --algorithm sha512_256d_radiant") }
+ @{ Algorithms = @("Blake3"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(45, 30); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm blake3_alephium") }
+ @{ Algorithms = @("CryptonightGpu"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(60, 30); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm cryptonight_gpu") }
+ @{ Algorithms = @("CryptonightHeavyXhv"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(30, 30); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm cryptonight_xhv") }
+ @{ Algorithms = @("CryptonightTurtle"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 2; WarmupTimes = @(30, 30); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm cryptonight_turtle") } # TeamRedMiner-v0.10.21 is fastest
+ @{ Algorithms = @("CryptonightUpx"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(60, 30); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm cryptonight_upx") }
+ @{ Algorithms = @("CurveHash"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 2; MinerSet = 1; WarmupTimes = @(60, 30); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm curvehash") }
+ @{ Algorithms = @("Decred"); Type = "AMD"; Fee = @(0.01); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(30, 30); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm blake3d_decred") }
+ @{ Algorithms = @("EtcHash"); Type = "AMD"; Fee = @(0.0065); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm etchash") } # PhoenixMiner-v6.2c may be faster, but I see lower speed at the pool
+ @{ Algorithms = @("EtcHash", "Blake3"); Type = "AMD"; Fee = @(0.0065, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 30); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm etchash", " --algorithm blake3_alephium") }
+ @{ Algorithms = @("EtcHash", "Decred"); Type = "AMD"; Fee = @(0.0065, 0.01); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 30); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm etchash", " --algorithm blake3_decred") }
+ @{ Algorithms = @("EtcHash", "HeavyHash"); Type = "AMD"; Fee = @(0.0065, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 60); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm etchash", " --algorithm heavyhash") }
+ @{ Algorithms = @("EtcHash", "SHA256dt"); Type = "AMD"; Fee = @(0.0065, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 60); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm etchash", " --algorithm sha256dt") }
+ @{ Algorithms = @("EtcHash", "SHA512256d"); Type = "AMD"; Fee = @(0.0065, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 60); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm etchash", " --algorithm sha512_256d_radiant") }
+ @{ Algorithms = @("Ethash"); Type = "AMD"; Fee = @(0.0065); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm ethash") } # PhoenixMiner-v6.2c may be faster, but I see lower speed at the pool
+ @{ Algorithms = @("Ethash", "Blake3"); Type = "AMD"; Fee = @(0.0065, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 30); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm ethash", " --algorithm blake3_alephium") }
+ @{ Algorithms = @("Ethash", "Decred"); Type = "AMD"; Fee = @(0.0065, 0.01); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 30); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm ethash", " --algorithm blake3_decred") }
+ @{ Algorithms = @("Ethash", "Heavyhash"); Type = "AMD"; Fee = @(0.0065, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 60); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm ethash", " --algorithm heavyhash") }
+ @{ Algorithms = @("Ethash", "SHA256dt"); Type = "AMD"; Fee = @(0.0065, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 60); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm ethash", " --algorithm sha256dt") }
+ @{ Algorithms = @("Ethash", "SHA512256d"); Type = "AMD"; Fee = @(0.0065, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 60); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm ethash", " --algorithm sha512_256d_radiant") }
+ @{ Algorithms = @("EthashB3"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm ethashb3") }
+ @{ 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", "HeavyHashKarlsenV2"); 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 karlsenhashv2") }
+ @{ 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") }
+ @{ Algorithms = @("FishHash"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 30); ExcludeGPUarchitectures = " "; ExcludePools = @(@("NiceHash"), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm fishhash") }
+ @{ Algorithms = @("FishHash", "Blake3"); Type = "AMD"; Fee = @(0.0085, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 30); ExcludeGPUarchitectures = "^Other$|^GCN\d*$"; ExcludePools = @(@("NiceHash"), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm fishhash", " --algorithm blake3_alephium") }
+ @{ Algorithms = @("FishHash", "Decred"); Type = "AMD"; Fee = @(0.0085, 0.01); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 30); ExcludeGPUarchitectures = "^Other$|^GCN\d*$"; ExcludePools = @(@("NiceHash"), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm fishhash", " --algorithm blake3_decred") }
+ @{ Algorithms = @("FishHash", "HeavyHashKarlsen"); Type = "AMD"; Fee = @(0.0085, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 60); ExcludeGPUarchitectures = "^Other$|^GCN\d$*"; ExcludePools = @(@("NiceHash"), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm fishhash", " --algorithm karlsenhash") }
+ @{ Algorithms = @("FishHash", "HeavyHashKarlsenV2"); Type = "AMD"; Fee = @(0.0085, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 60); ExcludeGPUarchitectures = "^Other$|^GCN\d$*"; ExcludePools = @(@("NiceHash"), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm fishhash", " --algorithm karlsenhashv2") }
+ @{ Algorithms = @("FishHash", "HeavyHashPyrin"); Type = "AMD"; Fee = @(0.0085, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 60); ExcludeGPUarchitectures = "^Other$|^GCN\d$*"; ExcludePools = @(@("NiceHash"), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm fishhash", " --algorithm pyrinhash") }
+ @{ Algorithms = @("FishHash", "HeavyHashPyrinV2"); Type = "AMD"; Fee = @(0.0085, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 60); ExcludeGPUarchitectures = "^Other$|^GCN\d$*"; ExcludePools = @(@("NiceHash"), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm fishhash", " --algorithm pyrinhashv2") }
+ @{ Algorithms = @("FishHash", "SHA512256d"); Type = "AMD"; Fee = @(0.0085, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 60); ExcludeGPUarchitectures = "^Other$|^GCN\d$*"; ExcludePools = @(@("NiceHash"), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm fishhash", " --algorithm sha512_256d_radiant") }
+ @{ Algorithms = @("HeavyHash"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(45, 30); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm heavyhash") } # FPGA
+ @{ Algorithms = @("HeavyHashKarlsen"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(30, 0); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm karlsenhash") }
+ @{ Algorithms = @("HeavyHashKarlsenV2"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(30, 0); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm karlsenhashv2") }
+ @{ Algorithms = @("HeavyHashKarlsenV2", "HeavyHashPyrinV2"); Type = "AMD"; Fee = @(0.01, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 30); ExcludeGPUarchitectures = "^Other$|^GCN\d$*"; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm karlsenhashv2", " --algorithm pyrinhashv2") }
+ @{ Algorithms = @("HeavyHashPyrin"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(45, 30); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm pyrinhash") }
+ @{ Algorithms = @("HeavyHashPyrinV2"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(45, 30); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm pyrinhashv2") }
+ @{ Algorithms = @("KawPow"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1.24; MinerSet = 1; WarmupTimes = @(45, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(@("ProHashing"), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm kawpow") }
+ @{ Algorithms = @("Lyra2v2Webchain"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 2; WarmupTimes = @(30, 30); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm lyra2v2_webchain") }
+ @{ Algorithms = @("MemeHash"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 2; WarmupTimes = @(60, 30); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm memehash") }
+ @{ Algorithms = @("MeowPow"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1.24; MinerSet = 1; WarmupTimes = @(45, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm meowpow") }
+ @{ Algorithms = @("ProgPowEpic"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 30); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm progpow_epic") }
+ @{ Algorithms = @("ProgPowSero"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 30); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm progpow_sero") }
+ @{ Algorithms = @("ProgPowTelestai"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 30); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm progpow_telestai") }
+ @{ Algorithms = @("ProgPowVeil"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 30); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm progpow_veil") }
+ @{ 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") }
+ @{ 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") }
+ @{ Algorithms = @("UbqHash"); Type = "AMD"; Fee = @(0.0065); MinMemGiB = 1.24; MinerSet = 1; WarmupTimes = @(45, 0); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm ubqhash") }
+ @{ Algorithms = @("VerusHash"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(30, 0); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm verushash") }
+ @{ Algorithms = @("VertHash"); Type = "AMD"; Fee = @(0.01); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(30, 30); ExcludeGPUarchitectures = "^Other$"; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm verthash --verthash-dat-path ..\.$($Variables.VerthashDatPath)") }
+ @{ Algorithms = @("XelisHash"); Type = "AMD"; Fee = @(0.02); MinMemGiB = 1; MinerSet = 2; WarmupTimes = @(0, 20); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm xelishash") }
+ @{ Algorithms = @("Yescrypt"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(90, 30); ExcludeGPUarchitectures = " "; ExcludePools = @(@("MiningDutch"), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm yescrypt") }
+ @{ Algorithms = @("YescryptR8"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 2; WarmupTimes = @(90, 30); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm yescryptr8") }
+ @{ Algorithms = @("YescryptR16"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(90, 30); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm yescryptr16") }
+ @{ Algorithms = @("YescryptR32"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(90, 0); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm yescryptr32") }
@{ Algorithms = @("Argon2d16000"); Type = "CPU"; Fee = @(0.0085); MinerSet = 2; WarmupTimes = @(60, 15); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm argon2d_16000") }
@{ Algorithms = @("Argon2d500"); Type = "CPU"; Fee = @(0.0085); MinerSet = 2; WarmupTimes = @(60, 15); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm argon2d_dynamic") }
@@ -159,7 +159,7 @@ $Algorithms = @(
@{ Algorithms = @("Yescrypt"); Type = "CPU"; Fee = @(0.0085); MinerSet = 2; WarmupTimes = @(90, 20); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm yescrypt") }
@{ Algorithms = @("XelisHash"); Type = "CPU"; Fee = @(0.02); MinerSet = 2; WarmupTimes = @(90, 20); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm xelishash") }
@{ Algorithms = @("XelisHashV2"); Type = "CPU"; Fee = @(0.015); MinerSet = 2; WarmupTimes = @(90, 20); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm xelishashv2") }
- @{ Algorithms = @("XelisHashV2Pepew"); Type = "CPU"; Fee = @(0.015); MinerSet = 2; WarmupTimes = @(90, 20); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm xelishashv2_pepew") }
+ @{ Algorithms = @("XelisV2PepePow"); Type = "CPU"; Fee = @(0.015); MinerSet = 2; WarmupTimes = @(90, 20); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm xelishashv2_pepew") }
@{ Algorithms = @("Autolykos2"); Type = "INTEL"; Fee = @(0.01); MinMemGiB = 1.24; MinerSet = 1; WarmupTimes = @(45, 30); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-nvidia --algorithm autolykos2") }
@{ Algorithms = @("Autolykos2", "Blake3"); Type = "INTEL"; Fee = @(0.01, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 60); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-nvidia --algorithm autolykos2", " --algorithm blake3_alephium") }
@@ -285,23 +285,25 @@ $Algorithms = $Algorithms.Where({ $MinerPools[0][$_.Algorithms[0]] -and $_.Algor
If ($Algorithms) {
- # Allowed max loss for 1. algorithm
- # $GpuDualMaxLosses = @($null, 2, 4, 7, 10, 15, 21, 30)
- # $GpuDualMaxLosses = @($null, 5)
- # $GpuDualMaxLosses = @($null)
+ If (-not $Config.DryRun) {
+ # Allowed max loss for 1. algorithm
+ $GpuDualMaxLosses = @($null, 2, 4, 7, 10, 15, 21, 30)
+ $GpuDualMaxLosses = @($null, 5)
+ $GpuDualMaxLosses = @($null)
- # Build command sets for max loss
- # $Algorithms = $Algorithms.ForEach(
- # {
- # $_.PsObject.Copy()
- # If ($_.Algorithms[1]) {
- # ForEach ($GpuDualMaxLoss in $GpuDualMaxLosses) {
- # $_ | Add-Member GpuDualMaxLoss $GpuDualMaxLoss -Force
- # $_.PsObject.Copy()
- # }
- # }
- # }
- # )
+ # Build command sets for max loss
+ $Algorithms = $Algorithms.ForEach(
+ {
+ $_.PsObject.Copy()
+ If ($_.Algorithms[1]) {
+ ForEach ($GpuDualMaxLoss in $GpuDualMaxLosses) {
+ $_ | Add-Member GpuDualMaxLoss $GpuDualMaxLoss -Force
+ $_.PsObject.Copy()
+ }
+ }
+ }
+ )
+ }
($Devices | Select-Object Type, Model -Unique).ForEach(
{
diff --git a/Miners/SgMinerFancyIX-v0.9.4.ps1 b/Miners/SgMinerFancyIX-v0.9.4.ps1
index 42be9dd6..7b9a778e 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.3.3
-Version date: 2024/09/11
+Version: 6.3.4
+Version date: 2024/09/13
#>
If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.Type -eq "AMD" }))) { Return }
diff --git a/Miners/Suprminer-v2.31v2.ps1 b/Miners/Suprminer-v2.31v2.ps1
index 6ebf644f..78b3ec95 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.3.3
-Version date: 2024/09/11
+Version: 6.3.4
+Version date: 2024/09/13
#>
If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.OpenCL.ComputeCapability -ge "5.0" }))) { Return }
diff --git a/Miners/TTMiner-v2024.3.2.ps1 b/Miners/TTMiner-v2024.3.2.ps1
index a93cce5a..bd4ad24c 100644
--- a/Miners/TTMiner-v2024.3.2.ps1
+++ b/Miners/TTMiner-v2024.3.2.ps1
@@ -17,8 +17,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
-Version: 6.3.3
-Version date: 2024/09/11
+Version: 6.3.4
+Version date: 2024/09/13
#>
# TT needs avx2 and aes https://github.com/TrailingStop/TT-Miner-beta/issues/7#issuecomment-2158058291
diff --git a/Miners/TTMiner-v5.0.3.ps1 b/Miners/TTMiner-v5.0.3.ps1
index 694f3b48..a79054cd 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.3.3
-Version date: 2024/09/11
+Version: 6.3.4
+Version date: 2024/09/13
#>
If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.OpenCL.ComputeCapability -ge "5.0" }))) { Return }
diff --git a/Miners/TeamBlackMiner-v2.25.ps1 b/Miners/TeamBlackMiner-v2.25.ps1
index b9ff4dd4..f9f5d31d 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.3.3
-Version date: 2024/09/11
+Version: 6.3.4
+Version date: 2024/09/13
#>
If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.Type -eq "AMD" -or ($_.OpenCL.ComputeCapability -ge "5.0" -and $_.CUDAVersion -ge [Version]"11.6") }))) { Return }
diff --git a/Miners/TeamRedMiner-v0.10.21.ps1 b/Miners/TeamRedMiner-v0.10.21.ps1
index 99920e53..032d8f6f 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.3.3
-Version date: 2024/09/11
+Version: 6.3.4
+Version date: 2024/09/13
#>
If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.Type -eq "AMD" -and $_.OpenCL.ClVersion -ge "OpenCL C 2.0" }))) { Return }
diff --git a/Miners/TeleMerakiMiner-v1.5.0.ps1 b/Miners/TeleMerakiMiner-v1.5.0.ps1
index 8704dcf3..404c6639 100644
--- a/Miners/TeleMerakiMiner-v1.5.0.ps1
+++ b/Miners/TeleMerakiMiner-v1.5.0.ps1
@@ -17,8 +17,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
-Version: 6.3.3
-Version date: 2024/09/11
+Version: 6.3.4
+Version date: 2024/09/13
#>
If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.OpenCL.ComputeCapability -ge "5.0" }))) { Return }
diff --git a/Miners/Trex-v0.26.8.ps1 b/Miners/Trex-v0.26.8.ps1
index 0c7d8729..f8825a43 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.3.3
-Version date: 2024/09/11
+Version: 6.3.4
+Version date: 2024/09/13
#>
If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.OpenCL.ComputeCapability -ge "5.0" }))) { Return }
diff --git a/Miners/Wildrig-v0.40.8.ps1 b/Miners/Wildrig-v0.40.8.ps1
index b9eff2b3..b2488dd3 100644
--- a/Miners/Wildrig-v0.40.8.ps1
+++ b/Miners/Wildrig-v0.40.8.ps1
@@ -17,8 +17,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
-Version: 6.3.3
-Version date: 2024/09/11
+Version: 6.3.4
+Version date: 2024/09/13
#>
If (-not ($Devices = $Variables.EnabledDevices.Where({ ($_.Type -eq "AMD" -and $_.OpenCL.ClVersion -ge "OpenCL C 1.2" -and $_.Architecture -notmatch "^GCN1$") -or $_.Type -eq "INTEL" -or ($_.OpenCL.ComputeCapability -ge "5.0" -and $_.OpenCL.DriverVersion -ge [Version]"452.39.00") }))) { Return }
diff --git a/Miners/XLArig-v5.2.4.ps1 b/Miners/XLArig-v5.2.4.ps1
index 1dd1037b..72151937 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.3.3
-Version date: 2024/09/11
+Version: 6.3.4
+Version date: 2024/09/13
#>
# https://github.com/scala-network/XLArig/issues/59; Need to remove temp fix in \Includes\MinerAPIs\XMrig.psm1 when resolved
diff --git a/Miners/XmRig-v6.22.0.3.ps1 b/Miners/XmRig-v6.22.0.3.ps1
index bc0423ee..77ee2bda 100644
--- a/Miners/XmRig-v6.22.0.3.ps1
+++ b/Miners/XmRig-v6.22.0.3.ps1
@@ -17,8 +17,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
-Version: 6.3.3
-Version date: 2024/09/11
+Version: 6.3.4
+Version date: 2024/09/13
#>
If (-not ($Devices = $Variables.EnabledDevices.Where({ "AMD", "CPU", "INTEL" -contains $_.Type -or $_.OpenCL.ComputeCapability -gt "5.0" }))) { Return }
diff --git a/Miners/XmrStak-v2.10.8.ps1 b/Miners/XmrStak-v2.10.8.ps1
index 1d7112c3..27ee5447 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.3.3
-Version date: 2024/09/11
+Version: 6.3.4
+Version date: 2024/09/13
#>
If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.Type -ne "NVIDIA" -or $_.OpenCL.ComputeCapability -ge "5.0" }))) { Return }
diff --git a/Miners/ZealotEnemy-v2.6.3.ps1 b/Miners/ZealotEnemy-v2.6.3.ps1
index 082fc8d0..5d2beed5 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.3.3
-Version date: 2024/09/11
+Version: 6.3.4
+Version date: 2024/09/13
#>
If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.OpenCL.ComputeCapability -ge "5.0" }))) { Return }
diff --git a/Miners/lolMiner-v1.88.ps1 b/Miners/lolMiner-v1.89.ps1
similarity index 58%
rename from Miners/lolMiner-v1.88.ps1
rename to Miners/lolMiner-v1.89.ps1
index dd37e0d7..7ece2ff2 100644
--- a/Miners/lolMiner-v1.88.ps1
+++ b/Miners/lolMiner-v1.89.ps1
@@ -17,104 +17,102 @@ along with this program. If not, see .
<#
Product: UG-Miner
-Version: 6.3.3
-Version date: 2024/09/11
+Version: 6.3.4
+Version date: 2024/09/13
#>
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 }
-$URI = "https://github.com/Lolliedieb/lolMiner-releases/releases/download/1.88/lolMiner_v1.88_Win64.zip"
+$URI = "https://github.com/Lolliedieb/lolMiner-releases/releases/download/1.89/lolMiner_v1.89_Win64.zip"
$Name = [String](Get-Item $MyInvocation.MyCommand.Path).BaseName
$Path = "Bin\$Name\lolminer.exe"
$DeviceEnumerator = "Bus"
$Algorithms = @(
- @{ Algorithms = @("Autolykos2"); Type = "AMD"; Fee = @(0.015); MinMemGiB = 1.24; MinerSet = 1; WarmupTimes = @(45, 20); ExcludeGPUarchitectures = " "; ExcludePools = @(@("NiceHash", "ProHashing"), @()); Arguments = " --algo AUTOLYKOS2" }
- @{ Algorithms = @("BeamV3"); Type = "AMD"; Fee = @(0.01); MinMemGiB = 6.0; MinerSet = 0; WarmupTimes = @(45, 50); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo BEAM-III" }
- @{ Algorithms = @("Blake3"); Type = "AMD"; Fee = @(0.0075); MinMemGiB = 2.0; MinerSet = 1; WarmupTimes = @(45, 20); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo ALEPH" }
- @{ Algorithms = @("Cuckoo29"); Type = "AMD"; Fee = @(0.02); MinMemGiB = 8.0; MinerSet = 0; WarmupTimes = @(45, 70); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo C29AE" }
- @{ Algorithms = @("Cuckaroo29B"); Type = "AMD"; Fee = @(0.02); MinMemGiB = 6.0; MinerSet = 2; WarmupTimes = @(45, 70); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo CR29-40" }
- @{ Algorithms = @("Cuckaroo29S"); Type = "AMD"; Fee = @(0.02); MinMemGiB = 6.0; MinerSet = 2; WarmupTimes = @(45, 70); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo CR29-32" }
- @{ Algorithms = @("Cuckaroo30CTX"); Type = "AMD"; Fee = @(0.025); MinMemGiB = 7.8; MinerSet = 2; WarmupTimes = @(45, 70); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo C30CTX" }
-# @{ Algorithms = @("Cuckatoo31"); Type = "AMD"; Fee = @(0.02); MinMemGiB = 4.0; MinerSet = 3; WarmupTimes = @(60, 80); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo C31" } # ASIC
-# @{ Algorithms = @("Cuckatoo32"); Type = "AMD"; Fee = @(0.02); MinMemGiB = 4.0; MinerSet = 3; WarmupTimes = @(60, 70); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo C32" } # ASIC
- @{ Algorithms = @("Equihash1254"); Type = "AMD"; Fee = @(0.015); MinMemGiB = 3.0; MinerSet = 0; WarmupTimes = @(45, 70); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo ZEL --pers ZelProof" }
- @{ Algorithms = @("Equihash1445"); Type = "AMD"; Fee = @(0.01); MinMemGiB = 3.0; MinerSet = 1; WarmupTimes = @(30, 60); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo EQUI144_5" } # FPGA
- @{ Algorithms = @("Equihash1927"); Type = "AMD"; Fee = @(0.01); MinMemGiB = 3.0; MinerSet = 0; WarmupTimes = @(45, 70); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo EQUI192_7" } # FPGA
- @{ Algorithms = @("EtcHash"); Type = "AMD"; Fee = @(0.007); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 70); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo ETCHASH" } # PhoenixMiner-v6.2c is faster
-# @{ Algorithms = @("EtcHash", "Blake3"); Type = "AMD"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(60, 100); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo ETCHASH --dualmode ALEPHDUAL" } # No hashrate for second algorithm
-# @{ Algorithms = @("EtcHash", "HeavyHashKarlsen"); Type = "AMD"; Fee = @(0.01, 0); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(60, 90); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo ETCHASH --dualmode KARLSENDUAL" } # No hashrate for second algorithm
-# @{ Algorithms = @("EtcHash", "SHA512256d"); Type = "AMD"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 90); ExcludeGPUarchitectures = "^GCN4$"; ExcludePools = @(@(), @()); Arguments = " --algo ETCHASH --dualmode RXDDUAL" } # https://github.com/Lolliedieb/lolMiner-releases/issues/1986
- @{ Algorithms = @("Ethash"); Type = "AMD"; Fee = @(0.007); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 70); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo ETHASH" } # PhoenixMiner-v6.2c is faster
-# @{ Algorithms = @("Ethash", "Blake3"); Type = "AMD"; Fee = @(0.01, 0); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(60, 100); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo ETHASH --dualmode ALEPHDUAL" } # No hashrate for second algorithm
-# @{ Algorithms = @("Ethash", "HeavyHashKarlsen"); Type = "AMD"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(60, 90); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo ETHASH --dualmode KARLSENDUAL" } # No hashrate for second algorithm
-# @{ Algorithms = @("Ethash", "SHA512256d"); Type = "AMD"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 90); ExcludeGPUarchitectures = "^GCN4$"; ExcludePools = @(@(), @()); Arguments = " --algo ETHASH --dualmode RXDDUAL" } # https://github.com/Lolliedieb/lolMiner-releases/issues/1986
- @{ Algorithms = @("EthashB3"); Type = "AMD"; Fee = @(0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 70); ExcludeGPUarchitectures = "^GCN4$"; ExcludePools = @(@(), @()); Arguments = " --algo ETHASHB3" } # https://github.com/Lolliedieb/lolMiner-releases/issues/1992
- @{ Algorithms = @("EthashB3", "Blake3"); Type = "AMD"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 90); ExcludeGPUarchitectures = "^GCN4$"; ExcludePools = @(@(), @()); Arguments = " --algo ETHASHB3 --dualmode ALEPHDUAL" }
- @{ Algorithms = @("EthashB3", "HeavyHashKarlsen"); Type = "AMD"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(60, 90); ExcludeGPUarchitectures = "^GCN4$"; ExcludePools = @(@(), @()); Arguments = " --algo ETHASHB3 --dualmode KARLSENDUAL" }
- @{ Algorithms = @("EthashB3", "HeavyHashPyrin"); Type = "AMD"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 90); ExcludeGPUarchitectures = "^GCN4$"; ExcludePools = @(@(), @()); Arguments = " --algo ETHASHB3 --dualmode PYRINDUAL" }
- @{ Algorithms = @("EthashB3", "SHA512256d"); Type = "AMD"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 100); ExcludeGPUarchitectures = "^GCN4$"; ExcludePools = @(@(), @()); Arguments = " --algo ETHASHB3 --dualmode RXDDUAL" } # https://github.com/Lolliedieb/lolMiner-releases/issues/1986
- @{ Algorithms = @("Flux"); Type = "AMD"; Fee = @(0.01); MinMemGiB = 1.00; MinerSet = 2; WarmupTimes = @(45, 70); ExcludeGPUarchitectures = "^GCN4$"; ExcludePools = @(@(), @()); Arguments = " --algo FLUX" }
- @{ Algorithms = @("FishHash"); Type = "AMD"; Fee = @(0.0075); MinMemGiB = 1.24; MinerSet = 1; WarmupTimes = @(45, 20); ExcludeGPUarchitectures = ""; ExcludePools = @(@(), @()); Arguments = " --algo FISHHASH" }
- @{ Algorithms = @("FishHash", "Blake3"); Type = "AMD"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 90); ExcludeGPUarchitectures = "^GCN4$|^GCN5\d$"; ExcludePools = @(@(), @()); Arguments = " --algo FISHHASH --dualmode ALEPHDUAL" }
- @{ Algorithms = @("FishHash", "HeavyHashKarlsen"); Type = "AMD"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(60, 90); ExcludeGPUarchitectures = "^GCN4$|^GCN5\d$"; ExcludePools = @(@(), @()); Arguments = " --algo FISHHASH --dualmode KARLSENDUAL" }
- @{ Algorithms = @("FishHash", "HeavyHashPyrin"); Type = "AMD"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 90); ExcludeGPUarchitectures = "^GCN4$|^GCN5\d$|^RDNA1$"; ExcludePools = @(@(), @()); Arguments = " --algo FISHHASH --dualmode PYRINDUAL" }
- @{ Algorithms = @("FishHash", "SHA512256d"); Type = "AMD"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 90); ExcludeGPUarchitectures = "^GCN4$|^GCN5\d$"; ExcludePools = @(@(), @()); Arguments = " --algo FISHHASH --dualmode RXDDUAL" }
- @{ Algorithms = @("HeavyHashKarlsen"); Type = "AMD"; Fee = @(0.0075); MinMemGiB = 2.0; MinerSet = 1; WarmupTimes = @(90, 30); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo KARLSEN" }
- @{ Algorithms = @("HeavyHashPyrin"); Type = "AMD"; Fee = @(0.0075); MinMemGiB = 2.0; MinerSet = 1; WarmupTimes = @(90, 30); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo PYRIN" }
- @{ Algorithms = @("IronFish"); Type = "AMD"; Fee = @(0.0075); MinMemGiB = 2.0; MinerSet = 1; WarmupTimes = @(45, 20); ExcludeGPUarchitectures = " "; ExcludePools = @(@("NiceHash"), @()); Arguments = " --algo IRONFISH" }
- @{ Algorithms = @("NexaPow"); Type = "AMD"; Fee = @(0.02); MinMemGiB = 3.0; MinerSet = 2; WarmupTimes = @(30, 60); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo NEXA" }
- @{ Algorithms = @("SHA512256d"); Type = "AMD"; Fee = @(0.0075); MinMemGiB = 1.0; MinerSet = 0; WarmupTimes = @(60, 70); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo RADIANT" }
- @{ Algorithms = @("UbqHash"); Type = "AMD"; Fee = @(0.007); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 70); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo UBQHASH" }
- @{ Algorithms = @("UbqHash", "Blake3"); Type = "AMD"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(60, 90); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo UBQHASH --dualmode ALEPHDUAL" }
- @{ Algorithms = @("UbqHash", "HeavyHashKarlsen"); Type = "AMD"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 90); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo UBQHASH --dualmode KARLSENDUAL" } # No hashrate for second algorithm
- @{ Algorithms = @("UbqHash", "SHA512256d"); Type = "AMD"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 90); ExcludeGPUarchitectures = "^GCN4$"; ExcludePools = @(@(), @()); Arguments = " --algo UBQHASH --dualmode RXDDUAL" } # https://github.com/Lolliedieb/lolMiner-releases/issues/1986
-
- @{ Algorithms = @("Autolykos2"); Type = "INTEL"; Fee = @(0.015); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 20); ExcludeGPUarchitectures = " "; ExcludePools = @(@("NiceHash", "ProHashing"), @()); Arguments = " --algo AUTOLYKOS2" }
- @{ Algorithms = @("BeamV3"); Type = "INTEL"; Fee = @(0.01); MinMemGiB = 6.0; MinerSet = 2; WarmupTimes = @(45, 30); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo BEAM-III" }
- @{ Algorithms = @("Equihash1254"); Type = "INTEL"; Fee = @(0.015); MinMemGiB = 3.0; MinerSet = 0; WarmupTimes = @(45, 70); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo ZEL --pers ZelProof" }
- @{ Algorithms = @("Equihash1445"); Type = "INTEL"; Fee = @(0.01); MinMemGiB = 3.0; MinerSet = 1; WarmupTimes = @(30, 60); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo EQUI144_5" } # FPGA
- @{ Algorithms = @("EtcHash"); Type = "INTEL"; Fee = @(0.007); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 60); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo ETCHASH" } # PhoenixMiner-v6.2c is faster
-
- @{ Algorithms = @("Autolykos2"); Type = "NVIDIA"; Fee = @(0.015); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 20); ExcludeGPUarchitectures = " "; ExcludePools = @(@("NiceHash", "ProHashing"), @()); Arguments = " --algo AUTOLYKOS2" }
- @{ Algorithms = @("Blake3"); Type = "NVIDIA"; Fee = @(0.075); MinMemGiB = 2.0; MinerSet = 1; WarmupTimes = @(45, 30); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo ALEPH" }
- @{ Algorithms = @("BeamV3"); Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 3.0; MinerSet = 2; WarmupTimes = @(45, 50); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo BEAM-III" } # NBMiner-v42.3 is fastest
- @{ Algorithms = @("Cuckoo29"); Type = "NVIDIA"; Fee = @(0.02); MinMemGiB = 8.0; MinerSet = 2; WarmupTimes = @(45, 60); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo C29AE" }
- @{ Algorithms = @("Cuckaroo29B"); Type = "NVIDIA"; Fee = @(0.02); MinMemGiB = 6.0; MinerSet = 2; WarmupTimes = @(45, 60); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo CR29-40" }
- @{ Algorithms = @("Cuckaroo29S"); Type = "NVIDIA"; Fee = @(0.02); MinMemGiB = 6.0; MinerSet = 2; WarmupTimes = @(45, 60); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo CR29-32" }
- @{ Algorithms = @("Cuckaroo30CTX"); Type = "NVIDIA"; Fee = @(0.025); MinMemGiB = 8.0; MinerSet = 2; WarmupTimes = @(45, 60); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo C30CTX" }
-# @{ Algorithms = @("Cuckatoo31"); Type = "NVIDIA"; Fee = @(0.02); MinMemGiB = 4.0; MinerSet = 3; WarmupTimes = @(60, 60); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo C31" } # ASIC
-# @{ Algorithms = @("Cuckatoo32"); Type = "NVIDIA"; Fee = @(0.02); MinMemGiB = 4.0; MinerSet = 3; WarmupTimes = @(60, 60); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo C32" } # ASIC
- @{ Algorithms = @("Equihash1254"); Type = "NVIDIA"; Fee = @(0.015); MinMemGiB = 3.0; MinerSet = 1; WarmupTimes = @(45, 60); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo ZEL --pers ZelProof" } # MiniZ-v2.4.d is fastest, but has 2% miner fee
- @{ Algorithms = @("Equihash1445"); Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 3.0; MinerSet = 1; WarmupTimes = @(30, 60); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo EQUI144_5" } # FPGA
- @{ Algorithms = @("Equihash2109"); Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 2.0; MinerSet = 2; WarmupTimes = @(45, 30); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo EQUI210_9" }
- @{ Algorithms = @("EtcHash"); Type = "NVIDIA"; Fee = @(0.007); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 0); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo ETCHASH" } # PhoenixMiner-v6.2c is faster
- @{ Algorithms = @("EtcHash", "Blake3"); Type = "NVIDIA"; Fee = @(0.01, 0); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(90, 100); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo ETCHASH --dualmode ALEPHDUAL --maxdualimpact *" }
-# @{ Algorithms = @("EtcHash", "HeavyHashKarlsen"); Type = "NVIDIA"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 1; WarmupTimes = @(90, 100); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo ETCHASH --dualmode KARLSENDUAL --maxdualimpact *" } # No hashrate for second algorithm
-# @{ Algorithms = @("EtcHash", "SHA512256d"); Type = "NVIDIA"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 1; WarmupTimes = @(95, 100); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo ETCHASH --dualmode RXDDUAL --maxdualimpact *" } # https://github.com/Lolliedieb/lolMiner-releases/issues/1986
- @{ Algorithms = @("Ethash"); Type = "NVIDIA"; Fee = @(0.007); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 0); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo ETHASH" } # PhoenixMiner-v6.2c is faster
- @{ Algorithms = @("Ethash", "Blake3"); Type = "NVIDIA"; Fee = @(0.01, 0); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(60, 100); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo ETHASH --dualmode ALEPHDUAL --maxdualimpact *" }
-# @{ Algorithms = @("Ethash", "HeavyHashKarlsen"); Type = "NVIDIA"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(90, 100); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo ETHASH --dualmode KARLSENDUAL --maxdualimpact *" } # No hashrate for second algorithm
-# @{ Algorithms = @("Ethash", "SHA512256d"); Type = "NVIDIA"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(90, 100); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo ETHASH --dualmode RXDDUAL --maxdualimpact *" } # https://github.com/Lolliedieb/lolMiner-releases/issues/1986
- @{ Algorithms = @("EthashB3"); Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 70); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo ETHASHB3" }
- @{ Algorithms = @("EthashB3", "Blake3"); Type = "NVIDIA"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 90); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo ETHASHB3 --dualmode ALEPHDUAL --maxdualimpact *" }
- @{ Algorithms = @("EthashB3", "HeavyHashPyrin"); Type = "NVIDIA"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 90); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo ETHASHB3 --dualmode PYRINDUAL --maxdualimpact *" }
- @{ Algorithms = @("EthashB3", "HeavyHashKarlsen"); Type = "NVIDIA"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 90); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo ETHASHB3 --dualmode KARLSENDUAL --maxdualimpact *" }
- @{ Algorithms = @("EthashB3", "SHA512256d"); Type = "NVIDIA"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(60, 90); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo ETHASHB3 --dualmode RXDDUAL --maxdualimpact *" }
- @{ Algorithms = @("FishHash"); Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 1.24; MinerSet = 1; WarmupTimes = @(45, 20); ExcludeGPUarchitectures = "^Other$|^Pascal$"; ExcludePools = @(@(), @()); Arguments = " --algo FISHHASH" }
- @{ Algorithms = @("FishHash", "Blake3"); Type = "NVIDIA"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(75, 90); ExcludeGPUarchitectures = "^Other$|^Pascal$"; ExcludePools = @(@(), @()); Arguments = " --algo FISHHASH --dualmode ALEPHDUAL --maxdualimpact *" }
- @{ Algorithms = @("FishHash", "HeavyHashPyrin"); Type = "NVIDIA"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(75, 90); ExcludeGPUarchitectures = "^Other$|^Pascal$"; ExcludePools = @(@(), @()); Arguments = " --algo FISHHASH --dualmode PYRINDUAL --maxdualimpact *" }
- @{ Algorithms = @("FishHash", "HeavyHashKarlsen"); Type = "NVIDIA"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(75, 90); ExcludeGPUarchitectures = "^Other$|^Pascal$"; ExcludePools = @(@(), @()); Arguments = " --algo FISHHASH --dualmode KARLSENDUAL --maxdualimpact *" }
- @{ Algorithms = @("FishHash", "SHA512256d"); Type = "NVIDIA"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(75, 90); ExcludeGPUarchitectures = "^Other$|^Pascal$"; ExcludePools = @(@(), @()); Arguments = " --algo FISHHASH --dualmode RXDDUAL --maxdualimpact *" }
- @{ Algorithms = @("HeavyHashKarlsen"); Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2.0; MinerSet = 0; WarmupTimes = @(30, 0); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo KARLSEN" }
- @{ Algorithms = @("HeavyHashPyrin"); Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2.0; MinerSet = 1; WarmupTimes = @(30, 0); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo PYRIN" }
- @{ Algorithms = @("IronFish"); Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2.0; MinerSet = 1; WarmupTimes = @(45, 20); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo IRONFISH" }
- @{ Algorithms = @("NexaPow"); Type = "NVIDIA"; Fee = @(0.02); MinMemGiB = 3.0; MinerSet = 1; WarmupTimes = @(30, 60); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo NEXA" }
- @{ Algorithms = @("SHA512256d"); Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 1.0; MinerSet = 2; WarmupTimes = @(60, 20); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo RADIANT" }
- @{ Algorithms = @("UbqHash"); Type = "NVIDIA"; Fee = @(0.007); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 0); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo UBQHASH" }
- @{ Algorithms = @("UbqHash", "Blake3"); Type = "NVIDIA"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 90); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo UBQHASH --dualmode ALEPHDUAL --maxdualimpact *" }
-# @{ Algorithms = @("UbqHash", "HeavyHashKarlsen"); Type = "NVIDIA"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 90); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo UBQHASH --dualmode KARLSENDUAL --maxdualimpact *" } # No hashrate for second algorithm
-# @{ Algorithms = @("UbqHash", "SHA512256d"); Type = "NVIDIA"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 90); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo UBQHASH --dualmode RXDDUAL --maxdualimpact *" } # https://github.com/Lolliedieb/lolMiner-releases/issues/1986
+ @{ Algorithms = @("Autolykos2"); Type = "AMD"; Fee = @(0.015); MinMemGiB = 1.24; MinerSet = 1; WarmupTimes = @(45, 20); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo AUTOLYKOS2" }
+ @{ Algorithms = @("BeamV3"); Type = "AMD"; Fee = @(0.01); MinMemGiB = 6.0; MinerSet = 0; WarmupTimes = @(45, 50); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo BEAM-III" }
+ @{ Algorithms = @("Blake3"); Type = "AMD"; Fee = @(0.0075); MinMemGiB = 2.0; MinerSet = 1; WarmupTimes = @(45, 20); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo ALEPH" }
+ @{ Algorithms = @("Cuckoo29"); Type = "AMD"; Fee = @(0.02); MinMemGiB = 8.0; MinerSet = 0; WarmupTimes = @(45, 70); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo C29AE" }
+ @{ Algorithms = @("Cuckaroo29B"); Type = "AMD"; Fee = @(0.02); MinMemGiB = 6.0; MinerSet = 2; WarmupTimes = @(45, 70); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo CR29-40" }
+ @{ Algorithms = @("Cuckaroo29S"); Type = "AMD"; Fee = @(0.02); MinMemGiB = 6.0; MinerSet = 2; WarmupTimes = @(45, 70); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo CR29-32" }
+ @{ Algorithms = @("Cuckaroo30CTX"); Type = "AMD"; Fee = @(0.025); MinMemGiB = 7.8; MinerSet = 2; WarmupTimes = @(45, 70); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo C30CTX" }
+# @{ Algorithms = @("Cuckatoo31"); Type = "AMD"; Fee = @(0.02); MinMemGiB = 4.0; MinerSet = 3; WarmupTimes = @(60, 80); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo C31" } # ASIC
+# @{ Algorithms = @("Cuckatoo32"); Type = "AMD"; Fee = @(0.02); MinMemGiB = 4.0; MinerSet = 3; WarmupTimes = @(60, 70); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo C32" } # ASIC
+ @{ Algorithms = @("Equihash1254"); Type = "AMD"; Fee = @(0.015); MinMemGiB = 3.0; MinerSet = 0; WarmupTimes = @(45, 70); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo ZEL --pers ZelProof" }
+ @{ Algorithms = @("Equihash1445"); Type = "AMD"; Fee = @(0.01); MinMemGiB = 3.0; MinerSet = 1; WarmupTimes = @(30, 60); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo EQUI144_5" } # FPGA
+ @{ Algorithms = @("Equihash1927"); Type = "AMD"; Fee = @(0.01); MinMemGiB = 3.0; MinerSet = 0; WarmupTimes = @(45, 70); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo EQUI192_7" } # FPGA
+ @{ Algorithms = @("EtcHash"); Type = "AMD"; Fee = @(0.007); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 70); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo ETCHASH" } # PhoenixMiner-v6.2c is faster
+ @{ Algorithms = @("EtcHash", "Blake3"); Type = "AMD"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(60, 100); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @("NiceHash")); Arguments = " --algo ETCHASH --dualmode ALEPHDUAL" }
+# @{ Algorithms = @("EtcHash", "HeavyHashKarlsen"); Type = "AMD"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(60, 90); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo ETCHASH --dualmode KARLSENDUAL" } # No hashrate for second algorithm
+# @{ Algorithms = @("EtcHash", "SHA512256d"); Type = "AMD"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 90); ExcludeGPUarchitectures = "^GCN\d+$"; ExcludePools = @(@(), @()); Arguments = " --algo ETCHASH --dualmode RXDDUAL" } # https://github.com/Lolliedieb/lolMiner-releases/issues/1986
+ @{ Algorithms = @("Ethash"); Type = "AMD"; Fee = @(0.007); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 70); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo ETHASH" } # PhoenixMiner-v6.2c is faster
+ @{ Algorithms = @("Ethash", "Blake3"); Type = "AMD"; Fee = @(0.01, 0); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(60, 100); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @("NiceHash")); Arguments = " --algo ETHASH --dualmode ALEPHDUAL" }
+# @{ Algorithms = @("Ethash", "HeavyHashKarlsen"); Type = "AMD"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(60, 90); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo ETHASH --dualmode KARLSENDUAL" } # No hashrate for second algorithm
+# @{ Algorithms = @("Ethash", "SHA512256d"); Type = "AMD"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 90); ExcludeGPUarchitectures = "^GCN\d+$"; ExcludePools = @(@(), @()); Arguments = " --algo ETHASH --dualmode RXDDUAL" } # https://github.com/Lolliedieb/lolMiner-releases/issues/1986
+ @{ Algorithms = @("EthashB3"); Type = "AMD"; Fee = @(0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 70); ExcludeGPUarchitectures = "^GCN\d+$"; ExcludePools = @(@(), @()); Arguments = " --algo ETHASHB3" } # https://github.com/Lolliedieb/lolMiner-releases/issues/1992
+ @{ Algorithms = @("EthashB3", "Blake3"); Type = "AMD"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 90); ExcludeGPUarchitectures = "^GCN\d+$"; ExcludePools = @(@(), @()); Arguments = " --algo ETHASHB3 --dualmode ALEPHDUAL" }
+ @{ Algorithms = @("EthashB3", "HeavyHashKarlsen"); Type = "AMD"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(60, 90); ExcludeGPUarchitectures = "^GCN\d+$"; ExcludePools = @(@(), @()); Arguments = " --algo ETHASHB3 --dualmode KARLSENDUAL" }
+# @{ Algorithms = @("EthashB3", "HeavyHashPyrin"); Type = "AMD"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 90); ExcludeGPUarchitectures = "^GCN\d+$"; ExcludePools = @(@(), @()); Arguments = " --algo ETHASHB3 --dualmode PYRINDUAL" } # No hashrate for second algorithm
+ @{ Algorithms = @("EthashB3", "SHA512256d"); Type = "AMD"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 100); ExcludeGPUarchitectures = "^GCN\d+$"; ExcludePools = @(@(), @()); Arguments = " --algo ETHASHB3 --dualmode RXDDUAL" } # https://github.com/Lolliedieb/lolMiner-releases/issues/1986
+ @{ Algorithms = @("Flux"); Type = "AMD"; Fee = @(0.01); MinMemGiB = 1.00; MinerSet = 2; WarmupTimes = @(45, 70); ExcludeGPUarchitectures = "^GCN\d+$"; ExcludePools = @(@(), @()); Arguments = " --algo FLUX" }
+ @{ Algorithms = @("FishHash"); Type = "AMD"; Fee = @(0.0075); MinMemGiB = 1.24; MinerSet = 1; WarmupTimes = @(45, 20); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo FISHHASH" }
+ @{ Algorithms = @("FishHash", "Blake3"); Type = "AMD"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 90); ExcludeGPUarchitectures = "^GCN\d+$"; ExcludePools = @(@(), @()); Arguments = " --algo FISHHASH --dualmode ALEPHDUAL" }
+ @{ Algorithms = @("FishHash", "HeavyHashKarlsen"); Type = "AMD"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(60, 90); ExcludeGPUarchitectures = "^GCN\d+$"; ExcludePools = @(@(), @()); Arguments = " --algo FISHHASH --dualmode KARLSENDUAL" }
+ @{ Algorithms = @("FishHash", "SHA512256d"); Type = "AMD"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 90); ExcludeGPUarchitectures = "^GCN\d+$"; ExcludePools = @(@(), @()); Arguments = " --algo FISHHASH --dualmode RXDDUAL" }
+ @{ Algorithms = @("HeavyHashKarlsen"); Type = "AMD"; Fee = @(0.0075); MinMemGiB = 2.0; MinerSet = 1; WarmupTimes = @(90, 30); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo KARLSEN" }
+ @{ Algorithms = @("HeavyHashKarlsenV2"); Type = "AMD"; Fee = @(0.01); MinMemGiB = 2.0; MinerSet = 1; WarmupTimes = @(90, 30); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo KARLSENV2" }
+ @{ Algorithms = @("IronFish"); Type = "AMD"; Fee = @(0.0075); MinMemGiB = 2.0; MinerSet = 1; WarmupTimes = @(45, 20); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo IRONFISH" }
+ @{ Algorithms = @("NexaPow"); Type = "AMD"; Fee = @(0.02); MinMemGiB = 3.0; MinerSet = 2; WarmupTimes = @(30, 60); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo NEXA" }
+ @{ Algorithms = @("SHA512256d"); Type = "AMD"; Fee = @(0.0075); MinMemGiB = 1.0; MinerSet = 0; WarmupTimes = @(60, 70); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo RADIANT" }
+ @{ Algorithms = @("UbqHash"); Type = "AMD"; Fee = @(0.007); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 70); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo UBQHASH" }
+ @{ Algorithms = @("UbqHash", "Blake3"); Type = "AMD"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(60, 90); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo UBQHASH --dualmode ALEPHDUAL" }
+# @{ Algorithms = @("UbqHash", "HeavyHashKarlsen"); Type = "AMD"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 90); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo UBQHASH --dualmode KARLSENDUAL" } # No hashrate for second algorithm
+# @{ Algorithms = @("UbqHash", "SHA512256d"); Type = "AMD"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 90); ExcludeGPUarchitectures = "^GCN\d+$"; ExcludePools = @(@(), @()); Arguments = " --algo UBQHASH --dualmode RXDDUAL" } # https://github.com/Lolliedieb/lolMiner-releases/issues/1986
+
+ @{ Algorithms = @("Autolykos2"); Type = "INTEL"; Fee = @(0.015); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 20); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo AUTOLYKOS2" }
+ @{ Algorithms = @("BeamV3"); Type = "INTEL"; Fee = @(0.01); MinMemGiB = 6.0; MinerSet = 2; WarmupTimes = @(45, 30); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo BEAM-III" }
+ @{ Algorithms = @("Equihash1254"); Type = "INTEL"; Fee = @(0.015); MinMemGiB = 3.0; MinerSet = 0; WarmupTimes = @(45, 70); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo ZEL --pers ZelProof" }
+ @{ Algorithms = @("Equihash1445"); Type = "INTEL"; Fee = @(0.01); MinMemGiB = 3.0; MinerSet = 1; WarmupTimes = @(30, 60); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo EQUI144_5" } # FPGA
+ @{ Algorithms = @("EtcHash"); Type = "INTEL"; Fee = @(0.007); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 60); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo ETCHASH" } # PhoenixMiner-v6.2c is faster
+
+ @{ Algorithms = @("Autolykos2"); Type = "NVIDIA"; Fee = @(0.015); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 20); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo AUTOLYKOS2" }
+ @{ Algorithms = @("Blake3"); Type = "NVIDIA"; Fee = @(0.075); MinMemGiB = 2.0; MinerSet = 1; WarmupTimes = @(45, 30); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo ALEPH" }
+ @{ Algorithms = @("BeamV3"); Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 3.0; MinerSet = 2; WarmupTimes = @(45, 50); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo BEAM-III" } # NBMiner-v42.3 is fastest
+ @{ Algorithms = @("Cuckoo29"); Type = "NVIDIA"; Fee = @(0.02); MinMemGiB = 8.0; MinerSet = 2; WarmupTimes = @(45, 60); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo C29AE" }
+ @{ Algorithms = @("Cuckaroo29B"); Type = "NVIDIA"; Fee = @(0.02); MinMemGiB = 6.0; MinerSet = 2; WarmupTimes = @(45, 60); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo CR29-40" }
+ @{ Algorithms = @("Cuckaroo29S"); Type = "NVIDIA"; Fee = @(0.02); MinMemGiB = 6.0; MinerSet = 2; WarmupTimes = @(45, 60); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo CR29-32" }
+ @{ Algorithms = @("Cuckaroo30CTX"); Type = "NVIDIA"; Fee = @(0.025); MinMemGiB = 8.0; MinerSet = 2; WarmupTimes = @(45, 60); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo C30CTX" }
+# @{ Algorithms = @("Cuckatoo31"); Type = "NVIDIA"; Fee = @(0.02); MinMemGiB = 4.0; MinerSet = 3; WarmupTimes = @(60, 60); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo C31" } # ASIC
+# @{ Algorithms = @("Cuckatoo32"); Type = "NVIDIA"; Fee = @(0.02); MinMemGiB = 4.0; MinerSet = 3; WarmupTimes = @(60, 60); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo C32" } # ASIC
+ @{ Algorithms = @("Equihash1254"); Type = "NVIDIA"; Fee = @(0.015); MinMemGiB = 3.0; MinerSet = 1; WarmupTimes = @(45, 60); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo ZEL --pers ZelProof" } # MiniZ-v2.4.d is fastest, but has 2% miner fee
+ @{ Algorithms = @("Equihash1445"); Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 3.0; MinerSet = 1; WarmupTimes = @(30, 60); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo EQUI144_5" } # FPGA
+ @{ Algorithms = @("Equihash2109"); Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 2.0; MinerSet = 2; WarmupTimes = @(45, 30); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo EQUI210_9" }
+ @{ Algorithms = @("EtcHash"); Type = "NVIDIA"; Fee = @(0.007); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 0); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo ETCHASH" } # PhoenixMiner-v6.2c is faster
+ @{ Algorithms = @("EtcHash", "Blake3"); Type = "NVIDIA"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(90, 100); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @("NiceHash")); Arguments = " --algo ETCHASH --dualmode ALEPHDUAL --maxdualimpact *" }
+# @{ Algorithms = @("EtcHash", "HeavyHashKarlsen"); Type = "NVIDIA"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 1; WarmupTimes = @(90, 100); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo ETCHASH --dualmode KARLSENDUAL --maxdualimpact *" } # No hashrate for second algorithm
+# @{ Algorithms = @("EtcHash", "SHA512256d"); Type = "NVIDIA"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 1; WarmupTimes = @(95, 100); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo ETCHASH --dualmode RXDDUAL --maxdualimpact *" } # https://github.com/Lolliedieb/lolMiner-releases/issues/1986
+ @{ Algorithms = @("Ethash"); Type = "NVIDIA"; Fee = @(0.007); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 0); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo ETHASH" } # PhoenixMiner-v6.2c is faster
+ @{ Algorithms = @("Ethash", "Blake3"); Type = "NVIDIA"; Fee = @(0.01, 0); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(60, 100); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @("NiceHash")); Arguments = " --algo ETHASH --dualmode ALEPHDUAL --maxdualimpact *" }
+# @{ Algorithms = @("Ethash", "HeavyHashKarlsen"); Type = "NVIDIA"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(90, 100); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo ETHASH --dualmode KARLSENDUAL --maxdualimpact *" } # No hashrate for second algorithm
+# @{ Algorithms = @("Ethash", "SHA512256d"); Type = "NVIDIA"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(90, 100); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo ETHASH --dualmode RXDDUAL --maxdualimpact *" } # https://github.com/Lolliedieb/lolMiner-releases/issues/1986
+ @{ Algorithms = @("EthashB3"); Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 70); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo ETHASHB3" }
+ @{ Algorithms = @("EthashB3", "Blake3"); Type = "NVIDIA"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 90); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo ETHASHB3 --dualmode ALEPHDUAL --maxdualimpact *" }
+# @{ Algorithms = @("EthashB3", "HeavyHashPyrin"); Type = "NVIDIA"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 90); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo ETHASHB3 --dualmode PYRINDUAL --maxdualimpact *" } # No hashrate for second algorithm
+ @{ Algorithms = @("EthashB3", "HeavyHashKarlsen"); Type = "NVIDIA"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 90); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo ETHASHB3 --dualmode KARLSENDUAL --maxdualimpact *" }
+ @{ Algorithms = @("EthashB3", "SHA512256d"); Type = "NVIDIA"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(60, 90); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo ETHASHB3 --dualmode RXDDUAL --maxdualimpact *" }
+ @{ Algorithms = @("FishHash"); Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 1.24; MinerSet = 1; WarmupTimes = @(45, 20); ExcludeGPUarchitectures = "^Other$|^Pascal$"; ExcludePools = @(@(), @()); Arguments = " --algo FISHHASH" }
+ @{ Algorithms = @("FishHash", "Blake3"); Type = "NVIDIA"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(75, 90); ExcludeGPUarchitectures = "^Other$|^Pascal$"; ExcludePools = @(@(), @()); Arguments = " --algo FISHHASH --dualmode ALEPHDUAL --maxdualimpact *" }
+ @{ Algorithms = @("FishHash", "HeavyHashKarlsen"); Type = "NVIDIA"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(75, 90); ExcludeGPUarchitectures = "^Other$|^Pascal$"; ExcludePools = @(@(), @()); Arguments = " --algo FISHHASH --dualmode KARLSENDUAL --maxdualimpact *" }
+ @{ Algorithms = @("FishHash", "SHA512256d"); Type = "NVIDIA"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(75, 90); ExcludeGPUarchitectures = "^Other$|^Pascal$"; ExcludePools = @(@(), @()); Arguments = " --algo FISHHASH --dualmode RXDDUAL --maxdualimpact *" }
+ @{ Algorithms = @("HeavyHashKarlsen"); Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2.0; MinerSet = 0; WarmupTimes = @(30, 0); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo KARLSEN" }
+ @{ Algorithms = @("HeavyHashKarlsenV2"); Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 2.0; MinerSet = 0; WarmupTimes = @(30, 0); ExcludeGPUarchitectures = "^Other$|^Pascal$"; ExcludePools = @(@(), @()); Arguments = " --algo KARLSENV2" }
+ @{ Algorithms = @("IronFish"); Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2.0; MinerSet = 1; WarmupTimes = @(45, 20); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo IRONFISH" }
+ @{ Algorithms = @("NexaPow"); Type = "NVIDIA"; Fee = @(0.02); MinMemGiB = 3.0; MinerSet = 1; WarmupTimes = @(30, 60); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo NEXA" }
+ @{ Algorithms = @("SHA512256d"); Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 1.0; MinerSet = 2; WarmupTimes = @(60, 20); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo RADIANT" }
+ @{ Algorithms = @("UbqHash"); Type = "NVIDIA"; Fee = @(0.007); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 0); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo UBQHASH" }
+ @{ Algorithms = @("UbqHash", "Blake3"); Type = "NVIDIA"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 90); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo UBQHASH --dualmode ALEPHDUAL --maxdualimpact *" }
+# @{ Algorithms = @("UbqHash", "HeavyHashKarlsen"); Type = "NVIDIA"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 90); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo UBQHASH --dualmode KARLSENDUAL --maxdualimpact *" } # No hashrate for second algorithm
+# @{ Algorithms = @("UbqHash", "SHA512256d"); Type = "NVIDIA"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 90); ExcludeGPUarchitectures = " "; ExcludePools = @(@(), @()); Arguments = " --algo UBQHASH --dualmode RXDDUAL --maxdualimpact *" } # https://github.com/Lolliedieb/lolMiner-releases/issues/1986
)
$Algorithms = $Algorithms.Where({ $_.MinerSet -le $Config.MinerSet })
@@ -123,23 +121,25 @@ $Algorithms = $Algorithms.Where({ $MinerPools[0][$_.Algorithms[0]] -and $_.Algor
If ($Algorithms) {
- # MaxDualImpact for 2. algorithm; The maximum impact on the eth mining speed in dual mining in %. Default is * for automatic mode
- $MaxDualImpactValues = @("*", 5, 10, 15, 20)
-
- # Build command sets for MaxDualImpact (only seems to work with AMD, no hashrates for second algorithm with GTX 1660 Super when --maxdualimpact is a number)
- $Algorithms = $Algorithms.ForEach(
- {
- If ($_.Type -eq "AMD" -and $_.Algorithms[1]) {
- ForEach ($Value in $MaxDualImpactValues) {
- $_ | Add-Member MaxDualImpact $Value -Force
+ If (-not $Config.DryRun) {
+ # MaxDualImpact for 2. algorithm; The maximum impact on the eth mining speed in dual mining in %. Default is * for automatic mode
+ $MaxDualImpactValues = @("*", 5, 10, 15, 20)
+
+ # Build command sets for MaxDualImpact (only seems to work with AMD, no hashrates for second algorithm with GTX 1660 Super when --maxdualimpact is a number)
+ $Algorithms = $Algorithms.ForEach(
+ {
+ If ($_.Type -eq "AMD" -and $_.Algorithms[1]) {
+ ForEach ($Value in $MaxDualImpactValues) {
+ $_ | Add-Member MaxDualImpact $Value -Force
+ $_.PsObject.Copy()
+ }
+ }
+ Else {
$_.PsObject.Copy()
}
}
- Else {
- $_.PsObject.Copy()
- }
- }
- )
+ )
+ }
($Devices | Select-Object Type, Model -Unique).ForEach(
{
diff --git a/Pools/HashCryptos.ps1 b/Pools/HashCryptos.ps1
index 5689474f..337aa95a 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.3.3
-Version date: 2024/09/11
+Version: 6.3.4
+Version date: 2024/09/13
#>
Param(
diff --git a/Pools/HiveON.ps1 b/Pools/HiveON.ps1
index bd11e432..272df095 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.3.3
-Version date: 2024/09/11
+Version: 6.3.4
+Version date: 2024/09/13
#>
Param(
diff --git a/Pools/MiningDutch.ps1 b/Pools/MiningDutch.ps1
index 4f94f9d0..23f496e0 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.3.3
-Version date: 2024/09/11
+Version: 6.3.4
+Version date: 2024/09/13
#>
Param(
diff --git a/Pools/NiceHash.ps1 b/Pools/NiceHash.ps1
index 439ed053..875859b6 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.3.3
-Version date: 2024/09/11
+Version: 6.3.4
+Version date: 2024/09/13
#>
Param(
diff --git a/Pools/ProHashing.ps1 b/Pools/ProHashing.ps1
index 4e0e34c5..941fb77e 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.3.3
-Version date: 2024/09/11
+Version: 6.3.4
+Version date: 2024/09/13
#>
Param(
diff --git a/Pools/ZPool.ps1 b/Pools/ZPool.ps1
index e95a8d25..63e98e18 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.3.3
-Version date: 2024/09/11
+Version: 6.3.4
+Version date: 2024/09/13
#>
Param(
diff --git a/Pools/ZergPool.ps1 b/Pools/ZergPool.ps1
index a1885cd1..01166bc8 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.3.3
-Version date: 2024/09/11
+Version: 6.3.4
+Version date: 2024/09/13
#>
Param(
diff --git a/README.md b/README.md
index 44ef9979..106dfb02 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/09/11
+Updated 2024/09/13
Copyright (c) 2018-2024 UselessGuru
diff --git a/UG-Miner.ps1 b/UG-Miner.ps1
index b18f820a..6960482e 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.3.3
-Version date: 2024/09/11
+Version: 6.3.4
+Version date: 2024/09/13
#>
using module .\Includes\Include.psm1
@@ -299,7 +299,7 @@ $Variables.Branding = [PSCustomObject]@{
BrandName = "UG-Miner"
BrandWebSite = "https://github.com/UselessGuru/UG-Miner"
ProductLabel = "UG-Miner"
- Version = [System.Version]"6.3.3"
+ Version = [System.Version]"6.3.4"
}
$WscriptShell = New-Object -ComObject Wscript.Shell
@@ -681,7 +681,7 @@ Function MainLoop {
ElseIf ($Global:CoreRunspace.Job.IsCompleted -ne $false) {
If ($Variables.Timer) {
Write-Message -Level Warn "Core cycle stopped abnormally - restarting..."
- Stop-Core
+ Close-CoreRunspace
}
Start-Core
If ($LegacyGUIform) { Update-GUIstatus }
@@ -705,7 +705,7 @@ Function MainLoop {
If ($host.UI.RawUI.KeyAvailable) {
$KeyPressed = [System.Console]::ReadKey($true)
- If ($KeyPressed.Key -eq "p" -and $KeyPressed.Modifiers -eq 5 <# #>) {
+ If ($Variables.NewMiningStatus -eq "Running" -and $KeyPressed.Key -eq "p" -and $KeyPressed.Modifiers -eq 5 <# #>) {
If (-not $Global:CoreRunspace.AsyncObject.IsCompleted -eq $false) {
# Core is complete / gone. Cycle cannot be suspended anymore
$Variables.SuspendCycle = $false
@@ -717,6 +717,7 @@ Function MainLoop {
If ($LegacyGUIform) {
$LegacyGUIminingSummaryLabel.ForeColor = [System.Drawing.Color]::Blue
$LegacyGUIminingSummaryLabel.Text = $Message
+ $LegacyGUIbuttonPause.Enabled = $false
}
Write-Host $Message -ForegroundColor Cyan
}
@@ -725,6 +726,7 @@ Function MainLoop {
If ($LegacyGUIform) {
$LegacyGUIminingSummaryLabel.ForeColor = [System.Drawing.Color]::Blue
$LegacyGUIminingSummaryLabel.Text = $Message
+ $LegacyGUIbuttonPause.Enabled = $true
}
Write-Host $Message -ForegroundColor Cyan
If ([DateTime]::Now.ToUniversalTime() -gt $Variables.EndCycleTime) { $Variables.EndCycleTime = [DateTime]::Now.ToUniversalTime() }
diff --git a/Version.txt b/Version.txt
index 50712294..8d549214 100644
--- a/Version.txt
+++ b/Version.txt
@@ -1,6 +1,6 @@
{
"Product": "UG-Miner",
- "Version": "6.3.3",
+ "Version": "6.3.4",
"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/APIdocs.html b/Web/APIdocs.html
index 984f0049..c495a003 100644
--- a/Web/APIdocs.html
+++ b/Web/APIdocs.html
@@ -24,7 +24,7 @@
- UG-Miner API (version 0.5.4.20)
+ UG-Miner API (version 0.5.4.22)
API data is available at http://localhost:[API port]/<resource>.
The default API port is 3999.
diff --git a/Web/minersoptimal.html b/Web/minersoptimal.html
index a801736b..cbf6a81b 100644
--- a/Web/minersoptimal.html
+++ b/Web/minersoptimal.html
@@ -50,7 +50,7 @@ Optimal miners
Command line |
Devices |
Type |
- Status |
+ Status |
Status Info |
Earning (biased) |
Earning |
diff --git a/Web/scripts/demo.ps1 b/Web/scripts/demo.ps1
index c68c8412..9cd8a787 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.3.3
-Version date: 2024/09/11
+Version: 6.3.4
+Version date: 2024/09/13
#>
# Try running this script as: http://localhost:3999/scripts/demo.ps1?message=Hello%20World!