diff --git a/Balances/HashCryptos.ps1 b/Balances/HashCryptos.ps1 index 4866bb5c..2ad573b7 100644 --- a/Balances/HashCryptos.ps1 +++ b/Balances/HashCryptos.ps1 @@ -18,8 +18,8 @@ along with this program. If not, see . <# Product: UG-Miner File: \Balances\HashCryptos.ps1 -Version: 6.2.11 -Version date: 2024/06/23 +Version: 6.2.12 +Version date: 2024/06/26 #> $Name = [String](Get-Item $MyInvocation.MyCommand.Path).BaseName diff --git a/Balances/HiveON.ps1 b/Balances/HiveON.ps1 index d9513c5c..244e6ad7 100644 --- a/Balances/HiveON.ps1 +++ b/Balances/HiveON.ps1 @@ -18,8 +18,8 @@ along with this program. If not, see . <# Product: UG-Miner File: \Balances\Hiveon.ps1 -Version: 6.2.11 -Version date: 2024/06/23 +Version: 6.2.12 +Version date: 2024/06/26 #> $Name = [String](Get-Item $MyInvocation.MyCommand.Path).BaseName diff --git a/Balances/MiningDutch.ps1 b/Balances/MiningDutch.ps1 index 3c848cf2..2f592e70 100644 --- a/Balances/MiningDutch.ps1 +++ b/Balances/MiningDutch.ps1 @@ -18,8 +18,8 @@ along with this program. If not, see . <# Product: UG-Miner File: \Balances\MiningDutch.ps1 -Version: 6.2.11 -Version date: 2024/06/23 +Version: 6.2.12 +Version date: 2024/06/26 #> $Name = [String](Get-Item $MyInvocation.MyCommand.Path).BaseName diff --git a/Balances/MiningPoolHub.ps1 b/Balances/MiningPoolHub.ps1 index 835894bd..0d1c0fee 100644 --- a/Balances/MiningPoolHub.ps1 +++ b/Balances/MiningPoolHub.ps1 @@ -18,8 +18,8 @@ along with this program. If not, see . <# Product: UG-Miner File: \Balances\MiningPoolHub.ps1 -Version: 6.2.11 -Version date: 2024/06/23 +Version: 6.2.12 +Version date: 2024/06/26 #> $Name = [String](Get-Item $MyInvocation.MyCommand.Path).BaseName diff --git a/Balances/NiceHash External.ps1 b/Balances/NiceHash External.ps1 index 1566c70e..2da77d1e 100644 --- a/Balances/NiceHash External.ps1 +++ b/Balances/NiceHash External.ps1 @@ -18,8 +18,8 @@ along with this program. If not, see . <# Product: UG-Miner File: \Balances\NiceHash Internal.ps1 -Version: 6.2.11 -Version date: 2024/06/23 +Version: 6.2.12 +Version date: 2024/06/26 #> $Name = [String](Get-Item $MyInvocation.MyCommand.Path).BaseName diff --git a/Balances/NiceHash Internal.ps1 b/Balances/NiceHash Internal.ps1 index 84efc4c7..0694f93d 100644 --- a/Balances/NiceHash Internal.ps1 +++ b/Balances/NiceHash Internal.ps1 @@ -18,8 +18,8 @@ along with this program. If not, see . <# Product: UG-Miner File: \Balances\NiceHash Internal.ps1 -Version: 6.2.11 -Version date: 2024/06/23 +Version: 6.2.12 +Version date: 2024/06/26 #> $Name = [String](Get-Item $MyInvocation.MyCommand.Path).BaseName diff --git a/Balances/ProHashing.ps1 b/Balances/ProHashing.ps1 index 35a7561f..bf8f1f44 100644 --- a/Balances/ProHashing.ps1 +++ b/Balances/ProHashing.ps1 @@ -18,8 +18,8 @@ along with this program. If not, see . <# Product: UG-Miner File: \Balances\ProHashing.ps1 -Version: 6.2.11 -Version date: 2024/06/23 +Version: 6.2.12 +Version date: 2024/06/26 #> $Name = [String](Get-Item $MyInvocation.MyCommand.Path).BaseName diff --git a/Balances/ZergPool.ps1 b/Balances/ZergPool.ps1 index b48dcb93..41ce11a2 100644 --- a/Balances/ZergPool.ps1 +++ b/Balances/ZergPool.ps1 @@ -18,8 +18,8 @@ along with this program. If not, see . <# Product: UG-Miner File: \Balances\ZergPool.ps1 -Version: 6.2.11 -Version date: 2024/06/23 +Version: 6.2.12 +Version date: 2024/06/26 #> $Name = [String](Get-Item $MyInvocation.MyCommand.Path).BaseName diff --git a/Balances/Zpool.ps1 b/Balances/Zpool.ps1 index 64c7fdd5..f84959cd 100644 --- a/Balances/Zpool.ps1 +++ b/Balances/Zpool.ps1 @@ -18,8 +18,8 @@ along with this program. If not, see . <# Product: UG-Miner File: \Balances\Zpool.ps1 -Version: 6.2.11 -Version date: 2024/06/23 +Version: 6.2.12 +Version date: 2024/06/26 #> $Name = [String](Get-Item $MyInvocation.MyCommand.Path).BaseName diff --git a/Brains/HashCryptos.ps1 b/Brains/HashCryptos.ps1 index bd07e509..b3468d9c 100644 --- a/Brains/HashCryptos.ps1 +++ b/Brains/HashCryptos.ps1 @@ -19,8 +19,8 @@ along with this program. If not, see . <# Product: UG-Miner File: \Brains\MiningDutch.ps1 -Version: 6.2.11 -Version date: 2024/06/23 +Version: 6.2.12 +Version date: 2024/06/26 #> using module ..\Includes\Include.psm1 diff --git a/Brains/MiningDutch.ps1 b/Brains/MiningDutch.ps1 index bfb0f124..bffbcd64 100644 --- a/Brains/MiningDutch.ps1 +++ b/Brains/MiningDutch.ps1 @@ -19,8 +19,8 @@ along with this program. If not, see . <# Product: UG-Miner File: \Brains\MiningDutch.ps1 -Version: 6.2.11 -Version date: 2024/06/23 +Version: 6.2.12 +Version date: 2024/06/26 #> using module ..\Includes\Include.psm1 diff --git a/Brains/ProHashing.ps1 b/Brains/ProHashing.ps1 index 97dcd250..aefc8db8 100644 --- a/Brains/ProHashing.ps1 +++ b/Brains/ProHashing.ps1 @@ -19,8 +19,8 @@ along with this program. If not, see . <# Product: UG-Miner File: \Brains\ProHashing.ps1 -Version: 6.2.11 -Version date: 2024/06/23 +Version: 6.2.12 +Version date: 2024/06/26 #> using module ..\Includes\Include.psm1 diff --git a/Brains/ZPool.ps1 b/Brains/ZPool.ps1 index c7a09ec5..62af2ef2 100644 --- a/Brains/ZPool.ps1 +++ b/Brains/ZPool.ps1 @@ -19,8 +19,8 @@ along with this program. If not, see . <# Product: UG-Miner File: \Brains\ZPool.ps1 -Version: 6.2.11 -Version date: 2024/06/23 +Version: 6.2.12 +Version date: 2024/06/26 #> using module ..\Includes\Include.psm1 diff --git a/Brains/ZergPool.ps1 b/Brains/ZergPool.ps1 index 439dc3b1..f9172450 100644 --- a/Brains/ZergPool.ps1 +++ b/Brains/ZergPool.ps1 @@ -19,8 +19,8 @@ along with this program. If not, see . <# Product: UG-Miner File: \Brains\ZergPool.ps1 -Version: 6.2.11 -Version date: 2024/06/23 +Version: 6.2.12 +Version date: 2024/06/26 #> using module ..\Includes\Include.psm1 diff --git a/Changelog.txt b/Changelog.txt index 27595eae..7992b221 100644 --- a/Changelog.txt +++ b/Changelog.txt @@ -2,6 +2,18 @@ Known issues: - Balance Tracker / Earnings Graph: Date change does not respect local time zone (accumulated data is calculated in UTC time) - UG-Miner has issues with new Windows Terminal when default terminal application is set to 'Let windows decide' or 'Windows Terminal'. -> It is recommeded to set it to 'Windows Console Host' + +ChangeLog UG-Miner 6.2.12 2024/06/26 +==================================== + +Enhancements: +- Core: Minor code optimizations + +Fixes: +- TeamBlackMiner-v2.25: Invalid command line for dual mining with EvrProgPow +- Various miners: Not creating all possible miner objects (no available devices enumerated) + + ChangeLog UG-Miner 6.2.11 2024/06/23 ==================================== diff --git a/Data/Algorithms.json b/Data/Algorithms.json index 4e8b3645..aee10cab 100644 --- a/Data/Algorithms.json +++ b/Data/Algorithms.json @@ -94,6 +94,7 @@ "dagger": "Xdag", "daggerhashimoto": "Ethash", "dero": "AstroBWTV2", + "dpowhash": "DPowHash", "dynamo": "DynamoCoin", "dynex": "DynexSolve", "dynexsolve": "DynexSolve", diff --git a/Data/CoinNames.json b/Data/CoinNames.json index 7a7a0d8b..557a992e 100644 --- a/Data/CoinNames.json +++ b/Data/CoinNames.json @@ -50,6 +50,7 @@ "BTCP": "Purple", "BTCQ": "Btcturquoise", "BTCZ": "Bitcoinz", + "BTFC": "Butterfly", "BTG": "Bitcoingold", "BTN": "Bitnetmoney", "BTRM": "Bitoreum", @@ -203,6 +204,7 @@ "MN": "Masternoder", "MONA": "Mona", "MTBC": "MateableCoin", + "NEO": "Neonx", "NEOX": "Neoxa", "NET": "Netsis", "NEXA": "Nexa", diff --git a/Data/CurrencyAlgorithm.json b/Data/CurrencyAlgorithm.json index 177dbac5..a5544893 100644 --- a/Data/CurrencyAlgorithm.json +++ b/Data/CurrencyAlgorithm.json @@ -54,6 +54,7 @@ "BTCP": "SHA256", "BTCQ": "Ghostrider", "BTCZ": "Equihash1445", + "BTFC": "X11", "BTG": "Equihash1445", "BTN": "Ethash", "BTRM": "Ghostrider", @@ -225,6 +226,7 @@ "MOAC": "Ethash", "MONA": "Lyra2RE2", "MTBC": "Scrypt", + "NEO": "X11", "NEOX": "KawPow", "NET": "X11", "NEXA": "NexaPow", diff --git a/Data/DagData.json b/Data/DagData.json index 81ee68b7..8d272119 100644 --- a/Data/DagData.json +++ b/Data/DagData.json @@ -1,79 +1,79 @@ { "Algorithm": { "Autolykos2": { - "BlockHeight": 1292685, + "BlockHeight": 1294512, "CoinName": "ERG", "DAGsize": 4118968140, - "Epoch": 857 + "Epoch": 859 }, "EtcHash": { - "BlockHeight": 20149668, + "BlockHeight": 20166092, "CoinName": "ETC", - "DAGsize": 3900702592, - "Epoch": 337 + "DAGsize": 3909087872, + "Epoch": 338 }, "Ethash": { - "BlockHeight": 19728808, + "BlockHeight": 19747052, "CoinName": "ETHW", - "DAGsize": 6601834112, - "Epoch": 659 + "DAGsize": 6610219648, + "Epoch": 660 }, "EthashB3": { - "BlockHeight": 3355196, + "BlockHeight": 3382783, "CoinName": "HYP", - "DAGsize": 2021653888, - "Epoch": 113 + "DAGsize": 2030039936, + "Epoch": 114 }, "EvrProgPow": { - "BlockHeight": 860338, + "BlockHeight": 864359, "CoinName": "EVR", - "DAGsize": 3833592704, - "Epoch": 73 + "DAGsize": 3841981568, + "Epoch": 74 }, "FiroPow": { - "BlockHeight": 909924, + "BlockHeight": 911534, "CoinName": "FIRO", - "DAGsize": 6954149248, - "Epoch": 701 + "DAGsize": 6970928768, + "Epoch": 703 }, "FiroPowSCC": { - "BlockHeight": 928257, + "BlockHeight": 930034, "CoinName": "SCC", - "DAGsize": 3489655168, - "Epoch": 288 + "DAGsize": 3498048896, + "Epoch": 289 }, "KawPow": { - "BlockHeight": 3378824, + "BlockHeight": 3382836, "CoinName": "RVN", - "DAGsize": 4865391488, - "Epoch": 452 + "DAGsize": 4873780096, + "Epoch": 453 }, "MeowPow": { - "BlockHeight": 939073, + "BlockHeight": 945137, "CoinName": "MEWC", - "DAGsize": 5335151488, - "Epoch": 127 + "DAGsize": 5368706944, + "Epoch": 128 }, "Octopus": { - "BlockHeight": 98686363, + "BlockHeight": 98871803, "CoinName": "CFX", "DAGsize": 7482636032, "Epoch": 190 }, "ProgPowSero": { - "BlockHeight": 12882357, + "BlockHeight": 12899380, "CoinName": "SERO", "DAGsize": 4689231488, "Epoch": 431 }, "ProgPowZ": { - "BlockHeight": 2689871, + "BlockHeight": 2693932, "CoinName": "ZANO", "DAGsize": 1837102976, "Epoch": 91 }, "UbqHash": { - "BlockHeight": 5432352, + "BlockHeight": 5442553, "CoinName": "UBQ", "DAGsize": 2608856192, "Epoch": 183 @@ -81,162 +81,162 @@ }, "Currency": { "*": { - "BlockHeight": 98686363, + "BlockHeight": 98871803, "CoinName": "*", "DAGsize": 7482636032, - "Epoch": 857 + "Epoch": 859 }, "AIDP": { "Algorithm": "KawPow", - "BlockHeight": 83136, + "BlockHeight": 87107, "CoinName": "AiDepin", "DAGsize": 1182786944, - "Date": "2024-06-23T08:41:13.6640354Z", + "Date": "2024-06-26T04:05:22.6778803Z", "Epoch": 13, - "Url": "https://whattomine.com/coins.json" + "Url": "https://zergpool.com/api/currencies" }, "AIPG": { "Algorithm": "KawPow", - "BlockHeight": 281947, + "BlockHeight": 285953, "CoinName": "Aipowergrid", - "DAGsize": 1400897408, - "Date": "2024-06-23T08:41:13.6791396Z", - "Epoch": 39, - "Url": "https://whattomine.com/coins.json" + "DAGsize": 1409284736, + "Date": "2024-06-26T04:05:22.6821171Z", + "Epoch": 40, + "Url": "https://zergpool.com/api/currencies" }, "AITT": { "Algorithm": "KawPow", - "BlockHeight": 644933, + "BlockHeight": 661059, "CoinName": "AittCoin", - "DAGsize": 1803550592, - "Date": "2024-06-23T08:41:13.695432Z", - "Epoch": 87, - "Url": "https://whattomine.com/coins.json" + "DAGsize": 1828711552, + "Date": "2024-06-26T04:05:22.6877482Z", + "Epoch": 90, + "Url": "https://zergpool.com/api/currencies" }, "AKA": { "Algorithm": "Ethash", "BlockHeight": 11735607, "CoinName": "AKA", "DAGsize": 4370458496, - "Date": "2024-06-23T08:41:13.8531791Z", + "Date": "2024-06-25T21:50:53.5748453Z", "Epoch": 393, "Url": "https://minerstat.com/dag-size-calculator" }, "ALT": { "Algorithm": "Ethash", - "BlockHeight": 3737054, + "BlockHeight": 3756149, "CoinName": "Altcoinchain", - "DAGsize": 2130700672, - "Date": "2024-06-23T08:41:10.3690596Z", - "Epoch": 126, + "DAGsize": 2139092608, + "Date": "2024-06-26T04:05:22.6923652Z", + "Epoch": 127, "Url": "https://zergpool.com/api/currencies" }, "ANOK": { "Algorithm": "KawPow", - "BlockHeight": 126453, + "BlockHeight": 130005, "CoinName": "Anokas", - "DAGsize": 1224732032, - "Date": "2024-06-23T08:41:13.7017021Z", - "Epoch": 18, - "Url": "https://whattomine.com/coins.json" + "DAGsize": 1233124736, + "Date": "2024-06-26T04:05:22.696485Z", + "Epoch": 19, + "Url": "https://zergpool.com/api/currencies" }, "AVS": { "Algorithm": "Ethash", - "BlockHeight": 3784700, + "BlockHeight": 3803566, "CoinName": "Aves", "DAGsize": 2147483264, - "Date": "2024-06-23T08:41:10.3864976Z", + "Date": "2024-06-26T04:05:22.7247915Z", "Epoch": 128, "Url": "https://zergpool.com/api/currencies" }, "BTN": { "Algorithm": "Ethash", - "BlockHeight": 2317472, + "BlockHeight": 2336217, "CoinName": "Bitnetmoney", "DAGsize": 1736434816, - "Date": "2024-06-23T08:41:13.7226502Z", + "Date": "2024-06-26T04:05:22.7712413Z", "Epoch": 79, - "Url": "https://whattomine.com/coins.json" + "Url": "https://zergpool.com/api/currencies" }, "CAU": { "Algorithm": "Ethash", - "BlockHeight": 4205815, + "BlockHeight": 4231580, "CoinName": "Canxium", - "DAGsize": 2264922752, - "Date": "2024-06-23T08:41:13.7310732Z", - "Epoch": 142, + "DAGsize": 2273312128, + "Date": "2024-06-25T21:50:53.4505306Z", + "Epoch": 143, "Url": "https://whattomine.com/coins.json" }, "CFX": { "Algorithm": "Octopus", - "BlockHeight": 98686363, + "BlockHeight": 98871803, "CoinName": "Conflux", "DAGsize": 7482636032, - "Date": "2024-06-23T08:41:15.0099698Z", + "Date": "2024-06-25T21:50:54.7952777Z", "Epoch": 190, "Url": "https://prohashing.com/api/v1/currencies" }, "CLO": { "Algorithm": "Ethash", - "BlockHeight": 15039376, + "BlockHeight": 15056902, "CoinName": "Callisto", "DAGsize": 5293209728, - "Date": "2024-06-23T08:41:13.742681Z", + "Date": "2024-06-25T21:50:53.4546641Z", "Epoch": 503, "Url": "https://whattomine.com/coins.json" }, "CLORE": { "Algorithm": "KawPow", - "BlockHeight": 803744, + "BlockHeight": 807756, "CoinName": "Clore", "DAGsize": 1988093056, - "Date": "2024-06-23T08:41:10.4396312Z", + "Date": "2024-06-26T04:05:53.5766269Z", "Epoch": 109, "Url": "https://zergpool.com/api/currencies" }, "CMS": { "Algorithm": "KawPow", - "BlockHeight": 118401, + "BlockHeight": 121937, "CoinName": "Cmusicai", - "DAGsize": 1216345216, - "Date": "2024-06-23T08:41:10.4431114Z", - "Epoch": 17, + "DAGsize": 1224732032, + "Date": "2024-06-26T04:05:53.5817818Z", + "Epoch": 18, "Url": "https://zergpool.com/api/currencies" }, "DINT": { "Algorithm": "KawPow", - "BlockHeight": 289196, + "BlockHeight": 293023, "CoinName": "Dinartether", - "DAGsize": 1409284736, - "Date": "2024-06-23T08:41:13.6977637Z", - "Epoch": 40, - "Url": "https://whattomine.com/coins.json" + "DAGsize": 1417673344, + "Date": "2024-06-26T04:05:53.6211085Z", + "Epoch": 41, + "Url": "https://zergpool.com/api/currencies" }, "DOGETHER": { "Algorithm": "Ethash", - "BlockHeight": 930963, + "BlockHeight": 943139, "CoinName": "Dogether", "DAGsize": 1350561664, - "Date": "2024-06-23T08:41:13.7341844Z", + "Date": "2024-06-25T21:50:53.448466Z", "Epoch": 33, "Url": "https://whattomine.com/coins.json" }, "EGAZ": { "Algorithm": "EtcHash", - "BlockHeight": 5343570, + "BlockHeight": 5360576, "CoinName": "Etica", "DAGsize": 2583686528, - "Date": "2024-06-23T08:41:13.7076096Z", + "Date": "2024-06-25T21:50:53.4339753Z", "Epoch": 180, "Url": "https://whattomine.com/coins.json" }, "EGEM": { "Algorithm": "Ethash", - "BlockHeight": 15837399, + "BlockHeight": 15854215, "CoinName": "Ethergem", - "DAGsize": 5511315328, - "Date": "2024-06-23T08:41:13.7396802Z", - "Epoch": 529, + "DAGsize": 5519703424, + "Date": "2024-06-25T21:50:53.4257723Z", + "Epoch": 530, "Url": "https://whattomine.com/coins.json" }, "ELH": { @@ -250,11 +250,11 @@ }, "ERG": { "Algorithm": "Autolykos2", - "BlockHeight": 1292685, + "BlockHeight": 1294512, "CoinName": "Ergo", "DAGsize": 4118968140, - "Date": "2024-06-23T08:41:14.9978479Z", - "Epoch": 857, + "Date": "2024-06-25T21:50:54.7877797Z", + "Epoch": 859, "Url": "https://prohashing.com/api/v1/currencies" }, "ESN": { @@ -262,17 +262,17 @@ "BlockHeight": 6408009, "CoinName": "Ethersocial", "DAGsize": 2877286784, - "Date": "2024-06-23T08:41:13.8642914Z", + "Date": "2024-06-25T21:50:53.585805Z", "Epoch": 215, "Url": "https://minerstat.com/dag-size-calculator" }, "ETC": { "Algorithm": "EtcHash", - "BlockHeight": 20149668, + "BlockHeight": 20166092, "CoinName": "EthereumClassic", - "DAGsize": 3900702592, - "Date": "2024-06-23T08:41:13.7271643Z", - "Epoch": 337, + "DAGsize": 3909087872, + "Date": "2024-06-25T21:50:53.4387304Z", + "Epoch": 338, "Url": "https://whattomine.com/coins.json" }, "ETHF": { @@ -286,21 +286,21 @@ }, "ETHO": { "Algorithm": "Ethash", - "BlockHeight": 14333723, + "BlockHeight": 14350148, "CoinName": "EthoProtocol", - "DAGsize": 5091883904, - "Date": "2024-06-23T08:41:13.7371091Z", - "Epoch": 479, + "DAGsize": 5100273536, + "Date": "2024-06-25T21:50:53.442725Z", + "Epoch": 480, "Url": "https://whattomine.com/coins.json" }, "ETHW": { "Algorithm": "Ethash", - "BlockHeight": 19728808, + "BlockHeight": 19747052, "CoinName": "EthereumPow", - "DAGsize": 6601834112, - "Date": "2024-06-23T08:41:13.7107994Z", - "Epoch": 659, - "Url": "https://whattomine.com/coins.json" + "DAGsize": 6610219648, + "Date": "2024-06-26T04:05:53.6432914Z", + "Epoch": 660, + "Url": "https://zergpool.com/api/currencies" }, "ETNT": { "Algorithm": "Ethash", @@ -313,20 +313,20 @@ }, "ETP": { "Algorithm": "Ethash", - "BlockHeight": 9636881, + "BlockHeight": 9647259, "CoinName": "Metaverse", "DAGsize": 3783260032, - "Date": "2024-06-23T08:41:13.8581303Z", + "Date": "2024-06-25T21:50:53.5774375Z", "Epoch": 323, "Url": "https://minerstat.com/dag-size-calculator" }, "EVR": { "Algorithm": "EvrProgPow", - "BlockHeight": 860338, + "BlockHeight": 864359, "CoinName": "Evrmore", - "DAGsize": 3833592704, - "Date": "2024-06-23T08:41:10.4882012Z", - "Epoch": 73, + "DAGsize": 3841981568, + "Date": "2024-06-26T04:05:53.6551633Z", + "Epoch": 74, "Url": "https://zergpool.com/api/currencies" }, "EXP": { @@ -340,37 +340,37 @@ }, "FIRO": { "Algorithm": "FiroPow", - "BlockHeight": 909924, + "BlockHeight": 911534, "CoinName": "Firo", - "DAGsize": 6954149248, - "Date": "2024-06-23T08:41:13.6891842Z", - "Epoch": 701, - "Url": "https://whattomine.com/coins.json" + "DAGsize": 6970928768, + "Date": "2024-06-26T04:05:53.6661439Z", + "Epoch": 703, + "Url": "https://zergpool.com/api/currencies" }, "FLORA": { "Algorithm": "Ethash", "BlockHeight": 789635, "CoinName": "", "DAGsize": 1308619904, - "Date": "2024-06-23T08:41:13.8902951Z", + "Date": "2024-06-25T21:50:53.6051655Z", "Epoch": 28, "Url": "https://minerstat.com/dag-size-calculator" }, "FREN": { "Algorithm": "KawPow", - "BlockHeight": 1178354, + "BlockHeight": 1186411, "CoinName": "FrenCoin", - "DAGsize": 2407530368, - "Date": "2024-06-23T08:41:13.6674549Z", - "Epoch": 159, - "Url": "https://whattomine.com/coins.json" + "DAGsize": 2415918976, + "Date": "2024-06-26T04:05:53.6820879Z", + "Epoch": 160, + "Url": "https://zergpool.com/api/currencies" }, "GPN": { "Algorithm": "KawPow", - "BlockHeight": 601399, + "BlockHeight": 605389, "CoinName": "Gamepass", "DAGsize": 1761606272, - "Date": "2024-06-23T08:41:10.5283362Z", + "Date": "2024-06-26T04:02:51.9711917Z", "Epoch": 82, "Url": "https://zergpool.com/api/currencies" }, @@ -385,28 +385,28 @@ }, "HYP": { "Algorithm": "EthashB3", - "BlockHeight": 3355196, + "BlockHeight": 3382783, "CoinName": "Hypra", - "DAGsize": 2021653888, - "Date": "2024-06-23T08:41:10.5429582Z", - "Epoch": 113, + "DAGsize": 2030039936, + "Date": "2024-06-26T04:02:51.9942978Z", + "Epoch": 114, "Url": "https://zergpool.com/api/currencies" }, "KIIRO": { "Algorithm": "FiroPow", - "BlockHeight": 195172, + "BlockHeight": 196680, "CoinName": "KiiroCoin", - "DAGsize": 2348808064, - "Date": "2024-06-23T08:41:13.6918472Z", - "Epoch": 152, - "Url": "https://whattomine.com/coins.json" + "DAGsize": 2357196416, + "Date": "2024-06-26T03:54:43.1459134Z", + "Epoch": 153, + "Url": "https://zergpool.com/api/currencies" }, "LRS": { "Algorithm": "Ethash", - "BlockHeight": 1087365, + "BlockHeight": 1104409, "CoinName": "Larissa", "DAGsize": 1392507008, - "Date": "2024-06-23T08:41:13.7248421Z", + "Date": "2024-06-25T21:50:53.4360649Z", "Epoch": 38, "Url": "https://whattomine.com/coins.json" }, @@ -421,46 +421,46 @@ }, "MEWC": { "Algorithm": "MeowPow", - "BlockHeight": 939073, + "BlockHeight": 945137, "CoinName": "MeowCoin", - "DAGsize": 5335151488, - "Date": "2024-06-21T22:16:47.2531403Z", - "Epoch": 127, + "DAGsize": 5368706944, + "Date": "2024-06-26T04:06:04.4358947Z", + "Epoch": 128, "Url": "https://mewc.cryptoscope.io/api/getblockcount" }, "MOAC": { "Algorithm": "Ethash", - "BlockHeight": 13864362, + "BlockHeight": 13883264, "CoinName": "", "DAGsize": 4966054784, - "Date": "2024-06-23T08:41:13.8495219Z", + "Date": "2024-06-25T21:50:53.5716903Z", "Epoch": 464, "Url": "https://minerstat.com/dag-size-calculator" }, "NEOX": { "Algorithm": "KawPow", - "BlockHeight": 1096936, + "BlockHeight": 1100948, "CoinName": "Neoxa", "DAGsize": 2315251072, - "Date": "2024-06-23T08:41:13.647494Z", + "Date": "2024-06-26T04:02:52.0732209Z", "Epoch": 148, - "Url": "https://whattomine.com/coins.json" + "Url": "https://zergpool.com/api/currencies" }, "NILU": { "Algorithm": "Ethash", "BlockHeight": 6244699, "CoinName": "", "DAGsize": 2835349376, - "Date": "2024-06-23T08:41:13.8659957Z", + "Date": "2024-06-25T21:50:53.5876424Z", "Epoch": 210, "Url": "https://minerstat.com/dag-size-calculator" }, "NIR": { "Algorithm": "ProgPowZ", - "BlockHeight": 454468, + "BlockHeight": 461888, "CoinName": "Nirmata", "DAGsize": 1216345216, - "Date": "2024-06-23T08:41:13.6310554Z", + "Date": "2024-06-25T21:50:53.3626671Z", "Epoch": 17, "Url": "https://whattomine.com/coins.json" }, @@ -469,27 +469,27 @@ "BlockHeight": 8848535, "CoinName": "", "DAGsize": 3556763264, - "Date": "2024-06-23T08:41:13.8612423Z", + "Date": "2024-06-25T21:50:53.5805615Z", "Epoch": 296, "Url": "https://minerstat.com/dag-size-calculator" }, "OCTA": { "Algorithm": "Ethash", - "BlockHeight": 4906791, + "BlockHeight": 4925577, "CoinName": "Octaspace", - "DAGsize": 2457861248, - "Date": "2024-06-23T08:41:13.718483Z", - "Epoch": 165, - "Url": "https://whattomine.com/coins.json" + "DAGsize": 2466247808, + "Date": "2024-06-26T04:03:22.9657437Z", + "Epoch": 166, + "Url": "https://zergpool.com/api/currencies" }, "PAPRY": { "Algorithm": "KawPow", - "BlockHeight": 701326, + "BlockHeight": 705316, "CoinName": "Paprika", - "DAGsize": 1870656896, - "Date": "2024-06-23T08:41:13.6453574Z", - "Epoch": 95, - "Url": "https://whattomine.com/coins.json" + "DAGsize": 1879048064, + "Date": "2024-06-26T04:03:22.987384Z", + "Epoch": 96, + "Url": "https://zergpool.com/api/currencies" }, "PGC": { "Algorithm": "Ethash", @@ -502,29 +502,29 @@ }, "PRCO": { "Algorithm": "KawPow", - "BlockHeight": 1066320, + "BlockHeight": 1070335, "CoinName": "ProcyonCoin", "DAGsize": 2281701248, - "Date": "2024-06-23T08:41:10.6258699Z", + "Date": "2024-06-26T04:03:23.0074364Z", "Epoch": 144, "Url": "https://zergpool.com/api/currencies" }, "QKC": { "Algorithm": "Ethash", - "BlockHeight": 16574741, + "BlockHeight": 16597029, "CoinName": "Quarkchain", - "DAGsize": 5721030272, - "Date": "2024-06-23T08:41:13.7154694Z", - "Epoch": 554, + "DAGsize": 5729416832, + "Date": "2024-06-25T21:50:53.4462304Z", + "Epoch": 555, "Url": "https://whattomine.com/coins.json" }, "REDE": {}, "REDEV2": { "Algorithm": "Ethash", - "BlockHeight": 2437297, + "BlockHeight": 2455679, "CoinName": "Redev2", "DAGsize": 1769995904, - "Date": "2024-06-23T08:41:10.6406195Z", + "Date": "2024-06-26T04:03:53.147409Z", "Epoch": 83, "Url": "https://zergpool.com/api/currencies" }, @@ -539,37 +539,37 @@ }, "RVN": { "Algorithm": "KawPow", - "BlockHeight": 3378824, + "BlockHeight": 3382836, "CoinName": "RavenCoin", - "DAGsize": 4865391488, - "Date": "2024-06-23T08:41:15.0078001Z", - "Epoch": 452, - "Url": "https://prohashing.com/api/v1/currencies" + "DAGsize": 4873780096, + "Date": "2024-06-26T04:03:53.2140227Z", + "Epoch": 453, + "Url": "https://zergpool.com/api/currencies" }, "SATOX": { "Algorithm": "KawPow", - "BlockHeight": 752279, + "BlockHeight": 756290, "CoinName": "Sato", "DAGsize": 1929379456, - "Date": "2024-06-23T08:41:13.6580299Z", + "Date": "2024-06-26T04:03:53.2345847Z", "Epoch": 102, - "Url": "https://whattomine.com/coins.json" + "Url": "https://zergpool.com/api/currencies" }, "SCC": { "Algorithm": "FiroPowSCC", - "BlockHeight": 928257, + "BlockHeight": 930034, "CoinName": "Stakecube", - "DAGsize": 3489655168, - "Date": "2024-06-23T08:41:15.0998698Z", - "Epoch": 288, + "DAGsize": 3498048896, + "Date": "2024-06-25T21:50:54.8792542Z", + "Epoch": 289, "Url": "https://www.coinexplorer.net/api/v1/SCC/getblockcount" }, "SERO": { "Algorithm": "ProgPowSero", - "BlockHeight": 12882357, + "BlockHeight": 12899380, "CoinName": "Sero", "DAGsize": 4689231488, - "Date": "2024-06-23T08:41:13.6764868Z", + "Date": "2024-06-25T21:50:53.398309Z", "Epoch": 431, "Url": "https://whattomine.com/coins.json" }, @@ -584,30 +584,30 @@ }, "UBQ": { "Algorithm": "UbqHash", - "BlockHeight": 5432352, + "BlockHeight": 5442553, "CoinName": "Ubiq", "DAGsize": 2608856192, - "Date": "2024-06-23T08:41:13.8679256Z", + "Date": "2024-06-25T21:50:53.5894244Z", "Epoch": 183, "Url": "https://minerstat.com/dag-size-calculator" }, "VLC": { "Algorithm": "KawPow", - "BlockHeight": 174771, + "BlockHeight": 178334, "CoinName": "Vultaic", "DAGsize": 1283453312, - "Date": "2024-06-23T08:41:13.7047371Z", + "Date": "2024-06-26T04:04:53.8682235Z", "Epoch": 25, - "Url": "https://whattomine.com/coins.json" + "Url": "https://zergpool.com/api/currencies" }, "XNA": { "Algorithm": "KawPow", - "BlockHeight": 618030, + "BlockHeight": 622035, "CoinName": "Neurai", "DAGsize": 1778382464, - "Date": "2024-06-23T08:41:13.6551608Z", + "Date": "2024-06-26T04:04:53.9072803Z", "Epoch": 84, - "Url": "https://whattomine.com/coins.json" + "Url": "https://zergpool.com/api/currencies" }, "XPB": { "Algorithm": "Ethash", @@ -620,21 +620,21 @@ }, "ZANO": { "Algorithm": "ProgPowZ", - "BlockHeight": 2689871, + "BlockHeight": 2693932, "CoinName": "Zano", "DAGsize": 1837102976, - "Date": "2024-06-23T08:41:10.74194Z", + "Date": "2024-06-26T04:04:53.9322074Z", "Epoch": 91, "Url": "https://zergpool.com/api/currencies" } }, "Updated": { - "https://evr.cryptoscope.io/api/getblockcount": "2024-06-21T22:16:46.9891493Z", - "https://mewc.cryptoscope.io/api/getblockcount": "2024-06-21T22:16:47.2535552Z", - "https://minerstat.com/dag-size-calculator": "2024-06-23T08:41:13.9105537Z", - "https://prohashing.com/api/v1/currencies": "2024-06-23T08:41:15.0103085Z", - "https://whattomine.com/coins.json": "2024-06-23T08:41:13.7446086Z", - "https://www.coinexplorer.net/api/v1/SCC/getblockcount": "2024-06-23T08:41:15.1003967Z", - "https://zergpool.com/api/currencies": "2024-06-23T08:41:10.7422739Z" + "https://evr.cryptoscope.io/api/getblockcount": "2024-06-25T13:28:03.6321068Z", + "https://mewc.cryptoscope.io/api/getblockcount": "2024-06-26T04:06:04.4365562Z", + "https://minerstat.com/dag-size-calculator": "2024-06-25T21:50:53.6255517Z", + "https://prohashing.com/api/v1/currencies": "2024-06-25T21:50:54.795669Z", + "https://whattomine.com/coins.json": "2024-06-25T21:50:53.4560482Z", + "https://www.coinexplorer.net/api/v1/SCC/getblockcount": "2024-06-25T21:50:54.8796243Z", + "https://zergpool.com/api/currencies": "2024-06-26T04:05:53.6825217Z" } } diff --git a/Includes/APIServer.psm1 b/Includes/APIServer.psm1 index f3a4af1b..5b066e15 100644 --- a/Includes/APIServer.psm1 +++ b/Includes/APIServer.psm1 @@ -19,7 +19,7 @@ along with this program. If not, see . Product: UG-Miner File: \Includes\APIServer.psm1 Version: 6.2.5 -Version date: 2024/06/23 +Version date: 2024/06/26 #> Function Start-APIServer { @@ -775,7 +775,7 @@ Function Start-APIServer { Break } "/devices" { - $Data = ConvertTo-Json -Depth 10 @($Variables.Devices | Select-Object | Sort-Object -Property Name) + $Data = ConvertTo-Json -Depth 10 @($Variables.Devices | Sort-Object -Property Name) Break } "/devices/enabled" { @@ -891,27 +891,27 @@ Function Start-APIServer { Break } "/pools" { - $Data = ConvertTo-Json -Depth 10 @($Variables.Pools | Select-Object | Sort-Object -Property Algorithm, Name, Region) + $Data = ConvertTo-Json -Depth 10 @($Variables.Pools | Sort-Object -Property Algorithm, Name, Region) Break } "/pools/added" { - $Data = ConvertTo-Json -Depth 10 @($Variables.PoolsAdded | Select-Object | Sort-Object -Property Algorithm, Name, Region) + $Data = ConvertTo-Json -Depth 10 @($Variables.PoolsAdded | Sort-Object -Property Algorithm, Name, Region) Break } "/pools/available" { - $Data = ConvertTo-Json -Depth 10 @($Variables.Pools.Where({ $_.Available }) | Select-Object | Sort-Object -Property Algorithm, Name, Region) + $Data = ConvertTo-Json -Depth 10 @($Variables.Pools.Where({ $_.Available }) | Sort-Object -Property Algorithm, Name, Region) Break } "/pools/best" { - $Data = ConvertTo-Json -Depth 10 @($Variables.PoolsBest | Select-Object | Sort-Object -Property Algorithm, Name, Region) + $Data = ConvertTo-Json -Depth 10 @($Variables.PoolsBest | Sort-Object -Property Algorithm, Name, Region) Break } "/pools/expired" { - $Data = ConvertTo-Json -Depth 10 @($Variables.PoolsExpired | Select-Object | Sort-Object -Property Algorithm, Name, Region) + $Data = ConvertTo-Json -Depth 10 @($Variables.PoolsExpired | Sort-Object -Property Algorithm, Name, Region) Break } "/pools/new" { - $Data = ConvertTo-Json -Depth 10 @($Variables.PoolsNew | Select-Object | Sort-Object -Property Algorithm, Name, Region) + $Data = ConvertTo-Json -Depth 10 @($Variables.PoolsNew | Sort-Object -Property Algorithm, Name, Region) Break } "/pools/minersprimaryalgorithm" { @@ -935,7 +935,7 @@ Function Start-APIServer { Break } "/pools/updated" { - $Data = ConvertTo-Json -Depth 10 @($Variables.PoolsUpdated | Select-Object | Sort-Object -Property Algorithm, Name, Region) + $Data = ConvertTo-Json -Depth 10 @($Variables.PoolsUpdated | Sort-Object -Property Algorithm, Name, Region) Break } "/poolreasons" { @@ -1007,7 +1007,7 @@ Function Start-APIServer { @{ Name = "Algorithm"; Expression = { ($_.data.ForEach({ $_.Algorithm -split ',' -join ' & ' })) -join '
' } }, @{ Name = "Benchmark Hashrate"; Expression = { ($_.data.ForEach({ ($_.EstimatedSpeed.ForEach({ If ([Double]$_ -gt 0) { "$($_ | ConvertTo-Hash)/s" -replace '\s+', ' ' } Else { "-" } })) -join ' & ' })) -join '
' } }, @{ Name = "Currency"; Expression = { $_.Data.Currency | Select-Object -Unique } }, - @{ Name = "EstimatedEarning"; Expression = { [Decimal](($_.Data.Earning | Measure-Object -Sum | Select-Object -ExpandProperty Sum) * $Variables.Rates.BTC.($_.Data.Currency | Select-Object -Unique)) } }, + @{ Name = "EstimatedEarning"; Expression = { [Decimal](($_.Data.Earning | Measure-Object -Sum).Sum * $Variables.Rates.BTC.($_.Data.Currency | Select-Object -Unique)) } }, @{ Name = "EstimatedProfit"; Expression = { [Decimal]($_.Profit * $Variables.Rates.BTC.($_.Data.Currency | Select-Object -Unique)) } }, @{ Name = "LastSeen"; Expression = { "$($_.date)" } }, @{ Name = "Live Hashrate"; Expression = { ($_.data.ForEach({ ($_.CurrentSpeed.ForEach({ If ([Double]$_ -gt 0) { "$($_ | ConvertTo-Hash)/s" -replace '\s+', ' ' } Else { '-' } })) -join ' & ' })) -join '
' } }, diff --git a/Includes/BalancesTracker.ps1 b/Includes/BalancesTracker.ps1 index f754d070..4095f796 100644 --- a/Includes/BalancesTracker.ps1 +++ b/Includes/BalancesTracker.ps1 @@ -19,8 +19,8 @@ along with this program. If not, see . <# Product: UG-Miner File: \Includes\BalancesTracker.ps1 -Version: 6.2.11 -Version date: 2024/06/23 +Version: 6.2.12 +Version date: 2024/06/26 #> using module .\Include.psm1 @@ -371,7 +371,7 @@ Do { } Remove-Variable PoolEarnings, PoolTodaysEarning -ErrorAction Ignore - $EarningsChartData = [PSCustomObject]@{ + $LegacyGUIearningsChartData = [PSCustomObject]@{ Labels = @( ($ChartData.Group.Date | Sort-Object -Unique).ForEach( { @@ -385,7 +385,7 @@ Do { Remove-Variable PoolChartData -ErrorAction Ignore $Variables.Remove("EarningsChartData") - $Variables.EarningsChartData = $EarningsChartData.PSObject.Copy() + $Variables.EarningsChartData = $LegacyGUIearningsChartData.PSObject.Copy() $Variables.EarningsChartData | ConvertTo-Json | Out-File -LiteralPath ".\Data\EarningsChartData.json" -Force -ErrorAction Ignore # Keep earnings for max. 1 year diff --git a/Includes/Core.ps1 b/Includes/Core.ps1 index 4fcc48d5..dc6b600b 100644 --- a/Includes/Core.ps1 +++ b/Includes/Core.ps1 @@ -19,8 +19,8 @@ along with this program. If not, see . <# Product: UG-Miner File: Core.ps1 -Version: 6.2.11 -Version date: 2024/06/23 +Version: 6.2.12 +Version date: 2024/06/26 #> using module .\Include.psm1 @@ -618,16 +618,16 @@ Do { Remove-Variable WatchdogTimer, Worker -ErrorAction Ignore } If ($Config.BadShareRatioThreshold -gt 0) { - If ($LatestMinerSharesData = ($Miner.Data | Select-Object -Last 1).Shares) { + If ($MinerData = ($Miner.Data | Select-Object -Last 1).Shares) { ForEach ($Algorithm in $Miner.Algorithms) { - If ($LatestMinerSharesData.$Algorithm -and $LatestMinerSharesData.$Algorithm[1] -gt 0 -and $LatestMinerSharesData.$Algorithm[3] -gt [Math]::Floor(1 / $Config.BadShareRatioThreshold) -and $LatestMinerSharesData.$Algorithm[1] / $LatestMinerSharesData.$Algorithm[3] -gt $Config.BadShareRatioThreshold) { - $Miner.StatusInfo = "'$($Miner.Info)' stopped. Too many bad shares (Shares Total = $($LatestMinerSharesData.$Algorithm[3]), Rejected = $($LatestMinerSharesData.$Algorithm[1]))" + If ($MinerData.$Algorithm -and $MinerData.$Algorithm[1] -gt 0 -and $MinerData.$Algorithm[3] -gt [Math]::Floor(1 / $Config.BadShareRatioThreshold) -and $MinerData.$Algorithm[1] / $MinerData.$Algorithm[3] -gt $Config.BadShareRatioThreshold) { + $Miner.StatusInfo = "'$($Miner.Info)' stopped. Too many bad shares (Shares Total = $($MinerData.$Algorithm[3]), Rejected = $($MinerData.$Algorithm[1]))" $Miner.SetStatus([MinerStatus]::Failed) $Variables.Devices.Where({ $_.Name -in $Miner.DeviceNames }).ForEach({ $_.Status = $Miner.Status; $_.StatusInfo = $Miner.StatusInfo; $_.SubStatus = $Miner.SubStatus }) } } } - Remove-Variable Algorithm, LatestMinerSharesData -ErrorAction Ignore + Remove-Variable Algorithm, MinerData -ErrorAction Ignore } } Else { @@ -663,9 +663,9 @@ Do { ForEach ($Worker in $Miner.Workers) { $Algorithm = $Worker.Pool.Algorithm - $LatestMinerSharesData = ($Miner.Data[-1]).Shares - If ($Miner.Data.Count -gt $Miner.MinDataSample -and -not $Miner.Benchmark -and $Config.SubtractBadShares -and $LatestMinerSharesData.$Algorithm -gt 0) { # Need $Miner.MinDataSample shares before adjusting hashrate - $Factor = (1 - $LatestMinerSharesData.$Algorithm[1] / $LatestMinerSharesData.$Algorithm[3]) + $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 { @@ -674,7 +674,7 @@ Do { $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 total: $($LatestMinerSharesData.$Algorithm[2]), rejected: $($LatestMinerSharesData.$Algorithm[1])])" })$(If ($Miner.Benchmark) { " [Benchmark done] ($($Miner.Data.Count) Sample$(If ($Miner.Data.Count -ne 1) { "s" }))" })." + 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 total: $($MinerData.$Algorithm[2]), rejected: $($MinerData.$Algorithm[1])])" })$(If ($Miner.Benchmark) { " [Benchmark done] ($($Miner.Data.Count) Sample$(If ($Miner.Data.Count -ne 1) { "s" }))" })." $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 @@ -705,7 +705,7 @@ Do { } } } - Remove-Variable Algorithm, CollectedHashrateFactor, CollectedPowerConsumption, LatestMinerSharesData, Miner_Hashrates, Miner_PowerConsumption, Stat, Stat_Name, Stat_Span, Worker -ErrorAction Ignore + Remove-Variable Algorithm, CollectedHashrateFactor, CollectedPowerConsumption, MinerData, MinerHashrates, MinerPowerConsumption, Stat, StatName, StatSpan, Worker -ErrorAction Ignore } } Remove-Variable Miner -ErrorAction Ignore @@ -860,6 +860,7 @@ Do { } } ) + Remove-Variable ReasonableEarning -ErrorAction Ignore } $Bias = If ($Variables.CalculatePowerCost -and -not $Config.IgnorePowerCost) { "Profit_Bias" } Else { "Earning_Bias" } @@ -978,13 +979,13 @@ Do { 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..." - $Downloader_Parameters = @{ + $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 $Downloader_Parameters -ThrottleLimit (2 * $Variables.Devices.Count + 2) - Remove-Variable Downloader_Parameters + $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 } ElseIf (-not $Miners.Where({ $_.Available })) { Write-Message -Level Info "Waiting 30 seconds for downloader to install binaries..." @@ -1042,7 +1043,7 @@ Do { Remove-Variable DeviceNames, MinerDeviceNamesCombinations -ErrorAction Ignore # Get smallest $Bias - # Hack: Temporarily make all bias -ge 0 by adding smallest bias, following produces wrong sort order when some profits are negative + # 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) @@ -1050,15 +1051,15 @@ Do { # 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 | Select-Object -ExpandProperty Sum)), 0 | Measure-Object -Maximum).Maximum + $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.MainCurrency)) - $Variables.MiningEarning = [Double]($MinersBest | Measure-Object Earning_Bias -Sum | Select-Object -ExpandProperty Sum) - $Variables.MiningPowerCost = [Double]($MinersBest | Measure-Object PowerCost -Sum | Select-Object -ExpandProperty Sum) - $Variables.MiningPowerConsumption = [Double]($MinersBest | Measure-Object PowerConsumption -Sum | Select-Object -ExpandProperty Sum) - $Variables.MiningProfit = [Double](($MinersBest | Measure-Object Profit_Bias -Sum | Select-Object -ExpandProperty Sum) - $Variables.BasePowerCost) + $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 @@ -1066,6 +1067,7 @@ Do { $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) @@ -1145,7 +1147,7 @@ Do { } } - If (-not $MinersBest -and $Miners) { $Miners.ForEach({ $_.Best = $false }) } + If (-not $MinersBest) { $Miners.ForEach({ $_.Best = $false }) } # Stop running miners ForEach ($Miner in @($Miners.Where({ $_.Status -in @([MinerStatus]::DryRun, [MinerStatus]::Running) }) | Sort-Object { [String]$_.DeviceNames })) { @@ -1166,8 +1168,8 @@ Do { $Variables.WatchdogTimers = @($Variables.WatchdogTimers.Where({ $_ -notin $WatchdogTimers })) } } - Remove-Variable WatchdogTimers, Worker -ErrorAction Ignore $Miner.SetStatus([MinerStatus]::Idle) + Remove-Variable WatchdogTimers, Worker -ErrorAction Ignore } } $Variables.Devices.Where({ $_.Name -in $Miner.DeviceNames }).ForEach({ $_.Status = $Miner.Status; $_.StatusInfo = $Miner.StatusInfo; $_.SubStatus = $Miner.SubStatus }) @@ -1494,13 +1496,6 @@ Do { # - when not benchmnarking: Interval time is over } While ($Variables.NewMiningStatus -eq "Running" -and -not $Variables.EndCycleMessage -and ([DateTime]::Now.ToUniversalTime() -le $Variables.EndCycleTime -or $Variables.BenchmarkingOrMeasuringMiners)) - 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 - # Expire brains loop to collect data If ($Variables.EndCycleMessage) { $Variables.EndCycleTime = [DateTime]::Now.ToUniversalTime() @@ -1539,11 +1534,4 @@ ForEach ($Miner in $Variables.Miners.Where({ $_.Status -in @([MinerStatus]::DryR } Remove-Variable Miner -ErrorAction Ignore -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 - If ($Variables.IdleDetectionRunspace.MiningStatus -ne "Suspended") { Write-Message -Level Info "Ending cycle$($Variables.EndCycleMessage)." } \ No newline at end of file diff --git a/Includes/Downloader.ps1 b/Includes/Downloader.ps1 index ccdbe253..155f26dd 100644 --- a/Includes/Downloader.ps1 +++ b/Includes/Downloader.ps1 @@ -18,8 +18,8 @@ along with this program. If not, see . <# Product: UG-Miner File: \Includes\Downloader.ps1 -Version: 6.2.11 -Version date: 2024/06/23 +Version: 6.2.12 +Version date: 2024/06/26 #> using module .\Includes\Include.psm1 diff --git a/Includes/Include.psm1 b/Includes/Include.psm1 index 2262e1e1..72d455ec 100644 --- a/Includes/Include.psm1 +++ b/Includes/Include.psm1 @@ -18,8 +18,8 @@ along with this program. If not, see . <# Product: UG-Miner File: \Includes\include.ps1 -Version: 6.2.11 -Version date: 2024/06/23 +Version: 6.2.12 +Version date: 2024/06/26 #> $Global:DebugPreference = "SilentlyContinue" diff --git a/Includes/LegacyGUI.ps1 b/Includes/LegacyGUI.ps1 index b5f900d8..79dbbe07 100644 --- a/Includes/LegacyGUI.ps1 +++ b/Includes/LegacyGUI.ps1 @@ -18,8 +18,8 @@ along with this program. If not, see . <# Product: UG-Miner File: \Includes\LegacyGUI.psm1 -Version: 6.2.11 -Version date: 2024/06/23 +Version: 6.2.12 +Version date: 2024/06/26 #> [Void][System.Reflection.Assembly]::Load("System.Windows.Forms") @@ -37,16 +37,16 @@ public class ProcessDPI { $null = [ProcessDPI]::SetProcessDPIAware() [System.Windows.Forms.Application]::EnableVisualStyles() -$Colors = @{ } -$Colors["benchmarking"] = [System.Drawing.Color]::FromArgb(241, 255, 229) -$Colors["disabled"] = [System.Drawing.Color]::FromArgb(255, 243, 231) -$Colors["failed"] = [System.Drawing.Color]::FromArgb(255, 230, 230) -$Colors["idle"] = $Colors["stopped"] = [System.Drawing.Color]::FromArgb(230, 248, 252) -$Colors["launched"] = [System.Drawing.Color]::FromArgb(229, 255, 229) -$Colors["running"] = [System.Drawing.Color]::FromArgb(212, 244, 212) -$Colors["starting"] = $Colors["stopping"] = [System.Drawing.Color]::FromArgb(245, 255, 245) -$Colors["unavailable"] = [System.Drawing.Color]::FromArgb(254, 245, 220) -$Colors["warmingup"] = [System.Drawing.Color]::FromArgb(231, 255, 230) +$LegacyGUIcolors = @{ } +$LegacyGUIcolors["benchmarking"] = [System.Drawing.Color]::FromArgb(241, 255, 229) +$LegacyGUIcolors["disabled"] = [System.Drawing.Color]::FromArgb(255, 243, 231) +$LegacyGUIcolors["failed"] = [System.Drawing.Color]::FromArgb(255, 230, 230) +$LegacyGUIcolors["idle"] = $LegacyGUIcolors["stopped"] = [System.Drawing.Color]::FromArgb(230, 248, 252) +$LegacyGUIcolors["launched"] = [System.Drawing.Color]::FromArgb(229, 255, 229) +$LegacyGUIcolors["running"] = [System.Drawing.Color]::FromArgb(212, 244, 212) +$LegacyGUIcolors["starting"] = $LegacyGUIcolors["stopping"] = [System.Drawing.Color]::FromArgb(245, 255, 245) +$LegacyGUIcolors["unavailable"] = [System.Drawing.Color]::FromArgb(254, 245, 220) +$LegacyGUIcolors["warmingup"] = [System.Drawing.Color]::FromArgb(231, 255, 230) Function Set-TableColor { @@ -56,8 +56,8 @@ Function Set-TableColor { ) If ($Config.UseColorForMinerStatus) { ForEach ($Row in $DataGridView.Rows) { - If ($Colors[$Row.DataBoundItem.SubStatus]) { - $Row.DefaultCellStyle.Backcolor = $Colors[$Row.DataBoundItem.SubStatus] + If ($LegacyGUIcolors[$Row.DataBoundItem.SubStatus]) { + $Row.DefaultCellStyle.Backcolor = $LegacyGUIcolors[$Row.DataBoundItem.SubStatus] } } } @@ -65,11 +65,11 @@ Function Set-TableColor { Function Set-WorkerColor { If ($Config.UseColorForMinerStatus) { - ForEach ($Row in $WorkersDGV.Rows) { + ForEach ($Row in $LegacyGUIworkersDGV.Rows) { $Row.DefaultCellStyle.Backcolor = Switch ($Row.DataBoundItem.Status) { - "Offline" { $Colors["disabled"] } - "Paused" { $Colors["idle"] } - "Running" { $Colors["running"] } + "Offline" { $LegacyGUIcolors["disabled"] } + "Paused" { $LegacyGUIcolors["idle"] } + "Running" { $LegacyGUIcolors["running"] } Default { [System.Drawing.Color]::FromArgb(255, 255, 255, 255) } } } @@ -78,35 +78,35 @@ Function Set-WorkerColor { Function CheckBoxSwitching_Click { - $LegacyGUIForm.Cursor = [System.Windows.Forms.Cursors]::WaitCursor + $LegacyGUIform.Cursor = [System.Windows.Forms.Cursors]::WaitCursor $SwitchingDisplayTypes = @() - $SwitchingPageControls.ForEach({ If ($_.Checked) { $SwitchingDisplayTypes += $_.Tag } }) + $LegacyGUIswitchingPageControls.ForEach({ If ($_.Checked) { $SwitchingDisplayTypes += $_.Tag } }) If (Test-Path -LiteralPath ".\Logs\SwitchingLog.csv" -PathType Leaf) { - $SwitchingLogLabel.Text = "Switching log updated $((Get-ChildItem -Path ".\Logs\SwitchingLog.csv").LastWriteTime.ToString())" - $SwitchingDGV.DataSource = ((Get-Content ".\Logs\SwitchingLog.csv" | ConvertFrom-Csv).Where({ $_.Type -in $SwitchingDisplayTypes }) | Select-Object -Last 1000).ForEach({ $_.Datetime = (Get-Date $_.DateTime); $_ }) | Sort-Object DateTime -Descending | Select-Object @("DateTime", "Action", "Name", "Pools", "Algorithms", "Accounts", "Cycle", "Duration", "DeviceNames", "Type") | Out-DataTable - If ($SwitchingDGV.Columns) { - $SwitchingDGV.Columns[0].FillWeight = 50 - $SwitchingDGV.Columns[1].FillWeight = 50 - $SwitchingDGV.Columns[2].FillWeight = 90; $SwitchingDGV.Columns[2].HeaderText = "Miner" - $SwitchingDGV.Columns[3].FillWeight = 60 + ($SwitchingDGV.MinersBest_Combo.ForEach({ $_.Pools.Count }) | Measure-Object -Maximum).Maximum * 40; $SwitchingDGV.Columns[3].HeaderText = "Pool" - $SwitchingDGV.Columns[4].FillWeight = 50 + ($SwitchingDGV.MinersBest_Combo.ForEach({ $_.Algorithms.Count }) | Measure-Object -Maximum).Maximum * 25; $SwitchingDGV.Columns[4].HeaderText = "Algorithm (variant)" - $SwitchingDGV.Columns[5].FillWeight = 90 + ($SwitchingDGV.MinersBest_Combo.ForEach({ $_.Accounts.Count }) | Measure-Object -Maximum).Maximum * 50; $SwitchingDGV.Columns[5].HeaderText = "Account" - $SwitchingDGV.Columns[6].FillWeight = 30; $SwitchingDGV.Columns[6].HeaderText = "Cycles"; $SwitchingDGV.Columns[6].DefaultCellStyle.Alignment = "MiddleRight"; $SwitchingDGV.Columns[6].HeaderCell.Style.Alignment = "MiddleRight" - $SwitchingDGV.Columns[7].FillWeight = 35; $SwitchingDGV.Columns[7].DefaultCellStyle.Alignment = "MiddleRight"; $SwitchingDGV.Columns[7].HeaderCell.Style.Alignment = "MiddleRight" - $SwitchingDGV.Columns[8].FillWeight = 30 + ($SwitchingDGV.MinersBest_Combo.ForEach({ $_.DeviceNames.Count }) | Measure-Object -Maximum).Maximum * 15; $SwitchingDGV.Columns[8].HeaderText = "Device" - $SwitchingDGV.Columns[9].FillWeight = 30 + $LegacyGUIswitchingLogLabel.Text = "Switching log updated $((Get-ChildItem -Path ".\Logs\SwitchingLog.csv").LastWriteTime.ToString())" + $LegacyGUIswitchingDGV.DataSource = ((Get-Content ".\Logs\SwitchingLog.csv" | ConvertFrom-Csv).Where({ $_.Type -in $SwitchingDisplayTypes }) | Select-Object -Last 1000).ForEach({ $_.Datetime = (Get-Date $_.DateTime); $_ }) | Sort-Object DateTime -Descending | Select-Object @("DateTime", "Action", "Name", "Pools", "Algorithms", "Accounts", "Cycle", "Duration", "DeviceNames", "Type") | Out-DataTable + If ($LegacyGUIswitchingDGV.Columns) { + $LegacyGUIswitchingDGV.Columns[0].FillWeight = 50 + $LegacyGUIswitchingDGV.Columns[1].FillWeight = 50 + $LegacyGUIswitchingDGV.Columns[2].FillWeight = 90; $LegacyGUIswitchingDGV.Columns[2].HeaderText = "Miner" + $LegacyGUIswitchingDGV.Columns[3].FillWeight = 60 + ($LegacyGUIswitchingDGV.MinersBest_Combo.ForEach({ $_.Pools.Count }) | Measure-Object -Maximum).Maximum * 40; $LegacyGUIswitchingDGV.Columns[3].HeaderText = "Pool" + $LegacyGUIswitchingDGV.Columns[4].FillWeight = 50 + ($LegacyGUIswitchingDGV.MinersBest_Combo.ForEach({ $_.Algorithms.Count }) | Measure-Object -Maximum).Maximum * 25; $LegacyGUIswitchingDGV.Columns[4].HeaderText = "Algorithm (variant)" + $LegacyGUIswitchingDGV.Columns[5].FillWeight = 90 + ($LegacyGUIswitchingDGV.MinersBest_Combo.ForEach({ $_.Accounts.Count }) | Measure-Object -Maximum).Maximum * 50; $LegacyGUIswitchingDGV.Columns[5].HeaderText = "Account" + $LegacyGUIswitchingDGV.Columns[6].FillWeight = 30; $LegacyGUIswitchingDGV.Columns[6].HeaderText = "Cycles"; $LegacyGUIswitchingDGV.Columns[6].DefaultCellStyle.Alignment = "MiddleRight"; $LegacyGUIswitchingDGV.Columns[6].HeaderCell.Style.Alignment = "MiddleRight" + $LegacyGUIswitchingDGV.Columns[7].FillWeight = 35; $LegacyGUIswitchingDGV.Columns[7].DefaultCellStyle.Alignment = "MiddleRight"; $LegacyGUIswitchingDGV.Columns[7].HeaderCell.Style.Alignment = "MiddleRight" + $LegacyGUIswitchingDGV.Columns[8].FillWeight = 30 + ($LegacyGUIswitchingDGV.MinersBest_Combo.ForEach({ $_.DeviceNames.Count }) | Measure-Object -Maximum).Maximum * 15; $LegacyGUIswitchingDGV.Columns[8].HeaderText = "Device" + $LegacyGUIswitchingDGV.Columns[9].FillWeight = 30 } If ($Config.UseColorForMinerStatus) { - ForEach ($Row in $SwitchingDGV.Rows) { $Row.DefaultCellStyle.Backcolor = $Colors[$Row.DataBoundItem.Action] } + ForEach ($Row in $LegacyGUIswitchingDGV.Rows) { $Row.DefaultCellStyle.Backcolor = $LegacyGUIcolors[$Row.DataBoundItem.Action] } } - $SwitchingDGV.ClearSelection() - $SwitchingDGV.EndInit() + $LegacyGUIswitchingDGV.ClearSelection() + $LegacyGUIswitchingDGV.EndInit() } - Else { $SwitchingLogLabel.Text = "Switching log - no data" } + Else { $LegacyGUIswitchingLogLabel.Text = "Switching log - no data" } - $SwitchingLogClearButton.Enabled = [Boolean]$SwitchingDGV.Columns + $LegacyGUIswitchingLogClearButton.Enabled = [Boolean]$LegacyGUIswitchingDGV.Columns - $LegacyGUIForm.Cursor = [System.Windows.Forms.Cursors]::Normal + $LegacyGUIform.Cursor = [System.Windows.Forms.Cursors]::Normal } Function Set-DataGridViewDoubleBuffer { @@ -122,7 +122,7 @@ Function Set-DataGridViewDoubleBuffer { Function Update-TabControl { - $LegacyGUIForm.Cursor = [System.Windows.Forms.Cursors]::WaitCursor + $LegacyGUIform.Cursor = [System.Windows.Forms.Cursors]::WaitCursor # Keep only 100 lines, more lines impact performance $SelectionLength = $Variables.TextBoxSystemLog.SelectionLength @@ -134,29 +134,29 @@ Function Update-TabControl { $Variables.TextBoxSystemLog.Select($SelectionStart, $SelectionLength) } - Switch ($TabControl.SelectedTab.Text) { + Switch ($LegacyGUItabControl.SelectedTab.Text) { "System status" { - $ContextMenuStripItem1.Text = "Re-benchmark" - $ContextMenuStripItem1.Visible = $true - $ContextMenuStripItem2.Text = "Re-measure power consumption" - $ContextMenuStripItem2.Visible = $Config.CalculatePowerCost - $ContextMenuStripItem3.Text = "Mark as failed" - $ContextMenuStripItem3.Visible = $true - $ContextMenuStripItem4.Enabled = $true - $ContextMenuStripItem4.Visible = $true - $ContextMenuStripItem4.Text = "Disable" - $ContextMenuStripItem5.Enabled = $false - $ContextMenuStripItem5.Visible = $false - $ContextMenuStripItem6.Enabled = $false - $ContextMenuStripItem6.Visible = $false - - $ActiveMinersLabel.Text = If ($Variables.MinersBest) { "Active miners updated $([DateTime]::Now.ToString())" } Else { "No miners running." } - - If (-not ($ContextMenuStrip.Visible -and $ContextMenuStrip.Enabled)) { - - $ActiveMinersDGV.BeginInit() - $ActiveMinersDGV.ClearSelection() - $ActiveMinersDGV.DataSource = $Variables.MinersBest | Select-Object @( + $LegacyGUIcontextMenuStripItem1.Text = "Re-benchmark" + $LegacyGUIcontextMenuStripItem1.Visible = $true + $LegacyGUIcontextMenuStripItem2.Text = "Re-measure power consumption" + $LegacyGUIcontextMenuStripItem2.Visible = $Config.CalculatePowerCost + $LegacyGUIcontextMenuStripItem3.Text = "Mark as failed" + $LegacyGUIcontextMenuStripItem3.Visible = $true + $LegacyGUIcontextMenuStripItem4.Enabled = $true + $LegacyGUIcontextMenuStripItem4.Visible = $true + $LegacyGUIcontextMenuStripItem4.Text = "Disable" + $LegacyGUIcontextMenuStripItem5.Enabled = $false + $LegacyGUIcontextMenuStripItem5.Visible = $false + $LegacyGUIcontextMenuStripItem6.Enabled = $false + $LegacyGUIcontextMenuStripItem6.Visible = $false + + $LegacyGUIactiveMinersLabel.Text = If ($Variables.MinersBest) { "Active miners updated $([DateTime]::Now.ToString())" } Else { "No miners running." } + + If (-not ($LegacyGUIcontextMenuStrip.Visible -and $LegacyGUIcontextMenuStrip.Enabled)) { + + $LegacyGUIactiveMinersDGV.BeginInit() + $LegacyGUIactiveMinersDGV.ClearSelection() + $LegacyGUIactiveMinersDGV.DataSource = $Variables.MinersBest | Select-Object @( @{ Name = "Info"; Expression = { $_.info } } @{ Name = "SubStatus"; Expression = { $_.SubStatus } } @{ Name = "Device(s)"; Expression = { $_.DeviceNames -join '; ' } } @@ -171,28 +171,28 @@ 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 ($RadioButtonPoolsUnavailable.checked) { @{ Name = "Reason"; Expression = { $_.Reasons -join ', ' } } } + If ($LegacyGUIradioButtonPoolsUnavailable.checked) { @{ Name = "Reason"; Expression = { $_.Reasons -join ', ' } } } ) | Sort-Object -Property "Device(s)" | Out-DataTable - If ($ActiveMinersDGV.Columns) { - $ActiveMinersDGV.Columns[0].Visible = $false - $ActiveMinersDGV.Columns[1].Visible = $false - $ActiveMinersDGV.Columns[2].FillWeight = 30 + ($Variables.MinersBest.ForEach({ $_.DeviceNames.Count }) | Measure-Object -Maximum).Maximum * 20 - $ActiveMinersDGV.Columns[3].FillWeight = 160 - $ActiveMinersDGV.Columns[4].FillWeight = 60 - $ActiveMinersDGV.Columns[5].FillWeight = 55; $ActiveMinersDGV.Columns[5].DefaultCellStyle.Alignment = "MiddleRight"; $ActiveMinersDGV.Columns[5].HeaderCell.Style.Alignment = "MiddleRight" - $ActiveMinersDGV.Columns[6].FillWeight = 55; $ActiveMinersDGV.Columns[6].DefaultCellStyle.Alignment = "MiddleRight"; $ActiveMinersDGV.Columns[6].HeaderCell.Style.Alignment = "MiddleRight"; $ActiveMinersDGV.Columns[6].Visible = $Variables.CalculatePowerCost - $ActiveMinersDGV.Columns[7].FillWeight = 55; $ActiveMinersDGV.Columns[7].DefaultCellStyle.Alignment = "MiddleRight"; $ActiveMinersDGV.Columns[7].HeaderCell.Style.Alignment = "MiddleRight"; $ActiveMinersDGV.Columns[7].Visible = $Variables.CalculatePowerCost - $ActiveMinersDGV.Columns[8].FillWeight = 55; $ActiveMinersDGV.Columns[8].DefaultCellStyle.Alignment = "MiddleRight"; $ActiveMinersDGV.Columns[8].HeaderCell.Style.Alignment = "MiddleRight"; $ActiveMinersDGV.Columns[8].Visible = $Variables.CalculatePowerCost - $ActiveMinersDGV.Columns[9].FillWeight = 70 + ($Variables.MinersBest.({ $_.Workers.Count })| Measure-Object -Maximum).Maximum * 35 - $ActiveMinersDGV.Columns[10].FillWeight = 50 + ($Variables.MinersBest.({ $_.Workers.Count }) | Measure-Object -Maximum).Maximum * 25 - $ActiveMinersDGV.Columns[11].FillWeight = 50 + ($Variables.MinersBest.({ $_.Workers.Count }) | Measure-Object -Maximum).Maximum * 25; $ActiveMinersDGV.Columns[11].DefaultCellStyle.Alignment = "MiddleRight"; $ActiveMinersDGV.Columns[11].HeaderCell.Style.Alignment = "MiddleRight" - $ActiveMinersDGV.Columns[12].FillWeight = 65; $ActiveMinersDGV.Columns[12].DefaultCellStyle.Alignment = "MiddleRight"; $ActiveMinersDGV.Columns[13].HeaderCell.Style.Alignment = "MiddleRight" - $ActiveMinersDGV.Columns[13].FillWeight = 65; $ActiveMinersDGV.Columns[13].DefaultCellStyle.Alignment = "MiddleRight"; $ActiveMinersDGV.Columns[14].HeaderCell.Style.Alignment = "MiddleRight" + If ($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[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[13].HeaderCell.Style.Alignment = "MiddleRight" + $LegacyGUIactiveMinersDGV.Columns[13].FillWeight = 65; $LegacyGUIactiveMinersDGV.Columns[13].DefaultCellStyle.Alignment = "MiddleRight"; $LegacyGUIactiveMinersDGV.Columns[14].HeaderCell.Style.Alignment = "MiddleRight" } - Set-TableColor -DataGridView $ActiveMinersDGV + Set-TableColor -DataGridView $LegacyGUIactiveMinersDGV Form-Resize # To fully show lauched miners gridview - $ActiveMinersDGV.EndInit() + $LegacyGUIactiveMinersDGV.EndInit() } Break } @@ -219,8 +219,8 @@ Function Update-TabControl { $ChartTitle.Alignment = "TopCenter" $ChartTitle.Font = [System.Drawing.Font]::new("Arial", 10) $ChartTitle.Text = "Earnings of the past $($DataSource.Labels.Count) active days" - $EarningsChart.Titles.Clear() - $EarningsChart.Titles.Add($ChartTitle) + $LegacyGUIearningsChart.Titles.Clear() + $LegacyGUIearningsChart.Titles.Add($ChartTitle) $ChartArea = New-Object System.Windows.Forms.DataVisualization.Charting.ChartArea $ChartArea.AxisX.Enabled = 0 @@ -242,32 +242,32 @@ Function Update-TabControl { $ChartArea.BackGradientStyle = 3 $ChartArea.BackSecondaryColor = [System.Drawing.Color]::FromArgb(255, 224, 224, 224) #"#777E7E" - $EarningsChart.ChartAreas.Clear() - $EarningsChart.ChartAreas.Add($ChartArea) - $EarningsChart.Series.Clear() + $LegacyGUIearningsChart.ChartAreas.Clear() + $LegacyGUIearningsChart.ChartAreas.Add($ChartArea) + $LegacyGUIearningsChart.Series.Clear() $Color = @(255, 255, 255, 255) #"FFFFFF" $DaySum = @(0) * $DataSource.Labels.Count - $ToolTipText = $DataSource.Labels.Clone() + $LegacyGUItooltipText = $DataSource.Labels.Clone() ForEach ($Pool in $DataSource.Earnings.PSObject.Properties.Name) { $Color = (Get-NextColor -Color $Color -Factors -0, -20, -20, -20) - $EarningsChart.Series.Add($Pool) - $EarningsChart.Series[$Pool].ChartType = "StackedColumn" - $EarningsChart.Series[$Pool].BorderWidth = 3 - $EarningsChart.Series[$Pool].Color = [System.Drawing.Color]::FromArgb($Color[0], $Color[1], $Color[2], $Color[3]) + $LegacyGUIearningsChart.Series.Add($Pool) + $LegacyGUIearningsChart.Series[$Pool].ChartType = "StackedColumn" + $LegacyGUIearningsChart.Series[$Pool].BorderWidth = 3 + $LegacyGUIearningsChart.Series[$Pool].Color = [System.Drawing.Color]::FromArgb($Color[0], $Color[1], $Color[2], $Color[3]) $I = 0 $Datasource.Earnings.$Pool.ForEach( { $_ *= $Variables.Rates.BTC.($Config.MainCurrency) - $EarningsChart.Series[$Pool].Points.addxy(0, $_) | Out-Null + $LegacyGUIearningsChart.Series[$Pool].Points.addxy(0, $_) | Out-Null $Daysum[$I] += $_ If ($_) { - $ToolTipText[$I] = "$($ToolTipText[$I])`r$($Pool): {0:N$($Config.DecimalsMax)} $($Config.MainCurrency)" -f $_ + $LegacyGUItooltipText[$I] = "$($LegacyGUItooltipText[$I])`r$($Pool): {0:N$($Config.DecimalsMax)} $($Config.MainCurrency)" -f $_ } $I ++ } @@ -279,10 +279,10 @@ Function Update-TabControl { $DataSource.Labels.ForEach( { $ChartArea.AxisX.CustomLabels.Add($I +0.5, $I + 1.5, " $_ ") - $ChartArea.AxisX.CustomLabels[$I].ToolTip = "$($ToolTipText[$I])`rTotal: {0:N$($Config.DecimalsMax)} $($Config.MainCurrency)" -f $Daysum[$I] + $ChartArea.AxisX.CustomLabels[$I].ToolTip = "$($LegacyGUItooltipText[$I])`rTotal: {0:N$($Config.DecimalsMax)} $($Config.MainCurrency)" -f $Daysum[$I] ForEach ($Pool in $DataSource.Earnings.PSObject.Properties.Name) { If ($Datasource.Earnings.$Pool[$I]) { - $EarningsChart.Series[$Pool].Points[$I].ToolTip = "$($ToolTipText[$I])`rTotal: {0:N$($Config.DecimalsMax)} $($Config.MainCurrency)" -f $Daysum[$I] + $LegacyGUIearningsChart.Series[$Pool].Points[$I].ToolTip = "$($LegacyGUItooltipText[$I])`rTotal: {0:N$($Config.DecimalsMax)} $($Config.MainCurrency)" -f $Daysum[$I] } } $I ++ @@ -294,11 +294,11 @@ Function Update-TabControl { } If ($Config.BalancesTrackerPollInterval -gt 0) { If ($Variables.Balances) { - $BalancesLabel.Text = "Balances data updated $(($Variables.Balances.Values.LastUpdated | Sort-Object -Bottom 1).ToLocalTime().ToString())" + $LegacyGUIbalancesLabel.Text = "Balances data updated $(($Variables.Balances.Values.LastUpdated | Sort-Object -Bottom 1).ToLocalTime().ToString())" - $BalancesDGV.BeginInit() - $BalancesDGV.ClearSelection() - $BalancesDGV.DataSource = $Variables.Balances.Values | Select-Object @( + $LegacyGUIbalancesDGV.BeginInit() + $LegacyGUIbalancesDGV.ClearSelection() + $LegacyGUIbalancesDGV.DataSource = $Variables.Balances.Values | Select-Object @( @{ Name = "Currency"; Expression = { $_.Currency } }, @{ Name = "Pool [Currency]"; Expression = { "$($_.Pool) [$($_.Currency)]" } }, @{ Name = "Balance ($($Config.MainCurrency))"; Expression = { "{0:n$($Config.DecimalsMax)}" -f ($_.Balance * $Variables.Rates.($_.Currency).($Config.MainCurrency)) } }, @@ -310,18 +310,18 @@ Function Update-TabControl { @{ Name = "Payout threshold"; Expression = { If ($_.PayoutThresholdCurrency -eq "BTC" -and $Config.UsemBTC) { $PayoutThresholdCurrency = "mBTC"; $mBTCfactor = 1000 } Else { $PayoutThresholdCurrency = $_.PayoutThresholdCurrency; $mBTCfactor = 1 }; "{0:P2} of {1} {2} " -f ($_.Balance / $_.PayoutThreshold * $Variables.Rates.($_.Currency).($_.PayoutThresholdCurrency)), ($_.PayoutThreshold * $mBTCfactor), $PayoutThresholdCurrency } } ) | Sort-Object -Property Pool | Out-DataTable - If ($BalancesDGV.Columns) { - $BalancesDGV.Columns[0].Visible = $false - $BalancesDGV.Columns[1].FillWeight = 140 - $BalancesDGV.Columns[2].FillWeight = 90; $BalancesDGV.Columns[2].DefaultCellStyle.Alignment = "MiddleRight"; $BalancesDGV.Columns[2].HeaderCell.Style.Alignment = "MiddleRight" - $BalancesDGV.Columns[3].FillWeight = 90; $BalancesDGV.Columns[3].DefaultCellStyle.Alignment = "MiddleRight"; $BalancesDGV.Columns[3].HeaderCell.Style.Alignment = "MiddleRight" - $BalancesDGV.Columns[4].FillWeight = 75; $BalancesDGV.Columns[4].DefaultCellStyle.Alignment = "MiddleRight"; $BalancesDGV.Columns[4].HeaderCell.Style.Alignment = "MiddleRight" - $BalancesDGV.Columns[5].FillWeight = 75; $BalancesDGV.Columns[5].DefaultCellStyle.Alignment = "MiddleRight"; $BalancesDGV.Columns[5].HeaderCell.Style.Alignment = "MiddleRight" - $BalancesDGV.Columns[6].FillWeight = 75; $BalancesDGV.Columns[6].DefaultCellStyle.Alignment = "MiddleRight"; $BalancesDGV.Columns[6].HeaderCell.Style.Alignment = "MiddleRight" - $BalancesDGV.Columns[7].FillWeight = 80 - $BalancesDGV.Columns[8].FillWeight = 100 + If ($LegacyGUIbalancesDGV.Columns) { + $LegacyGUIbalancesDGV.Columns[0].Visible = $false + $LegacyGUIbalancesDGV.Columns[1].FillWeight = 140 + $LegacyGUIbalancesDGV.Columns[2].FillWeight = 90; $LegacyGUIbalancesDGV.Columns[2].DefaultCellStyle.Alignment = "MiddleRight"; $LegacyGUIbalancesDGV.Columns[2].HeaderCell.Style.Alignment = "MiddleRight" + $LegacyGUIbalancesDGV.Columns[3].FillWeight = 90; $LegacyGUIbalancesDGV.Columns[3].DefaultCellStyle.Alignment = "MiddleRight"; $LegacyGUIbalancesDGV.Columns[3].HeaderCell.Style.Alignment = "MiddleRight" + $LegacyGUIbalancesDGV.Columns[4].FillWeight = 75; $LegacyGUIbalancesDGV.Columns[4].DefaultCellStyle.Alignment = "MiddleRight"; $LegacyGUIbalancesDGV.Columns[4].HeaderCell.Style.Alignment = "MiddleRight" + $LegacyGUIbalancesDGV.Columns[5].FillWeight = 75; $LegacyGUIbalancesDGV.Columns[5].DefaultCellStyle.Alignment = "MiddleRight"; $LegacyGUIbalancesDGV.Columns[5].HeaderCell.Style.Alignment = "MiddleRight" + $LegacyGUIbalancesDGV.Columns[6].FillWeight = 75; $LegacyGUIbalancesDGV.Columns[6].DefaultCellStyle.Alignment = "MiddleRight"; $LegacyGUIbalancesDGV.Columns[6].HeaderCell.Style.Alignment = "MiddleRight" + $LegacyGUIbalancesDGV.Columns[7].FillWeight = 80 + $LegacyGUIbalancesDGV.Columns[8].FillWeight = 100 } - $BalancesDGV.Rows.ForEach( + $LegacyGUIbalancesDGV.Rows.ForEach( { $_.Cells[2].ToolTipText = "$($_.Cells[0].Value) {0:n$($Config.DecimalsMax)}" -f ([Double]$_.Cells[2].Value * $Variables.Rates.($Config.MainCurrency).($_.Cells[0].Value)) $_.Cells[3].ToolTipText = "$($_.Cells[0].Value) {0:n$($Config.DecimalsMax)}" -f ([Double]$_.Cells[3].Value * $Variables.Rates.($Config.MainCurrency).($_.Cells[0].Value)) @@ -331,42 +331,42 @@ Function Update-TabControl { } ) Form-Resize # To fully show lauched miners gridview - $BalancesDGV.EndInit() + $LegacyGUIbalancesDGV.EndInit() } Else { - $BalancesLabel.Text = "Waiting for balances data..." + $LegacyGUIbalancesLabel.Text = "Waiting for balances data..." } } Else { - $BalancesLabel.Text = "BalanceTracker is disabled (Configuration item 'BalancesTrackerPollInterval' -eq 0)" + $LegacyGUIbalancesLabel.Text = "BalanceTracker is disabled (Configuration item 'BalancesTrackerPollInterval' -eq 0)" } Break } "Miners" { - $ContextMenuStripItem1.Text = "Re-benchmark" - $ContextMenuStripItem1.Visible = $true - $ContextMenuStripItem2.Enabled = $Config.CalculatePowerCost - $ContextMenuStripItem2.Text = "Re-measure power consumption" - $ContextMenuStripItem2.Visible = $true - $ContextMenuStripItem3.Enabled = $true - $ContextMenuStripItem3.Text = "Mark as failed" - $ContextMenuStripItem4.Text = "Disable" - $ContextMenuStripItem5.Enabled = $true - $ContextMenuStripItem5.Text = "Enable" - $ContextMenuStripItem5.Visible = $true - $ContextMenuStripItem6.Enabled = $Variables.WatchdogTimers - $ContextMenuStripItem6.Text = "Remove watchdog timer" - $ContextMenuStripItem6.Visible = $true - - If (-not ($ContextMenuStrip.Visible -and $ContextMenuStrip.Enabled)) { - - If ($RadioButtonMinersOptimal.checked) { $DataSource = $Variables.MinersOptimal } - ElseIf ($RadioButtonMinersUnavailable.checked) { $DataSource = $Variables.Miners.Where({ -not $_.Available }) } + $LegacyGUIcontextMenuStripItem1.Text = "Re-benchmark" + $LegacyGUIcontextMenuStripItem1.Visible = $true + $LegacyGUIcontextMenuStripItem2.Enabled = $Config.CalculatePowerCost + $LegacyGUIcontextMenuStripItem2.Text = "Re-measure power consumption" + $LegacyGUIcontextMenuStripItem2.Visible = $true + $LegacyGUIcontextMenuStripItem3.Enabled = $true + $LegacyGUIcontextMenuStripItem3.Text = "Mark as failed" + $LegacyGUIcontextMenuStripItem4.Text = "Disable" + $LegacyGUIcontextMenuStripItem5.Enabled = $true + $LegacyGUIcontextMenuStripItem5.Text = "Enable" + $LegacyGUIcontextMenuStripItem5.Visible = $true + $LegacyGUIcontextMenuStripItem6.Enabled = $Variables.WatchdogTimers + $LegacyGUIcontextMenuStripItem6.Text = "Remove watchdog timer" + $LegacyGUIcontextMenuStripItem6.Visible = $true + + If (-not ($LegacyGUIcontextMenuStrip.Visible -and $LegacyGUIcontextMenuStrip.Enabled)) { + + If ($LegacyGUIradioButtonMinersOptimal.checked) { $DataSource = $Variables.MinersOptimal } + ElseIf ($LegacyGUIradioButtonMinersUnavailable.checked) { $DataSource = $Variables.Miners.Where({ -not $_.Available }) } Else { $DataSource = $Variables.Miners } - $MinersDGV.BeginInit() - $MinersDGV.ClearSelection() - $MinersDGV.DataSource = $DataSource | Select-Object @( + $LegacyGUIminersDGV.BeginInit() + $LegacyGUIminersDGV.ClearSelection() + $LegacyGUIminersDGV.DataSource = $DataSource | Select-Object @( @{ Name = "Info"; Expression = { $_.Info } }, @{ Name = "SubStatus"; Expression = { $_.SubStatus } }, @{ Name = "Best"; Expression = { $_.Best } }, @@ -380,48 +380,48 @@ Function Update-TabControl { @{ Name = "Algorithm (variant)"; Expression = { $_.Workers.Pool.AlgorithmVariant -join ' & '} }, @{ 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 ($RadioButtonMinersUnavailable.checked -or $RadioButtonMiners.checked) { @{ Name = "Reason(s)"; Expression = { $_.Reasons -join ', '} } } + If ($LegacyGUIradioButtonMinersUnavailable.checked -or $LegacyGUIradioButtonMiners.checked) { @{ Name = "Reason(s)"; Expression = { $_.Reasons -join ', '} } } ) | Sort-Object @{ Expression = { $_.Best }; Descending = $true }, "Device(s)", Name | Out-DataTable - If ($MinersDGV.Columns) { - $MinersDGV.Columns[0].Visible = $false - $MinersDGV.Columns[1].Visible = $false - $MinersDGV.Columns[2].Visible = $false - $MinersDGV.Columns[3].FillWeight = 160 - $MinersDGV.Columns[4].FillWeight = 25 + ($DataSource.ForEach({ $_.DeviceNames.Count }) | Measure-Object -Maximum).Maximum * 25 - $MinersDGV.Columns[5].Visible = -not $RadioButtonMinersUnavailable.checked; $MinersDGV.Columns[5].FillWeight = 50 - $MinersDGV.Columns[6].FillWeight = 55; $MinersDGV.Columns[6].DefaultCellStyle.Alignment = "MiddleRight"; $MinersDGV.Columns[6].HeaderCell.Style.Alignment = "MiddleRight" - $MinersDGV.Columns[7].FillWeight = 60; $MinersDGV.Columns[7].DefaultCellStyle.Alignment = "MiddleRight"; $MinersDGV.Columns[7].HeaderCell.Style.Alignment = "MiddleRight"; $MinersDGV.Columns[7].Visible = $Variables.CalculatePowerCost - $MinersDGV.Columns[8].FillWeight = 55; $MinersDGV.Columns[8].DefaultCellStyle.Alignment = "MiddleRight"; $MinersDGV.Columns[8].HeaderCell.Style.Alignment = "MiddleRight"; $MinersDGV.Columns[8].Visible = $Variables.CalculatePowerCost - $MinersDGV.Columns[9].FillWeight = 55; $MinersDGV.Columns[9].DefaultCellStyle.Alignment = "MiddleRight"; $MinersDGV.Columns[9].HeaderCell.Style.Alignment = "MiddleRight"; $MinersDGV.Columns[9].Visible = $Variables.CalculatePowerCost - $MinersDGV.Columns[10].FillWeight = 60 + ($DataSource.ForEach({ $_.Workers.Count }) | Measure-Object -Maximum).Maximum * 30 - $MinersDGV.Columns[11].FillWeight = 60 + ($DataSource.ForEach({ $_.Workers.Count }) | Measure-Object -Maximum).Maximum * 30 - $MinersDGV.Columns[12].FillWeight = 50 + ($DataSource.ForEach({ $_.Workers.Count }) | Measure-Object -Maximum).Maximum * 25; $MinersDGV.Columns[12].DefaultCellStyle.Alignment = "MiddleRight"; $MinersDGV.Columns[12].HeaderCell.Style.Alignment = "MiddleRight" + If ($LegacyGUIminersDGV.Columns) { + $LegacyGUIminersDGV.Columns[0].Visible = $false + $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" } - Set-TableColor -DataGridView $MinersDGV - $MinersDGV.EndInit() + Set-TableColor -DataGridView $LegacyGUIminersDGV + $LegacyGUIminersDGV.EndInit() } - If ($MinersDGV.Columns) { $MinersLabel.Text = "Miner data updated $([DateTime]::Now.ToString())" } - ElseIf ($Variables.MiningStatus -eq "Idle") { $MinersLabel.Text = "No data - mining is stopped"} - ElseIf ($Variables.MiningStatus -eq "Paused") { $MinersLabel.Text = "No data - mining is paused"} - Else { $MinersLabel.Text = "Waiting for data..." } + If ($LegacyGUIminersDGV.Columns) { $LegacyGUIminersLabel.Text = "Miner data updated $([DateTime]::Now.ToString())" } + ElseIf ($Variables.MiningStatus -eq "Idle") { $LegacyGUIminersLabel.Text = "No data - mining is stopped"} + ElseIf ($Variables.MiningStatus -eq "Paused") { $LegacyGUIminersLabel.Text = "No data - mining is paused"} + Else { $LegacyGUIminersLabel.Text = "Waiting for data..." } Break } "Pools" { - $ContextMenuStripItem1.Visible = $false - $ContextMenuStripItem2.Visible = $false - $ContextMenuStripItem3.Text = "Reset pool stat data" - $ContextMenuStripItem3.Visible = $true - $ContextMenuStripItem4.Enabled = $Variables.WatchdogTimers - $ContextMenuStripItem4.Text = "Remove watchdog timer" - $ContextMenuStripItem5.Visible = $false - $ContextMenuStripItem6.Visible = $false - - If (-not ($ContextMenuStrip.Visible -and $ContextMenuStrip.Enabled)) { - - If ($RadioButtonPoolsBest.checked) { $DataSource = $Variables.PoolsBest } - ElseIf ($RadioButtonPoolsUnavailable.checked) { $DataSource = $Variables.Pools.Where({ -not $_.Available }) } + $LegacyGUIcontextMenuStripItem1.Visible = $false + $LegacyGUIcontextMenuStripItem2.Visible = $false + $LegacyGUIcontextMenuStripItem3.Text = "Reset pool stat data" + $LegacyGUIcontextMenuStripItem3.Visible = $true + $LegacyGUIcontextMenuStripItem4.Enabled = $Variables.WatchdogTimers + $LegacyGUIcontextMenuStripItem4.Text = "Remove watchdog timer" + $LegacyGUIcontextMenuStripItem5.Visible = $false + $LegacyGUIcontextMenuStripItem6.Visible = $false + + If (-not ($LegacyGUIcontextMenuStrip.Visible -and $LegacyGUIcontextMenuStrip.Enabled)) { + + If ($LegacyGUIradioButtonPoolsBest.checked) { $DataSource = $Variables.PoolsBest } + ElseIf ($LegacyGUIradioButtonPoolsUnavailable.checked) { $DataSource = $Variables.Pools.Where({ -not $_.Available }) } Else { $DataSource = $Variables.Pools } If ($Config.UsemBTC) { @@ -433,9 +433,9 @@ Function Update-TabControl { $Unit = "BTC" } - $PoolsDGV.BeginInit() - $PoolsDGV.ClearSelection() - $PoolsDGV.DataSource = $DataSource | Sort-Object -Property AlgorithmVariant, Currency, Name | Select-Object @( + $LegacyGUIpoolsDGV.BeginInit() + $LegacyGUIpoolsDGV.ClearSelection() + $LegacyGUIpoolsDGV.DataSource = $DataSource | Sort-Object -Property AlgorithmVariant, Currency, Name | Select-Object @( @{ Name = "Algorithm (variant)"; Expression = { $_.AlgorithmVariant } } @{ Name = "Currency"; Expression = { $_.Currency } } @{ Name = "Coin name"; Expression = { $_.CoinName } } @@ -447,33 +447,33 @@ Function Update-TabControl { @{ Name = "SSL port"; Expression = { "$(If ($_.PortSSL) { $_.PortSSL } Else { "-" })" } } @{ Name = "Earnings adjustment factor"; Expression = { $_.EarningsAdjustmentFactor } } @{ Name = "Fee"; Expression = { "{0:p2}" -f $_.Fee } } - If ($RadioButtonPoolsUnavailable.checked -or $RadioButtonPools.checked) { @{ Name = "Reason(s)"; Expression = { $_.Reasons -join ', '} } } + If ($LegacyGUIradioButtonPoolsUnavailable.checked -or $LegacyGUIradioButtonPools.checked) { @{ Name = "Reason(s)"; Expression = { $_.Reasons -join ', '} } } ) | Out-DataTable - If ($PoolsDGV.Columns) { - $PoolsDGV.Columns[0].FillWeight = 80 - $PoolsDGV.Columns[1].FillWeight = 40 - $PoolsDGV.Columns[2].FillWeight = 70 - $PoolsDGV.Columns[3].FillWeight = 55; $PoolsDGV.Columns[3].DefaultCellStyle.Alignment = "MiddleRight"; $PoolsDGV.Columns[3].HeaderCell.Style.Alignment = "MiddleRight" - $PoolsDGV.Columns[4].FillWeight = 45; $PoolsDGV.Columns[4].DefaultCellStyle.Alignment = "MiddleRight"; $PoolsDGV.Columns[4].HeaderCell.Style.Alignment = "MiddleRight" - $PoolsDGV.Columns[5].FillWeight = 80 - $PoolsDGV.Columns[6].FillWeight = 140 - $PoolsDGV.Columns[7].FillWeight = 40; $PoolsDGV.Columns[7].DefaultCellStyle.Alignment = "MiddleRight"; $PoolsDGV.Columns[7].HeaderCell.Style.Alignment = "MiddleRight" - $PoolsDGV.Columns[8].FillWeight = 40; $PoolsDGV.Columns[8].DefaultCellStyle.Alignment = "MiddleRight"; $PoolsDGV.Columns[8].HeaderCell.Style.Alignment = "MiddleRight" - $PoolsDGV.Columns[9].FillWeight = 50; $PoolsDGV.Columns[9].DefaultCellStyle.Alignment = "MiddleRight"; $PoolsDGV.Columns[9].HeaderCell.Style.Alignment = "MiddleRight" - $PoolsDGV.Columns[10].FillWeight = 40; $PoolsDGV.Columns[10].DefaultCellStyle.Alignment = "MiddleRight"; $PoolsDGV.Columns[10].HeaderCell.Style.Alignment = "MiddleRight" + If ($LegacyGUIpoolsDGV.Columns) { + $LegacyGUIpoolsDGV.Columns[0].FillWeight = 80 + $LegacyGUIpoolsDGV.Columns[1].FillWeight = 40 + $LegacyGUIpoolsDGV.Columns[2].FillWeight = 70 + $LegacyGUIpoolsDGV.Columns[3].FillWeight = 55; $LegacyGUIpoolsDGV.Columns[3].DefaultCellStyle.Alignment = "MiddleRight"; $LegacyGUIpoolsDGV.Columns[3].HeaderCell.Style.Alignment = "MiddleRight" + $LegacyGUIpoolsDGV.Columns[4].FillWeight = 45; $LegacyGUIpoolsDGV.Columns[4].DefaultCellStyle.Alignment = "MiddleRight"; $LegacyGUIpoolsDGV.Columns[4].HeaderCell.Style.Alignment = "MiddleRight" + $LegacyGUIpoolsDGV.Columns[5].FillWeight = 80 + $LegacyGUIpoolsDGV.Columns[6].FillWeight = 140 + $LegacyGUIpoolsDGV.Columns[7].FillWeight = 40; $LegacyGUIpoolsDGV.Columns[7].DefaultCellStyle.Alignment = "MiddleRight"; $LegacyGUIpoolsDGV.Columns[7].HeaderCell.Style.Alignment = "MiddleRight" + $LegacyGUIpoolsDGV.Columns[8].FillWeight = 40; $LegacyGUIpoolsDGV.Columns[8].DefaultCellStyle.Alignment = "MiddleRight"; $LegacyGUIpoolsDGV.Columns[8].HeaderCell.Style.Alignment = "MiddleRight" + $LegacyGUIpoolsDGV.Columns[9].FillWeight = 50; $LegacyGUIpoolsDGV.Columns[9].DefaultCellStyle.Alignment = "MiddleRight"; $LegacyGUIpoolsDGV.Columns[9].HeaderCell.Style.Alignment = "MiddleRight" + $LegacyGUIpoolsDGV.Columns[10].FillWeight = 40; $LegacyGUIpoolsDGV.Columns[10].DefaultCellStyle.Alignment = "MiddleRight"; $LegacyGUIpoolsDGV.Columns[10].HeaderCell.Style.Alignment = "MiddleRight" } - $PoolsDGV.EndInit() + $LegacyGUIpoolsDGV.EndInit() } - If ($PoolsDGV.Columns) { $PoolsLabel.Text = "Pool data updated $([DateTime]::Now.ToString())" } - ElseIf ($Variables.MiningStatus -eq "Idle") { $PoolsLabel.Text = "No data - mining is stopped"} - ElseIf ($Variables.MiningStatus -eq "Paused") { $PoolsLabel.Text = "No data - mining is paused"} - Else { $PoolsLabel.Text = "Waiting for data..." } + If ($LegacyGUIpoolsDGV.Columns) { $LegacyGUIpoolsLabel.Text = "Pool data updated $([DateTime]::Now.ToString())" } + ElseIf ($Variables.MiningStatus -eq "Idle") { $LegacyGUIpoolsLabel.Text = "No data - mining is stopped"} + ElseIf ($Variables.MiningStatus -eq "Paused") { $LegacyGUIpoolsLabel.Text = "No data - mining is paused"} + Else { $LegacyGUIpoolsLabel.Text = "Waiting for data..." } Break } # "Rig monitor" { - # $WorkersDGV.Visible = $Config.ShowWorkerStatus - # $EditMonitoringLink.Visible = $Variables.APIRunspace.APIport + # $LegacyGUIworkersDGV.Visible = $Config.ShowWorkerStatus + # $LegacyGUIeditMonitoringLink.Visible = $Variables.APIRunspace.APIport # If ($Config.ShowWorkerStatus) { @@ -482,75 +482,75 @@ Function Update-TabControl { # If ($Variables.Workers) { # $nl = "`n" # Must use variable, cannot join with '`n' directly - # $WorkersDGV.BeginInit() - # $WorkersDGV.ClearSelection() - # $WorkersDGV.DataSource = $Variables.Workers | Select-Object @( + # $LegacyGUIworkersDGV.BeginInit() + # $LegacyGUIworkersDGV.ClearSelection() + # $LegacyGUIworkersDGV.DataSource = $Variables.Workers | Select-Object @( # @{ Name = "Worker"; Expression = { $_.worker } }, # @{ Name = "Status"; Expression = { $_.status } }, # @{ Name = "Last seen"; Expression = { (Get-TimeSince $_.date) } }, # @{ Name = "Version"; Expression = { $_.version } }, # @{ Name = "Currency"; Expression = { $_.data.Currency | Select-Object -Unique } }, - # @{ Name = "Estimated earning/day"; Expression = { If ($null -ne $_.Data) { "{0:n$($Config.DecimalsMax)}" -f (($_.Data.Earning.Where({ -not [Double]::IsNaN($_) }) | Measure-Object -Sum | Select-Object -ExpandProperty Sum) * $Variables.Rates.BTC.($_.data.Currency | Select-Object -Unique)) } } }, - # @{ Name = "Estimated profit/day"; Expression = { If ($null -ne $_.Data) { " {0:n$($Config.DecimalsMax)}" -f (($_.Data.Profit.Where({ -not [Double]::IsNaN($_) }) | Measure-Object -Sum | Select-Object -ExpandProperty Sum) * $Variables.Rates.BTC.($_.data.Currency | Select-Object -Unique)) } } }, + # @{ Name = "Estimated earning/day"; Expression = { If ($null -ne $_.Data) { "{0:n$($Config.DecimalsMax)}" -f (($_.Data.Earning.Where({ -not [Double]::IsNaN($_) }) | Measure-Object -Sum).Sum * $Variables.Rates.BTC.($_.data.Currency | Select-Object -Unique)) } } }, + # @{ Name = "Estimated profit/day"; Expression = { If ($null -ne $_.Data) { " {0:n$($Config.DecimalsMax)}" -f (($_.Data.Profit.Where({ -not [Double]::IsNaN($_) }) | Measure-Object -Sum).Sum * $Variables.Rates.BTC.($_.data.Currency | Select-Object -Unique)) } } }, # @{ Name = "Miner"; Expression = { $_.data.Name -join $nl } }, # @{ Name = "Pool"; Expression = { $_.data.ForEach({ $_.Pool -split "," -join ' & ' }) -join $nl } }, # @{ Name = "Algorithm"; Expression = { $_.data.ForEach({ $_.Algorithm -split "," -join ' & ' }) -join $nl } }, # @{ Name = "Live hashrate"; Expression = { $_.data.ForEach({ $_.CurrentSpeed.ForEach({ If ([Double]::IsNaN($_)) { "n/a" } Else { $_ | ConvertTo-Hash } }) -join ' & ' }) -join $nl } }, # @{ Name = "Benchmark hashrate(s)"; Expression = { $_.data.ForEach({ $_.EstimatedSpeed.ForEach({ If ([Double]::IsNaN($_)) { "n/a" } Else { $_ | ConvertTo-Hash } }) -join ' & ' }) -join $nl } } # ) | Sort-Object -Property "Worker" | Out-DataTable - # If ($WorkersDGV.Columns) { - # $WorkersDGV.Columns[0].FillWeight = 70 - # $WorkersDGV.Columns[1].FillWeight = 60 - # $WorkersDGV.Columns[2].FillWeight = 80 - # $WorkersDGV.Columns[3].FillWeight = 70 - # $WorkersDGV.Columns[4].FillWeight = 40 - # $WorkersDGV.Columns[5].FillWeight = 65; $WorkersDGV.Columns[5].DefaultCellStyle.Alignment = "MiddleRight"; $WorkersDGV.Columns[5].HeaderCell.Style.Alignment = "MiddleRight" - # $WorkersDGV.Columns[6].FillWeight = 65; $WorkersDGV.Columns[6].DefaultCellStyle.Alignment = "MiddleRight"; $WorkersDGV.Columns[6].HeaderCell.Style.Alignment = "MiddleRight" - # $WorkersDGV.Columns[7].FillWeight = 150 - # $WorkersDGV.Columns[8].FillWeight = 95 - # $WorkersDGV.Columns[9].FillWeight = 75 - # $WorkersDGV.Columns[10].FillWeight = 65; $WorkersDGV.Columns[10].DefaultCellStyle.Alignment = "MiddleRight"; $WorkersDGV.Columns[10].HeaderCell.Style.Alignment = "MiddleRight" - # $WorkersDGV.Columns[11].FillWeight = 65; $WorkersDGV.Columns[11].DefaultCellStyle.Alignment = "MiddleRight"; $WorkersDGV.Columns[11].HeaderCell.Style.Alignment = "MiddleRight" + # If ($LegacyGUIworkersDGV.Columns) { + # $LegacyGUIworkersDGV.Columns[0].FillWeight = 70 + # $LegacyGUIworkersDGV.Columns[1].FillWeight = 60 + # $LegacyGUIworkersDGV.Columns[2].FillWeight = 80 + # $LegacyGUIworkersDGV.Columns[3].FillWeight = 70 + # $LegacyGUIworkersDGV.Columns[4].FillWeight = 40 + # $LegacyGUIworkersDGV.Columns[5].FillWeight = 65; $LegacyGUIworkersDGV.Columns[5].DefaultCellStyle.Alignment = "MiddleRight"; $LegacyGUIworkersDGV.Columns[5].HeaderCell.Style.Alignment = "MiddleRight" + # $LegacyGUIworkersDGV.Columns[6].FillWeight = 65; $LegacyGUIworkersDGV.Columns[6].DefaultCellStyle.Alignment = "MiddleRight"; $LegacyGUIworkersDGV.Columns[6].HeaderCell.Style.Alignment = "MiddleRight" + # $LegacyGUIworkersDGV.Columns[7].FillWeight = 150 + # $LegacyGUIworkersDGV.Columns[8].FillWeight = 95 + # $LegacyGUIworkersDGV.Columns[9].FillWeight = 75 + # $LegacyGUIworkersDGV.Columns[10].FillWeight = 65; $LegacyGUIworkersDGV.Columns[10].DefaultCellStyle.Alignment = "MiddleRight"; $LegacyGUIworkersDGV.Columns[10].HeaderCell.Style.Alignment = "MiddleRight" + # $LegacyGUIworkersDGV.Columns[11].FillWeight = 65; $LegacyGUIworkersDGV.Columns[11].DefaultCellStyle.Alignment = "MiddleRight"; $LegacyGUIworkersDGV.Columns[11].HeaderCell.Style.Alignment = "MiddleRight" # } # Set-WorkerColor - # $WorkersDGV.EndInit() + # $LegacyGUIworkersDGV.EndInit() # } - # If ($Variables.Workers) { $WorkersLabel.Text = "Worker status updated $($Variables.WorkersLastUpdated.ToString())" } - # ElseIf ($Variables.MiningStatus -eq "Idle") { $WorkersLabel.Text = "No data - mining is stopped"} - # ElseIf ($Variables.MiningStatus -eq "Paused") { $WorkersLabel.Text = "No data - mining is paused"} - # Else { $WorkersLabel.Text = "Waiting for data..." } + # If ($Variables.Workers) { $LegacyGUIworkersLabel.Text = "Worker status updated $($Variables.WorkersLastUpdated.ToString())" } + # ElseIf ($Variables.MiningStatus -eq "Idle") { $LegacyGUIworkersLabel.Text = "No data - mining is stopped"} + # ElseIf ($Variables.MiningStatus -eq "Paused") { $LegacyGUIworkersLabel.Text = "No data - mining is paused"} + # Else { $LegacyGUIworkersLabel.Text = "Waiting for data..." } # } # Else { - # $WorkersLabel.Text = "Worker status reporting is disabled$(If (-not $Variables.APIRunspace) { " (Configuration item 'ShowWorkerStatus' -eq `$false)" })." + # $LegacyGUIworkersLabel.Text = "Worker status reporting is disabled$(If (-not $Variables.APIRunspace) { " (Configuration item 'ShowWorkerStatus' -eq `$false)" })." # } # Break # } "Switching Log" { - $CheckShowSwitchingCPU.Enabled = [Boolean]($Variables.Devices.Where({ $_.State -ne [DeviceState]::Unsupported -and $_.Name -notin $Config.ExcludeDeviceName -and $_.Type -eq "CPU" })) - $CheckShowSwitchingAMD.Enabled = [Boolean]($Variables.Devices.Where({ $_.State -ne [DeviceState]::Unsupported -and $_.Name -notin $Config.ExcludeDeviceName -and $_.Type -eq "GPU" -and $_.Vendor -eq "AMD" })) - $CheckShowSwitchingINTEL.Enabled = [Boolean]($Variables.Devices.Where({ $_.State -ne [DeviceState]::Unsupported -and $_.Name -notin $Config.ExcludeDeviceName -and $_.Type -eq "GPU" -and $_.Vendor -eq "INTEL" })) - $CheckShowSwitchingNVIDIA.Enabled = [Boolean]($Variables.Devices.Where({ $_.State -ne [DeviceState]::Unsupported -and $_.Name -notin $Config.ExcludeDeviceName -and $_.Type -eq "GPU" -and $_.Vendor -eq "NVIDIA" })) + $LegacyGUIcheckShowSwitchingCPU.Enabled = [Boolean]($Variables.Devices.Where({ $_.State -ne [DeviceState]::Unsupported -and $_.Name -notin $Config.ExcludeDeviceName -and $_.Type -eq "CPU" })) + $LegacyGUIcheckShowSwitchingAMD.Enabled = [Boolean]($Variables.Devices.Where({ $_.State -ne [DeviceState]::Unsupported -and $_.Name -notin $Config.ExcludeDeviceName -and $_.Type -eq "GPU" -and $_.Vendor -eq "AMD" })) + $LegacyGUIcheckShowSwitchingINTEL.Enabled = [Boolean]($Variables.Devices.Where({ $_.State -ne [DeviceState]::Unsupported -and $_.Name -notin $Config.ExcludeDeviceName -and $_.Type -eq "GPU" -and $_.Vendor -eq "INTEL" })) + $LegacyGUIcheckShowSwitchingNVIDIA.Enabled = [Boolean]($Variables.Devices.Where({ $_.State -ne [DeviceState]::Unsupported -and $_.Name -notin $Config.ExcludeDeviceName -and $_.Type -eq "GPU" -and $_.Vendor -eq "NVIDIA" })) - $CheckShowSwitchingCPU.Checked = $CheckShowSwitchingCPU.Enabled - $CheckShowSwitchingAMD.Checked = $CheckShowSwitchingAMD.Enabled - $CheckShowSwitchingINTEL.Checked = $CheckShowSwitchingINTEL.Enabled - $CheckShowSwitchingNVIDIA.Checked = $CheckShowSwitchingNVIDIA.Enabled + $LegacyGUIcheckShowSwitchingCPU.Checked = $LegacyGUIcheckShowSwitchingCPU.Enabled + $LegacyGUIcheckShowSwitchingAMD.Checked = $LegacyGUIcheckShowSwitchingAMD.Enabled + $LegacyGUIcheckShowSwitchingINTEL.Checked = $LegacyGUIcheckShowSwitchingINTEL.Enabled + $LegacyGUIcheckShowSwitchingNVIDIA.Checked = $LegacyGUIcheckShowSwitchingNVIDIA.Enabled CheckBoxSwitching_Click Break } "Watchdog timers" { - $WatchdogTimersRemoveButton.Visible = $Config.Watchdog - $WatchdogTimersDGV.Visible = $Config.Watchdog + $LegacyGUIwatchdogTimersRemoveButton.Visible = $Config.Watchdog + $LegacyGUIwatchdogTimersDGV.Visible = $Config.Watchdog If ($Config.Watchdog) { If ($Variables.WatchdogTimers) { - $WatchdogTimersLabel.Text = "Watchdog timers updated $([DateTime]::Now.ToString())" + $LegacyGUIwatchdogTimersLabel.Text = "Watchdog timers updated $([DateTime]::Now.ToString())" - $WatchdogTimersDGV.BeginInit() - $WatchdogTimersDGV.ClearSelection() - $WatchdogTimersDGV.DataSource = $Variables.WatchdogTimers | Sort-Object -Property MinerName, Kicked | Select-Object @( + $LegacyGUIwatchdogTimersDGV.BeginInit() + $LegacyGUIwatchdogTimersDGV.ClearSelection() + $LegacyGUIwatchdogTimersDGV.DataSource = $Variables.WatchdogTimers | Sort-Object -Property MinerName, Kicked | Select-Object @( @{ Name = "Name"; Expression = { $_.MinerName } }, @{ Name = "Algorithms"; Expression = { $_.Algorithm } }, @{ Name = "Pool name"; Expression = { $_.PoolName } }, @@ -558,92 +558,92 @@ Function Update-TabControl { @{ Name = "Device(s)"; Expression = { $_.DeviceNames -join ', ' } }, @{ Name = "Last updated"; Expression = { (Get-TimeSince $_.Kicked.ToLocalTime()) } } ) | Out-DataTable - If ($WatchdogTimersDGV.Columns) { - $WatchdogTimersDGV.Columns[0].FillWeight = 120 - $WatchdogTimersDGV.Columns[1].FillWeight = 100 - $WatchdogTimersDGV.Columns[2].FillWeight = 100 - $WatchdogTimersDGV.Columns[3].FillWeight = 60 - $WatchdogTimersDGV.Columns[4].FillWeight = 30 + ($Variables.WatchdogTimers.ForEach({ $_.DeviceNames.Count }) | Measure-Object -Maximum).Maximum * 20 - $WatchdogTimersDGV.Columns[5].FillWeight = 100 + If ($LegacyGUIwatchdogTimersDGV.Columns) { + $LegacyGUIwatchdogTimersDGV.Columns[0].FillWeight = 120 + $LegacyGUIwatchdogTimersDGV.Columns[1].FillWeight = 100 + $LegacyGUIwatchdogTimersDGV.Columns[2].FillWeight = 100 + $LegacyGUIwatchdogTimersDGV.Columns[3].FillWeight = 60 + $LegacyGUIwatchdogTimersDGV.Columns[4].FillWeight = 30 + ($Variables.WatchdogTimers.ForEach({ $_.DeviceNames.Count }) | Measure-Object -Maximum).Maximum * 20 + $LegacyGUIwatchdogTimersDGV.Columns[5].FillWeight = 100 } - $WatchdogTimersDGV.EndInit() + $LegacyGUIwatchdogTimersDGV.EndInit() } - Else { $WatchdogTimersLabel.Text = "Watchdog timers - no data" } + Else { $LegacyGUIwatchdogTimersLabel.Text = "Watchdog timers - no data" } } Else { - $WatchdogTimersLabel.Text = "Watchdog is disabled (Configuration item 'Watchdog' -eq `$false)" + $LegacyGUIwatchdogTimersLabel.Text = "Watchdog is disabled (Configuration item 'Watchdog' -eq `$false)" } - $WatchdogTimersRemoveButton.Enabled = [Boolean]$WatchdogTimersDGV.Rows + $LegacyGUIwatchdogTimersRemoveButton.Enabled = [Boolean]$LegacyGUIwatchdogTimersDGV.Rows } } - $LegacyGUIForm.Cursor = [System.Windows.Forms.Cursors]::Normal + $LegacyGUIform.Cursor = [System.Windows.Forms.Cursors]::Normal } Function Form-Resize { - If ($LegacyGUIForm.Height -lt $LegacyGUIForm.MinimumSize.Height -or $LegacyGUIForm.Width -lt $LegacyGUIForm.MinimumSize.Width ) { Return } # Sometimes $LegacyGUIForm is smalle than minimum (Why?) + If ($LegacyGUIform.Height -lt $LegacyGUIform.MinimumSize.Height -or $LegacyGUIform.Width -lt $LegacyGUIform.MinimumSize.Width ) { Return } # Sometimes $LegacyGUIform is smalle than minimum (Why?) Try { - $TabControl.Width = $LegacyGUIForm.Width - 40 - $TabControl.Height = $LegacyGUIForm.Height - $MiningStatusLabel.Height - $MiningSummaryLabel.Height - $EditConfigLink.Height - 72 + $LegacyGUItabControl.Width = $LegacyGUIform.Width - 40 + $LegacyGUItabControl.Height = $LegacyGUIform.Height - $LegacyGUIminingStatusLabel.Height - $LegacyGUIminingSummaryLabel.Height - $LegacyGUIeditConfigLink.Height - 72 - $ButtonStart.Location = [System.Drawing.Point]::new(($LegacyGUIForm.Width - $ButtonStop.Width - $ButtonPause.Width - $ButtonStart.Width - 60), 6) - $ButtonPause.Location = [System.Drawing.Point]::new(($LegacyGUIForm.Width - $ButtonStop.Width - $ButtonPause.Width - 50), 6) - $ButtonStop.Location = [System.Drawing.Point]::new(($LegacyGUIForm.Width - $ButtonStop.Width - 40), 6) + $LegacyGUIbuttonStart.Location = [System.Drawing.Point]::new(($LegacyGUIform.Width - $LegacyGUIbuttonStop.Width - $LegacyGUIbuttonPause.Width - $LegacyGUIbuttonStart.Width - 60), 6) + $LegacyGUIbuttonPause.Location = [System.Drawing.Point]::new(($LegacyGUIform.Width - $LegacyGUIbuttonStop.Width - $LegacyGUIbuttonPause.Width - 50), 6) + $LegacyGUIbuttonStop.Location = [System.Drawing.Point]::new(($LegacyGUIform.Width - $LegacyGUIbuttonStop.Width - 40), 6) - $MiningSummaryLabel.Width = $Variables.TextBoxSystemLog.Width = $ActiveMinersDGV.Width = $EarningsChart.Width = $BalancesDGV.Width = $MinersPanel.Width = $MinersDGV.Width = $PoolsPanel.Width = $PoolsDGV.Width = $WorkersDGV.Width = $SwitchingDGV.Width = $WatchdogTimersDGV.Width = $TabControl.Width - 26 + $LegacyGUIminingSummaryLabel.Width = $Variables.TextBoxSystemLog.Width = $LegacyGUIactiveMinersDGV.Width = $LegacyGUIearningsChart.Width = $LegacyGUIbalancesDGV.Width = $LegacyGUIminersPanel.Width = $LegacyGUIminersDGV.Width = $LegacyGUIpoolsPanel.Width = $LegacyGUIpoolsDGV.Width = $LegacyGUIworkersDGV.Width = $LegacyGUIswitchingDGV.Width = $LegacyGUIwatchdogTimersDGV.Width = $LegacyGUItabControl.Width - 26 - If ($Config.BalancesTrackerPollInterval -gt 0 -and $BalancesDGV.RowCount -gt 0) { - $BalancesDGVHeight = ($BalancesDGV.Rows.Height | Measure-Object -Sum | Select-Object -ExpandProperty Sum) + $BalancesDGV.ColumnHeadersHeight - If ($BalancesDGVHeight -gt $TabControl.Height / 2) { - $EarningsChart.Height = $TabControl.Height / 2 - $BalancesDGV.ScrollBars = "Vertical" - $BalancesLabel.Location = [System.Drawing.Point]::new(8, ($TabControl.Height / 2 - 10)) + If ($Config.BalancesTrackerPollInterval -gt 0 -and $LegacyGUIbalancesDGV.RowCount -gt 0) { + $LegacyGUIbalancesDGVHeight = ($LegacyGUIbalancesDGV.Rows.Height | Measure-Object -Sum | Select-Object -ExpandProperty Sum) + $LegacyGUIbalancesDGV.ColumnHeadersHeight + If ($LegacyGUIbalancesDGVHeight -gt $LegacyGUItabControl.Height / 2) { + $LegacyGUIearningsChart.Height = $LegacyGUItabControl.Height / 2 + $LegacyGUIbalancesDGV.ScrollBars = "Vertical" + $LegacyGUIbalancesLabel.Location = [System.Drawing.Point]::new(8, ($LegacyGUItabControl.Height / 2 - 10)) } Else { - $EarningsChart.Height = $TabControl.Height - $BalancesDGVHeight - 46 - $BalancesDGV.ScrollBars = "None" - $BalancesLabel.Location = [System.Drawing.Point]::new(8, ($EarningsChart.Bottom - 20)) + $LegacyGUIearningsChart.Height = $LegacyGUItabControl.Height - $LegacyGUIbalancesDGVHeight - 46 + $LegacyGUIbalancesDGV.ScrollBars = "None" + $LegacyGUIbalancesLabel.Location = [System.Drawing.Point]::new(8, ($LegacyGUIearningsChart.Bottom - 20)) } } Else { - $BalancesDGV.ScrollBars = "None" - $BalancesLabel.Location = [System.Drawing.Point]::new(8, ($TabControl.Height - $BalancesLabel.Height - 50)) - $EarningsChart.Height = $BalancesLabel.Top + 36 + $LegacyGUIbalancesDGV.ScrollBars = "None" + $LegacyGUIbalancesLabel.Location = [System.Drawing.Point]::new(8, ($LegacyGUItabControl.Height - $LegacyGUIbalancesLabel.Height - 50)) + $LegacyGUIearningsChart.Height = $LegacyGUIbalancesLabel.Top + 36 } - $BalancesDGV.Location = [System.Drawing.Point]::new(10, $BalancesLabel.Bottom) - $BalancesDGV.Height = $TabControl.Height - $BalancesLabel.Bottom - 48 + $LegacyGUIbalancesDGV.Location = [System.Drawing.Point]::new(10, $LegacyGUIbalancesLabel.Bottom) + $LegacyGUIbalancesDGV.Height = $LegacyGUItabControl.Height - $LegacyGUIbalancesLabel.Bottom - 48 - $ActiveMinersDGV.Height = $ActiveMinersDGV.RowTemplate.Height * $ActiveMinersDGV.RowCount + $ActiveMinersDGV.ColumnHeadersHeight - If ($ActiveMinersDGV.Height -gt $TabControl.Height / 2) { - $ActiveMinersDGV.Height = $TabControl.Height / 2 - $ActiveMinersDGV.ScrollBars = "Vertical" + $LegacyGUIactiveMinersDGV.Height = $LegacyGUIactiveMinersDGV.RowTemplate.Height * $LegacyGUIactiveMinersDGV.RowCount + $LegacyGUIactiveMinersDGV.ColumnHeadersHeight + If ($LegacyGUIactiveMinersDGV.Height -gt $LegacyGUItabControl.Height / 2) { + $LegacyGUIactiveMinersDGV.Height = $LegacyGUItabControl.Height / 2 + $LegacyGUIactiveMinersDGV.ScrollBars = "Vertical" } Else { - $ActiveMinersDGV.ScrollBars = "None" + $LegacyGUIactiveMinersDGV.ScrollBars = "None" } - $SystemLogLabel.Location = [System.Drawing.Point]::new(8, ($ActiveMinersLabel.Height + $ActiveMinersDGV.Height + 25)) - $Variables.TextBoxSystemLog.Location = [System.Drawing.Point]::new(8, ($ActiveMinersLabel.Height + $ActiveMinersDGV.Height + $SystemLogLabel.Height + 24)) - $Variables.TextBoxSystemLog.Height = ($TabControl.Height - $ActiveMinersLabel.Height - $ActiveMinersDGV.Height - $SystemLogLabel.Height - 68) + $LegacyGUIsystemLogLabel.Location = [System.Drawing.Point]::new(8, ($LegacyGUIactiveMinersLabel.Height + $LegacyGUIactiveMinersDGV.Height + 25)) + $Variables.TextBoxSystemLog.Location = [System.Drawing.Point]::new(8, ($LegacyGUIactiveMinersLabel.Height + $LegacyGUIactiveMinersDGV.Height + $LegacyGUIsystemLogLabel.Height + 24)) + $Variables.TextBoxSystemLog.Height = ($LegacyGUItabControl.Height - $LegacyGUIactiveMinersLabel.Height - $LegacyGUIactiveMinersDGV.Height - $LegacyGUIsystemLogLabel.Height - 68) If (-not $Variables.TextBoxSystemLog.SelectionLength) { $Variables.TextBoxSystemLog.ScrollToCaret() } - $MinersDGV.Height = $TabControl.Height - $MinersLabel.Height - $MinersPanel.Height - 61 + $LegacyGUIminersDGV.Height = $LegacyGUItabControl.Height - $LegacyGUIminersLabel.Height - $LegacyGUIminersPanel.Height - 61 - $PoolsDGV.Height = $TabControl.Height - $PoolsLabel.Height - $PoolsPanel.Height - 61 + $LegacyGUIpoolsDGV.Height = $LegacyGUItabControl.Height - $LegacyGUIpoolsLabel.Height - $LegacyGUIpoolsPanel.Height - 61 - $WorkersDGV.Height = $TabControl.Height - $WorkersLabel.Height - 58 + $LegacyGUIworkersDGV.Height = $LegacyGUItabControl.Height - $LegacyGUIworkersLabel.Height - 58 - $SwitchingDGV.Height = $TabControl.Height - $SwitchingLogLabel.Height - $SwitchingLogClearButton.Height - 64 + $LegacyGUIswitchingDGV.Height = $LegacyGUItabControl.Height - $LegacyGUIswitchingLogLabel.Height - $LegacyGUIswitchingLogClearButton.Height - 64 - $WatchdogTimersDGV.Height = $TabControl.Height - $WatchdogTimersLabel.Height - $WatchdogTimersRemoveButton.Height - 64 + $LegacyGUIwatchdogTimersDGV.Height = $LegacyGUItabControl.Height - $LegacyGUIwatchdogTimersLabel.Height - $LegacyGUIwatchdogTimersRemoveButton.Height - 64 - $EditMonitoringLink.Location = [System.Drawing.Point]::new(($TabControl.Width - $EditMonitoringLink.Width - 12), 6) + $LegacyGUIeditMonitoringLink.Location = [System.Drawing.Point]::new(($LegacyGUItabControl.Width - $LegacyGUIeditMonitoringLink.Width - 12), 6) - $EditConfigLink.Location = [System.Drawing.Point]::new(10, ($LegacyGUIForm.Height - $EditConfigLink.Height - 58)) - $CopyrightLabel.Location = [System.Drawing.Point]::new(($TabControl.Width - $CopyrightLabel.Width + 6), ($LegacyGUIForm.Height - $EditConfigLink.Height - 58)) + $LegacyGUIeditConfigLink.Location = [System.Drawing.Point]::new(10, ($LegacyGUIform.Height - $LegacyGUIeditConfigLink.Height - 58)) + $LegacyGUIcopyrightLabel.Location = [System.Drawing.Point]::new(($LegacyGUItabControl.Width - $LegacyGUIcopyrightLabel.Width + 6), ($LegacyGUIform.Height - $LegacyGUIeditConfigLink.Height - 58)) } Catch { Start-Sleep 0 @@ -654,39 +654,39 @@ Function Update-GUIstatus { Switch ($Variables.MiningStatus) { "Idle" { - $MiningStatusLabel.Text = "$($Variables.Branding.ProductLabel) is stopped" - $MiningStatusLabel.ForeColor = [System.Drawing.Color]::Red - $MiningSummaryLabel.ForeColor = [System.Drawing.Color]::Black - $MiningSummaryLabel.Text = "Click the 'Start mining' button to make money." - $ButtonPause.Enabled = $true - $ButtonStart.Enabled = $true - $ButtonStop.Enabled = $false + $LegacyGUIminingStatusLabel.Text = "$($Variables.Branding.ProductLabel) is stopped" + $LegacyGUIminingStatusLabel.ForeColor = [System.Drawing.Color]::Red + $LegacyGUIminingSummaryLabel.ForeColor = [System.Drawing.Color]::Black + $LegacyGUIminingSummaryLabel.Text = "Click the 'Start mining' button to make money." + $LegacyGUIbuttonPause.Enabled = $true + $LegacyGUIbuttonStart.Enabled = $true + $LegacyGUIbuttonStop.Enabled = $false } "Paused" { - $MiningStatusLabel.Text = "$($Variables.Branding.ProductLabel) is paused" - $MiningStatusLabel.ForeColor = [System.Drawing.Color]::Blue - $MiningSummaryLabel.ForeColor = [System.Drawing.Color]::Black - $MiningSummaryLabel.Text = "Click the 'Start mining' button to make money." - $ButtonPause.Enabled = $false - $ButtonStart.Enabled = $true - $ButtonStop.Enabled = $true + $LegacyGUIminingStatusLabel.Text = "$($Variables.Branding.ProductLabel) is paused" + $LegacyGUIminingStatusLabel.ForeColor = [System.Drawing.Color]::Blue + $LegacyGUIminingSummaryLabel.ForeColor = [System.Drawing.Color]::Black + $LegacyGUIminingSummaryLabel.Text = "Click the 'Start mining' button to make money." + $LegacyGUIbuttonPause.Enabled = $false + $LegacyGUIbuttonStart.Enabled = $true + $LegacyGUIbuttonStop.Enabled = $true } "Running" { If ($Variables.IdleDetectionRunspace.MiningStatus -eq "Suspended") { - $MiningStatusLabel.Text = "$($Variables.Branding.ProductLabel) is suspended" - $MiningSummaryLabel.ForeColor = [System.Drawing.Color]::Black - $MiningSummaryLabel.Text = "Mining is suspended until system is idle for $($Config.IdleSec) second$(If ($Config.IdleSec -ne 1) { "s" })." - $MiningStatusLabel.ForeColor = [System.Drawing.Color]::blue + $LegacyGUIminingStatusLabel.Text = "$($Variables.Branding.ProductLabel) is suspended" + $LegacyGUIminingSummaryLabel.ForeColor = [System.Drawing.Color]::Black + $LegacyGUIminingSummaryLabel.Text = "Mining is suspended until system is idle for $($Config.IdleSec) second$(If ($Config.IdleSec -ne 1) { "s" })." + $LegacyGUIminingStatusLabel.ForeColor = [System.Drawing.Color]::blue } Else { - $MiningStatusLabel.Text = "$($Variables.Branding.ProductLabel) is running" - $MiningStatusLabel.ForeColor = [System.Drawing.Color]::Green + $LegacyGUIminingStatusLabel.Text = "$($Variables.Branding.ProductLabel) is running" + $LegacyGUIminingStatusLabel.ForeColor = [System.Drawing.Color]::Green } - $MiningSummaryLabel.ForeColor = [System.Drawing.Color]::Black - If (-not $MiningSummaryLabel.Text) { $MiningSummaryLabel.Text = "Starting mining processes..." } - $ButtonPause.Enabled = $true - $ButtonStart.Enabled = $false - $ButtonStop.Enabled = $true + $LegacyGUIminingSummaryLabel.ForeColor = [System.Drawing.Color]::Black + If (-not $LegacyGUIminingSummaryLabel.Text) { $LegacyGUIminingSummaryLabel.Text = "Starting mining processes..." } + $LegacyGUIbuttonPause.Enabled = $true + $LegacyGUIbuttonStart.Enabled = $false + $LegacyGUIbuttonStop.Enabled = $true } } Update-TabControl @@ -694,79 +694,79 @@ Function Update-GUIstatus { $Variables.TextBoxSystemLog.ScrollToCaret() } -$Tooltip = New-Object System.Windows.Forms.ToolTip +$LegacyGUItooltip = New-Object System.Windows.Forms.ToolTip -$LegacyGUIForm = New-Object System.Windows.Forms.Form +$LegacyGUIform = New-Object System.Windows.Forms.Form #--- For High DPI, First Call SuspendLayout(), after that, Set AutoScaleDimensions, AutoScaleMode --- # SuspendLayout() is Very important to correctly size and position all controls! -$LegacyGUIForm.SuspendLayout() -$LegacyGUIForm.AutoScaleDimensions = New-Object System.Drawing.SizeF(96, 96) -$LegacyGUIForm.AutoScaleMode = [System.Windows.Forms.AutoScaleMode]::DPI -$LegacyGUIForm.MaximizeBox = $true -$LegacyGUIForm.MinimumSize = [System.Drawing.Size]::new(800, 600) # best to keep under 800x600 -$LegacyGUIForm.Text = $Variables.Branding.ProductLabel -$LegacyGUIForm.TopMost = $false +$LegacyGUIform.SuspendLayout() +$LegacyGUIform.AutoScaleDimensions = New-Object System.Drawing.SizeF(96, 96) +$LegacyGUIform.AutoScaleMode = [System.Windows.Forms.AutoScaleMode]::DPI +$LegacyGUIform.MaximizeBox = $true +$LegacyGUIform.MinimumSize = [System.Drawing.Size]::new(800, 600) # best to keep under 800x600 +$LegacyGUIform.Text = $Variables.Branding.ProductLabel +$LegacyGUIform.TopMost = $false # Form Controls $LegacyGUIControls = @() -$StatusPage = New-Object System.Windows.Forms.TabPage -$StatusPage.Text = "System status" -$StatusPage.ToolTipText = "Show active miners and system log" -$EarningsPage = New-Object System.Windows.Forms.TabPage -$EarningsPage.Text = "Earnings" -$EarningsPage.ToolTipText = "Information about the calculated earnings / profit" -$MinersPage = New-Object System.Windows.Forms.TabPage -$MinersPage.Text = "Miners" -$MinersPage.ToolTipText = "Miner data collected in the last cycle" -$PoolsPage = New-Object System.Windows.Forms.TabPage -$PoolsPage.Text = "Pools" -$PoolsPage.ToolTipText = "Pool data collected in the last cycle" -$RigMonitorPage = New-Object System.Windows.Forms.TabPage -$RigMonitorPage.Text = "Rig monitor" -$RigMonitorPage.ToolTipText = "Consolidated overview of all known mining rigs" -$SwitchingPage = New-Object System.Windows.Forms.TabPage -$SwitchingPage.Text = "Switching log" -$SwitchingPage.ToolTipText = "List of the previously launched miners" -$WatchdogTimersPage = New-Object System.Windows.Forms.TabPage -$WatchdogTimersPage.Text = "Watchdog timers" -$WatchdogTimersPage.ToolTipText = "List of all watchdog timers" - -$MiningStatusLabel = New-Object System.Windows.Forms.Label -$MiningStatusLabel.AutoSize = $false -$MiningStatusLabel.BackColor = [System.Drawing.Color]::Transparent -$MiningStatusLabel.Font = [System.Drawing.Font]::new("Microsoft Sans Serif", 12) -$MiningStatusLabel.ForeColor = [System.Drawing.Color]::Black -$MiningStatusLabel.Height = 20 -$MiningStatusLabel.Location = [System.Drawing.Point]::new(6, 10) -$MiningStatusLabel.Text = "$($Variables.Branding.ProductLabel)" -$MiningStatusLabel.TextAlign = "MiddleLeft" -$MiningStatusLabel.Visible = $true -$MiningStatusLabel.Width = 360 -$LegacyGUIControls += $MiningStatusLabel - -$MiningSummaryLabel = New-Object System.Windows.Forms.Label -$MiningSummaryLabel.AutoSize = $false -$MiningSummaryLabel.BackColor = [System.Drawing.Color]::Transparent -$MiningSummaryLabel.BorderStyle = 'None' -$MiningSummaryLabel.Font = [System.Drawing.Font]::new("Microsoft Sans Serif", 10) -$MiningSummaryLabel.ForeColor = [System.Drawing.Color]::Black -$MiningSummaryLabel.Height = 80 -$MiningSummaryLabel.Location = [System.Drawing.Point]::new(6, $MiningStatusLabel.Bottom) -$MiningSummaryLabel.Tag = "" -$MiningSummaryLabel.TextAlign = "MiddleLeft" -$MiningSummaryLabel.Visible = $true -$LegacyGUIControls += $MiningSummaryLabel -$Tooltip.SetToolTip($MiningSummaryLabel, "Color legend:`rBlack: Mining profitability is unknown`rGreen: Mining is profitable`rRed: Mining is NOT profitable") - -$ButtonPause = New-Object System.Windows.Forms.Button -$ButtonPause.Enabled = $true -$ButtonPause.Font = [System.Drawing.Font]::new("Microsoft Sans Serif", 10) -$ButtonPause.Height = 24 -$ButtonPause.Text = "Pause mining" -$ButtonPause.Visible = $true -$ButtonPause.Width = 100 -$ButtonPause.Add_Click( +$LegacyGUIstatusPage = New-Object System.Windows.Forms.TabPage +$LegacyGUIstatusPage.Text = "System status" +$LegacyGUIstatusPage.ToolTipText = "Show active miners and system log" +$LegacyGUIearningsPage = New-Object System.Windows.Forms.TabPage +$LegacyGUIearningsPage.Text = "Earnings" +$LegacyGUIearningsPage.ToolTipText = "Information about the calculated earnings / profit" +$LegacyGUIminersPage = New-Object System.Windows.Forms.TabPage +$LegacyGUIminersPage.Text = "Miners" +$LegacyGUIminersPage.ToolTipText = "Miner data collected in the last cycle" +$LegacyGUIpoolsPage = New-Object System.Windows.Forms.TabPage +$LegacyGUIpoolsPage.Text = "Pools" +$LegacyGUIpoolsPage.ToolTipText = "Pool data collected in the last cycle" +$LegacyGUIrigMonitorPage = New-Object System.Windows.Forms.TabPage +$LegacyGUIrigMonitorPage.Text = "Rig monitor" +$LegacyGUIrigMonitorPage.ToolTipText = "Consolidated overview of all known mining rigs" +$LegacyGUIswitchingPage = New-Object System.Windows.Forms.TabPage +$LegacyGUIswitchingPage.Text = "Switching log" +$LegacyGUIswitchingPage.ToolTipText = "List of the previously launched miners" +$LegacyGUIwatchdogTimersPage = New-Object System.Windows.Forms.TabPage +$LegacyGUIwatchdogTimersPage.Text = "Watchdog timers" +$LegacyGUIwatchdogTimersPage.ToolTipText = "List of all watchdog timers" + +$LegacyGUIminingStatusLabel = New-Object System.Windows.Forms.Label +$LegacyGUIminingStatusLabel.AutoSize = $false +$LegacyGUIminingStatusLabel.BackColor = [System.Drawing.Color]::Transparent +$LegacyGUIminingStatusLabel.Font = [System.Drawing.Font]::new("Microsoft Sans Serif", 12) +$LegacyGUIminingStatusLabel.ForeColor = [System.Drawing.Color]::Black +$LegacyGUIminingStatusLabel.Height = 20 +$LegacyGUIminingStatusLabel.Location = [System.Drawing.Point]::new(6, 10) +$LegacyGUIminingStatusLabel.Text = "$($Variables.Branding.ProductLabel)" +$LegacyGUIminingStatusLabel.TextAlign = "MiddleLeft" +$LegacyGUIminingStatusLabel.Visible = $true +$LegacyGUIminingStatusLabel.Width = 360 +$LegacyGUIControls += $LegacyGUIminingStatusLabel + +$LegacyGUIminingSummaryLabel = New-Object System.Windows.Forms.Label +$LegacyGUIminingSummaryLabel.AutoSize = $false +$LegacyGUIminingSummaryLabel.BackColor = [System.Drawing.Color]::Transparent +$LegacyGUIminingSummaryLabel.BorderStyle = 'None' +$LegacyGUIminingSummaryLabel.Font = [System.Drawing.Font]::new("Microsoft Sans Serif", 10) +$LegacyGUIminingSummaryLabel.ForeColor = [System.Drawing.Color]::Black +$LegacyGUIminingSummaryLabel.Height = 80 +$LegacyGUIminingSummaryLabel.Location = [System.Drawing.Point]::new(6, $LegacyGUIminingStatusLabel.Bottom) +$LegacyGUIminingSummaryLabel.Tag = "" +$LegacyGUIminingSummaryLabel.TextAlign = "MiddleLeft" +$LegacyGUIminingSummaryLabel.Visible = $true +$LegacyGUIControls += $LegacyGUIminingSummaryLabel +$LegacyGUItooltip.SetToolTip($LegacyGUIminingSummaryLabel, "Color legend:`rBlack: Mining profitability is unknown`rGreen: Mining is profitable`rRed: Mining is NOT profitable") + +$LegacyGUIbuttonPause = New-Object System.Windows.Forms.Button +$LegacyGUIbuttonPause.Enabled = $true +$LegacyGUIbuttonPause.Font = [System.Drawing.Font]::new("Microsoft Sans Serif", 10) +$LegacyGUIbuttonPause.Height = 24 +$LegacyGUIbuttonPause.Text = "Pause mining" +$LegacyGUIbuttonPause.Visible = $true +$LegacyGUIbuttonPause.Width = 100 +$LegacyGUIbuttonPause.Add_Click( { If ($Variables.NewMiningStatus -ne "Paused") { # $Variables.Summary = "'Pause mining' button pressed.
Pausing $($Variables.Branding.ProductLabel)..." @@ -776,17 +776,17 @@ $ButtonPause.Add_Click( } } ) -$LegacyGUIControls += $ButtonPause -$Tooltip.SetToolTip($ButtonPause, "Pause mining processes.`rBackground processes remain running.") - -$ButtonStart = New-Object System.Windows.Forms.Button -$ButtonStart.Enabled = $true -$ButtonStart.Font = [System.Drawing.Font]::new("Microsoft Sans Serif", 10) -$ButtonStart.Height = 24 -$ButtonStart.Text = "Start mining" -$ButtonStart.Visible = $true -$ButtonStart.Width = 100 -$ButtonStart.Add_Click( +$LegacyGUIControls += $LegacyGUIbuttonPause +$LegacyGUItooltip.SetToolTip($LegacyGUIbuttonPause, "Pause mining processes.`rBackground processes remain running.") + +$LegacyGUIbuttonStart = New-Object System.Windows.Forms.Button +$LegacyGUIbuttonStart.Enabled = $true +$LegacyGUIbuttonStart.Font = [System.Drawing.Font]::new("Microsoft Sans Serif", 10) +$LegacyGUIbuttonStart.Height = 24 +$LegacyGUIbuttonStart.Text = "Start mining" +$LegacyGUIbuttonStart.Visible = $true +$LegacyGUIbuttonStart.Width = 100 +$LegacyGUIbuttonStart.Add_Click( { If ($Variables.NewMiningStatus -ne "Running" -or $Variables.IdleDetectionRunspace -eq "Idle") { # $Variables.Summary = "Start mining' button clicked.
Starting $($Variables.Branding.ProductLabel)..." @@ -796,17 +796,17 @@ $ButtonStart.Add_Click( } } ) -$LegacyGUIControls += $ButtonStart -$Tooltip.SetToolTip($ButtonStart, "Start the mining process.") - -$ButtonStop = New-Object System.Windows.Forms.Button -$ButtonStop.Enabled = $true -$ButtonStop.Font = [System.Drawing.Font]::new("Microsoft Sans Serif", 10) -$ButtonStop.Height = 24 -$ButtonStop.Text = "Stop mining" -$ButtonStop.Visible = $true -$ButtonStop.Width = 100 -$ButtonStop.Add_Click( +$LegacyGUIControls += $LegacyGUIbuttonStart +$LegacyGUItooltip.SetToolTip($LegacyGUIbuttonStart, "Start the mining process.") + +$LegacyGUIbuttonStop = New-Object System.Windows.Forms.Button +$LegacyGUIbuttonStop.Enabled = $true +$LegacyGUIbuttonStop.Font = [System.Drawing.Font]::new("Microsoft Sans Serif", 10) +$LegacyGUIbuttonStop.Height = 24 +$LegacyGUIbuttonStop.Text = "Stop mining" +$LegacyGUIbuttonStop.Visible = $true +$LegacyGUIbuttonStop.Width = 100 +$LegacyGUIbuttonStop.Add_Click( { If ($Variables.NewMiningStatus -ne "Idle") { # $Variables.Summary = "'Stop mining' button clicked.
Stopping $($Variables.Branding.ProductLabel)..." @@ -816,54 +816,54 @@ $ButtonStop.Add_Click( } } ) -$LegacyGUIControls += $ButtonStop -$Tooltip.SetToolTip($ButtonStop, "Stop mining processes.`rBackground processes will also stop.") - -$EditConfigLink = New-Object System.Windows.Forms.LinkLabel -$EditConfigLink.ActiveLinkColor = [System.Drawing.Color]::Blue -$EditConfigLink.Font = [System.Drawing.Font]::new("Microsoft Sans Serif", 10) -$EditConfigLink.LinkColor = [System.Drawing.Color]::Blue -$EditConfigLink.Location = [System.Drawing.Point]::new(10, ($LegacyGUIForm.Bottom - 26)) -$EditConfigLink.TextAlign = "MiddleLeft" -$EditConfigLink.Size = New-Object System.Drawing.Size(380, 26) -$EditConfigLink.Add_Click({ If ($EditConfigLink.Tag -eq "WebGUI") { Start-Process "http://localhost:$($Variables.APIRunspace.APIport)/configedit.html" } Else { Edit-File $Variables.ConfigFile } }) -$LegacyGUIControls += $EditConfigLink -$Tooltip.SetToolTip($EditConfigLink, "Click to the edit configuration") - -$CopyrightLabel = New-Object System.Windows.Forms.LinkLabel -$CopyrightLabel.ActiveLinkColor = [System.Drawing.Color]::Blue -$CopyrightLabel.Font = [System.Drawing.Font]::new("Microsoft Sans Serif", 10) -$CopyrightLabel.Location = [System.Drawing.Point]::new(10, ($LegacyGUIForm.Bottom - 26)) -$CopyrightLabel.LinkColor = [System.Drawing.Color]::Blue -$CopyrightLabel.Size = New-Object System.Drawing.Size(380, 26) -$CopyrightLabel.Text = "Copyright (c) 2018-$([DateTime]::Now.Year) UselessGuru" -$CopyrightLabel.TextAlign = "MiddleRight" -$CopyrightLabel.Add_Click({ Start-Process "https://github.com/UselessGuru/UG-Miner/blob/master/LICENSE" }) -$LegacyGUIControls += $CopyrightLabel -$Tooltip.SetToolTip($CopyrightLabel, "Click to go to the $($Variables.Branding.ProductLabel) Github page") +$LegacyGUIControls += $LegacyGUIbuttonStop +$LegacyGUItooltip.SetToolTip($LegacyGUIbuttonStop, "Stop mining processes.`rBackground processes will also stop.") + +$LegacyGUIeditConfigLink = New-Object System.Windows.Forms.LinkLabel +$LegacyGUIeditConfigLink.ActiveLinkColor = [System.Drawing.Color]::Blue +$LegacyGUIeditConfigLink.Font = [System.Drawing.Font]::new("Microsoft Sans Serif", 10) +$LegacyGUIeditConfigLink.LinkColor = [System.Drawing.Color]::Blue +$LegacyGUIeditConfigLink.Location = [System.Drawing.Point]::new(10, ($LegacyGUIform.Bottom - 26)) +$LegacyGUIeditConfigLink.TextAlign = "MiddleLeft" +$LegacyGUIeditConfigLink.Size = New-Object System.Drawing.Size(380, 26) +$LegacyGUIeditConfigLink.Add_Click({ If ($LegacyGUIeditConfigLink.Tag -eq "WebGUI") { Start-Process "http://localhost:$($Variables.APIRunspace.APIport)/configedit.html" } Else { Edit-File $Variables.ConfigFile } }) +$LegacyGUIControls += $LegacyGUIeditConfigLink +$LegacyGUItooltip.SetToolTip($LegacyGUIeditConfigLink, "Click to the edit configuration") + +$LegacyGUIcopyrightLabel = New-Object System.Windows.Forms.LinkLabel +$LegacyGUIcopyrightLabel.ActiveLinkColor = [System.Drawing.Color]::Blue +$LegacyGUIcopyrightLabel.Font = [System.Drawing.Font]::new("Microsoft Sans Serif", 10) +$LegacyGUIcopyrightLabel.Location = [System.Drawing.Point]::new(10, ($LegacyGUIform.Bottom - 26)) +$LegacyGUIcopyrightLabel.LinkColor = [System.Drawing.Color]::Blue +$LegacyGUIcopyrightLabel.Size = New-Object System.Drawing.Size(380, 26) +$LegacyGUIcopyrightLabel.Text = "Copyright (c) 2018-$([DateTime]::Now.Year) UselessGuru" +$LegacyGUIcopyrightLabel.TextAlign = "MiddleRight" +$LegacyGUIcopyrightLabel.Add_Click({ Start-Process "https://github.com/UselessGuru/UG-Miner/blob/master/LICENSE" }) +$LegacyGUIControls += $LegacyGUIcopyrightLabel +$LegacyGUItooltip.SetToolTip($LegacyGUIcopyrightLabel, "Click to go to the $($Variables.Branding.ProductLabel) Github page") # Miner context menu items -$ContextMenuStrip = New-Object System.Windows.Forms.ContextMenuStrip -$ContextMenuStrip.Enabled = $false -[System.Windows.Forms.ToolStripItem]$ContextMenuStripItem1 = New-Object System.Windows.Forms.ToolStripMenuItem -[Void]$ContextMenuStrip.Items.Add($ContextMenuStripItem1) +$LegacyGUIcontextMenuStrip = New-Object System.Windows.Forms.ContextMenuStrip +$LegacyGUIcontextMenuStrip.Enabled = $false +[System.Windows.Forms.ToolStripItem]$LegacyGUIcontextMenuStripItem1 = New-Object System.Windows.Forms.ToolStripMenuItem +[Void]$LegacyGUIcontextMenuStrip.Items.Add($LegacyGUIcontextMenuStripItem1) -[System.Windows.Forms.ToolStripItem]$ContextMenuStripItem2 = New-Object System.Windows.Forms.ToolStripMenuItem -[Void]$ContextMenuStrip.Items.Add($ContextMenuStripItem2) +[System.Windows.Forms.ToolStripItem]$LegacyGUIcontextMenuStripItem2 = New-Object System.Windows.Forms.ToolStripMenuItem +[Void]$LegacyGUIcontextMenuStrip.Items.Add($LegacyGUIcontextMenuStripItem2) -[System.Windows.Forms.ToolStripItem]$ContextMenuStripItem3 = New-Object System.Windows.Forms.ToolStripMenuItem -[Void]$ContextMenuStrip.Items.Add($ContextMenuStripItem3) +[System.Windows.Forms.ToolStripItem]$LegacyGUIcontextMenuStripItem3 = New-Object System.Windows.Forms.ToolStripMenuItem +[Void]$LegacyGUIcontextMenuStrip.Items.Add($LegacyGUIcontextMenuStripItem3) -[System.Windows.Forms.ToolStripItem]$ContextMenuStripItem4 = New-Object System.Windows.Forms.ToolStripMenuItem -[Void]$ContextMenuStrip.Items.Add($ContextMenuStripItem4) +[System.Windows.Forms.ToolStripItem]$LegacyGUIcontextMenuStripItem4 = New-Object System.Windows.Forms.ToolStripMenuItem +[Void]$LegacyGUIcontextMenuStrip.Items.Add($LegacyGUIcontextMenuStripItem4) -[System.Windows.Forms.ToolStripItem]$ContextMenuStripItem5 = New-Object System.Windows.Forms.ToolStripMenuItem -[Void]$ContextMenuStrip.Items.Add($ContextMenuStripItem5) +[System.Windows.Forms.ToolStripItem]$LegacyGUIcontextMenuStripItem5 = New-Object System.Windows.Forms.ToolStripMenuItem +[Void]$LegacyGUIcontextMenuStrip.Items.Add($LegacyGUIcontextMenuStripItem5) -[System.Windows.Forms.ToolStripItem]$ContextMenuStripItem6 = New-Object System.Windows.Forms.ToolStripMenuItem -[Void]$ContextMenuStrip.Items.Add($ContextMenuStripItem6) +[System.Windows.Forms.ToolStripItem]$LegacyGUIcontextMenuStripItem6 = New-Object System.Windows.Forms.ToolStripMenuItem +[Void]$LegacyGUIcontextMenuStrip.Items.Add($LegacyGUIcontextMenuStripItem6) -$ContextMenuStrip.Add_ItemClicked( +$LegacyGUIcontextMenuStrip.Add_ItemClicked( { $Data = @() @@ -906,7 +906,7 @@ $ContextMenuStrip.Add_ItemClicked( If (-not $_.Reasons) { $_.Available = $true } } ) - $ContextMenuStrip.Visible = $false + $LegacyGUIcontextMenuStrip.Visible = $false If ($Data) { $Data = $Data | Sort-Object -Unique $Message = "Re-benchmark triggered for $($Data.Count) miner$(If ($Data.Count -ne 1) { "s" })." @@ -932,7 +932,7 @@ $ContextMenuStrip.Add_ItemClicked( If ($_.Status -eq "Disabled") { $_.Status = "Idle" } } ) - $ContextMenuStrip.Visible = $false + $LegacyGUIcontextMenuStrip.Visible = $false If ($Data) { $Data = $Data | Sort-Object -Unique $Message = "Re-measure power consumption triggered for $($Data.Count) miner$(If ($Data.Count -ne 1) { "s" })." @@ -962,7 +962,7 @@ $ContextMenuStrip.Add_ItemClicked( $_.Reasons = [System.Collections.Generic.List[String]]@($_.Reasons.Where({ $_ -notlike "Disabled by user" }) | Sort-Object -Unique) } ) - $ContextMenuStrip.Visible = $false + $LegacyGUIcontextMenuStrip.Visible = $false If ($Data) { $Data = $Data | Sort-Object -Unique $Message = "Marked $($Data.Count) miner$(If ($Data.Count -ne 1) { "s" }) as failed." @@ -987,7 +987,7 @@ $ContextMenuStrip.Add_ItemClicked( $_.Reasons = [System.Collections.Generic.List[String]]@($_.Reasons.Where({ $_ -ne "Disabled by user" }) | Sort-Object -Unique) } ) - $ContextMenuStrip.Visible = $false + $LegacyGUIcontextMenuStrip.Visible = $false If ($Data = $Data | Sort-Object -Unique) { $Message = "Disabled $($Data.Count) miner$(If ($Data.Count -ne 1) { "s" })." Write-Message -Level Verbose "GUI: $Message" @@ -1010,7 +1010,7 @@ $ContextMenuStrip.Add_ItemClicked( If (-not $_.Reasons) { $_.Available = $true } } ) - $ContextMenuStrip.Visible = $false + $LegacyGUIcontextMenuStrip.Visible = $false If ($Data = $Data | Sort-Object -Unique) { $Message = "Enabled $($Data.Count) miner$(If ($Data.Count -ne 1) { "s" })." Write-Message -Level Verbose "GUI: $Message" @@ -1036,7 +1036,7 @@ $ContextMenuStrip.Add_ItemClicked( $Variables.WatchdogTimers = @($Variables.WatchdogTimers.Where({ $_.MinerName -ne $Miner.Name })) } ) - $ContextMenuStrip.Visible = $false + $LegacyGUIcontextMenuStrip.Visible = $false If ($Data) { $Data = $Data | Sort-Object -Unique $Message = "$($Data.Count) miner watchdog timer$(If ($Data.Count -ne 1) { "s" }) removed." @@ -1072,7 +1072,7 @@ $ContextMenuStrip.Add_ItemClicked( ) } ) - $ContextMenuStrip.Visible = $false + $LegacyGUIcontextMenuStrip.Visible = $false If ($Data) { $Data = $Data | Sort-Object -Unique $Message = "Pool stats for $($Data.Count) pool$(If ($Data.Count -ne 1) { "s" }) reset." @@ -1100,7 +1100,7 @@ $ContextMenuStrip.Add_ItemClicked( $Variables.WatchdogTimers = @($Variables.WatchdogTimers.Where({ $_.PoolName -ne $SelectedPoolName -or $_.Algorithm -ne $SelectedPoolAlgorithm})) } ) - $ContextMenuStrip.Visible = $false + $LegacyGUIcontextMenuStrip.Visible = $false If ($Data) { $Data = $Data | Sort-Object -Unique $Message = "$($Data.Count) pool watchdog timer$(If ($Data.Count -ne 1) { "s" }) removed." @@ -1120,61 +1120,61 @@ $ContextMenuStrip.Add_ItemClicked( ) # CheckBox Column for DataGridView -$CheckBoxColumn = New-Object System.Windows.Forms.DataGridViewCheckBoxColumn -$CheckBoxColumn.HeaderText = "" -$CheckBoxColumn.Name = "CheckBoxColumn" -$CheckBoxColumn.ReadOnly = $false +$LegacyGUIcheckBoxColumn = New-Object System.Windows.Forms.DataGridViewCheckBoxColumn +$LegacyGUIcheckBoxColumn.HeaderText = "" +$LegacyGUIcheckBoxColumn.Name = "CheckBoxColumn" +$LegacyGUIcheckBoxColumn.ReadOnly = $false # Run Page Controls -$StatusPageControls = @() - -$ActiveMinersLabel = New-Object System.Windows.Forms.Label -$ActiveMinersLabel.AutoSize = $false -$ActiveMinersLabel.Font = [System.Drawing.Font]::new("Microsoft Sans Serif", 10) -$ActiveMinersLabel.Height = 20 -$ActiveMinersLabel.Location = [System.Drawing.Point]::new(6, 6) -$ActiveMinersLabel.Width = 600 -$StatusPageControls += $ActiveMinersLabel - -$ActiveMinersDGV = New-Object System.Windows.Forms.DataGridView -$ActiveMinersDGV.AllowUserToAddRows = $false -$ActiveMinersDGV.AllowUserToDeleteRows = $false -$ActiveMinersDGV.AllowUserToOrderColumns = $true -$ActiveMinersDGV.AllowUserToResizeColumns = $true -$ActiveMinersDGV.AllowUserToResizeRows = $false -$ActiveMinersDGV.AutoSizeColumnsMode = "Fill" -$ActiveMinersDGV.ColumnHeadersDefaultCellStyle.BackColor = [System.Drawing.SystemColors]::MenuBar -$ActiveMinersDGV.ColumnHeadersDefaultCellStyle.SelectionBackColor = [System.Drawing.SystemColors]::MenuBar -$ActiveMinersDGV.ColumnHeadersHeightSizeMode = "AutoSize" -$ActiveMinersDGV.ContextMenuStrip = $ContextMenuStrip -$ActiveMinersDGV.DataBindings.DefaultDataSourceUpdateMode = 0 -$ActiveMinersDGV.EnableHeadersVisualStyles = $false -$ActiveMinersDGV.Font = [System.Drawing.Font]::new("Segoe UI", 9) -$ActiveMinersDGV.Height = 3 -$ActiveMinersDGV.Location = [System.Drawing.Point]::new(6, ($ActiveMinersLabel.Height + 6)) -$ActiveMinersDGV.Name = "LaunchedMinersDGV" -$ActiveMinersDGV.ReadOnly = $true -$ActiveMinersDGV.RowHeadersVisible = $false -$ActiveMinersDGV.ScrollBars = "None" -$ActiveMinersDGV.SelectionMode = "FullRowSelect" -$ActiveMinersDGV.Add_MouseUP( +$LegacyGUIstatusPageControls = @() + +$LegacyGUIactiveMinersLabel = New-Object System.Windows.Forms.Label +$LegacyGUIactiveMinersLabel.AutoSize = $false +$LegacyGUIactiveMinersLabel.Font = [System.Drawing.Font]::new("Microsoft Sans Serif", 10) +$LegacyGUIactiveMinersLabel.Height = 20 +$LegacyGUIactiveMinersLabel.Location = [System.Drawing.Point]::new(6, 6) +$LegacyGUIactiveMinersLabel.Width = 600 +$LegacyGUIstatusPageControls += $LegacyGUIactiveMinersLabel + +$LegacyGUIactiveMinersDGV = New-Object System.Windows.Forms.DataGridView +$LegacyGUIactiveMinersDGV.AllowUserToAddRows = $false +$LegacyGUIactiveMinersDGV.AllowUserToDeleteRows = $false +$LegacyGUIactiveMinersDGV.AllowUserToOrderColumns = $true +$LegacyGUIactiveMinersDGV.AllowUserToResizeColumns = $true +$LegacyGUIactiveMinersDGV.AllowUserToResizeRows = $false +$LegacyGUIactiveMinersDGV.AutoSizeColumnsMode = "Fill" +$LegacyGUIactiveMinersDGV.ColumnHeadersDefaultCellStyle.BackColor = [System.Drawing.SystemColors]::MenuBar +$LegacyGUIactiveMinersDGV.ColumnHeadersDefaultCellStyle.SelectionBackColor = [System.Drawing.SystemColors]::MenuBar +$LegacyGUIactiveMinersDGV.ColumnHeadersHeightSizeMode = "AutoSize" +$LegacyGUIactiveMinersDGV.ContextMenuStrip = $LegacyGUIcontextMenuStrip +$LegacyGUIactiveMinersDGV.DataBindings.DefaultDataSourceUpdateMode = 0 +$LegacyGUIactiveMinersDGV.EnableHeadersVisualStyles = $false +$LegacyGUIactiveMinersDGV.Font = [System.Drawing.Font]::new("Segoe UI", 9) +$LegacyGUIactiveMinersDGV.Height = 3 +$LegacyGUIactiveMinersDGV.Location = [System.Drawing.Point]::new(6, ($LegacyGUIactiveMinersLabel.Height + 6)) +$LegacyGUIactiveMinersDGV.Name = "LaunchedMinersDGV" +$LegacyGUIactiveMinersDGV.ReadOnly = $true +$LegacyGUIactiveMinersDGV.RowHeadersVisible = $false +$LegacyGUIactiveMinersDGV.ScrollBars = "None" +$LegacyGUIactiveMinersDGV.SelectionMode = "FullRowSelect" +$LegacyGUIactiveMinersDGV.Add_MouseUP( { If ($_.Button -eq [System.Windows.Forms.MouseButtons]::Right) { - $ContextMenuStrip.Enabled = [Boolean]$This.SelectedRows + $LegacyGUIcontextMenuStrip.Enabled = [Boolean]$This.SelectedRows } } ) -$ActiveMinersDGV.Add_Sorted({ Set-TableColor -DataGridView $ActiveMinersDGV }) -Set-DataGridViewDoubleBuffer -Grid $ActiveMinersDGV -Enabled $true -$StatusPageControls += $ActiveMinersDGV - -$SystemLogLabel = New-Object System.Windows.Forms.Label -$SystemLogLabel.AutoSize = $false -$SystemLogLabel.Font = [System.Drawing.Font]::new("Microsoft Sans Serif", 10) -$SystemLogLabel.Height = 20 -$SystemLogLabel.Text = "System Log" -$SystemLogLabel.Width = 600 -$StatusPageControls += $SystemLogLabel +$LegacyGUIactiveMinersDGV.Add_Sorted({ Set-TableColor -DataGridView $LegacyGUIactiveMinersDGV }) +Set-DataGridViewDoubleBuffer -Grid $LegacyGUIactiveMinersDGV -Enabled $true +$LegacyGUIstatusPageControls += $LegacyGUIactiveMinersDGV + +$LegacyGUIsystemLogLabel = New-Object System.Windows.Forms.Label +$LegacyGUIsystemLogLabel.AutoSize = $false +$LegacyGUIsystemLogLabel.Font = [System.Drawing.Font]::new("Microsoft Sans Serif", 10) +$LegacyGUIsystemLogLabel.Height = 20 +$LegacyGUIsystemLogLabel.Text = "System Log" +$LegacyGUIsystemLogLabel.Width = 600 +$LegacyGUIstatusPageControls += $LegacyGUIsystemLogLabel $Variables.TextBoxSystemLog = New-Object System.Windows.Forms.TextBox $Variables.TextBoxSystemLog.AutoSize = $true @@ -1184,386 +1184,386 @@ $Variables.TextBoxSystemLog.ReadOnly = $true $Variables.TextBoxSystemLog.Scrollbars = "Vertical" $Variables.TextBoxSystemLog.Text = "" $Variables.TextBoxSystemLog.WordWrap = $true -$StatusPageControls += $Variables.TextBoxSystemLog -$Tooltip.SetToolTip($Variables.TextBoxSystemLog, "These are the last 100 lines of the system log") +$LegacyGUIstatusPageControls += $Variables.TextBoxSystemLog +$LegacyGUItooltip.SetToolTip($Variables.TextBoxSystemLog, "These are the last 100 lines of the system log") # Earnings Page Controls -$EarningsPageControls = @() - -$EarningsChart = New-Object System.Windows.Forms.DataVisualization.Charting.Chart -$EarningsChart.BackColor = [System.Drawing.Color]::FromArgb(255, 240, 240, 240) -$EarningsChart.Location = [System.Drawing.Point]::new(-10, -5) -$EarningsPageControls += $EarningsChart - -$BalancesLabel = New-Object System.Windows.Forms.Label -$BalancesLabel.AutoSize = $false -$BalancesLabel.BringToFront() -$BalancesLabel.Font = [System.Drawing.Font]::new("Microsoft Sans Serif", 10) -$BalancesLabel.Height = 20 -$BalancesLabel.Width = 600 -$EarningsPageControls += $BalancesLabel - -$BalancesDGV = New-Object System.Windows.Forms.DataGridView -$BalancesDGV.AllowUserToAddRows = $false -$BalancesDGV.AllowUserToDeleteRows = $false -$BalancesDGV.AllowUserToOrderColumns = $true -$BalancesDGV.AllowUserToResizeColumns = $true -$BalancesDGV.AllowUserToResizeRows = $false -$BalancesDGV.AutoSizeColumnsMode = "Fill" -$BalancesDGV.ColumnHeadersDefaultCellStyle.BackColor = [System.Drawing.SystemColors]::MenuBar -$BalancesDGV.ColumnHeadersHeightSizeMode = "AutoSize" -$BalancesDGV.DataBindings.DefaultDataSourceUpdateMode = 0 -$BalancesDGV.EnableHeadersVisualStyles = $false -$BalancesDGV.Font = [System.Drawing.Font]::new("Segoe UI", 9) -$BalancesDGV.Height = 3 -$BalancesDGV.Location = [System.Drawing.Point]::new(8, 187) -$BalancesDGV.Name = "EarningsDGV" -$BalancesDGV.ReadOnly = $true -$BalancesDGV.RowHeadersVisible = $false -$BalancesDGV.ScrollBars = "None" -Set-DataGridViewDoubleBuffer -Grid $BalancesDGV -Enabled $true -$EarningsPageControls += $BalancesDGV +$LegacyGUIearningsPageControls = @() + +$LegacyGUIearningsChart = New-Object System.Windows.Forms.DataVisualization.Charting.Chart +$LegacyGUIearningsChart.BackColor = [System.Drawing.Color]::FromArgb(255, 240, 240, 240) +$LegacyGUIearningsChart.Location = [System.Drawing.Point]::new(-10, -5) +$LegacyGUIearningsPageControls += $LegacyGUIearningsChart + +$LegacyGUIbalancesLabel = New-Object System.Windows.Forms.Label +$LegacyGUIbalancesLabel.AutoSize = $false +$LegacyGUIbalancesLabel.BringToFront() +$LegacyGUIbalancesLabel.Font = [System.Drawing.Font]::new("Microsoft Sans Serif", 10) +$LegacyGUIbalancesLabel.Height = 20 +$LegacyGUIbalancesLabel.Width = 600 +$LegacyGUIearningsPageControls += $LegacyGUIbalancesLabel + +$LegacyGUIbalancesDGV = New-Object System.Windows.Forms.DataGridView +$LegacyGUIbalancesDGV.AllowUserToAddRows = $false +$LegacyGUIbalancesDGV.AllowUserToDeleteRows = $false +$LegacyGUIbalancesDGV.AllowUserToOrderColumns = $true +$LegacyGUIbalancesDGV.AllowUserToResizeColumns = $true +$LegacyGUIbalancesDGV.AllowUserToResizeRows = $false +$LegacyGUIbalancesDGV.AutoSizeColumnsMode = "Fill" +$LegacyGUIbalancesDGV.ColumnHeadersDefaultCellStyle.BackColor = [System.Drawing.SystemColors]::MenuBar +$LegacyGUIbalancesDGV.ColumnHeadersHeightSizeMode = "AutoSize" +$LegacyGUIbalancesDGV.DataBindings.DefaultDataSourceUpdateMode = 0 +$LegacyGUIbalancesDGV.EnableHeadersVisualStyles = $false +$LegacyGUIbalancesDGV.Font = [System.Drawing.Font]::new("Segoe UI", 9) +$LegacyGUIbalancesDGV.Height = 3 +$LegacyGUIbalancesDGV.Location = [System.Drawing.Point]::new(8, 187) +$LegacyGUIbalancesDGV.Name = "EarningsDGV" +$LegacyGUIbalancesDGV.ReadOnly = $true +$LegacyGUIbalancesDGV.RowHeadersVisible = $false +$LegacyGUIbalancesDGV.ScrollBars = "None" +Set-DataGridViewDoubleBuffer -Grid $LegacyGUIbalancesDGV -Enabled $true +$LegacyGUIearningsPageControls += $LegacyGUIbalancesDGV # Miner page Controls -$MinersPageControls = @() - -$RadioButtonMinersOptimal = New-Object System.Windows.Forms.RadioButton -$RadioButtonMinersOptimal.AutoSize = $false -$RadioButtonMinersOptimal.Checked = $true -$RadioButtonMinersOptimal.Font = [System.Drawing.Font]::new("Microsoft Sans Serif", 10) -$RadioButtonMinersOptimal.Height = 22 -$RadioButtonMinersOptimal.Location = [System.Drawing.Point]::new(0, 0) -$RadioButtonMinersOptimal.Text = "Optimal miners" -$RadioButtonMinersOptimal.Width = 150 -$RadioButtonMinersOptimal.Add_Click({ Update-TabControl }) -$Tooltip.SetToolTip($RadioButtonMinersOptimal, "These are all optimal miners per algorithm and device.") - -$RadioButtonMinersUnavailable = New-Object System.Windows.Forms.RadioButton -$RadioButtonMinersUnavailable.AutoSize = $false -$RadioButtonMinersUnavailable.Font = [System.Drawing.Font]::new("Microsoft Sans Serif", 10) -$RadioButtonMinersUnavailable.Height = $RadioButtonMinersOptimal.Height -$RadioButtonMinersUnavailable.Location = [System.Drawing.Point]::new(150, 0) -$RadioButtonMinersUnavailable.Text = "Unavailable miners" -$RadioButtonMinersUnavailable.Width = 170 -$RadioButtonMinersUnavailable.Add_Click({ Update-TabControl }) -$Tooltip.SetToolTip($RadioButtonMinersUnavailable, "These are all unavailable miners.`rThe column 'Reason(s)' shows the filter criteria(s) that made the miner unavailable.") - -$RadioButtonMiners = New-Object System.Windows.Forms.RadioButton -$RadioButtonMiners.AutoSize = $false -$RadioButtonMiners.Font = [System.Drawing.Font]::new("Microsoft Sans Serif", 10) -$RadioButtonMiners.Height = $RadioButtonMinersUnavailable.Height -$RadioButtonMiners.Location = [System.Drawing.Point]::new(320, 0) -$RadioButtonMiners.Text = "All miners" -$RadioButtonMiners.Width = 100 -$RadioButtonMiners.Add_Click({ Update-TabControl }) -$Tooltip.SetToolTip($RadioButtonMiners, "These are all miners.`rNote: UG-Miner will only create miners for algorithms that have at least one available pool.") - -$MinersLabel = New-Object System.Windows.Forms.Label -$MinersLabel.AutoSize = $false -$MinersLabel.Font = [System.Drawing.Font]::new("Microsoft Sans Serif", 10) -$MinersLabel.Height = 20 -$MinersLabel.Location = [System.Drawing.Point]::new(6, 6) -$MinersLabel.Width = 600 -$MinersPageControls += $MinersLabel - -$MinersPanel = New-Object System.Windows.Forms.Panel -$MinersPanel.Height = 22 -$MinersPanel.Location = [System.Drawing.Point]::new(8, ($MinersLabel.Height + 6)) -$MinersPanel.Controls.Add($RadioButtonMinersOptimal) -$MinersPanel.Controls.Add($RadioButtonMinersUnavailable) -$MinersPanel.Controls.Add($RadioButtonMiners) -$MinersPageControls += $MinersPanel - -$MinersDGV = New-Object System.Windows.Forms.DataGridView -$MinersDGV.AllowUserToAddRows = $false -$MinersDGV.AllowUserToOrderColumns = $true -$MinersDGV.AllowUserToResizeColumns = $true -$MinersDGV.AllowUserToResizeRows = $false -$MinersDGV.AutoSizeColumnsMode = "Fill" -$MinersDGV.ColumnHeadersDefaultCellStyle.BackColor = [System.Drawing.SystemColors]::MenuBar -$MinersDGV.ColumnHeadersDefaultCellStyle.SelectionBackColor = [System.Drawing.SystemColors]::MenuBar -$MinersDGV.ColumnHeadersHeightSizeMode = "AutoSize" -$MinersDGV.ColumnHeadersVisible = $true -$MinersDGV.ContextMenuStrip = $ContextMenuStrip -$MinersDGV.DataBindings.DefaultDataSourceUpdateMode = 0 -$MinersDGV.EnableHeadersVisualStyles = $false -$MinersDGV.Font = [System.Drawing.Font]::new("Segoe UI", 9) -$MinersDGV.Height = 3 -$MinersDGV.Location = [System.Drawing.Point]::new(6, ($MinersLabel.Height + $MinersPanel.Height + 10)) -$MinersDGV.Name = "MinersDGV" -$MinersDGV.ReadOnly = $true -$MinersDGV.RowHeadersVisible = $false -$MinersDGV.SelectionMode = "FullRowSelect" -$MinersDGV.Add_MouseUP( +$LegacyGUIminersPageControls = @() + +$LegacyGUIradioButtonMinersOptimal = New-Object System.Windows.Forms.RadioButton +$LegacyGUIradioButtonMinersOptimal.AutoSize = $false +$LegacyGUIradioButtonMinersOptimal.Checked = $true +$LegacyGUIradioButtonMinersOptimal.Font = [System.Drawing.Font]::new("Microsoft Sans Serif", 10) +$LegacyGUIradioButtonMinersOptimal.Height = 22 +$LegacyGUIradioButtonMinersOptimal.Location = [System.Drawing.Point]::new(0, 0) +$LegacyGUIradioButtonMinersOptimal.Text = "Optimal miners" +$LegacyGUIradioButtonMinersOptimal.Width = 150 +$LegacyGUIradioButtonMinersOptimal.Add_Click({ Update-TabControl }) +$LegacyGUItooltip.SetToolTip($LegacyGUIradioButtonMinersOptimal, "These are all optimal miners per algorithm and device.") + +$LegacyGUIradioButtonMinersUnavailable = New-Object System.Windows.Forms.RadioButton +$LegacyGUIradioButtonMinersUnavailable.AutoSize = $false +$LegacyGUIradioButtonMinersUnavailable.Font = [System.Drawing.Font]::new("Microsoft Sans Serif", 10) +$LegacyGUIradioButtonMinersUnavailable.Height = $LegacyGUIradioButtonMinersOptimal.Height +$LegacyGUIradioButtonMinersUnavailable.Location = [System.Drawing.Point]::new(150, 0) +$LegacyGUIradioButtonMinersUnavailable.Text = "Unavailable miners" +$LegacyGUIradioButtonMinersUnavailable.Width = 170 +$LegacyGUIradioButtonMinersUnavailable.Add_Click({ Update-TabControl }) +$LegacyGUItooltip.SetToolTip($LegacyGUIradioButtonMinersUnavailable, "These are all unavailable miners.`rThe column 'Reason(s)' shows the filter criteria(s) that made the miner unavailable.") + +$LegacyGUIradioButtonMiners = New-Object System.Windows.Forms.RadioButton +$LegacyGUIradioButtonMiners.AutoSize = $false +$LegacyGUIradioButtonMiners.Font = [System.Drawing.Font]::new("Microsoft Sans Serif", 10) +$LegacyGUIradioButtonMiners.Height = $LegacyGUIradioButtonMinersUnavailable.Height +$LegacyGUIradioButtonMiners.Location = [System.Drawing.Point]::new(320, 0) +$LegacyGUIradioButtonMiners.Text = "All miners" +$LegacyGUIradioButtonMiners.Width = 100 +$LegacyGUIradioButtonMiners.Add_Click({ Update-TabControl }) +$LegacyGUItooltip.SetToolTip($LegacyGUIradioButtonMiners, "These are all miners.`rNote: UG-Miner will only create miners for algorithms that have at least one available pool.") + +$LegacyGUIminersLabel = New-Object System.Windows.Forms.Label +$LegacyGUIminersLabel.AutoSize = $false +$LegacyGUIminersLabel.Font = [System.Drawing.Font]::new("Microsoft Sans Serif", 10) +$LegacyGUIminersLabel.Height = 20 +$LegacyGUIminersLabel.Location = [System.Drawing.Point]::new(6, 6) +$LegacyGUIminersLabel.Width = 600 +$LegacyGUIminersPageControls += $LegacyGUIminersLabel + +$LegacyGUIminersPanel = New-Object System.Windows.Forms.Panel +$LegacyGUIminersPanel.Height = 22 +$LegacyGUIminersPanel.Location = [System.Drawing.Point]::new(8, ($LegacyGUIminersLabel.Height + 6)) +$LegacyGUIminersPanel.Controls.Add($LegacyGUIradioButtonMinersOptimal) +$LegacyGUIminersPanel.Controls.Add($LegacyGUIradioButtonMinersUnavailable) +$LegacyGUIminersPanel.Controls.Add($LegacyGUIradioButtonMiners) +$LegacyGUIminersPageControls += $LegacyGUIminersPanel + +$LegacyGUIminersDGV = New-Object System.Windows.Forms.DataGridView +$LegacyGUIminersDGV.AllowUserToAddRows = $false +$LegacyGUIminersDGV.AllowUserToOrderColumns = $true +$LegacyGUIminersDGV.AllowUserToResizeColumns = $true +$LegacyGUIminersDGV.AllowUserToResizeRows = $false +$LegacyGUIminersDGV.AutoSizeColumnsMode = "Fill" +$LegacyGUIminersDGV.ColumnHeadersDefaultCellStyle.BackColor = [System.Drawing.SystemColors]::MenuBar +$LegacyGUIminersDGV.ColumnHeadersDefaultCellStyle.SelectionBackColor = [System.Drawing.SystemColors]::MenuBar +$LegacyGUIminersDGV.ColumnHeadersHeightSizeMode = "AutoSize" +$LegacyGUIminersDGV.ColumnHeadersVisible = $true +$LegacyGUIminersDGV.ContextMenuStrip = $LegacyGUIcontextMenuStrip +$LegacyGUIminersDGV.DataBindings.DefaultDataSourceUpdateMode = 0 +$LegacyGUIminersDGV.EnableHeadersVisualStyles = $false +$LegacyGUIminersDGV.Font = [System.Drawing.Font]::new("Segoe UI", 9) +$LegacyGUIminersDGV.Height = 3 +$LegacyGUIminersDGV.Location = [System.Drawing.Point]::new(6, ($LegacyGUIminersLabel.Height + $LegacyGUIminersPanel.Height + 10)) +$LegacyGUIminersDGV.Name = "MinersDGV" +$LegacyGUIminersDGV.ReadOnly = $true +$LegacyGUIminersDGV.RowHeadersVisible = $false +$LegacyGUIminersDGV.SelectionMode = "FullRowSelect" +$LegacyGUIminersDGV.Add_MouseUP( { If ($_.Button -eq [System.Windows.Forms.MouseButtons]::Right ) { - $ContextMenuStrip.Enabled = [Boolean]$This.SelectedRows + $LegacyGUIcontextMenuStrip.Enabled = [Boolean]$This.SelectedRows } } ) -$MinersDGV.Add_Sorted( - { Set-TableColor -DataGridView $MinersDGV } +$LegacyGUIminersDGV.Add_Sorted( + { Set-TableColor -DataGridView $LegacyGUIminersDGV } ) -Set-DataGridViewDoubleBuffer -Grid $MinersDGV -Enabled $true -$MinersPageControls += $MinersDGV +Set-DataGridViewDoubleBuffer -Grid $LegacyGUIminersDGV -Enabled $true +$LegacyGUIminersPageControls += $LegacyGUIminersDGV # Pools page Controls -$PoolsPageControls = @() - -$RadioButtonPoolsBest = New-Object System.Windows.Forms.RadioButton -$RadioButtonPoolsBest.AutoSize = $false -$RadioButtonPoolsBest.Font = [System.Drawing.Font]::new("Microsoft Sans Serif", 10) -$RadioButtonPoolsBest.Height = 22 -$RadioButtonPoolsBest.Location = [System.Drawing.Point]::new(0, 0) -$RadioButtonPoolsBest.Tag = "" -$RadioButtonPoolsBest.Text = "Best pools" -$RadioButtonPoolsBest.Width = 120 -$RadioButtonPoolsBest.Checked = $true -$RadioButtonPoolsBest.Add_Click({ Update-TabControl }) -$Tooltip.SetToolTip($RadioButtonPoolsBest, "This is the list of the best paying pool for each algorithm.") - -$RadioButtonPoolsUnavailable = New-Object System.Windows.Forms.RadioButton -$RadioButtonPoolsUnavailable.AutoSize = $false -$RadioButtonPoolsUnavailable.Font = [System.Drawing.Font]::new("Microsoft Sans Serif", 10) -$RadioButtonPoolsUnavailable.Height = $RadioButtonPoolsBest.Height -$RadioButtonPoolsUnavailable.Location = [System.Drawing.Point]::new(120, 0) -$RadioButtonPoolsUnavailable.Tag = "" -$RadioButtonPoolsUnavailable.Text = "Unavailable pools" -$RadioButtonPoolsUnavailable.Width = 170 -$RadioButtonPoolsUnavailable.Add_Click({ Update-TabControl }) -$Tooltip.SetToolTip($RadioButtonPoolsUnavailable, "This is the pool data of all unavailable pools.`rThe column 'Reason(s)' shows the filter criteria(s) that made the pool unavailable.") - -$RadioButtonPools = New-Object System.Windows.Forms.RadioButton -$RadioButtonPools.AutoSize = $false -$RadioButtonPools.Font = [System.Drawing.Font]::new("Microsoft Sans Serif", 10) -$RadioButtonPools.Height = $RadioButtonPoolsUnavailable.Height -$RadioButtonPools.Location = [System.Drawing.Point]::new((120 + 175), 0) -$RadioButtonPools.Tag = "" -$RadioButtonPools.Text = "All pools" -$RadioButtonPools.Width = 100 -$RadioButtonPools.Add_Click({ Update-TabControl }) -$Tooltip.SetToolTip($RadioButtonPools, "This is the pool data of all configured pools.") - -$PoolsLabel = New-Object System.Windows.Forms.Label -$PoolsLabel.AutoSize = $false -$PoolsLabel.Font = [System.Drawing.Font]::new("Microsoft Sans Serif", 10) -$PoolsLabel.Location = [System.Drawing.Point]::new(6, 6) -$PoolsLabel.Height = 20 -$PoolsLabel.Width = 600 -$PoolsPageControls += $PoolsLabel - -$PoolsPanel = New-Object System.Windows.Forms.Panel -$PoolsPanel.Height = 22 -$PoolsPanel.Location = [System.Drawing.Point]::new(8, ($PoolsLabel.Height + 6)) -$PoolsPanel.Controls.Add($RadioButtonPools) -$PoolsPanel.Controls.Add($RadioButtonPoolsUnavailable) -$PoolsPanel.Controls.Add($RadioButtonPoolsBest) -$PoolsPageControls += $PoolsPanel - -$PoolsDGV = New-Object System.Windows.Forms.DataGridView -$PoolsDGV.AllowUserToAddRows = $false -$PoolsDGV.AllowUserToOrderColumns = $true -$PoolsDGV.AllowUserToResizeColumns = $true -$PoolsDGV.AllowUserToResizeRows = $false -$PoolsDGV.AutoSizeColumnsMode = "Fill" -$PoolsDGV.ColumnHeadersDefaultCellStyle.BackColor = [System.Drawing.SystemColors]::MenuBar -$PoolsDGV.ColumnHeadersDefaultCellStyle.SelectionBackColor = [System.Drawing.SystemColors]::MenuBar -$PoolsDGV.ColumnHeadersHeightSizeMode = "AutoSize" -$PoolsDGV.ColumnHeadersVisible = $true -$PoolsDGV.ContextMenuStrip = $ContextMenuStrip -$PoolsDGV.DataBindings.DefaultDataSourceUpdateMode = 0 -$PoolsDGV.EnableHeadersVisualStyles = $false -$PoolsDGV.Font = [System.Drawing.Font]::new("Segoe UI", 9) -$PoolsDGV.Height = 3 -$PoolsDGV.Location = [System.Drawing.Point]::new(6, ($PoolsLabel.Height + $PoolsPanel.Height + 10)) -$PoolsDGV.Name = "PoolsDGV" -$PoolsDGV.ReadOnly = $true -$PoolsDGV.RowHeadersVisible = $false -$PoolsDGV.SelectionMode = "FullRowSelect" -$PoolsDGV.Add_MouseUP( +$LegacyGUIpoolsPageControls = @() + +$LegacyGUIradioButtonPoolsBest = New-Object System.Windows.Forms.RadioButton +$LegacyGUIradioButtonPoolsBest.AutoSize = $false +$LegacyGUIradioButtonPoolsBest.Font = [System.Drawing.Font]::new("Microsoft Sans Serif", 10) +$LegacyGUIradioButtonPoolsBest.Height = 22 +$LegacyGUIradioButtonPoolsBest.Location = [System.Drawing.Point]::new(0, 0) +$LegacyGUIradioButtonPoolsBest.Tag = "" +$LegacyGUIradioButtonPoolsBest.Text = "Best pools" +$LegacyGUIradioButtonPoolsBest.Width = 120 +$LegacyGUIradioButtonPoolsBest.Checked = $true +$LegacyGUIradioButtonPoolsBest.Add_Click({ Update-TabControl }) +$LegacyGUItooltip.SetToolTip($LegacyGUIradioButtonPoolsBest, "This is the list of the best paying pool for each algorithm.") + +$LegacyGUIradioButtonPoolsUnavailable = New-Object System.Windows.Forms.RadioButton +$LegacyGUIradioButtonPoolsUnavailable.AutoSize = $false +$LegacyGUIradioButtonPoolsUnavailable.Font = [System.Drawing.Font]::new("Microsoft Sans Serif", 10) +$LegacyGUIradioButtonPoolsUnavailable.Height = $LegacyGUIradioButtonPoolsBest.Height +$LegacyGUIradioButtonPoolsUnavailable.Location = [System.Drawing.Point]::new(120, 0) +$LegacyGUIradioButtonPoolsUnavailable.Tag = "" +$LegacyGUIradioButtonPoolsUnavailable.Text = "Unavailable pools" +$LegacyGUIradioButtonPoolsUnavailable.Width = 170 +$LegacyGUIradioButtonPoolsUnavailable.Add_Click({ Update-TabControl }) +$LegacyGUItooltip.SetToolTip($LegacyGUIradioButtonPoolsUnavailable, "This is the pool data of all unavailable pools.`rThe column 'Reason(s)' shows the filter criteria(s) that made the pool unavailable.") + +$LegacyGUIradioButtonPools = New-Object System.Windows.Forms.RadioButton +$LegacyGUIradioButtonPools.AutoSize = $false +$LegacyGUIradioButtonPools.Font = [System.Drawing.Font]::new("Microsoft Sans Serif", 10) +$LegacyGUIradioButtonPools.Height = $LegacyGUIradioButtonPoolsUnavailable.Height +$LegacyGUIradioButtonPools.Location = [System.Drawing.Point]::new((120 + 175), 0) +$LegacyGUIradioButtonPools.Tag = "" +$LegacyGUIradioButtonPools.Text = "All pools" +$LegacyGUIradioButtonPools.Width = 100 +$LegacyGUIradioButtonPools.Add_Click({ Update-TabControl }) +$LegacyGUItooltip.SetToolTip($LegacyGUIradioButtonPools, "This is the pool data of all configured pools.") + +$LegacyGUIpoolsLabel = New-Object System.Windows.Forms.Label +$LegacyGUIpoolsLabel.AutoSize = $false +$LegacyGUIpoolsLabel.Font = [System.Drawing.Font]::new("Microsoft Sans Serif", 10) +$LegacyGUIpoolsLabel.Location = [System.Drawing.Point]::new(6, 6) +$LegacyGUIpoolsLabel.Height = 20 +$LegacyGUIpoolsLabel.Width = 600 +$LegacyGUIpoolsPageControls += $LegacyGUIpoolsLabel + +$LegacyGUIpoolsPanel = New-Object System.Windows.Forms.Panel +$LegacyGUIpoolsPanel.Height = 22 +$LegacyGUIpoolsPanel.Location = [System.Drawing.Point]::new(8, ($LegacyGUIpoolsLabel.Height + 6)) +$LegacyGUIpoolsPanel.Controls.Add($LegacyGUIradioButtonPools) +$LegacyGUIpoolsPanel.Controls.Add($LegacyGUIradioButtonPoolsUnavailable) +$LegacyGUIpoolsPanel.Controls.Add($LegacyGUIradioButtonPoolsBest) +$LegacyGUIpoolsPageControls += $LegacyGUIpoolsPanel + +$LegacyGUIpoolsDGV = New-Object System.Windows.Forms.DataGridView +$LegacyGUIpoolsDGV.AllowUserToAddRows = $false +$LegacyGUIpoolsDGV.AllowUserToOrderColumns = $true +$LegacyGUIpoolsDGV.AllowUserToResizeColumns = $true +$LegacyGUIpoolsDGV.AllowUserToResizeRows = $false +$LegacyGUIpoolsDGV.AutoSizeColumnsMode = "Fill" +$LegacyGUIpoolsDGV.ColumnHeadersDefaultCellStyle.BackColor = [System.Drawing.SystemColors]::MenuBar +$LegacyGUIpoolsDGV.ColumnHeadersDefaultCellStyle.SelectionBackColor = [System.Drawing.SystemColors]::MenuBar +$LegacyGUIpoolsDGV.ColumnHeadersHeightSizeMode = "AutoSize" +$LegacyGUIpoolsDGV.ColumnHeadersVisible = $true +$LegacyGUIpoolsDGV.ContextMenuStrip = $LegacyGUIcontextMenuStrip +$LegacyGUIpoolsDGV.DataBindings.DefaultDataSourceUpdateMode = 0 +$LegacyGUIpoolsDGV.EnableHeadersVisualStyles = $false +$LegacyGUIpoolsDGV.Font = [System.Drawing.Font]::new("Segoe UI", 9) +$LegacyGUIpoolsDGV.Height = 3 +$LegacyGUIpoolsDGV.Location = [System.Drawing.Point]::new(6, ($LegacyGUIpoolsLabel.Height + $LegacyGUIpoolsPanel.Height + 10)) +$LegacyGUIpoolsDGV.Name = "PoolsDGV" +$LegacyGUIpoolsDGV.ReadOnly = $true +$LegacyGUIpoolsDGV.RowHeadersVisible = $false +$LegacyGUIpoolsDGV.SelectionMode = "FullRowSelect" +$LegacyGUIpoolsDGV.Add_MouseUP( { If ($_.Button -eq [System.Windows.Forms.MouseButtons]::Right ) { - $ContextMenuStrip.Enabled = [Boolean]$This.SelectedRows + $LegacyGUIcontextMenuStrip.Enabled = [Boolean]$This.SelectedRows } } ) -Set-DataGridViewDoubleBuffer -Grid $PoolsDGV -Enabled $true -$PoolsPageControls += $PoolsDGV +Set-DataGridViewDoubleBuffer -Grid $LegacyGUIpoolsDGV -Enabled $true +$LegacyGUIpoolsPageControls += $LegacyGUIpoolsDGV # Monitoring Page Controls -$RigMonitorPageControls = @() - -$WorkersLabel = New-Object System.Windows.Forms.Label -$WorkersLabel.AutoSize = $false -$WorkersLabel.Font = [System.Drawing.Font]::new("Microsoft Sans Serif", 10) -$WorkersLabel.Height = 20 -$WorkersLabel.Location = [System.Drawing.Point]::new(6, 6) -$WorkersLabel.Width = 900 -$RigMonitorPageControls += $WorkersLabel - -$WorkersDGV = New-Object System.Windows.Forms.DataGridView -$WorkersDGV.AllowUserToAddRows = $false -$WorkersDGV.AllowUserToOrderColumns = $true -$WorkersDGV.AllowUserToResizeColumns = $true -$WorkersDGV.AllowUserToResizeRows = $false -$WorkersDGV.AutoSizeColumnsMode = "Fill" -$WorkersDGV.AutoSizeRowsMode = "AllCells" -$WorkersDGV.ColumnHeadersDefaultCellStyle.BackColor = [System.Drawing.SystemColors]::MenuBar -$WorkersDGV.ColumnHeadersHeightSizeMode = "AutoSize" -$WorkersDGV.ColumnHeadersVisible = $true -$WorkersDGV.DataBindings.DefaultDataSourceUpdateMode = 0 -$WorkersDGV.DefaultCellStyle.WrapMode = "True" -$WorkersDGV.EnableHeadersVisualStyles = $false -$WorkersDGV.Font = [System.Drawing.Font]::new("Segoe UI", 9) -$WorkersDGV.Height = 3 -$WorkersDGV.Location = [System.Drawing.Point]::new(6, ($WorkersLabel.Height + 8)) -$WorkersDGV.ReadOnly = $true -$WorkersDGV.RowHeadersVisible = $false -$WorkersDGV.Add_Sorted( - { Set-WorkerColor -DataGridView $WorkersDGV } +$LegacyGUIrigMonitorPageControls = @() + +$LegacyGUIworkersLabel = New-Object System.Windows.Forms.Label +$LegacyGUIworkersLabel.AutoSize = $false +$LegacyGUIworkersLabel.Font = [System.Drawing.Font]::new("Microsoft Sans Serif", 10) +$LegacyGUIworkersLabel.Height = 20 +$LegacyGUIworkersLabel.Location = [System.Drawing.Point]::new(6, 6) +$LegacyGUIworkersLabel.Width = 900 +$LegacyGUIrigMonitorPageControls += $LegacyGUIworkersLabel + +$LegacyGUIworkersDGV = New-Object System.Windows.Forms.DataGridView +$LegacyGUIworkersDGV.AllowUserToAddRows = $false +$LegacyGUIworkersDGV.AllowUserToOrderColumns = $true +$LegacyGUIworkersDGV.AllowUserToResizeColumns = $true +$LegacyGUIworkersDGV.AllowUserToResizeRows = $false +$LegacyGUIworkersDGV.AutoSizeColumnsMode = "Fill" +$LegacyGUIworkersDGV.AutoSizeRowsMode = "AllCells" +$LegacyGUIworkersDGV.ColumnHeadersDefaultCellStyle.BackColor = [System.Drawing.SystemColors]::MenuBar +$LegacyGUIworkersDGV.ColumnHeadersHeightSizeMode = "AutoSize" +$LegacyGUIworkersDGV.ColumnHeadersVisible = $true +$LegacyGUIworkersDGV.DataBindings.DefaultDataSourceUpdateMode = 0 +$LegacyGUIworkersDGV.DefaultCellStyle.WrapMode = "True" +$LegacyGUIworkersDGV.EnableHeadersVisualStyles = $false +$LegacyGUIworkersDGV.Font = [System.Drawing.Font]::new("Segoe UI", 9) +$LegacyGUIworkersDGV.Height = 3 +$LegacyGUIworkersDGV.Location = [System.Drawing.Point]::new(6, ($LegacyGUIworkersLabel.Height + 8)) +$LegacyGUIworkersDGV.ReadOnly = $true +$LegacyGUIworkersDGV.RowHeadersVisible = $false +$LegacyGUIworkersDGV.Add_Sorted( + { Set-WorkerColor -DataGridView $LegacyGUIworkersDGV } ) -Set-DataGridViewDoubleBuffer -Grid $WorkersDGV -Enabled $true -$RigMonitorPageControls += $WorkersDGV - -$EditMonitoringLink = New-Object System.Windows.Forms.LinkLabel -$EditMonitoringLink.ActiveLinkColor = [System.Drawing.Color]::Blue -$EditMonitoringLink.Font = [System.Drawing.Font]::new("Microsoft Sans Serif", 10) -$EditMonitoringLink.Height = 20 -$EditMonitoringLink.Location = [System.Drawing.Point]::new(6, 6) -$EditMonitoringLink.LinkColor = [System.Drawing.Color]::Blue -$EditMonitoringLink.Text = "Edit the monitoring configuration" -$EditMonitoringLink.TextAlign = "MiddleRight" -$EditMonitoringLink.Size = New-Object System.Drawing.Size(330, 26) -$EditMonitoringLink.Visible = $false -$EditMonitoringLink.Width = 330 -$EditMonitoringLink.Add_Click({ Start-Process "http://localhost:$($Variables.APIRunspace.APIport)/rigmonitor.html" }) -$RigMonitorPageControls += $EditMonitoringLink -$Tooltip.SetToolTip($EditMonitoringLink, "Click to the edit the monitoring configuration in the Web GUI") +Set-DataGridViewDoubleBuffer -Grid $LegacyGUIworkersDGV -Enabled $true +$LegacyGUIrigMonitorPageControls += $LegacyGUIworkersDGV + +$LegacyGUIeditMonitoringLink = New-Object System.Windows.Forms.LinkLabel +$LegacyGUIeditMonitoringLink.ActiveLinkColor = [System.Drawing.Color]::Blue +$LegacyGUIeditMonitoringLink.Font = [System.Drawing.Font]::new("Microsoft Sans Serif", 10) +$LegacyGUIeditMonitoringLink.Height = 20 +$LegacyGUIeditMonitoringLink.Location = [System.Drawing.Point]::new(6, 6) +$LegacyGUIeditMonitoringLink.LinkColor = [System.Drawing.Color]::Blue +$LegacyGUIeditMonitoringLink.Text = "Edit the monitoring configuration" +$LegacyGUIeditMonitoringLink.TextAlign = "MiddleRight" +$LegacyGUIeditMonitoringLink.Size = New-Object System.Drawing.Size(330, 26) +$LegacyGUIeditMonitoringLink.Visible = $false +$LegacyGUIeditMonitoringLink.Width = 330 +$LegacyGUIeditMonitoringLink.Add_Click({ Start-Process "http://localhost:$($Variables.APIRunspace.APIport)/rigmonitor.html" }) +$LegacyGUIrigMonitorPageControls += $LegacyGUIeditMonitoringLink +$LegacyGUItooltip.SetToolTip($LegacyGUIeditMonitoringLink, "Click to the edit the monitoring configuration in the Web GUI") # Switching Page Controls -$SwitchingPageControls = @() - -$SwitchingLogLabel = New-Object System.Windows.Forms.Label -$SwitchingLogLabel.AutoSize = $false -$SwitchingLogLabel.Font = [System.Drawing.Font]::new("Microsoft Sans Serif", 10) -$SwitchingLogLabel.Height = 20 -$SwitchingLogLabel.Location = [System.Drawing.Point]::new(6, 6) -$SwitchingLogLabel.Width = 600 -$SwitchingPageControls += $SwitchingLogLabel - -$SwitchingLogClearButton = New-Object System.Windows.Forms.Button -$SwitchingLogClearButton.Font = [System.Drawing.Font]::new("Microsoft Sans Serif", 10) -$SwitchingLogClearButton.Height = 24 -$SwitchingLogClearButton.Location = [System.Drawing.Point]::new(6, ($SwitchingLogLabel.Height + 8)) -$SwitchingLogClearButton.Text = "Clear switching log" -$SwitchingLogClearButton.Visible = $true -$SwitchingLogClearButton.Width = 160 -$SwitchingLogClearButton.Add_Click( +$LegacyGUIswitchingPageControls = @() + +$LegacyGUIswitchingLogLabel = New-Object System.Windows.Forms.Label +$LegacyGUIswitchingLogLabel.AutoSize = $false +$LegacyGUIswitchingLogLabel.Font = [System.Drawing.Font]::new("Microsoft Sans Serif", 10) +$LegacyGUIswitchingLogLabel.Height = 20 +$LegacyGUIswitchingLogLabel.Location = [System.Drawing.Point]::new(6, 6) +$LegacyGUIswitchingLogLabel.Width = 600 +$LegacyGUIswitchingPageControls += $LegacyGUIswitchingLogLabel + +$LegacyGUIswitchingLogClearButton = New-Object System.Windows.Forms.Button +$LegacyGUIswitchingLogClearButton.Font = [System.Drawing.Font]::new("Microsoft Sans Serif", 10) +$LegacyGUIswitchingLogClearButton.Height = 24 +$LegacyGUIswitchingLogClearButton.Location = [System.Drawing.Point]::new(6, ($LegacyGUIswitchingLogLabel.Height + 8)) +$LegacyGUIswitchingLogClearButton.Text = "Clear switching log" +$LegacyGUIswitchingLogClearButton.Visible = $true +$LegacyGUIswitchingLogClearButton.Width = 160 +$LegacyGUIswitchingLogClearButton.Add_Click( { Get-ChildItem -Path ".\Logs\switchinglog.csv" -File | Remove-Item -Force - $SwitchingDGV.DataSource = $null + $LegacyGUIswitchingDGV.DataSource = $null $Data = "Switching log '.\Logs\switchinglog.csv' cleared." Write-Message -Level Verbose "GUI: $Data" - $SwitchingLogClearButton.Enabled = $false + $LegacyGUIswitchingLogClearButton.Enabled = $false [Void][System.Windows.Forms.MessageBox]::Show($Data, "$($Variables.Branding.ProductLabel) $($_.ClickedItem.Text)", [System.Windows.Forms.MessageBoxButtons]::OK, 64) } ) -$SwitchingPageControls += $SwitchingLogClearButton -$Tooltip.SetToolTip($SwitchingLogClearButton, "This will clear the switching log '.\Logs\switchinglog.csv'") - -$CheckShowSwitchingCPU = New-Object System.Windows.Forms.CheckBox -$CheckShowSwitchingCPU.AutoSize = $false -$CheckShowSwitchingCPU.Font = [System.Drawing.Font]::new("Microsoft Sans Serif", 10) -$CheckShowSwitchingCPU.Height = 20 -$CheckShowSwitchingCPU.Location = [System.Drawing.Point]::new(($SwitchingLogClearButton.Width + 40), ($SwitchingLogLabel.Height + 10)) -$CheckShowSwitchingCPU.Tag = "CPU" -$CheckShowSwitchingCPU.Text = "CPU" -$CheckShowSwitchingCPU.Width = 70 -$SwitchingPageControls += $CheckShowSwitchingCPU -$CheckShowSwitchingCPU.ForEach({ $_.Add_Click({ CheckBoxSwitching_Click($this) }) }) - -$CheckShowSwitchingAMD = New-Object System.Windows.Forms.CheckBox -$CheckShowSwitchingAMD.AutoSize = $false -$CheckShowSwitchingAMD.Height = 20 -$CheckShowSwitchingAMD.Font = [System.Drawing.Font]::new("Microsoft Sans Serif", 10) -$CheckShowSwitchingAMD.Location = [System.Drawing.Point]::new(($SwitchingLogClearButton.Width + 40 + $CheckShowSwitchingCPU.Width), ($SwitchingLogLabel.Height + 10)) -$CheckShowSwitchingAMD.Tag = "AMD" -$CheckShowSwitchingAMD.Text = "AMD" -$CheckShowSwitchingAMD.Width = 70 -$SwitchingPageControls += $CheckShowSwitchingAMD -$CheckShowSwitchingAMD.ForEach({ $_.Add_Click({ CheckBoxSwitching_Click($this) }) }) - -$CheckShowSwitchingINTEL = New-Object System.Windows.Forms.CheckBox -$CheckShowSwitchingINTEL.AutoSize = $false -$CheckShowSwitchingINTEL.Font = [System.Drawing.Font]::new("Microsoft Sans Serif", 10) -$CheckShowSwitchingINTEL.Height = 20 -$CheckShowSwitchingINTEL.Location = [System.Drawing.Point]::new(($SwitchingLogClearButton.Width + 40 + $CheckShowSwitchingCPU.Width + $CheckShowSwitchingAMD.Width), ($SwitchingLogLabel.Height + 10)) -$CheckShowSwitchingINTEL.Tag = "INTEL" -$CheckShowSwitchingINTEL.Text = "INTEL" -$CheckShowSwitchingINTEL.Width = 77 -$SwitchingPageControls += $CheckShowSwitchingINTEL -$CheckShowSwitchingINTEL.ForEach({ $_.Add_Click({ CheckBoxSwitching_Click($this) }) }) - -$CheckShowSwitchingNVIDIA = New-Object System.Windows.Forms.CheckBox -$CheckShowSwitchingNVIDIA.AutoSize = $false -$CheckShowSwitchingNVIDIA.Font = [System.Drawing.Font]::new("Microsoft Sans Serif", 10) -$CheckShowSwitchingNVIDIA.Height = 20 -$CheckShowSwitchingNVIDIA.Location = [System.Drawing.Point]::new(($SwitchingLogClearButton.Width + 40 + $CheckShowSwitchingCPU.Width + $CheckShowSwitchingAMD.Width + $CheckShowSwitchingINTEL.Width), ($SwitchingLogLabel.Height + 10)) -$CheckShowSwitchingNVIDIA.Tag = "NVIDIA" -$CheckShowSwitchingNVIDIA.Text = "NVIDIA" -$CheckShowSwitchingNVIDIA.Width = 80 -$SwitchingPageControls += $CheckShowSwitchingNVIDIA -$CheckShowSwitchingNVIDIA.ForEach({ $_.Add_Click({ CheckBoxSwitching_Click($this) }) }) - -$SwitchingDGV = New-Object System.Windows.Forms.DataGridView -$SwitchingDGV.AllowUserToAddRows = $false -$SwitchingDGV.AllowUserToOrderColumns = $true -$SwitchingDGV.AllowUserToResizeColumns = $true -$SwitchingDGV.AllowUserToResizeRows = $false -$SwitchingDGV.AutoSizeColumnsMode = "Fill" -$SwitchingDGV.ColumnHeadersDefaultCellStyle.BackColor = [System.Drawing.SystemColors]::MenuBar -$SwitchingDGV.ColumnHeadersHeightSizeMode = "AutoSize" -$SwitchingDGV.ColumnHeadersVisible = $true -$SwitchingDGV.DataBindings.DefaultDataSourceUpdateMode = 0 -$SwitchingDGV.EnableHeadersVisualStyles = $false -$SwitchingDGV.Font = [System.Drawing.Font]::new("Segoe UI", 9) -$SwitchingDGV.Height = 3 -$SwitchingDGV.Location = [System.Drawing.Point]::new(6, ($SwitchingLogLabel.Height + $SwitchingLogClearButton.Height + 12)) -$SwitchingDGV.Name = "SwitchingDGV" -$SwitchingDGV.ReadOnly = $true -$SwitchingDGV.RowHeadersVisible = $false -$SwitchingDGV.Add_Sorted( +$LegacyGUIswitchingPageControls += $LegacyGUIswitchingLogClearButton +$LegacyGUItooltip.SetToolTip($LegacyGUIswitchingLogClearButton, "This will clear the switching log '.\Logs\switchinglog.csv'") + +$LegacyGUIcheckShowSwitchingCPU = New-Object System.Windows.Forms.CheckBox +$LegacyGUIcheckShowSwitchingCPU.AutoSize = $false +$LegacyGUIcheckShowSwitchingCPU.Font = [System.Drawing.Font]::new("Microsoft Sans Serif", 10) +$LegacyGUIcheckShowSwitchingCPU.Height = 20 +$LegacyGUIcheckShowSwitchingCPU.Location = [System.Drawing.Point]::new(($LegacyGUIswitchingLogClearButton.Width + 40), ($LegacyGUIswitchingLogLabel.Height + 10)) +$LegacyGUIcheckShowSwitchingCPU.Tag = "CPU" +$LegacyGUIcheckShowSwitchingCPU.Text = "CPU" +$LegacyGUIcheckShowSwitchingCPU.Width = 70 +$LegacyGUIswitchingPageControls += $LegacyGUIcheckShowSwitchingCPU +$LegacyGUIcheckShowSwitchingCPU.ForEach({ $_.Add_Click({ CheckBoxSwitching_Click($this) }) }) + +$LegacyGUIcheckShowSwitchingAMD = New-Object System.Windows.Forms.CheckBox +$LegacyGUIcheckShowSwitchingAMD.AutoSize = $false +$LegacyGUIcheckShowSwitchingAMD.Height = 20 +$LegacyGUIcheckShowSwitchingAMD.Font = [System.Drawing.Font]::new("Microsoft Sans Serif", 10) +$LegacyGUIcheckShowSwitchingAMD.Location = [System.Drawing.Point]::new(($LegacyGUIswitchingLogClearButton.Width + 40 + $LegacyGUIcheckShowSwitchingCPU.Width), ($LegacyGUIswitchingLogLabel.Height + 10)) +$LegacyGUIcheckShowSwitchingAMD.Tag = "AMD" +$LegacyGUIcheckShowSwitchingAMD.Text = "AMD" +$LegacyGUIcheckShowSwitchingAMD.Width = 70 +$LegacyGUIswitchingPageControls += $LegacyGUIcheckShowSwitchingAMD +$LegacyGUIcheckShowSwitchingAMD.ForEach({ $_.Add_Click({ CheckBoxSwitching_Click($this) }) }) + +$LegacyGUIcheckShowSwitchingINTEL = New-Object System.Windows.Forms.CheckBox +$LegacyGUIcheckShowSwitchingINTEL.AutoSize = $false +$LegacyGUIcheckShowSwitchingINTEL.Font = [System.Drawing.Font]::new("Microsoft Sans Serif", 10) +$LegacyGUIcheckShowSwitchingINTEL.Height = 20 +$LegacyGUIcheckShowSwitchingINTEL.Location = [System.Drawing.Point]::new(($LegacyGUIswitchingLogClearButton.Width + 40 + $LegacyGUIcheckShowSwitchingCPU.Width + $LegacyGUIcheckShowSwitchingAMD.Width), ($LegacyGUIswitchingLogLabel.Height + 10)) +$LegacyGUIcheckShowSwitchingINTEL.Tag = "INTEL" +$LegacyGUIcheckShowSwitchingINTEL.Text = "INTEL" +$LegacyGUIcheckShowSwitchingINTEL.Width = 77 +$LegacyGUIswitchingPageControls += $LegacyGUIcheckShowSwitchingINTEL +$LegacyGUIcheckShowSwitchingINTEL.ForEach({ $_.Add_Click({ CheckBoxSwitching_Click($this) }) }) + +$LegacyGUIcheckShowSwitchingNVIDIA = New-Object System.Windows.Forms.CheckBox +$LegacyGUIcheckShowSwitchingNVIDIA.AutoSize = $false +$LegacyGUIcheckShowSwitchingNVIDIA.Font = [System.Drawing.Font]::new("Microsoft Sans Serif", 10) +$LegacyGUIcheckShowSwitchingNVIDIA.Height = 20 +$LegacyGUIcheckShowSwitchingNVIDIA.Location = [System.Drawing.Point]::new(($LegacyGUIswitchingLogClearButton.Width + 40 + $LegacyGUIcheckShowSwitchingCPU.Width + $LegacyGUIcheckShowSwitchingAMD.Width + $LegacyGUIcheckShowSwitchingINTEL.Width), ($LegacyGUIswitchingLogLabel.Height + 10)) +$LegacyGUIcheckShowSwitchingNVIDIA.Tag = "NVIDIA" +$LegacyGUIcheckShowSwitchingNVIDIA.Text = "NVIDIA" +$LegacyGUIcheckShowSwitchingNVIDIA.Width = 80 +$LegacyGUIswitchingPageControls += $LegacyGUIcheckShowSwitchingNVIDIA +$LegacyGUIcheckShowSwitchingNVIDIA.ForEach({ $_.Add_Click({ CheckBoxSwitching_Click($this) }) }) + +$LegacyGUIswitchingDGV = New-Object System.Windows.Forms.DataGridView +$LegacyGUIswitchingDGV.AllowUserToAddRows = $false +$LegacyGUIswitchingDGV.AllowUserToOrderColumns = $true +$LegacyGUIswitchingDGV.AllowUserToResizeColumns = $true +$LegacyGUIswitchingDGV.AllowUserToResizeRows = $false +$LegacyGUIswitchingDGV.AutoSizeColumnsMode = "Fill" +$LegacyGUIswitchingDGV.ColumnHeadersDefaultCellStyle.BackColor = [System.Drawing.SystemColors]::MenuBar +$LegacyGUIswitchingDGV.ColumnHeadersHeightSizeMode = "AutoSize" +$LegacyGUIswitchingDGV.ColumnHeadersVisible = $true +$LegacyGUIswitchingDGV.DataBindings.DefaultDataSourceUpdateMode = 0 +$LegacyGUIswitchingDGV.EnableHeadersVisualStyles = $false +$LegacyGUIswitchingDGV.Font = [System.Drawing.Font]::new("Segoe UI", 9) +$LegacyGUIswitchingDGV.Height = 3 +$LegacyGUIswitchingDGV.Location = [System.Drawing.Point]::new(6, ($LegacyGUIswitchingLogLabel.Height + $LegacyGUIswitchingLogClearButton.Height + 12)) +$LegacyGUIswitchingDGV.Name = "SwitchingDGV" +$LegacyGUIswitchingDGV.ReadOnly = $true +$LegacyGUIswitchingDGV.RowHeadersVisible = $false +$LegacyGUIswitchingDGV.Add_Sorted( { If ($Config.UseColorForMinerStatus) { - ForEach ($Row in $SwitchingDGV.Rows) { $Row.DefaultCellStyle.Backcolor = $Colors[$Row.DataBoundItem.Action] } + ForEach ($Row in $LegacyGUIswitchingDGV.Rows) { $Row.DefaultCellStyle.Backcolor = $LegacyGUIcolors[$Row.DataBoundItem.Action] } } } ) -Set-DataGridViewDoubleBuffer -Grid $SwitchingDGV -Enabled $true -$SwitchingPageControls += $SwitchingDGV +Set-DataGridViewDoubleBuffer -Grid $LegacyGUIswitchingDGV -Enabled $true +$LegacyGUIswitchingPageControls += $LegacyGUIswitchingDGV # Watchdog Page Controls -$WatchdogTimersPageControls = @() - -$WatchdogTimersLabel = New-Object System.Windows.Forms.Label -$WatchdogTimersLabel.AutoSize = $false -$WatchdogTimersLabel.Font = [System.Drawing.Font]::new("Microsoft Sans Serif", 10) -$WatchdogTimersLabel.Height = 20 -$WatchdogTimersLabel.Location = [System.Drawing.Point]::new(6, 6) -$WatchdogTimersLabel.Width = 600 -$WatchdogTimersPageControls += $WatchdogTimersLabel - -$WatchdogTimersRemoveButton = New-Object System.Windows.Forms.Button -$WatchdogTimersRemoveButton.Font = [System.Drawing.Font]::new("Microsoft Sans Serif", 10) -$WatchdogTimersRemoveButton.Height = 24 -$WatchdogTimersRemoveButton.Location = [System.Drawing.Point]::new(6, ($WatchdogTimersLabel.Height + 8)) -$WatchdogTimersRemoveButton.Text = "Remove all watchdog timers" -$WatchdogTimersRemoveButton.Visible = $true -$WatchdogTimersRemoveButton.Width = 220 -$WatchdogTimersRemoveButton.Add_Click( +$LegacyGUIwatchdogTimersPageControls = @() + +$LegacyGUIwatchdogTimersLabel = New-Object System.Windows.Forms.Label +$LegacyGUIwatchdogTimersLabel.AutoSize = $false +$LegacyGUIwatchdogTimersLabel.Font = [System.Drawing.Font]::new("Microsoft Sans Serif", 10) +$LegacyGUIwatchdogTimersLabel.Height = 20 +$LegacyGUIwatchdogTimersLabel.Location = [System.Drawing.Point]::new(6, 6) +$LegacyGUIwatchdogTimersLabel.Width = 600 +$LegacyGUIwatchdogTimersPageControls += $LegacyGUIwatchdogTimersLabel + +$LegacyGUIwatchdogTimersRemoveButton = New-Object System.Windows.Forms.Button +$LegacyGUIwatchdogTimersRemoveButton.Font = [System.Drawing.Font]::new("Microsoft Sans Serif", 10) +$LegacyGUIwatchdogTimersRemoveButton.Height = 24 +$LegacyGUIwatchdogTimersRemoveButton.Location = [System.Drawing.Point]::new(6, ($LegacyGUIwatchdogTimersLabel.Height + 8)) +$LegacyGUIwatchdogTimersRemoveButton.Text = "Remove all watchdog timers" +$LegacyGUIwatchdogTimersRemoveButton.Visible = $true +$LegacyGUIwatchdogTimersRemoveButton.Width = 220 +$LegacyGUIwatchdogTimersRemoveButton.Add_Click( { $Variables.WatchDogTimers = @() - $WatchdogTimersDGV.DataSource = $null + $LegacyGUIwatchdogTimersDGV.DataSource = $null $Variables.Miners.ForEach( { $_.Reasons = [System.Collections.Generic.List[String]]@($_.Reasons.Where({ $_ -notlike "Miner suspended by watchdog *" }) | Sort-Object -Unique) @@ -1577,81 +1577,79 @@ $WatchdogTimersRemoveButton.Add_Click( } ) Write-Message -Level Verbose "GUI: All watchdog timers reset." - $WatchdogTimersRemoveButton.Enabled = $false + $LegacyGUIwatchdogTimersRemoveButton.Enabled = $false [Void][System.Windows.Forms.MessageBox]::Show("Watchdog timers will be recreated in next cycle.", "$($Variables.Branding.ProductLabel) $($_.ClickedItem.Text)", [System.Windows.Forms.MessageBoxButtons]::OK, 64) } ) -$WatchdogTimersPageControls += $WatchdogTimersRemoveButton -$Tooltip.SetToolTip($WatchdogTimersRemoveButton, "This will remove all watchdog timers.`rWatchdog timers will be recreated in next cycle.") - -$WatchdogTimersDGV = New-Object System.Windows.Forms.DataGridView -$WatchdogTimersDGV.AllowUserToAddRows = $false -$WatchdogTimersDGV.AllowUserToOrderColumns = $true -$WatchdogTimersDGV.AllowUserToResizeColumns = $true -$WatchdogTimersDGV.AllowUserToResizeRows = $false -$WatchdogTimersDGV.AutoSizeColumnsMode = "Fill" -$WatchdogTimersDGV.ColumnHeadersDefaultCellStyle.BackColor = [System.Drawing.SystemColors]::MenuBar -$WatchdogTimersDGV.ColumnHeadersHeightSizeMode = "AutoSize" -$WatchdogTimersDGV.ColumnHeadersVisible = $true -$WatchdogTimersDGV.DataBindings.DefaultDataSourceUpdateMode = 0 -$WatchdogTimersDGV.EnableHeadersVisualStyles = $false -$WatchdogTimersDGV.Font = [System.Drawing.Font]::new("Segoe UI", 9) -$WatchdogTimersDGV.Height = 3 -$WatchdogTimersDGV.Location = [System.Drawing.Point]::new(6, ($WatchdogTimersLabel.Height + $WatchdogTimersRemoveButton.Height + 12)) -$WatchdogTimersDGV.Name = "WatchdogTimersDGV" -$WatchdogTimersDGV.ReadOnly = $true -$WatchdogTimersDGV.RowHeadersVisible = $false -Set-DataGridViewDoubleBuffer -Grid $WatchdogTimersDGV -Enabled $true -$WatchdogTimersPageControls += $WatchdogTimersDGV - -$LegacyGUIForm.Controls.AddRange(@($LegacyGUIControls)) -$StatusPage.Controls.AddRange(@($StatusPageControls)) -$EarningsPage.Controls.AddRange(@($EarningsPageControls)) -$MinersPage.Controls.AddRange(@($MinersPageControls)) -$PoolsPage.Controls.AddRange(@($PoolsPageControls)) -$RigMonitorPage.Controls.AddRange(@($RigMonitorPageControls)) -$SwitchingPage.Controls.AddRange(@($SwitchingPageControls)) -$WatchdogTimersPage.Controls.AddRange(@($WatchdogTimersPageControls)) - -$TabControl = New-Object System.Windows.Forms.TabControl -$TabControl.Font = [System.Drawing.Font]::new("Microsoft Sans Serif", 10) -$TabControl.Location = [System.Drawing.Point]::new(6, $MiningSummaryLabel.Bottom) -$TabControl.Name = "TabControl" -$TabControl.ShowToolTips = $true -$TabControl.Height = 0 -$TabControl.Width = 0 -# $TabControl.Controls.AddRange(@($StatusPage, $EarningsPage, $MinersPage, $PoolsPage, $RigMonitorPage, $SwitchingPage, $WatchdogTimersPage)) -$TabControl.Controls.AddRange(@($StatusPage, $EarningsPage, $MinersPage, $PoolsPage, $SwitchingPage, $WatchdogTimersPage)) -$TabControl.Add_Click({ Update-TabControl }) - -$LegacyGUIForm.Controls.Add($TabControl) -$LegacyGUIForm.KeyPreview = $true -$LegacyGUIForm.ResumeLayout() - -$LegacyGUIForm.Add_Load( +$LegacyGUIwatchdogTimersPageControls += $LegacyGUIwatchdogTimersRemoveButton +$LegacyGUItooltip.SetToolTip($LegacyGUIwatchdogTimersRemoveButton, "This will remove all watchdog timers.`rWatchdog timers will be recreated in next cycle.") + +$LegacyGUIwatchdogTimersDGV = New-Object System.Windows.Forms.DataGridView +$LegacyGUIwatchdogTimersDGV.AllowUserToAddRows = $false +$LegacyGUIwatchdogTimersDGV.AllowUserToOrderColumns = $true +$LegacyGUIwatchdogTimersDGV.AllowUserToResizeColumns = $true +$LegacyGUIwatchdogTimersDGV.AllowUserToResizeRows = $false +$LegacyGUIwatchdogTimersDGV.AutoSizeColumnsMode = "Fill" +$LegacyGUIwatchdogTimersDGV.ColumnHeadersDefaultCellStyle.BackColor = [System.Drawing.SystemColors]::MenuBar +$LegacyGUIwatchdogTimersDGV.ColumnHeadersHeightSizeMode = "AutoSize" +$LegacyGUIwatchdogTimersDGV.ColumnHeadersVisible = $true +$LegacyGUIwatchdogTimersDGV.DataBindings.DefaultDataSourceUpdateMode = 0 +$LegacyGUIwatchdogTimersDGV.EnableHeadersVisualStyles = $false +$LegacyGUIwatchdogTimersDGV.Font = [System.Drawing.Font]::new("Segoe UI", 9) +$LegacyGUIwatchdogTimersDGV.Height = 3 +$LegacyGUIwatchdogTimersDGV.Location = [System.Drawing.Point]::new(6, ($LegacyGUIwatchdogTimersLabel.Height + $LegacyGUIwatchdogTimersRemoveButton.Height + 12)) +$LegacyGUIwatchdogTimersDGV.Name = "WatchdogTimersDGV" +$LegacyGUIwatchdogTimersDGV.ReadOnly = $true +$LegacyGUIwatchdogTimersDGV.RowHeadersVisible = $false +Set-DataGridViewDoubleBuffer -Grid $LegacyGUIwatchdogTimersDGV -Enabled $true +$LegacyGUIwatchdogTimersPageControls += $LegacyGUIwatchdogTimersDGV + +$LegacyGUIform.Controls.AddRange(@($LegacyGUIControls)) +$LegacyGUIstatusPage.Controls.AddRange(@($LegacyGUIstatusPageControls)) +$LegacyGUIearningsPage.Controls.AddRange(@($LegacyGUIearningsPageControls)) +$LegacyGUIminersPage.Controls.AddRange(@($LegacyGUIminersPageControls)) +$LegacyGUIpoolsPage.Controls.AddRange(@($LegacyGUIpoolsPageControls)) +$LegacyGUIrigMonitorPage.Controls.AddRange(@($LegacyGUIrigMonitorPageControls)) +$LegacyGUIswitchingPage.Controls.AddRange(@($LegacyGUIswitchingPageControls)) +$LegacyGUIwatchdogTimersPage.Controls.AddRange(@($LegacyGUIwatchdogTimersPageControls)) + +$LegacyGUItabControl = New-Object System.Windows.Forms.TabControl +$LegacyGUItabControl.Font = [System.Drawing.Font]::new("Microsoft Sans Serif", 10) +$LegacyGUItabControl.Location = [System.Drawing.Point]::new(6, $LegacyGUIminingSummaryLabel.Bottom) +$LegacyGUItabControl.Name = "TabControl" +$LegacyGUItabControl.ShowToolTips = $true +$LegacyGUItabControl.Height = 0 +$LegacyGUItabControl.Width = 0 +# $LegacyGUItabControl.Controls.AddRange(@($LegacyGUIstatusPage, $LegacyGUIearningsPage, $LegacyGUIminersPage, $LegacyGUIpoolsPage, $LegacyGUIrigMonitorPage, $LegacyGUIswitchingPage, $LegacyGUIwatchdogTimersPage)) +$LegacyGUItabControl.Controls.AddRange(@($LegacyGUIstatusPage, $LegacyGUIearningsPage, $LegacyGUIminersPage, $LegacyGUIpoolsPage, $LegacyGUIswitchingPage, $LegacyGUIwatchdogTimersPage)) +$LegacyGUItabControl.Add_Click({ Update-TabControl }) + +$LegacyGUIform.Controls.Add($LegacyGUItabControl) +$LegacyGUIform.KeyPreview = $true +$LegacyGUIform.ResumeLayout() + +$LegacyGUIform.Add_Load( { If (Test-Path -LiteralPath ".\Config\WindowSettings.json" -PathType Leaf) { $WindowSettings = Get-Content -Path ".\Config\WindowSettings.json" | ConvertFrom-Json -AsHashtable # Restore window size - If ($WindowSettings.Width -gt $LegacyGUIForm.MinimumSize.Width) { $LegacyGUIForm.Width = $WindowSettings.Width } - If ($WindowSettings.Height -gt $LegacyGUIForm.MinimumSize.Height) { $LegacyGUIForm.Height = $WindowSettings.Height } - If ($WindowSettings.Top -gt 0) { $LegacyGUIForm.Top = $WindowSettings.Top } - If ($WindowSettings.Left -gt 0) { $LegacyGUIForm.Left = $WindowSettings.Left } + If ($WindowSettings.Width -gt $LegacyGUIform.MinimumSize.Width) { $LegacyGUIform.Width = $WindowSettings.Width } + If ($WindowSettings.Height -gt $LegacyGUIform.MinimumSize.Height) { $LegacyGUIform.Height = $WindowSettings.Height } + If ($WindowSettings.Top -gt 0) { $LegacyGUIform.Top = $WindowSettings.Top } + If ($WindowSettings.Left -gt 0) { $LegacyGUIform.Left = $WindowSettings.Left } } - $Global:LegacyGUIFormWindowState = If ($Config.LegacyGUIStartMinimized) { [System.Windows.Forms.FormWindowState]::Minimized } Else { [System.Windows.Forms.FormWindowState]::Normal } - - Form-Resize + $LegacyGUIformWindowState = If ($Config.LegacyGUIStartMinimized) { [System.Windows.Forms.FormWindowState]::Minimized } Else { [System.Windows.Forms.FormWindowState]::Normal } Update-GUIstatus - $MiningSummaryLabel.Text = "" - $MiningSummaryLabel.SendToBack() - (($Variables.Summary -replace 'Power Cost', '
Power Cost' -replace ' / ', '/' -replace ' ', ' ' -replace ' ', ' ') -split '
').ForEach({ $MiningSummaryLabel.Text += "`r`n$_" }) - $MiningSummaryLabel.Text += "`r`n " - If (-not $Variables.MinersBest) { $MiningSummaryLabel.ForeColor = [System.Drawing.Color]::Black } - ElseIf ($Variables.MiningProfit -ge 0) { $MiningSummaryLabel.ForeColor = [System.Drawing.Color]::Green } - ElseIf ($Variables.MiningProfit -lt 0) { $MiningSummaryLabel.ForeColor = [System.Drawing.Color]::Red } + $LegacyGUIminingSummaryLabel.Text = "" + $LegacyGUIminingSummaryLabel.SendToBack() + (($Variables.Summary -replace 'Power Cost', '
Power Cost' -replace ' / ', '/' -replace ' ', ' ' -replace ' ', ' ') -split '
').ForEach({ $LegacyGUIminingSummaryLabel.Text += "`r`n$_" }) + $LegacyGUIminingSummaryLabel.Text += "`r`n " + If (-not $Variables.MinersBest) { $LegacyGUIminingSummaryLabel.ForeColor = [System.Drawing.Color]::Black } + ElseIf ($Variables.MiningProfit -ge 0) { $LegacyGUIminingSummaryLabel.ForeColor = [System.Drawing.Color]::Green } + ElseIf ($Variables.MiningProfit -lt 0) { $LegacyGUIminingSummaryLabel.ForeColor = [System.Drawing.Color]::Red } $TimerUI = New-Object System.Windows.Forms.Timer $TimerUI.Interval = 100 @@ -1659,14 +1657,14 @@ $LegacyGUIForm.Add_Load( { If ($LegacyGUIform.CanSelect) { If ($Variables.APIRunspace) { - If ($EditConfigLink.Tag -ne "WebGUI") { - $EditConfigLink.Tag = "WebGUI" - $EditConfigLink.Text = "Edit configuration in the Web GUI" + If ($LegacyGUIeditConfigLink.Tag -ne "WebGUI") { + $LegacyGUIeditConfigLink.Tag = "WebGUI" + $LegacyGUIeditConfigLink.Text = "Edit configuration in the Web GUI" } } - ElseIf ($EditConfigLink.Tag -ne "Edit-File") { - $EditConfigLink.Tag = "Edit-File" - $EditConfigLink.Text = "Edit configuration file '$($Variables.ConfigFile)' in notepad" + ElseIf ($LegacyGUIeditConfigLink.Tag -ne "Edit-File") { + $LegacyGUIeditConfigLink.Tag = "Edit-File" + $LegacyGUIeditConfigLink.Text = "Edit configuration file '$($Variables.ConfigFile)' in notepad" } [Void](MainLoop) } @@ -1676,7 +1674,7 @@ $LegacyGUIForm.Add_Load( } ) -$LegacyGUIForm.Add_FormClosing( +$LegacyGUIform.Add_FormClosing( { If ($Config.LegacyGUI) { $MsgBoxInput = [System.Windows.Forms.MessageBox]::Show("Do you want to shut down $($Variables.Branding.ProductLabel)?", "$($Variables.Branding.ProductLabel)", [System.Windows.Forms.MessageBoxButtons]::YesNo, 32, "Button2") @@ -1694,9 +1692,9 @@ $LegacyGUIForm.Add_FormClosing( Stop-Brain Stop-BalancesTracker - If ($LegacyGUIForm.DesktopBounds.Width -ge 0) { + If ($LegacyGUIform.DesktopBounds.Width -ge 0) { # Save window settings - $LegacyGUIForm.DesktopBounds | ConvertTo-Json | Out-File -LiteralPath ".\Config\WindowSettings.json" -Force -ErrorAction Ignore + $LegacyGUIform.DesktopBounds | ConvertTo-Json | Out-File -LiteralPath ".\Config\WindowSettings.json" -Force -ErrorAction Ignore } Write-Message -Level Info "$($Variables.Branding.ProductLabel) has shut down." @@ -1709,18 +1707,18 @@ $LegacyGUIForm.Add_FormClosing( } ) -$LegacyGUIForm.Add_KeyDown( +$LegacyGUIform.Add_KeyDown( { If ($PSItem.KeyCode -eq "F5") { Update-TabControl } } ) -$LegacyGUIForm.Add_ResizeEnd({ Form-Resize }) +$LegacyGUIform.Add_ResizeEnd({ Form-Resize }) -$LegacyGUIForm.Add_SizeChanged( +$LegacyGUIform.Add_SizeChanged( { - If ($this.WindowState -ne $Global:LegacyGUIFormWindowState) { - $Global:LegacyGUIFormWindowState = $this.WindowState + If ($this.WindowState -ne $LegacyGUIformWindowState) { + $LegacyGUIformWindowState = $this.WindowState Form-Resize } } diff --git a/Includes/MinerAPIs/BzMiner.ps1 b/Includes/MinerAPIs/BzMiner.ps1 index a81f57ab..3bf8d383 100644 --- a/Includes/MinerAPIs/BzMiner.ps1 +++ b/Includes/MinerAPIs/BzMiner.ps1 @@ -18,8 +18,8 @@ along with this program. If not, see . <# Product: UG-Miner File: \Includes\MinerAPIs\BzMiner.ps1 -Version: 6.2.11 -Version date: 2024/06/23 +Version: 6.2.12 +Version date: 2024/06/26 #> Class BzMiner : Miner { @@ -70,7 +70,7 @@ Class BzMiner : Miner { If ($HashRate.PSObject.Properties.Value -gt 0) { If ($this.ReadPowerConsumption) { - $PowerConsumption = [Double]($Devices | Measure-Object power -Sum | Select-Object -ExpandProperty Sum) + $PowerConsumption = [Double]($Devices | Measure-Object power -Sum).Sum If (-not $PowerConsumption) { $PowerConsumption = $this.GetPowerConsumption() } diff --git a/Includes/MinerAPIs/Ccminer.ps1 b/Includes/MinerAPIs/Ccminer.ps1 index 2a9ba89a..0193fe12 100644 --- a/Includes/MinerAPIs/Ccminer.ps1 +++ b/Includes/MinerAPIs/Ccminer.ps1 @@ -18,8 +18,8 @@ along with this program. If not, see . <# Product: UG-Miner File: \Includes\MinerAPIs\CCminer.ps1 -Version: 6.2.11 -Version date: 2024/06/23 +Version: 6.2.12 +Version date: 2024/06/26 #> Class CcMiner : Miner { diff --git a/Includes/MinerAPIs/EthMiner.ps1 b/Includes/MinerAPIs/EthMiner.ps1 index 59c475c3..4647b259 100644 --- a/Includes/MinerAPIs/EthMiner.ps1 +++ b/Includes/MinerAPIs/EthMiner.ps1 @@ -18,8 +18,8 @@ along with this program. If not, see . <# Product: UG-Miner File: \Includes\MinerAPIs\EthMiner.ps1 -Version: 6.2.11 -Version date: 2024/06/23 +Version: 6.2.12 +Version date: 2024/06/26 #> Class EthMiner : Miner { diff --git a/Includes/MinerAPIs/FireIce.ps1 b/Includes/MinerAPIs/FireIce.ps1 index 297f7792..977d3854 100644 --- a/Includes/MinerAPIs/FireIce.ps1 +++ b/Includes/MinerAPIs/FireIce.ps1 @@ -18,8 +18,8 @@ along with this program. If not, see . <# Product: UG-Miner File: \Includes\MinerAPIs\FireIce.ps1 -Version: 6.2.11 -Version date: 2024/06/23 +Version: 6.2.12 +Version date: 2024/06/26 #> Class Fireice : Miner { diff --git a/Includes/MinerAPIs/Gminer.ps1 b/Includes/MinerAPIs/Gminer.ps1 index d0d56fef..1f0a8831 100644 --- a/Includes/MinerAPIs/Gminer.ps1 +++ b/Includes/MinerAPIs/Gminer.ps1 @@ -18,8 +18,8 @@ along with this program. If not, see . <# Product: UG-Miner File: \Includes\MinerAPIs\GMiner.ps1 -Version: 6.2.11 -Version date: 2024/06/23 +Version: 6.2.12 +Version date: 2024/06/26 #> Class GMiner : Miner { @@ -62,7 +62,7 @@ Class GMiner : Miner { If ($HashRate.PSObject.Properties.Value -gt 0) { If ($this.ReadPowerConsumption) { - $PowerConsumption = [Double]($Data.devices | Measure-Object power_usage -Sum | Select-Object -ExpandProperty Sum) + $PowerConsumption = [Double]($Data.devices | Measure-Object power_usage -Sum).Sum If (-not $PowerConsumption) { $PowerConsumption = $this.GetPowerConsumption() } diff --git a/Includes/MinerAPIs/HellMiner.ps1 b/Includes/MinerAPIs/HellMiner.ps1 index 833cbf25..ba82a29a 100644 --- a/Includes/MinerAPIs/HellMiner.ps1 +++ b/Includes/MinerAPIs/HellMiner.ps1 @@ -18,8 +18,8 @@ along with this program. If not, see . <# Product: UG-Miner File: \Includes\MinerAPIs\lolMiner.ps1 -Version: 6.2.11 -Version date: 2024/06/23 +Version: 6.2.12 +Version date: 2024/06/26 #> Class HellMiner : Miner { diff --git a/Includes/MinerAPIs/MiniZ.ps1 b/Includes/MinerAPIs/MiniZ.ps1 index 9170622a..ce00c981 100644 --- a/Includes/MinerAPIs/MiniZ.ps1 +++ b/Includes/MinerAPIs/MiniZ.ps1 @@ -18,8 +18,8 @@ along with this program. If not, see . <# Product: UG-Miner File: \Includes\MinerAPIs\MiniZ.ps1 -Version: 6.2.11 -Version date: 2024/06/23 +Version: 6.2.12 +Version date: 2024/06/26 #> Class MiniZ : Miner { @@ -55,7 +55,7 @@ Class MiniZ : Miner { If ($HashRate.PSObject.Properties.Value -gt 0) { If ($this.ReadPowerConsumption) { - $PowerConsumption = [Double]($Data.result | Measure-Object gpu_power_usage -Sum | Select-Object -ExpandProperty Sum) + $PowerConsumption = [Double]($Data.result | Measure-Object gpu_power_usage -Sum).Sum If (-not $PowerConsumption) { $PowerConsumption = $this.GetPowerConsumption() } diff --git a/Includes/MinerAPIs/NBMiner.ps1 b/Includes/MinerAPIs/NBMiner.ps1 index edde6455..f77ba00f 100644 --- a/Includes/MinerAPIs/NBMiner.ps1 +++ b/Includes/MinerAPIs/NBMiner.ps1 @@ -18,8 +18,8 @@ along with this program. If not, see . <# Product: UG-Miner File: \Includes\MinerAPIs\NBMiner.ps1 -Version: 6.2.11 -Version date: 2024/06/23 +Version: 6.2.12 +Version date: 2024/06/26 #> Class NBMiner : Miner { @@ -62,7 +62,7 @@ Class NBMiner : Miner { If ($HashRate.PSObject.Properties.Value -gt 0) { If ($this.ReadPowerConsumption) { - $PowerConsumption = [Double]($Data.miner | Measure-Object total_power_consume -Sum | Select-Object -ExpandProperty Sum) + $PowerConsumption = [Double]($Data.miner | Measure-Object total_power_consume -Sum).Sum If (-not $PowerConsumption) { $PowerConsumption = $this.GetPowerConsumption() } diff --git a/Includes/MinerAPIs/NanoMiner.ps1 b/Includes/MinerAPIs/NanoMiner.ps1 index 14e15a18..84eabe07 100644 --- a/Includes/MinerAPIs/NanoMiner.ps1 +++ b/Includes/MinerAPIs/NanoMiner.ps1 @@ -18,8 +18,8 @@ along with this program. If not, see . <# Product: UG-Miner File: \Includes\MinerAPIs\NanoMiner.ps1 -Version: 6.2.11 -Version date: 2024/06/23 +Version: 6.2.12 +Version date: 2024/06/26 #> Class NanoMiner : Miner { diff --git a/Includes/MinerAPIs/OneZero.ps1 b/Includes/MinerAPIs/OneZero.ps1 index a640ee59..5b613b3f 100644 --- a/Includes/MinerAPIs/OneZero.ps1 +++ b/Includes/MinerAPIs/OneZero.ps1 @@ -18,8 +18,8 @@ along with this program. If not, see . <# Product: UG-Miner File: \Includes\MinerAPIs\Trex.ps1 -Version: 6.2.11 -Version date: 2024/06/23 +Version: 6.2.12 +Version date: 2024/06/26 #> Class OneZero : Miner { @@ -52,7 +52,7 @@ Class OneZero : Miner { If ($HashRate.PSObject.Properties.Value -gt 0) { If ($this.ReadPowerConsumption) { - $PowerConsumption = [Double]($Data.Devices | Measure-Object power -Sum | Select-Object -ExpandProperty Sum) + $PowerConsumption = [Double]($Data.Devices | Measure-Object power -Sum).Sum If (-not $PowerConsumption) { $PowerConsumption = $this.GetPowerConsumption() } diff --git a/Includes/MinerAPIs/Rigel.ps1 b/Includes/MinerAPIs/Rigel.ps1 index 29047510..5c501777 100644 --- a/Includes/MinerAPIs/Rigel.ps1 +++ b/Includes/MinerAPIs/Rigel.ps1 @@ -18,8 +18,8 @@ along with this program. If not, see . <# Product: UG-Miner File: \Includes\MinerAPIs\Rigel.ps1 -Version: 6.2.11 -Version date: 2024/06/23 +Version: 6.2.12 +Version date: 2024/06/26 #> Class Rigel : Miner { diff --git a/Includes/MinerAPIs/SRBMiner.ps1 b/Includes/MinerAPIs/SRBMiner.ps1 index 13360de8..266d6bdf 100644 --- a/Includes/MinerAPIs/SRBMiner.ps1 +++ b/Includes/MinerAPIs/SRBMiner.ps1 @@ -18,8 +18,8 @@ along with this program. If not, see . <# Product: UG-Miner File: \Includes\MinerAPIs\SRBminer.ps1 -Version: 6.2.11 -Version date: 2024/06/23 +Version: 6.2.12 +Version date: 2024/06/26 #> Class SRBMiner : Miner { @@ -65,7 +65,7 @@ Class SRBMiner : Miner { If ($HashRate.PSObject.Properties.Value -gt 0) { If ($this.ReadPowerConsumption) { - $PowerConsumption = [Double]($Data.gpu_devices | Measure-Object asic_power -Sum | Select-Object -ExpandProperty Sum) + $PowerConsumption = [Double]($Data.gpu_devices | Measure-Object asic_power -Sum).Sum If (-not $PowerConsumption) { $PowerConsumption = $this.GetPowerConsumption() } diff --git a/Includes/MinerAPIs/TeamBlackMiner.ps1 b/Includes/MinerAPIs/TeamBlackMiner.ps1 index 1f729c1e..ed12a20a 100644 --- a/Includes/MinerAPIs/TeamBlackMiner.ps1 +++ b/Includes/MinerAPIs/TeamBlackMiner.ps1 @@ -18,8 +18,8 @@ along with this program. If not, see . <# Product: UG-Miner File: \Includes\MinerAPIs\lolMiner.ps1 -Version: 6.2.11 -Version date: 2024/06/23 +Version: 6.2.12 +Version date: 2024/06/26 #> Class TeamBlackMiner : Miner { @@ -68,7 +68,7 @@ Class TeamBlackMiner : Miner { If ($HashRate.PSObject.Properties.Value -gt 0) { If ($this.ReadPowerConsumption) { $Data.Devices.ForEach({ $PowerConsumption += [Double]$_.PSObject.Properties.Value.watt }) - $PowerConsumption = [Double]($Data.result | Measure-Object gpu_power_usage -Sum | Select-Object -ExpandProperty Sum) + $PowerConsumption = [Double]($Data.result | Measure-Object gpu_power_usage -Sum).Sum If (-not $PowerConsumption) { $PowerConsumption = $this.GetPowerConsumption() } diff --git a/Includes/MinerAPIs/Trex.ps1 b/Includes/MinerAPIs/Trex.ps1 index fe9e2811..2c1389fb 100644 --- a/Includes/MinerAPIs/Trex.ps1 +++ b/Includes/MinerAPIs/Trex.ps1 @@ -18,8 +18,8 @@ along with this program. If not, see . <# Product: UG-Miner File: \Includes\MinerAPIs\Trex.ps1 -Version: 6.2.11 -Version date: 2024/06/23 +Version: 6.2.12 +Version date: 2024/06/26 #> Class Trex : Miner { @@ -64,7 +64,7 @@ Class Trex : Miner { If ($HashRate.PSObject.Properties.Value -gt 0) { If ($this.ReadPowerConsumption) { - $PowerConsumption = [Double]($Data.gpus | Measure-Object power -Sum | Select-Object -ExpandProperty Sum) + $PowerConsumption = [Double]($Data.gpus | Measure-Object power -Sum).Sum If (-not $PowerConsumption) { $PowerConsumption = $this.GetPowerConsumption() } diff --git a/Includes/MinerAPIs/Xgminer.ps1 b/Includes/MinerAPIs/Xgminer.ps1 index 2e322bc7..8ca98e1e 100644 --- a/Includes/MinerAPIs/Xgminer.ps1 +++ b/Includes/MinerAPIs/Xgminer.ps1 @@ -18,8 +18,8 @@ along with this program. If not, see . <# Product: UG-Miner File: \Includes\MinerAPIs\Xgminer.ps1 -Version: 6.2.11 -Version date: 2024/06/23 +Version: 6.2.12 +Version date: 2024/06/26 #> Class XgMiner : Miner { diff --git a/Includes/MinerAPIs/XmRig.ps1 b/Includes/MinerAPIs/XmRig.ps1 index c2f3909d..80c5dbd9 100644 --- a/Includes/MinerAPIs/XmRig.ps1 +++ b/Includes/MinerAPIs/XmRig.ps1 @@ -18,8 +18,8 @@ along with this program. If not, see . <# Product: UG-Miner File: \Includes\MinerAPIs\XmRig.ps1 -Version: 6.2.11 -Version date: 2024/06/23 +Version: 6.2.12 +Version date: 2024/06/26 #> Class XmRig : Miner { diff --git a/Includes/MinerAPIs/lolMiner.ps1 b/Includes/MinerAPIs/lolMiner.ps1 index db2af681..4785375f 100644 --- a/Includes/MinerAPIs/lolMiner.ps1 +++ b/Includes/MinerAPIs/lolMiner.ps1 @@ -18,8 +18,8 @@ along with this program. If not, see . <# Product: UG-Miner File: \Includes\MinerAPIs\lolMiner.ps1 -Version: 6.2.11 -Version date: 2024/06/23 +Version: 6.2.12 +Version date: 2024/06/26 #> Class lolMiner : Miner { @@ -86,7 +86,7 @@ Class lolMiner : Miner { If ($HashRate.PSObject.Properties.Value -gt 0) { If ($this.ReadPowerConsumption) { - $PowerConsumption = [Double]($Data.Workers | Measure-Object Power -Sum | Select-Object -ExpandProperty Sum) + $PowerConsumption = [Double]($Data.Workers | Measure-Object Power -Sum).Sum If (-not $PowerConsumption) { $PowerConsumption = $this.GetPowerConsumption() } diff --git a/Miners/BzMiner-v21.2.0.ps1 b/Miners/BzMiner-v21.2.0.ps1 index 4da76d2b..a9c7e6f0 100644 --- a/Miners/BzMiner-v21.2.0.ps1 +++ b/Miners/BzMiner-v21.2.0.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.2.11 -Version date: 2024/06/23 +Version: 6.2.12 +Version date: 2024/06/26 #> If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.Type -in @("AMD", "INTEL") -or ($_.OpenCL.ComputeCapability -ge "5.0" -and $_.OpenCL.DriverVersion -ge [Version]"460.27.03") }))) { Return } @@ -103,14 +103,14 @@ If ($Algorithms) { { $ExcludeGPUArchitecture = $_.ExcludeGPUArchitecture $ExcludeGPUModel = $_.ExcludeGPUModel - If ($AvailableMinerDevices = $MinerDevices.Where({ (-not $ExcludeGPUModel -or $_.Model -notmatch $ExcludeGPUModel) -and $_.Architecture -notin $ExcludeGPUArchitecture })) { + If ($SupportedMinerDevices = $MinerDevices.Where({ (-not $ExcludeGPUModel -or $_.Model -notmatch $ExcludeGPUModel) -and $_.Architecture -notin $ExcludeGPUArchitecture })) { $ExcludePools = $_.ExcludePools ForEach ($Pool0 in $MinerPools[0][$_.Algorithms[0]].Where({ $_.Name -notin $ExcludePools[0] -and ($Config.SSL -ne "Always" -or $_.SSLSelfSignedCertificate -ne $true) })) { ForEach ($Pool1 in $MinerPools[1][$_.Algorithms[1]].Where({ $_.Name -notin $ExcludePools[1] -and ($Config.SSL -ne "Always" -or $_.SSLSelfSignedCertificate -ne $true) })) { $MinMemGiB = $_.MinMemGiB + $Pool0.DAGSizeGiB + $Pool1.DAGSizeGiB - If ($AvailableMinerDevices = $AvailableMinerDevices.Where({ $_.MemoryGiB -ge $MinMemGiB })) { + If ($AvailableMinerDevices = $SupportedMinerDevices.Where({ $_.MemoryGiB -ge $MinMemGiB })) { $MinerName = "$Name-$($AvailableMinerDevices.Count)x$($AvailableMinerDevices.Model | Select-Object -Unique)-$($Pool0.AlgorithmVariant)$(If ($Pool1) { "&$($Pool1.AlgorithmVariant)" })" diff --git a/Miners/CcminerAlexis78-v1.5.2.ps1 b/Miners/CcminerAlexis78-v1.5.2.ps1 index c2d1abd3..fc4ffa98 100644 --- a/Miners/CcminerAlexis78-v1.5.2.ps1 +++ b/Miners/CcminerAlexis78-v1.5.2.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.2.11 -Version date: 2024/06/23 +Version: 6.2.12 +Version date: 2024/06/26 #> 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 b610e340..c8976963 100644 --- a/Miners/CcminerDyn-v1.0.2.ps1 +++ b/Miners/CcminerDyn-v1.0.2.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.2.11 -Version date: 2024/06/23 +Version: 6.2.12 +Version date: 2024/06/26 #> 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 c05ace0e..2139fc8a 100644 --- a/Miners/CcminerKlausT-v8.25.ps1 +++ b/Miners/CcminerKlausT-v8.25.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.2.11 -Version date: 2024/06/23 +Version: 6.2.12 +Version date: 2024/06/26 #> 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 a22abf64..fc8c0dcb 100644 --- a/Miners/CcminerKlausT-v8.26x2.ps1 +++ b/Miners/CcminerKlausT-v8.26x2.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.2.11 -Version date: 2024/06/23 +Version: 6.2.12 +Version date: 2024/06/26 #> 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 082fa59a..c713ac0b 100644 --- a/Miners/CcminerLyra2z330-v8.21r9.ps1 +++ b/Miners/CcminerLyra2z330-v8.21r9.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.2.11 -Version date: 2024/06/23 +Version: 6.2.12 +Version date: 2024/06/26 #> 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 d4364377..6234c2f6 100644 --- a/Miners/CcminerLyraYesscrypt-v8.21r18v5.ps1 +++ b/Miners/CcminerLyraYesscrypt-v8.21r18v5.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.2.11 -Version date: 2024/06/23 +Version: 6.2.12 +Version date: 2024/06/26 #> 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 09792485..472f55f8 100644 --- a/Miners/CcminerMemeHash-v2.5.5.9.ps1 +++ b/Miners/CcminerMemeHash-v2.5.5.9.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.2.11 -Version date: 2024/06/23 +Version: 6.2.12 +Version date: 2024/06/26 #> 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 2ba48b37..bbe75f7e 100644 --- a/Miners/CcminerNeoscryptXaya-v0.2.ps1 +++ b/Miners/CcminerNeoscryptXaya-v0.2.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.2.11 -Version date: 2024/06/23 +Version: 6.2.12 +Version date: 2024/06/26 #> 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 a4c09e19..c9eb9876 100644 --- a/Miners/CcminerVerusCpu-v3.8.3.ps1 +++ b/Miners/CcminerVerusCpu-v3.8.3.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.2.11 -Version date: 2024/06/23 +Version: 6.2.12 +Version date: 2024/06/26 #> 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 75aa5fe1..d5a9d534 100644 --- a/Miners/CcminerVerusGpu-v3.8.3.ps1 +++ b/Miners/CcminerVerusGpu-v3.8.3.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.2.11 -Version date: 2024/06/23 +Version: 6.2.12 +Version date: 2024/06/26 #> If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.OpenCL.ComputeCapability -ge "7.5" }))) { Return } diff --git a/Miners/ClaymoreDualME-v2.7.ps1 b/Miners/ClaymoreDualME-v2.7.ps1 index b1b384d0..48d72cc2 100644 --- a/Miners/ClaymoreDualME-v2.7.ps1 +++ b/Miners/ClaymoreDualME-v2.7.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.2.11 -Version date: 2024/06/23 +Version: 6.2.12 +Version date: 2024/06/26 #> If (-not ($Devices = $Variables.EnabledDevices.Where({ ($_.Type -eq "AMD" -and $Variables.DriverVersion.CIM.AMD -le [Version]"20.45.01.28") -or $_.OpenCL.ComputeCapability -ge "5.0" }))) { Return } # Only supports AMD drivers until 20.12.1 diff --git a/Miners/ClaymoreNeoscrypt-v1.2.ps1 b/Miners/ClaymoreNeoscrypt-v1.2.ps1 index 9eca8b14..652de0cf 100644 --- a/Miners/ClaymoreNeoscrypt-v1.2.ps1 +++ b/Miners/ClaymoreNeoscrypt-v1.2.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.2.11 -Version date: 2024/06/23 +Version: 6.2.12 +Version date: 2024/06/26 #> 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 425c7026..7c08db30 100644 --- a/Miners/CpuMiner-v1.4.ps1 +++ b/Miners/CpuMiner-v1.4.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.2.11 -Version date: 2024/06/23 +Version: 6.2.12 +Version date: 2024/06/26 #> 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 34716480..e2f3ed0c 100644 --- a/Miners/CpuMinerAurum-v3.23.1.ps1 +++ b/Miners/CpuMinerAurum-v3.23.1.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.2.11 -Version date: 2024/06/23 +Version: 6.2.12 +Version date: 2024/06/26 #> 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 5a554aa4..89b3657d 100644 --- a/Miners/CryptoDredge-v0.16.0.ps1 +++ b/Miners/CryptoDredge-v0.16.0.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.2.11 -Version date: 2024/06/23 +Version: 6.2.12 +Version date: 2024/06/26 #> 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 4ddab32a..0ec12f03 100644 --- a/Miners/CryptoDredge-v0.27.0.ps1 +++ b/Miners/CryptoDredge-v0.27.0.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.2.11 -Version date: 2024/06/23 +Version: 6.2.12 +Version date: 2024/06/26 #> If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.OpenCL.ComputeCapability -ge "5.0" -and $_.Architecture -ne "Other" }))) { Return } @@ -63,13 +63,13 @@ If ($Algorithms) { $Algorithms.ForEach( { $MinComputeCapability = $_.MinComputeCapability - If ($AvailableMinerDevices = $MinerDevices.Where({ [Double]$_.OpenCL.ComputeCapability -ge $MinComputeCapability })) { + If ($SupportedMinerDevices = $MinerDevices.Where({ [Double]$_.OpenCL.ComputeCapability -ge $MinComputeCapability })) { $ExcludePools = $_.ExcludePools ForEach ($Pool in $MinerPools[0][$_.Algorithm].Where({ $_.PoolPorts[0] -and $_.Name -notin $ExcludePools})) { $MinMemGiB = $_.MinMemGiB + $Pool.DAGSizeGiB - If ($AvailableMinerDevices = $AvailableMinerDevices.Where({ $_.MemoryGiB -ge $MinMemGiB })) { + If ($AvailableMinerDevices = $SupportedMinerDevices.Where({ $_.MemoryGiB -ge $MinMemGiB })) { $MinerName = "$Name-$($AvailableMinerDevices.Count)x$($AvailableMinerDevices.Model | Select-Object -Unique)-$($_.Algorithm)" diff --git a/Miners/EthMiner-v0.19.0.18.ps1 b/Miners/EthMiner-v0.19.0.18.ps1 index 3c4a0d3f..dd3a3da0 100644 --- a/Miners/EthMiner-v0.19.0.18.ps1 +++ b/Miners/EthMiner-v0.19.0.18.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.2.11 -Version date: 2024/06/23 +Version: 6.2.12 +Version date: 2024/06/26 #> 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 68f01ec5..5302e57d 100644 --- a/Miners/EvrProgPow-v1p3p0.ps1 +++ b/Miners/EvrProgPow-v1p3p0.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.2.11 -Version date: 2024/06/23 +Version: 6.2.12 +Version date: 2024/06/26 #> If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.OpenCL.ComputeCapability -ge "5.0" }))) { Return } @@ -46,14 +46,14 @@ If ($Algorithms) { $Algorithms.ForEach( { $ExcludeGPUArchitecture = $_.ExcludeGPUArchitecture - If ($AvailableMinerDevices = $MinerDevices.Where({ $_.Architecture -notin $ExcludeGPUArchitecture })) { + If ($SupportedMinerDevices = $MinerDevices.Where({ $_.Architecture -notin $ExcludeGPUArchitecture })) { # $ExcludePools = $_.ExcludePools # ForEach ($Pool in $MinerPools[0][$_.Algorithm].Where({ $_.Name -notin $ExcludePools })) { ForEach ($Pool in $MinerPools[0][$_.Algorithm]) { $MinMemGiB = $_.MinMemGiB + $Pool.DAGSizeGiB - If ($AvailableMinerDevices = $AvailableMinerDevices.Where({ $_.MemoryGiB -ge $MinMemGiB })) { + If ($AvailableMinerDevices = $SupportedMinerDevices.Where({ $_.MemoryGiB -ge $MinMemGiB })) { $MinerName = "$Name-$($AvailableMinerDevices.Count)x$($AvailableMinerDevices.Model | Select-Object -Unique)-$($Pool.AlgorithmVariant)" diff --git a/Miners/FrkHashMiner-v1.3.14.ps1 b/Miners/FrkHashMiner-v1.3.14.ps1 index 861c681a..614e1ef0 100644 --- a/Miners/FrkHashMiner-v1.3.14.ps1 +++ b/Miners/FrkHashMiner-v1.3.14.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.2.11 -Version date: 2024/06/23 +Version: 6.2.12 +Version date: 2024/06/26 #> 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 34ddde9c..e92c737b 100644 --- a/Miners/GMiner-v2.75.ps1 +++ b/Miners/GMiner-v2.75.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.2.11 -Version date: 2024/06/23 +Version: 6.2.12 +Version date: 2024/06/26 #> using module ..\Includes\Include.psm1 diff --git a/Miners/GMiner-v3.44.ps1 b/Miners/GMiner-v3.44.ps1 index ea6f499c..1ba658d5 100644 --- a/Miners/GMiner-v3.44.ps1 +++ b/Miners/GMiner-v3.44.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.2.11 -Version date: 2024/06/23 +Version: 6.2.12 +Version date: 2024/06/26 #> using module ..\Includes\Include.psm1 @@ -86,14 +86,14 @@ If ($Algorithms) { ($Algorithms | Where-Object Type -EQ $_.Type).ForEach( { $ExcludeGPUArchitecture = $_.ExcludeGPUArchitecture - If ($AvailableMinerDevices = $MinerDevices.Where({ $_.Architecture -notin $ExcludeGPUArchitecture })) { + If ($SupportedMinerDevices = $MinerDevices.Where({ $_.Architecture -notin $ExcludeGPUArchitecture })) { $ExcludePools = $_.ExcludePools ForEach ($Pool0 in $MinerPools[0][$_.Algorithms[0]].Where({ $_.Name -notin $ExcludePools[0] })) { ForEach ($Pool1 in $MinerPools[1][$_.Algorithms[1]].Where({ $_.Name -notin $ExcludePools[1] })) { $MinMemGiB = $_.MinMemGiB + $Pool0.DAGSizeGiB + $Pool1.DAGSizeGiB - If ($AvailableMinerDevices = $AvailableMinerDevices.Where({ $_.MemoryGiB -ge $MinMemGiB })) { + If ($AvailableMinerDevices = $SupportedMinerDevices.Where({ $_.MemoryGiB -ge $MinMemGiB })) { $MinerName = "$Name-$($AvailableMinerDevices.Count)x$($AvailableMinerDevices.Model | Select-Object -Unique)-$($Pool0.AlgorithmVariant)$(If ($Pool1) { "&$($Pool1.AlgorithmVariant)" })" diff --git a/Miners/HellMiner-v0.59.1.ps1 b/Miners/HellMiner-v0.59.1.ps1 index 8e677c87..53c994b5 100644 --- a/Miners/HellMiner-v0.59.1.ps1 +++ b/Miners/HellMiner-v0.59.1.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.2.11 -Version date: 2024/06/23 +Version: 6.2.12 +Version date: 2024/06/26 #> If (-not ($AvailableMinerDevices = $Variables.EnabledDevices.Where({ $_.Type -eq "CPU" }))) { Return } diff --git a/Miners/JayddeeCpu-v24.3.ps1 b/Miners/JayddeeCpu-v24.3.ps1 index f74263d0..d3cf1a28 100644 --- a/Miners/JayddeeCpu-v24.3.ps1 +++ b/Miners/JayddeeCpu-v24.3.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.2.11 -Version date: 2024/06/23 +Version: 6.2.12 +Version date: 2024/06/26 #> 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 ac432b14..a5d6e70a 100644 --- a/Miners/KawpowMiner-v1.2.4cl.ps1 +++ b/Miners/KawpowMiner-v1.2.4cl.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.2.11 -Version date: 2024/06/23 +Version: 6.2.12 +Version date: 2024/06/26 #> If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.Type -eq "AMD" }))) { Return } @@ -34,27 +34,27 @@ $Algorithms = @( $Algorithms = $Algorithms.Where({ $_.MinerSet -le $Config.MinerSet }) $Algorithms = $Algorithms.Where({ $MinerPools[0][$_.Algorithm] }) -$Algorithms = $Algorithms.Where({ $MinerPools[0][$_.Algorithm].Name -notin $_.ExcludePools }) +# $Algorithms = $Algorithms.Where({ $MinerPools[0][$_.Algorithm].Name -notin $_.ExcludePools }) If ($Algorithms) { ($Devices | Select-Object Model -Unique).ForEach( { - If ($Miner_Devices = $Devices | Where-Object Model -EQ $_.Model) { - $MinerAPIPort = $Config.APIPort + ($Miner_Devices.Id | Sort-Object -Top 1) + 1 + If ($MinerDevices = $Devices | Where-Object Model -EQ $_.Model) { + $MinerAPIPort = $Config.APIPort + ($MinerDevices.Id | Sort-Object -Top 1) + 1 $Algorithms.ForEach( { $ExcludeGPUArchitecture = $_.ExcludeGPUArchitecture - If ($AvailableMiner_Devices = $Miner_Devices.Where({ $_.Architecture -notin $ExcludeGPUArchitecture })) { - - $ExcludePools = $_.ExcludePools - ForEach ($Pool in $MinerPools[0][$_.Algorithm].Where({ $_.Name -notin $ExcludePools })) { + If ($SupportedMinerDevices = $MinerDevices.Where({ $_.Architecture -notin $ExcludeGPUArchitecture })) { + # $ExcludePools = $_.ExcludePools + # ForEach ($Pool in $MinerPools[0][$_.Algorithm].Where({ $_.Name -notin $ExcludePools })) { + ForEach ($Pool in $MinerPools[0][$_.Algorithm]) { $MinMemGiB = $_.MinMemGiB + $Pool.DAGSizeGiB - If ($AvailableMiner_Devices = $AvailableMiner_Devices.Where({ $_.MemoryGiB -ge $MinMemGiB })) { + If ($AvailableMinerDevices = $SupportedMinerDevices.Where({ $_.MemoryGiB -ge $MinMemGiB })) { - $Miner_Name = "$Name-$($AvailableMiner_Devices.Count)x$($AvailableMiner_Devices.Model | Select-Object -Unique)-$($Pool.AlgorithmVariant)" + $Miner_Name = "$Name-$($AvailableMinerDevices.Count)x$($AvailableMinerDevices.Model | Select-Object -Unique)-$($Pool.AlgorithmVariant)" $Protocol = Switch ($Pool.Protocol) { "ethproxy" { "stratum1" } @@ -66,8 +66,8 @@ If ($Algorithms) { [PSCustomObject]@{ API = "EthMiner" - Arguments = "$($_.Arguments) --pool $($Protocol)://$([System.Web.HttpUtility]::UrlEncode("$($Pool.User)")):$([System.Web.HttpUtility]::UrlEncode($($Pool.Pass)))@$($Pool.Host):$($Pool.PoolPorts | Select-Object -Last 1) --farm-recheck 10000 --farm-retries 40 --work-timeout 100000 --response-timeout 720 --api-bind 127.0.0.1:$($MinerAPIPort) --cl-devices $(($AvailableMiner_Devices.$DeviceEnumerator | Sort-Object -Unique).ForEach({ '{0:x}' -f $_ }) -join ',')" - DeviceNames = $AvailableMiner_Devices.Name + Arguments = "$($_.Arguments) --pool $($Protocol)://$([System.Web.HttpUtility]::UrlEncode("$($Pool.User)")):$([System.Web.HttpUtility]::UrlEncode($($Pool.Pass)))@$($Pool.Host):$($Pool.PoolPorts | Select-Object -Last 1) --farm-recheck 10000 --farm-retries 40 --work-timeout 100000 --response-timeout 720 --api-bind 127.0.0.1:$($MinerAPIPort) --cl-devices $(($AvailableMinerDevices.$DeviceEnumerator | Sort-Object -Unique).ForEach({ '{0:x}' -f $_ }) -join ',')" + DeviceNames = $AvailableMinerDevices.Name EnvVars = @("SSL_NOVERIFY=TRUE") Fee = @(0) # Dev fee MinerSet = $_.MinerSet diff --git a/Miners/KawpowMiner-v1.2.4cuda.ps1 b/Miners/KawpowMiner-v1.2.4cuda.ps1 index 148f7ac9..cde59725 100644 --- a/Miners/KawpowMiner-v1.2.4cuda.ps1 +++ b/Miners/KawpowMiner-v1.2.4cuda.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.2.11 -Version date: 2024/06/23 +Version: 6.2.12 +Version date: 2024/06/26 #> If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.OpenCL.ComputeCapability -ge "5.0" }))) { Return } @@ -46,14 +46,14 @@ If ($Algorithms) { $Algorithms.ForEach( { $ExcludeGPUArchitecture = $_.ExcludeGPUArchitecture - If ($AvailableMinerDevices = $MinerDevices.Where({ $_.Architecture -notin $ExcludeGPUArchitecture })) { + If ($SupportedMinerDevices = $MinerDevices.Where({ $_.Architecture -notin $ExcludeGPUArchitecture })) { # $ExcludePools = $_.ExcludePools # ForEach ($Pool in $MinerPools[0][$_.Algorithm].Where({ $_.Name -notin $ExcludePools })) { ForEach ($Pool in $MinerPools[0][$_.Algorithm]) { $MinMemGiB = $_.MinMemGiB + $Pool.DAGSizeGiB - If ($AvailableMinerDevices = $AvailableMinerDevices.Where({ $_.MemoryGiB -ge $MinMemGiB })) { + If ($AvailableMinerDevices = $SupportedMinerDevices.Where({ $_.MemoryGiB -ge $MinMemGiB })) { $MinerName = "$Name-$($AvailableMinerDevices.Count)x$($AvailableMinerDevices.Model | Select-Object -Unique)-$($Pool.AlgorithmVariant)" diff --git a/Miners/Kudaraidee-v1.2.0a.ps1 b/Miners/Kudaraidee-v1.2.0a.ps1 index 6939f368..ed832b98 100644 --- a/Miners/Kudaraidee-v1.2.0a.ps1 +++ b/Miners/Kudaraidee-v1.2.0a.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.2.11 -Version date: 2024/06/23 +Version: 6.2.12 +Version date: 2024/06/26 #> If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.Vendor -ne "CPU" -or $_.CUDAVersion -ge [Version]"10.2" }))) { Return } diff --git a/Miners/MeowPowMiner-v2.0.0cl.ps1 b/Miners/MeowPowMiner-v2.0.0cl.ps1 index 6ed1871d..a584c1df 100644 --- a/Miners/MeowPowMiner-v2.0.0cl.ps1 +++ b/Miners/MeowPowMiner-v2.0.0cl.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.2.11 -Version date: 2024/06/23 +Version: 6.2.12 +Version date: 2024/06/26 #> If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.Type -eq "AMD" }))) { Return } @@ -46,14 +46,14 @@ If ($Algorithms) { $Algorithms.ForEach( { $ExcludeGPUArchitecture = $_.ExcludeGPUArchitecture - If ($AvailableMinerDevices = $MinerDevices.Where({ $_.Architecture -notin $ExcludeGPUArchitecture })) { + If ($SupportedMinerDevices = $MinerDevices.Where({ $_.Architecture -notin $ExcludeGPUArchitecture })) { # $ExcludePools = $_.ExcludePools # ForEach ($Pool in $MinerPools[0][$_.Algorithm].Where({ $_.Name -notin $ExcludePools })) { ForEach ($Pool in $MinerPools[0][$_.Algorithm]) { $MinMemGiB = $_.MinMemGiB + $Pool.DAGSizeGiB - If ($AvailableMinerDevices = $AvailableMinerDevices.Where({ $_.MemoryGiB -ge $MinMemGiB })) { + If ($AvailableMinerDevices= $SupportedMinerDevices.Where({ $_.MemoryGiB -ge $MinMemGiB })) { $MinerName = "$Name-$($AvailableMinerDevices.Count)x$($AvailableMinerDevices.Model | Select-Object -Unique)-$($Pool.AlgorithmVariant)" diff --git a/Miners/MeowPowMiner-v2.0.0cuda.ps1 b/Miners/MeowPowMiner-v2.0.0cuda.ps1 index e64b2889..eb8837f8 100644 --- a/Miners/MeowPowMiner-v2.0.0cuda.ps1 +++ b/Miners/MeowPowMiner-v2.0.0cuda.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.2.11 -Version date: 2024/06/23 +Version: 6.2.12 +Version date: 2024/06/26 #> If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.OpenCL.ComputeCapability -ge "5.0" }))) { Return } @@ -46,14 +46,14 @@ If ($Algorithms) { $Algorithms.ForEach( { $ExcludeGPUArchitecture = $_.ExcludeGPUArchitecture - If ($AvailableMinerDevices = $MinerDevices.Where({ $_.Architecture -notin $ExcludeGPUArchitecture })) { + If ($SupportedMinerDevices = $MinerDevices.Where({ $_.Architecture -notin $ExcludeGPUArchitecture })) { # $ExcludePools = $_.ExcludePools # ForEach ($Pool in $MinerPools[0][$_.Algorithm].Where({ $_.Name -notin $ExcludePools })) { ForEach ($Pool in $MinerPools[0][$_.Algorithm]) { $MinMemGiB = $_.MinMemGiB + $Pool.DAGSizeGiB - If ($AvailableMinerDevices = $AvailableMinerDevices.Where({ $_.MemoryGiB -ge $MinMemGiB })) { + If ($AvailableMinerDevices = $SupportedMinerDevices.Where({ $_.MemoryGiB -ge $MinMemGiB })) { $MinerName = "$Name-$($AvailableMinerDevices.Count)x$($AvailableMinerDevices.Model | Select-Object -Unique)-$($Pool.AlgorithmVariant)" diff --git a/Miners/MiniZ-v2.4d.ps1 b/Miners/MiniZ-v2.4d.ps1 index 7fe7f4cc..2da281a0 100644 --- a/Miners/MiniZ-v2.4d.ps1 +++ b/Miners/MiniZ-v2.4d.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.2.11 -Version date: 2024/06/23 +Version: 6.2.12 +Version date: 2024/06/26 #> using module ..\Includes\Include.psm1 @@ -85,13 +85,13 @@ If ($Algorithms) { ($Algorithms | Where-Object Type -EQ $_.Type).ForEach( { $ExcludeGPUArchitecture = $_.ExcludeGPUArchitecture - If ($AvailableMinerDevices = $MinerDevices.Where({ $_.Architecture -notin $ExcludeGPUArchitecture })) { + If ($SupportedMinerDevices = $MinerDevices.Where({ $_.Architecture -notin $ExcludeGPUArchitecture })) { $ExcludePools = $_.ExcludePools ForEach ($Pool in $MinerPools[0][$_.Algorithm].Where({ $_.Name -notin $ExcludePools })) { $MinMemGiB = $_.MinMemGiB + $Pool.DAGSizeGiB - If ($AvailableMinerDevices = $AvailableMinerDevices.Where({ $_.MemoryGiB -ge $MinMemGiB })) { + If ($AvailableMinerDevices = $SupportedMinerDevices.Where({ $_.MemoryGiB -ge $MinMemGiB })) { $MinerName = "$Name-$($AvailableMinerDevices.Count)x$($AvailableMinerDevices.Model | Select-Object -Unique)-$($Pool.AlgorithmVariant)" diff --git a/Miners/NBMiner-v42.3.ps1 b/Miners/NBMiner-v42.3.ps1 index 3f0f1ebe..c6322d62 100644 --- a/Miners/NBMiner-v42.3.ps1 +++ b/Miners/NBMiner-v42.3.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.2.11 -Version date: 2024/06/23 +Version: 6.2.12 +Version date: 2024/06/26 #> If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.Type -eq "AMD" -or ($_.OpenCL.ComputeCapability -ge "5.0" -and $_.CUDAVersion -ge [Version]"10.0") }))) { Return } @@ -57,7 +57,7 @@ If ($Algorithms) { ($Algorithms | Where-Object Type -EQ $_.Type).ForEach( { $MinComputeCapability = $_.MinComputeCapability - If ($AvailableMinerDevices = $MinerDevices.Where({ [Double]$_.OpenCL.ComputeCapability -ge $MinComputeCapability })) { + If ($SupportedMinerDevices = $MinerDevices.Where({ [Double]$_.OpenCL.ComputeCapability -ge $MinComputeCapability })) { # $ExcludePools = $_.ExcludePools # ForEach ($Pool in $MinerPools[0][$_.Algorithm].Where({ $_.Name -notin $ExcludePools })) { @@ -66,7 +66,7 @@ If ($Algorithms) { $MinMemGiB = $_.MinMemGiB + $Pool.DAGSizeGiB # Windows 10 requires more memory on some algos If ([System.Environment]::OSVersion.Version -ge [Version]"10.0.0.0") { $MinMemGiB += $_.AdditionalWin10MemGB } - If ($AvailableMinerDevices = $AvailableMinerDevices.Where({ $_.MemoryGiB -ge $MinMemGiB })) { + If ($AvailableMinerDevices = $SupportedMinerDevices.Where({ $_.MemoryGiB -ge $MinMemGiB })) { $MinerName = "$Name-$($AvailableMinerDevices.Count)x$($AvailableMinerDevices.Model | Select-Object -Unique)-$($Pool.AlgorithmVariant)" diff --git a/Miners/NSFMiner-v1.3.14.ps1 b/Miners/NSFMiner-v1.3.14.ps1 index ea497ca9..38d69a85 100644 --- a/Miners/NSFMiner-v1.3.14.ps1 +++ b/Miners/NSFMiner-v1.3.14.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.2.11 -Version date: 2024/06/23 +Version: 6.2.12 +Version date: 2024/06/26 #> 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.1.ps1 b/Miners/NanoMiner-v3.9.1.ps1 index 0cb8458b..ffc671cb 100644 --- a/Miners/NanoMiner-v3.9.1.ps1 +++ b/Miners/NanoMiner-v3.9.1.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.2.11 -Version date: 2024/06/23 +Version: 6.2.12 +Version date: 2024/06/26 #> If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.Type -ne "NVIDIA" -or ($_.OpenCL.ComputeCapability -ge "5.0" -and $_.OpenCL.DriverVersion -ge [Version]"455.23") }))) { Return } @@ -100,7 +100,7 @@ If ($Algorithms) { ($Algorithms | Where-Object Type -EQ $_.Type).ForEach( { $ExcludeGPUArchitecture = $_.ExcludeGPUArchitecture - If ($AvailableMinerDevices = $MinerDevices.Where({ $_.Type -eq "CPU" -or $_.Architecture -notin $ExcludeGPUArchitecture })) { + If ($SupportedMinerDevices = $MinerDevices.Where({ $_.Type -eq "CPU" -or $_.Architecture -notin $ExcludeGPUArchitecture })) { $ExcludePools = $_.ExcludePools ForEach ($Pool0 in $MinerPools[0][$_.Algorithms[0]].Where({ $_.Name -notin $ExcludePools[0] -and ($Config.SSL -ne "Always" -or $_.SSLSelfSignedCertificate -ne $true) }) | Select-Object -Last $(If ($_.Type -eq "CPU") { 1 } Else { $MinerPools[0][$_.Algorithms[0]].Count })) { @@ -108,7 +108,7 @@ If ($Algorithms) { $Pools = @(($Pool0, $Pool1).Where({ $_ })) $MinMemGiB = $_.MinMemGiB + $Pool0.DAGSizeGiB + $Pool1.DAGSizeGiB - If ($AvailableMinerDevices = $AvailableMinerDevices.Where({ $_.Type -eq "CPU" -or $_.MemoryGiB -ge $MinMemGiB })) { + If ($AvailableMinerDevices = $SupportedMinerDevices.Where({ $_.Type -eq "CPU" -or $_.MemoryGiB -ge $MinMemGiB })) { $MinerName = "$Name-$($AvailableMinerDevices.Count)x$($AvailableMinerDevices.Model | Select-Object -Unique)-$($Pool0.AlgorithmVariant)$(If ($Pool1) { "&$($Pool1.AlgorithmVariant)" })" diff --git a/Miners/Ninjarig-1.0.3.ps1 b/Miners/Ninjarig-1.0.3.ps1 index 79a50ddb..afe4728e 100644 --- a/Miners/Ninjarig-1.0.3.ps1 +++ b/Miners/Ninjarig-1.0.3.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.2.11 -Version date: 2024/06/23 +Version: 6.2.12 +Version date: 2024/06/26 #> 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 32340040..f9ed1d1f 100644 --- a/Miners/NosuchCpu-v3.8.8.1.ps1 +++ b/Miners/NosuchCpu-v3.8.8.1.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.2.11 -Version date: 2024/06/23 +Version: 6.2.12 +Version date: 2024/06/26 #> If (-not ($AvailableMinerDevices = $Variables.EnabledDevices.Where({ $_.Type -eq "CPU" }))) { Return } diff --git a/Miners/OneZeroMiner-v1.3.4.ps1 b/Miners/OneZeroMiner-v1.3.4.ps1 index 926f8f4b..78d523ef 100644 --- a/Miners/OneZeroMiner-v1.3.4.ps1 +++ b/Miners/OneZeroMiner-v1.3.4.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.2.11 -Version date: 2024/06/23 +Version: 6.2.12 +Version date: 2024/06/26 #> 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 17283957..d4e5989a 100644 --- a/Miners/PhoenixMiner-v6.2c.ps1 +++ b/Miners/PhoenixMiner-v6.2c.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.2.11 -Version date: 2024/06/23 +Version: 6.2.12 +Version date: 2024/06/26 #> If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.Type -eq "AMD" -or $_.OpenCL.ComputeCapability -ge "5.0" }))) { Return } @@ -83,7 +83,7 @@ If ($Algorithms) { ($Algorithms | Where-Object Type -EQ $_.Type).ForEach( { $ExcludeGPUArchitecture = $_.ExcludeGPUArchitecture - If ($AvailableMinerDevices = $MinerDevices.Where({ $_.Architecture -notin $ExcludeGPUArchitecture })) { + If ($SupportedMinerDevices = $MinerDevices.Where({ $_.Architecture -notin $ExcludeGPUArchitecture })) { # $ExcludePools = $_.ExcludePools # ForEach ($Pool0 in $MinerPools[0][$_.Algorithms[0]].Where({ $_.Name -notin $ExcludePools[0] -and $_.Epoch -lt 602 -and $_.Algorithm -ne "EtcHash" -or $_.Epoch -lt 302 })) { @@ -92,7 +92,7 @@ If ($Algorithms) { ForEach ($Pool1 in $MinerPools[1][$_.Algorithms[1]]) { $MinMemGiB = $_.MinMemGiB + $Pool0.DAGSizeGiB + $Pool1.DAGSizeGiB - If ($AvailableMinerDevices = $AvailableMinerDevices.Where({ $_.MemoryGiB -ge $MinMemGiB })) { + If ($AvailableMinerDevices = $SupportedMinerDevices.Where({ $_.MemoryGiB -ge $MinMemGiB })) { If ($_.Type -eq "AMD" -and $_.Algorithms[1]) { If ($Pool0.DAGSizeGiB -ge 4) { Return } # AMD: doesn't support Blake2s dual mining with DAG larger 4GB $AvailableMinerDevices = $AvailableMinerDevices.Where({ [Version]$_.CIM.DriverVersion -le [Version]"27.20.22023.1004" }) # doesn't support Blake2s dual mining on drivers newer than 21.8.1 (27.20.22023.1004) diff --git a/Miners/Radiator-v1.0.0.ps1 b/Miners/Radiator-v1.0.0.ps1 index 6f2578b7..457ebf49 100644 --- a/Miners/Radiator-v1.0.0.ps1 +++ b/Miners/Radiator-v1.0.0.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.2.11 -Version date: 2024/06/23 +Version: 6.2.12 +Version date: 2024/06/26 #> 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 b9987194..1dd5fc01 100644 --- a/Miners/Raptor3umCpu-v2.0.ps1 +++ b/Miners/Raptor3umCpu-v2.0.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.2.11 -Version date: 2024/06/23 +Version: 6.2.12 +Version date: 2024/06/26 #> If (-not ($AvailableMinerDevices = $Variables.EnabledDevices.Where({ $_.Type -eq "CPU" }))) { Return } diff --git a/Miners/Rigel-v1.17.4.ps1 b/Miners/Rigel-v1.17.4.ps1 index e53158a9..8d6e2d7c 100644 --- a/Miners/Rigel-v1.17.4.ps1 +++ b/Miners/Rigel-v1.17.4.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.2.11 -Version date: 2024/06/23 +Version: 6.2.12 +Version date: 2024/06/26 #> # Return @@ -96,7 +96,7 @@ If ($Algorithms) { $Algorithms.ForEach( { $ExcludeGPUArchitecture = $_.ExcludeGPUArchitecture - If ($AvailableMinerDevices = $MinerDevices.Where({ $_.Architecture -notin $ExcludeGPUArchitecture })) { + If ($SupportedMinerDevices = $MinerDevices.Where({ $_.Architecture -notin $ExcludeGPUArchitecture })) { $ExcludePools = $_.ExcludePools ForEach ($Pool0 in $MinerPools[0][$_.Algorithms[0]].Where({ $_.Name -notin $ExcludePools[0] })) { @@ -104,7 +104,7 @@ If ($Algorithms) { $Pools = @(($Pool0, $Pool1).Where({ $_ })) $MinMemGiB = $_.MinMemGiB + $Pool0.DAGSizeGiB - If ($AvailableMinerDevices = $AvailableMinerDevices.Where({ $_.MemoryGiB -ge $MinMemGiB })) { + If ($AvailableMinerDevices = $SupportedMinerDevices.Where({ $_.MemoryGiB -ge $MinMemGiB })) { $MinerName = "$Name-$($AvailableMinerDevices.Count)x$($AvailableMinerDevices.Model | Select-Object -Unique)-$($Pool0.AlgorithmVariant)$(If ($Pool1) { "&$($Pool1.AlgorithmVariant)" })" diff --git a/Miners/RplantCpu-v5.0.40.ps1 b/Miners/RplantCpu-v5.0.40.ps1 index 3b1b329a..9fd6d14c 100644 --- a/Miners/RplantCpu-v5.0.40.ps1 +++ b/Miners/RplantCpu-v5.0.40.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.2.11 -Version date: 2024/06/23 +Version: 6.2.12 +Version date: 2024/06/26 #> 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 df7e0e63..d78b758b 100644 --- a/Miners/RrkzCpu-v4.2.ps1 +++ b/Miners/RrkzCpu-v4.2.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.2.11 -Version date: 2024/06/23 +Version: 6.2.12 +Version date: 2024/06/26 #> If (-not ($AvailableMinerDevices = $Variables.EnabledDevices.Where({ $_.Type -eq "CPU" }))) { Return } diff --git a/Miners/SRBMinerMulti-v0.9.4.ps1 b/Miners/SRBMinerMulti-v0.9.4.ps1 index 3a4d2fc6..3cabf966 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.2.11 -Version date: 2024/06/23 +Version: 6.2.12 +Version date: 2024/06/26 #> If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.Type -eq "AMD" -and $_.Architecture -eq "Other" }))) { Return } diff --git a/Miners/SRBMinerMulti-v2.5.6.ps1 b/Miners/SRBMinerMulti-v2.5.6.ps1 new file mode 100644 index 00000000..a1c39c12 --- /dev/null +++ b/Miners/SRBMinerMulti-v2.5.6.ps1 @@ -0,0 +1,360 @@ +<# +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 +Version: 6.2.12 +Version date: 2024/06/26 +#> + +If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.Type -eq "CPU" -or $_.Type -eq "INTEL" -or ($_.Type -eq "AMD" -and $_.Model -notmatch "^RX5[5|6]0$" -and $_.OpenCL.ClVersion -ge "OpenCL C 2.0") -or ($_.OpenCL.ComputeCapability -ge "5.0" -and $_.OpenCL.DriverVersion -ge "510.00") }))) { Return } + +$URI = "https://github.com/doktor83/SRBMiner-Multi/releases/download/2.5.6/SRBMiner-Multi-2-5-6-win64.zip" +$Name = [String](Get-Item $MyInvocation.MyCommand.Path).BaseName +$Path = "$PWD\Bin\$Name\SRBMiner-MULTI.exe" +$DeviceEnumerator = "Type_Vendor_Slot" + +# Algorithm parameter values are case sensitive! +$Algorithms = @( + # [PSCustomObject]@{ Algorithms = @("0x10"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(45, 45); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm 0x10") } + # [PSCustomObject]@{ Algorithms = @("Argon2d16000"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(45, 0); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm argon2d_16000") } + # [PSCustomObject]@{ Algorithms = @("Argon2d500"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 2; WarmupTimes = @(45, 45); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm argon2d_dynamic") } + # [PSCustomObject]@{ Algorithms = @("Argon2Chukwa"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 2; WarmupTimes = @(45, 45); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm argon2id_chukwa") } + # [PSCustomObject]@{ Algorithms = @("Argon2Chukwa2"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 2; WarmupTimes = @(45, 45); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm argon2id_chukwa2") } + # [PSCustomObject]@{ Algorithms = @("Aurum"); Type = "AMD"; Fee = @(0.02); MinMemGiB = 2; MinerSet = 0; WarmupTimes = @(45, 20); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm aurum") } + # [PSCustomObject]@{ Algorithms = @("Autolykos2"); Type = "AMD"; Fee = @(0.01); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm autolykos2") } + # [PSCustomObject]@{ Algorithms = @("Autolykos2", "Blake3"); Type = "AMD"; Fee = @(0.01, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm autolykos2", " --algorithm blake3_alephium") } + # [PSCustomObject]@{ Algorithms = @("Autolykos2", "Decred"); Type = "AMD"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm autolykos2", " --algorithm blake3_decred") } + # [PSCustomObject]@{ Algorithms = @("Autolykos2", "HeavyHash"); Type = "AMD"; Fee = @(0.01, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm autolykos2", " --algorithm heavyhash") } + # [PSCustomObject]@{ Algorithms = @("Autolykos2", "HeavyHashKarlsen"); Type = "AMD"; Fee = @(0.01, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 30); ExcludeGPUArchitecture = @("GCN4"); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm autolykos2", " --algorithm karlsenhash") } # No optimized DUAL binary found for GPU0 + # [PSCustomObject]@{ Algorithms = @("Autolykos2", "HeavyHashPyrin"); Type = "AMD"; Fee = @(0.01, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 30); ExcludeGPUArchitecture = @("GCN4"); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm autolykos2", " --algorithm pyrinhash") } + # [PSCustomObject]@{ Algorithms = @("Autolykos2", "SHA256dt"); Type = "AMD"; Fee = @(0.01, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm autolykos2", " --algorithm sha256dt") } + # [PSCustomObject]@{ Algorithms = @("Autolykos2", "SHA512256d"); Type = "AMD"; Fee = @(0.01, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm autolykos2", " --algorithm sha512_256d_radiant") } + # [PSCustomObject]@{ Algorithms = @("Blake3"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(45, 30); ExcludeGPUArchitecture = @("Other"); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm blake3_alephium") } + # [PSCustomObject]@{ Algorithms = @("CryptonightGpu"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(60, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm cryptonight_gpu") } + # [PSCustomObject]@{ Algorithms = @("CryptonightHeavyXhv"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(30, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm cryptonight_xhv") } + # [PSCustomObject]@{ Algorithms = @("CryptonightTurtle"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 2; WarmupTimes = @(30, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm cryptonight_turtle") } # TeamRedMiner-v0.10.21 is fastest + # [PSCustomObject]@{ Algorithms = @("CryptonightUpx"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(60, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm cryptonight_upx") } + # [PSCustomObject]@{ Algorithms = @("CurveHash"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 2; MinerSet = 1; WarmupTimes = @(60, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm curvehash") } + # [PSCustomObject]@{ Algorithms = @("Decred"); Type = "AMD"; Fee = @(0.01); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(30, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm blake3d_decred") } + # [PSCustomObject]@{ Algorithms = @("EtcHash"); Type = "AMD"; Fee = @(0.0065); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 15); ExcludeGPUArchitecture = @(); 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 + # [PSCustomObject]@{ Algorithms = @("EtcHash", "Blake3"); Type = "AMD"; Fee = @(0.0065, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm etchash", " --algorithm blake3_alephium") } + # [PSCustomObject]@{ Algorithms = @("EtcHash", "Decred"); Type = "AMD"; Fee = @(0.0065, 0.01); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm etchash", " --algorithm blake3_decred") } + # [PSCustomObject]@{ Algorithms = @("EtcHash", "HeavyHash"); Type = "AMD"; Fee = @(0.0065, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 60); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm etchash", " --algorithm heavyhash") } + # [PSCustomObject]@{ Algorithms = @("EtcHash", "SHA256dt"); Type = "AMD"; Fee = @(0.0065, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 60); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm etchash", " --algorithm sha256dt") } + # [PSCustomObject]@{ Algorithms = @("EtcHash", "SHA512256d"); Type = "AMD"; Fee = @(0.0065, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 60); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm etchash", " --algorithm sha512_256d_radiant") } + # [PSCustomObject]@{ Algorithms = @("Ethash"); Type = "AMD"; Fee = @(0.0065); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 15); ExcludeGPUArchitecture = @(); 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 + # [PSCustomObject]@{ Algorithms = @("Ethash", "Blake3"); Type = "AMD"; Fee = @(0.0065, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm ethash", " --algorithm blake3_alephium") } + # [PSCustomObject]@{ Algorithms = @("Ethash", "Decred"); Type = "AMD"; Fee = @(0.0065, 0.01); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm ethash", " --algorithm blake3_decred") } + # [PSCustomObject]@{ Algorithms = @("Ethash", "Heavyhash"); Type = "AMD"; Fee = @(0.0065, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 60); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm ethash", " --algorithm heavyhash") } + # [PSCustomObject]@{ Algorithms = @("Ethash", "SHA256dt"); Type = "AMD"; Fee = @(0.0065, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 60); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm ethash", " --algorithm sha256dt") } + # [PSCustomObject]@{ Algorithms = @("Ethash", "SHA512256d"); Type = "AMD"; Fee = @(0.0065, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 60); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm ethash", " --algorithm sha512_256d_radiant") } + # [PSCustomObject]@{ Algorithms = @("EthashB3"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(@("ZergPool"), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm ethashb3") } + # [PSCustomObject]@{ Algorithms = @("EthashB3", "Blake3"); Type = "AMD"; Fee = @(0.0085, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@("ZergPool"), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm ethashb3", " --algorithm blake3_alephium") } + # [PSCustomObject]@{ Algorithms = @("EthashB3", "Decred"); Type = "AMD"; Fee = @(0.0085, 0.01); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@("ZergPool"), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm ethashb3", " --algorithm blake3_decred") } + # [PSCustomObject]@{ Algorithms = @("EthashB3", "HeavyHashKarlsen"); Type = "AMD"; Fee = @(0.0085, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 60); ExcludeGPUArchitecture = @(); ExcludePools = @(@("ZergPool"), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm ethashb3", " --algorithm karlsenhash") } + # [PSCustomObject]@{ Algorithms = @("EthashB3", "SHA256dt"); Type = "AMD"; Fee = @(0.01, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@("ZergPool"), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm ethashb3", " --algorithm sha256dt") } + # [PSCustomObject]@{ Algorithms = @("EthashB3", "SHA512256d"); Type = "AMD"; Fee = @(0.0085, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 60); ExcludeGPUArchitecture = @(); ExcludePools = @(@("ZergPool"), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm ethashb3", " --algorithm sha512_256d_radiant") } + # [PSCustomObject]@{ Algorithms = @("EvrProgPow"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm evrprogpow") } + # [PSCustomObject]@{ Algorithms = @("FiroPow"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1.24; MinerSet = 1; WarmupTimes = @(60, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm firopow") } + # [PSCustomObject]@{ Algorithms = @("FishHash"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 6; MinerSet = 2; WarmupTimes = @(45, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm fishhash") } + # [PSCustomObject]@{ Algorithms = @("FishHash", "Blake3"); Type = "AMD"; Fee = @(0.0085, 0.0085); MinMemGiB = 6; MinerSet = 0; WarmupTimes = @(45, 30); ExcludeGPUArchitecture = @("GCN4"); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm fishhash", " --algorithm blake3_alephium") } + # [PSCustomObject]@{ Algorithms = @("FishHash", "Decred"); Type = "AMD"; Fee = @(0.0085, 0.01); MinMemGiB = 6; MinerSet = 0; WarmupTimes = @(45, 30); ExcludeGPUArchitecture = @("GCN4"); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm fishhash", " --algorithm blake3_decred") } + # [PSCustomObject]@{ Algorithms = @("FishHash", "HeavyHashKarlsen"); Type = "AMD"; Fee = @(0.0085, 0.0085); MinMemGiB = 6; MinerSet = 0; WarmupTimes = @(60, 60); ExcludeGPUArchitecture = @("GCN4"); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm fishhash", " --algorithm karlsenhash") } + # [PSCustomObject]@{ Algorithms = @("FishHash", "HeavyHashPyrin"); Type = "AMD"; Fee = @(0.0085, 0.0085); MinMemGiB = 6; MinerSet = 0; WarmupTimes = @(60, 60); ExcludeGPUArchitecture = @("GCN4"); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm fishhash", " --algorithm pyrinhash") } + # [PSCustomObject]@{ Algorithms = @("FishHash", "SHA512256d"); Type = "AMD"; Fee = @(0.0085, 0.0085); MinMemGiB = 6; MinerSet = 0; WarmupTimes = @(60, 60); ExcludeGPUArchitecture = @("GCN4"); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm fishhash", " --algorithm sha512_256d_radiant") } + # [PSCustomObject]@{ Algorithms = @("HeavyHash"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(45, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm heavyhash") } # FPGA + # [PSCustomObject]@{ Algorithms = @("HeavyHashKarlsen"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(30, 0); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm KarlsenHash") } + # [PSCustomObject]@{ Algorithms = @("HeavyHashPyrin"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(45, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm pyrinhash") } + # [PSCustomObject]@{ Algorithms = @("KawPow"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1.24; MinerSet = 1; WarmupTimes = @(45, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(@("ProHashing"), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm kawpow") } + # [PSCustomObject]@{ Algorithms = @("Lyra2v2Webchain"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 2; WarmupTimes = @(30, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm lyra2v2_webchain") } + # [PSCustomObject]@{ Algorithms = @("MemeHash"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 2; WarmupTimes = @(60, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm memehash") } + # [PSCustomObject]@{ Algorithms = @("ProgPowEpic"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm progpow_epic") } + # [PSCustomObject]@{ Algorithms = @("MeowPow"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1.24; MinerSet = 1; WarmupTimes = @(45, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm meowpow") } + # [PSCustomObject]@{ Algorithms = @("ProgPowSero"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm progpow_sero") } + # [PSCustomObject]@{ Algorithms = @("ProgPowVeil"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm progpow_veil") } + # [PSCustomObject]@{ Algorithms = @("ProgPowVeriblock"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(45, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm progpow_veriblock") } + # [PSCustomObject]@{ Algorithms = @("ProgPowZ"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 0); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm progpow_zano") } + # [PSCustomObject]@{ Algorithms = @("Pufferfish2BMB"); Type = "AMD"; Fee = @(0.01); MinMemGiB = 8; MinerSet = 2; WarmupTimes = @(30, 0); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm pufferfish2bmb") } + # [PSCustomObject]@{ Algorithms = @("SHA256dt"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(45, 20); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm sha256dt") } + # [PSCustomObject]@{ Algorithms = @("SHA3d"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(30, 0); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm sha3d") } # FPGA + # [PSCustomObject]@{ Algorithms = @("SHA512256d"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(30, 0); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm sha512_256d_radiant") } + # [PSCustomObject]@{ Algorithms = @("UbqHash"); Type = "AMD"; Fee = @(0.0065); MinMemGiB = 1.24; MinerSet = 1; WarmupTimes = @(45, 0); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm ubqhash") } + # [PSCustomObject]@{ Algorithms = @("VerusHash"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(30, 0); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm verushash") } + # [PSCustomObject]@{ Algorithms = @("VertHash"); Type = "AMD"; Fee = @(0.01); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(30, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm verthash --verthash-dat-path ..\.$($Variables.VerthashDatPath)") } + # [PSCustomObject]@{ Algorithms = @("Yescrypt"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(90, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@("MiningDutch"), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm yescrypt") } + # [PSCustomObject]@{ Algorithms = @("YescryptR8"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 2; WarmupTimes = @(90, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm yescryptr8") } + # [PSCustomObject]@{ Algorithms = @("YescryptR16"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(90, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm yescryptr16") } + # [PSCustomObject]@{ Algorithms = @("YescryptR32"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(90, 0); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm yescryptr32") } + # [PSCustomObject]@{ Algorithms = @("XelisHash"); Type = "AMD"; Fee = @(0.02); MinMemGiB = 1; MinerSet = 2; WarmupTimes = @(0, 20); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm xelishash") } + + [PSCustomObject]@{ Algorithms = @("Argon2d16000"); Type = "CPU"; Fee = @(0.0085); MinerSet = 2; WarmupTimes = @(60, 15); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm argon2d_16000") } + [PSCustomObject]@{ Algorithms = @("Argon2d500"); Type = "CPU"; Fee = @(0.0085); MinerSet = 2; WarmupTimes = @(60, 15); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm argon2d_dynamic") } + [PSCustomObject]@{ Algorithms = @("Argon2Chukwa"); Type = "CPU"; Fee = @(0.0085); MinerSet = 2; WarmupTimes = @(30, 15); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm argon2id_chukwa") } + [PSCustomObject]@{ Algorithms = @("Argon2Chukwa2"); Type = "CPU"; Fee = @(0.0085); MinerSet = 2; WarmupTimes = @(30, 15); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm argon2id_chukwa2") } + [PSCustomObject]@{ Algorithms = @("Aurum"); Type = "CPU"; Fee = @(0.02); MinerSet = 2; WarmupTimes = @(30, 15); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm aurum") } +# [PSCustomObject]@{ Algorithms = @("CryptonightGpu"); Type = "CPU"; Fee = @(0.0085); MinerSet = 2; WarmupTimes = @(120, 30); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm cryptonight_gpu --cpu-threads-intensity 2") } # Not profitable with CPU +# [PSCustomObject]@{ Algorithms = @("CryptonightHeavyxXhv"); Type = "CPU"; Fee = @(0.0085); MinerSet = 2; WarmupTimes = @(30, 15); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm cryptonight_xhv --cpu-threads-intensity 2") } # Not profitable with CPU +# [PSCustomObject]@{ Algorithms = @("CryptonightTurtle"); Type = "CPU"; Fee = @(0.0085); MinerSet = 2; WarmupTimes = @(30, 15); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm cryptonight_turtle --cpu-threads-intensity 2") } # Not profitable with CPU +# [PSCustomObject]@{ Algorithms = @("CryptonightUpx"); Type = "CPU"; Fee = @(0.0085); MinerSet = 2; WarmupTimes = @(30, 15); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm cryptonight_upx --cpu-threads-intensity 2") } # Not profitable with CPU + [PSCustomObject]@{ Algorithms = @("CpuPower"); Type = "CPU"; Fee = @(0.0085); MinerSet = 2; WarmupTimes = @(60, 15); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm cpupower") } +# [PSCustomObject]@{ Algorithms = @("CurveHash"); Type = "CPU"; Fee = @(0.0085); MinerSet = 2; WarmupTimes = @(60, 20); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm curvehash") } # Not profitable with CPU + [PSCustomObject]@{ Algorithms = @("Ghostrider"); Type = "CPU"; Fee = @(0.0085); MinerSet = 2; WarmupTimes = @(180, 60); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm ghostrider") } + [PSCustomObject]@{ Algorithms = @("Lyra2v2Webchain"); Type = "CPU"; Fee = @(0.0085); MinerSet = 2; WarmupTimes = @(30, 0); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm lyra2v2_webchain") } + [PSCustomObject]@{ Algorithms = @("MemeHash"); Type = "CPU"; Fee = @(0.0085); MinerSet = 2; WarmupTimes = @(30, 30); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm memehash") } +# [PSCustomObject]@{ Algorithms = @("Mike"); Type = "CPU"; Fee = @(0.0085); MinerSet = 2; WarmupTimes = @(30, 60); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm mike") } # No results in time + [PSCustomObject]@{ Algorithms = @("MinotaurX"); Type = "CPU"; Fee = @(0.0085); MinerSet = 2; WarmupTimes = @(40, 0); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm minotaurx") } + [PSCustomObject]@{ Algorithms = @("Panthera"); Type = "CPU"; Fee = @(0.0085); MinerSet = 2; WarmupTimes = @(60, 0); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm panthera") } + [PSCustomObject]@{ Algorithms = @("Pufferfish2BMB"); Type = "CPU"; Fee = @(0.01); MinerSet = 2; WarmupTimes = @(30, 0); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm pufferfish2bmb") } + [PSCustomObject]@{ Algorithms = @("RandomGrft"); Type = "CPU"; Fee = @(0.0085); MinerSet = 2; WarmupTimes = @(30, 0); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm randomgrft --Randomx-use-1gb-pages") } + [PSCustomObject]@{ Algorithms = @("RandomL"); Type = "CPU"; Fee = @(0.0085); MinerSet = 2; WarmupTimes = @(60, 0); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm randoml --Randomx-use-1gb-pages") } + [PSCustomObject]@{ Algorithms = @("RandomSfx"); Type = "CPU"; Fee = @(0.0085); MinerSet = 2; WarmupTimes = @(30, 0); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm randomsfx --Randomx-use-1gb-pages") } + [PSCustomObject]@{ Algorithms = @("RandomNevo"); Type = "CPU"; Fee = @(0.0085); MinerSet = 2; WarmupTimes = @(60, 0); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm randomnevo --Randomx-use-1gb-pages") } + [PSCustomObject]@{ Algorithms = @("RandomTuske"); Type = "CPU"; Fee = @(0.0085); MinerSet = 2; WarmupTimes = @(90, 20); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm randomtuske --Randomx-use-1gb-pages") } + [PSCustomObject]@{ Algorithms = @("RandomxArq"); Type = "CPU"; Fee = @(0.0085); MinerSet = 2; WarmupTimes = @(60, 0); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm randomarq --Randomx-use-1gb-pages") } # FPGA + [PSCustomObject]@{ Algorithms = @("RandomxEpic"); Type = "CPU"; Fee = @(0.0085); MinerSet = 2; WarmupTimes = @(30, 0); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm randomepic --Randomx-use-1gb-pages") } + [PSCustomObject]@{ Algorithms = @("RandomxKeva"); Type = "CPU"; Fee = @(0.0085); MinerSet = 2; WarmupTimes = @(30, 0); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm randomkeva --Randomx-use-1gb-pages") } + [PSCustomObject]@{ Algorithms = @("RandomxScash"); Type = "CPU"; Fee = @(0.0085); MinerSet = 2; WarmupTimes = @(90, 20); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm randomscash --Randomx-use-1gb-pages") } + [PSCustomObject]@{ Algorithms = @("RandomXeq"); Type = "CPU"; Fee = @(0.0085); MinerSet = 2; WarmupTimes = @(60, 0); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm randomxeq --Randomx-use-1gb-pages") } + [PSCustomObject]@{ Algorithms = @("RandomYada"); Type = "CPU"; Fee = @(0.0085); MinerSet = 2; WarmupTimes = @(60, 0); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm randomyada --Randomx-use-1gb-pages") } + [PSCustomObject]@{ Algorithms = @("SHA3d"); Type = "CPU"; Fee = @(0.02); MinerSet = 2; WarmupTimes = @(90, 20); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm flex") } + [PSCustomObject]@{ Algorithms = @("VerusHash"); Type = "CPU"; Fee = @(0.0085); MinerSet = 2; WarmupTimes = @(60, 20); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm verushash") } + [PSCustomObject]@{ Algorithms = @("YescryptR16"); Type = "CPU"; Fee = @(0.0085); MinerSet = 2; WarmupTimes = @(60, 25); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm yescryptr16") } + [PSCustomObject]@{ Algorithms = @("YescryptR32"); Type = "CPU"; Fee = @(0.0085); MinerSet = 2; WarmupTimes = @(60, 45); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm yescryptr32") } + [PSCustomObject]@{ Algorithms = @("YescryptR8"); Type = "CPU"; Fee = @(0.0085); MinerSet = 2; WarmupTimes = @(60, 25); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm yescryptr8") } + [PSCustomObject]@{ Algorithms = @("Yespower"); Type = "CPU"; Fee = @(0.0085); MinerSet = 2; WarmupTimes = @(60, 40); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm yespower") } + [PSCustomObject]@{ Algorithms = @("Yespower2b"); Type = "CPU"; Fee = @(0.0085); MinerSet = 2; WarmupTimes = @(60, 25); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm yespower2b") } + [PSCustomObject]@{ Algorithms = @("YespowerIc"); Type = "CPU"; Fee = @(0.0085); MinerSet = 2; WarmupTimes = @(60, 25); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm yespoweric") } + [PSCustomObject]@{ Algorithms = @("YespowerLtncg"); Type = "CPU"; Fee = @(0.0085); MinerSet = 2; WarmupTimes = @(60, 25); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm yespowerltncg") } + [PSCustomObject]@{ Algorithms = @("YespowerMgpc"); Type = "CPU"; Fee = @(0.0085); MinerSet = 2; WarmupTimes = @(60, 25); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm yespowermgpc") } + [PSCustomObject]@{ Algorithms = @("YespowerR16"); Type = "CPU"; Fee = @(0.0085); MinerSet = 2; WarmupTimes = @(60, 25); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm yespowerr16") } + [PSCustomObject]@{ Algorithms = @("YespowerSugar"); Type = "CPU"; Fee = @(0.0085); MinerSet = 2; WarmupTimes = @(60, 25); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm yespowersugar") } + [PSCustomObject]@{ Algorithms = @("YespowerTide"); Type = "CPU"; Fee = @(0.0085); MinerSet = 2; WarmupTimes = @(60, 25); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm yespowertide") } + [PSCustomObject]@{ Algorithms = @("YespowerUrx"); Type = "CPU"; Fee = @(0); MinerSet = 1; WarmupTimes = @(60, 15); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm yespowerurx") } + [PSCustomObject]@{ Algorithms = @("Yescrypt"); Type = "CPU"; Fee = @(0.0085); MinerSet = 2; WarmupTimes = @(90, 20); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm yescrypt") } + [PSCustomObject]@{ Algorithms = @("XelisHash"); Type = "CPU"; Fee = @(0.0085); MinerSet = 2; WarmupTimes = @(90, 20); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm xelishash") } + + # [PSCustomObject]@{ Algorithms = @("Autolykos2"); Type = "INTEL"; Fee = @(0.01); MinMemGiB = 1.24; MinerSet = 1; WarmupTimes = @(45, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-nvidia --algorithm autolykos2") } + # [PSCustomObject]@{ Algorithms = @("Autolykos2", "Blake3"); Type = "INTEL"; Fee = @(0.01, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 60); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-nvidia --algorithm autolykos2", " --algorithm blake3_alephium") } + # [PSCustomObject]@{ Algorithms = @("Autolykos2", "Decred"); Type = "INTEL"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 60); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-nvidia --algorithm autolykos2", " --algorithm blake3_decred") } + # [PSCustomObject]@{ Algorithms = @("Autolykos2", "HeavyHash"); Type = "INTEL"; Fee = @(0.01, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 60); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-nvidia --algorithm autolykos2", " --algorithm heavyhash") } + # [PSCustomObject]@{ Algorithms = @("Autolykos2", "HeavyHashKarlsen"); Type = "INTEL"; Fee = @(0.01, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 60); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-nvidia --algorithm autolykos2", " --algorithm karnlsenhash") } + # [PSCustomObject]@{ Algorithms = @("Autolykos2", "HeavyHashPyrin"); Type = "INTEL"; Fee = @(0.01, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 60); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-nvidia --algorithm autolykos2", " --algorithm pyrinhash") } + # [PSCustomObject]@{ Algorithms = @("Autolykos2", "SHA256dt"); Type = "INTEL"; Fee = @(0.01, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 60); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-nvidia --algorithm autolykos2", " --algorithm sha256dt") } + # [PSCustomObject]@{ Algorithms = @("Autolykos2", "SHA512256d"); Type = "INTEL"; Fee = @(0.01, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 60); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-nvidia --algorithm autolykos2", " --algorithm sha512_256d_radiant") } + # [PSCustomObject]@{ Algorithms = @("Aurum"); Type = "INTEL"; Fee = @(0.02); MinMemGiB = 2; MinerSet = 0; WarmupTimes = @(45, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-nvidia --algorithm aurum") } + # [PSCustomObject]@{ Algorithms = @("Blake3"); Type = "INTEL"; Fee = @(0.0085); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(45, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-nvidia --algorithm blake3_alephium") } + # [PSCustomObject]@{ Algorithms = @("Decred"); Type = "INTEL"; Fee = @(0.01); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(45, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-nvidia --algorithm blake3_decred") } + # [PSCustomObject]@{ Algorithms = @("EtcHash"); Type = "INTEL"; Fee = @(0.0065); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-nvidia --algorithm etchash") } + # [PSCustomObject]@{ Algorithms = @("EtcHash", "Blake3"); Type = "INTEL"; Fee = @(0.0065, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 60); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-nvidia --algorithm etchash", " --algorithm blake3_alephium") } + # [PSCustomObject]@{ Algorithms = @("EtcHash", "Decred"); Type = "INTEL"; Fee = @(0.0065, 0.01); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 60); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-nvidia --algorithm etchash", " --algorithm blake3_decred") } + # [PSCustomObject]@{ Algorithms = @("EtcHash", "HeavyHash"); Type = "INTEL"; Fee = @(0.0065, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 60); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-nvidia --algorithm etchash", " --algorithm heavyhash") } + # [PSCustomObject]@{ Algorithms = @("EtcHash", "SHA256dt"); Type = "INTEL"; Fee = @(0.0065, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 60); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-nvidia --algorithm etchash", " --algorithm sha256dt") } + # [PSCustomObject]@{ Algorithms = @("EtcHash", "SHA512256d"); Type = "INTEL"; Fee = @(0.0065, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 60); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-nvidia --algorithm etchash", " --algorithm sha512_256d_radiant") } + # [PSCustomObject]@{ Algorithms = @("Ethash"); Type = "INTEL"; Fee = @(0.0065); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-nvidia --algorithm ethash") } + # [PSCustomObject]@{ Algorithms = @("Ethash", "Blake3"); Type = "INTEL"; Fee = @(0.0065, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 60); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-nvidia --algorithm ethash", " --algorithm blake3_alephium") } + # [PSCustomObject]@{ Algorithms = @("Ethash", "Decred"); Type = "INTEL"; Fee = @(0.0065, 0.01); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 60); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-nvidia --algorithm ethash", " --algorithm blake3_decred") } + # [PSCustomObject]@{ Algorithms = @("Ethash", "Heavyhash"); Type = "INTEL"; Fee = @(0.0065, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 60); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-nvidia --algorithm ethash", " --algorithm heavyhash") } + # [PSCustomObject]@{ Algorithms = @("Ethash", "SHA256dt"); Type = "INTEL"; Fee = @(0.0065, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 60); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-nvidia --algorithm ethash", " --algorithm sha256dt") } + # [PSCustomObject]@{ Algorithms = @("Ethash", "SHA512256d"); Type = "INTEL"; Fee = @(0.0065, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 60); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-nvidia --algorithm ethash", " --algorithm sha512_256d_radiant") } + # [PSCustomObject]@{ Algorithms = @("EthashB3"); Type = "INTEL"; Fee = @(0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(@("ZergPool"), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-nvidia --algorithm ethashb3") } + # [PSCustomObject]@{ Algorithms = @("EthashB3", "Blake3"); Type = "INTEL"; Fee = @(0.0085, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@("ZergPool"), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-nvidia --algorithm ethashb3", " --algorithm blake3_alephium") } + # [PSCustomObject]@{ Algorithms = @("EthashB3", "Decred"); Type = "INTEL"; Fee = @(0.0085, 0.01); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@("ZergPool"), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-nvidia --algorithm ethashb3", " --algorithm blake3_decred") } + # [PSCustomObject]@{ Algorithms = @("EthashB3", "HeavyHashKarlsen"); Type = "INTEL"; Fee = @(0.0085, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@("ZergPool"), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-nvidia --algorithm ethashb3", " --algorithm karlsenhash") } + # [PSCustomObject]@{ Algorithms = @("EthashB3", "SHA512256d"); Type = "INTEL"; Fee = @(0.0065, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 60); ExcludeGPUArchitecture = @(); ExcludePools = @(@("ZergPool"), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-nvidia --algorithm ethashb3", " --algorithm sha512_256d_radiant") } + # [PSCustomObject]@{ Algorithms = @("FiroPow"); Type = "INTEL"; Fee = @(0.0085); MinMemGiB = 1.24; MinerSet = 1; WarmupTimes = @(60, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-nvidia --algorithm firopow") } + # [PSCustomObject]@{ Algorithms = @("HeavyHash"); Type = "INTEL"; Fee = @(0.0085); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(45, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-nvidia --algorithm heavyhash") } # FPGA + # [PSCustomObject]@{ Algorithms = @("HeavyHashKarlsen"); Type = "INTEL"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 1; WarmupTimes = @(30, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-nvidia --algorithm karnlsenhash") } + # [PSCustomObject]@{ Algorithms = @("HeavyHashPyrin"); Type = "INTEL"; Fee = @(0.0085); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(45, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-nvidia --algorithm pyrinhash") } + # [PSCustomObject]@{ Algorithms = @("FishHash"); Type = "INTEL"; Fee = @(0.01); MinMemGiB = 6; MinerSet = 2; WarmupTimes = @(45, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-nvidia --algorithm fishhash") } + # [PSCustomObject]@{ Algorithms = @("FishHash", "Blake3"); Type = "INTEL"; Fee = @(0.01, 0.0085); MinMemGiB = 6; MinerSet = 0; WarmupTimes = @(45, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-nvidia --algorithm fishhash", " --algorithm blake3_alephium") } + # [PSCustomObject]@{ Algorithms = @("FishHash", "Decred"); Type = "INTEL"; Fee = @(0.01, 0.01); MinMemGiB = 6; MinerSet = 0; WarmupTimes = @(45, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-nvidia --algorithm fishhash", " --algorithm blake3_decred") } + # [PSCustomObject]@{ Algorithms = @("FishHash", "HeavyHashPyrin"); Type = "INTEL"; Fee = @(0.01, 0.0085); MinMemGiB = 6; MinerSet = 0; WarmupTimes = @(60, 60); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-nvidia --algorithm fishhash", " --algorithm sha256dt") } + # [PSCustomObject]@{ Algorithms = @("FishHash", "HeavyHashKarlsen"); Type = "INTEL"; Fee = @(0.0085, 0.0085); MinMemGiB = 6; MinerSet = 0; WarmupTimes = @(60, 60); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-nvidia --algorithm fishhash", " --algorithm karlsenhash") } + # [PSCustomObject]@{ Algorithms = @("FishHash", "SHA512256d"); Type = "INTEL"; Fee = @(0.01, 0.0085); MinMemGiB = 6; MinerSet = 0; WarmupTimes = @(60, 60); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-nvidia --algorithm fishhash", " --algorithm sha512_256d_radiant") } + # [PSCustomObject]@{ Algorithms = @("KawPow"); Type = "INTEL"; Fee = @(0.0085); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@("ProHashing"), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-nvidia --algorithm kawpow") } + # [PSCustomObject]@{ Algorithms = @("MemeHash"); Type = "INTEL"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 1; WarmupTimes = @(30, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-nvidia --algorithm memehash") } + # [PSCustomObject]@{ Algorithms = @("MeowPow"); Type = "INTEL"; Fee = @(0.0085); MinMemGiB = 1.24; MinerSet = 1; WarmupTimes = @(45, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(@("ProHashing"), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-nvidia --algorithm meowpow") } + # [PSCustomObject]@{ Algorithms = @("ProgPowEpic"); Type = "INTEL"; Fee = @(0.0085); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-nvidia --algorithm progpow_epic") } + # [PSCustomObject]@{ Algorithms = @("ProgPowSero"); Type = "INTEL"; Fee = @(0.0085); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-nvidia --algorithm progpow_sero") } + # [PSCustomObject]@{ Algorithms = @("ProgPowVeil"); Type = "INTEL"; Fee = @(0.0085); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-nvidia --algorithm progpow_veil") } + # [PSCustomObject]@{ Algorithms = @("ProgPowVeriblock"); Type = "INTEL"; Fee = @(0.0085); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(45, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-nvidia --algorithm progpow_veriblock") } + # [PSCustomObject]@{ Algorithms = @("ProgPowZ"); Type = "INTEL"; Fee = @(0.0085); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 0); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-nvidia --algorithm progpow_zano") } + # [PSCustomObject]@{ Algorithms = @("SHA256dt"); Type = "INTEL"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 1; WarmupTimes = @(30, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-nvidia --algorithm sha256dt") } + # [PSCustomObject]@{ Algorithms = @("SHA3d"); Type = "INTEL"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(30, 0); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-nvidia --algorithm sha3d") } # FPGA + # [PSCustomObject]@{ Algorithms = @("SHA512256d"); Type = "INTEL"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 1; WarmupTimes = @(30, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-nvidia --algorithm sha512_256d_radiant") } + # [PSCustomObject]@{ Algorithms = @("UbqHash"); Type = "INTEL"; Fee = @(0.0065); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-nvidia --algorithm ubqhash") } + + # [PSCustomObject]@{ Algorithms = @("Autolykos2"); Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1.24; MinerSet = 1; WarmupTimes = @(45, 20); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm autolykos2") } + # [PSCustomObject]@{ Algorithms = @("Autolykos2", "Blake3"); Type = "NVIDIA"; Fee = @(0.01, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 60); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm autolykos2", " --algorithm blake3_alephium") } + # [PSCustomObject]@{ Algorithms = @("Autolykos2", "Decred"); Type = "NVIDIA"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 60); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm autolykos2", " --algorithm blake3_decred") } + # [PSCustomObject]@{ Algorithms = @("Autolykos2", "HeavyHash"); Type = "NVIDIA"; Fee = @(0.01, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 60); ExcludeGPUArchitecture = @("Other"); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm autolykos2", " --algorithm heavyhash") } + # [PSCustomObject]@{ Algorithms = @("Autolykos2", "SHA256dt"); Type = "NVIDIA"; Fee = @(0.01, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 20); ExcludeGPUArchitecture = @("Other"); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm autolykos2", " --algorithm sha256dt") } + # [PSCustomObject]@{ Algorithms = @("Autolykos2", "SHA512256d"); Type = "NVIDIA"; Fee = @(0.01, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 20); ExcludeGPUArchitecture = @("Other"); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm autolykos2", " --algorithm sha512_256d_radiant") } + # [PSCustomObject]@{ Algorithms = @("Aurum"); Type = "NVIDIA"; Fee = @(0.02); MinMemGiB = 2; MinerSet = 0; WarmupTimes = @(45, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm aurum") } + # [PSCustomObject]@{ Algorithms = @("Blake3"); Type = "NVIDIA"; Fee = @(0.0085); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(45, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm blake3_alephium") } + # [PSCustomObject]@{ Algorithms = @("CryptonightGpu"); Type = "NVIDIA"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(60, 30); ExcludeGPUArchitecture = @("Other", "Pascal"); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm cryptonight_gpu") } + # [PSCustomObject]@{ Algorithms = @("CryptonightHeavyXhv"); Type = "NVIDIA"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(30, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm cryptonight_xhv") } + # [PSCustomObject]@{ Algorithms = @("Decred"); Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1; MinerSet = 2; WarmupTimes = @(30, 20); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm blake3_decred") } + # [PSCustomObject]@{ Algorithms = @("EtcHash"); Type = "NVIDIA"; Fee = @(0.0065); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 20); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm etchash") } # PhoenixMiner-v6.2c may be faster, but I see lower speed at the pool + # [PSCustomObject]@{ Algorithms = @("EtcHash", "Blake3"); Type = "NVIDIA"; Fee = @(0.0065, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 60); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm etchash", " --algorithm blake3_alephium") } + # [PSCustomObject]@{ Algorithms = @("EtcHash", "Decred"); Type = "NVIDIA"; Fee = @(0.0065, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 60); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm etchash", " --algorithm blake3_decred") } + # [PSCustomObject]@{ Algorithms = @("EtcHash", "HeavyHash"); Type = "NVIDIA"; Fee = @(0.0065, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 20); ExcludeGPUArchitecture = @("Other"); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm etchash", " --algorithm heavyhash") } + # [PSCustomObject]@{ Algorithms = @("EtcHash", "SHA256dt"); Type = "NVIDIA"; Fee = @(0.0065, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 20); ExcludeGPUArchitecture = @("Other"); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm etchash", " --algorithm sha256dt") } + # [PSCustomObject]@{ Algorithms = @("EtcHash", "SHA512256d"); Type = "NVIDIA"; Fee = @(0.0065, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 20); ExcludeGPUArchitecture = @("Other"); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm etchash", " --algorithm sha512_256d_radiant") } + # [PSCustomObject]@{ Algorithms = @("Ethash"); Type = "NVIDIA"; Fee = @(0.0065); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 0); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm ethash") } # PhoenixMiner-v6.2c may be faster, but I see lower speed at the pool + # [PSCustomObject]@{ Algorithms = @("Ethash", "Blake3"); Type = "NVIDIA"; Fee = @(0.0065, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 60); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm ethash", " --algorithm blake3_alephium") } + # [PSCustomObject]@{ Algorithms = @("Ethash", "Decred"); Type = "NVIDIA"; Fee = @(0.0065, 0.01); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 60); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm ethash", " --algorithm blake3_decred") } + # [PSCustomObject]@{ Algorithms = @("Ethash", "Heavyhash"); Type = "NVIDIA"; Fee = @(0.0065, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 20); ExcludeGPUArchitecture = @("Other"); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm ethash", " --algorithm heavyhash") } + # [PSCustomObject]@{ Algorithms = @("Ethash", "SHA256dt"); Type = "NVIDIA"; Fee = @(0.0065, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 20); ExcludeGPUArchitecture = @("Other"); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm ethash", " --algorithm sha256dt") } + # [PSCustomObject]@{ Algorithms = @("Ethash", "SHA512256d"); Type = "NVIDIA"; Fee = @(0.0065, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 20); ExcludeGPUArchitecture = @("Other"); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm ethash", " --algorithm sha512_256d_radiant") } + # [PSCustomObject]@{ Algorithms = @("EthashB3"); Type = "NVIDIA"; Fee = @(0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(@("ZergPool"), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm ethashb3") } + # [PSCustomObject]@{ Algorithms = @("EthashB3", "Blake3"); Type = "NVIDIA"; Fee = @(0.0085, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 60); ExcludeGPUArchitecture = @("Other"); ExcludePools = @(@("ZergPool"), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm ethashb3", " --algorithm blake3_alephium") } + # [PSCustomObject]@{ Algorithms = @("EthashB3", "Decred"); Type = "NVIDIA"; Fee = @(0.0085, 0.01); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 60); ExcludeGPUArchitecture = @("Other"); ExcludePools = @(@("ZergPool"), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm ethashb3", " --algorithm blake3_decred") } + # [PSCustomObject]@{ Algorithms = @("EthashB3", "SHA512256d"); Type = "NVIDIA"; Fee = @(0.0085, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 20); ExcludeGPUArchitecture = @("Other"); ExcludePools = @(@("ZergPool"), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm ethashb3", " --algorithm sha512_256d_radiant") } + # [PSCustomObject]@{ Algorithms = @("EvrProgPow"); Type = "NVIDIA"; Fee = @(0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(60, 20); ExcludeGPUArchitecture = @("Other"); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm evrprogpow") } + # [PSCustomObject]@{ Algorithms = @("FiroPow"); Type = "NVIDIA"; Fee = @(0.0085); MinMemGiB = 1.24; MinerSet = 1; WarmupTimes = @(60, 20); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm firopow") } + # [PSCustomObject]@{ Algorithms = @("FishHash"); Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 6; MinerSet = 2; WarmupTimes = @(45, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm fishhash") } + # [PSCustomObject]@{ Algorithms = @("FishHash"); Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 6; MinerSet = 2; WarmupTimes = @(45, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm fishhash") } + # [PSCustomObject]@{ Algorithms = @("FishHash", "Blake3"); Type = "NVIDIA"; Fee = @(0.01, 0.0085); MinMemGiB = 6; MinerSet = 0; WarmupTimes = @(45, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm fishhash", " --algorithm blake3_alephium") } + # [PSCustomObject]@{ Algorithms = @("FishHash", "Decred"); Type = "NVIDIA"; Fee = @(0.01, 0.01); MinMemGiB = 6; MinerSet = 0; WarmupTimes = @(45, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm fishhash", " --algorithm blake3_decred") } + # [PSCustomObject]@{ Algorithms = @("FishHash", "HeavyHashPyrin"); Type = "NVIDIA"; Fee = @(0.01, 0.0085); MinMemGiB = 6; MinerSet = 0; WarmupTimes = @(60, 60); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm fishhash", " --algorithm sha256dt") } + # [PSCustomObject]@{ Algorithms = @("FishHash", "SHA512256d"); Type = "NVIDIA"; Fee = @(0.01, 0.0085); MinMemGiB = 6; MinerSet = 0; WarmupTimes = @(60, 60); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm fishhash", " --algorithm sha512_256d_radiant") } + # [PSCustomObject]@{ Algorithms = @("HeavyHash"); Type = "NVIDIA"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(45, 20); ExcludeGPUArchitecture = @("Other"); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm heavyhash") } # FPGA + # [PSCustomObject]@{ Algorithms = @("HeavyHashKarlsen"); Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1; MinerSet = 1; WarmupTimes = @(30, 30); ExcludeGPUArchitecture = @("Other"); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm KarlsenHash") } + # [PSCustomObject]@{ Algorithms = @("KawPow"); Type = "NVIDIA"; Fee = @(0.0085); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 20); ExcludeGPUArchitecture = @(); ExcludePools = @(@("ProHashing"), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm kawpow") } + # [PSCustomObject]@{ Algorithms = @("Lyra2v2Webchain"); Type = "NVIDIA"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 2; WarmupTimes = @(30, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm lyra2v2_webchain") } + # [PSCustomObject]@{ Algorithms = @("MemeHash"); Type = "NVIDIA"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 2; WarmupTimes = @(60, 15); ExcludeGPUArchitecture = @("Other"); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm memehash") } + # [PSCustomObject]@{ Algorithms = @("MeowPow"); Type = "NVIDIA"; Fee = @(0.0085); MinMemGiB = 1.24; MinerSet = 1; WarmupTimes = @(60, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(@("ProHashing"), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm meowpow") } + # [PSCustomObject]@{ Algorithms = @("ProgPowEpic"); Type = "NVIDIA"; Fee = @(0.0085); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm progpow_epic") } + # [PSCustomObject]@{ Algorithms = @("ProgPowSero"); Type = "NVIDIA"; Fee = @(0.0085); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm progpow_sero") } + # [PSCustomObject]@{ Algorithms = @("ProgPowVeil"); Type = "NVIDIA"; Fee = @(0.0085); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm progpow_veil") } + # [PSCustomObject]@{ Algorithms = @("ProgPowVeriblock"); Type = "NVIDIA"; Fee = @(0.0085); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(45, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm progpow_veriblock") } + # [PSCustomObject]@{ Algorithms = @("ProgPowZ"); Type = "NVIDIA"; Fee = @(0.0085); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 0); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm progpow_zano") } + # [PSCustomObject]@{ Algorithms = @("SHA256dt"); Type = "NVIDIA"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(45, 15); ExcludeGPUArchitecture = @("Other"); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm sha256dt") } + # [PSCustomObject]@{ Algorithms = @("SHA3d"); Type = "NVIDIA"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(45, 0); ExcludeGPUArchitecture = @("Other"); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm sha3d") } # FPGA + # [PSCustomObject]@{ Algorithms = @("SHA512256d"); Type = "NVIDIA"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(45, 0); ExcludeGPUArchitecture = @("Other"); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm sha512_256d_radiant") } + # [PSCustomObject]@{ Algorithms = @("UbqHash"); Type = "NVIDIA"; Fee = @(0.0065); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(45, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-intel --algorithm ubqhash") } +) + +$Algorithms = $Algorithms.Where({ $_.MinerSet -le $Config.MinerSet }) +$Algorithms.Where({ -not $_.Algorithms[1] }).ForEach({ $_.Algorithms += "" }) +$Algorithms = $Algorithms.Where({ $MinerPools[0][$_.Algorithms[0]] -and $_.Algorithms[1] -eq "" -or $MinerPools[1][$_.Algorithms[1]] }) +$Algorithms = $Algorithms.Where({ $MinerPools[0][$_.Algorithms[0]].Name -notin $_.ExcludePools[0] }) +$Algorithms = $Algorithms.Where({ $MinerPools[1][$_.Algorithms[1]].Name -notin $_.ExcludePools[1] }) + +If ($Algorithms) { + + # 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() + # } + # } + # } + # ) + + ($Devices | Select-Object Type, Model -Unique).ForEach( + { + If ($MinerDevices = $Devices | Where-Object Type -EQ $_.Type | Where-Object Model -EQ $_.Model) { + $MinerAPIPort = $Config.APIPort + ($MinerDevices.Id | Sort-Object -Top 1) + 1 + + ($Algorithms | Where-Object Type -EQ $_.Type).ForEach( + { + $ExcludeGPUArchitecture = $_.ExcludeGPUArchitecture + If ($SupportedMinerDevices = $MinerDevices.Where({ $_.Type -eq "CPU" -or $_.Architecture -notin $ExcludeGPUArchitecture })) { + + If ($_.Algorithms[0] -eq "VertHash" -and (Get-Item -Path $Variables.VerthashDatPath -ErrorAction Ignore).length -ne 1283457024) { + $PrerequisitePath = $Variables.VerthashDatPath + $PrerequisiteURI = "https://github.com/UselessGuru/UG-Miner-Extras/releases/download/VertHashDataFile/VertHash.dat" + } + Else { + $PrerequisitePath = "" + $PrerequisiteURI = "" + } + + $ExcludePools = $_.ExcludePools + ForEach ($Pool0 in $MinerPools[0][$_.Algorithms[0]].Where({ $_.Name -notin $ExcludePools[0] }) | Select-Object -Last $(If ($_.Type -eq "CPU") { 1 } Else { $MinerPools[0][$_.Algorithms[0]].Count })) { + ForEach ($Pool1 in $MinerPools[1][$_.Algorithms[1]].Where({ $_.Name -notin $ExcludePools[1] }) | Select-Object -Last $(If ($_.Type -eq "CPU") { 1 } Else { $MinerPools[1][$_.Algorithms[1]].Count })) { + $Pools = @(($Pool0, $Pool1).Where({ $_ })) + + $MinMemGiB = $_.MinMemGiB + $Pool0.DAGSizeGiB + $Pool1.DAGSizeGiB + If ($AvailableMinerDevices = $SupportedMinerDevices.Where({ $_.Type -eq "CPU" -or $_.MemoryGiB -gt $MinMemGiB })) { + + $MinerName = "$Name-$($AvailableMinerDevices.Count)x$($AvailableMinerDevices.Model | Select-Object -Unique)-$($Pool0.AlgorithmVariant)$(If ($Pool1) { "&$($Pool1.AlgorithmVariant)" })$(If ($_.GpuDualMaxLoss) { "-$($_.GpuDualMaxLoss)" })" + + $Arguments = "" + ForEach ($Pool in $Pools) { + $Arguments += Switch ($Pool.Protocol) { + "minerproxy" { " --esm 0" } + "ethproxy" { " --esm 0" } + "ethstratum1" { " --esm 1" } + "ethstratum2" { " --esm 2" } + "ethstratumnh" { " --esm 2" } + } + $Arguments += "$($_.Arguments[$Pools.IndexOf($Pool)]) --pool $($Pool.Host):$($Pool.PoolPorts | Select-Object -Last 1) --wallet $($Pool.User)" + $Arguments += " --password $($Pool.Pass)" + If ($Pool.WorkerName) { $Arguments += " --worker $($Pool.WorkerName)" } + $Arguments += If ($Pool.PoolPorts[1]) { " --tls true" } Else { " --tls false" } + If ($_.GpuDualMaxLoss) { $Arguments += " --gpu-dual-max-loss $($_.GpuDualMaxLoss)" } + } + Remove-Variable Pool + + If ($_.Type -eq "CPU") { + $Arguments += " --cpu-threads $($AvailableMinerDevices.CIM.NumberOfLogicalProcessors -1)" + } + Else { + $Arguments += " --gpu-id $(($AvailableMinerDevices.$DeviceEnumerator | Sort-Object -Unique).ForEach({ '{0:x}' -f $_ }) -join ',')" + } + If ($_.Type -eq "CPU" -and $Variables.UseMinerTweaks) { $Arguments += " --disable-msr-tweaks" } + + [PSCustomObject]@{ + API = "SRBMiner" + Arguments = "$Arguments --api-rig-name $($Config.WorkerName) --api-enable --api-port $MinerAPIPort" + DeviceNames = $AvailableMinerDevices.Name + Fee = $_.Fee # Dev fee + MinerSet = $_.MinerSet + MinerUri = "http://127.0.0.1:$($MinerAPIPort)/stats" + Name = $MinerName + Path = $Path + Port = $MinerAPIPort + PrerequisitePath = $PrerequisitePath + PrerequisiteURI = $PrerequisiteURI + Type = $_.Type + URI = $URI + WarmupTimes = $_.WarmupTimes # First value: Seconds until miner must send first sample, if no sample is received miner will be marked as failed; Second value: Seconds from first sample until miner sends stable hashrates that will count for benchmarking + Workers = @($Pools.ForEach({ @{ Pool = $_ } })) + } + } + } + } + } + } + ) + } + } + ) +} diff --git a/Miners/SRBMinerMulti-v2.5.7.ps1 b/Miners/SRBMinerMulti-v2.5.7.ps1 index 147861f1..26108c7a 100644 --- a/Miners/SRBMinerMulti-v2.5.7.ps1 +++ b/Miners/SRBMinerMulti-v2.5.7.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.2.11 -Version date: 2024/06/23 +Version: 6.2.12 +Version date: 2024/06/26 #> If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.Type -eq "CPU" -or $_.Type -eq "INTEL" -or ($_.Type -eq "AMD" -and $_.Model -notmatch "^RX5[5|6]0$" -and $_.OpenCL.ClVersion -ge "OpenCL C 2.0") -or ($_.OpenCL.ComputeCapability -ge "5.0" -and $_.OpenCL.DriverVersion -ge "510.00") }))) { Return } @@ -102,51 +102,51 @@ $Algorithms = @( [PSCustomObject]@{ Algorithms = @("YescryptR32"); Type = "AMD"; Fee = @(0.0085); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(90, 0); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm yescryptr32") } [PSCustomObject]@{ Algorithms = @("XelisHash"); Type = "AMD"; Fee = @(0.02); MinMemGiB = 1; MinerSet = 2; WarmupTimes = @(0, 20); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-intel --disable-gpu-nvidia --algorithm xelishash") } - [PSCustomObject]@{ Algorithms = @("Argon2d16000"); Type = "CPU"; Fee = @(0.0085); MinerSet = 2; WarmupTimes = @(60, 15); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm argon2d_16000") } - [PSCustomObject]@{ Algorithms = @("Argon2d500"); Type = "CPU"; Fee = @(0.0085); MinerSet = 2; WarmupTimes = @(60, 15); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm argon2d_dynamic") } - [PSCustomObject]@{ Algorithms = @("Argon2Chukwa"); Type = "CPU"; Fee = @(0.0085); MinerSet = 2; WarmupTimes = @(30, 15); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm argon2id_chukwa") } - [PSCustomObject]@{ Algorithms = @("Argon2Chukwa2"); Type = "CPU"; Fee = @(0.0085); MinerSet = 2; WarmupTimes = @(30, 15); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm argon2id_chukwa2") } - [PSCustomObject]@{ Algorithms = @("Aurum"); Type = "CPU"; Fee = @(0.02); MinerSet = 2; WarmupTimes = @(30, 15); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm aurum") } -# [PSCustomObject]@{ Algorithms = @("CryptonightGpu"); Type = "CPU"; Fee = @(0.0085); MinerSet = 2; WarmupTimes = @(120, 30); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm cryptonight_gpu --cpu-threads-intensity 2") } # Not profitable with CPU -# [PSCustomObject]@{ Algorithms = @("CryptonightHeavyxXhv"); Type = "CPU"; Fee = @(0.0085); MinerSet = 2; WarmupTimes = @(30, 15); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm cryptonight_xhv --cpu-threads-intensity 2") } # Not profitable with CPU -# [PSCustomObject]@{ Algorithms = @("CryptonightTurtle"); Type = "CPU"; Fee = @(0.0085); MinerSet = 2; WarmupTimes = @(30, 15); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm cryptonight_turtle --cpu-threads-intensity 2") } # Not profitable with CPU -# [PSCustomObject]@{ Algorithms = @("CryptonightUpx"); Type = "CPU"; Fee = @(0.0085); MinerSet = 2; WarmupTimes = @(30, 15); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm cryptonight_upx --cpu-threads-intensity 2") } # Not profitable with CPU - [PSCustomObject]@{ Algorithms = @("CpuPower"); Type = "CPU"; Fee = @(0.0085); MinerSet = 2; WarmupTimes = @(60, 15); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm cpupower") } -# [PSCustomObject]@{ Algorithms = @("CurveHash"); Type = "CPU"; Fee = @(0.0085); MinerSet = 2; WarmupTimes = @(60, 20); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm curvehash") } # Not profitable with CPU - [PSCustomObject]@{ Algorithms = @("Ghostrider"); Type = "CPU"; Fee = @(0.0085); MinerSet = 2; WarmupTimes = @(180, 60); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm ghostrider") } - [PSCustomObject]@{ Algorithms = @("Lyra2v2Webchain"); Type = "CPU"; Fee = @(0.0085); MinerSet = 2; WarmupTimes = @(30, 0); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm lyra2v2_webchain") } - [PSCustomObject]@{ Algorithms = @("MemeHash"); Type = "CPU"; Fee = @(0.0085); MinerSet = 2; WarmupTimes = @(30, 30); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm memehash") } -# [PSCustomObject]@{ Algorithms = @("Mike"); Type = "CPU"; Fee = @(0.0085); MinerSet = 2; WarmupTimes = @(30, 60); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm mike") } # No results in time - [PSCustomObject]@{ Algorithms = @("MinotaurX"); Type = "CPU"; Fee = @(0.0085); MinerSet = 2; WarmupTimes = @(40, 0); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm minotaurx") } - [PSCustomObject]@{ Algorithms = @("Panthera"); Type = "CPU"; Fee = @(0.0085); MinerSet = 2; WarmupTimes = @(60, 0); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm panthera") } - [PSCustomObject]@{ Algorithms = @("Pufferfish2BMB"); Type = "CPU"; Fee = @(0.01); MinerSet = 2; WarmupTimes = @(30, 0); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm pufferfish2bmb") } - [PSCustomObject]@{ Algorithms = @("RandomGrft"); Type = "CPU"; Fee = @(0.0085); MinerSet = 2; WarmupTimes = @(30, 0); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm randomgrft --Randomx-use-1gb-pages") } - [PSCustomObject]@{ Algorithms = @("RandomL"); Type = "CPU"; Fee = @(0.0085); MinerSet = 2; WarmupTimes = @(60, 0); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm randoml --Randomx-use-1gb-pages") } - [PSCustomObject]@{ Algorithms = @("RandomSfx"); Type = "CPU"; Fee = @(0.0085); MinerSet = 2; WarmupTimes = @(30, 0); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm randomsfx --Randomx-use-1gb-pages") } - [PSCustomObject]@{ Algorithms = @("RandomNevo"); Type = "CPU"; Fee = @(0.0085); MinerSet = 2; WarmupTimes = @(60, 0); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm randomnevo --Randomx-use-1gb-pages") } - [PSCustomObject]@{ Algorithms = @("RandomTuske"); Type = "CPU"; Fee = @(0.0085); MinerSet = 2; WarmupTimes = @(90, 20); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm randomtuske --Randomx-use-1gb-pages") } - [PSCustomObject]@{ Algorithms = @("RandomxArq"); Type = "CPU"; Fee = @(0.0085); MinerSet = 2; WarmupTimes = @(60, 0); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm randomarq --Randomx-use-1gb-pages") } # FPGA - [PSCustomObject]@{ Algorithms = @("RandomxEpic"); Type = "CPU"; Fee = @(0.0085); MinerSet = 2; WarmupTimes = @(30, 0); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm randomepic --Randomx-use-1gb-pages") } - [PSCustomObject]@{ Algorithms = @("RandomxKeva"); Type = "CPU"; Fee = @(0.0085); MinerSet = 2; WarmupTimes = @(30, 0); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm randomkeva --Randomx-use-1gb-pages") } - [PSCustomObject]@{ Algorithms = @("RandomxScash"); Type = "CPU"; Fee = @(0.0085); MinerSet = 2; WarmupTimes = @(90, 20); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm randomscash --Randomx-use-1gb-pages") } - [PSCustomObject]@{ Algorithms = @("RandomXeq"); Type = "CPU"; Fee = @(0.0085); MinerSet = 2; WarmupTimes = @(60, 0); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm randomxeq --Randomx-use-1gb-pages") } - [PSCustomObject]@{ Algorithms = @("RandomYada"); Type = "CPU"; Fee = @(0.0085); MinerSet = 2; WarmupTimes = @(60, 0); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm randomyada --Randomx-use-1gb-pages") } - [PSCustomObject]@{ Algorithms = @("SHA3d"); Type = "CPU"; Fee = @(0.02); MinerSet = 2; WarmupTimes = @(90, 20); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm flex") } - [PSCustomObject]@{ Algorithms = @("VerusHash"); Type = "CPU"; Fee = @(0.0085); MinerSet = 2; WarmupTimes = @(60, 20); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm verushash") } - [PSCustomObject]@{ Algorithms = @("YescryptR16"); Type = "CPU"; Fee = @(0.0085); MinerSet = 2; WarmupTimes = @(60, 25); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm yescryptr16") } - [PSCustomObject]@{ Algorithms = @("YescryptR32"); Type = "CPU"; Fee = @(0.0085); MinerSet = 2; WarmupTimes = @(60, 45); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm yescryptr32") } - [PSCustomObject]@{ Algorithms = @("YescryptR8"); Type = "CPU"; Fee = @(0.0085); MinerSet = 2; WarmupTimes = @(60, 25); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm yescryptr8") } - [PSCustomObject]@{ Algorithms = @("Yespower"); Type = "CPU"; Fee = @(0.0085); MinerSet = 2; WarmupTimes = @(60, 40); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm yespower") } - [PSCustomObject]@{ Algorithms = @("Yespower2b"); Type = "CPU"; Fee = @(0.0085); MinerSet = 2; WarmupTimes = @(60, 25); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm yespower2b") } - [PSCustomObject]@{ Algorithms = @("YespowerIc"); Type = "CPU"; Fee = @(0.0085); MinerSet = 2; WarmupTimes = @(60, 25); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm yespoweric") } - [PSCustomObject]@{ Algorithms = @("YespowerLtncg"); Type = "CPU"; Fee = @(0.0085); MinerSet = 2; WarmupTimes = @(60, 25); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm yespowerltncg") } - [PSCustomObject]@{ Algorithms = @("YespowerMgpc"); Type = "CPU"; Fee = @(0.0085); MinerSet = 2; WarmupTimes = @(60, 25); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm yespowermgpc") } - [PSCustomObject]@{ Algorithms = @("YespowerR16"); Type = "CPU"; Fee = @(0.0085); MinerSet = 2; WarmupTimes = @(60, 25); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm yespowerr16") } - [PSCustomObject]@{ Algorithms = @("YespowerSugar"); Type = "CPU"; Fee = @(0.0085); MinerSet = 2; WarmupTimes = @(60, 25); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm yespowersugar") } - [PSCustomObject]@{ Algorithms = @("YespowerTide"); Type = "CPU"; Fee = @(0.0085); MinerSet = 2; WarmupTimes = @(60, 25); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm yespowertide") } - [PSCustomObject]@{ Algorithms = @("YespowerUrx"); Type = "CPU"; Fee = @(0); MinerSet = 1; WarmupTimes = @(60, 15); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm yespowerurx") } - [PSCustomObject]@{ Algorithms = @("Yescrypt"); Type = "CPU"; Fee = @(0.0085); MinerSet = 2; WarmupTimes = @(90, 20); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm yescrypt") } - [PSCustomObject]@{ Algorithms = @("XelisHash"); Type = "CPU"; Fee = @(0.0085); MinerSet = 2; WarmupTimes = @(90, 20); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm xelishash") } +# [PSCustomObject]@{ Algorithms = @("Argon2d16000"); Type = "CPU"; Fee = @(0.0085); MinerSet = 2; WarmupTimes = @(60, 15); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm argon2d_16000") } +# [PSCustomObject]@{ Algorithms = @("Argon2d500"); Type = "CPU"; Fee = @(0.0085); MinerSet = 2; WarmupTimes = @(60, 15); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm argon2d_dynamic") } +# [PSCustomObject]@{ Algorithms = @("Argon2Chukwa"); Type = "CPU"; Fee = @(0.0085); MinerSet = 2; WarmupTimes = @(30, 15); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm argon2id_chukwa") } +# [PSCustomObject]@{ Algorithms = @("Argon2Chukwa2"); Type = "CPU"; Fee = @(0.0085); MinerSet = 2; WarmupTimes = @(30, 15); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm argon2id_chukwa2") } +# [PSCustomObject]@{ Algorithms = @("Aurum"); Type = "CPU"; Fee = @(0.02); MinerSet = 2; WarmupTimes = @(30, 15); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm aurum") } +# # [PSCustomObject]@{ Algorithms = @("CryptonightGpu"); Type = "CPU"; Fee = @(0.0085); MinerSet = 2; WarmupTimes = @(120, 30); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm cryptonight_gpu --cpu-threads-intensity 2") } # Not profitable with CPU +# # [PSCustomObject]@{ Algorithms = @("CryptonightHeavyxXhv"); Type = "CPU"; Fee = @(0.0085); MinerSet = 2; WarmupTimes = @(30, 15); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm cryptonight_xhv --cpu-threads-intensity 2") } # Not profitable with CPU +# # [PSCustomObject]@{ Algorithms = @("CryptonightTurtle"); Type = "CPU"; Fee = @(0.0085); MinerSet = 2; WarmupTimes = @(30, 15); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm cryptonight_turtle --cpu-threads-intensity 2") } # Not profitable with CPU +# # [PSCustomObject]@{ Algorithms = @("CryptonightUpx"); Type = "CPU"; Fee = @(0.0085); MinerSet = 2; WarmupTimes = @(30, 15); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm cryptonight_upx --cpu-threads-intensity 2") } # Not profitable with CPU +# [PSCustomObject]@{ Algorithms = @("CpuPower"); Type = "CPU"; Fee = @(0.0085); MinerSet = 2; WarmupTimes = @(60, 15); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm cpupower") } +# # [PSCustomObject]@{ Algorithms = @("CurveHash"); Type = "CPU"; Fee = @(0.0085); MinerSet = 2; WarmupTimes = @(60, 20); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm curvehash") } # Not profitable with CPU +# [PSCustomObject]@{ Algorithms = @("Ghostrider"); Type = "CPU"; Fee = @(0.0085); MinerSet = 2; WarmupTimes = @(180, 60); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm ghostrider") } +# [PSCustomObject]@{ Algorithms = @("Lyra2v2Webchain"); Type = "CPU"; Fee = @(0.0085); MinerSet = 2; WarmupTimes = @(30, 0); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm lyra2v2_webchain") } +# [PSCustomObject]@{ Algorithms = @("MemeHash"); Type = "CPU"; Fee = @(0.0085); MinerSet = 2; WarmupTimes = @(30, 30); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm memehash") } +# # [PSCustomObject]@{ Algorithms = @("Mike"); Type = "CPU"; Fee = @(0.0085); MinerSet = 2; WarmupTimes = @(30, 60); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm mike") } # No results in time +# [PSCustomObject]@{ Algorithms = @("MinotaurX"); Type = "CPU"; Fee = @(0.0085); MinerSet = 2; WarmupTimes = @(40, 0); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm minotaurx") } +# [PSCustomObject]@{ Algorithms = @("Panthera"); Type = "CPU"; Fee = @(0.0085); MinerSet = 2; WarmupTimes = @(60, 0); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm panthera") } +# [PSCustomObject]@{ Algorithms = @("Pufferfish2BMB"); Type = "CPU"; Fee = @(0.01); MinerSet = 2; WarmupTimes = @(30, 0); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm pufferfish2bmb") } +# [PSCustomObject]@{ Algorithms = @("RandomGrft"); Type = "CPU"; Fee = @(0.0085); MinerSet = 2; WarmupTimes = @(30, 0); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm randomgrft --Randomx-use-1gb-pages") } +# [PSCustomObject]@{ Algorithms = @("RandomL"); Type = "CPU"; Fee = @(0.0085); MinerSet = 2; WarmupTimes = @(60, 0); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm randoml --Randomx-use-1gb-pages") } +# [PSCustomObject]@{ Algorithms = @("RandomSfx"); Type = "CPU"; Fee = @(0.0085); MinerSet = 2; WarmupTimes = @(30, 0); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm randomsfx --Randomx-use-1gb-pages") } +# [PSCustomObject]@{ Algorithms = @("RandomNevo"); Type = "CPU"; Fee = @(0.0085); MinerSet = 2; WarmupTimes = @(60, 0); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm randomnevo --Randomx-use-1gb-pages") } +# [PSCustomObject]@{ Algorithms = @("RandomTuske"); Type = "CPU"; Fee = @(0.0085); MinerSet = 2; WarmupTimes = @(90, 20); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm randomtuske --Randomx-use-1gb-pages") } +# [PSCustomObject]@{ Algorithms = @("RandomxArq"); Type = "CPU"; Fee = @(0.0085); MinerSet = 2; WarmupTimes = @(60, 0); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm randomarq --Randomx-use-1gb-pages") } # FPGA +# [PSCustomObject]@{ Algorithms = @("RandomxEpic"); Type = "CPU"; Fee = @(0.0085); MinerSet = 2; WarmupTimes = @(30, 0); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm randomepic --Randomx-use-1gb-pages") } +# [PSCustomObject]@{ Algorithms = @("RandomxKeva"); Type = "CPU"; Fee = @(0.0085); MinerSet = 2; WarmupTimes = @(30, 0); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm randomkeva --Randomx-use-1gb-pages") } +# [PSCustomObject]@{ Algorithms = @("RandomxScash"); Type = "CPU"; Fee = @(0.0085); MinerSet = 2; WarmupTimes = @(90, 20); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm randomscash --Randomx-use-1gb-pages") } +# [PSCustomObject]@{ Algorithms = @("RandomXeq"); Type = "CPU"; Fee = @(0.0085); MinerSet = 2; WarmupTimes = @(60, 0); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm randomxeq --Randomx-use-1gb-pages") } +# [PSCustomObject]@{ Algorithms = @("RandomYada"); Type = "CPU"; Fee = @(0.0085); MinerSet = 2; WarmupTimes = @(60, 0); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm randomyada --Randomx-use-1gb-pages") } +# [PSCustomObject]@{ Algorithms = @("SHA3d"); Type = "CPU"; Fee = @(0.02); MinerSet = 2; WarmupTimes = @(90, 20); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm flex") } +# # [PSCustomObject]@{ Algorithms = @("VerusHash"); Type = "CPU"; Fee = @(0.0085); MinerSet = 2; WarmupTimes = @(60, 20); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm verushash") } # https://github.com/RainbowMiner/RainbowMiner/issues/2816 +# [PSCustomObject]@{ Algorithms = @("YescryptR16"); Type = "CPU"; Fee = @(0.0085); MinerSet = 2; WarmupTimes = @(60, 25); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm yescryptr16") } +# [PSCustomObject]@{ Algorithms = @("YescryptR32"); Type = "CPU"; Fee = @(0.0085); MinerSet = 2; WarmupTimes = @(60, 45); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm yescryptr32") } +# [PSCustomObject]@{ Algorithms = @("YescryptR8"); Type = "CPU"; Fee = @(0.0085); MinerSet = 2; WarmupTimes = @(60, 25); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm yescryptr8") } +# [PSCustomObject]@{ Algorithms = @("Yespower"); Type = "CPU"; Fee = @(0.0085); MinerSet = 2; WarmupTimes = @(60, 40); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm yespower") } +# [PSCustomObject]@{ Algorithms = @("Yespower2b"); Type = "CPU"; Fee = @(0.0085); MinerSet = 2; WarmupTimes = @(60, 25); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm yespower2b") } +# [PSCustomObject]@{ Algorithms = @("YespowerIc"); Type = "CPU"; Fee = @(0.0085); MinerSet = 2; WarmupTimes = @(60, 25); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm yespoweric") } +# [PSCustomObject]@{ Algorithms = @("YespowerLtncg"); Type = "CPU"; Fee = @(0.0085); MinerSet = 2; WarmupTimes = @(60, 25); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm yespowerltncg") } +# [PSCustomObject]@{ Algorithms = @("YespowerMgpc"); Type = "CPU"; Fee = @(0.0085); MinerSet = 2; WarmupTimes = @(60, 25); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm yespowermgpc") } +# [PSCustomObject]@{ Algorithms = @("YespowerR16"); Type = "CPU"; Fee = @(0.0085); MinerSet = 2; WarmupTimes = @(60, 25); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm yespowerr16") } +# [PSCustomObject]@{ Algorithms = @("YespowerSugar"); Type = "CPU"; Fee = @(0.0085); MinerSet = 2; WarmupTimes = @(60, 25); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm yespowersugar") } +# [PSCustomObject]@{ Algorithms = @("YespowerTide"); Type = "CPU"; Fee = @(0.0085); MinerSet = 2; WarmupTimes = @(60, 25); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm yespowertide") } +# [PSCustomObject]@{ Algorithms = @("YespowerUrx"); Type = "CPU"; Fee = @(0); MinerSet = 1; WarmupTimes = @(60, 15); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm yespowerurx") } +# [PSCustomObject]@{ Algorithms = @("Yescrypt"); Type = "CPU"; Fee = @(0.0085); MinerSet = 2; WarmupTimes = @(90, 20); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm yescrypt") } +# [PSCustomObject]@{ Algorithms = @("XelisHash"); Type = "CPU"; Fee = @(0.0085); MinerSet = 2; WarmupTimes = @(90, 20); ExcludePools = @(@(), @()); Arguments = @(" --disable-gpu --algorithm xelishash") } [PSCustomObject]@{ Algorithms = @("Autolykos2"); Type = "INTEL"; Fee = @(0.01); MinMemGiB = 1.24; MinerSet = 1; WarmupTimes = @(45, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-nvidia --algorithm autolykos2") } [PSCustomObject]@{ Algorithms = @("Autolykos2", "Blake3"); Type = "INTEL"; Fee = @(0.01, 0.0085); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 60); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = @(" --disable-cpu --disable-gpu-amd --disable-gpu-nvidia --algorithm autolykos2", " --algorithm blake3_alephium") } @@ -285,7 +285,7 @@ If ($Algorithms) { ($Algorithms | Where-Object Type -EQ $_.Type).ForEach( { $ExcludeGPUArchitecture = $_.ExcludeGPUArchitecture - If ($AvailableMinerDevices = $MinerDevices.Where({ $_.Type -eq "CPU" -or $_.Architecture -notin $ExcludeGPUArchitecture })) { + If ($SupportedMinerDevices = $MinerDevices.Where({ $_.Type -eq "CPU" -or $_.Architecture -notin $ExcludeGPUArchitecture })) { If ($_.Algorithms[0] -eq "VertHash" -and (Get-Item -Path $Variables.VerthashDatPath -ErrorAction Ignore).length -ne 1283457024) { $PrerequisitePath = $Variables.VerthashDatPath @@ -302,7 +302,7 @@ If ($Algorithms) { $Pools = @(($Pool0, $Pool1).Where({ $_ })) $MinMemGiB = $_.MinMemGiB + $Pool0.DAGSizeGiB + $Pool1.DAGSizeGiB - If ($AvailableMinerDevices = $AvailableMinerDevices.Where({ $_.Type -eq "CPU" -or $_.MemoryGiB -gt $MinMemGiB })) { + If ($AvailableMinerDevices = $SupportedMinerDevices.Where({ $_.Type -eq "CPU" -or $_.MemoryGiB -gt $MinMemGiB })) { $MinerName = "$Name-$($AvailableMinerDevices.Count)x$($AvailableMinerDevices.Model | Select-Object -Unique)-$($Pool0.AlgorithmVariant)$(If ($Pool1) { "&$($Pool1.AlgorithmVariant)" })$(If ($_.GpuDualMaxLoss) { "-$($_.GpuDualMaxLoss)" })" diff --git a/Miners/SgMinerFancyIX-v0.9.4.ps1 b/Miners/SgMinerFancyIX-v0.9.4.ps1 index 4eb68a63..fd69ae73 100644 --- a/Miners/SgMinerFancyIX-v0.9.4.ps1 +++ b/Miners/SgMinerFancyIX-v0.9.4.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.2.11 -Version date: 2024/06/23 +Version: 6.2.12 +Version date: 2024/06/26 #> 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 e2d15619..bdce374c 100644 --- a/Miners/Suprminer-v2.31v2.ps1 +++ b/Miners/Suprminer-v2.31v2.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.2.11 -Version date: 2024/06/23 +Version: 6.2.12 +Version date: 2024/06/26 #> If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.OpenCL.ComputeCapability -ge "5.0" }))) { Return } diff --git a/Miners/TTMiner-v2024.2.0.ps1 b/Miners/TTMiner-v2024.2.0.ps1 index 0567771b..aab6b160 100644 --- a/Miners/TTMiner-v2024.2.0.ps1 +++ b/Miners/TTMiner-v2024.2.0.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.2.11 -Version date: 2024/06/23 +Version: 6.2.12 +Version date: 2024/06/26 #> If (-not ($Devices = $Variables.EnabledDevices.Where({ ($_.Type -eq "NVIDIA" -and $_.OpenCL.ComputeCapability -gt "5.0") -or $_.Type -eq "AMD" } ))) { Return } @@ -95,13 +95,13 @@ If ($Algorithms) { ($Algorithms | Where-Object Type -EQ $_.Type).ForEach( { $ExcludeGPUArchitecture = $_.ExcludeGPUArchitecture - If ($AvailableMinerDevices = $MinerDevices.Where({ $_.Architecture -notin $ExcludeGPUArchitecture })) { + If ($SupportedMinerDevices = $MinerDevices.Where({ $_.Architecture -notin $ExcludeGPUArchitecture })) { $ExcludePools = $_.ExcludePools ForEach ($Pool in $MinerPools[0][$_.Algorithm].Where({ $_.PoolPorts[0] -and $_.Name -notin $ExcludePools })) { $MinMemGiB = $_.MinMemGiB + $Pool.DAGSizeGiB - If ($AvailableMinerDevices = $AvailableMinerDevices.Where({ $_.MemoryGiB -ge $MinMemGiB })) { + If ($AvailableMinerDevices = $SupportedMinerDevices.Where({ $_.MemoryGiB -ge $MinMemGiB })) { $MinerName = "$Name-$($AvailableMinerDevices.Count)x$($AvailableMinerDevices.Model | Select-Object -Unique)-$($Pool.AlgorithmVariant)" diff --git a/Miners/TTMiner-v2024.2.1b5.2.ps1 b/Miners/TTMiner-v2024.2.1b5.2.ps1 new file mode 100644 index 00000000..1e7a10cd --- /dev/null +++ b/Miners/TTMiner-v2024.2.1b5.2.ps1 @@ -0,0 +1,149 @@ +<# +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 +Version: 6.2.12 +Version date: 2024/06/26 +#> + +Return + +If (-not ($Devices = $Variables.EnabledDevices.Where({ ($_.Type -eq "NVIDIA" -and $_.OpenCL.ComputeCapability -gt "5.0") -or $_.Type -eq "AMD" } ))) { Return } + +$URI = Switch ($Variables.DriverVersion.CUDA) { + { $_ -ge "11.0" } { "https://github.com/TrailingStop/TT-Miner-beta/releases/download/2024.2.1-beta5/TT-Miner-2024.2.1B5.2.zip" } + Default { Return } +} +$Name = [String](Get-Item $MyInvocation.MyCommand.Path).BaseName +$Path = "$PWD\Bin\$Name\TT-Miner.exe" +$DeviceEnumerator = "Type_Index" + +$Algorithms = @( +# [PSCustomObject]@{ Algorithm = "Blake3"; Type = "AMD"; Fee = @(0.01); MinMemGiB = 2.0; MinerSet = 2; WarmupTimes = @(60, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(); Arguments = " -a Blake3" } +# [PSCustomObject]@{ Algorithm = "EtcHash"; Type = "AMD"; Fee = @(0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(60, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(); Arguments = " -a EtcHash" } +# [PSCustomObject]@{ Algorithm = "Ethash"; Type = "AMD"; Fee = @(0.01); MinMemGiB = 1.00; MinerSet = 2; WarmupTimes = @(60, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(); Arguments = " -a Ethash" } +# [PSCustomObject]@{ Algorithm = "EthashB3"; Type = "AMD"; Fee = @(0.01); MinMemGiB = 1.00; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(); Arguments = " -a EthashB3" } +# [PSCustomObject]@{ Algorithm = "EvrProPow"; Type = "AMD"; Fee = @(0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(60, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(); Arguments = " -a EvrProgPow" } +# [PSCustomObject]@{ Algorithm = "FiroPow"; Type = "AMD"; Fee = @(0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(60, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(); Arguments = " -a FiroPow" } +# [PSCustomObject]@{ Algorithm = "FiroPowSCC"; Type = "AMD"; Fee = @(0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(30, 0); ExcludeGPUArchitecture = @(); ExcludePools = @(); Arguments = " -c SCC" } +# [PSCustomObject]@{ Algorithm = "FishHash"; Type = "AMD"; Fee = @(0.01); MinMemGiB = 4; MinerSet = 2; WarmupTimes = @(30, 0); ExcludeGPUArchitecture = @(); ExcludePools = @(); Arguments = " -a FishHash" } +# [PSCustomObject]@{ Algorithm = "KawPow"; Type = "AMD"; Fee = @(0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(90, 0); ExcludeGPUArchitecture = @(); ExcludePools = @(); Arguments = " -a KawPow" } +# # [PSCustomObject]@{ Algorithm = "MemeHash"; Type = "AMD"; Fee = @(0.01); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(120, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(); Arguments = " -a Memehash" } # Not yet working +# [PSCustomObject]@{ Algorithm = "MeowPow"; Type = "AMD"; Fee = @(0.01); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(120, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(); Arguments = " -a meowpow" } +# [PSCustomObject]@{ Algorithm = "ProgPowEpic"; Type = "AMD"; Fee = @(0.02); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(60, 0); ExcludeGPUArchitecture = @(); ExcludePools = @(); Arguments = " -c EPIC" } +# [PSCustomObject]@{ Algorithm = "ProgPowSero"; Type = "AMD"; Fee = @(0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(60, 0); ExcludeGPUArchitecture = @(); ExcludePools = @(); Arguments = " -c SERO" } +# [PSCustomObject]@{ Algorithm = "ProgPowVeil"; Type = "AMD"; Fee = @(0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(60, 0); ExcludeGPUArchitecture = @(); ExcludePools = @(); Arguments = " -c VEIL" } +# [PSCustomObject]@{ Algorithm = "ProgPowZ"; Type = "AMD"; Fee = @(0.01); MinMemGiB = 1.24; MinerSet = 1; WarmupTimes = @(60, 0); ExcludeGPUArchitecture = @(); ExcludePools = @(); Arguments = " -c ZANO" } +# [PSCustomObject]@{ Algorithm = "ProgPowVeriblock"; Type = "AMD"; Fee = @(0.01); MinMemGiB = 1; MinerSet = 2; WarmupTimes = @(60, 0); ExcludeGPUArchitecture = @(); ExcludePools = @(); Arguments = " -a vProgPow" } +# # [PSCustomObject]@{ Algorithm = "SHA256d"; Type = "AMD"; Fee = @(0.01); MinMemGiB = 1; MinerSet = 1; WarmupTimes = @(30, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(); Arguments = " -a SHA256D" } # ASIC +# [PSCustomObject]@{ Algorithm = "SHA256dt"; Type = "AMD"; Fee = @(0.01); MinMemGiB = 1; MinerSet = 1; WarmupTimes = @(30, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(); Arguments = " -a SHA256DT" } +# [PSCustomObject]@{ Algorithm = "SHA3D"; Type = "AMD"; Fee = @(0.01); MinMemGiB = 1; MinerSet = 1; WarmupTimes = @(30, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(); Arguments = " -a Sha3D" } +# [PSCustomObject]@{ Algorithm = "SHA512256d"; Type = "AMD"; Fee = @(0.01); MinMemGiB = 1; MinerSet = 1; WarmupTimes = @(30, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(); Arguments = " -a SHA512256D" } +# [PSCustomObject]@{ Algorithm = "SHA3Solidity"; Type = "AMD"; Fee = @(0.01); MinMemGiB = 1; MinerSet = 1; WarmupTimes = @(30, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(); Arguments = " -a SHA3SOL" } +# [PSCustomObject]@{ Algorithm = "UbqHash"; Type = "AMD"; Fee = @(0.01); MinMemGiB = 1.24; MinerSet = 1; WarmupTimes = @(60, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(); Arguments = " -a UbqHash" } + + [PSCustomObject]@{ Algorithm = "Blake3"; Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 2.0; MinerSet = 2; WarmupTimes = @(60, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(); Arguments = " -a Blake3" } + [PSCustomObject]@{ Algorithm = "EtcHash"; Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(60, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(); Arguments = " -a EtcHash" } + [PSCustomObject]@{ Algorithm = "Ethash"; Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1.00; MinerSet = 2; WarmupTimes = @(60, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(); Arguments = " -a Ethash" } + [PSCustomObject]@{ Algorithm = "EthashB3"; Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1.00; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(); Arguments = " -a EthashB3" } + [PSCustomObject]@{ Algorithm = "EvrProPow"; Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(60, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(); Arguments = " -a EvrProgPow" } + [PSCustomObject]@{ Algorithm = "FiroPow"; Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(60, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(); Arguments = " -a FiroPow" } + [PSCustomObject]@{ Algorithm = "FiroPowSCC"; Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(30, 0); ExcludeGPUArchitecture = @(); ExcludePools = @(); Arguments = " -c SCC" } + [PSCustomObject]@{ Algorithm = "FishHash"; Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 4; MinerSet = 2; WarmupTimes = @(30, 0); ExcludeGPUArchitecture = @(); ExcludePools = @(); Arguments = " -a FishHash" } +# [PSCustomObject]@{ Algorithm = "Ghostrider"; Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 3; MinerSet = 2; WarmupTimes = @(180, 60); ExcludeGPUArchitecture = @(); ExcludePools = @(); Arguments = " -a Ghostrider" } # No hashrate + [PSCustomObject]@{ Algorithm = "KawPow"; Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(90, 0); ExcludeGPUArchitecture = @(); ExcludePools = @(); Arguments = " -a KawPow" } +# [PSCustomObject]@{ Algorithm = "MemeHash"; Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(120, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(); Arguments = " -a Memehash" } # Not yet working + [PSCustomObject]@{ Algorithm = "MeowPow"; Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(120, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(); Arguments = " -a meowpow" } + [PSCustomObject]@{ Algorithm = "ProgPowEpic"; Type = "NVIDIA"; Fee = @(0.02); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(60, 0); ExcludeGPUArchitecture = @(); ExcludePools = @(); Arguments = " -c EPIC" } + [PSCustomObject]@{ Algorithm = "ProgPowSero"; Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(60, 0); ExcludeGPUArchitecture = @(); ExcludePools = @(); Arguments = " -c SERO" } + [PSCustomObject]@{ Algorithm = "ProgPowVeil"; Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1.24; MinerSet = 2; WarmupTimes = @(60, 0); ExcludeGPUArchitecture = @(); ExcludePools = @(); Arguments = " -c VEIL" } + [PSCustomObject]@{ Algorithm = "ProgPowZ"; Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1.24; MinerSet = 1; WarmupTimes = @(60, 0); ExcludeGPUArchitecture = @(); ExcludePools = @(); Arguments = " -c ZANO" } + [PSCustomObject]@{ Algorithm = "ProgPowVeriblock"; Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1; MinerSet = 2; WarmupTimes = @(60, 0); ExcludeGPUArchitecture = @(); ExcludePools = @(); Arguments = " -a vProgPow" } +# [PSCustomObject]@{ Algorithm = "SHA256d"; Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1; MinerSet = 1; WarmupTimes = @(30, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(); Arguments = " -a SHA256D" } # ASIC + [PSCustomObject]@{ Algorithm = "SHA256dt"; Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1; MinerSet = 1; WarmupTimes = @(30, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(); Arguments = " -a SHA256DT" } + [PSCustomObject]@{ Algorithm = "SHA3D"; Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1; MinerSet = 1; WarmupTimes = @(30, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(); Arguments = " -a Sha3D" } + [PSCustomObject]@{ Algorithm = "SHA512256d"; Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1; MinerSet = 1; WarmupTimes = @(30, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(); Arguments = " -a SHA512256D" } + [PSCustomObject]@{ Algorithm = "SHA3Solidity"; Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1; MinerSet = 1; WarmupTimes = @(30, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(); Arguments = " -a SHA3SOL" } + [PSCustomObject]@{ Algorithm = "UbqHash"; Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1.24; MinerSet = 1; WarmupTimes = @(60, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(); Arguments = " -a UbqHash" } +) + +$Algorithms = $Algorithms.Where({ $_.MinerSet -le $Config.MinerSet }) +$Algorithms = $Algorithms.Where({ $MinerPools[0][$_.Algorithm] }) +# $Algorithms = $Algorithms.Where({ $MinerPools[0][$_.Algorithm].Name -notin $_.ExcludePools }) +$Algorithms = $Algorithms.Where({ $MinerPools[0][$_.Algorithm].PoolPorts[0] }) + +If ($Algorithms) { + + ($Devices | Select-Object Type, Model -Unique).ForEach( + { + If ($MinerDevices = $Devices | Where-Object Model -EQ $_.Model) { + $MinerAPIPort = $Config.APIPort + ($MinerDevices.Id | Sort-Object -Top 1) + 1 + + ($Algorithms | Where-Object Type -EQ $_.Type).ForEach( + { + $ExcludeGPUArchitecture = $_.ExcludeGPUArchitecture + If ($SupportedMinerDevices = $MinerDevices.Where({ $_.Architecture -notin $ExcludeGPUArchitecture })) { + + # $ExcludePools = $_.ExcludePools + # ForEach ($Pool in $MinerPools[0][$_.Algorithm].Where({ $_.PoolPorts[0] -and $_.Name -notin $ExcludePools })) { + ForEach ($Pool in $MinerPools[0][$_.Algorithm].Where({ $_.PoolPorts[0] })) { + + $MinMemGiB = $_.MinMemGiB + $Pool.DAGSizeGiB + If ($AvailableMinerDevices = $SupportedMinerDevices.Where({ $_.MemoryGiB -ge $MinMemGiB })) { + + $MinerName = "$Name-$($AvailableMinerDevices.Count)x$($AvailableMinerDevices.Model | Select-Object -Unique)-$($Pool.AlgorithmVariant)" + + If ($Pool.Currency -in @("AKA", "ALPH", "ALT", "ARL", "AVS", "BBC", "BCH", "BLACK", "BNBTC", "BTC", "BTRM", "BUT", "CLO", "CLORE", "EGAZ", "EGEM", "ELH", "EPIC", "ETC", "ETHF", "ETHO", "ETHW", "ETI", "ETP", "EVOX", "EVR", "EXP", "FiroPowFIRO", "FITA", "FRENS", "GRAMS", "GSPC", "HVQ", "IRON", "JGC", "KAW", "KCN", "LAB", "LTR", "MEOW", "MEWC", "NAPI", "NEOX", "NOVO", "OCTA", "PAPRY", "PRCO", "REDE", "RTH", "RTM", "RVN", "RXD", "SATO", "SATOX", "SCC", "SERO", "THOON", "TTM", "UBQ", "VBK", "VEIL", "VKAX", "VTE", "XNA", "YERB", "ZANO", "ZELS", "ZIL", "ZKBTC")) { + $Arguments = "$($_.Arguments -replace ' -[a|c] \w+') -c $($Pool.Currency)" + } + Else { + $Arguments = $_.Arguments + } + If ($AvailableMinerDevices.Where({ $_.MemoryGiB -le 2 })) { $Arguments = $Arguments -replace ' -intensity [0-9\.]+' } + + $Arguments += " -o $(If ($Pool.PoolPorts[1]) { "ssl://" } Else { "tcp://" })$($Pool.Host):$($Pool.PoolPorts | Select-Object -Last 1)" + $Arguments += " -u $($Pool.User)" + If ($Pool.Pass) { $Arguments += " -p $($Pool.Pass)" } + If ($Pool.WorkerName) { $Arguments += " -w $($Pool.WorkerName)" } + + If (-not $Pool.SendHashrate) { $Arguments += " -no-hashrate" } + + [PSCustomObject]@{ + API = "EthMiner" + Arguments = "$Arguments -report-average 5 -report-interval 5 -b 127.0.0.1:$($MinerAPIPort) -d $(($AvailableMinerDevices.$DeviceEnumerator | Sort-Object -Unique).ForEach({ '{0:x}' -f $_ }) -join ',')" + DeviceNames = $AvailableMinerDevices.Name + Fee = 0 #$_.Fee # Dev fee + MinerSet = $_.MinerSet + MinerUri = "http://127.0.0.1:$($MinerAPIPort)" + Name = $MinerName + Path = $Path + Port = $MinerAPIPort + Type = $_.Type + URI = $URI + WarmupTimes = $_.WarmupTimes # First value: Seconds until miner must send first sample, if no sample is received miner will be marked as failed; Second value: Seconds from first sample until miner sends stable hashrates that will count for benchmarking + Workers = @(@{ Pool = $Pool }) + } + } + } + } + } + ) + } + } + ) +} diff --git a/Miners/TTMiner-v5.0.3.ps1 b/Miners/TTMiner-v5.0.3.ps1 index 9d243bbe..10454fea 100644 --- a/Miners/TTMiner-v5.0.3.ps1 +++ b/Miners/TTMiner-v5.0.3.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.2.11 -Version date: 2024/06/23 +Version: 6.2.12 +Version date: 2024/06/26 #> If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.OpenCL.ComputeCapability -ge "5.0" }))) { Return } @@ -58,14 +58,14 @@ If ($Algorithms) { $Algorithms.ForEach( { $ExcludeGPUArchitecture = $_.ExcludeGPUArchitecture - If ($AvailableMinerDevices = $MinerDevices.Where({ $_.Architecture -notin $ExcludeGPUArchitecture }) ) { + If ($SupportedMinerDevices = $MinerDevices.Where({ $_.Architecture -notin $ExcludeGPUArchitecture }) ) { # $ExcludePools = $_.ExcludePools # ForEach ($Pool in $MinerPools[0][$_.Algorithm].Where({ $_.PoolPorts[0] -and $_.Name -notin $ExcludePools -and $_.Algorithm -notin @("Ethash", "KawPow") -or (<# Miner supports Ethash up to epoch 384 #>$_.Algorithm -eq "Ethash" -and $_.Epoch -le 384) -or (<# Miner supports Kawpow up to 4GB #>$_.Algorithm -eq "KawPow" -and $_.DAGSizeGiB -lt 4) })) { ForEach ($Pool in $MinerPools[0][$_.Algorithm].Where({ $_.PoolPorts[0] -and $_.Algorithm -notin @("Ethash", "KawPow") -or (<# Miner supports Ethash up to epoch 384 #>$_.Algorithm -eq "Ethash" -and $_.Epoch -le 384) -or (<# Miner supports Kawpow up to 4GB #>$_.Algorithm -eq "KawPow" -and $_.DAGSizeGiB -lt 4) })) { $MinMemGiB = $_.MinMemGiB + $Pool.DAGSizeGiB - If ($AvailableMinerDevices = $AvailableMinerDevices.Where({ $_.MemoryGiB -ge $MinMemGiB }) ) { + If ($AvailableMinerDevices = $SupportedMinerDevices.Where({ $_.MemoryGiB -ge $MinMemGiB }) ) { $MinerName = "$Name-$($AvailableMinerDevices.Count)x$($AvailableMinerDevices.Model | Select-Object -Unique)-$($Pool.AlgorithmVariant)" diff --git a/Miners/TeamBlackMiner-v2.25.ps1 b/Miners/TeamBlackMiner-v2.25.ps1 index 63e2a747..8f16e4b5 100644 --- a/Miners/TeamBlackMiner-v2.25.ps1 +++ b/Miners/TeamBlackMiner-v2.25.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.2.11 -Version date: 2024/06/23 +Version: 6.2.12 +Version date: 2024/06/26 #> If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.Type -eq "AMD" -or ($_.OpenCL.ComputeCapability -ge "5.0" -and $_.CUDAVersion -ge [Version]"11.6") }))) { Return } @@ -31,57 +31,57 @@ $DeviceSelector = @{ AMD = " --cl-devices"; NVIDIA = " --cuda-devices" } $DeviceEnumerator = "Type_Vendor_Slot" $Algorithms = @( - [PSCustomObject]@{ Algorithms = @("EtcHash"); Type = "AMD"; Fee = @(0.005); MinMemGiB = 1.24; MinerSet = 1; Tuning = ""; WarmupTimes = @(45, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algo etchash" } # PhoenixMiner-v6.2c may be faster, but I see lower speed at the pool - [PSCustomObject]@{ Algorithms = @("EtcHash", "EthashB3"); Type = "AMD"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 2; Tuning = ""; WarmupTimes = @(120, 45); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @("ZergPool")); Arguments = " --algo etc+ethb3" } # https://github.com/sp-hash/TeamBlackMiner/issues/450 - [PSCustomObject]@{ Algorithms = @("EtcHash", "EvrProgPow"); Type = "AMD"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 2; Tuning = ""; WarmupTimes = @(90, 45); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algo etc+evr" } - [PSCustomObject]@{ Algorithms = @("EtcHash", "FiroPow"); Type = "AMD"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 2; Tuning = ""; WarmupTimes = @(90, 45); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algo etc+firo" } - [PSCustomObject]@{ Algorithms = @("EtcHash", "KawPow"); Type = "AMD"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 2; Tuning = ""; WarmupTimes = @(90, 45); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algo etc+rvn" } - [PSCustomObject]@{ Algorithms = @("EtcHash", "MeowPow"); Type = "AMD"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 2; Tuning = ""; WarmupTimes = @(90, 45); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algo etc+meow" } - [PSCustomObject]@{ Algorithms = @("EtcHash", "VertHash"); Type = "AMD"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 1; Tuning = ""; WarmupTimes = @(120, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algo etc+vtc --verthash-data ..\.$($Variables.VerthashDatPath)" } # 120 Seconds; https://github.com/sp-hash/TeamBlackMiner/issues/427 - [PSCustomObject]@{ Algorithms = @("Ethash"); Type = "AMD"; Fee = @(0.005); MinMemGiB = 1.24; MinerSet = 1; Tuning = ""; WarmupTimes = @(45, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algo ethash" } # PhoenixMiner-v6.2c may be faster, but I see lower speed at the pool - [PSCustomObject]@{ Algorithms = @("Ethash", "EthashB3"); Type = "AMD"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 2; Tuning = ""; WarmupTimes = @(120, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @("ZergPool")); Arguments = " --algo eth+ethb3" } # https://github.com/sp-hash/TeamBlackMiner/issues/450 - [PSCustomObject]@{ Algorithms = @("Ethash", "EvrProgPow"); Type = "AMD"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 2; Tuning = ""; WarmupTimes = @(90, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algo eth+evr" } - [PSCustomObject]@{ Algorithms = @("Ethash", "FiroPow"); Type = "AMD"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 2; Tuning = ""; WarmupTimes = @(90, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algo eth+firo" } - [PSCustomObject]@{ Algorithms = @("Ethash", "KawPow"); Type = "AMD"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 2; Tuning = ""; WarmupTimes = @(90, 45); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algo eth+rvn" } - [PSCustomObject]@{ Algorithms = @("Ethash", "MeowPow"); Type = "AMD"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 2; Tuning = ""; WarmupTimes = @(90, 45); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algo eth+meow" } - [PSCustomObject]@{ Algorithms = @("Ethash", "VertHash"); Type = "AMD"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 1; Tuning = ""; WarmupTimes = @(120, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algo eth+vtc --verthash-data ..\.$($Variables.VerthashDatPath)" } # 120 Secs; https://github.com/sp-hash/TeamBlackMiner/issues/427 - [PSCustomObject]@{ Algorithms = @("EthashB3"); Type = "AMD"; Fee = @(0.005); MinMemGiB = 1.24; MinerSet = 1; Tuning = ""; WarmupTimes = @(45, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(@("ZergPool"), @()); Arguments = " --algo ethashb3" } - [PSCustomObject]@{ Algorithms = @("EthashB3", "FiroPow"); Type = "AMD"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 1; Tuning = ""; WarmupTimes = @(90, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@("ZergPool"), @()); Arguments = " --algo ethb3+firo" } - [PSCustomObject]@{ Algorithms = @("EthashB3", "EvrProgPow"); Type = "AMD"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 1; Tuning = ""; WarmupTimes = @(90, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@("ZergPool"), @()); Arguments = " --algo ethb3+evr" } - [PSCustomObject]@{ Algorithms = @("EthashB3", "KawPow"); Type = "AMD"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 2; Tuning = ""; WarmupTimes = @(90, 45); ExcludeGPUArchitecture = @(); ExcludePools = @(@("ZergPool"), @()); Arguments = " --algo ethb3+rvn" } - [PSCustomObject]@{ Algorithms = @("EthashB3", "MeowPow"); Type = "AMD"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 2; Tuning = ""; WarmupTimes = @(90, 45); ExcludeGPUArchitecture = @(); ExcludePools = @(@("ZergPool"), @()); Arguments = " --algo ethb3+meow" } - [PSCustomObject]@{ Algorithms = @("EthashB3", "VertHash"); Type = "AMD"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 1; Tuning = ""; WarmupTimes = @(120, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@("ZergPool"), @()); Arguments = " --algo ethb3+vtc --verthash-data ..\.$($Variables.VerthashDatPath)" } # 120 Seconds; https://github.com/sp-hash/TeamBlackMiner/issues/427 - [PSCustomObject]@{ Algorithms = @("EvrProgPow"); Type = "AMD"; Fee = @(0.005); MinMemGiB = 1.24; MinerSet = 1; Tuning = ""; WarmupTimes = @(90, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algo evrprogpow" } - [PSCustomObject]@{ Algorithms = @("FiroPow"); Type = "AMD"; Fee = @(0.005); MinMemGiB = 1.24; MinerSet = 1; Tuning = ""; WarmupTimes = @(90, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algo firopow" } - [PSCustomObject]@{ Algorithms = @("KawPow"); Type = "AMD"; Fee = @(0.005); MinMemGiB = 1.24; MinerSet = 2; Tuning = ""; WarmupTimes = @(90, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algo kawpow" } - [PSCustomObject]@{ Algorithms = @("MeowPow"); Type = "AMD"; Fee = @(0.005); MinMemGiB = 1.24; MinerSet = 2; Tuning = ""; WarmupTimes = @(90, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algo meowpow" } - [PSCustomObject]@{ Algorithms = @("VertHash"); Type = "AMD"; Fee = @(0.005); MinMemGiB = 3.0; MinerSet = 1; Tuning = ""; WarmupTimes = @(30, 0); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algo verthash --verthash-data ..\.$($Variables.VerthashDatPath)" } + [PSCustomObject]@{ Algorithms = @("EtcHash"); Type = "AMD"; Fee = @(0.005); MinMemGiB = 1.24; MinerSet = 1; Tuning = ""; WarmupTimes = @(45, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algo etchash" } # PhoenixMiner-v6.2c may be faster, but I see lower speed at the pool + [PSCustomObject]@{ Algorithms = @("EtcHash", "EthashB3"); Type = "AMD"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 2; Tuning = ""; WarmupTimes = @(120, 45); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @("ZergPool")); Arguments = " --algo etc+ethb3" } # https://github.com/sp-hash/TeamBlackMiner/issues/450 + [PSCustomObject]@{ Algorithms = @("EtcHash", "EvrProgPow"); Type = "AMD"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 2; Tuning = ""; WarmupTimes = @(90, 45); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algo etc+evr" } + [PSCustomObject]@{ Algorithms = @("EtcHash", "FiroPow"); Type = "AMD"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 2; Tuning = ""; WarmupTimes = @(90, 45); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algo etc+firo" } + [PSCustomObject]@{ Algorithms = @("EtcHash", "KawPow"); Type = "AMD"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 2; Tuning = ""; WarmupTimes = @(90, 45); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @("HashCryptos", "MiningDutch")); Arguments = " --algo etc+rvn" } + [PSCustomObject]@{ Algorithms = @("EtcHash", "MeowPow"); Type = "AMD"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 2; Tuning = ""; WarmupTimes = @(90, 45); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algo etc+meow" } + [PSCustomObject]@{ Algorithms = @("EtcHash", "VertHash"); Type = "AMD"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 1; Tuning = ""; WarmupTimes = @(120, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algo etc+vtc --verthash-data ..\.$($Variables.VerthashDatPath)" } # 120 Seconds; https://github.com/sp-hash/TeamBlackMiner/issues/427 + [PSCustomObject]@{ Algorithms = @("Ethash"); Type = "AMD"; Fee = @(0.005); MinMemGiB = 1.24; MinerSet = 1; Tuning = ""; WarmupTimes = @(45, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algo ethash" } # PhoenixMiner-v6.2c may be faster, but I see lower speed at the pool + [PSCustomObject]@{ Algorithms = @("Ethash", "EthashB3"); Type = "AMD"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 2; Tuning = ""; WarmupTimes = @(120, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @("ZergPool")); Arguments = " --algo eth+ethb3" } # https://github.com/sp-hash/TeamBlackMiner/issues/450 + [PSCustomObject]@{ Algorithms = @("Ethash", "EvrProgPow"); Type = "AMD"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 2; Tuning = ""; WarmupTimes = @(90, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algo eth+evr" } + [PSCustomObject]@{ Algorithms = @("Ethash", "FiroPow"); Type = "AMD"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 2; Tuning = ""; WarmupTimes = @(90, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algo eth+firo" } + [PSCustomObject]@{ Algorithms = @("Ethash", "KawPow"); Type = "AMD"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 2; Tuning = ""; WarmupTimes = @(90, 45); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @("HashCryptos", "MiningDutch")); Arguments = " --algo eth+rvn" } + [PSCustomObject]@{ Algorithms = @("Ethash", "MeowPow"); Type = "AMD"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 2; Tuning = ""; WarmupTimes = @(90, 45); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algo eth+meow" } + [PSCustomObject]@{ Algorithms = @("Ethash", "VertHash"); Type = "AMD"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 1; Tuning = ""; WarmupTimes = @(120, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algo eth+vtc --verthash-data ..\.$($Variables.VerthashDatPath)" } # 120 Secs; https://github.com/sp-hash/TeamBlackMiner/issues/427 + [PSCustomObject]@{ Algorithms = @("EthashB3"); Type = "AMD"; Fee = @(0.005); MinMemGiB = 1.24; MinerSet = 1; Tuning = ""; WarmupTimes = @(45, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(@("ZergPool"), @()); Arguments = " --algo ethashb3" } + [PSCustomObject]@{ Algorithms = @("EthashB3", "FiroPow"); Type = "AMD"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 1; Tuning = ""; WarmupTimes = @(90, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@("ZergPool"), @()); Arguments = " --algo ethb3+firo" } + [PSCustomObject]@{ Algorithms = @("EthashB3", "EvrProgPow"); Type = "AMD"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 1; Tuning = ""; WarmupTimes = @(90, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@("ZergPool"), @()); Arguments = " --algo ethb3+evr" } + [PSCustomObject]@{ Algorithms = @("EthashB3", "KawPow"); Type = "AMD"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 2; Tuning = ""; WarmupTimes = @(90, 45); ExcludeGPUArchitecture = @(); ExcludePools = @(@("ZergPool"), @("HashCryptos", "MiningDutch")); Arguments = " --algo ethb3+rvn" } + [PSCustomObject]@{ Algorithms = @("EthashB3", "MeowPow"); Type = "AMD"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 2; Tuning = ""; WarmupTimes = @(90, 45); ExcludeGPUArchitecture = @(); ExcludePools = @(@("ZergPool"), @()); Arguments = " --algo ethb3+meow" } + [PSCustomObject]@{ Algorithms = @("EthashB3", "VertHash"); Type = "AMD"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 1; Tuning = ""; WarmupTimes = @(120, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@("ZergPool"), @()); Arguments = " --algo ethb3+vtc --verthash-data ..\.$($Variables.VerthashDatPath)" } # 120 Seconds; https://github.com/sp-hash/TeamBlackMiner/issues/427 + [PSCustomObject]@{ Algorithms = @("EvrProgPow"); Type = "AMD"; Fee = @(0.005); MinMemGiB = 1.24; MinerSet = 1; Tuning = ""; WarmupTimes = @(90, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algo evrprogpow" } + [PSCustomObject]@{ Algorithms = @("FiroPow"); Type = "AMD"; Fee = @(0.005); MinMemGiB = 1.24; MinerSet = 1; Tuning = ""; WarmupTimes = @(90, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algo firopow" } + [PSCustomObject]@{ Algorithms = @("KawPow"); Type = "AMD"; Fee = @(0.005); MinMemGiB = 1.24; MinerSet = 2; Tuning = ""; WarmupTimes = @(90, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(@("HashCryptos", "MiningDutch"), @()); Arguments = " --algo kawpow" } + [PSCustomObject]@{ Algorithms = @("MeowPow"); Type = "AMD"; Fee = @(0.005); MinMemGiB = 1.24; MinerSet = 2; Tuning = ""; WarmupTimes = @(90, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algo meowpow" } + [PSCustomObject]@{ Algorithms = @("VertHash"); Type = "AMD"; Fee = @(0.005); MinMemGiB = 3.0; MinerSet = 1; Tuning = ""; WarmupTimes = @(30, 0); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algo verthash --verthash-data ..\.$($Variables.VerthashDatPath)" } - [PSCustomObject]@{ Algorithms = @("EtcHash"); Type = "NVIDIA"; Fee = @(0.005); MinMemGiB = 1.24; MinerSet = 2; Tuning = " --tweak 2"; WarmupTimes = @(45, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algo etchash" } # PhoenixMiner-v6.2c may be faster, but I see lower speed at the pool - [PSCustomObject]@{ Algorithms = @("EtcHash", "EthashB3"); Type = "NVIDIA"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 1; Tuning = " --tweak 2"; WarmupTimes = @(90, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @("ZergPool")); Arguments = " --algo etc+ethb3" } - [PSCustomObject]@{ Algorithms = @("EtcHash", "EvrProgPow"); Type = "NVIDIA"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 1; Tuning = " --tweak 2"; WarmupTimes = @(90, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algo etc+evr" } - [PSCustomObject]@{ Algorithms = @("EtcHash", "FiroPow"); Type = "NVIDIA"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 2; Tuning = " --tweak 2"; WarmupTimes = @(90, 45); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algo etc+firo" } - [PSCustomObject]@{ Algorithms = @("EtcHash", "KawPow"); Type = "NVIDIA"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 2; Tuning = " --tweak 2"; WarmupTimes = @(90, 45); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algo etc+rvn" } - [PSCustomObject]@{ Algorithms = @("EtcHash", "MeowPow"); Type = "NVIDIA"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 2; Tuning = " --tweak 2"; WarmupTimes = @(90, 45); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algo etc+meow" } - [PSCustomObject]@{ Algorithms = @("EtcHash", "VertHash"); Type = "NVIDIA"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 2; Tuning = " --tweak 2"; WarmupTimes = @(90, 20); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algo etc+vtc --verthash-data ..\.$($Variables.VerthashDatPath)" } - [PSCustomObject]@{ Algorithms = @("Ethash"); Type = "NVIDIA"; Fee = @(0.005); MinMemGiB = 1.24; MinerSet = 2; Tuning = " --tweak 2"; WarmupTimes = @(45, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algo ethash" } # PhoenixMiner-v6.2c may be faster, but I see lower speed at the pool - [PSCustomObject]@{ Algorithms = @("Ethash", "EthashB3"); Type = "NVIDIA"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 1; Tuning = " --tweak 2"; WarmupTimes = @(90, 45); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @("ZergPool")); Arguments = " --algo eth+ethb3" } - [PSCustomObject]@{ Algorithms = @("Ethash", "EvrProgPow"); Type = "NVIDIA"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 1; Tuning = " --tweak 2"; WarmupTimes = @(90, 45); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algo eth+evr" } - [PSCustomObject]@{ Algorithms = @("Ethash", "FiroPow"); Type = "NVIDIA"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 1; Tuning = " --tweak 2"; WarmupTimes = @(90, 45); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algo eth+firo" } - [PSCustomObject]@{ Algorithms = @("Ethash", "KawPow"); Type = "NVIDIA"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 2; Tuning = " --tweak 2"; WarmupTimes = @(90, 20); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algo eth+rvn" } - [PSCustomObject]@{ Algorithms = @("Ethash", "MeowPow"); Type = "NVIDIA"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 2; Tuning = " --tweak 2"; WarmupTimes = @(90, 20); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algo eth+meow" } - [PSCustomObject]@{ Algorithms = @("Ethash", "VertHash"); Type = "NVIDIA"; Fee = @(0.005, 0.005); MinMemGiB = 1.70; MinerSet = 2; Tuning = " --tweak 2"; WarmupTimes = @(90, 20); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algo eth+vtc --verthash-data ..\.$($Variables.VerthashDatPath)" } - [PSCustomObject]@{ Algorithms = @("EthashB3"); Type = "NVIDIA"; Fee = @(0.005); MinMemGiB = 1.24; MinerSet = 1; Tuning = " --tweak 2"; WarmupTimes = @(45, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(@("ZergPool"), @()); Arguments = " --algo ethashb3" } - [PSCustomObject]@{ Algorithms = @("EthashB3", "EvrProgPow"); Type = "NVIDIA"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 2; Tuning = " --tweak 2"; WarmupTimes = @(90, 45); ExcludeGPUArchitecture = @(); ExcludePools = @(@("ZergPool"), @()); Arguments = " --algo ethb3+evr" } - [PSCustomObject]@{ Algorithms = @("EthashB3", "FiroPow"); Type = "NVIDIA"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 2; Tuning = " --tweak 2"; WarmupTimes = @(90, 45); ExcludeGPUArchitecture = @(); ExcludePools = @(@("ZergPool"), @()); Arguments = " --algo ethb3+firo" } - [PSCustomObject]@{ Algorithms = @("EthashB3", "KawPow"); Type = "NVIDIA"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 2; Tuning = " --tweak 2"; WarmupTimes = @(90, 45); ExcludeGPUArchitecture = @(); ExcludePools = @(@("ZergPool"), @()); Arguments = " --algo ethb3+rvn" } - [PSCustomObject]@{ Algorithms = @("EthashB3", "MeowPow"); Type = "NVIDIA"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 2; Tuning = " --tweak 2"; WarmupTimes = @(90, 45); ExcludeGPUArchitecture = @(); ExcludePools = @(@("ZergPool"), @()); Arguments = " --algo ethb3+meow" } - [PSCustomObject]@{ Algorithms = @("EthashB3", "VertHash"); Type = "NVIDIA"; Fee = @(0.005, 0.005); MinMemGiB = 1.70; MinerSet = 2; Tuning = " --tweak 2"; WarmupTimes = @(45, 45); ExcludeGPUArchitecture = @(); ExcludePools = @(@("ZergPool"), @()); Arguments = " --algo ethb3+vtc --verthash-data ..\.$($Variables.VerthashDatPath)" } - [PSCustomObject]@{ Algorithms = @("EvrProgPow"); Type = "NVIDIA"; Fee = @(0.005); MinMemGiB = 1.24; MinerSet = 1; Tuning = " --tweak 2"; WarmupTimes = @(90, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(@("ZergPool"), @()); Arguments = " --algo evrprogpow" } - [PSCustomObject]@{ Algorithms = @("FiroPow"); Type = "NVIDIA"; Fee = @(0.005); MinMemGiB = 1.24; MinerSet = 2; Tuning = " --tweak 2"; WarmupTimes = @(90, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algo firopow" } - [PSCustomObject]@{ Algorithms = @("KawPow"); Type = "NVIDIA"; Fee = @(0.005); MinMemGiB = 1.24; MinerSet = 2; Tuning = " --tweak 2"; WarmupTimes = @(45, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algo kawpow" } - [PSCustomObject]@{ Algorithms = @("MeowPow"); Type = "NVIDIA"; Fee = @(0.005); MinMemGiB = 1.24; MinerSet = 2; Tuning = " --tweak 2"; WarmupTimes = @(45, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algo meowpow" } - [PSCustomObject]@{ Algorithms = @("VertHash"); Type = "NVIDIA"; Fee = @(0.005); MinMemGiB = 3.0; MinerSet = 0; Tuning = " --tweak 2"; WarmupTimes = @(30, 0); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algo verthash --verthash-data ..\.$($Variables.VerthashDatPath)" } + [PSCustomObject]@{ Algorithms = @("EtcHash"); Type = "NVIDIA"; Fee = @(0.005); MinMemGiB = 1.24; MinerSet = 2; Tuning = " --tweak 2"; WarmupTimes = @(45, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algo etchash" } # PhoenixMiner-v6.2c may be faster, but I see lower speed at the pool + [PSCustomObject]@{ Algorithms = @("EtcHash", "EthashB3"); Type = "NVIDIA"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 1; Tuning = " --tweak 2"; WarmupTimes = @(90, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @("ZergPool")); Arguments = " --algo etc+ethb3" } + [PSCustomObject]@{ Algorithms = @("EtcHash", "EvrProgPow"); Type = "NVIDIA"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 1; Tuning = " --tweak 2"; WarmupTimes = @(90, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algo etc+evr" } + [PSCustomObject]@{ Algorithms = @("EtcHash", "FiroPow"); Type = "NVIDIA"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 2; Tuning = " --tweak 2"; WarmupTimes = @(90, 45); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algo etc+firo" } + [PSCustomObject]@{ Algorithms = @("EtcHash", "KawPow"); Type = "NVIDIA"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 2; Tuning = " --tweak 2"; WarmupTimes = @(90, 45); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @("HashCryptos", "MiningDutch")); Arguments = " --algo etc+rvn" } + [PSCustomObject]@{ Algorithms = @("EtcHash", "MeowPow"); Type = "NVIDIA"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 2; Tuning = " --tweak 2"; WarmupTimes = @(90, 45); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algo etc+meow" } + [PSCustomObject]@{ Algorithms = @("EtcHash", "VertHash"); Type = "NVIDIA"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 2; Tuning = " --tweak 2"; WarmupTimes = @(90, 20); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algo etc+vtc --verthash-data ..\.$($Variables.VerthashDatPath)" } + [PSCustomObject]@{ Algorithms = @("Ethash"); Type = "NVIDIA"; Fee = @(0.005); MinMemGiB = 1.24; MinerSet = 2; Tuning = " --tweak 2"; WarmupTimes = @(45, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algo ethash" } # PhoenixMiner-v6.2c may be faster, but I see lower speed at the pool + [PSCustomObject]@{ Algorithms = @("Ethash", "EthashB3"); Type = "NVIDIA"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 1; Tuning = " --tweak 2"; WarmupTimes = @(90, 45); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @("ZergPool")); Arguments = " --algo eth+ethb3" } + [PSCustomObject]@{ Algorithms = @("Ethash", "EvrProgPow"); Type = "NVIDIA"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 1; Tuning = " --tweak 2"; WarmupTimes = @(90, 45); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @("HashCryptos", "MiningDutch")); Arguments = " --algo eth+evr" } + [PSCustomObject]@{ Algorithms = @("Ethash", "FiroPow"); Type = "NVIDIA"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 1; Tuning = " --tweak 2"; WarmupTimes = @(90, 45); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algo eth+firo" } + [PSCustomObject]@{ Algorithms = @("Ethash", "KawPow"); Type = "NVIDIA"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 2; Tuning = " --tweak 2"; WarmupTimes = @(90, 20); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @("HashCryptos", "MiningDutch")); Arguments = " --algo eth+rvn" } + [PSCustomObject]@{ Algorithms = @("Ethash", "MeowPow"); Type = "NVIDIA"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 2; Tuning = " --tweak 2"; WarmupTimes = @(90, 20); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algo eth+meow" } + [PSCustomObject]@{ Algorithms = @("Ethash", "VertHash"); Type = "NVIDIA"; Fee = @(0.005, 0.005); MinMemGiB = 1.70; MinerSet = 2; Tuning = " --tweak 2"; WarmupTimes = @(90, 20); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algo eth+vtc --verthash-data ..\.$($Variables.VerthashDatPath)" } + [PSCustomObject]@{ Algorithms = @("EthashB3"); Type = "NVIDIA"; Fee = @(0.005); MinMemGiB = 1.24; MinerSet = 1; Tuning = " --tweak 2"; WarmupTimes = @(45, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(@("ZergPool"), @()); Arguments = " --algo ethashb3" } + [PSCustomObject]@{ Algorithms = @("EthashB3", "EvrProgPow"); Type = "NVIDIA"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 2; Tuning = " --tweak 2"; WarmupTimes = @(90, 45); ExcludeGPUArchitecture = @(); ExcludePools = @(@("ZergPool"), @()); Arguments = " --algo ethb3+evr" } + [PSCustomObject]@{ Algorithms = @("EthashB3", "FiroPow"); Type = "NVIDIA"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 2; Tuning = " --tweak 2"; WarmupTimes = @(90, 45); ExcludeGPUArchitecture = @(); ExcludePools = @(@("ZergPool"), @()); Arguments = " --algo ethb3+firo" } + [PSCustomObject]@{ Algorithms = @("EthashB3", "KawPow"); Type = "NVIDIA"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 2; Tuning = " --tweak 2"; WarmupTimes = @(90, 45); ExcludeGPUArchitecture = @(); ExcludePools = @(@("ZergPool"), @("HashCryptos", "MiningDutch")); Arguments = " --algo ethb3+rvn" } + [PSCustomObject]@{ Algorithms = @("EthashB3", "MeowPow"); Type = "NVIDIA"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 2; Tuning = " --tweak 2"; WarmupTimes = @(90, 45); ExcludeGPUArchitecture = @(); ExcludePools = @(@("ZergPool"), @()); Arguments = " --algo ethb3+meow" } + [PSCustomObject]@{ Algorithms = @("EthashB3", "VertHash"); Type = "NVIDIA"; Fee = @(0.005, 0.005); MinMemGiB = 1.70; MinerSet = 2; Tuning = " --tweak 2"; WarmupTimes = @(45, 45); ExcludeGPUArchitecture = @(); ExcludePools = @(@("ZergPool"), @()); Arguments = " --algo ethb3+vtc --verthash-data ..\.$($Variables.VerthashDatPath)" } + [PSCustomObject]@{ Algorithms = @("EvrProgPow"); Type = "NVIDIA"; Fee = @(0.005); MinMemGiB = 1.24; MinerSet = 1; Tuning = " --tweak 2"; WarmupTimes = @(90, 15); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algo evrprogpow" } + [PSCustomObject]@{ Algorithms = @("FiroPow"); Type = "NVIDIA"; Fee = @(0.005); MinMemGiB = 1.24; MinerSet = 2; Tuning = " --tweak 2"; WarmupTimes = @(90, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algo firopow" } + [PSCustomObject]@{ Algorithms = @("KawPow"); Type = "NVIDIA"; Fee = @(0.005); MinMemGiB = 1.24; MinerSet = 2; Tuning = " --tweak 2"; WarmupTimes = @(45, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@("HashCryptos", "MiningDutch"), @()); Arguments = " --algo kawpow" } + [PSCustomObject]@{ Algorithms = @("MeowPow"); Type = "NVIDIA"; Fee = @(0.005); MinMemGiB = 1.24; MinerSet = 2; Tuning = " --tweak 2"; WarmupTimes = @(45, 30); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algo meowpow" } + [PSCustomObject]@{ Algorithms = @("VertHash"); Type = "NVIDIA"; Fee = @(0.005); MinMemGiB = 3.0; MinerSet = 0; Tuning = " --tweak 2"; WarmupTimes = @(30, 0); ExcludeGPUArchitecture = @(); ExcludePools = @(@(), @()); Arguments = " --algo verthash --verthash-data ..\.$($Variables.VerthashDatPath)" } ) $Algorithms = $Algorithms.Where({ $_.MinerSet -le $Config.MinerSet }) @@ -100,7 +100,7 @@ If ($Algorithms) { ($Algorithms | Where-Object Type -EQ $_.Type).ForEach( { $ExcludeGPUArchitecture = $_.ExcludeGPUArchitecture - If ($AvailableMinerDevices = $MinerDevices.Where({ $_.Architecture -notin $ExcludeGPUArchitecture })) { + If ($SupportedMinerDevices = $MinerDevices.Where({ $_.Architecture -notin $ExcludeGPUArchitecture })) { If ($_.Algorithms -contains "VertHash" -and (Get-Item -Path $Variables.VerthashDatPath -ErrorAction Ignore).length -ne 1283457024) { $PrerequisitePath = $Variables.VerthashDatPath @@ -119,7 +119,7 @@ If ($Algorithms) { If (-not $_.Algorithms[1] -or ($Pool0.PoolPorts[0] -and $Pool1.PoolPorts[0]) -or ($Pool0.PoolPorts[1] -and $Pool1.PoolPorts[1])) { $MinMemGiB = $_.MinMemGiB + $Pool0.DAGSizeGiB + $Pool1.DAGSizeGiB - If ($AvailableMinerDevices = $AvailableMinerDevices.Where({ $_.MemoryGiB -ge $MinMemGiB })) { + If ($AvailableMinerDevices = $SupportedMinerDevices.Where({ $_.MemoryGiB -ge $MinMemGiB })) { $MinerName = "$Name-$($AvailableMinerDevices.Count)x$($AvailableMinerDevices.Model | Select-Object -Unique)-$($Pool0.AlgorithmVariant)$(If ($Pool1) { "&$($Pool1.AlgorithmVariant)" })$(If ($_.Intensity) { "-$($_.Intensity)" })" @@ -130,12 +130,13 @@ If ($Algorithms) { If ($Pool0.Pass) { $Arguments += " --server-passwd $($Pool0.Pass)" } $SecondAlgo = Switch ($_.Algorithms[1]) { - "EthashB3" { "ethb3" } - "FiroPow" { "firo" } - "KawPow" { "rvn" } - "MeowPow" { "meow" } - "VertHash" { "vtc" } - Default { "" } + "EthashB3" { "ethb3" } + "EvrProgPow" { "evr" } + "FiroPow" { "firo" } + "KawPow" { "rvn" } + "MeowPow" { "meow" } + "VertHash" { "vtc" } + Default { "" } } If ($SecondAlgo) { $Arguments += " --$($SecondAlgo)-hostname $($Pool1.Host) --$($SecondAlgo)-wallet $($Pool1.User) --$($SecondAlgo)-passwd $($Pool1.Pass)" diff --git a/Miners/TeamRedMiner-v0.10.21.ps1 b/Miners/TeamRedMiner-v0.10.21.ps1 index efea0439..71e96d46 100644 --- a/Miners/TeamRedMiner-v0.10.21.ps1 +++ b/Miners/TeamRedMiner-v0.10.21.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.2.11 -Version date: 2024/06/23 +Version: 6.2.12 +Version date: 2024/06/26 #> If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.Type -eq "AMD" -and $_.OpenCL.ClVersion -ge "OpenCL C 2.0" }))) { Return } @@ -104,7 +104,7 @@ If ($Algorithms) { $Algorithms.ForEach( { $ExcludeGPUArchitecture = $_.ExcludeGPUArchitecture - If ($AvailableMinerDevices = $MinerDevices.Where({ $_.Architecture -notin $ExcludeGPUArchitecture })) { + If ($SupportedMinerDevices = $MinerDevices.Where({ $_.Architecture -notin $ExcludeGPUArchitecture })) { If ($_.Algorithms -contains "VertHash" -and (Get-Item -Path $Variables.VerthashDatPath -ErrorAction Ignore).length -ne 1283457024) { $PrerequisitePath = $Variables.VerthashDatPath @@ -120,7 +120,7 @@ If ($Algorithms) { ForEach ($Pool1 in $MinerPools[1][$_.Algorithms[1]].Where({ $_.Name -notin $ExcludePools[1] -and ($Config.SSL -ne "Always" -or $_.SSLSelfSignedCertificate -ne $true) })) { $MinMemGiB = $_.MinMemGiB + $Pool0.DAGSizeGiB + $Pool1.DAGSizeGiB - If ($AvailableMinerDevices = $AvailableMinerDevices.Where({ $_.MemoryGiB -ge $MinMemGiB })) { + If ($AvailableMinerDevices = $SupportedMinerDevices.Where({ $_.MemoryGiB -ge $MinMemGiB })) { $MinerName = "$Name-$($AvailableMinerDevices.Count)x$($AvailableMinerDevices.Model | Select-Object -Unique)-$($Pool0.AlgorithmVariant)$(If ($Pool1) { "&$($Pool1.AlgorithmVariant)" })" diff --git a/Miners/Trex-v0.26.8.ps1 b/Miners/Trex-v0.26.8.ps1 index ad112853..9e87ddf4 100644 --- a/Miners/Trex-v0.26.8.ps1 +++ b/Miners/Trex-v0.26.8.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.2.11 -Version date: 2024/06/23 +Version: 6.2.12 +Version date: 2024/06/26 #> If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.OpenCL.ComputeCapability -ge "5.0" }))) { Return } diff --git a/Miners/Wildrig-v0.40.5.ps1 b/Miners/Wildrig-v0.40.5.ps1 index 6e3ca0f2..63b707a0 100644 --- a/Miners/Wildrig-v0.40.5.ps1 +++ b/Miners/Wildrig-v0.40.5.ps1 @@ -18,7 +18,7 @@ along with this program. If not, see . <# Product: UG-Miner Version: 6.2.9 -Version date: 2024/06/23 +Version date: 2024/06/26 #> If (-not ($Devices = $Variables.EnabledDevices.Where({ ($_.Type -eq "AMD" -and $_.OpenCL.ClVersion -ge "OpenCL C 1.2") -or $_.Type -eq "INTEL" -or ($_.OpenCL.ComputeCapability -ge "5.0" -and $_.OpenCL.DriverVersion -ge [Version]"452.39.00") }))) { Return } @@ -270,13 +270,13 @@ If ($Algorithms) { ($Algorithms | Where-Object Type -EQ $_.Type).ForEach( { $ExcludeGPUArchitecture = $_.ExcludeGPUArchitecture - If ($AvailableMinerDevices = $MinerDevices.Where({ $_.Architecture -notmatch $ExcludeGPUArchitecture })) { + If ($SupportedMinerDevices = $MinerDevices.Where({ $_.Architecture -notmatch $ExcludeGPUArchitecture })) { $ExcludePools = $_.ExcludePools ForEach ($Pool in $MinerPools[0][$_.Algorithm].Where({ $_.Name -notin $ExcludePools })) { $MinMemGiB = $_.MinMemGiB + $Pool.DAGSizeGiB - If ($AvailableMinerDevices = $AvailableMinerDevices.Where({ $_.MemoryGiB -ge $MinMemGiB })) { + If ($AvailableMinerDevices = $SupportedMinerDevices.Where({ $_.MemoryGiB -ge $MinMemGiB })) { $MinerName = "$Name-$($AvailableMinerDevices.Count)x$($AvailableMinerDevices.Model | Select-Object -Unique)-$($Pool.AlgorithmVariant)" diff --git a/Miners/XmRig-v6.21.3.15.ps1 b/Miners/XmRig-v6.21.3.15.ps1 index 471cff42..ba25972c 100644 --- a/Miners/XmRig-v6.21.3.15.ps1 +++ b/Miners/XmRig-v6.21.3.15.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.2.11 -Version date: 2024/06/23 +Version: 6.2.12 +Version date: 2024/06/26 #> If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.Type -in @("AMD", "CPU", "INTEL") -or $_.OpenCL.ComputeCapability -gt "5.0" }))) { Return } diff --git a/Miners/XmrStak-v2.10.8.ps1 b/Miners/XmrStak-v2.10.8.ps1 index d6bf6418..60ca99d1 100644 --- a/Miners/XmrStak-v2.10.8.ps1 +++ b/Miners/XmrStak-v2.10.8.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.2.11 -Version date: 2024/06/23 +Version: 6.2.12 +Version date: 2024/06/26 #> If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.OpenCL.ComputeCapability -ge "5.0" -and $_.OpenCL.ComputeCapability -lt "8.6" }))) { Return } diff --git a/Miners/ZealotEnemy-v2.6.2.ps1 b/Miners/ZealotEnemy-v2.6.2.ps1 index 0f5148bb..4a3b0226 100644 --- a/Miners/ZealotEnemy-v2.6.2.ps1 +++ b/Miners/ZealotEnemy-v2.6.2.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.2.11 -Version date: 2024/06/23 +Version: 6.2.12 +Version date: 2024/06/26 #> If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.OpenCL.ComputeCapability -gt "5.0" }))) { Return } @@ -70,7 +70,7 @@ If ($Algorithms) { $Algorithms.ForEach( { $ExcludeGPUArchitecture = $_.ExcludeGPUArchitecture - If ($AvailableMinerDevices = $MinerDevices.Where({ $_.Architecture -notin $ExcludeGPUArchitecture })) { + If ($SupportedMinerDevices = $MinerDevices.Where({ $_.Architecture -notin $ExcludeGPUArchitecture })) { # $ExcludePools = $_.ExcludePools # ForEach ($Pool in $MinerPools[0][$_.Algorithm].Where({ $_.Name -notin $ExcludePools })) { @@ -78,7 +78,7 @@ If ($Algorithms) { $MinMemGiB = $_.MinMemGiB + $Pool.DAGSizeGiB If ($_.Algorithm -eq "KawPow" -and $MinMemGB -lt 2) { $MinMemGiB = 4 } # No hash rates in time for GPUs with 2GB - If ($AvailableMinerDevices = $AvailableMinerDevices.Where({ $_.MemoryGiB -ge $MinMemGiB })) { + If ($AvailableMinerDevices = $SupportedMinerDevices.Where({ $_.MemoryGiB -ge $MinMemGiB })) { $MinerName = "$Name-$($AvailableMinerDevices.Count)x$($AvailableMinerDevices.Model | Select-Object -Unique)-$($Pool.AlgorithmVariant)" diff --git a/Miners/ZealotEnemy-v2.6.3.ps1 b/Miners/ZealotEnemy-v2.6.3.ps1 index ce113a56..15b4b89c 100644 --- a/Miners/ZealotEnemy-v2.6.3.ps1 +++ b/Miners/ZealotEnemy-v2.6.3.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.2.11 -Version date: 2024/06/23 +Version: 6.2.12 +Version date: 2024/06/26 #> If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.OpenCL.ComputeCapability -ge "5.0" }))) { Return } @@ -66,7 +66,7 @@ If ($Algorithms) { $Algorithms.ForEach( { $ExcludeGPUArchitecture = $_.ExcludeGPUArchitecture - If ($AvailableMinerDevices = $MinerDevices.Where({ $_.Architecture -notin $ExcludeGPUArchitecture })) { + If ($SupportedMinerDevices = $MinerDevices.Where({ $_.Architecture -notin $ExcludeGPUArchitecture })) { # $ExcludePools = $_.ExcludePools # ForEach ($Pool in $MinerPools[0][$_.Algorithm].Where({ $_.Name -notin $ExcludePools })) { @@ -74,7 +74,7 @@ If ($Algorithms) { $MinMemGiB = $_.MinMemGiB + $Pool.DAGSizeGiB If ($_.Algorithm -eq "KawPow" -and $MinMemGB -lt 2) { $MinMemGiB = 4 } # No hash rates in time for GPUs with 2GB - If ($AvailableMinerDevices = $AvailableMinerDevices.Where({ $_.MemoryGiB -ge $MinMemGiB })) { + If ($AvailableMinerDevices = $SupportedMinerDevices.Where({ $_.MemoryGiB -ge $MinMemGiB })) { $MinerName = "$Name-$($AvailableMinerDevices.Count)x$($AvailableMinerDevices.Model | Select-Object -Unique)-$($Pool.AlgorithmVariant)" diff --git a/Miners/lolMiner-v1.88.ps1 b/Miners/lolMiner-v1.88.ps1 index 0cafd416..16ec93f5 100644 --- a/Miners/lolMiner-v1.88.ps1 +++ b/Miners/lolMiner-v1.88.ps1 @@ -17,8 +17,8 @@ along with this program. If not, see . <# Product: UG-Miner -Version: 6.2.11 -Version date: 2024/06/23 +Version: 6.2.12 +Version date: 2024/06/26 #> 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 } @@ -151,7 +151,7 @@ If ($Algorithms) { ($Algorithms | Where-Object Type -EQ $_.Type).ForEach( { $ExcludeGPUArchitecture = $_.ExcludeGPUArchitecture - If ($AvailableMinerDevices = $MinerDevices.Where({ $_.Architecture -notmatch $ExcludeGPUArchitecture })) { + If ($SupportedMinerDevices = $MinerDevices.Where({ $_.Architecture -notmatch $ExcludeGPUArchitecture })) { $ExcludePools = $_.ExcludePools ForEach ($Pool0 in $MinerPools[0][$_.Algorithms[0]].Where({ $_.Name -notin $ExcludePools[0] })) { @@ -160,7 +160,7 @@ If ($Algorithms) { $MinMemGiB = $_.MinMemGiB + $Pool0.DAGSizeGiB + $Pool1.DAGSizeGiB # Windows 10 requires more memory on some algos If ($_.Algorithms[0] -match '^Cuckaroo.*$|^Cuckoo.*$' -and ([System.Environment]::OSVersion.Version -ge [Version]"10.0.0.0")) { $MinMemGiB += 1 } - If ($AvailableMinerDevices = $AvailableMinerDevices.Where({ $_.MemoryGiB -ge $MinMemGiB })) { + If ($AvailableMinerDevices = $SupportedMinerDevices.Where({ $_.MemoryGiB -ge $MinMemGiB })) { $MinerName = "$Name-$($AvailableMinerDevices.Count)x$($AvailableMinerDevices.Model | Select-Object -Unique)-$($Pool0.AlgorithmVariant)$(If ($Pool1) { "&$($Pool1.AlgorithmVariant)" })$(If ($_.MaxDualImpact -gt 0) { "-$($_.MaxDualImpact)" })" diff --git a/Pools/HashCryptos.ps1 b/Pools/HashCryptos.ps1 index ca632598..71745926 100644 --- a/Pools/HashCryptos.ps1 +++ b/Pools/HashCryptos.ps1 @@ -19,8 +19,8 @@ along with this program. If not, see . <# Product: UG-Miner File: \Pools\HashCryptos.ps1 -Version: 6.2.11 -Version date: 2024/06/23 +Version: 6.2.12 +Version date: 2024/06/26 #> Param( diff --git a/Pools/HiveON.ps1 b/Pools/HiveON.ps1 index 31d02643..c4794a7f 100644 --- a/Pools/HiveON.ps1 +++ b/Pools/HiveON.ps1 @@ -19,8 +19,8 @@ along with this program. If not, see . <# Product: UG-Miner File: \Pools\Hiveon.ps1 -Version: 6.2.11 -Version date: 2024/06/23 +Version: 6.2.12 +Version date: 2024/06/26 #> Param( diff --git a/Pools/MiningDutch.ps1 b/Pools/MiningDutch.ps1 index bed38cce..9b7a8d12 100644 --- a/Pools/MiningDutch.ps1 +++ b/Pools/MiningDutch.ps1 @@ -19,8 +19,8 @@ along with this program. If not, see . <# Product: UG-Miner File: \Pools\MiningDutch.ps1 -Version: 6.2.11 -Version date: 2024/06/23 +Version: 6.2.12 +Version date: 2024/06/26 #> Param( diff --git a/Pools/MiningPoolHub.ps1 b/Pools/MiningPoolHub.ps1 index a4d1b67c..d3907387 100644 --- a/Pools/MiningPoolHub.ps1 +++ b/Pools/MiningPoolHub.ps1 @@ -19,8 +19,8 @@ along with this program. If not, see . <# Product: UG-Miner File: \Pools\MiningPoolHub.ps1 -Version: 6.2.11 -Version date: 2024/06/23 +Version: 6.2.12 +Version date: 2024/06/26 #> Param( diff --git a/Pools/NiceHash.ps1 b/Pools/NiceHash.ps1 index aff2e1a1..d54aeb4a 100644 --- a/Pools/NiceHash.ps1 +++ b/Pools/NiceHash.ps1 @@ -19,8 +19,8 @@ along with this program. If not, see . <# Product: UG-Miner File: \Pools\NiceHash.ps1 -Version: 6.2.11 -Version date: 2024/06/23 +Version: 6.2.12 +Version date: 2024/06/26 #> Param( diff --git a/Pools/ProHashing.ps1 b/Pools/ProHashing.ps1 index f52b502f..3861e5f1 100644 --- a/Pools/ProHashing.ps1 +++ b/Pools/ProHashing.ps1 @@ -19,8 +19,8 @@ along with this program. If not, see . <# Product: UG-Miner File: \Pools\ProHashing.ps1 -Version: 6.2.11 -Version date: 2024/06/23 +Version: 6.2.12 +Version date: 2024/06/26 #> Param( diff --git a/Pools/ZPool.ps1 b/Pools/ZPool.ps1 index d159c551..a1644de0 100644 --- a/Pools/ZPool.ps1 +++ b/Pools/ZPool.ps1 @@ -19,8 +19,8 @@ along with this program. If not, see . <# Product: UG-Miner File: \Pools\ZPool.ps1 -Version: 6.2.11 -Version date: 2024/06/23 +Version: 6.2.12 +Version date: 2024/06/26 #> Param( diff --git a/Pools/ZergPool.ps1 b/Pools/ZergPool.ps1 index 1a446b7c..39f47093 100644 --- a/Pools/ZergPool.ps1 +++ b/Pools/ZergPool.ps1 @@ -19,8 +19,8 @@ along with this program. If not, see . <# Product: UG-Miner File: \Pools\ZergPool.ps1 -Version: 6.2.11 -Version date: 2024/06/23 +Version: 6.2.12 +Version date: 2024/06/26 #> Param( @@ -95,7 +95,7 @@ If ($DivisorMultiplier -and $Regions) { Disabled = $Stat.Disabled EarningsAdjustmentFactor = $PoolConfig.EarningsAdjustmentFactor Fee = $Request.$Pool.Fees / 100 - Host = $PoolHost + Host = $PoolHost.toLower() Key = $Key MiningCurrency = If ($Currency) { $Currency } Else { "" } Name = $Name diff --git a/UG-Miner.ps1 b/UG-Miner.ps1 index de6e30e3..a090d0f8 100644 --- a/UG-Miner.ps1 +++ b/UG-Miner.ps1 @@ -18,8 +18,8 @@ along with this program. If not, see . <# Product: UG-Miner File: UG-Miner.ps1 -Version: 6.2.11 -Version date: 2024/06/23 +Version: 6.2.12 +Version date: 2024/06/26 #> using module .\Includes\Include.psm1 @@ -296,7 +296,7 @@ $Variables.Branding = [PSCustomObject]@{ BrandName = "UG-Miner" BrandWebSite = "https://github.com/UselessGuru/UG-Miner" ProductLabel = "UG-Miner" - Version = [System.Version]"6.2.11" + Version = [System.Version]"6.2.12" } $WscriptShell = New-Object -ComObject Wscript.Shell @@ -350,7 +350,7 @@ $Variables.AllCommandLineParameters = [Ordered]@{ } ) $Variables.MutexAddCoinName = New-Object System.Threading.Mutex($false, "$($Variables.Branding.ProductLabel)_Add-CoinName") -$Variables.MutexWriteMessage = New-Object System.Threading.Mutex($false, "$($Variables.Branding.ProductLabel)_WriteMessage") +$Variables.MutexWriteMessage = New-Object System.Threading.Mutex($false, "$($Variables.Branding.ProductLabel)_Write-Message") Write-Host "$($Variables.Branding.ProductLabel) is getting ready. Please wait..." @@ -558,7 +558,7 @@ Function MainLoop { $Variables.Summary = "Resuming mining.
System has been idle for $($Config.IdleSec) second$(If ($Config.IdleSec -ne 1) { "s" })." Write-Message -Level Verbose ($Variables.Summary -replace '
', ' ') Write-Host ($Variables.Summary -replace '
', ' ') - $MiningSummaryLabel.Text = ($Variables.Summary -replace '
', ' ') + $LegacyGUIminingSummaryLabel.Text = ($Variables.Summary -replace '
', ' ') } If ($LegacyGUIform) { Update-GUIstatus } Start-Core @@ -589,7 +589,7 @@ Function MainLoop { } # If something (pause button, idle timer, WebGUI/config) has set the RestartCycle flag, stop and start mining to switch modes immediately - If ($Variables.RestartCycle -or ($LegacyGUIform -and -not $MiningSummaryLabel.Text)) { + If ($Variables.RestartCycle -or ($LegacyGUIform -and -not $LegacyGUIminingSummaryLabel.Text)) { $Variables.RestartCycle = $false If ($Config.WebGUI) { Start-APIServer } Else { Stop-APIServer } @@ -860,24 +860,24 @@ Function MainLoop { If ($Config.WebGUI) { Start-APIServer } Else { Stop-APIServer } $host.UI.RawUI.WindowTitle = "$($Variables.Branding.ProductLabel) $($Variables.Branding.Version) - Runtime: {0:dd} days {0:hh} hrs {0:mm} mins - Path: $($Variables.Mainpath)" -f [TimeSpan]([DateTime]::Now.ToUniversalTime() - $Variables.ScriptStartTime) - If ($LegacyGUIForm) { - $LegacyGUIForm.Text = $host.UI.RawUI.WindowTitle + If ($LegacyGUIform) { + $LegacyGUIform.Text = $host.UI.RawUI.WindowTitle # Refresh selected tab Update-TabControl If ($Variables.MyIP) { - $MiningSummaryLabel.Text = "" - $MiningSummaryLabel.SendToBack() - (($Variables.Summary -replace 'Power Cost', '
Power Cost' -replace ' / ', '/' -replace ' ', ' ' -replace ' ', ' ') -split '
').ForEach({ $MiningSummaryLabel.Text += "`r`n$_" }) - $MiningSummaryLabel.Text += "`r`n " - If ($Variables.MiningProfit -ge 0) { $MiningSummaryLabel.ForeColor = [System.Drawing.Color]::Green } - ElseIf ($Variables.MiningProfit -lt 0) { $MiningSummaryLabel.ForeColor = [System.Drawing.Color]::Red } - Else { $MiningSummaryLabel.ForeColor = [System.Drawing.Color]::Black } + $LegacyGUIminingSummaryLabel.Text = "" + $LegacyGUIminingSummaryLabel.SendToBack() + (($Variables.Summary -replace 'Power Cost', '
Power Cost' -replace ' / ', '/' -replace ' ', ' ' -replace ' ', ' ') -split '
').ForEach({ $LegacyGUIminingSummaryLabel.Text += "`r`n$_" }) + $LegacyGUIminingSummaryLabel.Text += "`r`n " + If ($Variables.MiningProfit -ge 0) { $LegacyGUIminingSummaryLabel.ForeColor = [System.Drawing.Color]::Green } + ElseIf ($Variables.MiningProfit -lt 0) { $LegacyGUIminingSummaryLabel.ForeColor = [System.Drawing.Color]::Red } + Else { $LegacyGUIminingSummaryLabel.ForeColor = [System.Drawing.Color]::Black } } Else { Write-Message -Level Error $Variables.Message - $MiningSummaryLabel.ForeColor = [System.Drawing.Color]::Red - $MiningSummaryLabel.Text = "Error: $($Variables.Summary)" + $LegacyGUIminingSummaryLabel.ForeColor = [System.Drawing.Color]::Red + $LegacyGUIminingSummaryLabel.Text = "Error: $($Variables.Summary)" } } @@ -907,7 +907,7 @@ Function MainLoop { Write-Host "Projected payment date: $(If ($_.ProjectedPayDate -is [DateTime]) { $_.ProjectedPayDate.ToString("G") } Else { $_.ProjectedPayDate })`n" } ) - Remove-Variable Currency -ErrorAction Ignore + Remove-Variable Currency, mBTCfactor -ErrorAction Ignore } If ($Variables.MyIP) { @@ -917,10 +917,10 @@ Function MainLoop { @{ Label = "Miner"; Expression = { $_.Name } } If ($Variables.ShowEarningBias) { @{ Label = "EarningBias"; Expression = { If ([Double]::IsNaN($_.Earning_Bias)) { "n/a" } Else { "{0:n$($Config.DecimalsMax)}" -f ($_.Earning_Bias * $Variables.Rates.($Config.PayoutCurrency).($Config.MainCurrency)) } }; Align = "right" } } If ($Variables.ShowEarning) { @{ Label = "Earning"; Expression = { If ([Double]::IsNaN($_.Earning)) { "n/a" } Else { "{0:n$($Config.DecimalsMax)}" -f ($_.Earning * $Variables.Rates.($Config.PayoutCurrency).($Config.MainCurrency)) } }; Align = "right" } } + If ($Variables.ShowPowerCost -and $Config.CalculatePowerCost -and $Variables.MiningPowerCost) { @{ Label = "PowerCost"; Expression = { If ([Double]::IsNaN($_.PowerConsumption)) { "n/a" } Else { "-{0:n$($Config.DecimalsMax)}" -f ($_.PowerCost * $Variables.Rates.($Config.PayoutCurrency).($Config.MainCurrency)) } }; Align = "right" } } If ($Variables.MiningPowerCost -and $Variables.ShowProfitBias) { @{ Label = "ProfitBias"; Expression = { If ([Double]::IsNaN($_.Profit_Bias)) { "n/a" } Else { "{0:n$($Config.DecimalsMax)}" -f ($_.Profit_Bias * $Variables.Rates.($Config.PayoutCurrency).($Config.MainCurrency)) } }; Align = "right" } } If ($Variables.MiningPowerCost -and $Variables.ShowProfit) { @{ Label = "Profit"; Expression = { If ([Double]::IsNaN($_.Profit)) { "n/a" } Else { "{0:n$($Config.DecimalsMax)}" -f ($_.Profit * $Variables.Rates.($Config.PayoutCurrency).($Config.MainCurrency)) } }; Align = "right" } } If ($Variables.ShowPowerConsumption -and $Config.CalculatePowerCost) { @{ Label = "PowerConsumption"; Expression = { If ($_.MeasurePowerConsumption) { If ($_.Status -eq "Running") { "Measuring..." } Else { "Unmeasured" } } Else { If ([Double]::IsNaN($_.PowerConsumption)) { "n/a" } Else { "$($_.PowerConsumption.ToString("N2")) W" } } }; Align = "right" } } - If ($Variables.ShowPowerCost -and $Config.CalculatePowerCost -and $Variables.MiningPowerCost) { @{ Label = "PowerCost"; Expression = { If ([Double]::IsNaN($_.PowerConsumption)) { "n/a" } Else { "-{0:n$($Config.DecimalsMax)}" -f ($_.PowerCost * $Variables.Rates.($Config.PayoutCurrency).($Config.MainCurrency)) } }; Align = "right" } } If ($Variables.ShowAccuracy) { @{ Label = "Accuracy"; Expression = { $_.Workers.Pool.Accuracy.ForEach({ "{0:P0}" -f [Double]$_ }) }; Align = "right" } } @{ Label = "Algorithm"; Expression = { $_.Workers.Pool.Algorithm -join ' & ' } } If ($Variables.ShowMinerFee -and ($Variables.Miners.Workers.Fee)) { @{ Label = "Fee"; Expression = { $_.Workers.Fee.ForEach({ "{0:P2}" -f [Double]$_ }) }; Align = "right" } } @@ -1072,7 +1072,6 @@ While ($true) { If ($Config.LegacyGUI) { If (-not $LegacyGUIform.CanSelect) { . .\Includes\LegacyGUI.ps1 - Form-Resize } # Show legacy GUI $LegacyGUIform.ShowDialog() | Out-Null diff --git a/Version.txt b/Version.txt index db19aac9..c24960a8 100644 --- a/Version.txt +++ b/Version.txt @@ -1,6 +1,6 @@ { "Product": "UG-Miner", - "Version": "6.2.11", + "Version": "6.2.12", "AutoUpdate": true, "RequireRestart": true, "Uri": "https://github.com/UselessGuru/UG-Miner/archive/refs/heads/master.zip", diff --git a/Web/js/utilities.js b/Web/js/utilities.js index e6b04a12..1ba7c0cc 100644 --- a/Web/js/utilities.js +++ b/Web/js/utilities.js @@ -132,7 +132,7 @@ function formatTime(seconds) { } function formatDuration(value) { - return formatTime(parseInt(value.split(':')[0] * 60 * 60) + parseInt(value.split(':')[1] * 60) + parseInt(value.split(':')[2])) + return formatTime(parseInt(value.split(':')[0] * 3600) + parseInt(value.split(':')[1] * 60) + parseInt(value.split(':')[2])) } function formatHashrateValue(value) { diff --git a/Web/minersall.html b/Web/minersall.html index 8a356378..f5a1073a 100644 --- a/Web/minersall.html +++ b/Web/minersall.html @@ -24,7 +24,6 @@

All miners

data-detail-view="true" data-disable-control-when-search="true" data-filter-control="true" - data-group-by="true" data-group-by-collapsed-groups="" data-group-by-field="Name" data-group-by-show-toggle-icon="true" @@ -120,13 +119,16 @@

All miners

async: 'true', autoRefreshInterval: parseInt(Math.max(config.Interval, 30)), // refresh once per interval, at least 30 seconds height: $(window).height() - $table.offset().top + 26, - + groupBy: !config.MinerUseBestPoolsOnly, onPostBody: function () { + // $table.bootstrapTable({ groupBy: false}) if (this.data.length > 0) { - $("td.bs-checkbox").each(function () { - this.disabled = 'true'; - this.style.opacity = 0; - }); + if (!config.MinerUseBestPoolsOnly) { + $("td.bs-checkbox").each(function () { + this.disabled = 'true'; + this.style.opacity = 0; + }); + }; if (config.UseColorForMinerStatus == true) { $(".statuscolor").each(function () { if (this.innerText) $(this).parent('tr').addClass('color-' + this.innerText.toLowerCase()); diff --git a/Web/parts/head - Copy.html b/Web/parts/head - Copy.html deleted file mode 100644 index 488ec211..00000000 --- a/Web/parts/head - Copy.html +++ /dev/null @@ -1,313 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- -
- - \ No newline at end of file diff --git a/Web/parts/head.html b/Web/parts/head.html index 488ec211..b43fea32 100644 --- a/Web/parts/head.html +++ b/Web/parts/head.html @@ -16,7 +16,8 @@ - + + @@ -30,16 +31,20 @@ + - + + + + - - + + - + @@ -53,6 +58,7 @@ + diff --git a/Web/parts/head_1224.html b/Web/parts/head_1224.html deleted file mode 100644 index 9aeee35e..00000000 --- a/Web/parts/head_1224.html +++ /dev/null @@ -1,314 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- -
- - \ No newline at end of file diff --git a/Web/scripts/demo.ps1 b/Web/scripts/demo.ps1 index 3ccbb954..bf944c43 100644 --- a/Web/scripts/demo.ps1 +++ b/Web/scripts/demo.ps1 @@ -18,8 +18,8 @@ along with this program. If not, see . <# Product: UG-Miner File: demo.psm1 -Version: 6.2.11 -Version date: 2024/06/23 +Version: 6.2.12 +Version date: 2024/06/26 #> # Try running this script as: http://localhost:3999/scripts/demo.ps1?message=Hello%20World!