From 89183fe8431a2073a02b3168e0b15718b3111cf4 Mon Sep 17 00:00:00 2001
From: Useless Guru <30080938+UselessGuru@users.noreply.github.com>
Date: Mon, 9 Sep 2024 13:06:25 +0200
Subject: [PATCH] v6.3.2
Changes:
- Keep miners when mininbg is paused
Enhancements:
- Core / Includes.psm1: Function 'Update-DAGdata' can now handle TLS (ProgPowTelestai) data
Fixes:
- Legacy GUI: Miners table not getting cleared when no miners available
Improvements:
- Minor code optimizations
Miner changes:
- TeleMerakiMiner-v1.5.0.ps1
---
Balances/HashCryptos.ps1 | 4 +-
Balances/HiveON.ps1 | 4 +-
Balances/MiningDutch.ps1 | 4 +-
Balances/NiceHash External.ps1 | 4 +-
Balances/NiceHash Internal.ps1 | 4 +-
Balances/ProHashing.ps1 | 4 +-
Balances/ZergPool.ps1 | 4 +-
Balances/Zpool.ps1 | 4 +-
Brains/HashCryptos.ps1 | 4 +-
Brains/MiningDutch.ps1 | 4 +-
Brains/ProHashing.ps1 | 4 +-
Brains/ZPool.ps1 | 4 +-
Brains/ZergPool.ps1 | 4 +-
Changelog.txt | 115 ++-
Data/CoinNames.json | 1 +
Data/CurrencyAlgorithm.json | 1 +
Data/DagData.json | 383 ++++----
Includes/APIServer.psm1 | 4 +-
Includes/BalancesTracker.ps1 | 4 +-
Includes/Core.ps1 | 15 +-
Includes/Dev/CoinNames.ps1 | 35 +
Includes/Dev/DataReader.ps1 | 146 ++++
Includes/Dev/DevAPI.ps1 | 964 +++++++++++++++++++++
Includes/Dev/GetMinerData2.ps1 | 53 ++
Includes/Dev/GetMinerDataRunspace.ps1 | 47 +
Includes/Dev/SSE.ps1 | 23 +
Includes/Downloader.ps1 | 5 +-
Includes/Include.psm1 | 60 +-
Includes/LegacyGUI.ps1 | 522 ++++++-----
Includes/MinerAPIs/BzMiner.ps1 | 4 +-
Includes/MinerAPIs/Ccminer.ps1 | 4 +-
Includes/MinerAPIs/EthMiner.ps1 | 4 +-
Includes/MinerAPIs/FireIce.ps1 | 4 +-
Includes/MinerAPIs/Gminer.ps1 | 4 +-
Includes/MinerAPIs/HellMiner.ps1 | 4 +-
Includes/MinerAPIs/MiniZ.ps1 | 4 +-
Includes/MinerAPIs/NBMiner.ps1 | 4 +-
Includes/MinerAPIs/NanoMiner.ps1 | 4 +-
Includes/MinerAPIs/OneZero.ps1 | 4 +-
Includes/MinerAPIs/Rigel.ps1 | 4 +-
Includes/MinerAPIs/SRBMiner.ps1 | 4 +-
Includes/MinerAPIs/TeamBlackMiner.ps1 | 4 +-
Includes/MinerAPIs/Trex.ps1 | 4 +-
Includes/MinerAPIs/Xgminer.ps1 | 4 +-
Includes/MinerAPIs/XmRig.ps1 | 4 +-
Includes/MinerAPIs/lolMiner.ps1 | 4 +-
Miners/BzMiner-v21.4.0.ps1 | 114 +--
Miners/CcminerAlexis78-v1.5.2.ps1 | 4 +-
Miners/CcminerDyn-v1.0.2.ps1 | 4 +-
Miners/CcminerKlausT-v8.25.ps1 | 4 +-
Miners/CcminerKlausT-v8.26x2.ps1 | 4 +-
Miners/CcminerLyra2z330-v8.21r9.ps1 | 4 +-
Miners/CcminerLyraYesscrypt-v8.21r18v5.ps1 | 4 +-
Miners/CcminerMemeHash-v2.5.5.9.ps1 | 4 +-
Miners/CcminerNeoscryptXaya-v0.2.ps1 | 4 +-
Miners/CcminerVerusCpu-v3.8.3.ps1 | 4 +-
Miners/CcminerVerusGpu-v3.8.3.ps1 | 4 +-
Miners/ClaymoreNeoscrypt-v1.2.ps1 | 4 +-
Miners/CpuMiner-v1.4.ps1 | 4 +-
Miners/CpuMinerAurum-v3.23.1.ps1 | 4 +-
Miners/CryptoDredge-v0.16.0.ps1 | 4 +-
Miners/CryptoDredge-v0.27.0.ps1 | 4 +-
Miners/EthMiner-v0.19.0.18.ps1 | 4 +-
Miners/EvrProgPow-v1p3p0.ps1 | 4 +-
Miners/FrkHashMiner-v1.3.14.ps1 | 4 +-
Miners/GMiner-v2.75.ps1 | 4 +-
Miners/GMiner-v3.44.ps1 | 4 +-
Miners/HellMiner-v0.59.1.ps1 | 4 +-
Miners/JayddeeCpu-v24.4.ps1 | 4 +-
Miners/KawpowMiner-v1.2.4cl.ps1 | 4 +-
Miners/KawpowMiner-v1.2.4cuda.ps1 | 4 +-
Miners/Kudaraidee-v1.2.0a.ps1 | 4 +-
Miners/MeowPowMiner-v2.0.0cl.ps1 | 4 +-
Miners/MeowPowMiner-v2.0.0cuda.ps1 | 4 +-
Miners/MiniZ-v2.4d.ps1 | 4 +-
Miners/NBMiner-v42.3.ps1 | 4 +-
Miners/NSFMiner-v1.3.14.ps1 | 4 +-
Miners/NanoMiner-v3.9.2.ps1 | 4 +-
Miners/Ninjarig-1.0.3.ps1 | 4 +-
Miners/NosuchCpu-v3.8.8.1.ps1 | 4 +-
Miners/OneZeroMiner-v1.3.7.ps1 | 4 +-
Miners/PhoenixMiner-v6.2c.ps1 | 4 +-
Miners/Radiator-v1.0.0.ps1 | 4 +-
Miners/Raptor3umCpu-v2.0.ps1 | 4 +-
Miners/Rigel-v1.18.2.ps1 | 4 +-
Miners/RplantCpu-v5.0.41.ps1 | 4 +-
Miners/RrkzCpu-v4.2.ps1 | 4 +-
Miners/SCCminer-v1.1.0.ps1 | 4 +-
Miners/SRBMinerMulti-v0.9.4.ps1 | 4 +-
Miners/SRBMinerMulti-v2.6.3.ps1 | 4 +-
Miners/SgMinerFancyIX-v0.9.4.ps1 | 4 +-
Miners/Suprminer-v2.31v2.ps1 | 4 +-
Miners/TTMiner-v2024.3.2.ps1 | 4 +-
Miners/TTMiner-v5.0.3.ps1 | 4 +-
Miners/TeamBlackMiner-v2.25.ps1 | 54 +-
Miners/TeamRedMiner-v0.10.21.ps1 | 4 +-
Miners/TeleMerakiMiner-v1.5.0.ps1 | 90 ++
Miners/Trex-v0.26.8.ps1 | 4 +-
Miners/Wildrig-v0.40.8.ps1 | 162 ++--
Miners/XLArig-v5.2.4.ps1 | 4 +-
Miners/XmRig-v6.22.0.3.ps1 | 4 +-
Miners/XmrStak-v2.10.8.ps1 | 4 +-
Miners/ZealotEnemy-v2.6.3.ps1 | 4 +-
Miners/lolMiner-v1.88.ps1 | 4 +-
Pools/HashCryptos.ps1 | 4 +-
Pools/HiveON.ps1 | 4 +-
Pools/MiningDutch.ps1 | 4 +-
Pools/NiceHash.ps1 | 4 +-
Pools/ProHashing.ps1 | 4 +-
Pools/ZPool.ps1 | 4 +-
Pools/ZergPool.ps1 | 4 +-
README.md | 2 +-
UG-Miner.ps1 | 155 ++--
Version.txt | 2 +-
Web/scripts/demo.ps1 | 4 +-
115 files changed, 2447 insertions(+), 878 deletions(-)
create mode 100644 Includes/Dev/CoinNames.ps1
create mode 100644 Includes/Dev/DataReader.ps1
create mode 100644 Includes/Dev/DevAPI.ps1
create mode 100644 Includes/Dev/GetMinerData2.ps1
create mode 100644 Includes/Dev/GetMinerDataRunspace.ps1
create mode 100644 Includes/Dev/SSE.ps1
create mode 100644 Miners/TeleMerakiMiner-v1.5.0.ps1
diff --git a/Balances/HashCryptos.ps1 b/Balances/HashCryptos.ps1
index 30253e79..6cdc5663 100644
--- a/Balances/HashCryptos.ps1
+++ b/Balances/HashCryptos.ps1
@@ -18,8 +18,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
File: \Balances\HashCryptos.ps1
-Version: 6.3.1
-Version date: 2024/09/06
+Version: 6.3.2
+Version date: 2024/09/09
#>
$Name = [String](Get-Item $MyInvocation.MyCommand.Path).BaseName
diff --git a/Balances/HiveON.ps1 b/Balances/HiveON.ps1
index 7c8a18b9..d22c67be 100644
--- a/Balances/HiveON.ps1
+++ b/Balances/HiveON.ps1
@@ -18,8 +18,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
File: \Balances\Hiveon.ps1
-Version: 6.3.1
-Version date: 2024/09/06
+Version: 6.3.2
+Version date: 2024/09/09
#>
$Name = [String](Get-Item $MyInvocation.MyCommand.Path).BaseName
diff --git a/Balances/MiningDutch.ps1 b/Balances/MiningDutch.ps1
index 0b8fdbf0..1f0a0c66 100644
--- a/Balances/MiningDutch.ps1
+++ b/Balances/MiningDutch.ps1
@@ -18,8 +18,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
File: \Balances\MiningDutch.ps1
-Version: 6.3.1
-Version date: 2024/09/06
+Version: 6.3.2
+Version date: 2024/09/09
#>
$Name = [String](Get-Item $MyInvocation.MyCommand.Path).BaseName
diff --git a/Balances/NiceHash External.ps1 b/Balances/NiceHash External.ps1
index 886d7188..634a5f45 100644
--- a/Balances/NiceHash External.ps1
+++ b/Balances/NiceHash External.ps1
@@ -18,8 +18,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
File: \Balances\NiceHash Internal.ps1
-Version: 6.3.1
-Version date: 2024/09/06
+Version: 6.3.2
+Version date: 2024/09/09
#>
$Name = [String](Get-Item $MyInvocation.MyCommand.Path).BaseName
diff --git a/Balances/NiceHash Internal.ps1 b/Balances/NiceHash Internal.ps1
index f37a8282..3ffde3a6 100644
--- a/Balances/NiceHash Internal.ps1
+++ b/Balances/NiceHash Internal.ps1
@@ -18,8 +18,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
File: \Balances\NiceHash Internal.ps1
-Version: 6.3.1
-Version date: 2024/09/06
+Version: 6.3.2
+Version date: 2024/09/09
#>
$Name = [String](Get-Item $MyInvocation.MyCommand.Path).BaseName
diff --git a/Balances/ProHashing.ps1 b/Balances/ProHashing.ps1
index e28b6378..1a56954b 100644
--- a/Balances/ProHashing.ps1
+++ b/Balances/ProHashing.ps1
@@ -18,8 +18,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
File: \Balances\ProHashing.ps1
-Version: 6.3.1
-Version date: 2024/09/06
+Version: 6.3.2
+Version date: 2024/09/09
#>
$Name = [String](Get-Item $MyInvocation.MyCommand.Path).BaseName
diff --git a/Balances/ZergPool.ps1 b/Balances/ZergPool.ps1
index a7d3bfc7..5c7b336f 100644
--- a/Balances/ZergPool.ps1
+++ b/Balances/ZergPool.ps1
@@ -18,8 +18,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
File: \Balances\ZergPool.ps1
-Version: 6.3.1
-Version date: 2024/09/06
+Version: 6.3.2
+Version date: 2024/09/09
#>
$Name = [String](Get-Item $MyInvocation.MyCommand.Path).BaseName
diff --git a/Balances/Zpool.ps1 b/Balances/Zpool.ps1
index 8ba4020e..5396d7a9 100644
--- a/Balances/Zpool.ps1
+++ b/Balances/Zpool.ps1
@@ -18,8 +18,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
File: \Balances\Zpool.ps1
-Version: 6.3.1
-Version date: 2024/09/06
+Version: 6.3.2
+Version date: 2024/09/09
#>
$Name = [String](Get-Item $MyInvocation.MyCommand.Path).BaseName
diff --git a/Brains/HashCryptos.ps1 b/Brains/HashCryptos.ps1
index 5e359b8c..da21f31c 100644
--- a/Brains/HashCryptos.ps1
+++ b/Brains/HashCryptos.ps1
@@ -19,8 +19,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
File: \Brains\MiningDutch.ps1
-Version: 6.3.1
-Version date: 2024/09/06
+Version: 6.3.2
+Version date: 2024/09/09
#>
using module ..\Includes\Include.psm1
diff --git a/Brains/MiningDutch.ps1 b/Brains/MiningDutch.ps1
index 5b287545..e49f8391 100644
--- a/Brains/MiningDutch.ps1
+++ b/Brains/MiningDutch.ps1
@@ -19,8 +19,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
File: \Brains\MiningDutch.ps1
-Version: 6.3.1
-Version date: 2024/09/06
+Version: 6.3.2
+Version date: 2024/09/09
#>
using module ..\Includes\Include.psm1
diff --git a/Brains/ProHashing.ps1 b/Brains/ProHashing.ps1
index 308b1690..332d3dcd 100644
--- a/Brains/ProHashing.ps1
+++ b/Brains/ProHashing.ps1
@@ -19,8 +19,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
File: \Brains\ProHashing.ps1
-Version: 6.3.1
-Version date: 2024/09/06
+Version: 6.3.2
+Version date: 2024/09/09
#>
using module ..\Includes\Include.psm1
diff --git a/Brains/ZPool.ps1 b/Brains/ZPool.ps1
index 0cee9147..87a2848e 100644
--- a/Brains/ZPool.ps1
+++ b/Brains/ZPool.ps1
@@ -19,8 +19,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
File: \Brains\ZPool.ps1
-Version: 6.3.1
-Version date: 2024/09/06
+Version: 6.3.2
+Version date: 2024/09/09
#>
using module ..\Includes\Include.psm1
diff --git a/Brains/ZergPool.ps1 b/Brains/ZergPool.ps1
index b5dea1ec..677eade0 100644
--- a/Brains/ZergPool.ps1
+++ b/Brains/ZergPool.ps1
@@ -19,8 +19,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
File: \Brains\ZergPool.ps1
-Version: 6.3.1
-Version date: 2024/09/06
+Version: 6.3.2
+Version date: 2024/09/09
#>
using module ..\Includes\Include.psm1
diff --git a/Changelog.txt b/Changelog.txt
index 642ab197..1f55062a 100644
--- a/Changelog.txt
+++ b/Changelog.txt
@@ -3,6 +3,44 @@ Known issues:
- UG-Miner has issues with new Windows Terminal when the default terminal application is set to 'Let windows decide' or 'Windows Terminal'.
-> It is recommended to set it to 'Windows Console Host'
+
+Changelog UG-Miner 6.3.2 2024/09/09
+===================================
+
+Changes:
+- Keep miners when paused
+
+Enhancements:
+- Core / Includes.psm1: Function 'Update-DAGdata' can now handle TLS (ProgPowTelestai) data
+
+Fixes:
+- Legacy GUI: Miners table not getting cleared when no miners available
+
+Improvements:
+- Minor code optimizations
+
+Miner changes:
+- TeleMerakiMiner-v1.5.0.ps1
+
+
+Changelog UG-Miner 6.3.1 2024/09/06
+===================================
+
+Enhancements
+- Core / Includes.psm1: Function 'Update-DAGdata' can now handle BLOCX (SCCpow) data
+- Legacy GUI / Miners: Do not update tables when data is selected
+- Legacy GUI / Switching log: Do not reset check boxes on each data update
+
+Improvements:
+- Minor code optimizations
+
+Miner fixes + updates:
+- BzMiner API: Fix incomplete samples
+- Rigel-v1.18.2
+- SRBMinerMulti-v2.6.3
+- XmRig-v6.22.0.3: Faster benchmarking for some CPU algorithms (no more benchmarking all algorithms before mining)
+
+
Changelog UG-Miner 6.3.0 2024/09/01
===================================
@@ -56,13 +94,13 @@ Miner updates:
Changelog UG-Miner 6.2.27 2024/08/18
====================================
-Enhancements:
-- Core: Remove obsolete code & minor code optimizations
-
Fixes:
- Correct typo in UG-Miner.ps1
- APIserver.psm1: Do not print full path in log
+Improvements:
+- Core: Remove obsolete code & minor code optimizations
+
Changelog UG-Miner 6.2.26 2024/08/16
====================================
@@ -72,22 +110,22 @@ Changes:
- Renamed configuration item 'MainCurrency' to 'FIATcurrency'. Configuration file will get updated automatically during update.
- Web GUI / Configuration editor: Change pool selection logic. Can only select pool when prerequisites are met
-Enhancements:
-- Core: Remove obsolete code & minor code optimizations
-
Fixes:
- Core: 'Error in file 'Includes\Core.ps1' line 291' (Regression from 6.2.25)
+Improvements:
+- Core: Remove obsolete code & minor code optimizations
+
Changelog UG-Miner 6.2.25 2024/08/13
====================================
-Enhancements:
-- Core: Remove obsolete code & minor code optimizations
-
Fixed:
- Pool 'Miningdutch': Payout threshold 1000x too low
+Improvements:
+- Core: Remove obsolete code & minor code optimizations
+
Changelog UG-Miner 6.2.24 2024/08/10
====================================
@@ -97,6 +135,8 @@ Changes:
Enhancements:
- Core: Check if there is already another instance running and show error message
+
+Improvements:
- Core: Remove obsolete code & minor code optimizations
Miner changes:
@@ -110,14 +150,14 @@ Changelog UG-Miner 6.2.23 2024/08/04
Changes:
- Rework 'README.md'
-Enhancements:
-- Core: Remove obsolete code & minor code optimizations
-- Miners: Minor code optimizations when reading miner objects
-
Fixes:
- Core: Miners not getting stopped when idle detection stops mining
- Web GUI: Watchdog timer table not getting cleared when no watchdog timers exist
+Improvements:
+- Core: Remove obsolete code & minor code optimizations
+- Miners: Minor code optimizations when reading miner objects
+
Miner changes:
- SRBMinerMulti-v2.6.0
@@ -125,7 +165,7 @@ Miner changes:
Changelog UG-Miner 6.2.22 2024/08/01
====================================
-Enhancements:
+Improvements:
- Core: Remove obsolete code & minor code optimizations
Miner changes:
@@ -141,11 +181,13 @@ Changes:
Enhancements:
- API: Added url for '/cpufeatures'
-- Core: Minor code optimizations
Fixes:
- Core: Not starting benchmarking when triggered through GUI (regression from 6.2.20)
+Improvements:
+- Core: Minor code optimizations
+
Miner changes:
- ClaymoreNeoscrypt-v1.2 (fix download link)
- Kudaraidee-v1.2.0a (fix download link)
@@ -162,6 +204,8 @@ Changes:
Enhancements:
- API: Added urls for '/miners/missingbinary', '/miners/missingfirewallrule' & '/miners/missingpprerequisite'
- Core: Mark miner as 'unavailable' when firewall rule is missing
+
+Improvements:
- Core: Minor code optimizations
Miner updates:
@@ -191,9 +235,6 @@ Miner updates:
Changelog UG-Miner 6.2.18 2024/07/19
====================================
-Enhancements:
-- Core: Minor code optimizations
-
Fixes:
- Web GUI / Configuration editor: Incorrect ProHashing registration link
- Web GUI / Switching log: Incorrect background color for stopped miners
@@ -201,6 +242,7 @@ Fixes:
Improvements:
- Core: No more unnecessary queries for DAG data when switching to donation run
- Core: Optimize number of queries for rates update
+- Core: Minor code optimizations
Changelog UG-Miner 6.2.17 2024/07/13
@@ -212,17 +254,17 @@ Changes:
Enhancements:
- Core: Add support for algorithms with static DAG size
- Core: Faster startup
-- Core / Includes.psm1: Minor code optimizations
Fixes:
- Core: Error when request to pen firewall ports is declined ('Error in file 'Includes\Core.ps1' line 1001 detected. Restarting core...')
- Core: Watchdog timeout message incorrect (regression from 6.2.5)
- Core / Includes.psm1: Function 'Get-DAGdata' returning incorrect DAG size for IRON
- CPU Miners broken (regression from 6.2.16)
-
-Fixes:
- HiveOn balances querying for unsupported BTC balance
+Improvements:
+- Core / Includes.psm1: Minor code optimizations
+
Miner changes:
- ClaymoreDualME-v2.7.ps1 (removed - would only work with Nvidia drivers older than 20.12.1)
- OneZeroMiner-v1.3.6
@@ -248,7 +290,6 @@ Changelog UG-Miner 6.2.15 2024/07/07
====================================
Enhancements:
-- Core: Minor code optimizations
- Legacy GUI: Always select full table rows
- Miners: Remove miners that are incompatible with RTX306012GB
@@ -257,6 +298,9 @@ Fixes:
- Legacy GUI: Incorrect watchdog count message when no corresponding pool watchdog exists
- Web GUI / 'Earnings and Balances': Zergpool balances wallet link incorrect
+Improvements:
+- Core: Minor code optimizations
+
Miner updatwes:
- OneZeroMiner-v1.3.7
@@ -275,14 +319,14 @@ Miner changes:
Changelog UG-Miner 6.2.13 2024/06/30
====================================
-Enhancements:
-- Core: Minor code optimizations
-
Fixes
- Core / Includes.psm1: Functions 'Show-Console' & 'Hide-Console' broken (regression from 6.2.10)
- Core / Includes.psm1: Function 'Write-Config' temporarily removed 'PoolsConfig' property
- Legacy GUI: 'Miners' tab sort order incorrect
+Improvements:
+- Core: Minor code optimizations
+
Miner updates:
- BzMiner-v21.3.0
- ZealotEnemy-v2.6.2 (removed - would only work with Nvidia drivers older than 445.*)
@@ -291,20 +335,17 @@ Miner updates:
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)
+Improvements:
+- Core: Minor code optimizations
Changelog UG-Miner 6.2.11 2024/06/23
====================================
Enhancements:
-- Core: Minor code optimizations
-- Core: Faster watchdog processing, only one watchdog reason per pool or miner
- Core / Includes.psm1: 'Get-Device' Ignore devices with negative PCIbus
Fixes:
@@ -312,6 +353,10 @@ Fixes:
- Legacy GUI: Not saving windows size and position (regression from 6.2.9)
- ZergPool balances tracker not working
+Improvements:
+- Core: Minor code optimizations
+- Core: Faster watchdog processing, only one watchdog reason per pool or miner
+
Miner updates:
- RplantCpu-v5.0.40
@@ -338,7 +383,6 @@ Changelog UG-Miner 6.2.9 2024/06/13
Enhancements:
- API: Add '/pools/expired' data
-- Core: Minor code optimizations when reading miner objects
- Miners: Comment out obsolete code for better speed
Fixes:
@@ -346,6 +390,9 @@ Fixes:
- TTMiner-v2024.2.0: Incorrect command line (double -p)
- Web GUI: Right mouse button context actions for miners broken
+Improvements:
+- Core: Minor code optimizations when reading miner objects
+
Miner changes:
- lolMiner-v1.88
- MeowPowMiner-v2.0.0
@@ -786,7 +833,6 @@ Changelog UG-Miner 6.0.1 2024/01/05
Changes:
- Fix typos
- Minimize memory leak
-- Minor code optimizations
Enhancements:
- Includes.psm1 / Update-DAGdata: Do not query 'evr.cryptoscope.io' unless needed
@@ -796,6 +842,9 @@ Fixes:
- Brains: No pool data for 'ZergPoolCoins24hr'
- Core: 'UnrealPoolPriceFactor' not excluding NiceHash & MiningPoolHub (their prices are always right)
+Improvements:
+- Minor code optimizations
+
Miner changes:
- BzMiner-v19.2.1
@@ -807,4 +856,4 @@ Web GUI:
Changelog UG-Miner 6.0.0 2024/01/01
===================================
-Initial release.
\ No newline at end of file
+Initial 6.x.x release.
\ No newline at end of file
diff --git a/Data/CoinNames.json b/Data/CoinNames.json
index ba6196e7..a1e17b7a 100644
--- a/Data/CoinNames.json
+++ b/Data/CoinNames.json
@@ -190,6 +190,7 @@
"TAFT": "Cointaft",
"TAJ": "Taj",
"TDC": "Tide",
+ "TLS": "Telestai",
"TRC": "Terra",
"TZC": "Trezar",
"UFO": "Ufo",
diff --git a/Data/CurrencyAlgorithm.json b/Data/CurrencyAlgorithm.json
index e402d043..5840105e 100644
--- a/Data/CurrencyAlgorithm.json
+++ b/Data/CurrencyAlgorithm.json
@@ -346,6 +346,7 @@
"TDC": "YespowerTide",
"TIT": "SHA256",
"TLR": "Lyra2Z",
+ "TLS": "ProgPowTelestai",
"TMC": "Scrypt",
"TNET": "Blake2b",
"TRC": "SHA256",
diff --git a/Data/DagData.json b/Data/DagData.json
index 88590e84..2b13d35b 100644
--- a/Data/DagData.json
+++ b/Data/DagData.json
@@ -1,104 +1,154 @@
{
"Algorithm": {
"Autolykos2": {
- "BlockHeight": 1346074,
+ "BlockHeight": 1348322,
"CoinName": [
+ "Ergo"
+ ],
+ "Currency": [
"ERG"
],
"DAGsize": 4324915245,
- "Epoch": 909
+ "Epoch": 911
},
"EtcHash": {
- "BlockHeight": 20632761,
+ "BlockHeight": 20653065,
"CoinName": [
+ "EthereumClassic"
+ ],
+ "Currency": [
"ETC"
],
- "DAGsize": 3967809152,
- "Epoch": 345
+ "DAGsize": 3976200064,
+ "Epoch": 346
},
"Ethash": {
- "BlockHeight": 20217801,
+ "BlockHeight": 20238354,
"CoinName": [
+ "EthereumPow"
+ ],
+ "Currency": [
"ETHW"
],
- "DAGsize": 6736052096,
- "Epoch": 675
+ "DAGsize": 6744437632,
+ "Epoch": 676
},
"EthashB3": {
- "BlockHeight": 4095782,
+ "BlockHeight": 4125975,
"CoinName": [
+ "Hypra"
+ ],
+ "Currency": [
"HYP"
],
- "DAGsize": 2231367808,
- "Epoch": 138
+ "DAGsize": 2239758208,
+ "Epoch": 139
},
"EvrProgPow": {
- "BlockHeight": 967536,
+ "BlockHeight": 972002,
"CoinName": [
+ "Evrmore"
+ ],
+ "Currency": [
"EVR"
],
- "DAGsize": 3909087872,
- "Epoch": 82
+ "DAGsize": 3917478784,
+ "Epoch": 83
},
"FiroPow": {
- "BlockHeight": 952867,
+ "BlockHeight": 954716,
"CoinName": [
+ "Firo"
+ ],
+ "Currency": [
"FIRO"
],
- "DAGsize": 7230975104,
- "Epoch": 734
+ "DAGsize": 7247755904,
+ "Epoch": 736
},
"FishHash": {
- "BlockHeight": 729443,
+ "BlockHeight": 733975,
"CoinName": [
+ "Ironfish"
+ ],
+ "Currency": [
"IRON"
],
"DAGsize": 4831838208,
"Epoch": 448
},
"KawPow": {
- "BlockHeight": 3485984,
+ "BlockHeight": 3490471,
"CoinName": [
+ "Raven"
+ ],
+ "Currency": [
"RVN"
],
- "DAGsize": 4982831488,
- "Epoch": 466
+ "DAGsize": 4991221376,
+ "Epoch": 467
},
"MeowPow": {
"BlockHeight": 971453,
"CoinName": [
+ "Meow"
+ ],
+ "Currency": [
"MEWC"
],
"DAGsize": 5469367936,
"Epoch": 131
},
"Octopus": {
- "BlockHeight": 104054088,
+ "BlockHeight": 104295348,
"CoinName": [
+ "Conflux"
+ ],
+ "Currency": [
"CFX"
],
"DAGsize": 7650409216,
"Epoch": 200
},
"ProgPowSero": {
- "BlockHeight": 13380737,
+ "BlockHeight": 13401508,
"CoinName": [
+ "Sero"
+ ],
+ "Currency": [
"SERO"
],
"DAGsize": 4831835776,
"Epoch": 448
},
+ "ProgPowTelestai": {
+ "BlockHeight": 53124,
+ "CoinName": [
+ "Telestai"
+ ],
+ "Currency": [
+ "TLS"
+ ],
+ "DAGsize": 1124070016,
+ "Epoch": 6
+ },
"ProgPowZ": {
- "BlockHeight": 2797873,
+ "BlockHeight": 2802349,
"CoinName": [
+ "Zano"
+ ],
+ "Currency": [
"ZANO"
],
"DAGsize": 1870656896,
"Epoch": 95
},
"SCCpow": {
- "BlockHeight": 981993,
+ "BlockHeight": 984284,
"CoinName": [
+ "StakeCubeCoin"
+ ],
+ "Currency": [
"SCC"
],
"DAGsize": 3632265856,
@@ -106,7 +156,8 @@
},
"UbqHash": {
"BlockHeight": 5517628,
- "CoinName": [
+ "CoinName": [],
+ "Currency": [
"UBQ"
],
"DAGsize": 2625631616,
@@ -123,36 +174,36 @@
},
"Currency": {
"*": {
- "BlockHeight": 104054088,
- "CoinName": "*",
+ "BlockHeight": 104295348,
+ "Currency": "*",
"DAGsize": 7650409216,
- "Epoch": 909
+ "Epoch": 911
},
"AIDP": {
"Algorithm": "KawPow",
- "BlockHeight": 190027,
+ "BlockHeight": 194511,
"CoinName": "AiDepin",
"DAGsize": 1300234112,
- "Date": "2024-09-06T05:41:48.6973504Z",
+ "Date": "2024-09-09T09:08:37.174842Z",
"Epoch": 27,
"Url": "https://whattomine.com/coins.json"
},
"AIPG": {
"Algorithm": "KawPow",
- "BlockHeight": 388924,
+ "BlockHeight": 393431,
"CoinName": "Aipowergrid",
- "DAGsize": 1518337664,
- "Date": "2024-09-06T05:41:48.7293277Z",
- "Epoch": 53,
+ "DAGsize": 1526726528,
+ "Date": "2024-09-09T09:08:37.2038471Z",
+ "Epoch": 54,
"Url": "https://whattomine.com/coins.json"
},
"AITT": {
"Algorithm": "KawPow",
- "BlockHeight": 1073187,
+ "BlockHeight": 1091170,
"CoinName": "AittCoin",
- "DAGsize": 2290086272,
- "Date": "2024-09-06T05:41:48.7376425Z",
- "Epoch": 145,
+ "DAGsize": 2306867072,
+ "Date": "2024-09-09T09:08:37.2106Z",
+ "Epoch": 147,
"Url": "https://whattomine.com/coins.json"
},
"AKA": {
@@ -160,7 +211,7 @@
"BlockHeight": 11735607,
"CoinName": "",
"DAGsize": 4370458496,
- "Date": "2024-09-06T05:41:48.8787668Z",
+ "Date": "2024-09-09T09:08:37.4429227Z",
"Epoch": 393,
"Url": "https://minerstat.com/dag-size-calculator"
},
@@ -175,11 +226,11 @@
},
"ANOK": {
"Algorithm": "KawPow",
- "BlockHeight": 221397,
+ "BlockHeight": 225390,
"CoinName": "Anokas",
- "DAGsize": 1333787776,
- "Date": "2024-09-06T05:41:48.575364Z",
- "Epoch": 31,
+ "DAGsize": 1342176128,
+ "Date": "2024-09-09T09:08:37.1676929Z",
+ "Epoch": 32,
"Url": "https://whattomine.com/coins.json"
},
"AVS": {
@@ -193,37 +244,37 @@
},
"BLOCX": {
"Algorithm": "Autolykos2",
- "BlockHeight": 287999,
+ "BlockHeight": 292313,
"CoinName": "Blocx",
"DAGsize": 2147483648,
- "Date": "2024-09-06T05:41:50.4716956Z",
+ "Date": "2024-09-09T09:08:39.1224946Z",
"Epoch": 0,
"Url": "https://api-explorer.blocxscan.com/api/getblockcount"
},
"BTN": {
"Algorithm": "Ethash",
- "BlockHeight": 2819364,
+ "BlockHeight": 2840378,
"CoinName": "BitnetBtn",
- "DAGsize": 1870656896,
- "Date": "2024-09-06T05:41:48.7640476Z",
- "Epoch": 95,
+ "DAGsize": 1879048064,
+ "Date": "2024-09-09T09:08:37.2346526Z",
+ "Epoch": 96,
"Url": "https://whattomine.com/coins.json"
},
"CAU": {
"Algorithm": "Ethash",
- "BlockHeight": 5169884,
+ "BlockHeight": 5212995,
"CoinName": "",
- "DAGsize": 2533359232,
- "Date": "2024-09-06T05:41:48.8969138Z",
- "Epoch": 174,
+ "DAGsize": 2541743488,
+ "Date": "2024-09-09T09:08:37.4576536Z",
+ "Epoch": 175,
"Url": "https://minerstat.com/dag-size-calculator"
},
"CFX": {
"Algorithm": "Octopus",
- "BlockHeight": 104054088,
+ "BlockHeight": 104295348,
"CoinName": "Conflux",
"DAGsize": 7650409216,
- "Date": "2024-09-06T05:41:50.1318861Z",
+ "Date": "2024-09-09T09:08:38.6549038Z",
"Epoch": 200,
"Url": "https://prohashing.com/api/v1/currencies"
},
@@ -238,11 +289,11 @@
},
"CLORE": {
"Algorithm": "KawPow",
- "BlockHeight": 910842,
+ "BlockHeight": 915333,
"CoinName": "Clore",
- "DAGsize": 2105539712,
- "Date": "2024-09-06T05:41:48.708442Z",
- "Epoch": 123,
+ "DAGsize": 2113928576,
+ "Date": "2024-09-09T09:08:37.1773401Z",
+ "Epoch": 124,
"Url": "https://whattomine.com/coins.json"
},
"CMS": {
@@ -256,37 +307,37 @@
},
"DINT": {
"Algorithm": "KawPow",
- "BlockHeight": 391389,
+ "BlockHeight": 395702,
"CoinName": "Dinartether",
"DAGsize": 1526726528,
- "Date": "2024-09-06T05:41:48.9458965Z",
+ "Date": "2024-09-09T09:08:37.469751Z",
"Epoch": 54,
"Url": "https://minerstat.com/dag-size-calculator"
},
"DOGETHER": {
"Algorithm": "Ethash",
- "BlockHeight": 1289335,
+ "BlockHeight": 1304421,
"CoinName": "Dogether",
- "DAGsize": 1442839168,
- "Date": "2024-09-06T05:41:48.7552807Z",
- "Epoch": 44,
+ "DAGsize": 1451229056,
+ "Date": "2024-09-09T09:08:37.2361612Z",
+ "Epoch": 45,
"Url": "https://whattomine.com/coins.json"
},
"EGAZ": {
"Algorithm": "EtcHash",
- "BlockHeight": 5845905,
+ "BlockHeight": 5867154,
"CoinName": "Etica",
- "DAGsize": 2717907328,
- "Date": "2024-09-06T05:41:48.7508232Z",
- "Epoch": 196,
+ "DAGsize": 2726293376,
+ "Date": "2024-09-09T09:08:37.2297158Z",
+ "Epoch": 197,
"Url": "https://whattomine.com/coins.json"
},
"EGEM": {
"Algorithm": "Ethash",
- "BlockHeight": 16352389,
+ "BlockHeight": 16374676,
"CoinName": "EtherGem",
"DAGsize": 5662310272,
- "Date": "2024-09-06T05:41:48.7325244Z",
+ "Date": "2024-09-09T09:08:37.2378386Z",
"Epoch": 547,
"Url": "https://whattomine.com/coins.json"
},
@@ -301,11 +352,11 @@
},
"ERG": {
"Algorithm": "Autolykos2",
- "BlockHeight": 1346074,
+ "BlockHeight": 1348322,
"CoinName": "Ergo",
"DAGsize": 4324915245,
- "Date": "2024-09-06T05:41:50.1244493Z",
- "Epoch": 909,
+ "Date": "2024-09-09T09:08:38.6505666Z",
+ "Epoch": 911,
"Url": "https://prohashing.com/api/v1/currencies"
},
"ESN": {
@@ -313,17 +364,17 @@
"BlockHeight": 6408009,
"CoinName": "EtherSocial",
"DAGsize": 2877286784,
- "Date": "2024-09-06T05:41:48.891901Z",
+ "Date": "2024-09-09T09:08:37.4494186Z",
"Epoch": 215,
"Url": "https://minerstat.com/dag-size-calculator"
},
"ETC": {
"Algorithm": "EtcHash",
- "BlockHeight": 20632761,
+ "BlockHeight": 20653065,
"CoinName": "EthereumClassic",
- "DAGsize": 3967809152,
- "Date": "2024-09-06T05:41:50.1336161Z",
- "Epoch": 345,
+ "DAGsize": 3976200064,
+ "Date": "2024-09-09T09:08:38.6581056Z",
+ "Epoch": 346,
"Url": "https://prohashing.com/api/v1/currencies"
},
"ETHF": {
@@ -346,11 +397,11 @@
},
"ETHW": {
"Algorithm": "Ethash",
- "BlockHeight": 20217801,
+ "BlockHeight": 20238354,
"CoinName": "EthereumPow",
- "DAGsize": 6736052096,
- "Date": "2024-09-06T05:41:50.1253363Z",
- "Epoch": 675,
+ "DAGsize": 6744437632,
+ "Date": "2024-09-09T09:08:38.652185Z",
+ "Epoch": 676,
"Url": "https://prohashing.com/api/v1/currencies"
},
"ETNT": {
@@ -364,20 +415,20 @@
},
"ETP": {
"Algorithm": "Ethash",
- "BlockHeight": 9934729,
+ "BlockHeight": 9947323,
"CoinName": "",
"DAGsize": 3867147904,
- "Date": "2024-09-06T05:41:48.8807106Z",
+ "Date": "2024-09-09T09:08:37.4446214Z",
"Epoch": 333,
"Url": "https://minerstat.com/dag-size-calculator"
},
"EVR": {
"Algorithm": "EvrProgPow",
- "BlockHeight": 967536,
+ "BlockHeight": 972002,
"CoinName": "Evrmore",
- "DAGsize": 3909087872,
- "Date": "2024-09-06T05:41:50.6317224Z",
- "Epoch": 82,
+ "DAGsize": 3917478784,
+ "Date": "2024-09-09T09:08:39.3608337Z",
+ "Epoch": 83,
"Url": "https://evr.cryptoscope.io/api/getblockcount"
},
"EXP": {
@@ -391,11 +442,11 @@
},
"FIRO": {
"Algorithm": "FiroPow",
- "BlockHeight": 952867,
+ "BlockHeight": 954716,
"CoinName": "Firo",
- "DAGsize": 7230975104,
- "Date": "2024-09-06T05:41:48.7059181Z",
- "Epoch": 734,
+ "DAGsize": 7247755904,
+ "Date": "2024-09-09T09:08:37.1973912Z",
+ "Epoch": 736,
"Url": "https://whattomine.com/coins.json"
},
"FLORA": {
@@ -403,17 +454,17 @@
"BlockHeight": 789635,
"CoinName": "",
"DAGsize": 1308619904,
- "Date": "2024-09-06T05:41:48.9587404Z",
+ "Date": "2024-09-09T09:08:37.4853757Z",
"Epoch": 28,
"Url": "https://minerstat.com/dag-size-calculator"
},
"FREN": {
"Algorithm": "KawPow",
- "BlockHeight": 1392500,
+ "BlockHeight": 1401499,
"CoinName": "Fren",
- "DAGsize": 2642407552,
- "Date": "2024-09-06T05:41:48.735113Z",
- "Epoch": 187,
+ "DAGsize": 2650796416,
+ "Date": "2024-09-09T09:08:37.2057543Z",
+ "Epoch": 188,
"Url": "https://whattomine.com/coins.json"
},
"GPN": {
@@ -436,38 +487,38 @@
},
"HYP": {
"Algorithm": "EthashB3",
- "BlockHeight": 4095782,
+ "BlockHeight": 4125975,
"CoinName": "Hypra",
- "DAGsize": 2231367808,
- "Date": "2024-09-06T05:41:48.7466296Z",
- "Epoch": 138,
+ "DAGsize": 2239758208,
+ "Date": "2024-09-09T09:08:37.2089725Z",
+ "Epoch": 139,
"Url": "https://whattomine.com/coins.json"
},
"IRON": {
"Algorithm": "FishHash",
- "BlockHeight": 729443,
+ "BlockHeight": 733975,
"CoinName": "Ironfish",
"DAGsize": 4831838208,
- "Date": "2024-09-06T05:41:48.7219078Z",
+ "Date": "2024-09-09T09:08:37.1814826Z",
"Epoch": 448,
"Url": "https://whattomine.com/coins.json"
},
"KIIRO": {
"Algorithm": "FiroPow",
- "BlockHeight": 237735,
+ "BlockHeight": 239617,
"CoinName": "KiiroCoin",
- "DAGsize": 2617240448,
- "Date": "2024-09-06T05:41:48.7174617Z",
- "Epoch": 184,
+ "DAGsize": 2634022016,
+ "Date": "2024-09-09T09:08:37.2012747Z",
+ "Epoch": 186,
"Url": "https://whattomine.com/coins.json"
},
"LRS": {
"Algorithm": "Ethash",
- "BlockHeight": 1589545,
+ "BlockHeight": 1610406,
"CoinName": "Larissa",
- "DAGsize": 1526726528,
- "Date": "2024-09-06T05:41:48.7614247Z",
- "Epoch": 54,
+ "DAGsize": 1535114624,
+ "Date": "2024-09-09T09:08:37.2331199Z",
+ "Epoch": 55,
"Url": "https://whattomine.com/coins.json"
},
"META": {
@@ -490,37 +541,37 @@
},
"MOAC": {
"Algorithm": "Ethash",
- "BlockHeight": 14215352,
+ "BlockHeight": 14231090,
"CoinName": "",
- "DAGsize": 5058329728,
- "Date": "2024-09-06T05:41:48.876046Z",
- "Epoch": 475,
+ "DAGsize": 5066717056,
+ "Date": "2024-09-09T09:08:37.4403104Z",
+ "Epoch": 476,
"Url": "https://minerstat.com/dag-size-calculator"
},
"NEOX": {
"Algorithm": "KawPow",
- "BlockHeight": 1204049,
+ "BlockHeight": 1208531,
"CoinName": "Neoxa",
- "DAGsize": 2432695424,
- "Date": "2024-09-06T05:41:48.699174Z",
- "Epoch": 162,
+ "DAGsize": 2441084288,
+ "Date": "2024-09-09T09:08:37.1791087Z",
+ "Epoch": 163,
"Url": "https://whattomine.com/coins.json"
},
"NILU": {
"Algorithm": "Ethash",
- "BlockHeight": 6244789,
+ "BlockHeight": 6244798,
"CoinName": "",
"DAGsize": 2835349376,
- "Date": "2024-09-06T05:41:48.8932539Z",
+ "Date": "2024-09-09T09:08:37.4507895Z",
"Epoch": 210,
"Url": "https://minerstat.com/dag-size-calculator"
},
"NIR": {
"Algorithm": "ProgPowZ",
- "BlockHeight": 670299,
+ "BlockHeight": 679379,
"CoinName": "Nirmata",
"DAGsize": 1275067264,
- "Date": "2024-09-06T05:41:48.7031151Z",
+ "Date": "2024-09-09T09:08:37.1937781Z",
"Epoch": 24,
"Url": "https://whattomine.com/coins.json"
},
@@ -529,26 +580,26 @@
"BlockHeight": 8848535,
"CoinName": "",
"DAGsize": 3556763264,
- "Date": "2024-09-06T05:41:48.8893735Z",
+ "Date": "2024-09-09T09:08:37.4471028Z",
"Epoch": 296,
"Url": "https://minerstat.com/dag-size-calculator"
},
"OCTA": {
"Algorithm": "Ethash",
- "BlockHeight": 5407821,
+ "BlockHeight": 5428710,
"CoinName": "Octaspace",
"DAGsize": 2600467328,
- "Date": "2024-09-06T05:41:48.7598708Z",
+ "Date": "2024-09-09T09:08:37.2315443Z",
"Epoch": 182,
"Url": "https://whattomine.com/coins.json"
},
"PAPRY": {
"Algorithm": "KawPow",
- "BlockHeight": 808117,
+ "BlockHeight": 812613,
"CoinName": "Paprika",
- "DAGsize": 1988093056,
- "Date": "2024-09-06T05:41:48.930494Z",
- "Epoch": 109,
+ "DAGsize": 1996487552,
+ "Date": "2024-09-09T09:08:37.4670885Z",
+ "Epoch": 110,
"Url": "https://minerstat.com/dag-size-calculator"
},
"PGC": {
@@ -571,11 +622,11 @@
},
"QKC": {
"Algorithm": "Ethash",
- "BlockHeight": 17233855,
+ "BlockHeight": 17261639,
"CoinName": "Quarkchain",
- "DAGsize": 5905576832,
- "Date": "2024-09-06T05:41:48.7535424Z",
- "Epoch": 576,
+ "DAGsize": 5913966976,
+ "Date": "2024-09-09T09:08:37.2399882Z",
+ "Epoch": 577,
"Url": "https://whattomine.com/coins.json"
},
"REDEV2": {
@@ -598,37 +649,37 @@
},
"RVN": {
"Algorithm": "KawPow",
- "BlockHeight": 3485984,
+ "BlockHeight": 3490471,
"CoinName": "Raven",
- "DAGsize": 4982831488,
- "Date": "2024-09-06T05:41:50.1304314Z",
- "Epoch": 466,
+ "DAGsize": 4991221376,
+ "Date": "2024-09-09T09:08:38.6533983Z",
+ "Epoch": 467,
"Url": "https://prohashing.com/api/v1/currencies"
},
"SATOX": {
"Algorithm": "KawPow",
- "BlockHeight": 859331,
+ "BlockHeight": 863804,
"CoinName": "Sato",
- "DAGsize": 2046819968,
- "Date": "2024-09-06T05:41:48.7272844Z",
- "Epoch": 116,
+ "DAGsize": 2055208576,
+ "Date": "2024-09-09T09:08:37.1955167Z",
+ "Epoch": 117,
"Url": "https://whattomine.com/coins.json"
},
"SCC": {
"Algorithm": "SCCpow",
- "BlockHeight": 981993,
+ "BlockHeight": 984284,
"CoinName": "StakeCubeCoin",
"DAGsize": 3632265856,
- "Date": "2024-09-06T05:41:50.3191608Z",
+ "Date": "2024-09-09T09:08:38.9725083Z",
"Epoch": 305,
"Url": "https://scc.ccore.online/api/getblockcount"
},
"SERO": {
"Algorithm": "ProgPowSero",
- "BlockHeight": 13380737,
+ "BlockHeight": 13401508,
"CoinName": "Sero",
"DAGsize": 4831835776,
- "Date": "2024-09-06T05:41:48.5667143Z",
+ "Date": "2024-09-09T09:08:37.171033Z",
"Epoch": 448,
"Url": "https://whattomine.com/coins.json"
},
@@ -641,12 +692,21 @@
"Epoch": 3,
"Url": "https://zergpool.com/api/currencies"
},
+ "TLS": {
+ "Algorithm": "ProgPowTelestai",
+ "BlockHeight": 53124,
+ "CoinName": "Telestai",
+ "DAGsize": 1124070016,
+ "Date": "2024-09-09T09:08:38.8138288Z",
+ "Epoch": 6,
+ "Url": "https://telestai.cryptoscope.io/api/getblockcount/"
+ },
"UBQ": {
"Algorithm": "UbqHash",
"BlockHeight": 5517628,
"CoinName": "",
"DAGsize": 2625631616,
- "Date": "2024-09-06T05:41:48.8954425Z",
+ "Date": "2024-09-09T09:08:37.4528073Z",
"Epoch": 185,
"Url": "https://minerstat.com/dag-size-calculator"
},
@@ -661,11 +721,11 @@
},
"XNA": {
"Algorithm": "KawPow",
- "BlockHeight": 725121,
+ "BlockHeight": 729619,
"CoinName": "Neurai",
- "DAGsize": 1895825024,
- "Date": "2024-09-06T05:41:48.7011591Z",
- "Epoch": 98,
+ "DAGsize": 1904212096,
+ "Date": "2024-09-09T09:08:37.173071Z",
+ "Epoch": 99,
"Url": "https://whattomine.com/coins.json"
},
"XPB": {
@@ -679,22 +739,23 @@
},
"ZANO": {
"Algorithm": "ProgPowZ",
- "BlockHeight": 2797873,
+ "BlockHeight": 2802349,
"CoinName": "Zano",
"DAGsize": 1870656896,
- "Date": "2024-09-06T05:41:48.5639623Z",
+ "Date": "2024-09-09T09:08:37.1599061Z",
"Epoch": 95,
"Url": "https://whattomine.com/coins.json"
}
},
"Updated": {
- "https://api-explorer.blocxscan.com/api/getblockcount": "2024-09-06T05:41:50.4720868Z",
- "https://evr.cryptoscope.io/api/getblockcount": "2024-09-06T05:41:50.6320007Z",
+ "https://api-explorer.blocxscan.com/api/getblockcount": "2024-09-09T09:08:39.1236641Z",
+ "https://evr.cryptoscope.io/api/getblockcount": "2024-09-09T09:08:39.3611264Z",
"https://mewc.cryptoscope.io/api/getblockcount": "2024-07-14T13:29:49.1181315Z",
- "https://minerstat.com/dag-size-calculator": "2024-09-06T05:41:48.9868367Z",
- "https://prohashing.com/api/v1/currencies": "2024-09-06T05:41:50.1338811Z",
- "https://scc.ccore.online/api/getblockcount": "2024-09-06T05:41:50.3194646Z",
- "https://whattomine.com/coins.json": "2024-09-06T05:41:48.7674009Z",
+ "https://minerstat.com/dag-size-calculator": "2024-09-09T09:08:37.4995196Z",
+ "https://prohashing.com/api/v1/currencies": "2024-09-09T09:08:38.658358Z",
+ "https://scc.ccore.online/api/getblockcount": "2024-09-09T09:08:38.9729165Z",
+ "https://telestai.cryptoscope.io/api/getblockcount/": "2024-09-09T09:08:38.8140898Z",
+ "https://whattomine.com/coins.json": "2024-09-09T09:08:37.243245Z",
"https://www.coinexplorer.net/api/v1/SCC/getblockcount": "2024-09-02T06:05:35.3039058Z",
"https://zergpool.com/api/currencies": "2024-08-26T19:03:15.0996499Z"
}
diff --git a/Includes/APIServer.psm1 b/Includes/APIServer.psm1
index 205a0af0..7fcb5348 100644
--- a/Includes/APIServer.psm1
+++ b/Includes/APIServer.psm1
@@ -18,8 +18,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
File: \Includes\APIServer.psm1
-Version: 6.3.1
-Version date: 2024/09/06
+Version: 6.3.2
+Version date: 2024/09/09
#>
Function Start-APIServer {
diff --git a/Includes/BalancesTracker.ps1 b/Includes/BalancesTracker.ps1
index a3afc2ad..20949672 100644
--- a/Includes/BalancesTracker.ps1
+++ b/Includes/BalancesTracker.ps1
@@ -19,8 +19,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
File: \Includes\BalancesTracker.ps1
-Version: 6.3.1
-Version date: 2024/09/06
+Version: 6.3.2
+Version date: 2024/09/09
#>
using module .\Include.psm1
diff --git a/Includes/Core.ps1 b/Includes/Core.ps1
index 2824dcd0..f3752548 100644
--- a/Includes/Core.ps1
+++ b/Includes/Core.ps1
@@ -19,8 +19,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
File: Core.ps1
-Version: 6.3.1
-Version date: 2024/09/06
+Version: 6.3.2
+Version date: 2024/09/09
#>
using module .\Include.psm1
@@ -52,7 +52,7 @@ Try {
$Variables.RestartCycle = $true
#Stop all miners
- ForEach ($Miner in $Variables.Miners.Where({ $_.Status -ne [MinerStatus]::Idle })) {
+ ForEach ($Miner in $Variables.Miners.Where({ [MinerStatus]::Running, [MinerStatus]::DryRun -contains $_.Status })) {
$Miner.SetStatus([MinerStatus]::Idle)
$Variables.Devices.Where({ $Miner.DeviceNames -contains $_.Name }).ForEach({ $_.Status = $Miner.Status; $_.StatusInfo = $Miner.StatusInfo; $_.SubStatus = $Miner.SubStatus })
}
@@ -210,11 +210,11 @@ Try {
# Core suspended with P in MainLoop
While ($Variables.SuspendCycle) { Start-Sleep -Seconds 1 }
- If ($Variables.ConfigReadTimestamp -lt $Variables.Timer -and $Variables.Miners -and $Variables.Pools -and ($Variables.PoolDataCollectedTimeStamp.AddSeconds([Math]::Floor($Config.Interval)) -ge [DateTime]::Now.ToUniversalTime() -and (Compare-Object @($Config.ExtraCurrencies | Select-Object) @($Variables.AllCurrencies | Select-Object)).Where({ $_.SideIndicator -ne "<=" }))) {
+ If ($Variables.ConfigReadTimestamp -lt $Variables.Timer -and $Variables.Miners -and $Variables.Pools -and ($Variables.PoolDataCollectedTimeStamp.AddSeconds($Config.Interval) -ge [DateTime]::Now.ToUniversalTime() -and (Compare-Object @($Config.ExtraCurrencies | Select-Object) @($Variables.AllCurrencies | Select-Object)).Where({ $_.SideIndicator -ne "<=" }))) {
# Skip some stuff when previous cycle was shorter than one cycle duration
Write-Message -Level Info "Using $($Variables.Pools.Count) pool$(If ($Variables.Pools.Count -ne 1) { "s" }) from previous cycle$(If ($Variables.Pools.Where({ -not $_.Available })) { ", filtered out $(@($Variables.Pools.Where({ -not $_.Available })).Count) pool$(If (@($Variables.Pools.Where({ -not $_.Available })).Count -ne 1) { "s" })" }). $(@($Variables.Pools.Where({ $_.Available })).Count) available pool$(If (@($Variables.Pools.Where({ $_.Available })).Count -ne 1) { "s" }) remain$(If (@($Variables.Pools.Where({ $_.Available })).Count -eq 1) { "s" })."
($Variables.Pools.Reasons.Where({ $_ -match "Pool suspended by watchdog .+" }) | Sort-Object -Unique).ForEach({ Write-Message -Level Warn $_ })
- $Variables.EndCycleTime = [DateTime]::Now.ToUniversalTime().AddSeconds([Math]::Floor($Config.Interval))
+ $Variables.EndCycleTime = [DateTime]::Now.ToUniversalTime().AddSeconds($Config.Interval)
}
Else {
$Variables.BeginCycleTime = $Variables.Timer
@@ -322,9 +322,6 @@ Try {
Catch {}
Remove-Variable Keys, StatFiles -ErrorAction Ignore
- # Load currency exchange rates
- If ($Config.BalancesTrackerPollInterval -le 0 -and ($Variables.RatesUpdated -lt [DateTime]::Now.ToUniversalTime().AddMinutes( - (3, ($Config.BalancesTrackerPollInterval, 15 | Measure-Object -Minimum).Minimum | Measure-Object -Maximum).Maximum))) { [Void](Get-Rate) }
-
# Get DAG data
[Void](Update-DAGdata)
@@ -941,7 +938,7 @@ Try {
If ($MissingFirewallRules = (Compare-Object @(Get-NetFirewallApplicationFilter | Select-Object -ExpandProperty Program -Unique) @(($Miners | Select-Object -ExpandProperty Path -Unique).ForEach({ "$PWD\$($_)" })) -PassThru).Where({ $_.SideIndicator -eq "=>" })) {
Try {
If (-not $Variables.IsLocalAdmin) { Write-Message -Level Info "Initiating request to add $($MissingFirewallRules.Count) inbound firewall rule$(If ($MissingFirewallRules.Count -ne 1) { "s" })..." }
- Start-Process "pwsh" ("-Command Import-Module NetSecurity; ('$($MissingFirewallRules | ConvertTo-Json -Compress)' | ConvertFrom-Json) | ForEach-Object { New-NetFirewallRule -DisplayName (Split-Path `$_ | Split-Path -leaf) -Program `$_ -Description 'Inbound rule added by $($Variables.Branding.ProductLabel) $($Variables.Branding.Version) on $([DateTime]::Now.ToString())' -Group '$($Variables.Branding.ProductLabel)' }" -replace '"', '\"') -Verb runAs
+ Start-Process "pwsh" ("-Command Write-Host 'Adding $($MissingFirewallRules.Count) inbound firewall rule$(If ($MissingFirewallRules.Count -ne 1) { "s" })...'; Start-Sleep -Seconds 3; Import-Module NetSecurity; ('$($MissingFirewallRules | ConvertTo-Json -Compress)' | ConvertFrom-Json) | ForEach-Object { New-NetFirewallRule -DisplayName (Split-Path `$_ | Split-Path -leaf) -Program `$_ -Description 'Inbound rule added by $($Variables.Branding.ProductLabel) $($Variables.Branding.Version) on $([DateTime]::Now.ToString())' -Group '$($Variables.Branding.ProductLabel)' }" -replace '"', '\"') -Verb runAs
Write-Message -Level Info "Added $($MissingFirewallRules.Count) inbound firewall rule$(If ($MissingFirewallRules.Count -ne 1) { "s" }) to Windows Defender Inbound Rules Group '$($Variables.Branding.ProductLabel)'."
}
Catch {
diff --git a/Includes/Dev/CoinNames.ps1 b/Includes/Dev/CoinNames.ps1
new file mode 100644
index 00000000..caaec1fe
--- /dev/null
+++ b/Includes/Dev/CoinNames.ps1
@@ -0,0 +1,35 @@
+using module c:\Users\Stephan\Desktop\UG-Miner\Includes\Include.psm1
+
+Set-Location c:\Users\Stephan\Desktop\UG-Miner\
+
+$DB = c:\Users\Stephan\Desktop\UG-Miner\Includes\Dev\CoinsDB.json | ConvertFrom-Json
+
+$AlgorithmCurrencies = [Ordered]@{ }
+$CoinList = [Ordered]@{ }
+$CoinDB = [PSCustomObject]@{ }
+$CoinDB2 = @{ }
+(($Db | Get-Member -MemberType NoteProperty).Name | Sort-Object -Unique).ForEach(
+ {
+ $Algorithm = Get-Algorithm $DB.$_.Algo
+ $Currency = $_ -replace '-.+$'
+ $CoinName = $DB.$_.Name -replace 'cash$', 'Cash' -replace 'gold$', "Gold" -replace 'coin$', 'Coin' -replace 'token$', 'Token'
+ $CoinList.$Currency = $CoinName
+ $Data = [PSCustomObject]@{
+ "Algorithm" = $Algorithm
+ "CoinName" = $CoinName
+ "Currency" = $Currency
+ }
+ $CoinDB | Add-Member $_ $Data
+ }
+)
+
+ForEach ($Algorithm in (($CoinDB | Get-Member -MemberType NoteProperty).Name).ForEach({ $CoinDB.$_.Algorithms }) | Sort-Object -Unique) {
+
+ $Currencies = ($CoinDB | Get-Member -MemberType NoteProperty).Name.Where({ $CoinDB.$_.Algorithms -match $Algorithm })
+ If ($Currencies.Count -eq 1) {
+ $AlgorithmCurrencies.$Algorithm = $Currencies
+ }
+}
+
+$CoinList | ConvertTo-Json > c:\Users\Stephan\Desktop\UG-Miner\Includes\CoinNames.json
+$AlgorithmCurrencies | ConvertTo-Json > c:\Users\Stephan\Desktop\UG-Miner\Includes\AlgorithmCurrency.json
diff --git a/Includes/Dev/DataReader.ps1 b/Includes/Dev/DataReader.ps1
new file mode 100644
index 00000000..b7cf9166
--- /dev/null
+++ b/Includes/Dev/DataReader.ps1
@@ -0,0 +1,146 @@
+Add-Type -TypeDefinition @'
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.Management.Automation;
+using System.Management.Automation.Runspaces;
+namespace InProcess
+{
+ public class InMemoryJob : System.Management.Automation.Job
+ {
+ public InMemoryJob(PowerShell PowerShell, string name)
+ {
+ _PowerShell = PowerShell;
+ SetUpStreams(name);
+ }
+ private void SetUpStreams(string name)
+ {
+ _PowerShell.Streams.Verbose = this.Verbose;
+ _PowerShell.Streams.Error = this.Error;
+ _PowerShell.Streams.Debug = this.Debug;
+ _PowerShell.Streams.Warning = this.Warning;
+ _PowerShell.Streams.Information = this.Information;
+ _PowerShell.Runspace.AvailabilityChanged += new EventHandler(Runspace_AvailabilityChanged);
+ int id = System.Threading.Interlocked.Add(ref InMemoryJobNumber, 1);
+ if (!string.IsNullOrEmpty(name))
+ {
+ this.Name = name;
+ }
+ else
+ {
+ this.Name = "InProcessJob" + id;
+ }
+ }
+ void Runspace_AvailabilityChanged(object sender, RunspaceAvailabilityEventArgs e)
+ {
+ if (e.RunspaceAvailability == RunspaceAvailability.Available)
+ {
+ this.SetJobState(JobState.Completed);
+ }
+ }
+ PowerShell _PowerShell;
+ static int InMemoryJobNumber = 0;
+ public override bool HasMoreData
+ {
+ get {
+ return (Output.Count > 0);
+ }
+ }
+ public override string Location
+ {
+ get { return "In Process"; }
+ }
+ public override string StatusMessage
+ {
+ get { return "A new status message"; }
+ }
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing)
+ {
+ if (!isDisposed)
+ {
+ isDisposed = true;
+ try
+ {
+ if (!IsFinishedState(JobStateInfo.State))
+ {
+ StopJob();
+ }
+ foreach (Job job in ChildJobs)
+ {
+ job.Dispose();
+ }
+ }
+ finally
+ {
+ base.Dispose(disposing);
+ }
+ }
+ }
+ }
+ private bool isDisposed = false;
+ internal bool IsFinishedState(JobState state)
+ {
+ return (state == JobState.Completed || state == JobState.Failed || state == JobState.Stopped);
+ }
+ public override void StopJob()
+ {
+ _PowerShell.Stop();
+ _PowerShell.EndInvoke(_asyncResult);
+ SetJobState(JobState.Stopped);
+ }
+ public void Start()
+ {
+ _asyncResult = _PowerShell.BeginInvoke(null, Output);
+ SetJobState(JobState.Running);
+ }
+ IAsyncResult _asyncResult;
+ public void WaitJob()
+ {
+ _asyncResult.AsyncWaitHandle.WaitOne();
+ }
+ public void WaitJob(TimeSpan timeout)
+ {
+ _asyncResult.AsyncWaitHandle.WaitOne(timeout);
+ }
+ }
+}
+'@
+
+function Start-JobInProcess {
+ [CmdletBinding()]
+ Param
+ (
+ [ScriptBlock] $ScriptBlock,
+ $ArgumentList,
+ [String] $Name
+ )
+
+ Function Get-JobRepository {
+ [CmdletBinding()]
+ Param ()
+ $PScmdlet.JobRepository
+ }
+
+ Function Add-Job {
+ [CmdletBinding()]
+ Param
+ (
+ $Job
+ )
+ $PScmdlet.JobRepository.Add($Job)
+ }
+
+ $PowerShell = [PowerShell]::Create().AddScript($ScriptBlock)
+
+ if ($ArgumentList) {
+ $ArgumentList.ForEach({ $PowerShell.AddArgument($_) })
+ }
+
+ $MemoryJob = New-Object InProcess.InMemoryJob $PowerShell, $Name
+
+ $MemoryJob.Start()
+ Add-Job $MemoryJob
+ $MemoryJob
+}
diff --git a/Includes/Dev/DevAPI.ps1 b/Includes/Dev/DevAPI.ps1
new file mode 100644
index 00000000..41eb9967
--- /dev/null
+++ b/Includes/Dev/DevAPI.ps1
@@ -0,0 +1,964 @@
+$Request = '2022-12-13 22:33:07: http://127.0.0.1:3999/functions/config/set?{"Algorithm"%3A%5B%5D%2C"APILogfile"%3A"Debug%5C%5CAPILog.txt"%2C"APIPort"%3A3999%2C"AutoReboot"%3Atrue%2C"AutoUpdate"%3Atrue%2C"AutoUpdateCheckInterval"%3A1%2C"BackupOnAutoUpdate"%3Atrue%2C"BadShareRatioThreshold"%3A0.05%2C"BalancesKeepAlive"%3Atrue%2C"BalancesShowAverages"%3Afalse%2C"BalancesShowInAllCurrencies"%3Afalse%2C"BalancesShowInFIATcurrency"%3Atrue%2C"BalancesShowSums"%3Afalse%2C"BalancesTrackerExcludePool"%3A%5B"_BlockMasters"%5D%2C"BalancesTrackerLog"%3Afalse%2C"BalancesTrackerPollInterval"%3A10%2C"CalculatePowerCost"%3Atrue%2C"ConfigFileVersion"%3A"4.3.4.6"%2C"CPUMinerProcessPriority"%3A-2%2C"Currency"%3A"CHF"%2C"DecimalsMax"%3A6%2C"Delay"%3A0%2C"DisableDualAlgoMining"%3Afalse%2C"DisableMinerFee"%3Afalse%2C"DisableMinersWithFee"%3Afalse%2C"DisableSingleAlgoMining"%3Afalse%2C"Donation"%3A2%2C"EarningsAdjustmentFactor"%3A0.8%2C"ExcludeDeviceName"%3A%5B"CPU%2300"%5D%2C"ExcludeMinerName"%3A%5B%5D%2C"ExtraCurrencies"%3A%5B"ETH"%2C"USD"%2C"EUR"%2C"NZD"%2C"AUD"%2C"THB"%5D%2C"GPUMinerProcessPriority"%3A-1%2C"IdleDetection"%3Afalse%2C"IdleSec"%3A5%2C"IgnoreMinerFee"%3Afalse%2C"IgnorePoolFee"%3Afalse%2C"IgnorePowerCost"%3Atrue%2C"Interval"%3A30%2C"LogBalanceAPIResponse"%3Afalse%2C"LogToFile"%3A%5B"Info"%2C"Warn"%2C"Error"%2C"Verbose"%2C"Debug"%5D%2C"LogToScreen"%3A%5B"Info"%2C"Warn"%2C"Error"%2C"Verbose"%2C"Debug"%5D%2C"MinAccuracy"%3A0.5%2C"MinDataSample"%3A20%2C"MinDataSampleAlgoMultiplier"%3A{"X16r"%3A3}%2C"MinerSet"%3A2%2C"MinerSwitchingThreshold"%3A2.5%2C"MinerWindowStyle"%3A"minimized"%2C"MinerWindowStyleNormalWhenBenchmarking"%3Atrue%2C"MiningDutchAPIKey"%3A"7c5ea2d2e997f5094a55969d3a855c4169b46d5eee6065d4fa9251e026980714"%2C"MiningDutchUserName"%3A"UselessGuru"%2C"MiningPoolHubAPIKey"%3A"28328accdd4306c631a881bd8130f0d258a94b0e33569e0eef7e83773d018c98"%2C"MiningPoolHubUserName"%3A"UselessGuru"%2C"MinInterval"%3A3%2C"MinWorker"%3A0%2C"MonitoringServer"%3A"https%3A%2F%2FUG-Miner.com"%2C"MonitoringUser"%3A"8e92d491-a5e6-42d7-8928-5be72d743b0c"%2C"NiceHashAPIKey"%3A"0dfa9c5b-12f9-4f62-9152-41d6a517de00"%2C"NiceHashAPISecret"%3A"15a4618a-1f3a-4b96-924a-48845f435d98f4f28ac4-a51b-4de0-bf8d-584929764dd5"%2C"NiceHashOrganizationId"%3A"f48afaf4-fc54-4645-af2d-56334a48aebb"%2C"NiceHashWallet"%3A"33hZYX8iFg5zm9E3geqrNgeP6TMzszZk5R"%2C"NiceHashWalletIsInternal"%3Atrue%2C"OpenFirewallPorts"%3Atrue%2C"PayoutCurrency"%3A"BTC"%2C"PoolAPIAllowedFailureCount"%3A3%2C"PoolAPIretryInterval"%3A3%2C"PoolAPItimeout"%3A3%2C"PoolName"%3A%5B"Hiveon"%2C"MiningDutchPlus"%2C"MiningPoolHubCoins"%2C"NiceHash"%2C"ProHashingPlus"%2C"ZergPoolCoinsPlus"%2C"ZPoolPlus"%5D%2C"PoolsConfigFile"%3A".%5C%5CConfig%5C%5CPoolsConfig.json"%2C"PoolTimeout"%3A30%2C"PowerPricekWh"%3A{"00%3A00"%3A0.26}%2C"PowerUsage"%3A{"_GPU%2302"%3A35}%2C"PowerUsageIdleSystemW"%3A160%2C"ProfitabilityThreshold"%3A-12.6%2C"ProHashingAPIKey"%3A"8ea6a00dea6945172167708c9784b8deead1da2f5e543ef312bfc7ed1073fe4a"%2C"ProHashingMiningMode"%3A"PPLNS"%2C"ProHashingUserName"%3A"UselessGuru"%2C"Proxy"%3A""%2C"Region"%3A"Europe"%2C"ReportToServer"%3Atrue%2C"ShowAccuracy"%3Atrue%2C"ShowAllMiners"%3Afalse%2C"ShowChangeLog"%3Atrue%2C"ShowCoinName"%3Atrue%2C"ShowCurrency"%3Atrue%2C"ShowEarning"%3Atrue%2C"ShowEarningBias"%3Atrue%2C"ShowMinerFee"%3Atrue%2C"ShowPool"%3Atrue%2C"ShowPoolBalances"%3Afalse%2C"ShowPoolFee"%3Atrue%2C"ShowPowerCost"%3Atrue%2C"ShowPowerUsage"%3Atrue%2C"ShowProfit"%3Atrue%2C"ShowProfitBias"%3Atrue%2C"ShowUser"%3Afalse%2C"ShowWorkerStatus"%3Atrue%2C"LogViewerConfig"%3A".%5C%5CUtils%5C%5CUG-Miner_LogReader.xml"%2C"SnakeTailExe"%3A".%5C%5CUtils%5C%5CSnakeTail.exe"%2C"SSL"%3A"Prefer"%2C"StartGUI"%3Afalse%2C"StartGUIMinimized"%3Afalse%2C"StartupMode"%3A"Running"%2C"SubtractBadShares"%3Atrue%2C"SyncWindow"%3A3%2C"Transcript"%3Afalse%2C"UIStyle"%3A"light"%2C"UnrealMinerEarningFactor"%3A1%2C"UnrealPoolPriceFactor"%3A2%2C"UseAnycast"%3Atrue%2C"UseColorForMinerStatus"%3Atrue%2C"UsemBTC"%3Atrue%2C"UseMinerTweaks"%3Atrue%2C"Wallets"%3A{"BTC"%3A"1GPSq8txFnyrYdXL8t6S94mYdF8cGqVQJF"%2C"ETC"%3A"0x7CF99ec9029A98AFd385f106A93977D8105Fec0f"%2C"ETH"%3A"0x92e6F22C1493289e6AD2768E1F502Fc5b414a287"}%2C"Watchdog"%3Atrue%2C"WatchdogCount"%3A3%2C"WebGUI"%3Atrue%2C"WorkerName"%3A"Blackbox"}'
+
+
+Set-Location("c:\Users\Stephan\Desktop\UG-Miner\")
+$ScriptBody = "using module .\Includes\Include.psm1"; $Script = [ScriptBlock]::Create($ScriptBody); . $Script
+
+$Parameters = @{ }
+$Variables = [Ordered]@{ }
+# $Variables.Miners = Get-Content .\Debug\Miners.json | ConvertFrom-Json
+$Variables.Pools = Get-Content .\Debug\Pools.json | ConvertFrom-Json
+$Variables.ConfigFile = ".\Config\config.json"
+$Variables.PoolsConfigFile = ".\Config\PoolsConfig.json"
+$Variables.Earnings = Get-Content .\Debug\Earnings.json | ConvertFrom-Json
+$Variables.AvailableCommandLineParameters = @("Algorithm")
+$Variables.WatchdogTimers = Get-Content .\Debug\WatchdogTimers.json | ConvertFrom-Json
+$Variables.BalancesData = Get-Content "C:\Users\Stephan\Desktop\UG-Miner\Logs\BalancesTrackerData.json" | ConvertFrom-Json
+
+# Load stats, required for stat management
+Get-Stat | Out-Null
+
+Read-Config -ConfigFile $Variables.ConfigFile
+
+$Request = $Request.Substring(42)
+$Path = $Request -replace '\?.+'
+
+$Request -replace '.+\?' -split '&' | Foreach-Object {
+ $Key, $Value = $_ -split '='
+ # Decode any url escaped characters in the key and value
+ $Key = [URI]::UnescapeDataString($Key)
+ $Value = [URI]::UnescapeDataString($Value)
+ If ($Key -and $Value) { $Parameters.$Key = $Value }
+}
+
+# Create a new response and the defaults for associated settings
+$Response = $Context.Response
+$ContentType = "application/json"
+$StatusCode = 200
+$Data = ""
+
+# Set the proper content type, status code and data for each resource
+Switch ($Path) {
+ "/functions/algorithm/disable" {
+ # Disable algorithm@pool in poolsconfig.json
+ $PoolNames = @($Parameters.Pools | ConvertFrom-Json -ErrorAction Ignore).Name
+ $Algorithms = @($Parameters.Pools | ConvertFrom-Json -ErrorAction Ignore).Algorithm
+ If ($Pools = @($Variables.Pools.Where({ $_.Name -in $PoolNames -and $_.Algorithm -in $Algorithms }))) {
+ $PoolsConfig = Get-Content -Path $Config.PoolsConfigFile | ConvertFrom-Json
+ ForEach ($Pool in $Pools) {
+ If ($PoolsConfig.($Pool.Name).Algorithm -like "-*") {
+ $PoolsConfig.($Pool.Name).Algorithm = @($PoolsConfig.($Pool.Name).Algorithm += "-$($Pool.Algorithm)" | Sort-Object -Unique)
+ $Pool.Reasons = [System.Collections.Generic.List[String]]@($Pool.Reasons.Add("Algorithm disabled (`-$($Pool.Algorithm)` in $($Pool.Name) pool config)") | Sort-Object -Unique)
+ }
+ Else {
+ $PoolsConfig.($Pool.Name).Algorithm = @($PoolsConfig.($Pool.Name).Algorithm.Where({ $_ -ne "+$($Pool.Algorithm)" }) | Sort-Object -Unique)
+ $Pool.Reasons = [System.Collections.Generic.List[String]]@($Pool.Reasons.Add("Algorithm not enabled in $($Pool.Name) pool config") | Sort-Object -Unique)
+ }
+ $Pool.Available = $false
+ $Data += "$($Pool.Algorithm)@$($Pool.Name)"
+ }
+ Remove-Variable Pool
+ $Message = "$($Pools.Count) $(If ($Pools.Count -eq 1) { "pool" } Else { "pools" }) disabled."
+ Write-Message -Level Verbose "Web GUI: $Message"
+ $Data = "$($Data -join "`n")`n`n$Message"
+ $PoolsConfig | Get-SortedObject | ConvertTo-Json -Depth 10 | Out-File -LiteralPath $Variables.PoolsConfigFile -Force
+ }
+ Else {
+ $Data = "No matching stats found."
+ }
+ Break
+ }
+ "/functions/algorithm/enable" {
+ # Enable algorithm@pool in poolsconfig.json
+ $PoolNames = @($Parameters.Pools | ConvertFrom-Json -ErrorAction Ignore).Name
+ $Algorithms = @($Parameters.Pools | ConvertFrom-Json -ErrorAction Ignore).Algorithm
+ If ($Pools = @($Variables.Pools.Where({ $_.Name -in $PoolNames -and $_.Algorithm -in $Algorithms }))) {
+ $PoolsConfig = Get-Content -Path $Config.PoolsConfigFile | ConvertFrom-Json
+ ForEach ($Pool in $Pools) {
+ If ($PoolsConfig.($Pool.Name).Algorithm -like "+*") {
+ $PoolsConfig.($Pool.Name).Algorithm = @($PoolsConfig.($Pool.Name).Algorithm += "+$($Pool.Algorithm)" | Sort-Object -Unique)
+ $Pool.Reasons = [System.Collections.Generic.List[String]]@($Pool.Reasons.Where({ $_ -ne "Algorithm not enabled in $($Pool.Name) pool config" }) | Sort-Object -Unique)
+ }
+ Else {
+ $PoolsConfig.($Pool.Name).Algorithm = @($PoolsConfig.($Pool.Name).Algorithm.Where({ $_ -ne "-$($Pool.Algorithm)" }) | Sort-Object -Unique)
+ $Pool.Reasons = [System.Collections.Generic.List[String]]@($Pool.Reasons.Where({ $_ -ne "Algorithm disabled (`-$($Pool.Algorithm)` in $($Pool.Name) pool config)" }) | Sort-Object -Unique)
+ }
+ If (-not $Pool.Reasons) { $Pool.Available = $true }
+ $Data += "$($Pool.Algorithm)@$($Pool.Name)"
+ }
+ Remove-Variable Pool
+ $Message = "$($Pools.Count) $(If ($Pools.Count -eq 1) { "pool" } Else { "pools" }) enabled."
+ Write-Message -Level Verbose "Web GUI: $Message"
+ $Data = "$($Data -join "`n")`n`n$Message"
+ $PoolsConfig | Get-SortedObject | ConvertTo-Json -Depth 10 | Out-File -LiteralPath $Variables.PoolsConfigFile -Force
+ }
+ Else {
+ $Data = "No matching stats found."
+ }
+ Break
+ }
+ "/functions/api/stop" {
+ Write-Message -Level Verbose "API: API stopped!"
+ Return
+ }
+ "/functions/balancedata/remove" {
+ If ($Parameters.Data) {
+ $BalanceDataEntries = $Variables.BalancesData
+ $Variables.BalancesData = @((Compare-Object $Variables.BalancesData @($Parameters.Data | ConvertFrom-Json -ErrorAction Ignore) -PassThru -Property DateTime, Pool, Currency, Wallet).Where({ $_.SideIndicator -eq "<=" }) | Select-Object -ExcludeProperty SideIndicator)
+ $Variables.BalancesData | ConvertTo-Json | Out-File ".\Data\BalancesTrackerData.json"
+ $RemovedEntriesCount = $BalanceDataEntries.Count - $Variables.BalancesData.Count
+ If ($RemovedEntriesCount-gt 0) {
+ $Message = "$RemovedEntriesCount $(If ($RemovedEntriesCount -eq 1) { "balance data entry" } Else { "balance data entries" }) removed."
+ Write-Message -Level Verbose "Web GUI: $Message"
+ $Data = $Message
+ }
+ Else {
+ $Data = "No matching entries found."
+ }
+ Break
+ }
+ }
+ "/functions/config/device/disable" {
+ ForEach ($Key in $Parameters.Keys) {
+ If ($Values = @(($Parameters.$Key -split ',').Where({ $_ -notin $Config.ExcludeDeviceName }))) {
+ Try {
+ $ExcludeDeviceName = $Config.ExcludeDeviceName
+ $Config.ExcludeDeviceName = @((@($Config.ExcludeDeviceName) + $Values) | Sort-Object -Unique)
+ Write-Config -ConfigFile $Variables.ConfigFile -Config $Config
+ $Data = "Device configuration changed`n`nOld values:"
+ $Data += "`nExcludeDeviceName: '[$($ExcludeDeviceName -join ', ')]'"
+ $Data += "`n`nNew values:"
+ $Data += "`nExcludeDeviceName: '[$($Config."ExcludeDeviceName" -join ', ')]'"
+ $Data += "`n`nConfiguration saved to '$($Variables.ConfigFile.Replace("$(Convert-Path ".\")\", ".\"))'.`nIt will become active in next cycle."
+ ForEach ($DeviceName in $Values) {
+ $Variables.Devices.Where({ $_.Name -eq $DeviceName }).ForEach(
+ {
+ $_.State = [DeviceState]::Disabled
+ If ($_.SubStatus -in ("Benchmarking", "Running", "WarmingUp")) { $_.StatusInfo = "$($_.StatusInfo); will get disabled at end of cycle" }
+ Else {
+ $_.StatusInfo = "Disabled (ExcludeDeviceName: '$($_.Name)')"
+ $_.Status = "Idle"
+ }
+ }
+ )
+ }
+ Remove-Variable DeviceName
+ Write-Message -Level Verbose "Web GUI: Device$(If ($Values.Count -ne 1) { "s" }) '$($Values -join ', ')' disabled. Configuration file '$($Variables.ConfigFile)' updated."
+ }
+ Catch {
+ $Data = "Error saving configuration file '$($Variables.ConfigFile.Replace("$(Convert-Path ".\")\", ".\"))'.`n`n[ $($_) ]"
+ }
+ }
+ Else {
+ $Data = "No configuration change."
+ }
+ }
+ Remove-Variable Key
+ Break
+ }
+ "/functions/config/device/enable" {
+ ForEach ($Key in $Parameters.Keys) {
+ If ($Values = @(($Parameters.$Key -split ',').Where({ $_ -in $Config.ExcludeDeviceName }))) {
+ Try {
+ $ExcludeDeviceName = $Config.ExcludeDeviceName
+ $Config.ExcludeDeviceName = @($Config.ExcludeDeviceName.Where({ $_ -notin $Values }) | Sort-Object -Unique)
+ Write-Config -ConfigFile $Variables.ConfigFile -Config $Config
+ $Variables.FreshConfig = $false
+ $Data = "Device configuration changed`n`nOld values:"
+ $Data += "`nExcludeDeviceName: '[$($ExcludeDeviceName -join ', ')]'"
+ $Data += "`n`nNew values:"
+ $Data += "`nExcludeDeviceName: '[$($Config."ExcludeDeviceName" -join ', ')]'"
+ $Data += "`n`nConfiguration saved to '$($Variables.ConfigFile.Replace("$(Convert-Path ".\")\", ".\"))'.`nIt will become active in next cycle."
+ $Variables.Devices.Where({ $_.Name -in $Values }).ForEach(
+ {
+ $_.State = [DeviceState]::Enabled
+ If ($_.StatusInfo -like "* {*@*}; will get disabled at end of cycle") { $_.StatusInfo = $_.StatusInfo -replace '; will get enabled at end of cycle' }
+ Else { $_.Status = $_.StatusInfo = $_.SubStatus = "Idle" }
+ }
+ )
+ Write-Message -Level Verbose "Web GUI: Device$(If ($Values.Count -ne 1) { "s" }) '$($Values -join ', ')' enabled. Configuration file '$($Variables.ConfigFile)' updated."
+ }
+ Catch {
+ $Data = "Error saving configuration file '$($Variables.ConfigFile.Replace("$(Convert-Path ".\")\", ".\"))'.`n`n[ $($_) ]."
+ }
+ }
+ Else {
+ $Data = "No configuration change."
+ }
+ }
+ Remove-Variable Key
+ Break
+ }
+ "/functions/config/set" {
+ Try {
+ $TempConfig = ($Key | ConvertFrom-Json -AsHashtable)
+ Write-Config -ConfigFile $Variables.ConfigFile -Config $TempConfig
+ $TempConfig.Keys.ForEach({ $Config.$_ = $TempConfig.$_ })
+ Remove-Variable TempConfig
+
+ $Variables.Devices.Where({ $_.State -ne [DeviceState]::Unsupported }).ForEach(
+ {
+ If ($_.Name -in $Config.ExcludeDeviceName) {
+ $_.State = [DeviceState]::Disabled
+ If ($_.Status -like "Mining *}") { $_.Status = "$($_.Status); will get disabled at end of cycle" }
+ }
+ Else {
+ $_.State = [DeviceState]::Enabled
+ If ($_.Status -like "*; will get disabled at end of cycle") { $_.Status = $_.Status -replace '; will get disabled at end of cycle' If ($_.Status -like "Disabled *") { $_.Status = "Idle" }
+ }
+ }
+ )
+ $Variables.RestartCycle = $true
+ $Variables.FreshConfig = $false
+ Write-Message -Level Verbose "Web GUI: Configuration saved. It will become fully active in the next cycle."
+ $Data = "Configuration saved to '$($Variables.ConfigFile.Replace("$(Convert-Path ".\")\", ".\"))'.`nIt will become fully active in the next cycle."
+ }
+ Catch {
+ $Data = "Error saving configuration file '$($Variables.ConfigFile.Replace("$(Convert-Path ".\")\", ".\"))'.`n`n[ $($_) ]."
+ }
+ Break
+ }
+ "/functions/file/edit" {
+ $Data = Edit-File $Parameters.FileName
+ Break
+ }
+ "/functions/file/showcontent" {
+ $Data = (Get-Content -Path $Parameters.FileName -Raw)
+ $ContentType = "text/html"
+ Break
+ }
+ "/functions/log/get" {
+ $Lines = If ([Int]$Parameters.Lines) { [Int]$Parameters.Lines } Else { 100 }
+ $Data = "$((Get-Content -Path $Variables.LogFile -Tail $Lines).ForEach({ "$($_)`n" }))"
+ Break
+ }
+ "/functions/mining/getstatus" {
+ If ($Variables.FreshConfig) {
+ $Data = "FreshConfig" | ConvertTo-Json
+ }
+ Else {
+ $Data = $Variables.NewMiningStatus | ConvertTo-Json
+ }
+ Break
+ }
+ "/functions/mining/pause" {
+ If ($Variables.MiningStatus -ne "Paused") {
+ $Variables.NewMiningStatus = "Paused"
+ $Data = "Mining is being paused...`n$(If ($Variables.BalancesTrackerPollInterval -gt 0) { If ($Variables.BalancesTrackerRunning) { "Balances tracker running." } Else { "Balances tracker starting..." } })"
+ $Variables.RestartCycle = $true
+ }
+ Break
+ }
+ "/functions/mining/start" {
+ If ($Variables.MiningStatus -ne "Running") {
+ $Variables.NewMiningStatus = "Running"
+ $Data = "Mining processes starting...`n$(If ($Variables.BalancesTrackerPollInterval -gt 0) { If ($Variables.BalancesTrackerRunning) { "Balances tracker running." } Else { "Balances tracker starting..." } })"
+ $Variables.RestartCycle = $true
+ }
+ Break
+ }
+ "/functions/mining/stop" {
+ If ($Variables.MiningStatus -ne "Idle") {
+ $Variables.NewMiningStatus = "Idle"
+ $Data = "$($Variables.Branding.ProductLabel) is stopping...`n"
+ $Variables.RestartCycle = $true
+ }
+ Break
+ }
+ "/functions/querypoolapi" {
+ If (-not $Config.PoolsConfig.$($Parameters.Pool).BrainConfig.$($Parameters.Type)) {
+ $Data = "No pool configuration data for '/functions/querypoolapi?Pool=$($Parameters.Pool)&Type=$($Parameters.Type)'."
+ }
+ ElseIf (-not ($Data = (Invoke-RestMethod -Uri $Config.PoolsConfig.$($Parameters.Pool).BrainConfig.$($Parameters.Type) -Headers @{ "Cache-Control" = "no-cache" } -SkipCertificateCheck -TimeoutSec 5) | ConvertTo-Json)) {
+ $Data = "No data for '/functions/querypoolapi?Pool=$($Parameters.Pool)&Type=$($Parameters.Type)'."
+ }
+ break
+ }
+ "/functions/removeorphanedminerstats" {
+ If ($StatNames = Remove-ObsoleteMinerStats) {
+ $Data = $StatNames | ConvertTo-Json
+ }
+ Else {
+ $Data = "No matching stats found."
+ }
+ Break
+ }
+ "/functions/getminerdetail" {
+ $Miner = $Variables.Miners.Where({ $_.Info -eq $Key })
+ If ($Miner) {
+ $Data = $Miner | ConvertTo-Json -Depth 10
+ }
+ Else {
+ $Data = "Miner with key '$Key' not found."
+ }
+ Break
+ }
+ "/functions/stat/disable" {
+ If ($Parameters.Miners) {
+ If ($Miners = @(Compare-Object -PassThru -IncludeEqual -ExcludeDifferent @($Variables.Miners | Select-Object) @($Parameters.Miners | ConvertFrom-Json -ErrorAction Ignore | Select-Object) -Property Info)) {
+ $Data = @()
+ $Miners.Where({ -not $_.Disabled }).ForEach(
+ {
+ $Data += $_.Name
+ ForEach ($Worker in $_.Workers) {
+ Disable-Stat -Name "$($_.Name)_$($Worker.Pool.Algorithm)_Hashrate"
+ $Worker.Hashrate = [Double]::NaN
+ }
+ Remove-Variable Worker
+ $_.Disabled = $true
+ $_.Reasons += "Disabled by user"
+ $_.Reasons = [System.Collections.Generic.List[String]]@($_.Reasons.Where({ $_ -ne "Disabled by user" }) | Sort-Object -Unique)
+ }
+ )
+ $Data = $Data | Sort-Object -Unique
+ $Message = "$($Data.Count) $(If ($Data.Count -eq 1) { "miner" } Else { "miners" }) disabled."
+ Write-Message -Level Verbose "Web GUI: $Message"
+ $Data = "$($Data -join "`n")`n`n$Message"
+ }
+ Else {
+ $Data = "No matching miner stats found."
+ }
+ Break
+ }
+ }
+ "/functions/stat/enable" {
+ If ($Parameters.Miners) {
+ If ($Miners = @(Compare-Object -PassThru -IncludeEqual -ExcludeDifferent @($Variables.Miners | Select-Object) @($Parameters.Miners | ConvertFrom-Json -ErrorAction Ignore | Select-Object) -Property Info)) {
+ $Data = @()
+ $Miners.Where({ $_.Disabled }).ForEach(
+ {
+ $Data += $_.Name
+ ForEach ($Worker in $_.Workers) {
+ Enable-Stat -Name "$($_.Name)_$($Worker.Pool.Algorithm)_Hashrate"
+ }
+ Remove-Variable Worker
+ $_.Disabled = $false
+ $_.Reasons = [System.Collections.Generic.List[String]]@($_.Reasons.Where({ $_ -ne "Disabled by user" }) | Sort-Object -Unique)
+ If (-not $_.Reasons) { $_.Available = $true }
+ }
+ )
+ $Data = $Data | Sort-Object -Unique
+ $Message = "$($Data.Count) $(If ($Data.Count -eq 1) { "miner" } Else { "miners" }) enabled."
+ Write-Message -Level Verbose "Web GUI: $Message"
+ $Data = "$($Data -join "`n")`n`n$Message"
+ }
+ Else {
+ $Data = "No matching miner stats found."
+ }
+ Break
+ }
+ }
+ "/functions/stat/get" {
+ $TempStats = @(If ($null -ne $Parameters.Value) { @($Stats.psBase.Keys.Where({ $_ -like "*_$($Parameters.Type)" -and $Stats[$_].Live -eq $Parameters.Value }).ForEach({ $Stats[$_] })) } Else { @($Stats) })
+ If ($TempStats) {
+ If ($null -ne $Parameters.Value) {
+ ($TempStats.Name | Sort-Object).ForEach({ $Data += "$($_ -replace '(_Hashrate|_PowerConsumption)$')`n" })
+ If ($Parameters.Type -eq "Hashrate") { $Data += "`n$($TempStats.Count) stat file$(If ($TempStats.Count -ne 1) { "s" }) with $($Parameters.Value)H/s hashrate." }
+ ElseIf ($Parameters.Type -eq "PowerConsumption") { $Data += "`n$($TempStats.Count) stat file$(If ($TempStats.Count -ne 1) { "s" }) with $($Parameters.Value)W power consumption." }
+ }
+ Else {
+ $Data = $TempStats | ConvertTo-Json
+ }
+ }
+ Else {
+ $Data = "No matching stats found."
+ }
+ Break
+ }
+ "/functions/stat/remove" {
+ If ($Parameters.Pools) {
+ If ($Pools = @(Compare-Object -PassThru -IncludeEqual -ExcludeDifferent @($Variables.Pools | Select-Object) @($Parameters.Pools | ConvertFrom-Json -ErrorAction Ignore | Select-Object) -Property Algorithm, Currency, Name)) {
+ $Data = @()
+ ($Pools | Sort-Object -Property Name, Algorithm, Currency).ForEach(
+ {
+ $StatName = "$($_.Name)_$($_.Algorithm)$(If ($_.Currency) { "-$($_.Currency)" })"
+ $Data += $StatName
+ Remove-Stat -Name "$($StatName)_Profit"
+ $_.Reasons = [System.Collections.Generic.List[String]]@()
+ $_.Price = $_.Price_Bias = $_.StablePrice = $_.Accuracy = [Double]::Nan
+ $_.Available = $true
+ $_.Disabled = $false
+ }
+ )
+ $Data = $Data | Sort-Object -Unique
+ $Message = "Reset pool stats for $($Pools.Count) $(If ($Pools.Count -eq 1) { "pool" } Else { "pools" })."
+ Write-Message -Level Verbose "Web GUI: $Message"
+ $Data = "$($Data -join "`n")`n`n$Message"
+ }
+ Else {
+ $Data = "No matching pool stats found."
+ }
+ Break
+ }
+ ElseIf ($Parameters.Miners -and $Parameters.Type -eq "Hashrate") {
+ If ($Miners = @(Compare-Object -PassThru -IncludeEqual -ExcludeDifferent @($Variables.Miners | Select-Object) @($Parameters.Miners | ConvertFrom-Json -ErrorAction Ignore | Select-Object) -Property Info)) {
+ $Data = @()
+ $Miners.ForEach(
+ {
+ $_.Activated = 0 # To allow 3 attempts
+ $_.Available = $true
+ $_.Benchmark = $true
+ $_.Earning_Accuracy = [Double]::NaN
+ $_.Disabled = $false
+ $Data += $_.Name
+ ForEach ($Worker in $_.Workers) {
+ Remove-Stat -Name "$($_.Name)_$($Worker.Pool.Algorithm)_Hashrate"
+ $Worker.Hashrate = [Double]::NaN
+ }
+ Remove-Variable Worker
+
+ # Clear power consumption
+ Remove-Stat -Name "$($_.Name)_PowerConsumption"
+ $_.PowerConsumption = $_.PowerCost = $_.Profit = $_.Profit_Bias = $_.Earning = $_.Earning_Bias = [Double]::NaN
+
+ # Remove watchdog
+ $Variables.WatchdogTimers = @($Variables.WatchdogTimers | Where-Object MinerName -ne $_.Name)
+
+ $_.Reasons = [System.Collections.Generic.List[String]]@($_.Reasons.Where({ $_ -ne "Disabled by user" }))
+ $_.Reasons = [System.Collections.Generic.List[String]]@($_.Reasons.Where({ $_ -ne "0 H/s Stat file" }))
+ $_.Reasons = [System.Collections.Generic.List[String]] @($_.Reasons.Where({ $_ -notlike "Unreal profit data *" }) | Sort-Object -Unique)
+ If (-not $_.Reasons) { $_.Available = $true }
+ If ($_.Status -eq "Disabled") { $_.Status = "Idle" }
+ }
+ )
+ $Data = $Data | Sort-Object -Unique
+ $Message = "Re-benchmark triggered for $($Data.Count) $(If ($Data.Count -eq 1) { "miner" } Else { "miners" })."
+ Write-Message -Level Verbose "Web GUI: $Message"
+ $Data = "$($Data -join "`n")`n`n$Message"
+ }
+ Else {
+ $Data = "No matching hashrate stats found."
+ }
+ Break
+ }
+ ElseIf ($Parameters.Miners -and $Parameters.Type -eq "PowerConsumption") {
+ If ($Miners = @(Compare-Object -PassThru -IncludeEqual -ExcludeDifferent @($Variables.Miners | Select-Object) @($Parameters.Miners | ConvertFrom-Json -ErrorAction Ignore | Select-Object) -Property Info)) {
+ $Data = @()
+ $Miners.ForEach(
+ {
+ If ($_.Earning -eq 0) { $_.Available = $true }
+ If ($Variables.CalculatePowerCost) {
+ $_.MeasurePowerConsumption = $true
+ $_.Activated = 0 # To allow 3 attempts
+ }
+ $_.PowerConsumption = [Double]::NaN
+ $StatName = $_.Name
+ $Data += $StatName
+ Remove-Stat -Name "$($StatName)_PowerConsumption"
+ $_.PowerConsumption = $_.PowerCost = $_.Profit = $_.Profit_Bias = $_.Earning = $_.Earning_Bias = [Double]::NaN
+ If ($_.Status -eq "Disabled") { $_.Status = "Idle" }
+ }
+ )
+ $Data = $Data | Sort-Object -Unique
+ $Message = "Re-measure power consumption triggered for $($Data.Count) $(If ($Data.Count -eq 1) { "miner" } Else { "miners" })."
+ Write-Message -Level Verbose "Web GUI: $Message"
+ $Data = "$($Data -join "`n")`n`n$Message"
+ }
+ Else {
+ $Data = "No matching power consumption stats found."
+ }
+ Break
+ }
+ If ($Parameters.Value) { $TempStats = @($Stats.psBase.Keys.Where({ $_ -like "*_$($Parameters.Type)" -and $Stats[$_].Live -eq $Parameters.Value }).ForEach({ $Stats[$_] })) }
+ Else { $TempStats = @( (Get-ChildItem -Path ".\Stats\*_$($Parameters.Type).txt").BaseName.ForEach({ $Stats[$_] })) }
+ If ($TempStats) {
+ $Data = @()
+ ($TempStats | Sort-Object -Property Name).ForEach(
+ {
+ Remove-Stat -Name $_.Name
+ $Data += $_.Name -replace '(_Hashrate|_PowerConsumption)$'
+ }
+ )
+ $Data = $Data | Sort-Object -Unique
+ If ($Parameters.Type -eq "Hashrate") { $Message = "Reset $($TempStats.Count) stat file$(If ($TempStats.Count -ne 1) { "s" })$(If ($null -ne $Parameters.Value) { " with $($Parameters.Value)H/s hashrate" })." }
+ ElseIf ($Parameters.Type -eq "PowerConsumption") { $Message = "Reset $($TempStats.Count) stat file$(If ($TempStats.Count -ne 1) { "s" })$(If ($null -ne $Parameters.Value) { " with $($Parameters.Value)W power consumption" })." }
+ ElseIf ($Parameters.Type -eq "Profit") { $Message = "Reset $($TempStats.Count) pool stat file$(If ($TempStats.Count -ne 1) { "s" })." }
+ Write-Message -Level Info "Web GUI: $Message"
+ $Data = "$($Data -join "`n")`n`n$Message"
+ }
+ Else {
+ $Data = "No matching stats found."
+ }
+ Break
+ }
+ "/functions/stat/set" {
+ If ($Parameters.Miners -and $Parameters.Type -eq "Hashrate" -and $null -ne $Parameters.Value) {
+ $Data = @()
+ If ($Miners = @(Compare-Object -PassThru -IncludeEqual -ExcludeDifferent @($Variables.Miners | Select-Object) @($Parameters.Miners | ConvertFrom-Json -ErrorAction Ignore | Select-Object) -Property Info)) {
+ $Miners.ForEach(
+ {
+ If ($Parameters.Value -le 0 -and $Parameters.Type -eq "Hashrate") { $_.Available = $false; $_.Disabled = $true }
+ $Data += $_.Name
+ ForEach ($Algorithm in $_.Algorithms) {
+ $StatName = "$($_.Name)_$($Algorithm)_$($Parameters.Type)"
+ If ($Parameters.Value -eq 0) { # Miner failed
+ Remove-Stat -Name $StatName
+ Set-Stat -Name $StatName -Value $Parameters.Value -FaultDetection $false | Out-Null
+ $_.Profit = $_.Profit_Bias = $_.Earning = $_.Earning_Bias = $_.Earning_Accuracy = [Double]::NaN
+ $_.Available = $false
+ $_.Disabled = $false
+ If ($_.Reasons -notcontains "0 H/s Stat file") { $_.Reasons.Add("0 H/s Stat file") }
+ $_.Reasons = [System.Collections.Generic.List[String]]@($_.Reasons.Where({ $_ -notlike "Disabled by user" }) | Sort-Object -Unique)
+ $_.Status = [MinerStatus]::Failed
+ }
+ }
+ Remove-Variable Algorithm
+ }
+ )
+ $Data = $Data | Sort-Object -Unique
+ $Message = "$(If ($Data.Count -eq 1) { "The miner is" } Else { "$($Data.Count) miners are" }) $(If ($Parameters.Value -eq 0) { "marked as failed" } ElseIf ($Parameters.Value -eq -1) { "disabled" } Else { "set to value $($Parameters.Value)" })."
+ Write-Message -Level Verbose "Web GUI: $Message"
+ $Data = "$($Data -join "`n")`n`n$Message"
+ }
+ Else {
+ $Data = "No matching miners found."
+ }
+ Break
+ }
+ }
+ "/functions/switchinglog/clear" {
+ Get-ChildItem -Path ".\Logs\switchinglog.csv" -File | Remove-Item -Force
+ $Data = "Switching log '.\Logs\switchinglog.csv' cleared."
+ Write-Message -Level Verbose "Web GUI: $Data"
+ Break
+ }
+ "/functions/variables/get" {
+ If ($Key) {
+ $Data = $Variables.($Key -replace '\\|/', '.' -split '\.'[-1]) | Get-SortedObject | ConvertTo-Json -Depth 10
+ }
+ Else {
+ $Data = $Variables.psBase.Keys | Sort-Object | ConvertTo-Json -Depth 1
+ }
+ Break
+ }
+ "/functions/watchdogtimers/remove" {
+ $Data = @()
+ ForEach ($Miner in @($Parameters.Miners | ConvertFrom-Json -ErrorAction Ignore)) {
+ # Update miner
+ $Variables.Miners.Where({ $_.Name -eq $Miner.Name -and $_.Reasons -like "Miner suspended by watchdog *" }).ForEach(
+ {
+ $Data += "$($_.Name)"
+ $_.Reasons = [System.Collections.Generic.List[String]]@($_.Reasons.Where({ $_ -notlike "Miner suspended by watchdog *" }) | Sort-Object -Unique)
+ If (-not $_.Reasons) { $_.Available = $true }
+ }
+ )
+
+ # Remove Watchdog timers
+ $Variables.WatchdogTimers = @($Variables.WatchdogTimers.Where({ $_.MinerName -ne $Miner.Name }))
+ }
+ Remove-Variable Miner
+
+ ForEach ($Pool in @($Parameters.Pools | ConvertFrom-Json -ErrorAction Ignore)) {
+ # Update pool
+ $Variables.Pools.Where({ $_.Name -eq $Pool.Name -and $_.Algorithm -eq $Pool.Algorithm -and $_.Reasons -like "Pool suspended by watchdog *" }).ForEach(
+ {
+ $Data += "$($_.Key) ($($_.Region))"
+ $_.Reasons = [System.Collections.Generic.List[String]]@($_.Reasons.Where({ $_ -notlike "Pool suspended by watchdog *" }) | Sort-Object -Unique)
+ If (-not $_.Reasons) { $_.Available = $true }
+ }
+ )
+
+ # Remove Watchdog timers
+ $Variables.WatchdogTimers = @($Variables.WatchdogTimers.Where({ $_.PoolName -ne $Pool.Name -or $_.Algorithm -ne $Pool.Algorithm }))
+ }
+ Remove-Variable Pool
+ If ($Data) {
+ $Data = $Data | Sort-Object -Unique
+ $Message = "$($Data.Count) watchdog $(If ($Data.Count -eq 1) { "timer" } Else { "timers" }) removed."
+ Write-Message -Level Verbose "Web GUI: $Message"
+ $Data = "$($Data -join "`n")`n`n$Message"
+ }
+ Else {
+ $Data = "No matching watchdog timers found."
+ }
+ Break
+ }
+ "/functions/watchdogtimers/reset" {
+ $Variables.WatchDogTimers = @()
+ $Variables.Miners.ForEach(
+ {
+ $_.Reasons = [System.Collections.Generic.List[String]]@($_.Reasons.Where({ $_ -notlike "Miner suspended by watchdog *" }) | Sort-Object -Unique)
+ $_.Where({ -not $_.Reasons }).ForEach({ $_.Available = $true })
+ }
+ )
+ $Variables.Pools.ForEach(
+ {
+ $_.Reasons = [System.Collections.Generic.List[String]]@($_.Reasons.Where({ $_ -notlike "*Pool suspended by watchdog" }) | Sort-Object -Unique)
+ $_.Where({ -not $_.Reasons }).ForEach({ $_.Available = $true })
+ }
+ )
+ Write-Message -Level Verbose "Web GUI: All watchdog timers reset."
+ $Data = "Watchdog timers will be recreated in next cycle."
+ Break
+ }
+ "/algorithms" {
+ $Data = ConvertTo-Json -Depth 10 @($Variables.Algorithms | Select-Object)
+ Break
+ }
+ "/algorithms/lastused" {
+ $Data = ConvertTo-Json -Depth 10 $Variables.AlgorithmsLastUsed
+ Break
+ }
+ "/allcurrencies" {
+ $Data = ConvertTo-Json -Depth 10 @($Variables.AllCurrencies)
+ break
+ }
+ "/apiversion" {
+ $Data = $APIVersion
+ Break
+ }
+ "/balances" {
+ $Data = ConvertTo-Json -Depth 10 ($Variables.Balances | Sort-Object -Property DateTime -Bottom 10000 | Select-Object)
+ Break
+ }
+ "/balancedata" {
+ $Data = ConvertTo-Json -Depth 10 @($Variables.BalancesData | Sort-Object -Property DateTime -Descending)
+ Break
+ }
+ "/btc" {
+ $Data = $Variables.Rates.BTC.($Config.FIATcurrency)
+ Break
+ }
+ "/balancescurrencies" {
+ $Data = ConvertTo-Json -Depth 10 @($Variables.BalancesCurrencies)
+ break
+ }
+ "/braindata" {
+ $Data = ConvertTo-Json -Depth 2 ($Variables.BrainData | Get-SortedObject)
+ Break
+ }
+ "/coinnames" {
+ $Data = Get-Content -Path ".\Data\CoinNames.json"
+ Break
+ }
+ "/config" {
+ $Data = ConvertTo-Json -Depth 10 (Get-Content -Path $Variables.ConfigFile | ConvertFrom-Json -Depth 10 | Get-SortedObject)
+ If (-not ($Data | ConvertFrom-Json).ConfigFileVersion) {
+ $Data = ConvertTo-Json -Depth 10 ($Config | Select-Object -ExcludeProperty PoolsConfig)
+ }
+ Break
+ }
+ "/configfile" {
+ $Data = $Variables.ConfigFile
+ break
+ }
+ "/configrunning" {
+ $Data = ConvertTo-Json -Depth 10 ($Config | Get-SortedObject)
+ Break
+ }
+ "/currency" {
+ $Data = $Config.FIATcurrency
+ Break
+ }
+ "/currencyalgorithm" {
+ $Data = Get-Content -Path ".\Data\CurrencyAlgorithm.json"
+ Break
+ }
+ "/dagdata" {
+ $Data = ConvertTo-Json -Depth 10 ($Variables.DAGdata | Select-Object)
+ Break
+ }
+ "/devices" {
+ $Data = ConvertTo-Json -Depth 10 @($Variables.Devices | Select-Object | Sort-Object -Property Name)
+ Break
+ }
+ "/devices/enabled" {
+ $Data = ConvertTo-Json -Depth 10 @($Variables.Devices.Where({ $_.State -eq "Enabled" }) | Sort-Object -Property Name)
+ Break
+ }
+ "/devices/disabled" {
+ $Data = ConvertTo-Json -Depth 10 @($Variables.Devices.Where({ $_.State -eq "Disabled" }) | Sort-Object -Property Name)
+ Break
+ }
+ "/devices/unsupported" {
+ $Data = ConvertTo-Json -Depth 10 @($Variables.Devices.Where({ $_.State -eq "Unsupported" }) | Sort-Object -Property Name)
+ Break
+ }
+ "/donationdata" {
+ $Data = ConvertTo-Json $Variables.DonationData
+ Break
+ }
+ "/donationlog" {
+ $Data = ConvertTo-Json $Variables.DonationLog
+ Break
+ }
+ "/driverversion" {
+ $Data = ConvertTo-Json -Depth 10 ($Variables.DriverVersion | Select-Object)
+ Break
+ }
+ "/earningschartdata" {
+ $Data = ConvertTo-Json $Variables.EarningsChartData
+ Break
+ }
+ "/equihashcoinpers" {
+ $Data = Get-Content -Path ".\Data\EquihashCoinPers.json"
+ Break
+ }
+ "/extracurrencies" {
+ $Data = ConvertTo-Json -Depth 10 $Config.ExtraCurrencies
+ break
+ }
+ "/fiatcurrencies" {
+ $Data = ConvertTo-Json -Depth 10 ($Variables.FIATcurrencies | Select-Object)
+ Break
+ }
+ "/miners" {
+ $Data = ConvertTo-Json -Depth 4 -Compress @(($Variables.Miners | Select-Object -ExcludeProperty Arguments, Data, DataReaderJob, DataSampleTimestamp, Devices, EnvVars, PoolNames, Process, ProcessJob, SideIndicator, StatEnd, StatStart, ValidDataSampleTimestamp).ForEach({ If ($_.WorkersRunning) { $_.Workers = $_.WorkersRunning }; $_ }) | Select-Object -ExcludeProperty WorkersRunning | Sort-Object @{ Expression = { $_.Best }; Descending = $true }, DeviceNames, Name)
+ Break
+ }
+ "/miners/available" {
+ $Bias = If ($Variables.CalculatePowerCost -and -not $Config.IgnorePowerCost) { "Profit_Bias" } Else { "Earning_Bias" }
+ $Data = ConvertTo-Json -Depth 4 @($Variables.Miners.Where({ $_.Available }) | Select-Object -ExcludeProperty Arguments, Data, DataReaderJob, DataSampleTimestamp, Devices, EnvVars, PoolNames, Process, ProcessJob, SideIndicator, StatEnd, StatStart, ValidDataSampleTimestamp | Sort-Object DeviceNames, @{ Expression = $Bias; Descending = $true })
+ Remove-Variable Bias
+ Break
+ }
+ "/miners/bestperdevice" {
+ $Data = ConvertTo-Json -Depth 4 @(($Variables.MinersBestPerDevice | Select-Object -ExcludeProperty Arguments, Data, DataReaderJob, DataSampleTimestamp, Devices, EnvVars, PoolNames, Process, ProcessJob, SideIndicator, StatEnd, StatStart, ValidDataSampleTimestamp).ForEach({ If ($_.WorkersRunning) { $_.Workers = $_.WorkersRunning }; $_ }) | Select-Object -ExcludeProperty WorkersRunning | Sort-Object -Property DeviceName)
+ Break
+ }
+ "/miners/best" {
+ $Data = ConvertTo-Json -Depth 4 @($Variables.MinersBest | Sort-Object DeviceNames | Select-Object -ExcludeProperty Arguments, Data, DataReaderJob, DataSampleTimestamp, Devices, EnvVars, PoolNames, Process, ProcessJob, StatEnd, StatStart, SideIndicator, ValidDataSampleTimestamp)
+ Break
+ }
+ "/miners/disabled" {
+ $Data = ConvertTo-Json -Depth 4 @($Variables.Miners.Where({ $_.Status -eq [MinerStatus]::Disabled }) | Select-Object -ExcludeProperty Arguments, Data, DataReaderJob, DataSampleTimestamp, Devices, EnvVars, PoolNames, Process, ProcessJob, SideIndicator, StatEnd, StatStart, ValidDataSampleTimestamp | Sort-Object -Property { $_.DeviceNames }, EndTime)
+ Break
+ }
+ "/miners/failed" {
+ $Data = ConvertTo-Json -Depth 4 @($Variables.Miners.Where({ $_.Status -eq [MinerStatus]::Failed }) | Select-Object -ExcludeProperty Arguments, Data, DataReaderJob, DataSampleTimestamp, Devices, EnvVars, PoolNames, Process, ProcessJob, SideIndicator, StatEnd, StatStart, ValidDataSampleTimestamp | Sort-Object -Property { $_.DeviceNames }, EndTime)
+ Break
+ }
+ "/miners/launched" {
+ $Data = ConvertTo-Json -Depth 4 @(($Variables.MinersBest | Select-Object -ExcludeProperty Arguments, Data, DataReaderJob, DataSampleTimestamp, Devices, EnvVars, PoolNames, Process, ProcessJob, SideIndicator, StatEnd, StatStart, ValidDataSampleTimestamp).ForEach({ $_.Workers = $_.WorkersRunning; $_ }) | Select-Object -ExcludeProperty WorkersRunning)
+ Break
+ }
+ "/miners/optimal" {
+ $Bias = If ($Variables.CalculatePowerCost -and -not $Config.IgnorePowerCost) { "Profit_Bias" } Else { "Earning_Bias" }
+ $Data = ConvertTo-Json -Depth 4 @($Variables.MinersOptimal | Select-Object -ExcludeProperty Arguments, Data, DataReaderJob, DataSampleTimestamp, Devices, EnvVars, PoolNames, Process, ProcessJob, SideIndicator, StatEnd, StatStart, ValidDataSampleTimestamp | Sort-Object @{ Expression = { $_.Best }; Descending = $true }, DeviceNames, @{ Expression = $Bias; Descending = $true })
+ Remove-Variable Bias
+ Break
+ }
+ "/miners/running" {
+ $Data = ConvertTo-Json -Depth 4 @(($Variables.Miners.Where({ $_.Status -eq [MinerStatus]::Running }) | Select-Object -ExcludeProperty Arguments, Data, DataReaderJob, DataSampleTimestamp, Devices, EnvVars, PoolNames, Process, ProcessJob, SideIndicator, StatEnd, StatStart, ValidDataSampleTimestamp).ForEach({ $_.Workers = $_.WorkersRunning; $_ }) | Select-Object -ExcludeProperty WorkersRunning)
+ Break
+ }
+ "/miners/unavailable" {
+ $Data = ConvertTo-Json -Depth 4 @($Variables.Miners.Where({ $_.Available -ne $true }) | Select-Object -ExcludeProperty Arguments, Data, DataReaderJob, DataSampleTimestamp, Devices, EnvVars, PoolNames, Process, ProcessJob, SideIndicator, StatEnd, StatStart, ValidDataSampleTimestamp | Sort-Object -Property { $_.DeviceNames }, Name, Algorithm)
+ Break
+ }
+ "/miningpowercost" {
+ $Data = $Variables.MiningPowerCost
+ Break
+ }
+ "/miningearning" {
+ $Data = $Variables.MiningEarning
+ Break
+ }
+ "/miningprofit" {
+ $Data = $Variables.MiningProfit
+ Break
+ }
+ "/poolname" {
+ $Data = ConvertTo-Json -Depth 10 $Config.PoolName
+ break
+ }
+ "/pooldata" {
+ $Data = ConvertTo-Json -Depth 10 $Variables.PoolData
+ break
+ }
+ "/poolsconfig" {
+ $Data = ConvertTo-Json -Depth 10 ($Config.PoolsConfig | Select-Object)
+ Break
+ }
+ "/poolsconfigfile" {
+ $Data = $Config.PoolsConfigFile
+ Break
+ }
+ "/pools" {
+ $Data = ConvertTo-Json -Depth 10 @($Variables.Pools | Select-Object | Sort-Object -Property Algorithm, Name, Region)
+ Break
+ }
+ "/pools/added" {
+ $Data = ConvertTo-Json -Depth 10 @($Variables.PoolsAdded | Select-Object | Sort-Object -Property Algorithm, Name, Region)
+ Break
+ }
+ "/pools/available" {
+ $Data = ConvertTo-Json -Depth 10 @($Variables.Pools.Where({ $_.Available }) | Select-Object | Sort-Object -Property Algorithm, Name, Region)
+ Break
+ }
+ "/pools/best" {
+ $Data = ConvertTo-Json -Depth 10 @($Variables.PoolsBest | Select-Object | Sort-Object -Property Algorithm, Name, Region)
+ Break
+ }
+ "/pools/expired" {
+ $Data = ConvertTo-Json -Depth 10 @($Variables.PoolsExpired | Select-Object | Sort-Object -Property Algorithm, Name, Region)
+ Break
+ }
+ "/pools/new" {
+ $Data = ConvertTo-Json -Depth 10 @($Variables.PoolsNew | Select-Object | Sort-Object -Property Algorithm, Name, Region)
+ Break
+ }
+ "/pools/minersprimaryalgorithm" {
+ $Data = ConvertTo-Json -Depth 10 @($Variables.MinerPools[0] | Select-Object)
+ Break
+ }
+ "/pools/minerssecondaryalgorithm" {
+ $Data = ConvertTo-Json -Depth 10 @($Variables.MinerPools[1] | Select-Object)
+ Break
+ }
+ "/pools/lastearnings" {
+ $Data = ConvertTo-Json -Depth 10 $Variables.PoolsLastEarnings
+ Break
+ }
+ "/pools/lastused" {
+ $Data = ConvertTo-Json -Depth 10 $Variables.PoolsLastUsed
+ Break
+ }
+ "/pools/unavailable" {
+ $Data = ConvertTo-Json -Depth 10 @($Variables.Pools.Where({ -not $_.Available }) | Sort-Object -Property Algorithm, Name, Region)
+ Break
+ }
+ "/pools/updated" {
+ $Data = ConvertTo-Json -Depth 10 @($Variables.PoolsUpdated | Select-Object | Sort-Object -Property Algorithm, Name, Region)
+ Break
+ }
+ "/poolreasons" {
+ $Data = ConvertTo-Json -Depth 10 ($Variables.Pools.Where({ -not $_.Available }).Reasons | Sort-Object -Unique)
+ Break
+ }
+ "/poolvariants" {
+ $Data = ConvertTo-Json -Depth 10 $Variables.PoolVariants
+ break
+ }
+ "/rates" {
+ $Data = ConvertTo-Json -Depth 10 ($Variables.Rates | Select-Object)
+ Break
+ }
+ "/refreshtimestamp" {
+ $Data = $Variables.RefreshTimestamp | ConvertTo-Json
+ break
+ }
+ "/regions" {
+ $Data = ConvertTo-Json -Depth 10 @($Variables.Regions[0] | Sort-Object)
+ Break
+ }
+ "/regionsdata" {
+ $Data = ConvertTo-Json -Depth 10 $Variables.Regions
+ Break
+ }
+ "/stats" {
+ $Data = ConvertTo-Json -Depth 10 ($Stats | Select-Object)
+ Break
+ }
+ "/summarytext" {
+ $Data = ConvertTo-Json -Depth 10 @((($Variables.Summary -replace ' / ', '/' -replace ' ', ' ' -replace ' ', ' ') -split '
').trim())
+ Break
+ }
+ "/summary" {
+ $Data = ConvertTo-Json -Depth 10 @($Variables.Summary | Select-Object)
+ Break
+ }
+ "/switchinglog" {
+ $Data = ConvertTo-Json -Depth 10 @(Get-Content ".\Logs\switchinglog.csv" | ConvertFrom-Csv | Select-Object -Last 1000 | Sort-Object -Property DateTime -Descending)
+ Break
+ }
+ "/unprofitablealgorithms" {
+ $Data = ConvertTo-Json -Depth 10 @($Variables.UnprofitableAlgorithms | Select-Object)
+ Break
+ }
+ "/version" {
+ $Data = ConvertTo-Json @("$($Variables.Branding.ProductLabel) Version: $($Variables.Branding.Version)", "API Version: $($Variables.APIVersion)", "PWSH Version: $($PSVersionTable.PSVersion.ToString())")
+ Break
+ }
+ "/watchdogtimers" {
+ $Data = ConvertTo-Json -Depth 10 @($Variables.WatchdogTimers | Select-Object)
+ Break
+ }
+ "/wallets" {
+ $Data = ConvertTo-Json -Depth 10 ($Config.Wallets | Select-Object)
+ Break
+ }
+ "/watchdogexpiration" {
+ $Data = $Variables.WatchdogReset
+ Break
+ }
+ "/workers" {
+ If ($Config.ShowWorkerStatus -and $Config.MonitoringUser -and $Config.MonitoringServer -and $Variables.WorkersLastUpdated -lt [DateTime]::Now.AddSeconds(-30)) {
+ Read-MonitoringData
+ }
+ $Workers = [System.Collections.ArrayList]@(
+ $Variables.Workers | Select-Object @(
+ @{ Name = "Algorithm"; Expression = { ($_.data.ForEach({ $_.Algorithm -split ',' -join " & " })) -join '
' } },
+ @{ Name = "Benchmark Hashrate"; Expression = { ($_.data.ForEach({ ($_.EstimatedSpeed.ForEach({ If ([Double]$_ -gt 0) { "$($_ | ConvertTo-Hash)/s" -replace '\s+', ' ' } Else { "-" } })) -join " & " })) -join '
' } },
+ @{ Name = "Currency"; Expression = { $_.Data.Currency | Select-Object -Unique } },
+ @{ Name = "EstimatedEarning"; Expression = { [Decimal](($_.Data.Earning | Measure-Object -Sum | Select-Object -ExpandProperty Sum) * $Variables.Rates.BTC.($_.Data.Currency | Select-Object -Unique)) } },
+ @{ Name = "EstimatedProfit"; Expression = { [Decimal]($_.Profit * $Variables.Rates.BTC.($_.Data.Currency | Select-Object -Unique)) } },
+ @{ Name = "LastSeen"; Expression = { "$($_.date)" } },
+ @{ Name = "Live Hashrate"; Expression = { ($_.data.ForEach({ ($_.CurrentSpeed.ForEach({ If ([Double]$_ -gt 0) { "$($_ | ConvertTo-Hash)/s" -replace '\s+', ' ' } Else { '-' } })) -join " & " })) -join '
' } },
+ @{ Name = "Miner"; Expression = { $_.data.name -join '
'} },
+ @{ Name = "Pool"; Expression = { ($_.data.ForEach({ (($_.Pool -split ",").ForEach({ $_ -replace 'Internal$', ' (Internal)' -replace 'External', ' (External)' })) -join " & "})) -join '
' } },
+ @{ Name = "Status"; Expression = { $_.status } },
+ @{ Name = "Version"; Expression = { $_.version } },
+ @{ Name = "Worker"; Expression = { $_.worker } }
+ ) | Sort-Object -Property "Worker"
+ )
+ $Data = ConvertTo-Json @($Workers | Select-Object) -Depth 4
+ Break
+ }
+ Default {
+ # Set index page
+ If ($Path -eq "/") { $Path = "/index.html" }
+
+ # Check if there is a file with the requested path
+ $Filename = "$BasePath$Path"
+ If (Test-Path -LiteralPath $Filename -PathType Leaf) {
+ # If the file is a PowerShell script, execute it and return the output. A $Parameters parameter is sent built from the query string
+ # Otherwise, just return the contents of the file
+ $File = Get-ChildItem $Filename -File
+
+ If ($File.Extension -eq ".ps1") {
+ $Data = & $File.FullName -Parameters $Parameters
+ }
+ Else {
+ $Data = Get-Content $Filename -Raw
+
+ # Process server side includes for html files
+ # Includes are in the traditional '' format used by many web servers
+ If ($File.Extension -eq ".html") {
+ $IncludeRegex = [regex]''
+ $IncludeRegex.Matches($Data).Foreach(
+ {
+ $IncludeFile = $BasePath + '/' + $_.Groups[1].Value
+ If (Test-Path -LiteralPath $IncludeFile -PathType Leaf) {
+ $IncludeData = Get-Content $IncludeFile -Raw
+ $Data = $Data -replace $_.Value, $IncludeData
+ }
+ }
+ )
+ }
+ }
+
+ # Set content type based on file extension
+ If ($MIMETypes.ContainsKey($File.Extension)) {
+ $ContentType = $MIMETypes[$File.Extension]
+ }
+ Else {
+ # If it's an unrecognized file type, prompt for download
+ $ContentType = "application/octet-stream"
+ }
+ }
+ Else {
+ $StatusCode = 404
+ $ContentType = "text/html"
+ $Data = "URI '$Path' is not a valid resource."
+ }
+ }
+}
+
+# If $Data is null, the API will just return whatever data was in the previous request. Instead, show an error
+# This happens if the script just started and hasn't filled all the properties in yet.
+If ($null -eq $Data) {
+ $Data = @{ "Error" = "API data not available" } | ConvertTo-Json
+}
+
+$Data
\ No newline at end of file
diff --git a/Includes/Dev/GetMinerData2.ps1 b/Includes/Dev/GetMinerData2.ps1
new file mode 100644
index 00000000..7ca46625
--- /dev/null
+++ b/Includes/Dev/GetMinerData2.ps1
@@ -0,0 +1,53 @@
+<#
+Copyright (c) 2018-2024 UselessGuru
+
+UG-Miner is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+UG-Miner is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see .
+#>
+
+<#
+Product: UG-Miner
+File: GetMinerData.ps1
+Version: 4.2.1.0
+Version date: 02 September 2022
+#>
+
+using module ".\Include.psm1"
+
+[CmdletBinding()]
+Param(
+ [Parameter(Mandatory = $true)]
+ [Miner]$Miner
+)
+
+Try {
+
+
+ "$($Miner.name) Start" > "$($Miner.Name)_Debug.txt"
+
+ $Miner.
+ While ($true) {
+ "$($Miner.name) '$($Miner.DataCollectInterval)'" >> "$($Miner.Name)_Debug.txt"
+ $NextLoop = [DateTime]::Now.AddSeconds($Miner.DataCollectInterval)
+ If ($Data = $Miner.GetMinerData()) {
+ $Miner.LastSample = $Data
+ $Miner.Data.Add($Data)
+ $Data | ConvertTo-Json >> "$($Miner.name)_Data.txt"
+ }
+
+ While ([DateTime]::Now -lt $NextLoop) { Start-Sleep -Milliseconds 200 }
+ }
+}
+Catch {
+ Return $Error[0]
+}
diff --git a/Includes/Dev/GetMinerDataRunspace.ps1 b/Includes/Dev/GetMinerDataRunspace.ps1
new file mode 100644
index 00000000..6ec550d6
--- /dev/null
+++ b/Includes/Dev/GetMinerDataRunspace.ps1
@@ -0,0 +1,47 @@
+# Setup runspace to collect miner data in a separate thread
+$Runspace = [RunspaceFactory]::CreateRunspace()
+$Runspace.Name = "$($this.Name)_GetMinerData"
+$Runspace.Open()
+
+[Void]$Runspace.SessionStateProxy.Path.SetLocation($Variables.MainPath)
+
+# $Runspace.SessionStateProxy.SetVariable('Miner', $this)
+$Runspace.SessionStateProxy.SetVariable('Miner', $Miner)
+# $Runspace.SessionStateProxy.SetVariable('Config', $Config)
+# $Runspace.SessionStateProxy.SetVariable('Variables', $Variables)
+
+$PowerShell = [PowerShell]::Create()
+$PowerShell.Runspace = $Runspace
+$PowerShell.AddScript(
+ {
+ $ScriptBody = "using module .\Includes\Include.psm1"; $Script = [ScriptBlock]::Create($ScriptBody); . $Script
+
+ $Data = [PSCustomObject]@{ }
+
+ While ($true) {
+ $NextLoop = [DateTime]::Now.AddSeconds($Miner.DataCollectInterval)
+ Try {
+ "$($Miner.name) '$($Miner.DataCollectInterval)' 1" >> "$($Miner.Name)_Debug.txt"
+ If ($Data = $Miner.GetMinerData()) {
+ "$($Miner.name) '$($Miner.DataCollectInterval)' 2" >> "$($Miner.Name)_Debug.txt"
+ $Miner.LastSample = $Data
+ $Miner.Data += $Data
+ $Data | ConvertTo-Json >> "$($Miner.name)_Data.txt"
+ }
+ }
+ Catch {
+ "$($Miner.name) '$($Miner.DataCollectInterval)' 3" >> "$($Miner.Name)_Debug.txt"
+ $Error[0] >> "$($Miner.Name)_Debug.txt"
+ }
+ While (([DateTime]::Now -lt $NextLoop) { Start-Sleep -Milliseconds 200 }
+ }
+ }
+)
+
+$AsyncObject = $PowerShell.BeginInvoke()
+# $Miner.GetMinerDataRunspace = $Runspace
+# $Miner.GetMinerDataPowerShell = $PowerShell
+
+# $Miner.GetMinerDataRunspace | Add-Member -Force @{
+# AsyncObject = $AsyncObject
+# }
diff --git a/Includes/Dev/SSE.ps1 b/Includes/Dev/SSE.ps1
new file mode 100644
index 00000000..612779f5
--- /dev/null
+++ b/Includes/Dev/SSE.ps1
@@ -0,0 +1,23 @@
+
+$Body = @{
+ title = "foo"
+ body = "bar"
+ userId = 1
+}
+
+# The ContentType will automatically be set to application/x-www-form-urlencoded for
+# all POST requests, unless specified otherwise.
+$Params = @{
+ Method = "Put"
+ Uri = "http://localhost:3999/"
+ Body = $JsonBody
+ ContentType = "text/event-stream"
+ Headers = @{
+ "Connection" = "keep-alive"
+ "Cache-Control" = "no-cache"
+ }
+}
+
+$Result = Invoke-RestMethod @Params
+
+Start-Sleep -Seconds 0
\ No newline at end of file
diff --git a/Includes/Downloader.ps1 b/Includes/Downloader.ps1
index 8ff8d9f1..b1054911 100644
--- a/Includes/Downloader.ps1
+++ b/Includes/Downloader.ps1
@@ -18,8 +18,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
File: \Includes\Downloader.ps1
-Version: 6.3.1
-Version date: 2024/09/06
+Version: 6.3.2
+Version date: 2024/09/09
#>
using module .\Includes\Include.psm1
@@ -48,6 +48,7 @@ $ProgressPreference = "SilentlyContinue"
Expand-WebRequest $URI $Path -ErrorAction Stop
}
Write-Message -Level Info "Downloader:
Installed downloaded miner binary '$($Path.Replace("$($Variables.MainPath)\", ''))'."
+ If (Get-Command "Unblock-File" -ErrorAction Ignore) { $Path | Unblock-File }
}
Catch {
$Path_Old = $null
diff --git a/Includes/Include.psm1 b/Includes/Include.psm1
index 7b6bbaeb..e266df17 100644
--- a/Includes/Include.psm1
+++ b/Includes/Include.psm1
@@ -18,8 +18,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
File: \Includes\include.ps1
-Version: 6.3.1
-Version date: 2024/09/06
+Version: 6.3.2
+Version date: 2024/09/09
#>
$Global:DebugPreference = "SilentlyContinue"
@@ -795,7 +795,7 @@ Function Stop-Core {
}
If ($Variables.Miners) {
- ForEach ($Miner in $Variables.Miners.Where({ [MinerStatus]::DryRun, [MinerStatus]::Running -contains $_.Status })) {
+ ForEach ($Miner in $Variables.Miners.Where({ [MinerStatus]::Running, [MinerStatus]::DryRun -contains $_.Status })) {
ForEach ($Worker in $Miner.WorkersRunning) {
If ($WatchdogTimers = @($Variables.WatchdogTimers.Where({ $_.MinerName -eq $Miner.Name -and $_.PoolName -eq $Worker.Pool.Name -and $_.PoolRegion -eq $Worker.Pool.Region -and $_.AlgorithmVariant -eq $Worker.Pool.AlgorithmVariant -and $_.DeviceNames -eq $Miner.DeviceNames }))) {
# Remove Watchdog timers
@@ -3058,7 +3058,7 @@ Function Update-DAGdata {
If ($AlgorithmNorm -match $Variables.RegexAlgoHasDAG) {
If ($DAGdataResponse.coins.$_.last_block -ge $Variables.DAGdata.Currency.$Currency.BlockHeight) {
$DAGdata = Get-DAGdata -BlockHeight $DAGdataResponse.coins.$_.last_block -Currency $Currency -EpochReserve 2
- If ($DAGdata.Epoch -and $DAGdata.Algorithm -match $Variables.RegexAlgoHasDAG) {
+ If ($DAGdata.BlockHeight -and $DAGdata.Algorithm -match $Variables.RegexAlgoHasDAG) {
$DAGdata | Add-Member Date ([DateTime]::Now.ToUniversalTime()) -Force
$DAGdata | Add-Member Url $Url -Force
$Variables.DAGdata.Currency | Add-Member $Currency $DAGdata -Force
@@ -3183,6 +3183,32 @@ Function Update-DAGdata {
# }
# }
+ # Update on script start, once every 24hrs or if unable to get data from source
+ $Currency = "TLS"
+ $Url = "https://telestai.cryptoscope.io/api/getblockcount/"
+ If (-not $Variables.DAGdata.Currency.$Currency.BlockHeight -or $Variables.DAGdata.Updated.$Url -lt $Variables.ScriptStartTime -or $Variables.DAGdata.Updated.$Url -lt [DateTime]::Now.ToUniversalTime().AddDays(-1)) {
+ # Get block data from StakeCube block explorer
+ Try {
+ Write-Message -Level Info "Loading DAG data from '$Url'..."
+ $DAGdataResponse = Invoke-RestMethod -Uri $Url -TimeoutSec 15
+ If ((Get-AlgorithmFromCurrency -Currency $Currency) -and $DAGdataResponse.blockcount -gt $Variables.DAGdata.Currency.$Currency.BlockHeight) {
+ $DAGdata = Get-DAGdata -BlockHeight $DAGdataResponse.blockcount -Currency $Currency -EpochReserve 2
+ If ($DAGdata.Epoch) {
+ $DAGdata | Add-Member Date ([DateTime]::Now.ToUniversalTime()) -Force
+ $DAGdata | Add-Member Url $Url -Force
+ $Variables.DAGdata.Currency | Add-Member $Currency $DAGdata -Force
+ $Variables.DAGdata.Updated | Add-Member $Url ([DateTime]::Now.ToUniversalTime()) -Force
+ }
+ Else {
+ Write-Message -Level Warn "Failed to load DAG data for '$Currency' from '$Url'."
+ }
+ }
+ }
+ Catch {
+ Write-Message -Level Warn "Failed to load DAG data from '$Url'."
+ }
+ }
+
# Update on script start, once every 24hrs or if unable to get data from source
$Currency = "SCC"
$Url = "https://scc.ccore.online/api/getblockcount"
@@ -3302,7 +3328,8 @@ Function Update-DAGdata {
Epoch = [Int]($DAGdataKeys.Where({ $Variables.DAGdata.Currency.$_.Algorithm -eq $Algorithm }).ForEach({ $Variables.DAGdata.Currency.$_.Epoch }) | Measure-Object -Maximum).Maximum
}
) -Force
- $Variables.DAGdata.Algorithm.$Algorithm | Add-Member CoinName ($DAGdataKeys.Where({ $Variables.DAGdata.Currency.$_.DAGsize -eq $Variables.DAGdata.Algorithm.$Algorithm.DAGsize -and $Variables.DAGdata.Currency.$_.Algorithm -eq $Algorithm })) -Force
+ $Variables.DAGdata.Algorithm.$Algorithm | Add-Member Currency ($DAGdataKeys.Where({ $Variables.DAGdata.Currency.$_.DAGsize -eq $Variables.DAGdata.Algorithm.$Algorithm.DAGsize -and $Variables.DAGdata.Currency.$_.Algorithm -eq $Algorithm })) -Force
+ $Variables.DAGdata.Algorithm.$Algorithm | Add-Member CoinName ($Variables.CoinNames[$Variables.DAGdata.Algorithm.$Algorithm.Currency]) -Force
}
Catch {
Start-Sleep 0
@@ -3313,7 +3340,7 @@ Function Update-DAGdata {
$Variables.DAGdata.Currency | Add-Member "*" (
[PSCustomObject]@{
BlockHeight = [Int]($DAGdataKeys.ForEach({ $Variables.DAGdata.Currency.$_.BlockHeight }) | Measure-Object -Maximum).Maximum
- CoinName = "*"
+ Currency = "*"
DAGsize = [Int64]($DAGdataKeys.ForEach({ $Variables.DAGdata.Currency.$_.DAGsize }) | Measure-Object -Maximum).Maximum
Epoch = [Int]($DAGdataKeys.ForEach({ $Variables.DAGdata.Currency.$_.Epoch }) | Measure-Object -Maximum).Maximum
}
@@ -3459,16 +3486,17 @@ Function Get-DAGepochLength {
)
Switch ($Algorithm) {
- "Autolykos2" { Return 1024 }
- "EtcHash" { If ($BlockHeight -ge 11700000) { Return 60000 } Else { Return 30000 } }
- "EthashSHA256" { Return 4000 }
- "EvrProgPow" { Return 12000 }
- "FiroPow" { Return 1300 }
- "KawPow" { Return 7500 }
- "MeowPow" { Return 7500 } # https://github.com/Meowcoin-Foundation/meowpowminer/blob/6e1f38c1550ab23567960699ba1c05aad3513bcd/libcrypto/ethash.hpp#L32
- "Octopus" { Return 524288 }
- "SCCpow" { Return 3240 } # https://github.com/stakecube/sccminer/commit/16bdfcaccf9cba555f87c05f6b351e1318bd53aa#diff-200991710fe4ce846f543388b9b276e959e53b9bf5c7b7a8154b439ae8c066aeR32
- Default { Return 30000 }
+ "Autolykos2" { Return 1024 }
+ "EtcHash" { If ($BlockHeight -ge 11700000) { Return 60000 } Else { Return 30000 } }
+ "EthashSHA256" { Return 4000 }
+ "EvrProgPow" { Return 12000 }
+ "FiroPow" { Return 1300 }
+ "KawPow" { Return 7500 }
+ "MeowPow" { Return 7500 } # https://github.com/Meowcoin-Foundation/meowpowminer/blob/6e1f38c1550ab23567960699ba1c05aad3513bcd/libcrypto/ethash.hpp#L32
+ "Octopus" { Return 524288 }
+ "SCCpow" { Return 3240 } # https://github.com/stakecube/sccminer/commit/16bdfcaccf9cba555f87c05f6b351e1318bd53aa#diff-200991710fe4ce846f543388b9b276e959e53b9bf5c7b7a8154b439ae8c066aeR32
+ "ProgPowTelestai" { Return 12000 }
+ Default { Return 30000 }
}
}
diff --git a/Includes/LegacyGUI.ps1 b/Includes/LegacyGUI.ps1
index 63788fb8..49cbec8d 100644
--- a/Includes/LegacyGUI.ps1
+++ b/Includes/LegacyGUI.ps1
@@ -18,8 +18,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
File: \Includes\LegacyGUI.psm1
-Version: 6.3.0
-Version date: 2024/09/01
+Version: 6.3.2
+Version date: 2024/09/09
#>
[Void][System.Reflection.Assembly]::Load("System.Windows.Forms")
@@ -81,28 +81,32 @@ Function CheckBoxSwitching_Click {
$LegacyGUIswitchingPageControls.ForEach({ If ($_.Checked) { $SwitchingDisplayTypes += $_.Tag } })
If (Test-Path -LiteralPath ".\Logs\SwitchingLog.csv" -PathType Leaf) {
$LegacyGUIswitchingLogLabel.Text = "Switching log updated $((Get-ChildItem -Path ".\Logs\SwitchingLog.csv").LastWriteTime.ToString())"
- $LegacyGUIswitchingDGV.DataSource = (([System.IO.File]::ReadAllLines("$PWD\Logs\SwitchingLog.csv") | ConvertFrom-Csv).Where({ $SwitchingDisplayTypes -contains $_.Type }) | 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 $LegacyGUIswitchingDGV.Rows) { $Row.DefaultCellStyle.Backcolor = $LegacyGUIcolors[$Row.DataBoundItem.Action] }
+ If (-not $LegacyGUIswitchingDGV.SelectedRows) {
+ $LegacyGUIswitchingDGV.DataSource = (([System.IO.File]::ReadAllLines("$PWD\Logs\SwitchingLog.csv") | ConvertFrom-Csv).Where({ $SwitchingDisplayTypes -contains $_.Type }) | 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
+ $LegacyGUIswitchingLogClearButton.Enabled = $true
+ }
+ $LegacyGUIswitchingDGV.ClearSelection()
+ $LegacyGUIswitchingDGV.EndInit()
}
- $LegacyGUIswitchingDGV.ClearSelection()
- $LegacyGUIswitchingDGV.EndInit()
}
- Else { $LegacyGUIswitchingLogLabel.Text = "Switching log - no data" }
-
- $LegacyGUIswitchingLogClearButton.Enabled = [Boolean]$LegacyGUIswitchingDGV.Columns
+ Else {
+ $LegacyGUIswitchingLogLabel.Text = "Switching log - no data"
+ $LegacyGUIswitchingLogClearButton.Enabled = $false
+ }
+ If ($Config.UseColorForMinerStatus) {
+ ForEach ($Row in $LegacyGUIswitchingDGV.Rows) { $Row.DefaultCellStyle.Backcolor = $LegacyGUIcolors[$Row.DataBoundItem.Action] }
+ }
}
Function Set-DataGridViewDoubleBuffer {
@@ -123,6 +127,8 @@ Function Update-TabControl {
Switch ($LegacyGUItabControl.SelectedTab.Text) {
"System status" {
+ $LegacyGUIactiveMinersLabel.Text = If ($Variables.MinersBest) { "Active miners updated $([DateTime]::Now.ToString())" } Else { "No miners running." }
+
$LegacyGUIcontextMenuStripItem1.Text = "Re-benchmark"
$LegacyGUIcontextMenuStripItem1.Visible = $true
$LegacyGUIcontextMenuStripItem2.Text = "Re-measure power consumption"
@@ -137,9 +143,7 @@ Function Update-TabControl {
$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)) {
+ If (-not $LegacyGUIactiveMinersDGV.SelectedRows) {
$LegacyGUIactiveMinersDGV.BeginInit()
$LegacyGUIactiveMinersDGV.ClearSelection()
$LegacyGUIactiveMinersDGV.DataSource = $Variables.MinersBest | Select-Object @(
@@ -159,8 +163,9 @@ Function Update-TabControl {
@{ Name = "Total active (hhh:mm:ss)"; Expression = { "{0}:{1:mm}:{1:ss}" -f [Math]::floor($_.TotalMiningDuration.TotalDays * 24), $_.TotalMiningDuration } }
If ($LegacyGUIradioButtonPoolsUnavailable.checked) { @{ Name = "Reason"; Expression = { $_.Reasons -join ", " } } }
) | Sort-Object -Property "Device(s)" | Out-DataTable
+ $LegacyGUIactiveMinersDGV.ClearSelection()
- If ($LegacyGUIactiveMinersDGV.Columns) {
+ If (-not $LegacyGUIactiveMinersDGV.ColumnWidthChanged -and $LegacyGUIactiveMinersDGV.Columns) {
$LegacyGUIactiveMinersDGV.Columns[0].Visible = $false
$LegacyGUIactiveMinersDGV.Columns[1].Visible = $false
$LegacyGUIactiveMinersDGV.Columns[2].FillWeight = 30 + ($Variables.MinersBest.ForEach({ $_.DeviceNames.Count }) | Measure-Object -Maximum).Maximum * 20
@@ -175,11 +180,13 @@ Function Update-TabControl {
$LegacyGUIactiveMinersDGV.Columns[11].FillWeight = 50 + ($Variables.MinersBest.({ $_.Workers.Count }) | Measure-Object -Maximum).Maximum * 25; $LegacyGUIactiveMinersDGV.Columns[11].DefaultCellStyle.Alignment = "MiddleRight"; $LegacyGUIactiveMinersDGV.Columns[11].HeaderCell.Style.Alignment = "MiddleRight"
$LegacyGUIactiveMinersDGV.Columns[12].FillWeight = 65; $LegacyGUIactiveMinersDGV.Columns[12].DefaultCellStyle.Alignment = "MiddleRight"; $LegacyGUIactiveMinersDGV.Columns[12].HeaderCell.Style.Alignment = "MiddleRight"
$LegacyGUIactiveMinersDGV.Columns[13].FillWeight = 65; $LegacyGUIactiveMinersDGV.Columns[13].DefaultCellStyle.Alignment = "MiddleRight"; $LegacyGUIactiveMinersDGV.Columns[13].HeaderCell.Style.Alignment = "MiddleRight"
+
+ $LegacyGUIactiveMinersDGV | Add-Member ColumnWidthChanged $true
}
- Set-TableColor -DataGridView $LegacyGUIactiveMinersDGV
Resize-Form # To fully show lauched miners gridview
$LegacyGUIactiveMinersDGV.EndInit()
}
+ Set-TableColor -DataGridView $LegacyGUIactiveMinersDGV
Break
}
"Earnings" {
@@ -279,49 +286,51 @@ Function Update-TabControl {
Catch {}
}
If ($Config.BalancesTrackerPollInterval -gt 0) {
+ $LegacyGUIbalancesLabel.Text = "Balances data updated $(($Variables.Balances.Values.LastUpdated | Sort-Object -Bottom 1).ToLocalTime().ToString())"
If ($Variables.Balances) {
- $LegacyGUIbalancesLabel.Text = "Balances data updated $(($Variables.Balances.Values.LastUpdated | Sort-Object -Bottom 1).ToLocalTime().ToString())"
+ If (-not $LegacyGUIbalancesDGV.SelectedRows) {
+ $LegacyGUIbalancesDGV.BeginInit()
+ $LegacyGUIbalancesDGV.DataSource = $Variables.Balances.Values | Select-Object @(
+ @{ Name = "Currency"; Expression = { $_.Currency } },
+ @{ Name = "Pool [Currency]"; Expression = { "$($_.Pool) [$($_.Currency)]" } },
+ @{ Name = "Balance ($($Config.FIATcurrency))"; Expression = { "{0:n$($Config.DecimalsMax)}" -f ($_.Balance * $Variables.Rates.($_.Currency).($Config.FIATcurrency)) } },
+ @{ Name = "Avg. $($Config.FIATcurrency)/day"; Expression = { "{0:n$($Config.DecimalsMax)}" -f ($_.AvgDailyGrowth * $Variables.Rates.($_.Currency).($Config.FIATcurrency)) } },
+ @{ Name = "$($Config.FIATcurrency) in 1h"; Expression = { "{0:n$($Config.DecimalsMax)}" -f ($_.Growth1 * $Variables.Rates.($_.Currency).($Config.FIATcurrency)) } },
+ @{ Name = "$($Config.FIATcurrency) in 6h"; Expression = { "{0:n$($Config.DecimalsMax)}" -f ($_.Growth6 * $Variables.Rates.($_.Currency).($Config.FIATcurrency)) } },
+ @{ Name = "$($Config.FIATcurrency) in 24h"; Expression = { "{0:n$($Config.DecimalsMax)}" -f ($_.Growth24 * $Variables.Rates.($_.Currency).($Config.FIATcurrency)) } },
+ @{ Name = "Projected pay date"; Expression = { If ($_.ProjectedPayDate -is [DateTime]) { $_.ProjectedPayDate.ToShortDateString() } Else { $_.ProjectedPayDate } } },
+ @{ Name = "Payout threshold"; Expression = { If ($_.PayoutThresholdCurrency -eq "BTC" -and $Config.UsemBTC) { $PayoutThresholdCurrency = "mBTC"; $mBTCfactor = 1000 } Else { $PayoutThresholdCurrency = $_.PayoutThresholdCurrency; $mBTCfactor = 1 }; "{0:P2} of {1} {2} " -f ($_.Balance / $_.PayoutThreshold * $Variables.Rates.($_.Currency).($_.PayoutThresholdCurrency)), ($_.PayoutThreshold * $mBTCfactor), $PayoutThresholdCurrency } }
+ ) | Sort-Object -Property Pool | Out-DataTable
+ $LegacyGUIbalancesDGV.ClearSelection()
+
+ If ($LegacyGUIbalancesDGV.Columns) {
+ $LegacyGUIbalancesDGV.Columns[0].Visible = $false
+ $LegacyGUIbalancesDGV.Columns[1].FillWeight = 140
+ $LegacyGUIbalancesDGV.Columns[2].FillWeight = 90; $LegacyGUIbalancesDGV.Columns[2].DefaultCellStyle.Alignment = "MiddleRight"; $LegacyGUIbalancesDGV.Columns[2].HeaderCell.Style.Alignment = "MiddleRight"
+ $LegacyGUIbalancesDGV.Columns[3].FillWeight = 90; $LegacyGUIbalancesDGV.Columns[3].DefaultCellStyle.Alignment = "MiddleRight"; $LegacyGUIbalancesDGV.Columns[3].HeaderCell.Style.Alignment = "MiddleRight"
+ $LegacyGUIbalancesDGV.Columns[4].FillWeight = 75; $LegacyGUIbalancesDGV.Columns[4].DefaultCellStyle.Alignment = "MiddleRight"; $LegacyGUIbalancesDGV.Columns[4].HeaderCell.Style.Alignment = "MiddleRight"
+ $LegacyGUIbalancesDGV.Columns[5].FillWeight = 75; $LegacyGUIbalancesDGV.Columns[5].DefaultCellStyle.Alignment = "MiddleRight"; $LegacyGUIbalancesDGV.Columns[5].HeaderCell.Style.Alignment = "MiddleRight"
+ $LegacyGUIbalancesDGV.Columns[6].FillWeight = 75; $LegacyGUIbalancesDGV.Columns[6].DefaultCellStyle.Alignment = "MiddleRight"; $LegacyGUIbalancesDGV.Columns[6].HeaderCell.Style.Alignment = "MiddleRight"
+ $LegacyGUIbalancesDGV.Columns[7].FillWeight = 80
+ $LegacyGUIbalancesDGV.Columns[8].FillWeight = 100
+ }
+ $LegacyGUIbalancesDGV.Rows.ForEach(
+ {
+ $_.Cells[2].ToolTipText = "$($_.Cells[0].Value) {0:n$($Config.DecimalsMax)}" -f ([Double]$_.Cells[2].Value * $Variables.Rates.($Config.FIATcurrency).($_.Cells[0].Value))
+ $_.Cells[3].ToolTipText = "$($_.Cells[0].Value) {0:n$($Config.DecimalsMax)}" -f ([Double]$_.Cells[3].Value * $Variables.Rates.($Config.FIATcurrency).($_.Cells[0].Value))
+ $_.Cells[4].ToolTipText = "$($_.Cells[0].Value) {0:n$($Config.DecimalsMax)}" -f ([Double]$_.Cells[4].Value * $Variables.Rates.($Config.FIATcurrency).($_.Cells[0].Value))
+ $_.Cells[5].ToolTipText = "$($_.Cells[0].Value) {0:n$($Config.DecimalsMax)}" -f ([Double]$_.Cells[5].Value * $Variables.Rates.($Config.FIATcurrency).($_.Cells[0].Value))
+ $_.Cells[6].ToolTipText = "$($_.Cells[0].Value) {0:n$($Config.DecimalsMax)}" -f ([Double]$_.Cells[6].Value * $Variables.Rates.($Config.FIATcurrency).($_.Cells[0].Value))
+ }
+ )
+ Resize-Form # To fully show lauched miners gridview
+ $LegacyGUIbalancesDGV.EndInit()
+ }
}
Else {
$LegacyGUIbalancesLabel.Text = "Waiting for balances data..."
+ $LegacyGUIbalancesDGV.DataSource = $null
}
-
- $LegacyGUIbalancesDGV.BeginInit()
- $LegacyGUIbalancesDGV.ClearSelection()
- $LegacyGUIbalancesDGV.DataSource = $Variables.Balances.Values | Select-Object @(
- @{ Name = "Currency"; Expression = { $_.Currency } },
- @{ Name = "Pool [Currency]"; Expression = { "$($_.Pool) [$($_.Currency)]" } },
- @{ Name = "Balance ($($Config.FIATcurrency))"; Expression = { "{0:n$($Config.DecimalsMax)}" -f ($_.Balance * $Variables.Rates.($_.Currency).($Config.FIATcurrency)) } },
- @{ Name = "Avg. $($Config.FIATcurrency)/day"; Expression = { "{0:n$($Config.DecimalsMax)}" -f ($_.AvgDailyGrowth * $Variables.Rates.($_.Currency).($Config.FIATcurrency)) } },
- @{ Name = "$($Config.FIATcurrency) in 1h"; Expression = { "{0:n$($Config.DecimalsMax)}" -f ($_.Growth1 * $Variables.Rates.($_.Currency).($Config.FIATcurrency)) } },
- @{ Name = "$($Config.FIATcurrency) in 6h"; Expression = { "{0:n$($Config.DecimalsMax)}" -f ($_.Growth6 * $Variables.Rates.($_.Currency).($Config.FIATcurrency)) } },
- @{ Name = "$($Config.FIATcurrency) in 24h"; Expression = { "{0:n$($Config.DecimalsMax)}" -f ($_.Growth24 * $Variables.Rates.($_.Currency).($Config.FIATcurrency)) } },
- @{ Name = "Projected pay date"; Expression = { If ($_.ProjectedPayDate -is [DateTime]) { $_.ProjectedPayDate.ToShortDateString() } Else { $_.ProjectedPayDate } } },
- @{ Name = "Payout threshold"; Expression = { If ($_.PayoutThresholdCurrency -eq "BTC" -and $Config.UsemBTC) { $PayoutThresholdCurrency = "mBTC"; $mBTCfactor = 1000 } Else { $PayoutThresholdCurrency = $_.PayoutThresholdCurrency; $mBTCfactor = 1 }; "{0:P2} of {1} {2} " -f ($_.Balance / $_.PayoutThreshold * $Variables.Rates.($_.Currency).($_.PayoutThresholdCurrency)), ($_.PayoutThreshold * $mBTCfactor), $PayoutThresholdCurrency } }
- ) | Sort-Object -Property Pool | Out-DataTable
-
- If ($LegacyGUIbalancesDGV.Columns) {
- $LegacyGUIbalancesDGV.Columns[0].Visible = $false
- $LegacyGUIbalancesDGV.Columns[1].FillWeight = 140
- $LegacyGUIbalancesDGV.Columns[2].FillWeight = 90; $LegacyGUIbalancesDGV.Columns[2].DefaultCellStyle.Alignment = "MiddleRight"; $LegacyGUIbalancesDGV.Columns[2].HeaderCell.Style.Alignment = "MiddleRight"
- $LegacyGUIbalancesDGV.Columns[3].FillWeight = 90; $LegacyGUIbalancesDGV.Columns[3].DefaultCellStyle.Alignment = "MiddleRight"; $LegacyGUIbalancesDGV.Columns[3].HeaderCell.Style.Alignment = "MiddleRight"
- $LegacyGUIbalancesDGV.Columns[4].FillWeight = 75; $LegacyGUIbalancesDGV.Columns[4].DefaultCellStyle.Alignment = "MiddleRight"; $LegacyGUIbalancesDGV.Columns[4].HeaderCell.Style.Alignment = "MiddleRight"
- $LegacyGUIbalancesDGV.Columns[5].FillWeight = 75; $LegacyGUIbalancesDGV.Columns[5].DefaultCellStyle.Alignment = "MiddleRight"; $LegacyGUIbalancesDGV.Columns[5].HeaderCell.Style.Alignment = "MiddleRight"
- $LegacyGUIbalancesDGV.Columns[6].FillWeight = 75; $LegacyGUIbalancesDGV.Columns[6].DefaultCellStyle.Alignment = "MiddleRight"; $LegacyGUIbalancesDGV.Columns[6].HeaderCell.Style.Alignment = "MiddleRight"
- $LegacyGUIbalancesDGV.Columns[7].FillWeight = 80
- $LegacyGUIbalancesDGV.Columns[8].FillWeight = 100
- }
- $LegacyGUIbalancesDGV.Rows.ForEach(
- {
- $_.Cells[2].ToolTipText = "$($_.Cells[0].Value) {0:n$($Config.DecimalsMax)}" -f ([Double]$_.Cells[2].Value * $Variables.Rates.($Config.FIATcurrency).($_.Cells[0].Value))
- $_.Cells[3].ToolTipText = "$($_.Cells[0].Value) {0:n$($Config.DecimalsMax)}" -f ([Double]$_.Cells[3].Value * $Variables.Rates.($Config.FIATcurrency).($_.Cells[0].Value))
- $_.Cells[4].ToolTipText = "$($_.Cells[0].Value) {0:n$($Config.DecimalsMax)}" -f ([Double]$_.Cells[4].Value * $Variables.Rates.($Config.FIATcurrency).($_.Cells[0].Value))
- $_.Cells[5].ToolTipText = "$($_.Cells[0].Value) {0:n$($Config.DecimalsMax)}" -f ([Double]$_.Cells[5].Value * $Variables.Rates.($Config.FIATcurrency).($_.Cells[0].Value))
- $_.Cells[6].ToolTipText = "$($_.Cells[0].Value) {0:n$($Config.DecimalsMax)}" -f ([Double]$_.Cells[6].Value * $Variables.Rates.($Config.FIATcurrency).($_.Cells[0].Value))
- }
- )
- Resize-Form # To fully show lauched miners gridview
- $LegacyGUIbalancesDGV.EndInit()
}
Else {
$LegacyGUIbalancesLabel.Text = "BalanceTracker is disabled (Configuration item 'BalancesTrackerPollInterval' -eq 0)"
@@ -344,55 +353,61 @@ Function Update-TabControl {
$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 }
-
- $LegacyGUIminersDGV.BeginInit()
- $LegacyGUIminersDGV.ClearSelection()
- $LegacyGUIminersDGV.DataSource = $DataSource | Select-Object @(
- @{ Name = "Info"; Expression = { $_.Info } },
- @{ Name = "SubStatus"; Expression = { $_.SubStatus } },
- @{ Name = "Best"; Expression = { $_.Best } },
- @{ Name = "Miner"; Expression = { $_.Name } },
- @{ Name = "Device(s)"; Expression = { $_.DeviceNames -join ", " } },
- @{ Name = "Status"; Expression = { $_.Status } },
- @{ Name = "Earning (biased) $($Config.FIATcurrency)/day"; Expression = { If ([Double]::IsNaN($_.Earning_Bias)) { "n/a" } Else { "{0:n$($Config.DecimalsMax)}" -f ($_.Earning * $Variables.Rates.BTC.($Config.FIATcurrency)) } } },
- @{ Name = "Power cost $($Config.FIATcurrency)/day"; Expression = { If ( [Double]::IsNaN($_.PowerCost)) { "n/a" } Else { "{0:n$($Config.DecimalsMax)}" -f ($_.Powercost * $Variables.Rates.BTC.($Config.FIATcurrency)) } } },
- @{ Name = "Profit (biased) $($Config.FIATcurrency)/day"; Expression = { If ([Double]::IsNaN($_.Profit_Bias) -or -not $Variables.CalculatePowerCost) { "n/a" } Else { "{0:n$($Config.DecimalsMax)}" -f ($_.Profit * $Variables.Rates.BTC.($Config.FIATcurrency)) } } },
- @{ Name = "Power consumption"; Expression = { If ($_.MeasurePowerConsumption) { If ($_.Status -eq "Running") { "Measuring..." } Else { "Unmeasured" } } Else { If ([Double]::IsNaN($_.PowerConsumption)) { "n/a" } Else { "$($_.PowerConsumption.ToString("N2")) W" } } } }
- @{ 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 ($LegacyGUIradioButtonMinersUnavailable.checked -or $LegacyGUIradioButtonMiners.checked) { @{ Name = "Reason(s)"; Expression = { $_.Reasons -join ", "} } }
- ) | Sort-Object @{ Expression = { $_.Best }; Descending = $true }, "Device(s)", Info | Out-DataTable
-
- 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 $LegacyGUIminersDGV
- $LegacyGUIminersDGV.EndInit()
- }
+ If ($LegacyGUIradioButtonMinersOptimal.checked) { $DataSource = $Variables.MinersOptimal }
+ ElseIf ($LegacyGUIradioButtonMinersUnavailable.checked) { $DataSource = $Variables.Miners.Where({ -not $_.Available }) }
+ Else { $DataSource = $Variables.Miners }
- If ($LegacyGUIminersDGV.Columns) { $LegacyGUIminersLabel.Text = "Miner data updated $([DateTime]::Now.ToString())" }
- ElseIf ($Variables.MiningStatus -eq "Idle") { $LegacyGUIminersLabel.Text = "No data - mining is stopped" }
+ If ($Variables.MiningStatus -eq "Idle") { $LegacyGUIminersLabel.Text = "No data - mining is stopped" }
ElseIf ($Variables.MiningStatus -eq "Paused") { $LegacyGUIminersLabel.Text = "No data - mining is paused" }
ElseIf ($Variables.MiningStatus -eq "Running" -and -not $Global:CoreRunspace) { $LegacyGUIminersLabel.Text = "No data - mining is suspended" }
- Else { $LegacyGUIminersLabel.Text = "Waiting for data..." }
+ ElseIf ($DataSource) {
+ If (-not $LegacyGUIminersDGV.SelectedRows) {
+ $LegacyGUIminersLabel.Text = "Miner data updated $([DateTime]::Now.ToString())"
+ $LegacyGUIminersDGV.BeginInit()
+ $LegacyGUIminersDGV.ClearSelection()
+ $LegacyGUIminersDGV.DataSource = $DataSource | Select-Object @(
+ @{ Name = "Info"; Expression = { $_.Info } },
+ @{ Name = "SubStatus"; Expression = { $_.SubStatus } },
+ @{ Name = "Best"; Expression = { $_.Best } },
+ @{ Name = "Miner"; Expression = { $_.Name } },
+ @{ Name = "Device(s)"; Expression = { $_.DeviceNames -join ", " } },
+ @{ Name = "Status"; Expression = { $_.Status } },
+ @{ Name = "Earning (biased) $($Config.FIATcurrency)/day"; Expression = { If ([Double]::IsNaN($_.Earning_Bias)) { "n/a" } Else { "{0:n$($Config.DecimalsMax)}" -f ($_.Earning * $Variables.Rates.BTC.($Config.FIATcurrency)) } } },
+ @{ Name = "Power cost $($Config.FIATcurrency)/day"; Expression = { If ( [Double]::IsNaN($_.PowerCost)) { "n/a" } Else { "{0:n$($Config.DecimalsMax)}" -f ($_.Powercost * $Variables.Rates.BTC.($Config.FIATcurrency)) } } },
+ @{ Name = "Profit (biased) $($Config.FIATcurrency)/day"; Expression = { If ([Double]::IsNaN($_.Profit_Bias) -or -not $Variables.CalculatePowerCost) { "n/a" } Else { "{0:n$($Config.DecimalsMax)}" -f ($_.Profit * $Variables.Rates.BTC.($Config.FIATcurrency)) } } },
+ @{ Name = "Power consumption"; Expression = { If ($_.MeasurePowerConsumption) { If ($_.Status -eq "Running") { "Measuring..." } Else { "Unmeasured" } } Else { If ([Double]::IsNaN($_.PowerConsumption)) { "n/a" } Else { "$($_.PowerConsumption.ToString("N2")) W" } } } }
+ @{ 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 ($LegacyGUIradioButtonMinersUnavailable.checked -or $LegacyGUIradioButtonMiners.checked) { @{ Name = "Reason(s)"; Expression = { $_.Reasons -join ", "} } }
+ ) | Sort-Object @{ Expression = { $_.Best }; Descending = $true }, "Device(s)", Info | Out-DataTable
+ $LegacyGUIminersDGV.ClearSelection()
+
+ If (-not $LegacyGUIminersDGV.ColumnWidthChanged -and $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"
+
+ $LegacyGUIminersDGV | Add-Member ColumnWidthChanged $true
+ }
+ $LegacyGUIminersDGV.EndInit()
+ }
+ }
+ Else {
+ $LegacyGUIminersLabel.Text = "Waiting for data..."
+ $LegacyGUIminersDGV.DataSource = $null
+ }
+ Set-TableColor -DataGridView $LegacyGUIminersDGV
Break
}
"Pools" {
@@ -405,126 +420,126 @@ Function Update-TabControl {
$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 ($LegacyGUIradioButtonPoolsBest.checked) { $DataSource = $Variables.PoolsBest }
- ElseIf ($LegacyGUIradioButtonPoolsUnavailable.checked) { $DataSource = $Variables.Pools.Where({ -not $_.Available }) }
- Else { $DataSource = $Variables.Pools }
-
- If ($Config.UsemBTC) {
- $Factor = 1000
- $Unit = "mBTC"
- }
- Else {
- $Factor = 1
- $Unit = "BTC"
- }
-
- $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 } }
- @{ Name = "$Unit/GH/Day (biased)"; Expression = { "{0:n$($Config.DecimalsMax)}" -f ($_.Price_Bias * [Math]::Pow(1024, 3) * $Factor) } }
- @{ Name = "Accuracy"; Expression = { "{0:p2}" -f $_.Accuracy } }
- @{ Name = "Pool name"; Expression = { $_.Name } }
- @{ Name = "Host"; Expression = { $_.Host } }
- @{ Name = "Port"; Expression = { "$(If ($_.Port) { $_.Port } Else { "-" })" } }
- @{ Name = "SSL port"; Expression = { "$(If ($_.PortSSL) { $_.PortSSL } Else { "-" })" } }
- @{ Name = "Earnings adjustment factor"; Expression = { $_.EarningsAdjustmentFactor } }
- @{ Name = "Fee"; Expression = { "{0:p2}" -f $_.Fee } }
- If ($LegacyGUIradioButtonPoolsUnavailable.checked -or $LegacyGUIradioButtonPools.checked) { @{ Name = "Reason(s)"; Expression = { $_.Reasons -join ", "} } }
- ) | Out-DataTable
-
- 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"
+ If ($Variables.MiningStatus -eq "Idle") { $LegacyGUIpoolsLabel.Text = "No data - mining is stopped" }
+ ElseIf ($Variables.MiningStatus -eq "Paused") { $LegacyGUIpoolsLabel.Text = "No data - mining is paused" }
+ ElseIf ($Variables.MiningStatus -eq "Running" -and -not $Global:CoreRunspace) { $LegacyGUIminersLabel.Text = "No data - mining is suspended" }
+ ElseIf ($DataSource) {
+ If (-not $LegacyGUIpoolsDGV.SelectedRows) {
+ $LegacyGUIpoolsLabel.Text = "Pool data updated $([DateTime]::Now.ToString())"
+ $LegacyGUIpoolsDGV.BeginInit()
+ If ($Config.UsemBTC) {
+ $Factor = 1000
+ $Unit = "mBTC"
+ }
+ Else {
+ $Factor = 1
+ $Unit = "BTC"
+ }
+ $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 } }
+ @{ Name = "$Unit/GH/Day (biased)"; Expression = { "{0:n$($Config.DecimalsMax)}" -f ($_.Price_Bias * [Math]::Pow(1024, 3) * $Factor) } }
+ @{ Name = "Accuracy"; Expression = { "{0:p2}" -f $_.Accuracy } }
+ @{ Name = "Pool name"; Expression = { $_.Name } }
+ @{ Name = "Host"; Expression = { $_.Host } }
+ @{ Name = "Port"; Expression = { "$(If ($_.Port) { $_.Port } Else { "-" })" } }
+ @{ Name = "SSL port"; Expression = { "$(If ($_.PortSSL) { $_.PortSSL } Else { "-" })" } }
+ @{ Name = "Earnings adjustment factor"; Expression = { $_.EarningsAdjustmentFactor } }
+ @{ Name = "Fee"; Expression = { "{0:p2}" -f $_.Fee } }
+ If ($LegacyGUIradioButtonPoolsUnavailable.checked -or $LegacyGUIradioButtonPools.checked) { @{ Name = "Reason(s)"; Expression = { $_.Reasons -join ", "} } }
+ ) | Out-DataTable
+ $LegacyGUIpoolsDGV.ClearSelection()
+
+ If (-not $LegacyGUIpoolsDGV.ColumnWidthChanged -and $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"
+
+ $LegacyGUIpoolsDGV | Add-Member ColumnWidthChanged $true
+ }
+ $LegacyGUIpoolsDGV.EndInit()
}
- $LegacyGUIpoolsDGV.EndInit()
+ }
+ Else {
+ $LegacyGUIpoolsLabel.Text = "Waiting for data..."
+ $LegacyGUIpoolsDGV.DataSource = $null
}
- 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" }
- ElseIf ($Variables.MiningStatus -eq "Running" -and -not $Global:CoreRunspace) { $LegacyGUIminersLabel.Text = "No data - mining is suspended" }
- Else { $LegacyGUIpoolsLabel.Text = "Waiting for data..." }
Break
}
# "Rig monitor" {
# $LegacyGUIworkersDGV.Visible = $Config.ShowWorkerStatus
# $LegacyGUIeditMonitoringLink.Visible = $Variables.APIRunspace.APIport
-
+ #
# If ($Config.ShowWorkerStatus) {
-
- # Read-MonitoringData | Out-Null
-
- # 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" }
- # ElseIf ($Variables.MiningStatus -eq "Running" -and -not $Global:CoreRunspace) { $LegacyGUIminersLabel.Text = "No data - mining is suspended" }
- # Else { $LegacyGUIworkersLabel.Text = "Waiting for data..." }
-
- # $nl = "`n" # Must use variable, cannot join with '`n' directly
-
- # $LegacyGUIworkersDGV.BeginInit()
- # $LegacyGUIworkersDGV.ClearSelection()
- # $LegacyGUIworkersDGV.DataSource = $Variables.Workers | Select-Object @(
- # @{ Name = "Worker"; Expression = { $_.worker } },
- # @{ Name = "Status"; Expression = { $_.status } },
- # @{ Name = "Last seen"; Expression = { (Get-TimeSince $_.date) } },
- # @{ Name = "Version"; Expression = { $_.version } },
- # @{ Name = "Currency"; Expression = { $_.data.Currency | Select-Object -Unique } },
- # @{ Name = "Estimated earning/day"; Expression = { If ($null -ne $_.Data) { "{0:n$($Config.DecimalsMax)}" -f (($_.Data.Earning.Where({ -not [Double]::IsNaN($_) }) | Measure-Object -Sum).Sum * $Variables.Rates.BTC.($_.data.Currency | Select-Object -Unique)) } } },
- # @{ Name = "Estimated profit/day"; Expression = { If ($null -ne $_.Data) { " {0:n$($Config.DecimalsMax)}" -f (($_.Data.Profit.Where({ -not [Double]::IsNaN($_) }) | Measure-Object -Sum).Sum * $Variables.Rates.BTC.($_.data.Currency | Select-Object -Unique)) } } },
- # @{ Name = "Miner"; Expression = { $_.data.Name -join $nl } },
- # @{ Name = "Pool"; Expression = { $_.data.ForEach({ $_.Pool -split "," -join " & " }) -join $nl } },
- # @{ Name = "Algorithm"; Expression = { $_.data.ForEach({ $_.Algorithm -split "," -join " & " }) -join $nl } },
- # @{ Name = "Live hashrate"; Expression = { $_.data.ForEach({ $_.CurrentSpeed.ForEach({ If ([Double]::IsNaN($_)) { "n/a" } Else { $_ | ConvertTo-Hash } }) -join " & " }) -join $nl } },
- # @{ Name = "Benchmark hashrate(s)"; Expression = { $_.data.ForEach({ $_.EstimatedSpeed.ForEach({ If ([Double]::IsNaN($_)) { "n/a" } Else { $_ | ConvertTo-Hash } }) -join " & " }) -join $nl } }
- # ) | Sort-Object -Property "Worker" | Out-DataTable
- # If ($LegacyGUIworkersDGV.Columns) {
- # $LegacyGUIworkersDGV.Columns[0].FillWeight = 70
- # $LegacyGUIworkersDGV.Columns[1].FillWeight = 60
- # $LegacyGUIworkersDGV.Columns[2].FillWeight = 80
- # $LegacyGUIworkersDGV.Columns[3].FillWeight = 70
- # $LegacyGUIworkersDGV.Columns[4].FillWeight = 40
- # $LegacyGUIworkersDGV.Columns[5].FillWeight = 65; $LegacyGUIworkersDGV.Columns[5].DefaultCellStyle.Alignment = "MiddleRight"; $LegacyGUIworkersDGV.Columns[5].HeaderCell.Style.Alignment = "MiddleRight"
- # $LegacyGUIworkersDGV.Columns[6].FillWeight = 65; $LegacyGUIworkersDGV.Columns[6].DefaultCellStyle.Alignment = "MiddleRight"; $LegacyGUIworkersDGV.Columns[6].HeaderCell.Style.Alignment = "MiddleRight"
- # $LegacyGUIworkersDGV.Columns[7].FillWeight = 150
- # $LegacyGUIworkersDGV.Columns[8].FillWeight = 95
- # $LegacyGUIworkersDGV.Columns[9].FillWeight = 75
- # $LegacyGUIworkersDGV.Columns[10].FillWeight = 65; $LegacyGUIworkersDGV.Columns[10].DefaultCellStyle.Alignment = "MiddleRight"; $LegacyGUIworkersDGV.Columns[10].HeaderCell.Style.Alignment = "MiddleRight"
- # $LegacyGUIworkersDGV.Columns[11].FillWeight = 65; $LegacyGUIworkersDGV.Columns[11].DefaultCellStyle.Alignment = "MiddleRight"; $LegacyGUIworkersDGV.Columns[11].HeaderCell.Style.Alignment = "MiddleRight"
+ # If (-not $LegacyGUIactiveMinersDGV.SelectedRows) {
+ #
+ # Read-MonitoringData | Out-Null
+ #
+ # 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" }
+ # ElseIf ($Variables.MiningStatus -eq "Running" -and -not $Global:CoreRunspace) { $LegacyGUIminersLabel.Text = "No data - mining is suspended" }
+ # Else { $LegacyGUIworkersLabel.Text = "Waiting for data..." }
+ #
+ # $LegacyGUIworkersDGV.BeginInit()
+ # $LegacyGUIworkersDGV.ClearSelection()
+ # $LegacyGUIworkersDGV.DataSource = $Variables.Workers | Select-Object @(
+ # @{ Name = "Worker"; Expression = { $_.worker } },
+ # @{ Name = "Status"; Expression = { $_.status } },
+ # @{ Name = "Last seen"; Expression = { (Get-TimeSince $_.date) } },
+ # @{ Name = "Version"; Expression = { $_.version } },
+ # @{ Name = "Currency"; Expression = { $_.data.Currency | Select-Object -Unique } },
+ # @{ Name = "Estimated earning/day"; Expression = { If ($null -ne $_.Data) { "{0:n$($Config.DecimalsMax)}" -f (($_.Data.Earning.Where({ -not [Double]::IsNaN($_) }) | Measure-Object -Sum).Sum * $Variables.Rates.BTC.($_.data.Currency | Select-Object -Unique)) } } },
+ # @{ Name = "Estimated profit/day"; Expression = { If ($null -ne $_.Data) { " {0:n$($Config.DecimalsMax)}" -f (($_.Data.Profit.Where({ -not [Double]::IsNaN($_) }) | Measure-Object -Sum).Sum * $Variables.Rates.BTC.($_.data.Currency | Select-Object -Unique)) } } },
+ # @{ Name = "Miner"; Expression = { $_.data.Name -join $nl } },
+ # @{ Name = "Pool"; Expression = { $_.data.ForEach({ $_.Pool -split "," -join " & " }) -join $nl } },
+ # @{ Name = "Algorithm"; Expression = { $_.data.ForEach({ $_.Algorithm -split "," -join " & " }) -join $nl } },
+ # @{ Name = "Live hashrate"; Expression = { $_.data.ForEach({ $_.CurrentSpeed.ForEach({ If ([Double]::IsNaN($_)) { "n/a" } Else { $_ | ConvertTo-Hash } }) -join " & " }) -join $nl } },
+ # @{ Name = "Benchmark hashrate(s)"; Expression = { $_.data.ForEach({ $_.EstimatedSpeed.ForEach({ If ([Double]::IsNaN($_)) { "n/a" } Else { $_ | ConvertTo-Hash } }) -join " & " }) -join $nl } }
+ # ) | Sort-Object -Property "Worker" | Out-DataTable
+ # $LegacyGUIworkersDGV.ClearSelection()
+ #
+ # If (-not $LegacyGUIworkersDGV.ColumnWidthChanged -and $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"
+ #
+ # $LegacyGUIworkersDGV | Add-Member ColumnWidthChanged $true
+ # }
+ # Set-WorkerColor
+ # $LegacyGUIworkersDGV.EndInit()
# }
- # Set-WorkerColor
- # $LegacyGUIworkersDGV.EndInit()
# }
# Else {
# $LegacyGUIworkersLabel.Text = "Worker status reporting is disabled$(If (-not $Variables.APIRunspace) { " (Configuration item 'ShowWorkerStatus' -eq `$false)" })."
+ # $LegacyGUIworkersDGV.DataSource = $null
# }
# Break
# }
"Switching Log" {
- $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" }))
-
- $LegacyGUIcheckShowSwitchingCPU.Checked = $LegacyGUIcheckShowSwitchingCPU.Enabled
- $LegacyGUIcheckShowSwitchingAMD.Checked = $LegacyGUIcheckShowSwitchingAMD.Enabled
- $LegacyGUIcheckShowSwitchingINTEL.Checked = $LegacyGUIcheckShowSwitchingINTEL.Enabled
- $LegacyGUIcheckShowSwitchingNVIDIA.Checked = $LegacyGUIcheckShowSwitchingNVIDIA.Enabled
-
CheckBoxSwitching_Click
Break
}
@@ -534,33 +549,39 @@ Function Update-TabControl {
If ($Config.Watchdog) {
If ($Variables.WatchdogTimers) {
- $LegacyGUIwatchdogTimersLabel.Text = "Watchdog timers updated $([DateTime]::Now.ToString())"
+ If (-not $LegacyGUIwatchdogTimersDGV.SelectedRows) {
+ $LegacyGUIwatchdogTimersLabel.Text = "Watchdog timers updated $([DateTime]::Now.ToString())"
+ $LegacyGUIwatchdogTimersDGV.BeginInit()
+ $LegacyGUIwatchdogTimersDGV.ClearSelection()
+ $LegacyGUIwatchdogTimersDGV.DataSource = $Variables.WatchdogTimers | Sort-Object -Property MinerName, Kicked | Select-Object @(
+ @{ Name = "Name"; Expression = { $_.MinerName } },
+ @{ Name = "Algorithms"; Expression = { $_.Algorithm } },
+ @{ Name = "Pool name"; Expression = { $_.PoolName } },
+ @{ Name = "Region"; Expression = { $_.PoolRegion } },
+ @{ Name = "Device(s)"; Expression = { $_.DeviceNames -join ", " } },
+ @{ Name = "Last updated"; Expression = { (Get-TimeSince $_.Kicked.ToLocalTime()) } }
+ ) | Out-DataTable
+ $LegacyGUIwatchdogTimersDGV.ClearSelection()
+
+ If (-not $LegacyGUIwatchdogTimersDGV.ColumnWidthChanged -and $LegacyGUIwatchdogTimersDGV.Columns) {
+ $LegacyGUIwatchdogTimersDGV.Columns[0].FillWeight = 120
+ $LegacyGUIwatchdogTimersDGV.Columns[1].FillWeight = 100
+ $LegacyGUIwatchdogTimersDGV.Columns[2].FillWeight = 100
+ $LegacyGUIwatchdogTimersDGV.Columns[3].FillWeight = 60
+ $LegacyGUIwatchdogTimersDGV.Columns[4].FillWeight = 30 + ($Variables.WatchdogTimers.ForEach({ $_.DeviceNames.Count }) | Measure-Object -Maximum).Maximum * 20
+ $LegacyGUIwatchdogTimersDGV.Columns[5].FillWeight = 100
+
+ $LegacyGUIwatchdogTimersDGV | Add-Member ColumnWidthChanged $true
+ }
+ $LegacyGUIwatchdogTimersDGV.EndInit()
+ }
}
- Else { $LegacyGUIwatchdogTimersLabel.Text = "Watchdog timers - no data" }
-
- $LegacyGUIwatchdogTimersDGV.BeginInit()
- $LegacyGUIwatchdogTimersDGV.ClearSelection()
- $LegacyGUIwatchdogTimersDGV.DataSource = $Variables.WatchdogTimers | Sort-Object -Property MinerName, Kicked | Select-Object @(
- @{ Name = "Name"; Expression = { $_.MinerName } },
- @{ Name = "Algorithms"; Expression = { $_.Algorithm } },
- @{ Name = "Pool name"; Expression = { $_.PoolName } },
- @{ Name = "Region"; Expression = { $_.PoolRegion } },
- @{ Name = "Device(s)"; Expression = { $_.DeviceNames -join ", " } },
- @{ Name = "Last updated"; Expression = { (Get-TimeSince $_.Kicked.ToLocalTime()) } }
- ) | Out-DataTable
- If ($LegacyGUIwatchdogTimersDGV.Columns) {
- $LegacyGUIwatchdogTimersDGV.Columns[0].FillWeight = 120
- $LegacyGUIwatchdogTimersDGV.Columns[1].FillWeight = 100
- $LegacyGUIwatchdogTimersDGV.Columns[2].FillWeight = 100
- $LegacyGUIwatchdogTimersDGV.Columns[3].FillWeight = 60
- $LegacyGUIwatchdogTimersDGV.Columns[4].FillWeight = 30 + ($Variables.WatchdogTimers.ForEach({ $_.DeviceNames.Count }) | Measure-Object -Maximum).Maximum * 20
- $LegacyGUIwatchdogTimersDGV.Columns[5].FillWeight = 100
+ Else {
+ $LegacyGUIwatchdogTimersLabel.Text = "Watchdog timers - no data"
+ $LegacyGUIwatchdogTimersDGV.DataSource = $null
}
- $LegacyGUIwatchdogTimersDGV.EndInit()
- }
- Else {
- $LegacyGUIwatchdogTimersLabel.Text = "Watchdog is disabled (Configuration item 'Watchdog' -eq `$false)"
}
+ Else { $LegacyGUIwatchdogTimersLabel.Text = "Watchdog is disabled (Configuration item 'Watchdog' -eq `$false)" }
$LegacyGUIwatchdogTimersRemoveButton.Enabled = [Boolean]$LegacyGUIwatchdogTimersDGV.Rows
}
@@ -1152,7 +1173,11 @@ $LegacyGUIactiveMinersDGV.Add_MouseUP(
}
}
)
-$LegacyGUIactiveMinersDGV.Add_Sorted({ Set-TableColor -DataGridView $LegacyGUIactiveMinersDGV })
+$LegacyGUIactiveMinersDGV.Add_Sorted(
+ {
+ Set-TableColor -DataGridView $LegacyGUIactiveMinersDGV
+ }
+)
Set-DataGridViewDoubleBuffer -Grid $LegacyGUIactiveMinersDGV -Enabled $true
$LegacyGUIstatusPageControls += $LegacyGUIactiveMinersDGV
@@ -1303,6 +1328,11 @@ $LegacyGUIminersDGV.Name = "MinersDGV"
$LegacyGUIminersDGV.ReadOnly = $true
$LegacyGUIminersDGV.RowHeadersVisible = $false
$LegacyGUIminersDGV.SelectionMode = "FullRowSelect"
+$LegacyGUIminersDGV.Add_ColumnWidthChanged(
+ {
+ $LegacyGUIminersDGV.ColumnWidthChanged = $true
+ }
+)
$LegacyGUIminersDGV.Add_MouseUP(
{
If ($_.Button -eq [System.Windows.Forms.MouseButtons]::Right) {
@@ -1310,7 +1340,11 @@ $LegacyGUIminersDGV.Add_MouseUP(
}
}
)
-$LegacyGUIminersDGV.Add_Sorted({ Set-TableColor -DataGridView $LegacyGUIminersDGV })
+$LegacyGUIminersDGV.Add_Sorted(
+ {
+ Set-TableColor -DataGridView $LegacyGUIminersDGV
+ }
+ )
Set-DataGridViewDoubleBuffer -Grid $LegacyGUIminersDGV -Enabled $true
$LegacyGUIminersPageControls += $LegacyGUIminersDGV
@@ -1504,6 +1538,7 @@ $LegacyGUItooltip.SetToolTip($LegacyGUIswitchingLogClearButton, "This will clear
$LegacyGUIcheckShowSwitchingCPU = New-Object System.Windows.Forms.CheckBox
$LegacyGUIcheckShowSwitchingCPU.AutoSize = $false
+$LegacyGUIcheckShowSwitchingCPU.Enabled = [Boolean]($Variables.Devices.Where({ $_.State -ne [DeviceState]::Unsupported -and $_.Name -notin $Config.ExcludeDeviceName -and $_.Type -eq "CPU" }))
$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))
@@ -1525,6 +1560,7 @@ $LegacyGUIcheckShowSwitchingCPU.ForEach(
$LegacyGUIcheckShowSwitchingAMD = New-Object System.Windows.Forms.CheckBox
$LegacyGUIcheckShowSwitchingAMD.AutoSize = $false
+$LegacyGUIcheckShowSwitchingAMD.Enabled = [Boolean]($Variables.Devices.Where({ $_.State -ne [DeviceState]::Unsupported -and $_.Name -notin $Config.ExcludeDeviceName -and $_.Type -eq "GPU" -and $_.Vendor -eq "AMD" }))
$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))
@@ -1546,6 +1582,7 @@ $LegacyGUIcheckShowSwitchingAMD.ForEach(
$LegacyGUIcheckShowSwitchingINTEL = New-Object System.Windows.Forms.CheckBox
$LegacyGUIcheckShowSwitchingINTEL.AutoSize = $false
+$LegacyGUIcheckShowSwitchingINTEL.Enabled = [Boolean]($Variables.Devices.Where({ $_.State -ne [DeviceState]::Unsupported -and $_.Name -notin $Config.ExcludeDeviceName -and $_.Type -eq "GPU" -and $_.Vendor -eq "INTEL" }))
$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))
@@ -1567,6 +1604,7 @@ $LegacyGUIcheckShowSwitchingINTEL.ForEach(
$LegacyGUIcheckShowSwitchingNVIDIA = New-Object System.Windows.Forms.CheckBox
$LegacyGUIcheckShowSwitchingNVIDIA.AutoSize = $false
+$LegacyGUIcheckShowSwitchingNVIDIA.Enabled = [Boolean]($Variables.Devices.Where({ $_.State -ne [DeviceState]::Unsupported -and $_.Name -notin $Config.ExcludeDeviceName -and $_.Type -eq "GPU" -and $_.Vendor -eq "NVIDIA" }))
$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))
@@ -1605,7 +1643,6 @@ $LegacyGUIswitchingDGV.Name = "SwitchingDGV"
$LegacyGUIswitchingDGV.ReadOnly = $true
$LegacyGUIswitchingDGV.RowHeadersVisible = $false
$LegacyGUIswitchingDGV.SelectionMode = "FullRowSelect"
-
$LegacyGUIswitchingDGV.Add_Sorted(
{
If ($Config.UseColorForMinerStatus) {
@@ -1616,6 +1653,11 @@ $LegacyGUIswitchingDGV.Add_Sorted(
Set-DataGridViewDoubleBuffer -Grid $LegacyGUIswitchingDGV -Enabled $true
$LegacyGUIswitchingPageControls += $LegacyGUIswitchingDGV
+$LegacyGUIcheckShowSwitchingCPU.Checked = $LegacyGUIcheckShowSwitchingCPU.Enabled
+$LegacyGUIcheckShowSwitchingAMD.Checked = $LegacyGUIcheckShowSwitchingAMD.Enabled
+$LegacyGUIcheckShowSwitchingINTEL.Checked = $LegacyGUIcheckShowSwitchingINTEL.Enabled
+$LegacyGUIcheckShowSwitchingNVIDIA.Checked = $LegacyGUIcheckShowSwitchingNVIDIA.Enabled
+
# Watchdog Page Controls
$LegacyGUIwatchdogTimersPageControls = @()
diff --git a/Includes/MinerAPIs/BzMiner.ps1 b/Includes/MinerAPIs/BzMiner.ps1
index 6f6c196f..7a880507 100644
--- a/Includes/MinerAPIs/BzMiner.ps1
+++ b/Includes/MinerAPIs/BzMiner.ps1
@@ -18,8 +18,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
File: \Includes\MinerAPIs\BzMiner.ps1
-Version: 6.3.1
-Version date: 2024/09/06
+Version: 6.3.2
+Version date: 2024/09/09
#>
Class BzMiner : Miner {
diff --git a/Includes/MinerAPIs/Ccminer.ps1 b/Includes/MinerAPIs/Ccminer.ps1
index 1ea6a4d2..f280dd62 100644
--- a/Includes/MinerAPIs/Ccminer.ps1
+++ b/Includes/MinerAPIs/Ccminer.ps1
@@ -18,8 +18,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
File: \Includes\MinerAPIs\CCminer.ps1
-Version: 6.3.1
-Version date: 2024/09/06
+Version: 6.3.2
+Version date: 2024/09/09
#>
Class CcMiner : Miner {
diff --git a/Includes/MinerAPIs/EthMiner.ps1 b/Includes/MinerAPIs/EthMiner.ps1
index 8dee897f..e2650a07 100644
--- a/Includes/MinerAPIs/EthMiner.ps1
+++ b/Includes/MinerAPIs/EthMiner.ps1
@@ -18,8 +18,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
File: \Includes\MinerAPIs\EthMiner.ps1
-Version: 6.3.1
-Version date: 2024/09/06
+Version: 6.3.2
+Version date: 2024/09/09
#>
Class EthMiner : Miner {
diff --git a/Includes/MinerAPIs/FireIce.ps1 b/Includes/MinerAPIs/FireIce.ps1
index 5609d6ee..6b2566e9 100644
--- a/Includes/MinerAPIs/FireIce.ps1
+++ b/Includes/MinerAPIs/FireIce.ps1
@@ -18,8 +18,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
File: \Includes\MinerAPIs\FireIce.ps1
-Version: 6.3.1
-Version date: 2024/09/06
+Version: 6.3.2
+Version date: 2024/09/09
#>
Class Fireice : Miner {
diff --git a/Includes/MinerAPIs/Gminer.ps1 b/Includes/MinerAPIs/Gminer.ps1
index 6c5f2dac..a123cc5c 100644
--- a/Includes/MinerAPIs/Gminer.ps1
+++ b/Includes/MinerAPIs/Gminer.ps1
@@ -18,8 +18,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
File: \Includes\MinerAPIs\GMiner.ps1
-Version: 6.3.1
-Version date: 2024/09/06
+Version: 6.3.2
+Version date: 2024/09/09
#>
Class GMiner : Miner {
diff --git a/Includes/MinerAPIs/HellMiner.ps1 b/Includes/MinerAPIs/HellMiner.ps1
index b4cc96cf..c56862ef 100644
--- a/Includes/MinerAPIs/HellMiner.ps1
+++ b/Includes/MinerAPIs/HellMiner.ps1
@@ -18,8 +18,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
File: \Includes\MinerAPIs\lolMiner.ps1
-Version: 6.3.1
-Version date: 2024/09/06
+Version: 6.3.2
+Version date: 2024/09/09
#>
Class HellMiner : Miner {
diff --git a/Includes/MinerAPIs/MiniZ.ps1 b/Includes/MinerAPIs/MiniZ.ps1
index f8cf0c3b..3669e51d 100644
--- a/Includes/MinerAPIs/MiniZ.ps1
+++ b/Includes/MinerAPIs/MiniZ.ps1
@@ -18,8 +18,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
File: \Includes\MinerAPIs\MiniZ.ps1
-Version: 6.3.1
-Version date: 2024/09/06
+Version: 6.3.2
+Version date: 2024/09/09
#>
Class MiniZ : Miner {
diff --git a/Includes/MinerAPIs/NBMiner.ps1 b/Includes/MinerAPIs/NBMiner.ps1
index 58851dd8..5449628c 100644
--- a/Includes/MinerAPIs/NBMiner.ps1
+++ b/Includes/MinerAPIs/NBMiner.ps1
@@ -18,8 +18,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
File: \Includes\MinerAPIs\NBMiner.ps1
-Version: 6.3.1
-Version date: 2024/09/06
+Version: 6.3.2
+Version date: 2024/09/09
#>
Class NBMiner : Miner {
diff --git a/Includes/MinerAPIs/NanoMiner.ps1 b/Includes/MinerAPIs/NanoMiner.ps1
index 0cb06078..5bae68b2 100644
--- a/Includes/MinerAPIs/NanoMiner.ps1
+++ b/Includes/MinerAPIs/NanoMiner.ps1
@@ -18,8 +18,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
File: \Includes\MinerAPIs\NanoMiner.ps1
-Version: 6.3.1
-Version date: 2024/09/06
+Version: 6.3.2
+Version date: 2024/09/09
#>
Class NanoMiner : Miner {
diff --git a/Includes/MinerAPIs/OneZero.ps1 b/Includes/MinerAPIs/OneZero.ps1
index cb7d3fcf..79492838 100644
--- a/Includes/MinerAPIs/OneZero.ps1
+++ b/Includes/MinerAPIs/OneZero.ps1
@@ -18,8 +18,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
File: \Includes\MinerAPIs\Trex.ps1
-Version: 6.3.1
-Version date: 2024/09/06
+Version: 6.3.2
+Version date: 2024/09/09
#>
Class OneZero : Miner {
diff --git a/Includes/MinerAPIs/Rigel.ps1 b/Includes/MinerAPIs/Rigel.ps1
index dfaa1a10..3acbd11e 100644
--- a/Includes/MinerAPIs/Rigel.ps1
+++ b/Includes/MinerAPIs/Rigel.ps1
@@ -18,8 +18,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
File: \Includes\MinerAPIs\Rigel.ps1
-Version: 6.3.1
-Version date: 2024/09/06
+Version: 6.3.2
+Version date: 2024/09/09
#>
Class Rigel : Miner {
diff --git a/Includes/MinerAPIs/SRBMiner.ps1 b/Includes/MinerAPIs/SRBMiner.ps1
index 1d6665bb..a716f38c 100644
--- a/Includes/MinerAPIs/SRBMiner.ps1
+++ b/Includes/MinerAPIs/SRBMiner.ps1
@@ -18,8 +18,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
File: \Includes\MinerAPIs\SRBminer.ps1
-Version: 6.3.1
-Version date: 2024/09/06
+Version: 6.3.2
+Version date: 2024/09/09
#>
Class SRBMiner : Miner {
diff --git a/Includes/MinerAPIs/TeamBlackMiner.ps1 b/Includes/MinerAPIs/TeamBlackMiner.ps1
index c35c0344..3322ba5b 100644
--- a/Includes/MinerAPIs/TeamBlackMiner.ps1
+++ b/Includes/MinerAPIs/TeamBlackMiner.ps1
@@ -18,8 +18,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
File: \Includes\MinerAPIs\lolMiner.ps1
-Version: 6.3.1
-Version date: 2024/09/06
+Version: 6.3.2
+Version date: 2024/09/09
#>
Class TeamBlackMiner : Miner {
diff --git a/Includes/MinerAPIs/Trex.ps1 b/Includes/MinerAPIs/Trex.ps1
index 6fdeea07..c6ae523c 100644
--- a/Includes/MinerAPIs/Trex.ps1
+++ b/Includes/MinerAPIs/Trex.ps1
@@ -18,8 +18,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
File: \Includes\MinerAPIs\Trex.ps1
-Version: 6.3.1
-Version date: 2024/09/06
+Version: 6.3.2
+Version date: 2024/09/09
#>
Class Trex : Miner {
diff --git a/Includes/MinerAPIs/Xgminer.ps1 b/Includes/MinerAPIs/Xgminer.ps1
index ef2896b0..f5954742 100644
--- a/Includes/MinerAPIs/Xgminer.ps1
+++ b/Includes/MinerAPIs/Xgminer.ps1
@@ -18,8 +18,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
File: \Includes\MinerAPIs\Xgminer.ps1
-Version: 6.3.1
-Version date: 2024/09/06
+Version: 6.3.2
+Version date: 2024/09/09
#>
Class XgMiner : Miner {
diff --git a/Includes/MinerAPIs/XmRig.ps1 b/Includes/MinerAPIs/XmRig.ps1
index e060ba6d..1d7606d2 100644
--- a/Includes/MinerAPIs/XmRig.ps1
+++ b/Includes/MinerAPIs/XmRig.ps1
@@ -18,8 +18,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
File: \Includes\MinerAPIs\XmRig.ps1
-Version: 6.3.1
-Version date: 2024/09/06
+Version: 6.3.2
+Version date: 2024/09/09
#>
Class XmRig : Miner {
diff --git a/Includes/MinerAPIs/lolMiner.ps1 b/Includes/MinerAPIs/lolMiner.ps1
index 9c766422..be05edc5 100644
--- a/Includes/MinerAPIs/lolMiner.ps1
+++ b/Includes/MinerAPIs/lolMiner.ps1
@@ -18,8 +18,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
File: \Includes\MinerAPIs\lolMiner.ps1
-Version: 6.3.1
-Version date: 2024/09/06
+Version: 6.3.2
+Version date: 2024/09/09
#>
Class lolMiner : Miner {
diff --git a/Miners/BzMiner-v21.4.0.ps1 b/Miners/BzMiner-v21.4.0.ps1
index 37b33e0e..405f96c2 100644
--- a/Miners/BzMiner-v21.4.0.ps1
+++ b/Miners/BzMiner-v21.4.0.ps1
@@ -17,8 +17,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
-Version: 6.3.0
-Version date: 2024/09/01
+Version: 6.3.2
+Version date: 2024/09/09
#>
If (-not ($Devices = $Variables.EnabledDevices.Where({ "AMD", "INTEL" -contains $_.Type -or ($_.OpenCL.ComputeCapability -ge "5.0" -and $_.OpenCL.DriverVersion -ge [Version]"460.27.03") }))) { Return }
@@ -29,60 +29,60 @@ $Path = "Bin\$Name\bzminer.exe"
$DeviceEnumerator = "Bus"
$Algorithms = @(
- @{ Algorithms = @("Autolykos2"); Type = "AMD"; Fee = @(0.01); MinMemGiB = 1.08; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(45, 15); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = ""; ExcludePools = @(@("NiceHash", "ProHashing"), @()); Arguments = @(" -a ergo") }
- @{ Algorithms = @("Blake3"); Type = "AMD"; Fee = @(0.005); MinMemGiB = 2; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(45, 15); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = ""; ExcludePools = @(@(), @()); Arguments = @(" -a alph") }
- @{ Algorithms = @("DynexSolve"); Type = "AMD"; Fee = @(0.005); MinMemGiB = 2; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(45, 15); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = ""; ExcludePools = @(@(), @()); Arguments = @(" -a dynex") }
- @{ Algorithms = @("EtcHash"); Type = "AMD"; Fee = @(0.005); MinMemGiB = 1.08; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(45, 20); ExcludeGPUarchitectures = @("GCN4"); ExcludeGPUmodel = ""; ExcludePools = @(@(), @()); Arguments = @(" -a etchash") } # https://github.com/bzminer/bzminer/issues/264
- @{ Algorithms = @("Ethash"); Type = "AMD"; Fee = @(0.005); MinMemGiB = 1.08; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(60, 20); ExcludeGPUarchitectures = @("GCN4"); ExcludeGPUmodel = ""; ExcludePools = @(@(), @()); Arguments = @(" -a ethash") } # https://github.com/bzminer/bzminer/issues/264
- @{ Algorithms = @("EthashB3"); Type = "AMD"; Fee = @(0.01); MinMemGiB = 1.08; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(60, 0); ExcludeGPUarchitectures = @("RDNA1"); ExcludeGPUmodel = ""; ExcludePools = @(@(), @()); Arguments = @(" -a rethereum") } # https://github.com/bzminer/bzminer/issues/324
- @{ Algorithms = @("FishHash"); Type = "AMD"; Fee = @(0.01); MinMemGiB = 1.24; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(60, 60); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = ""; ExcludePools = @(@("NiceHash"), @()); Arguments = @(" -a ironfish") } # https://github.com/bzminer/bzminer/issues/260
- @{ Algorithms = @("HeavyHashKarlsen"); Type = "AMD"; Fee = @(0.01); MinMemGiB = 2; MinerSet = 2; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(45, 15); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = ""; ExcludePools = @(@("NiceHash", "ZergPool"), @()); Arguments = @(" -a karlsen") }
-# @{ Algorithms = @("HeavyHashKaspa"); Type = "AMD"; Fee = @(0.01); MinMemGiB = 2; MinerSet = 2; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(45, 15); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = ""; ExcludePools = @(@("ProHashing"), @()); Arguments = @(" -a kaspa") } # ASIC
- @{ Algorithms = @("JanusHash"); Type = "AMD"; Fee = @(0.01); MinMemGiB = 2; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(60, 60); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = ""; ExcludePools = @(@(), @()); Arguments = @(" -a warthog") }
- @{ Algorithms = @("KawPow"); Type = "AMD"; Fee = @(0.01); MinMemGiB = 1.08; MinerSet = 2; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(45, 15); ExcludeGPUarchitectures = @("GCN4"); ExcludeGPUmodel = ""; ExcludePools = @(@(), @()); Arguments = @(" -a rvn") } # https://github.com/bzminer/bzminer/issues/264
- @{ Algorithms = @("NexaPow"); Type = "AMD"; Fee = @(0.02); MinMemGiB = 3; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(45, 15); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = ""; ExcludePools = @(@(), @()); Arguments = @(" -a nexa") }
- @{ Algorithms = @("SHA512256d"); Type = "AMD"; Fee = @(0.01); MinMemGiB = 1; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(45, 15); ExcludeGPUarchitectures = @("GCN1"); ExcludeGPUmodel = ""; ExcludePools = @(@(), @()); Arguments = @(" -a radiant") } # Error
- @{ Algorithms = @("SHA256dt"); Type = "AMD"; Fee = @(0.01); MinMemGiB = 1; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(45, 15); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = ""; ExcludePools = @(@(), @()); Arguments = @(" -a novo") }
- @{ Algorithms = @("SHA3d"); Type = "AMD"; Fee = @(0.01); MinMemGiB = 1; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(45, 15); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = ""; ExcludePools = @(@(), @()); Arguments = @(" -a kylacoin") }
- @{ Algorithms = @("Skein2"); Type = "AMD"; Fee = @(0.01); MinMemGiB = 2; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(45, 15); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = ""; ExcludePools = @(@(), @()); Arguments = @(" -a woodcoin") }
-
- @{ Algorithms = @("Blake3"); Type = "INTEL"; Fee = @(0.005); MinMemGiB = 2; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(45, 0); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = ""; ExcludePools = @(@(), @()); Arguments = @(" -a alph") }
- @{ Algorithms = @("DynexSolve"); Type = "INTEL"; Fee = @(0.005); MinMemGiB = 2; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(45, 0); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = ""; ExcludePools = @(@(), @()); Arguments = @(" -a dynex") }
- @{ Algorithms = @("EtcHash"); Type = "INTEL"; Fee = @(0.005); MinMemGiB = 1.08; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(45, 25); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = ""; ExcludePools = @(@(), @()); Arguments = @(" -a etchash") }
- @{ Algorithms = @("Ethash"); Type = "INTEL"; Fee = @(0.005); MinMemGiB = 1.08; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(45, 20); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = ""; ExcludePools = @(@(), @()); Arguments = @(" -a ethash") }
- @{ Algorithms = @("EthashB3"); Type = "INTEL"; Fee = @(0.01); MinMemGiB = 1.08; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(45, 20); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = ""; ExcludePools = @(@(), @()); Arguments = @(" -a rethereum") }
- @{ Algorithms = @("FishHash"); Type = "INTEL"; Fee = @(0.01); MinMemGiB = 1.24; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(60, 60); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = ""; ExcludePools = @(@("NiceHash"), @()); Arguments = @(" -a ironfish") } # https://github.com/bzminer/bzminer/issues/260
- @{ Algorithms = @("HeavyHashKarlsen"); Type = "INTEL"; Fee = @(0.01); MinMemGiB = 1.08; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(45, 0); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = ""; ExcludePools = @(@("NiceHash", "ZergPool"), @()); Arguments = @(" -a karlsen") }
- @{ Algorithms = @("JanusHash"); Type = "INTEL"; Fee = @(0.01); MinMemGiB = 2; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(60, 60); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = ""; ExcludePools = @(@(), @()); Arguments = @(" -a warthog") }
- @{ Algorithms = @("KawPow"); Type = "INTEL"; Fee = @(0.01); MinMemGiB = 1.08; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(45, 0); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = ""; ExcludePools = @(@(), @()); Arguments = @(" -a rvn") }
- @{ Algorithms = @("SHA512256d"); Type = "INTEL"; Fee = @(0.01); MinMemGiB = 1; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(45, 0); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = ""; ExcludePools = @(@(), @()); Arguments = @(" -a radiant") }
-
- @{ Algorithms = @("Autolykos2"); Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1.08; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(45, 15); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = ""; ExcludePools = @(@("NiceHash"), @()); Arguments = @(" -a ergo") }
-# @{ Algorithms = @("Autolykos2", "HeavyHashKaspa"); Type = "NVIDIA"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(45, 60); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = "^MX[1|2]\d+"; ExcludePools = @(@("NiceHash", "ProHashing"), @()); Arguments = @(" -a ergo", " --a2 kaspa") } # ASIC
- @{ Algorithms = @("Autolykos2", "SHA512256d"); Type = "NVIDIA"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(45, 60); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = "^MX[1|2]\d+"; ExcludePools = @(@("NiceHash", "ProHashing"), @()); Arguments = @(" -a ergo", " --a2 radiant") }
- @{ Algorithms = @("Blake3"); Type = "NVIDIA"; Fee = @(0.005); MinMemGiB = 2; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(45, 5); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = ""; ExcludePools = @(@(), @()); Arguments = @(" -a alph") }
- @{ Algorithms = @("DynexSolve"); Type = "NVIDIA"; Fee = @(0.02); MinMemGiB = 2; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(45, 20); ExcludeGPUarchitectures = @("Other"); ExcludeGPUmodel = ""; ExcludePools = @(@(), @()); Arguments = @(" -a dynex") }
- @{ Algorithms = @("EtcHash"); Type = "NVIDIA"; Fee = @(0.005); MinMemGiB = 1.08; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(60, 20); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = ""; ExcludePools = @(@(), @()); Arguments = @(" -a etchash") }
- @{ Algorithms = @("EtcHash", "Blake3"); Type = "NVIDIA"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(60, 60); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = ""; ExcludePools = @(@(), @("NiceHash")); Arguments = @(" -a etchash", " --a2 alph") }
- @{ Algorithms = @("EtcHash", "FishHash"); Type = "NVIDIA"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(60, 60); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = ""; ExcludePools = @(@(), @("NiceHash")); Arguments = @(" -a etchash", " --a2 ironfish") } # https://github.com/bzminer/bzminer/issues/260
-# @{ Algorithms = @("EtcHash", "HeavyHashKaspa"); Type = "NVIDIA"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(60, 60); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = "^MX[1|2]\d+"; ExcludePools = @(@(), @("ProHashing")); Arguments = @(" -a etchash", " --a2 kaspa") } # ASIC
- @{ Algorithms = @("EtcHash", "SHA512256d"); Type = "NVIDIA"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(90, 60); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = "^MX[1|2]\d+"; ExcludePools = @(@(), @()); Arguments = @(" -a etchash", " --a2 radiant") }
- @{ Algorithms = @("Ethash"); Type = "NVIDIA"; Fee = @(0.005); MinMemGiB = 1.08; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(60, 10); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = ""; ExcludePools = @(@(), @()); Arguments = @(" -a ethash") }
- @{ Algorithms = @("Ethash", "Blake3"); Type = "NVIDIA"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(60, 60); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = ""; ExcludePools = @(@(), @("NiceHash")); Arguments = @(" -a ethash", " --a2 alph") }
- @{ Algorithms = @("Ethash", "FishHash"); Type = "NVIDIA"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(60, 60); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = ""; ExcludePools = @(@(), @("NiceHash")); Arguments = @(" -a ethash", " --a2 ironfish") } # https://github.com/bzminer/bzminer/issues/260
-# @{ Algorithms = @("Ethash", "HeavyHashKaspa"); Type = "NVIDIA"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(60, 60); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = "^MX[1|2]\d+"; ExcludePools = @(@(), @("NiceHash")); Arguments = @(" -a ethash", " --a2 kaspa") } # ASIC
- @{ Algorithms = @("Ethash", "SHA512256d"); Type = "NVIDIA"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(90, 60); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = "^MX[1|2]\d+"; ExcludePools = @(@(), @()); Arguments = @(" -a ethash", " --a2 radiant") }
- @{ Algorithms = @("EthashB3"); Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1.08; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(60, 20); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = ""; ExcludePools = @(@(), @()); Arguments = @(" -a rethereum") }
- @{ Algorithms = @("FishHash"); Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1.24; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(60, 60); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = ""; ExcludePools = @(@("NiceHash"), @()); Arguments = @(" -a ironfish") } # https://github.com/bzminer/bzminer/issues/260
- @{ Algorithms = @("HeavyHashKarlsen"); Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 2; MinerSet = 2; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(45, 15); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = ""; ExcludePools = @(@("NiceHash", "ZergPool"), @()); Arguments = @(" -a karlsen") }
-# @{ Algorithms = @("HeavyHashKaspa"); Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 2; MinerSet = 2; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(45, 15); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = "^MX[1|2]\d+"; ExcludePools = @(@("NiceHash"), @()); Arguments = @(" -a kaspa") } # ASIC
- @{ Algorithms = @("JanusHash"); Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 2; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(60, 60); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = ""; ExcludePools = @(@(), @()); Arguments = @(" -a warthog") }
- @{ Algorithms = @("KawPow"); Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1.08; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(45, 15); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = "^MX[1|2]\d+"; ExcludePools = @(@(), @()); Arguments = @(" -a rvn") }
- @{ Algorithms = @("NexaPow"); Type = "NVIDIA"; Fee = @(0.02); MinMemGiB = 3; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(60, 15); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = ""; ExcludePools = @(@(), @()); Arguments = @(" -a nexa") }
- @{ Algorithms = @("SHA512256d"); Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(45, 5); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = "^MX[1|2]\d+"; ExcludePools = @(@(), @()); Arguments = @(" -a radiant") }
- @{ Algorithms = @("SHA256dt"); Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(45, 5); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = "^MX[1|2]\d+"; ExcludePools = @(@(), @()); Arguments = @(" -a novo") }
- @{ Algorithms = @("SHA3d"); Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(45, 5); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = "^MX[1|2]\d+"; ExcludePools = @(@(), @()); Arguments = @(" -a kylacoin") }
- @{ Algorithms = @("Skein2"); Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 2; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(45, 5); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = ""; ExcludePools = @(@(), @()); Arguments = @(" -a woodcoin") }
+ @{ Algorithms = @("Autolykos2"); Type = "AMD"; Fee = @(0.01); MinMemGiB = 1.08; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(45, 15); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = ""; ExcludePools = @(@("NiceHash"), @()); Arguments = @(" -a ergo") }
+ @{ Algorithms = @("Blake3"); Type = "AMD"; Fee = @(0.005); MinMemGiB = 2; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(45, 15); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = ""; ExcludePools = @(@(), @()); Arguments = @(" -a alph") }
+ @{ Algorithms = @("DynexSolve"); Type = "AMD"; Fee = @(0.005); MinMemGiB = 2; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(45, 15); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = ""; ExcludePools = @(@(), @()); Arguments = @(" -a dynex") }
+ @{ Algorithms = @("EtcHash"); Type = "AMD"; Fee = @(0.005); MinMemGiB = 1.08; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(45, 20); ExcludeGPUarchitectures = @("GCN4"); ExcludeGPUmodel = ""; ExcludePools = @(@(), @()); Arguments = @(" -a etchash") } # https://github.com/bzminer/bzminer/issues/264
+ @{ Algorithms = @("Ethash"); Type = "AMD"; Fee = @(0.005); MinMemGiB = 1.08; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(60, 20); ExcludeGPUarchitectures = @("GCN4"); ExcludeGPUmodel = ""; ExcludePools = @(@(), @()); Arguments = @(" -a ethash") } # https://github.com/bzminer/bzminer/issues/264
+ @{ Algorithms = @("EthashB3"); Type = "AMD"; Fee = @(0.01); MinMemGiB = 1.08; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(60, 0); ExcludeGPUarchitectures = @("RDNA1", "RDNA2"); ExcludeGPUmodel = ""; ExcludePools = @(@(), @()); Arguments = @(" -a rethereum") } # https://github.com/bzminer/bzminer/issues/324
+ @{ Algorithms = @("FishHash"); Type = "AMD"; Fee = @(0.01); MinMemGiB = 1.24; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(60, 60); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = ""; ExcludePools = @(@("NiceHash"), @()); Arguments = @(" -a ironfish") } # https://github.com/bzminer/bzminer/issues/260
+ @{ Algorithms = @("HeavyHashKarlsen"); Type = "AMD"; Fee = @(0.01); MinMemGiB = 2; MinerSet = 2; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(45, 15); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = ""; ExcludePools = @(@("NiceHash"), @()); Arguments = @(" -a karlsen") }
+# @{ Algorithms = @("HeavyHashKaspa"); Type = "AMD"; Fee = @(0.01); MinMemGiB = 2; MinerSet = 2; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(45, 15); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = ""; ExcludePools = @(@("NiceHash"), @()); Arguments = @(" -a kaspa") } # ASIC
+ @{ Algorithms = @("JanusHash"); Type = "AMD"; Fee = @(0.01); MinMemGiB = 2; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(60, 60); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = ""; ExcludePools = @(@(), @()); Arguments = @(" -a warthog") }
+ @{ Algorithms = @("KawPow"); Type = "AMD"; Fee = @(0.01); MinMemGiB = 1.08; MinerSet = 2; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(45, 15); ExcludeGPUarchitectures = @("GCN4"); ExcludeGPUmodel = ""; ExcludePools = @(@(), @()); Arguments = @(" -a rvn") } # https://github.com/bzminer/bzminer/issues/264
+ @{ Algorithms = @("NexaPow"); Type = "AMD"; Fee = @(0.02); MinMemGiB = 3; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(45, 15); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = ""; ExcludePools = @(@(), @()); Arguments = @(" -a nexa") }
+ @{ Algorithms = @("SHA512256d"); Type = "AMD"; Fee = @(0.01); MinMemGiB = 1; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(45, 15); ExcludeGPUarchitectures = @("GCN1"); ExcludeGPUmodel = ""; ExcludePools = @(@(), @()); Arguments = @(" -a radiant") } # Error
+ @{ Algorithms = @("SHA256dt"); Type = "AMD"; Fee = @(0.01); MinMemGiB = 1; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(45, 15); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = ""; ExcludePools = @(@(), @()); Arguments = @(" -a novo") }
+ @{ Algorithms = @("SHA3d"); Type = "AMD"; Fee = @(0.01); MinMemGiB = 1; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(45, 15); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = ""; ExcludePools = @(@(), @()); Arguments = @(" -a kylacoin") }
+ @{ Algorithms = @("Skein2"); Type = "AMD"; Fee = @(0.01); MinMemGiB = 2; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(45, 15); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = ""; ExcludePools = @(@(), @()); Arguments = @(" -a woodcoin") }
+
+ @{ Algorithms = @("Blake3"); Type = "INTEL"; Fee = @(0.005); MinMemGiB = 2; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(45, 0); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = ""; ExcludePools = @(@(), @()); Arguments = @(" -a alph") }
+ @{ Algorithms = @("DynexSolve"); Type = "INTEL"; Fee = @(0.005); MinMemGiB = 2; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(45, 0); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = ""; ExcludePools = @(@(), @()); Arguments = @(" -a dynex") }
+ @{ Algorithms = @("EtcHash"); Type = "INTEL"; Fee = @(0.005); MinMemGiB = 1.08; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(45, 25); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = ""; ExcludePools = @(@(), @()); Arguments = @(" -a etchash") }
+ @{ Algorithms = @("Ethash"); Type = "INTEL"; Fee = @(0.005); MinMemGiB = 1.08; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(45, 20); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = ""; ExcludePools = @(@(), @()); Arguments = @(" -a ethash") }
+ @{ Algorithms = @("EthashB3"); Type = "INTEL"; Fee = @(0.01); MinMemGiB = 1.08; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(45, 20); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = ""; ExcludePools = @(@(), @()); Arguments = @(" -a rethereum") }
+ @{ Algorithms = @("FishHash"); Type = "INTEL"; Fee = @(0.01); MinMemGiB = 1.24; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(60, 60); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = ""; ExcludePools = @(@("NiceHash"), @()); Arguments = @(" -a ironfish") } # https://github.com/bzminer/bzminer/issues/260
+ @{ Algorithms = @("HeavyHashKarlsen"); Type = "INTEL"; Fee = @(0.01); MinMemGiB = 1.08; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(45, 0); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = ""; ExcludePools = @(@("NiceHash"), @()); Arguments = @(" -a karlsen") }
+ @{ Algorithms = @("JanusHash"); Type = "INTEL"; Fee = @(0.01); MinMemGiB = 2; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(60, 60); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = ""; ExcludePools = @(@(), @()); Arguments = @(" -a warthog") }
+ @{ Algorithms = @("KawPow"); Type = "INTEL"; Fee = @(0.01); MinMemGiB = 1.08; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(45, 0); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = ""; ExcludePools = @(@(), @()); Arguments = @(" -a rvn") }
+ @{ Algorithms = @("SHA512256d"); Type = "INTEL"; Fee = @(0.01); MinMemGiB = 1; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(45, 0); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = ""; ExcludePools = @(@(), @()); Arguments = @(" -a radiant") }
+
+ @{ Algorithms = @("Autolykos2"); Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1.08; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(45, 15); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = ""; ExcludePools = @(@("NiceHash"), @()); Arguments = @(" -a ergo") }
+# @{ Algorithms = @("Autolykos2", "HeavyHashKaspa"); Type = "NVIDIA"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(45, 60); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = "^MX[1|2]\d+"; ExcludePools = @(@("NiceHash"), @()); Arguments = @(" -a ergo", " --a2 kaspa") } # ASIC
+ @{ Algorithms = @("Autolykos2", "SHA512256d"); Type = "NVIDIA"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(45, 60); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = "^MX[1|2]\d+"; ExcludePools = @(@("NiceHash"), @()); Arguments = @(" -a ergo", " --a2 radiant") }
+ @{ Algorithms = @("Blake3"); Type = "NVIDIA"; Fee = @(0.005); MinMemGiB = 2; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(45, 5); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = ""; ExcludePools = @(@(), @()); Arguments = @(" -a alph") }
+ @{ Algorithms = @("DynexSolve"); Type = "NVIDIA"; Fee = @(0.02); MinMemGiB = 2; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(45, 20); ExcludeGPUarchitectures = @("Other"); ExcludeGPUmodel = ""; ExcludePools = @(@(), @()); Arguments = @(" -a dynex") }
+ @{ Algorithms = @("EtcHash"); Type = "NVIDIA"; Fee = @(0.005); MinMemGiB = 1.08; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(60, 20); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = ""; ExcludePools = @(@(), @()); Arguments = @(" -a etchash") }
+ @{ Algorithms = @("EtcHash", "Blake3"); Type = "NVIDIA"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(60, 60); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = ""; ExcludePools = @(@(), @("NiceHash")); Arguments = @(" -a etchash", " --a2 alph") }
+ @{ Algorithms = @("EtcHash", "FishHash"); Type = "NVIDIA"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(60, 60); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = ""; ExcludePools = @(@(), @("NiceHash")); Arguments = @(" -a etchash", " --a2 ironfish") } # https://github.com/bzminer/bzminer/issues/260
+# @{ Algorithms = @("EtcHash", "HeavyHashKaspa"); Type = "NVIDIA"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(60, 60); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = "^MX[1|2]\d+"; ExcludePools = @(@(), @()); Arguments = @(" -a etchash", " --a2 kaspa") } # ASIC
+ @{ Algorithms = @("EtcHash", "SHA512256d"); Type = "NVIDIA"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(90, 60); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = "^MX[1|2]\d+"; ExcludePools = @(@(), @()); Arguments = @(" -a etchash", " --a2 radiant") }
+ @{ Algorithms = @("Ethash"); Type = "NVIDIA"; Fee = @(0.005); MinMemGiB = 1.08; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(60, 10); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = ""; ExcludePools = @(@(), @()); Arguments = @(" -a ethash") }
+ @{ Algorithms = @("Ethash", "Blake3"); Type = "NVIDIA"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(60, 60); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = ""; ExcludePools = @(@(), @("NiceHash")); Arguments = @(" -a ethash", " --a2 alph") }
+ @{ Algorithms = @("Ethash", "FishHash"); Type = "NVIDIA"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(60, 60); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = ""; ExcludePools = @(@(), @("NiceHash")); Arguments = @(" -a ethash", " --a2 ironfish") } # https://github.com/bzminer/bzminer/issues/260
+# @{ Algorithms = @("Ethash", "HeavyHashKaspa"); Type = "NVIDIA"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(60, 60); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = "^MX[1|2]\d+"; ExcludePools = @(@(), @("NiceHash")); Arguments = @(" -a ethash", " --a2 kaspa") } # ASIC
+ @{ Algorithms = @("Ethash", "SHA512256d"); Type = "NVIDIA"; Fee = @(0.01, 0.01); MinMemGiB = 1.24; MinerSet = 2; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(90, 60); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = "^MX[1|2]\d+"; ExcludePools = @(@(), @()); Arguments = @(" -a ethash", " --a2 radiant") }
+ @{ Algorithms = @("EthashB3"); Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1.08; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(60, 20); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = ""; ExcludePools = @(@(), @()); Arguments = @(" -a rethereum") }
+ @{ Algorithms = @("FishHash"); Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1.24; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(60, 60); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = ""; ExcludePools = @(@(), @()); Arguments = @(" -a ironfish") }
+ @{ Algorithms = @("HeavyHashKarlsen"); Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 2; MinerSet = 2; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(45, 15); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = ""; ExcludePools = @(@("NiceHash"), @()); Arguments = @(" -a karlsen") }
+# @{ Algorithms = @("HeavyHashKaspa"); Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 2; MinerSet = 2; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(45, 15); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = "^MX[1|2]\d+"; ExcludePools = @(@("NiceHash"), @()); Arguments = @(" -a kaspa") } # ASIC
+ @{ Algorithms = @("JanusHash"); Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 2; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(60, 60); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = ""; ExcludePools = @(@(), @()); Arguments = @(" -a warthog") }
+ @{ Algorithms = @("KawPow"); Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1.08; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(45, 15); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = "^MX[1|2]\d+"; ExcludePools = @(@(), @()); Arguments = @(" -a rvn") }
+ @{ Algorithms = @("NexaPow"); Type = "NVIDIA"; Fee = @(0.02); MinMemGiB = 3; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(60, 15); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = ""; ExcludePools = @(@(), @()); Arguments = @(" -a nexa") }
+ @{ Algorithms = @("SHA512256d"); Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(45, 5); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = "^MX[1|2]\d+"; ExcludePools = @(@(), @()); Arguments = @(" -a radiant") }
+ @{ Algorithms = @("SHA256dt"); Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(45, 5); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = "^MX[1|2]\d+"; ExcludePools = @(@(), @()); Arguments = @(" -a novo") }
+ @{ Algorithms = @("SHA3d"); Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(45, 5); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = "^MX[1|2]\d+"; ExcludePools = @(@(), @()); Arguments = @(" -a kylacoin") }
+ @{ Algorithms = @("Skein2"); Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 2; MinerSet = 1; Tuning = " --oc_mem_tweak 2"; WarmupTimes = @(45, 5); ExcludeGPUarchitectures = @(); ExcludeGPUmodel = ""; ExcludePools = @(@(), @()); Arguments = @(" -a woodcoin") }
)
$Algorithms = $Algorithms.Where({ $_.MinerSet -le $Config.MinerSet })
@@ -153,7 +153,7 @@ If ($Algorithms) {
[PSCustomObject]@{
API = "BzMiner"
- Arguments = "$Arguments -v 2 --nc 1 --no_watchdog --http_enabled 1 --http_port $MinerAPIPort --enable $(($AvailableMinerDevices.$DeviceEnumerator | Sort-Object -Unique).ForEach({ '{0}:0' -f $_ }) -join ' ')"
+ Arguments = "$Arguments -v 2 --nc 1 --no_watchdog --avg_hr_ms 1000 --restart_on_disconnect 0 --http_enabled 1 --http_port $MinerAPIPort --enable $(($AvailableMinerDevices.$DeviceEnumerator | Sort-Object -Unique).ForEach({ '{0}:0' -f $_ }) -join ' ')"
DeviceNames = $AvailableMinerDevices.Name
Fee = $_.Fee # Dev fee
MinerSet = $_.MinerSet
diff --git a/Miners/CcminerAlexis78-v1.5.2.ps1 b/Miners/CcminerAlexis78-v1.5.2.ps1
index 5f8bb1db..5bd8a7ae 100644
--- a/Miners/CcminerAlexis78-v1.5.2.ps1
+++ b/Miners/CcminerAlexis78-v1.5.2.ps1
@@ -17,8 +17,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
-Version: 6.3.1
-Version date: 2024/09/06
+Version: 6.3.2
+Version date: 2024/09/09
#>
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 f2844155..e2b33f2f 100644
--- a/Miners/CcminerDyn-v1.0.2.ps1
+++ b/Miners/CcminerDyn-v1.0.2.ps1
@@ -17,8 +17,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
-Version: 6.3.1
-Version date: 2024/09/06
+Version: 6.3.2
+Version date: 2024/09/09
#>
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 f2eca021..691a1272 100644
--- a/Miners/CcminerKlausT-v8.25.ps1
+++ b/Miners/CcminerKlausT-v8.25.ps1
@@ -17,8 +17,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
-Version: 6.3.1
-Version date: 2024/09/06
+Version: 6.3.2
+Version date: 2024/09/09
#>
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 29ae80e3..c2046aee 100644
--- a/Miners/CcminerKlausT-v8.26x2.ps1
+++ b/Miners/CcminerKlausT-v8.26x2.ps1
@@ -17,8 +17,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
-Version: 6.3.1
-Version date: 2024/09/06
+Version: 6.3.2
+Version date: 2024/09/09
#>
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 3ece97a6..9b823b61 100644
--- a/Miners/CcminerLyra2z330-v8.21r9.ps1
+++ b/Miners/CcminerLyra2z330-v8.21r9.ps1
@@ -17,8 +17,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
-Version: 6.3.1
-Version date: 2024/09/06
+Version: 6.3.2
+Version date: 2024/09/09
#>
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 012e35f2..0ccf7b3c 100644
--- a/Miners/CcminerLyraYesscrypt-v8.21r18v5.ps1
+++ b/Miners/CcminerLyraYesscrypt-v8.21r18v5.ps1
@@ -17,8 +17,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
-Version: 6.3.1
-Version date: 2024/09/06
+Version: 6.3.2
+Version date: 2024/09/09
#>
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 4b73113f..9ac1b4a0 100644
--- a/Miners/CcminerMemeHash-v2.5.5.9.ps1
+++ b/Miners/CcminerMemeHash-v2.5.5.9.ps1
@@ -17,8 +17,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
-Version: 6.3.1
-Version date: 2024/09/06
+Version: 6.3.2
+Version date: 2024/09/09
#>
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 902dfffd..ada716ed 100644
--- a/Miners/CcminerNeoscryptXaya-v0.2.ps1
+++ b/Miners/CcminerNeoscryptXaya-v0.2.ps1
@@ -17,8 +17,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
-Version: 6.3.1
-Version date: 2024/09/06
+Version: 6.3.2
+Version date: 2024/09/09
#>
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 2b7ea221..90b4c679 100644
--- a/Miners/CcminerVerusCpu-v3.8.3.ps1
+++ b/Miners/CcminerVerusCpu-v3.8.3.ps1
@@ -17,8 +17,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
-Version: 6.3.1
-Version date: 2024/09/06
+Version: 6.3.2
+Version date: 2024/09/09
#>
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 fded557c..b379f36f 100644
--- a/Miners/CcminerVerusGpu-v3.8.3.ps1
+++ b/Miners/CcminerVerusGpu-v3.8.3.ps1
@@ -17,8 +17,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
-Version: 6.3.1
-Version date: 2024/09/06
+Version: 6.3.2
+Version date: 2024/09/09
#>
If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.OpenCL.ComputeCapability -ge "7.5" }))) { Return }
diff --git a/Miners/ClaymoreNeoscrypt-v1.2.ps1 b/Miners/ClaymoreNeoscrypt-v1.2.ps1
index 64d9d400..fc68d25e 100644
--- a/Miners/ClaymoreNeoscrypt-v1.2.ps1
+++ b/Miners/ClaymoreNeoscrypt-v1.2.ps1
@@ -17,8 +17,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
-Version: 6.3.1
-Version date: 2024/09/06
+Version: 6.3.2
+Version date: 2024/09/09
#>
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 1f75dba8..fe240ba7 100644
--- a/Miners/CpuMiner-v1.4.ps1
+++ b/Miners/CpuMiner-v1.4.ps1
@@ -17,8 +17,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
-Version: 6.3.1
-Version date: 2024/09/06
+Version: 6.3.2
+Version date: 2024/09/09
#>
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 fac7d2fb..ff39597e 100644
--- a/Miners/CpuMinerAurum-v3.23.1.ps1
+++ b/Miners/CpuMinerAurum-v3.23.1.ps1
@@ -17,8 +17,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
-Version: 6.3.1
-Version date: 2024/09/06
+Version: 6.3.2
+Version date: 2024/09/09
#>
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 7d85459a..a4b9001b 100644
--- a/Miners/CryptoDredge-v0.16.0.ps1
+++ b/Miners/CryptoDredge-v0.16.0.ps1
@@ -17,8 +17,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
-Version: 6.3.1
-Version date: 2024/09/06
+Version: 6.3.2
+Version date: 2024/09/09
#>
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 cb336573..a581adbc 100644
--- a/Miners/CryptoDredge-v0.27.0.ps1
+++ b/Miners/CryptoDredge-v0.27.0.ps1
@@ -17,8 +17,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
-Version: 6.3.1
-Version date: 2024/09/06
+Version: 6.3.2
+Version date: 2024/09/09
#>
If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.OpenCL.ComputeCapability -ge "5.0" -and $_.Architecture -ne "Other" }))) { Return }
diff --git a/Miners/EthMiner-v0.19.0.18.ps1 b/Miners/EthMiner-v0.19.0.18.ps1
index 05a25501..37a16043 100644
--- a/Miners/EthMiner-v0.19.0.18.ps1
+++ b/Miners/EthMiner-v0.19.0.18.ps1
@@ -17,8 +17,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
-Version: 6.3.1
-Version date: 2024/09/06
+Version: 6.3.2
+Version date: 2024/09/09
#>
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 5e5eb413..857f4c79 100644
--- a/Miners/EvrProgPow-v1p3p0.ps1
+++ b/Miners/EvrProgPow-v1p3p0.ps1
@@ -17,8 +17,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
-Version: 6.3.1
-Version date: 2024/09/06
+Version: 6.3.2
+Version date: 2024/09/09
#>
If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.OpenCL.ComputeCapability -ge "5.0" }))) { Return }
diff --git a/Miners/FrkHashMiner-v1.3.14.ps1 b/Miners/FrkHashMiner-v1.3.14.ps1
index 15f869e3..83b6058f 100644
--- a/Miners/FrkHashMiner-v1.3.14.ps1
+++ b/Miners/FrkHashMiner-v1.3.14.ps1
@@ -17,8 +17,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
-Version: 6.3.1
-Version date: 2024/09/06
+Version: 6.3.2
+Version date: 2024/09/09
#>
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 1ad7d7b9..80e98f90 100644
--- a/Miners/GMiner-v2.75.ps1
+++ b/Miners/GMiner-v2.75.ps1
@@ -17,8 +17,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
-Version: 6.3.1
-Version date: 2024/09/06
+Version: 6.3.2
+Version date: 2024/09/09
#>
If (-not ($Devices = $Variables.EnabledDevices.Where({ ($_.Type -eq "AMD" -and $_.OpenCL.ClVersion -ge "OpenCL C 1.2") -or $_.OpenCL.ComputeCapability -ge "5.0" }))) { Return }
diff --git a/Miners/GMiner-v3.44.ps1 b/Miners/GMiner-v3.44.ps1
index 507e76b7..4d64af50 100644
--- a/Miners/GMiner-v3.44.ps1
+++ b/Miners/GMiner-v3.44.ps1
@@ -17,8 +17,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
-Version: 6.3.1
-Version date: 2024/09/06
+Version: 6.3.2
+Version date: 2024/09/09
#>
If (-not ($Devices = $Variables.EnabledDevices.Where({ ($_.Type -eq "AMD" -and $_.OpenCL.ClVersion -ge "OpenCL C 1.2") -or $_.OpenCL.ComputeCapability -ge "5.0" }))) { Return }
diff --git a/Miners/HellMiner-v0.59.1.ps1 b/Miners/HellMiner-v0.59.1.ps1
index a726bae6..2db120a9 100644
--- a/Miners/HellMiner-v0.59.1.ps1
+++ b/Miners/HellMiner-v0.59.1.ps1
@@ -17,8 +17,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
-Version: 6.3.1
-Version date: 2024/09/06
+Version: 6.3.2
+Version date: 2024/09/09
#>
If (-not ($AvailableMinerDevices = $Variables.EnabledDevices.Where({ $_.Type -eq "CPU" }))) { Return }
diff --git a/Miners/JayddeeCpu-v24.4.ps1 b/Miners/JayddeeCpu-v24.4.ps1
index ee4714ce..0ee79995 100644
--- a/Miners/JayddeeCpu-v24.4.ps1
+++ b/Miners/JayddeeCpu-v24.4.ps1
@@ -17,8 +17,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
-Version: 6.3.1
-Version date: 2024/09/06
+Version: 6.3.2
+Version date: 2024/09/09
#>
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 a7a4cd24..737b7217 100644
--- a/Miners/KawpowMiner-v1.2.4cl.ps1
+++ b/Miners/KawpowMiner-v1.2.4cl.ps1
@@ -17,8 +17,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
-Version: 6.3.1
-Version date: 2024/09/06
+Version: 6.3.2
+Version date: 2024/09/09
#>
If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.Type -eq "AMD" }))) { Return }
diff --git a/Miners/KawpowMiner-v1.2.4cuda.ps1 b/Miners/KawpowMiner-v1.2.4cuda.ps1
index ce0aecec..38908f9c 100644
--- a/Miners/KawpowMiner-v1.2.4cuda.ps1
+++ b/Miners/KawpowMiner-v1.2.4cuda.ps1
@@ -17,8 +17,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
-Version: 6.3.1
-Version date: 2024/09/06
+Version: 6.3.2
+Version date: 2024/09/09
#>
If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.OpenCL.ComputeCapability -ge "5.0" }))) { Return }
diff --git a/Miners/Kudaraidee-v1.2.0a.ps1 b/Miners/Kudaraidee-v1.2.0a.ps1
index 7fcfd635..54343fd4 100644
--- a/Miners/Kudaraidee-v1.2.0a.ps1
+++ b/Miners/Kudaraidee-v1.2.0a.ps1
@@ -17,8 +17,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
-Version: 6.3.1
-Version date: 2024/09/06
+Version: 6.3.2
+Version date: 2024/09/09
#>
If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.Type -eq "AMD" -or ($_.Type -eq "NVIDIA" -and $_.CUDAVersion -ge [Version]"10.2") }))) { Return }
diff --git a/Miners/MeowPowMiner-v2.0.0cl.ps1 b/Miners/MeowPowMiner-v2.0.0cl.ps1
index 592793f0..fe65a0a6 100644
--- a/Miners/MeowPowMiner-v2.0.0cl.ps1
+++ b/Miners/MeowPowMiner-v2.0.0cl.ps1
@@ -17,8 +17,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
-Version: 6.3.1
-Version date: 2024/09/06
+Version: 6.3.2
+Version date: 2024/09/09
#>
If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.Type -eq "AMD" }))) { Return }
diff --git a/Miners/MeowPowMiner-v2.0.0cuda.ps1 b/Miners/MeowPowMiner-v2.0.0cuda.ps1
index 2d21c6b5..0a4a3d72 100644
--- a/Miners/MeowPowMiner-v2.0.0cuda.ps1
+++ b/Miners/MeowPowMiner-v2.0.0cuda.ps1
@@ -17,8 +17,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
-Version: 6.3.1
-Version date: 2024/09/06
+Version: 6.3.2
+Version date: 2024/09/09
#>
If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.OpenCL.ComputeCapability -ge "5.0" }))) { Return }
diff --git a/Miners/MiniZ-v2.4d.ps1 b/Miners/MiniZ-v2.4d.ps1
index bf187aab..3e1be1a0 100644
--- a/Miners/MiniZ-v2.4d.ps1
+++ b/Miners/MiniZ-v2.4d.ps1
@@ -17,8 +17,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
-Version: 6.3.1
-Version date: 2024/09/06
+Version: 6.3.2
+Version date: 2024/09/09
#>
If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.Type -eq "AMD" -or $_.OpenCL.ComputeCapability -ge "5.0" }))) { Return }
diff --git a/Miners/NBMiner-v42.3.ps1 b/Miners/NBMiner-v42.3.ps1
index 94520e26..1ea207fe 100644
--- a/Miners/NBMiner-v42.3.ps1
+++ b/Miners/NBMiner-v42.3.ps1
@@ -17,8 +17,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
-Version: 6.3.1
-Version date: 2024/09/06
+Version: 6.3.2
+Version date: 2024/09/09
#>
If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.Type -eq "AMD" -or ($_.OpenCL.ComputeCapability -ge "6.0" -and $_.CUDAVersion -ge [Version]"10.0") }))) { Return }
diff --git a/Miners/NSFMiner-v1.3.14.ps1 b/Miners/NSFMiner-v1.3.14.ps1
index 125e92c4..45830917 100644
--- a/Miners/NSFMiner-v1.3.14.ps1
+++ b/Miners/NSFMiner-v1.3.14.ps1
@@ -17,8 +17,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
-Version: 6.3.1
-Version date: 2024/09/06
+Version: 6.3.2
+Version date: 2024/09/09
#>
If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.Type -eq "AMD" -or ($_.OpenCL.ComputeCapability -ge "5.0" -and $_.CUDAVersion -ge [Version]"9.1") }))) { Return }
diff --git a/Miners/NanoMiner-v3.9.2.ps1 b/Miners/NanoMiner-v3.9.2.ps1
index bbf06282..e84f5c2d 100644
--- a/Miners/NanoMiner-v3.9.2.ps1
+++ b/Miners/NanoMiner-v3.9.2.ps1
@@ -17,8 +17,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
-Version: 6.3.1
-Version date: 2024/09/06
+Version: 6.3.2
+Version date: 2024/09/09
#>
If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.Type -eq "CPU" -or $_.Type -ne "NVIDIA" -or ($_.OpenCL.ComputeCapability -ge "5.0" -and $_.OpenCL.DriverVersion -ge [Version]"455.23") }))) { Return }
diff --git a/Miners/Ninjarig-1.0.3.ps1 b/Miners/Ninjarig-1.0.3.ps1
index ba5512a9..5ad0d47d 100644
--- a/Miners/Ninjarig-1.0.3.ps1
+++ b/Miners/Ninjarig-1.0.3.ps1
@@ -17,8 +17,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
-Version: 6.3.1
-Version date: 2024/09/06
+Version: 6.3.2
+Version date: 2024/09/09
#>
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 0ba07f2d..4a7d2446 100644
--- a/Miners/NosuchCpu-v3.8.8.1.ps1
+++ b/Miners/NosuchCpu-v3.8.8.1.ps1
@@ -17,8 +17,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
-Version: 6.3.1
-Version date: 2024/09/06
+Version: 6.3.2
+Version date: 2024/09/09
#>
If (-not ($AvailableMinerDevices = $Variables.EnabledDevices.Where({ $_.Type -eq "CPU" }))) { Return }
diff --git a/Miners/OneZeroMiner-v1.3.7.ps1 b/Miners/OneZeroMiner-v1.3.7.ps1
index 8be54ac8..0d0a7086 100644
--- a/Miners/OneZeroMiner-v1.3.7.ps1
+++ b/Miners/OneZeroMiner-v1.3.7.ps1
@@ -17,8 +17,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
-Version: 6.3.1
-Version date: 2024/09/06
+Version: 6.3.2
+Version date: 2024/09/09
#>
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 f07c7017..89104460 100644
--- a/Miners/PhoenixMiner-v6.2c.ps1
+++ b/Miners/PhoenixMiner-v6.2c.ps1
@@ -17,8 +17,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
-Version: 6.3.1
-Version date: 2024/09/06
+Version: 6.3.2
+Version date: 2024/09/09
#>
If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.Type -eq "AMD" -or $_.OpenCL.ComputeCapability -ge "5.0" }))) { Return }
diff --git a/Miners/Radiator-v1.0.0.ps1 b/Miners/Radiator-v1.0.0.ps1
index d6757350..1c6ad7f6 100644
--- a/Miners/Radiator-v1.0.0.ps1
+++ b/Miners/Radiator-v1.0.0.ps1
@@ -17,8 +17,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
-Version: 6.3.1
-Version date: 2024/09/06
+Version: 6.3.2
+Version date: 2024/09/09
#>
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 8cf3047b..b0b75a88 100644
--- a/Miners/Raptor3umCpu-v2.0.ps1
+++ b/Miners/Raptor3umCpu-v2.0.ps1
@@ -17,8 +17,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
-Version: 6.3.1
-Version date: 2024/09/06
+Version: 6.3.2
+Version date: 2024/09/09
#>
If (-not ($AvailableMinerDevices = $Variables.EnabledDevices.Where({ $_.Type -eq "CPU" }))) { Return }
diff --git a/Miners/Rigel-v1.18.2.ps1 b/Miners/Rigel-v1.18.2.ps1
index c15a5961..2b249407 100644
--- a/Miners/Rigel-v1.18.2.ps1
+++ b/Miners/Rigel-v1.18.2.ps1
@@ -17,8 +17,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
-Version: 6.3.1
-Version date: 2024/09/06
+Version: 6.3.2
+Version date: 2024/09/09
#>
# Return
diff --git a/Miners/RplantCpu-v5.0.41.ps1 b/Miners/RplantCpu-v5.0.41.ps1
index 08762e94..e491a268 100644
--- a/Miners/RplantCpu-v5.0.41.ps1
+++ b/Miners/RplantCpu-v5.0.41.ps1
@@ -17,8 +17,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
-Version: 6.3.1
-Version date: 2024/09/06
+Version: 6.3.2
+Version date: 2024/09/09
#>
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 bb03de46..038e2e68 100644
--- a/Miners/RrkzCpu-v4.2.ps1
+++ b/Miners/RrkzCpu-v4.2.ps1
@@ -17,8 +17,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
-Version: 6.3.1
-Version date: 2024/09/06
+Version: 6.3.2
+Version date: 2024/09/09
#>
If (-not ($AvailableMinerDevices = $Variables.EnabledDevices.Where({ $_.Type -eq "CPU" }))) { Return }
diff --git a/Miners/SCCminer-v1.1.0.ps1 b/Miners/SCCminer-v1.1.0.ps1
index 3dc8f636..859d36a4 100644
--- a/Miners/SCCminer-v1.1.0.ps1
+++ b/Miners/SCCminer-v1.1.0.ps1
@@ -17,8 +17,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
-Version: 6.3.1
-Version date: 2024/09/06
+Version: 6.3.2
+Version date: 2024/09/09
#>
Return # Bad shares
diff --git a/Miners/SRBMinerMulti-v0.9.4.ps1 b/Miners/SRBMinerMulti-v0.9.4.ps1
index 58102ed9..0b06c7d6 100644
--- a/Miners/SRBMinerMulti-v0.9.4.ps1
+++ b/Miners/SRBMinerMulti-v0.9.4.ps1
@@ -17,8 +17,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
-Version: 6.3.1
-Version date: 2024/09/06
+Version: 6.3.2
+Version date: 2024/09/09
#>
# Support for Pitcairn, Tahiti, Hawaii, Fiji and Tonga was removed in later versions
diff --git a/Miners/SRBMinerMulti-v2.6.3.ps1 b/Miners/SRBMinerMulti-v2.6.3.ps1
index 73753500..9c052f81 100644
--- a/Miners/SRBMinerMulti-v2.6.3.ps1
+++ b/Miners/SRBMinerMulti-v2.6.3.ps1
@@ -17,8 +17,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
-Version: 6.3.1
-Version date: 2024/09/06
+Version: 6.3.2
+Version date: 2024/09/09
#>
If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.Type -eq "CPU" -or $_.Type -eq "INTEL" -or ($_.Type -eq "AMD" -and $_.Model -notmatch "^GCN[1-3]" -and $_.OpenCL.ClVersion -ge "OpenCL C 2.0") -or ($_.OpenCL.ComputeCapability -ge "5.0" -and $_.OpenCL.DriverVersion -ge "510.00") }))) { Return }
diff --git a/Miners/SgMinerFancyIX-v0.9.4.ps1 b/Miners/SgMinerFancyIX-v0.9.4.ps1
index eaf50585..c7de514b 100644
--- a/Miners/SgMinerFancyIX-v0.9.4.ps1
+++ b/Miners/SgMinerFancyIX-v0.9.4.ps1
@@ -17,8 +17,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
-Version: 6.3.1
-Version date: 2024/09/06
+Version: 6.3.2
+Version date: 2024/09/09
#>
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 212255a6..ac806f2f 100644
--- a/Miners/Suprminer-v2.31v2.ps1
+++ b/Miners/Suprminer-v2.31v2.ps1
@@ -17,8 +17,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
-Version: 6.3.1
-Version date: 2024/09/06
+Version: 6.3.2
+Version date: 2024/09/09
#>
If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.OpenCL.ComputeCapability -ge "5.0" }))) { Return }
diff --git a/Miners/TTMiner-v2024.3.2.ps1 b/Miners/TTMiner-v2024.3.2.ps1
index 6f86a485..12148fd5 100644
--- a/Miners/TTMiner-v2024.3.2.ps1
+++ b/Miners/TTMiner-v2024.3.2.ps1
@@ -17,8 +17,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
-Version: 6.3.1
-Version date: 2024/09/06
+Version: 6.3.2
+Version date: 2024/09/09
#>
# TT needs avx2 and aes https://github.com/TrailingStop/TT-Miner-beta/issues/7#issuecomment-2158058291
diff --git a/Miners/TTMiner-v5.0.3.ps1 b/Miners/TTMiner-v5.0.3.ps1
index 30eb5419..37682228 100644
--- a/Miners/TTMiner-v5.0.3.ps1
+++ b/Miners/TTMiner-v5.0.3.ps1
@@ -17,8 +17,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
-Version: 6.3.1
-Version date: 2024/09/06
+Version: 6.3.2
+Version date: 2024/09/09
#>
If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.OpenCL.ComputeCapability -ge "5.0" }))) { Return }
diff --git a/Miners/TeamBlackMiner-v2.25.ps1 b/Miners/TeamBlackMiner-v2.25.ps1
index 5e0a099b..a5fbebc2 100644
--- a/Miners/TeamBlackMiner-v2.25.ps1
+++ b/Miners/TeamBlackMiner-v2.25.ps1
@@ -17,8 +17,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
-Version: 6.3.1
-Version date: 2024/09/06
+Version: 6.3.2
+Version date: 2024/09/09
#>
If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.Type -eq "AMD" -or ($_.OpenCL.ComputeCapability -ge "5.0" -and $_.CUDAVersion -ge [Version]"11.6") }))) { Return }
@@ -31,31 +31,31 @@ $DeviceSelector = @{ AMD = " --cl-devices"; NVIDIA = " --cuda-devices" }
$DeviceEnumerator = "Vendor_ID"
$Algorithms = @(
- @{ Algorithms = @("EtcHash"); Type = "AMD"; Fee = @(0.005); MinMemGiB = 1.24; MinerSet = 1; Tuning = ""; WarmupTimes = @(45, 15); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @()); Arguments = " --algo etchash" }
- @{ Algorithms = @("EtcHash", "EthashB3"); Type = "AMD"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 2; Tuning = ""; WarmupTimes = @(120, 45); ExcludeGPUarchitectures = @("RDNA1"); ExcludePools = @(@(), @()); Arguments = " --algo etc+ethb3" } # https://github.com/sp-hash/TeamBlackMiner/issues/450
- @{ Algorithms = @("EtcHash", "EvrProgPow"); Type = "AMD"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 2; Tuning = ""; WarmupTimes = @(90, 45); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @()); Arguments = " --algo etc+evr" }
- @{ Algorithms = @("EtcHash", "FiroPow"); Type = "AMD"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 2; Tuning = ""; WarmupTimes = @(90, 45); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @()); Arguments = " --algo etc+firo" }
- @{ Algorithms = @("EtcHash", "KawPow"); Type = "AMD"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 2; Tuning = ""; WarmupTimes = @(90, 45); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @("HashCryptos", "MiningDutch")); Arguments = " --algo etc+rvn" }
- @{ Algorithms = @("EtcHash", "MeowPow"); Type = "AMD"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 2; Tuning = ""; WarmupTimes = @(90, 45); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @()); Arguments = " --algo etc+meow" }
- @{ Algorithms = @("EtcHash", "VertHash"); Type = "AMD"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 1; Tuning = ""; WarmupTimes = @(120, 60); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @()); Arguments = " --algo etc+vtc --verthash-data ..\.$($Variables.VerthashDatPath)" } # 120 Seconds; https://github.com/sp-hash/TeamBlackMiner/issues/450
- @{ Algorithms = @("Ethash"); Type = "AMD"; Fee = @(0.005); MinMemGiB = 1.24; MinerSet = 1; Tuning = ""; WarmupTimes = @(45, 15); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @()); Arguments = " --algo ethash" } # https://github.com/sp-hash/TeamBlackMiner/issues/455
- @{ Algorithms = @("Ethash", "EthashB3"); Type = "AMD"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 2; Tuning = ""; WarmupTimes = @(120, 15); ExcludeGPUarchitectures = @("RDNA1"); ExcludePools = @(@(), @()); Arguments = " --algo eth+ethb3" } # https://github.com/sp-hash/TeamBlackMiner/issues/455
- @{ Algorithms = @("Ethash", "EvrProgPow"); Type = "AMD"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 2; Tuning = ""; WarmupTimes = @(90, 15); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @()); Arguments = " --algo eth+evr" } # https://github.com/sp-hash/TeamBlackMiner/issues/455
- @{ Algorithms = @("Ethash", "FiroPow"); Type = "AMD"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 2; Tuning = ""; WarmupTimes = @(90, 15); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @()); Arguments = " --algo eth+firo" } # https://github.com/sp-hash/TeamBlackMiner/issues/455
- @{ Algorithms = @("Ethash", "KawPow"); Type = "AMD"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 2; Tuning = ""; WarmupTimes = @(90, 45); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @("HashCryptos", "MiningDutch")); Arguments = " --algo eth+rvn" } # https://github.com/sp-hash/TeamBlackMiner/issues/455
- @{ Algorithms = @("Ethash", "MeowPow"); Type = "AMD"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 2; Tuning = ""; WarmupTimes = @(90, 45); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @()); Arguments = " --algo eth+meow" } # https://github.com/sp-hash/TeamBlackMiner/issues/455
- @{ Algorithms = @("Ethash", "VertHash"); Type = "AMD"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 1; Tuning = ""; WarmupTimes = @(120, 60); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @()); Arguments = " --algo eth+vtc --verthash-data ..\.$($Variables.VerthashDatPath)" } # https://github.com/sp-hash/TeamBlackMiner/issues/455 & 120 Secs; https://github.com/sp-hash/TeamBlackMiner/issues/450
- @{ Algorithms = @("EthashB3"); Type = "AMD"; Fee = @(0.005); MinMemGiB = 1.24; MinerSet = 1; Tuning = ""; WarmupTimes = @(45, 15); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @()); Arguments = " --algo ethashb3" }
- @{ Algorithms = @("EthashB3", "FiroPow"); Type = "AMD"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 1; Tuning = ""; WarmupTimes = @(90, 30); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @()); Arguments = " --algo ethb3+firo" }
- @{ Algorithms = @("EthashB3", "EvrProgPow"); Type = "AMD"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 1; Tuning = ""; WarmupTimes = @(90, 30); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @()); Arguments = " --algo ethb3+evr" }
- @{ Algorithms = @("EthashB3", "KawPow"); Type = "AMD"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 2; Tuning = ""; WarmupTimes = @(90, 45); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @("HashCryptos", "MiningDutch")); Arguments = " --algo ethb3+rvn" }
- @{ Algorithms = @("EthashB3", "MeowPow"); Type = "AMD"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 2; Tuning = ""; WarmupTimes = @(90, 45); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @()); Arguments = " --algo ethb3+meow" }
- @{ Algorithms = @("EthashB3", "VertHash"); Type = "AMD"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 1; Tuning = ""; WarmupTimes = @(120, 30); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @()); Arguments = " --algo ethb3+vtc --verthash-data ..\.$($Variables.VerthashDatPath)" } # 120 Seconds; https://github.com/sp-hash/TeamBlackMiner/issues/450
- @{ Algorithms = @("EvrProgPow"); Type = "AMD"; Fee = @(0.005); MinMemGiB = 1.24; MinerSet = 1; Tuning = ""; WarmupTimes = @(90, 15); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @()); Arguments = " --algo evrprogpow" }
- @{ Algorithms = @("FiroPow"); Type = "AMD"; Fee = @(0.005); MinMemGiB = 1.24; MinerSet = 1; Tuning = ""; WarmupTimes = @(90, 15); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @()); Arguments = " --algo firopow" }
- @{ Algorithms = @("KawPow"); Type = "AMD"; Fee = @(0.005); MinMemGiB = 1.24; MinerSet = 2; Tuning = ""; WarmupTimes = @(90, 15); ExcludeGPUarchitectures = @(); ExcludePools = @(@("HashCryptos", "MiningDutch"), @()); Arguments = " --algo kawpow" }
- @{ Algorithms = @("MeowPow"); Type = "AMD"; Fee = @(0.005); MinMemGiB = 1.24; MinerSet = 2; Tuning = ""; WarmupTimes = @(90, 15); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @()); Arguments = " --algo meowpow" }
- @{ Algorithms = @("VertHash"); Type = "AMD"; Fee = @(0.005); MinMemGiB = 3.0; MinerSet = 1; Tuning = ""; WarmupTimes = @(30, 0); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @()); Arguments = " --algo verthash --verthash-data ..\.$($Variables.VerthashDatPath)" }
+ @{ Algorithms = @("EtcHash"); Type = "AMD"; Fee = @(0.005); MinMemGiB = 1.24; MinerSet = 1; Tuning = ""; WarmupTimes = @(45, 15); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @()); Arguments = " --algo etchash" }
+ @{ Algorithms = @("EtcHash", "EthashB3"); Type = "AMD"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 2; Tuning = ""; WarmupTimes = @(120, 45); ExcludeGPUarchitectures = @("RDNA1", "RDNA2"); ExcludePools = @(@(), @()); Arguments = " --algo etc+ethb3" } # https://github.com/sp-hash/TeamBlackMiner/issues/450
+ @{ Algorithms = @("EtcHash", "EvrProgPow"); Type = "AMD"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 2; Tuning = ""; WarmupTimes = @(90, 45); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @()); Arguments = " --algo etc+evr" }
+ @{ Algorithms = @("EtcHash", "FiroPow"); Type = "AMD"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 2; Tuning = ""; WarmupTimes = @(90, 45); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @()); Arguments = " --algo etc+firo" }
+ @{ Algorithms = @("EtcHash", "KawPow"); Type = "AMD"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 2; Tuning = ""; WarmupTimes = @(90, 45); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @("HashCryptos", "MiningDutch")); Arguments = " --algo etc+rvn" }
+ @{ Algorithms = @("EtcHash", "MeowPow"); Type = "AMD"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 2; Tuning = ""; WarmupTimes = @(90, 45); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @()); Arguments = " --algo etc+meow" }
+ @{ Algorithms = @("EtcHash", "VertHash"); Type = "AMD"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 1; Tuning = ""; WarmupTimes = @(120, 60); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @()); Arguments = " --algo etc+vtc --verthash-data ..\.$($Variables.VerthashDatPath)" } # 120 Seconds; https://github.com/sp-hash/TeamBlackMiner/issues/450
+ @{ Algorithms = @("Ethash"); Type = "AMD"; Fee = @(0.005); MinMemGiB = 1.24; MinerSet = 1; Tuning = ""; WarmupTimes = @(45, 15); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @()); Arguments = " --algo ethash" } # https://github.com/sp-hash/TeamBlackMiner/issues/455
+ @{ Algorithms = @("Ethash", "EthashB3"); Type = "AMD"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 2; Tuning = ""; WarmupTimes = @(120, 15); ExcludeGPUarchitectures = @("RDNA1", "RDNA2"); ExcludePools = @(@(), @()); Arguments = " --algo eth+ethb3" } # https://github.com/sp-hash/TeamBlackMiner/issues/455
+ @{ Algorithms = @("Ethash", "EvrProgPow"); Type = "AMD"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 2; Tuning = ""; WarmupTimes = @(90, 15); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @()); Arguments = " --algo eth+evr" } # https://github.com/sp-hash/TeamBlackMiner/issues/455
+ @{ Algorithms = @("Ethash", "FiroPow"); Type = "AMD"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 2; Tuning = ""; WarmupTimes = @(90, 15); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @()); Arguments = " --algo eth+firo" } # https://github.com/sp-hash/TeamBlackMiner/issues/455
+ @{ Algorithms = @("Ethash", "KawPow"); Type = "AMD"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 2; Tuning = ""; WarmupTimes = @(90, 45); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @("HashCryptos", "MiningDutch")); Arguments = " --algo eth+rvn" } # https://github.com/sp-hash/TeamBlackMiner/issues/455
+ @{ Algorithms = @("Ethash", "MeowPow"); Type = "AMD"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 2; Tuning = ""; WarmupTimes = @(90, 45); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @()); Arguments = " --algo eth+meow" } # https://github.com/sp-hash/TeamBlackMiner/issues/455
+ @{ Algorithms = @("Ethash", "VertHash"); Type = "AMD"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 1; Tuning = ""; WarmupTimes = @(120, 60); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @()); Arguments = " --algo eth+vtc --verthash-data ..\.$($Variables.VerthashDatPath)" } # https://github.com/sp-hash/TeamBlackMiner/issues/455 & 120 Secs; https://github.com/sp-hash/TeamBlackMiner/issues/450
+ @{ Algorithms = @("EthashB3"); Type = "AMD"; Fee = @(0.005); MinMemGiB = 1.24; MinerSet = 1; Tuning = ""; WarmupTimes = @(45, 15); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @()); Arguments = " --algo ethashb3" }
+ @{ Algorithms = @("EthashB3", "FiroPow"); Type = "AMD"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 1; Tuning = ""; WarmupTimes = @(90, 30); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @()); Arguments = " --algo ethb3+firo" }
+ @{ Algorithms = @("EthashB3", "EvrProgPow"); Type = "AMD"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 1; Tuning = ""; WarmupTimes = @(90, 30); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @()); Arguments = " --algo ethb3+evr" }
+ @{ Algorithms = @("EthashB3", "KawPow"); Type = "AMD"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 2; Tuning = ""; WarmupTimes = @(90, 45); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @("HashCryptos", "MiningDutch")); Arguments = " --algo ethb3+rvn" }
+ @{ Algorithms = @("EthashB3", "MeowPow"); Type = "AMD"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 2; Tuning = ""; WarmupTimes = @(90, 45); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @()); Arguments = " --algo ethb3+meow" }
+ @{ Algorithms = @("EthashB3", "VertHash"); Type = "AMD"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 1; Tuning = ""; WarmupTimes = @(120, 30); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @()); Arguments = " --algo ethb3+vtc --verthash-data ..\.$($Variables.VerthashDatPath)" } # 120 Seconds; https://github.com/sp-hash/TeamBlackMiner/issues/450
+ @{ Algorithms = @("EvrProgPow"); Type = "AMD"; Fee = @(0.005); MinMemGiB = 1.24; MinerSet = 1; Tuning = ""; WarmupTimes = @(90, 15); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @()); Arguments = " --algo evrprogpow" }
+ @{ Algorithms = @("FiroPow"); Type = "AMD"; Fee = @(0.005); MinMemGiB = 1.24; MinerSet = 1; Tuning = ""; WarmupTimes = @(90, 15); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @()); Arguments = " --algo firopow" }
+ @{ Algorithms = @("KawPow"); Type = "AMD"; Fee = @(0.005); MinMemGiB = 1.24; MinerSet = 2; Tuning = ""; WarmupTimes = @(90, 15); ExcludeGPUarchitectures = @(); ExcludePools = @(@("HashCryptos", "MiningDutch"), @()); Arguments = " --algo kawpow" }
+ @{ Algorithms = @("MeowPow"); Type = "AMD"; Fee = @(0.005); MinMemGiB = 1.24; MinerSet = 2; Tuning = ""; WarmupTimes = @(90, 15); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @()); Arguments = " --algo meowpow" }
+ @{ Algorithms = @("VertHash"); Type = "AMD"; Fee = @(0.005); MinMemGiB = 3.0; MinerSet = 1; Tuning = ""; WarmupTimes = @(30, 0); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @()); Arguments = " --algo verthash --verthash-data ..\.$($Variables.VerthashDatPath)" }
@{ Algorithms = @("EtcHash"); Type = "NVIDIA"; Fee = @(0.005); MinMemGiB = 1.24; MinerSet = 2; Tuning = " --tweak 2"; WarmupTimes = @(45, 15); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @()); Arguments = " --algo etchash" }
@{ Algorithms = @("EtcHash", "EthashB3"); Type = "NVIDIA"; Fee = @(0.005, 0.005); MinMemGiB = 1.51; MinerSet = 1; Tuning = " --tweak 2"; WarmupTimes = @(90, 15); ExcludeGPUarchitectures = @(); ExcludePools = @(@(), @()); Arguments = " --algo etc+ethb3" }
diff --git a/Miners/TeamRedMiner-v0.10.21.ps1 b/Miners/TeamRedMiner-v0.10.21.ps1
index 3c101b23..e28a943f 100644
--- a/Miners/TeamRedMiner-v0.10.21.ps1
+++ b/Miners/TeamRedMiner-v0.10.21.ps1
@@ -17,8 +17,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
-Version: 6.3.1
-Version date: 2024/09/06
+Version: 6.3.2
+Version date: 2024/09/09
#>
If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.Type -eq "AMD" -and $_.OpenCL.ClVersion -ge "OpenCL C 2.0" }))) { Return }
diff --git a/Miners/TeleMerakiMiner-v1.5.0.ps1 b/Miners/TeleMerakiMiner-v1.5.0.ps1
new file mode 100644
index 00000000..c0557532
--- /dev/null
+++ b/Miners/TeleMerakiMiner-v1.5.0.ps1
@@ -0,0 +1,90 @@
+<#
+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.3.2
+Version date: 2024/09/09
+#>
+
+If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.OpenCL.ComputeCapability -ge "5.0" }))) { Return }
+
+$URI = "https://github.com/Telestai-Project/tele-meraki-miner/releases/download/1.5.0/WindowsRelease.zip"
+$Name = [String](Get-Item $MyInvocation.MyCommand.Path).BaseName
+$Path = "Bin\$Name\telemerakiminer.exe"
+$DeviceEnumerator = "Type_Vendor_Index"
+
+$Algorithms = @(
+ @{ Algorithm = "ProgPowTelestai"; MinMemGiB = 0.77; MinerSet = 1; WarmupTimes = @(75, 10); ExcludeGPUarchitectures = @("Pascal"); ExcludePools = @(); Arguments = "" }
+)
+
+$Algorithms = $Algorithms.Where({ $_.MinerSet -le $Config.MinerSet })
+$Algorithms = $Algorithms.Where({ $MinerPools[0][$_.Algorithm] })
+
+If ($Algorithms) {
+
+ ($Devices | Select-Object Model -Unique).ForEach(
+ {
+ $Model = $_.Model
+ $MinerDevices = $Devices.Where({ $_.Model -eq $Model })
+ $MinerAPIPort = $Config.APIPort + ($MinerDevices.Id | Sort-Object -Top 1) + 1
+
+ $Algorithms.ForEach(
+ {
+ $ExcludeGPUarchitectures = $_.ExcludeGPUarchitectures
+ If ($SupportedMinerDevices = $MinerDevices.Where({ $ExcludeGPUarchitectures -notcontains $_.Architecture })) {
+
+ # $ExcludePools = $_.ExcludePools
+ # ForEach ($Pool in $MinerPools[0][$_.Algorithm].Where({ $ExcludePools -notcontains $_.Name })) {
+ ForEach ($Pool in $MinerPools[0][$_.Algorithm]) {
+
+ $MinMemGiB = $_.MinMemGiB + $Pool.DAGSizeGiB
+ If ($AvailableMinerDevices = $SupportedMinerDevices.Where({ $_.MemoryGiB -ge $MinMemGiB })) {
+
+ $MinerName = "$Name-$($AvailableMinerDevices.Count)x$Model-$($Pool.AlgorithmVariant)"
+
+ $Protocol = Switch ($Pool.Protocol) {
+ "ethproxy" { "stratum1"; Break }
+ "ethstratum1" { "stratum2"; Break }
+ "ethstratum2" { "stratum2"; Break }
+ Default { "stratum" }
+ }
+ $Protocol += If ($Pool.PoolPorts[1]) { "+tls" } Else { "+tcp" }
+
+ [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-port -$($MinerAPIPort) --cuda --cuda-devices $(($AvailableMinerDevices.$DeviceEnumerator | Sort-Object -Unique).ForEach({ '{0:x}' -f $_ }) -join ',')"
+ DeviceNames = $AvailableMinerDevices.Name
+ EnvVars = @("SSL_NOVERIFY=TRUE")
+ Fee = @(0) # Dev fee
+ MinerSet = $_.MinerSet
+ Name = $MinerName
+ Path = $Path
+ Port = $MinerAPIPort
+ Type = "NVIDIA"
+ 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 })
+ }
+ }
+ }
+ }
+ }
+ )
+ }
+ )
+}
\ No newline at end of file
diff --git a/Miners/Trex-v0.26.8.ps1 b/Miners/Trex-v0.26.8.ps1
index e0e7c41e..4e428e5e 100644
--- a/Miners/Trex-v0.26.8.ps1
+++ b/Miners/Trex-v0.26.8.ps1
@@ -17,8 +17,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
-Version: 6.3.1
-Version date: 2024/09/06
+Version: 6.3.2
+Version date: 2024/09/09
#>
If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.OpenCL.ComputeCapability -ge "5.0" }))) { Return }
diff --git a/Miners/Wildrig-v0.40.8.ps1 b/Miners/Wildrig-v0.40.8.ps1
index 0107fe0c..18182177 100644
--- a/Miners/Wildrig-v0.40.8.ps1
+++ b/Miners/Wildrig-v0.40.8.ps1
@@ -17,8 +17,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
-Version: 6.3.1
-Version date: 2024/09/06
+Version: 6.3.2
+Version date: 2024/09/09
#>
If (-not ($Devices = $Variables.EnabledDevices.Where({ ($_.Type -eq "AMD" -and $_.OpenCL.ClVersion -ge "OpenCL C 1.2" -and $_.Architecture -notmatch "^GCN1$") -or $_.Type -eq "INTEL" -or ($_.OpenCL.ComputeCapability -ge "5.0" -and $_.OpenCL.DriverVersion -ge [Version]"452.39.00") }))) { Return }
@@ -187,85 +187,85 @@ $Algorithms = @(
@{ Algorithm = "X33"; Type = "INTEL"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo x33 --watchdog" }
@{ Algorithm = "Xevan"; Type = "INTEL"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo xevan --watchdog" }
- @{ Algorithm = "Aergo"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(60, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo aergo --watchdog" }
- @{ Algorithm = "Anime"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 0; WarmupTimes = @(60, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo anime --watchdog" }
- @{ Algorithm = "AstralHash"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo glt-astralhash --watchdog" }
- @{ Algorithm = "BCD"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 3; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo bcd --watchdog" } # ASIC
- @{ Algorithm = "Blake2bBtcc"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo blake2b-btcc --watchdog" }
- @{ Algorithm = "Blake2bGlt"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo blake2b-glt --watchdog" }
-# @{ Algorithm = "Blake2s"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo blake2s --watchdog" } # ASIC
- @{ Algorithm = "Blake3"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 3; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @("NiceHash"); Arguments = " --algo blake3 --watchdog" }
-# @{ Algorithm = "Bmw512"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 0; WarmupTimes = @(60, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo bmw512 --watchdog" } # ASIC
- @{ Algorithm = "C11"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 1; WarmupTimes = @(60, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo c11 --watchdog" }
- @{ Algorithm = "CurveHash"; Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 2; MinerSet = 0; WarmupTimes = @(60, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo curvehash --watchdog" }
- @{ Algorithm = "Dedal"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo dedal --watchdog" } # CryptoDredge-v0.27.0 is fastest
- @{ Algorithm = "EvrProgPow"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 0.62; MinerSet = 1; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo evrprogpow --watchdog" }
- @{ Algorithm = "FiroPow"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 1.24; MinerSet = 1; WarmupTimes = @(15, 30); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo firopow --watchdog" }
- @{ Algorithm = "Ghostrider"; Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 2; MinerSet = 0; WarmupTimes = @(180, 60); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo ghostrider --watchdog" }
- @{ Algorithm = "GlobalHash"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo glt-globalhash --watchdog" }
- @{ Algorithm = "HashX7"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo x7 --watchdog" }
- @{ Algorithm = "HeavyHash"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 0; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo heavyhash --watchdog" } # FPGA
- @{ Algorithm = "Hex"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo hex --watchdog" }
- @{ Algorithm = "HMQ1725"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 1; WarmupTimes = @(60, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo hmq1725 --watchdog" } # CryptoDredge-v0.27.0 is fastest
- @{ Algorithm = "JeongHash"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo glt-jeonghash --watchdog" } # Trex-v0.26.8 is fastest
- @{ Algorithm = "KawPow"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 1.24; MinerSet = 1; WarmupTimes = @(45, 0); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo kawpow --watchdog" } # NBMiner-v42.3 is fastest
-# @{ Algorithm = "Lyra2RE2"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo lyra2v2 --watchdog" } # ASIC
-# @{ Algorithm = "Lyra2RE3"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo lyra2v3 --watchdog" } # ASIC
- @{ Algorithm = "Lyra2TDC"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo lyra2tdc --watchdog" }
- @{ Algorithm = "Lyra2vc0ban"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo lyra2vc0ban --watchdog" }
- @{ Algorithm = "MegaBtx"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(90, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo megabtx --watchdog" }
- @{ Algorithm = "MemeHash"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(45, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo memehash --watchdog" }
- @{ Algorithm = "MeowPow"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo meowpow --watchdog" }
- @{ Algorithm = "Mike"; Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(60, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo mike --watchdog" }
- @{ Algorithm = "NexaPow"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 3; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @("NiceHash"); Arguments = " --algo nexapow --watchdog" } # https://github.com/andru-kun/wildrig-multi/issues/277
-# @{ Algorithm = "Nist5"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 3; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo nist5 --watchdog" } # ASIC
- @{ Algorithm = "PadiHash"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo glt-padihash --watchdog" }
- @{ Algorithm = "PawelHash"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(45, 0); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo glt-pawelhash --watchdog" } # Trex-v0.26.8 is fastest
-# @{ Algorithm = "Phi"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo phi --watchdog" } # ASIC
-# @{ Algorithm = "Phi5"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo phi5 --watchdog" } # Algorithm is dead
- @{ Algorithm = "ProgPowEthercore"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 0.62; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo progpow-ethercore --watchdog" }
- @{ Algorithm = "ProgPowQuai"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 0.62; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo progpow-quai --watchdog" }
- @{ Algorithm = "ProgPowSero"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 0.62; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo progpow-sero --watchdog" }
- @{ Algorithm = "ProgPowTelestai"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 0.62; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo progpow-telestai --watchdog" }
- @{ Algorithm = "ProgPowVeil"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 0.62; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo progpow-veil --watchdog" }
- @{ Algorithm = "ProgPowVeriblock"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo vprogpow --watchdog" }
- @{ Algorithm = "ProgPowZ"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 0.62; MinerSet = 1; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo progpowz --watchdog" }
-# @{ Algorithm = "Pufferfish2BMB"; Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 8; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo pufferfish2 --watchdog" } # waiting for coin to resurrect
- @{ Algorithm = "RWAHash"; Type = "NVIDIA"; Fee = @(0.02); MinMemGiB = 2; MinerSet = 0; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo rwahash --watchdog" }
-# @{ Algorithm = "Quark"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 0; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo quark --watchdog" } # ASIC
-# @{ Algorithm = "Quibit"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 0; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo qui --watchdog" } # ASIC
-# @{ Algorithm = "SHA256"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 0; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo sha256 --watchdog" } # ASIC
-# @{ Algorithm = "SHA256d"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 0; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo sha256d --watchdog" } # ASIC
- @{ Algorithm = "SHAndwich256"; Type = "NVIDIA"; Fee = @(0.02); MinMemGiB = 2; MinerSet = 0; WarmupTimes = @(45, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo skydoge --watchdog" } # Trex-v0.26.8 is fastest
- @{ Algorithm = "SHA256csm"; Type = "NVIDIA"; Fee = @(0.02); MinMemGiB = 2; MinerSet = 0; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo sha256csm --watchdog" }
- @{ Algorithm = "SHA256t"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(60, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo sha256t --watchdog" }
- @{ Algorithm = "SHA256q"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo sha256q --watchdog" }
- @{ Algorithm = "SHA512256d"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 0; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo sha512256d --watchdog" }
- @{ Algorithm = "Skein2"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 0; WarmupTimes = @(90, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo skein2 --watchdog" } # CcminerAlexis78-v1.5.2 is fastest
- @{ Algorithm = "SkunkHash"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(90, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo skunkhash --watchdog" } # Algorithm is dead
- @{ Algorithm = "Timetravel"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo timetravel --watchdog" }
- @{ Algorithm = "Timetravel10"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo timetravel10 --watchdog" }
-# @{ Algorithm = "Tribus"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 0; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo tribus --watchdog" } # ASIC
-# @{ Algorithm = "X11"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo x11 --watchdog" } # ASIC
-# @{ Algorithm = "X11ghost"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo x11ghost --watchdog" } # ASIC
- @{ Algorithm = "X11k"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo x11k --watchdog" }
-# @{ Algorithm = "X12"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo x12 --watchdog" } # ASIC
-# @{ Algorithm = "X13"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo x13 --watchdog" } # ASIC
-# @{ Algorithm = "X14"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo x14 --watchdog" } # ASIC
-# @{ Algorithm = "X15"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo x15 --watchdog" } # ASIC
-# @{ Algorithm = "X16r"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 3; WarmupTimes = @(45, 60); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo x16r --watchdog" } # ASIC
- @{ Algorithm = "X16rt"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 0; WarmupTimes = @(45, 0); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo x16rt --watchdog" } # FPGA
- @{ Algorithm = "X16rv2"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 3; MinerSet = 0; WarmupTimes = @(45, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo x16rv2 --watchdog" }
- @{ Algorithm = "X16s"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo x16s --watchdog" } # FPGA
- @{ Algorithm = "X17"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo x17 --watchdog" }
- @{ Algorithm = "X18"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo x18 --watchdog" } # ASIC
- @{ Algorithm = "X20r"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo x20r --watchdog" } # ASIC
- @{ Algorithm = "X21s"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 0; WarmupTimes = @(120, 45); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo x21s --watchdog" } # Trex-v0.26.8 is fastest
- @{ Algorithm = "X22"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo x22 --watchdog" }
- @{ Algorithm = "X22i"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo x22i --watchdog" } # Not yet supported on Nvidia
- @{ Algorithm = "X25x"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo x25x --watchdog" } # Not yet supported on Nvidia
- @{ Algorithm = "X33"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo x33 --watchdog" }
- @{ Algorithm = "Xevan"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(60, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo xevan --watchdog" }
+ @{ Algorithm = "Aergo"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(60, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo aergo --watchdog" }
+ @{ Algorithm = "Anime"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 0; WarmupTimes = @(60, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo anime --watchdog" }
+ @{ Algorithm = "AstralHash"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo glt-astralhash --watchdog" }
+ @{ Algorithm = "BCD"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 3; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo bcd --watchdog" } # ASIC
+ @{ Algorithm = "Blake2bBtcc"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo blake2b-btcc --watchdog" }
+ @{ Algorithm = "Blake2bGlt"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo blake2b-glt --watchdog" }
+# @{ Algorithm = "Blake2s"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo blake2s --watchdog" } # ASIC
+ @{ Algorithm = "Blake3"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 3; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @("NiceHash"); Arguments = " --algo blake3 --watchdog" }
+# @{ Algorithm = "Bmw512"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 0; WarmupTimes = @(60, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo bmw512 --watchdog" } # ASIC
+ @{ Algorithm = "C11"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 1; WarmupTimes = @(60, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo c11 --watchdog" }
+ @{ Algorithm = "CurveHash"; Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 2; MinerSet = 0; WarmupTimes = @(60, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo curvehash --watchdog" }
+ @{ Algorithm = "Dedal"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo dedal --watchdog" } # CryptoDredge-v0.27.0 is fastest
+ @{ Algorithm = "EvrProgPow"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 0.62; MinerSet = 1; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo evrprogpow --watchdog" }
+ @{ Algorithm = "FiroPow"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 1.24; MinerSet = 1; WarmupTimes = @(15, 30); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo firopow --watchdog" }
+ @{ Algorithm = "Ghostrider"; Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 2; MinerSet = 0; WarmupTimes = @(180, 60); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo ghostrider --watchdog" }
+ @{ Algorithm = "GlobalHash"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo glt-globalhash --watchdog" }
+ @{ Algorithm = "HashX7"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo x7 --watchdog" }
+ @{ Algorithm = "HeavyHash"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 0; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo heavyhash --watchdog" } # FPGA
+ @{ Algorithm = "Hex"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo hex --watchdog" }
+ @{ Algorithm = "HMQ1725"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 1; WarmupTimes = @(60, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo hmq1725 --watchdog" } # CryptoDredge-v0.27.0 is fastest
+ @{ Algorithm = "JeongHash"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo glt-jeonghash --watchdog" } # Trex-v0.26.8 is fastest
+ @{ Algorithm = "KawPow"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 1.24; MinerSet = 1; WarmupTimes = @(45, 0); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo kawpow --watchdog" } # NBMiner-v42.3 is fastest
+# @{ Algorithm = "Lyra2RE2"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo lyra2v2 --watchdog" } # ASIC
+# @{ Algorithm = "Lyra2RE3"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo lyra2v3 --watchdog" } # ASIC
+ @{ Algorithm = "Lyra2TDC"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo lyra2tdc --watchdog" }
+ @{ Algorithm = "Lyra2vc0ban"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo lyra2vc0ban --watchdog" }
+ @{ Algorithm = "MegaBtx"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(90, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo megabtx --watchdog" }
+ @{ Algorithm = "MemeHash"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(45, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo memehash --watchdog" }
+ @{ Algorithm = "MeowPow"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 1.24; MinerSet = 0; WarmupTimes = @(45, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo meowpow --watchdog" }
+ @{ Algorithm = "Mike"; Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 1; MinerSet = 0; WarmupTimes = @(60, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo mike --watchdog" }
+ @{ Algorithm = "NexaPow"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 3; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @("NiceHash"); Arguments = " --algo nexapow --watchdog" } # https://github.com/andru-kun/wildrig-multi/issues/277
+# @{ Algorithm = "Nist5"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 3; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo nist5 --watchdog" } # ASIC
+ @{ Algorithm = "PadiHash"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo glt-padihash --watchdog" }
+ @{ Algorithm = "PawelHash"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(45, 0); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo glt-pawelhash --watchdog" } # Trex-v0.26.8 is fastest
+# @{ Algorithm = "Phi"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo phi --watchdog" } # ASIC
+# @{ Algorithm = "Phi5"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo phi5 --watchdog" } # Algorithm is dead
+ @{ Algorithm = "ProgPowEthercore"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 0.62; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo progpow-ethercore --watchdog" }
+ @{ Algorithm = "ProgPowQuai"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 0.62; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo progpow-quai --watchdog" }
+ @{ Algorithm = "ProgPowSero"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 0.62; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo progpow-sero --watchdog" }
+ @{ Algorithm = "ProgPowTelestai"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 0.62; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = "^Pascal$"; ExcludePools = @(); Arguments = " --algo progpow-telestai --watchdog" }
+ @{ Algorithm = "ProgPowVeil"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 0.62; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo progpow-veil --watchdog" }
+ @{ Algorithm = "ProgPowVeriblock"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo vprogpow --watchdog" }
+ @{ Algorithm = "ProgPowZ"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 0.62; MinerSet = 1; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo progpowz --watchdog" }
+# @{ Algorithm = "Pufferfish2BMB"; Type = "NVIDIA"; Fee = @(0.01); MinMemGiB = 8; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo pufferfish2 --watchdog" } # waiting for coin to resurrect
+ @{ Algorithm = "RWAHash"; Type = "NVIDIA"; Fee = @(0.02); MinMemGiB = 2; MinerSet = 0; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo rwahash --watchdog" }
+# @{ Algorithm = "Quark"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 0; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo quark --watchdog" } # ASIC
+# @{ Algorithm = "Quibit"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 0; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo qui --watchdog" } # ASIC
+# @{ Algorithm = "SHA256"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 0; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo sha256 --watchdog" } # ASIC
+# @{ Algorithm = "SHA256d"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 0; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo sha256d --watchdog" } # ASIC
+ @{ Algorithm = "SHAndwich256"; Type = "NVIDIA"; Fee = @(0.02); MinMemGiB = 2; MinerSet = 0; WarmupTimes = @(45, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo skydoge --watchdog" } # Trex-v0.26.8 is fastest
+ @{ Algorithm = "SHA256csm"; Type = "NVIDIA"; Fee = @(0.02); MinMemGiB = 2; MinerSet = 0; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo sha256csm --watchdog" }
+ @{ Algorithm = "SHA256t"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(60, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo sha256t --watchdog" }
+ @{ Algorithm = "SHA256q"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo sha256q --watchdog" }
+ @{ Algorithm = "SHA512256d"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 0; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo sha512256d --watchdog" }
+ @{ Algorithm = "Skein2"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 0; WarmupTimes = @(90, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo skein2 --watchdog" } # CcminerAlexis78-v1.5.2 is fastest
+ @{ Algorithm = "SkunkHash"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(90, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo skunkhash --watchdog" } # Algorithm is dead
+ @{ Algorithm = "Timetravel"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo timetravel --watchdog" }
+ @{ Algorithm = "Timetravel10"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo timetravel10 --watchdog" }
+# @{ Algorithm = "Tribus"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 0; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo tribus --watchdog" } # ASIC
+# @{ Algorithm = "X11"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo x11 --watchdog" } # ASIC
+# @{ Algorithm = "X11ghost"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo x11ghost --watchdog" } # ASIC
+ @{ Algorithm = "X11k"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo x11k --watchdog" }
+# @{ Algorithm = "X12"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo x12 --watchdog" } # ASIC
+# @{ Algorithm = "X13"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo x13 --watchdog" } # ASIC
+# @{ Algorithm = "X14"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo x14 --watchdog" } # ASIC
+# @{ Algorithm = "X15"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo x15 --watchdog" } # ASIC
+# @{ Algorithm = "X16r"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 3; WarmupTimes = @(45, 60); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo x16r --watchdog" } # ASIC
+ @{ Algorithm = "X16rt"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 0; WarmupTimes = @(45, 0); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo x16rt --watchdog" } # FPGA
+ @{ Algorithm = "X16rv2"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 3; MinerSet = 0; WarmupTimes = @(45, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo x16rv2 --watchdog" }
+ @{ Algorithm = "X16s"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo x16s --watchdog" } # FPGA
+ @{ Algorithm = "X17"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo x17 --watchdog" }
+ @{ Algorithm = "X18"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo x18 --watchdog" } # ASIC
+ @{ Algorithm = "X20r"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo x20r --watchdog" } # ASIC
+ @{ Algorithm = "X21s"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 0; WarmupTimes = @(120, 45); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo x21s --watchdog" } # Trex-v0.26.8 is fastest
+ @{ Algorithm = "X22"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo x22 --watchdog" }
+ @{ Algorithm = "X22i"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo x22i --watchdog" } # Not yet supported on Nvidia
+ @{ Algorithm = "X25x"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo x25x --watchdog" } # Not yet supported on Nvidia
+ @{ Algorithm = "X33"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(30, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo x33 --watchdog" }
+ @{ Algorithm = "Xevan"; Type = "NVIDIA"; Fee = @(0.0075); MinMemGiB = 2; MinerSet = 2; WarmupTimes = @(60, 15); ExcludeGPUarchitectures = " "; ExcludePools = @(); Arguments = " --algo xevan --watchdog" }
)
$Algorithms = $Algorithms.Where({ $_.MinerSet -le $Config.MinerSet })
diff --git a/Miners/XLArig-v5.2.4.ps1 b/Miners/XLArig-v5.2.4.ps1
index 07004dc5..002a00b7 100644
--- a/Miners/XLArig-v5.2.4.ps1
+++ b/Miners/XLArig-v5.2.4.ps1
@@ -17,8 +17,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
-Version: 6.3.1
-Version date: 2024/09/06
+Version: 6.3.2
+Version date: 2024/09/09
#>
# https://github.com/scala-network/XLArig/issues/59; Need to remove temp fix in \Includes\MinerAPIs\XMrig.psm1 when resolved
diff --git a/Miners/XmRig-v6.22.0.3.ps1 b/Miners/XmRig-v6.22.0.3.ps1
index af148f9b..af48839c 100644
--- a/Miners/XmRig-v6.22.0.3.ps1
+++ b/Miners/XmRig-v6.22.0.3.ps1
@@ -17,8 +17,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
-Version: 6.3.1
-Version date: 2024/09/06
+Version: 6.3.2
+Version date: 2024/09/09
#>
If (-not ($Devices = $Variables.EnabledDevices.Where({ "AMD", "CPU", "INTEL" -contains $_.Type -or $_.OpenCL.ComputeCapability -gt "5.0" }))) { Return }
diff --git a/Miners/XmrStak-v2.10.8.ps1 b/Miners/XmrStak-v2.10.8.ps1
index 76840dc0..6f09ef92 100644
--- a/Miners/XmrStak-v2.10.8.ps1
+++ b/Miners/XmrStak-v2.10.8.ps1
@@ -17,8 +17,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
-Version: 6.3.1
-Version date: 2024/09/06
+Version: 6.3.2
+Version date: 2024/09/09
#>
If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.Type -ne "NVIDIA" -or $_.OpenCL.ComputeCapability -ge "5.0" }))) { Return }
diff --git a/Miners/ZealotEnemy-v2.6.3.ps1 b/Miners/ZealotEnemy-v2.6.3.ps1
index ec5b96d1..ce792adc 100644
--- a/Miners/ZealotEnemy-v2.6.3.ps1
+++ b/Miners/ZealotEnemy-v2.6.3.ps1
@@ -17,8 +17,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
-Version: 6.3.1
-Version date: 2024/09/06
+Version: 6.3.2
+Version date: 2024/09/09
#>
If (-not ($Devices = $Variables.EnabledDevices.Where({ $_.OpenCL.ComputeCapability -ge "5.0" }))) { Return }
diff --git a/Miners/lolMiner-v1.88.ps1 b/Miners/lolMiner-v1.88.ps1
index eafcfb15..5bc88ea0 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.3.1
-Version date: 2024/09/06
+Version: 6.3.2
+Version date: 2024/09/09
#>
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 }
diff --git a/Pools/HashCryptos.ps1 b/Pools/HashCryptos.ps1
index d96cdb5b..2f499567 100644
--- a/Pools/HashCryptos.ps1
+++ b/Pools/HashCryptos.ps1
@@ -19,8 +19,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
File: \Pools\HashCryptos.ps1
-Version: 6.3.1
-Version date: 2024/09/06
+Version: 6.3.2
+Version date: 2024/09/09
#>
Param(
diff --git a/Pools/HiveON.ps1 b/Pools/HiveON.ps1
index 0e89aaf9..3395a2e2 100644
--- a/Pools/HiveON.ps1
+++ b/Pools/HiveON.ps1
@@ -19,8 +19,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
File: \Pools\Hiveon.ps1
-Version: 6.3.1
-Version date: 2024/09/06
+Version: 6.3.2
+Version date: 2024/09/09
#>
Param(
diff --git a/Pools/MiningDutch.ps1 b/Pools/MiningDutch.ps1
index 5ce04f3c..16e5001e 100644
--- a/Pools/MiningDutch.ps1
+++ b/Pools/MiningDutch.ps1
@@ -19,8 +19,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
File: \Pools\MiningDutch.ps1
-Version: 6.3.1
-Version date: 2024/09/06
+Version: 6.3.2
+Version date: 2024/09/09
#>
Param(
diff --git a/Pools/NiceHash.ps1 b/Pools/NiceHash.ps1
index acf14c4b..677318b6 100644
--- a/Pools/NiceHash.ps1
+++ b/Pools/NiceHash.ps1
@@ -19,8 +19,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
File: \Pools\NiceHash.ps1
-Version: 6.3.1
-Version date: 2024/09/06
+Version: 6.3.2
+Version date: 2024/09/09
#>
Param(
diff --git a/Pools/ProHashing.ps1 b/Pools/ProHashing.ps1
index e96eecb8..e2ad6e09 100644
--- a/Pools/ProHashing.ps1
+++ b/Pools/ProHashing.ps1
@@ -19,8 +19,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
File: \Pools\ProHashing.ps1
-Version: 6.3.1
-Version date: 2024/09/06
+Version: 6.3.2
+Version date: 2024/09/09
#>
Param(
diff --git a/Pools/ZPool.ps1 b/Pools/ZPool.ps1
index 6e2f84a0..ea75d6cb 100644
--- a/Pools/ZPool.ps1
+++ b/Pools/ZPool.ps1
@@ -19,8 +19,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
File: \Pools\ZPool.ps1
-Version: 6.3.1
-Version date: 2024/09/06
+Version: 6.3.2
+Version date: 2024/09/09
#>
Param(
diff --git a/Pools/ZergPool.ps1 b/Pools/ZergPool.ps1
index 5b50715b..0e96dc83 100644
--- a/Pools/ZergPool.ps1
+++ b/Pools/ZergPool.ps1
@@ -19,8 +19,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
File: \Pools\ZergPool.ps1
-Version: 6.3.1
-Version date: 2024/09/06
+Version: 6.3.2
+Version date: 2024/09/09
#>
Param(
diff --git a/README.md b/README.md
index 5066f7bb..68c1e788 100644
--- a/README.md
+++ b/README.md
@@ -297,7 +297,7 @@ Recommended/optimal Windows AMD driver
UG-Miner is currently tested on the following rigs:
-- Windows11-1xGTX1030-2GB/1xRTX-3060-12GB/1xGTX750Ti-2GB/1xRX580-8GB/1xRX5700-8GB/Inteli5-8600K
+- Windows11-1xGTX1030-2GB/1xRTX-3060-12GB/1xGTX750Ti-2GB/1xRX5700-8GB/1xRX6600-8GB/Inteli5-8600K
- Windows11-1xMX250/Inteli10-10210u
## Developer donation
diff --git a/UG-Miner.ps1 b/UG-Miner.ps1
index b29e9c27..510b0457 100644
--- a/UG-Miner.ps1
+++ b/UG-Miner.ps1
@@ -18,8 +18,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
File: UG-Miner.ps1
-Version: 6.3.1
-Version date: 2024/09/06
+Version: 6.3.2
+Version date: 2024/09/09
#>
using module .\Includes\Include.psm1
@@ -299,14 +299,14 @@ $Variables.Branding = [PSCustomObject]@{
BrandName = "UG-Miner"
BrandWebSite = "https://github.com/UselessGuru/UG-Miner"
ProductLabel = "UG-Miner"
- Version = [System.Version]"6.3.1"
+ Version = [System.Version]"6.3.2"
}
$WscriptShell = New-Object -ComObject Wscript.Shell
$host.UI.RawUI.WindowTitle = "$($Variables.Branding.ProductLabel) $($Variables.Branding.Version)"
If ($PSVersiontable.PSVersion -lt [System.Version]"7.0.0") {
- Write-Host "`nUnsupported PWSH version $($PSVersiontable.PSVersion.ToString()) detected.`n$($Variables.Branding.BrandName) requires at least PWSH version 7.0.0 (Recommended is 7.4.3) which can be downloaded from https://github.com/PowerShell/powershell/releases.`n`n" -ForegroundColor Red
+ Write-Host "Unsupported PWSH version $($PSVersiontable.PSVersion.ToString()) detected.`n$($Variables.Branding.BrandName) requires at least PWSH version 7.0.0 (Recommended is 7.4.3) which can be downloaded from https://github.com/PowerShell/powershell/releases.`n`n" -ForegroundColor Red
$WscriptShell.Popup("Unsupported PWSH version $($PSVersiontable.PSVersion.ToString()) detected.`n`n$($Variables.Branding.BrandName) requires at least PWSH version (Recommended is 7.4.3) which can be downloaded from https://github.com/PowerShell/powershell/releases.", 0, "Terminating error - Cannot continue!", 4112) | Out-Null
Exit
}
@@ -316,26 +316,6 @@ $Variables.MainPath = (Split-Path $MyInvocation.MyCommand.Path)
$Variables.ConfigFile = $ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($ConfigFile)
$Variables.PoolsConfigFile = $ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($PoolsConfigFile)
-If (((Get-CimInstance CIM_Process).Where({ $_.CommandLine -like "PWSH* -Command $($Variables.MainPath)*.ps1 *" }).CommandLine).Count -gt 1) {
- # Another instance is already running. Try again in 20 seconds (previous instance might be from autoupdate)
- Write-Host "Verifying that no other instance of $($Variables.Branding.ProductLabel) is running..."
- Start-Sleep 20
- If (((Get-CimInstance CIM_Process).Where({ $_.CommandLine -like "PWSH* -Command $($Variables.MainPath)*.ps1 *" }).CommandLine).Count -gt 1) {
- Write-Host "Terminating Error - Another instance of $($Variables.Branding.ProductLabel) is already running." -ForegroundColor "Red"
- $WscriptShell.Popup("Another instance of $($Variables.Branding.ProductLabel) is already running.", 0, "Terminating error - Cannot continue!", 4112) | Out-Null
- Exit
- }
-}
-
-# Internet connection must be available
-$NetworkInterface = (Get-NetConnectionProfile).Where({ $_.IPv4Connectivity -eq "Internet" }).InterfaceIndex
-$Variables.MyIP = If ($NetworkInterface) { (Get-NetIPAddress -InterfaceIndex $NetworkInterface -AddressFamily IPV4).IPAddress } Else { $null }
-If (-not $Variables.MyIP) {
- Write-Host "Terminating Error - No internet connection." -ForegroundColor "Red"
- $WscriptShell.Popup("No internet connection", 0, "Terminating error - Cannot continue!", 4112) | Out-Null
- Exit
-}
-
# Create directories
If (-not (Test-Path -LiteralPath ".\Cache" -PathType Container)) { New-Item -Path . -Name "Cache" -ItemType Directory | Out-Null }
If (-not (Test-Path -LiteralPath ".\Config" -PathType Container)) { New-Item -Path . -Name "Config" -ItemType Directory | Out-Null }
@@ -351,17 +331,35 @@ $Variables.AllCommandLineParameters = [Ordered]@{ }
}
)
-Write-Host "$($Variables.Branding.ProductLabel) is getting ready. Please wait..."
-
-Write-Host "`nPreparing environment and loading data files..."
+Write-Host "Preparing environment and loading data files..." -ForegroundColor Yellow
Initialize-Environment
# Read configuration
[Void](Read-Config -ConfigFile $Variables.ConfigFile)
-Write-Message -Level Info "Starting $($Variables.Branding.ProductLabel)® v$($Variables.Branding.Version) © 2017-$([DateTime]::Now.Year) UselessGuru"
+Write-Message -Level Info "Starting $($Variables.Branding.ProductLabel)® v$($Variables.Branding.Version) © 2017-$([DateTime]::Now.Year) UselessGuru..."
Write-Host ""
+If (((Get-CimInstance CIM_Process).Where({ $_.CommandLine -like "PWSH* -Command $($Variables.MainPath)*.ps1 *" }).CommandLine).Count -gt 1) {
+ # Another instance is already running. Try again in 20 seconds (previous instance might be from autoupdate)
+ Write-Host "Verifying that no other instance of $($Variables.Branding.ProductLabel) is running..."
+ Start-Sleep 20
+ If (((Get-CimInstance CIM_Process).Where({ $_.CommandLine -like "PWSH* -Command $($Variables.MainPath)*.ps1 *" }).CommandLine).Count -gt 1) {
+ Write-Host "Terminating Error - Another instance of $($Variables.Branding.ProductLabel) is already running." -ForegroundColor "Red"
+ $WscriptShell.Popup("Another instance of $($Variables.Branding.ProductLabel) is already running.", 0, "Terminating error - Cannot continue!", 4112) | Out-Null
+ Exit
+ }
+}
+
+# Internet connection must be available
+$NetworkInterface = (Get-NetConnectionProfile).Where({ $_.IPv4Connectivity -eq "Internet" }).InterfaceIndex
+$Variables.MyIP = If ($NetworkInterface) { (Get-NetIPAddress -InterfaceIndex $NetworkInterface -AddressFamily IPV4).IPAddress } Else { $null }
+If (-not $Variables.MyIP) {
+ Write-Host "Terminating Error - No internet connection." -ForegroundColor "Red"
+ $WscriptShell.Popup("No internet connection", 0, "Terminating error - Cannot continue!", 4112) | Out-Null
+ Exit
+}
+
# Update config file to include all new config items
If (-not $Config.ConfigFileVersion -or [System.Version]::Parse($Config.ConfigFileVersion) -lt $Variables.Branding.Version) {
Update-ConfigFile -ConfigFile $Variables.ConfigFile
@@ -374,22 +372,40 @@ If ($Config.Transcript) { Start-Transcript -Path ".\Debug\$((Get-Item $MyInvocat
Start-LogReader
If (-not $Variables.FreshConfig) { Write-Message -Level Info "Using configuration file '$($Variables.ConfigFile.Replace("$(Convert-Path ".\")\", ".\"))'." }
+ElseIf ((Get-Command "Get-MpPreference") -and (Get-MpComputerStatus)) {
+ # Exclude from AV scanner
+ Try {
+ If (-not $Variables.IsLocalAdmin) { Write-Message -Level Info "Initiating request to exclude the $($Variables.Branding.ProductLabel) directory from Microsoft Defender Antivirus scans to avoid false virus alerts..." }
+ Start-Process "pwsh" "-Command Write-Host 'Excluding UG-Miner directory ''$(Convert-Path .)'' from Microsoft Defender Antivirus scans...'; Start-Sleep -Seconds 5; Import-Module Defender -SkipEditionCheck; Add-MpPreference -ExclusionPath '$(Convert-Path .)'" -Verb runAs
+ Write-Message -Level Info "Excluded the $($Variables.Branding.ProductLabel) directory from Microsoft Defender Antivirus scans."
+ }
+ Catch {
+ $WscriptShell.Popup("Could not to exclude the directory`n$($Variables.Branding.ProductLabel)`n from Microsoft Defender Antivirus scans. This may lead to unpredictable results.", 0, "Terminating error - Cannot continue!", 4112) | Out-Null
+ Exit
+ }
+ # Unblock files
+ If (Get-Command "Unblock-File" -ErrorAction Ignore) {
+ If (Get-Item .\* -Stream Zone.*) {
+ Write-Host "Unblocking files that were downloaded from the internet..." -ForegroundColor Yellow
+ Get-ChildItem -Path . -Recurse | Unblock-File
+ }
+ }
+}
Write-Host ""
#Prerequisites check
Write-Message -Level Verbose "Verifying pre-requisites..."
-$Prerequisites = @(
- "$env:SystemRoot\System32\MSVCR120.dll",
- "$env:SystemRoot\System32\VCRUNTIME140.dll",
- "$env:SystemRoot\System32\VCRUNTIME140_1.dll"
-)
-
If ([System.Environment]::OSVersion.Version -lt [Version]"10.0.0.0") {
Write-Message -Level Error "$($Variables.Branding.ProductLabel) requires at least Windows 10."
$WscriptShell.Popup("$($Variables.Branding.ProductLabel) requires at least Windows 10.", 0, "Terminating error - Cannot continue!", 4112) | Out-Null
Exit
}
+$Prerequisites = @(
+ "$env:SystemRoot\System32\MSVCR120.dll",
+ "$env:SystemRoot\System32\VCRUNTIME140.dll",
+ "$env:SystemRoot\System32\VCRUNTIME140_1.dll"
+)
If ($PrerequisitesMissing = @($Prerequisites.Where({ -not (Test-Path -LiteralPath $_ -PathType Leaf) }))) {
$PrerequisitesMissing.ForEach({ Write-Message -Level Warn "$_ is missing." })
Write-Message -Level Error "Please install the required runtime modules. Download and extract"
@@ -441,12 +457,12 @@ Import-Module NetSecurity -ErrorAction Ignore
Import-Module Defender -ErrorAction Ignore -SkipEditionCheck
# Unblock files
-If (Get-Item .\* -Stream Zone.*) {
- Write-Host "Unblocking files that were downloaded from the internet..." -ForegroundColor Yellow
- If (Get-Command "Unblock-File" -ErrorAction Ignore) { Get-ChildItem -Path . -Recurse | Unblock-File }
- If ((Get-Command "Get-MpPreference") -and (Get-MpComputerStatus) -and (Get-MpPreference).ExclusionPath -notcontains (Convert-Path .)) {
- Start-Process "pwsh" "-Command Import-Module Defender; Add-MpPreference -ExclusionPath '$(Convert-Path .)'" -Verb runAs
+If (Get-Command "Unblock-File" -ErrorAction Ignore) {
+ If ($UnblockFiles = (Get-ChildItem -Path . -Recurse).Where({ -not $_.PsIsContainer -and $_.FullName -notmatch "Logs|Stats" }).Where({ Try { Get-Item $_ -Stream Zone.* } Catch { } })) {
+ Write-Host "Unblocking $($UnblockFiles.Count) file$(If ($UnblockFiles.Count -ne 1) { "s" }) that $(If ($UnblockFiles.Count -eq 1) { "was" } Else { "were" }) downloaded from the internet..." -ForegroundColor Yellow
+ $UnblockFiles | Unblock-File
}
+ Remove-Variable UnblockFiles -ErrorAction Ignore
}
Write-Message -Level Verbose "Setting variables..."
@@ -470,7 +486,7 @@ $Variables.Brains = @{ }
$Variables.CPUfeatures = (Get-CpuId).Features | Sort-Object
$Variables.CycleStarts = @()
$Variables.IsLocalAdmin = ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]"Administrator")
-$Variables.LastDonated = [DateTime]::Now.AddDays( -1 ).AddHours(1)
+$Variables.LastDonated = [DateTime]::Now.AddDays(-1).AddHours(1)
$Variables.MiningEarning = $Variables.MiningProfit = $Variables.MiningPowerCost = [Double]::NaN
$Variables.NewMiningStatus = If ($Config.StartupMode -match "Paused|Running") { $Config.StartupMode } Else { "Idle" }
$Variables.RestartCycle = $true
@@ -541,15 +557,6 @@ If ($Config.WebGUI) { Start-APIServer }
Function MainLoop {
- If ($Variables.MiningStatus -eq "Running") {
- # Core watchdog. Sometimes core loop gets stuck
- If (-not $Variables.SuspendCycle -and $Variables.MyIP -and $Variables.EndCycleTime -and $CoreRunspace.Job.IsCompleted -eq $false -and [DateTime]::Now.ToUniversalTime() -gt $Variables.EndCycleTime.AddSeconds(15 * $Config.Interval)) {
- Write-Message -Level Warn "Core cycle is stuck - restarting..."
- Stop-Core
- Start-Core
- }
- }
-
# 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 $LegacyGUIminingSummaryLabel.Text)) {
$Variables.RestartCycle = $false
@@ -575,46 +582,60 @@ Function MainLoop {
"Idle" {
If ($Variables.MiningStatus) {
$Variables.Summary = "'Stop Mining' button clicked."
- Write-Host "`n"
+ Write-Host ""
Write-Message -Level Info $Variables.Summary
Stop-Core
Stop-Brain
- # If ($Config.ReportToServer) { Write-MonitoringData }
+ Stop-BalancesTracker
- # Load currency exchange rates
- [Void](Get-Rate)
+ # If ($Config.ReportToServer) { Write-MonitoringData }
}
If (-not $Variables.FreshConfig) {
+ Write-Host ""
$Variables.Summary = "$($Variables.Branding.ProductLabel) is stopped.
Click the 'Start mining' button to make money."
- Write-Host "`n"
Write-Message -Level Info ($Variables.Summary -replace "
", " ")
}
Break
}
"Paused" {
$Variables.Summary = "'Pause Mining' button clicked."
- Write-Host "`n"
+ Write-Host ""
Write-Message -Level Info $Variables.Summary
- Stop-Core
+ If ($Global:CoreRunspace.Job.IsCompleted -eq $false) {
+ $Global:CoreRunspace.PowerShell.Stop()
+ $Variables.Remove("EndCycleTime")
+ $Variables.Remove("Timer")
+ }
+
+ #Stop all miners
+ ForEach ($Miner in $Variables.Miners.Where({ [MinerStatus]::Running, [MinerStatus]::DryRun -contains $_.Status })) {
+ $Miner.SetStatus([MinerStatus]::Idle)
+ $Variables.Devices.Where({ $Miner.DeviceNames -contains $_.Name }).ForEach({ $_.Status = $Miner.Status; $_.StatusInfo = $Miner.StatusInfo; $_.SubStatus = $Miner.SubStatus })
+ }
+ Remove-Variable Miner -ErrorAction Ignore
+ $Variables.MinersRunning = [Miner[]]@()
+
Stop-Brain @($Variables.Brains.psBase.Keys.Where({ $_ -notin (Get-PoolBaseName $Variables.PoolName) }))
Start-Brain @(Get-PoolBaseName $Variables.PoolName)
+ If ($Config.BalancesTrackerPollInterval -gt 0) { Start-BalancesTracker }
# If ($Config.ReportToServer) { Write-MonitoringData }
+ Write-Host ""
$Variables.Summary = "$($Variables.Branding.ProductLabel) is paused.
Click the 'Start mining' button to make money."
- Write-Host "`n"
Write-Message -Level Info ($Variables.Summary -replace "
", " ")
Break
}
"Running" {
- If ($Variables.Timer) {
+ If ($Variables.MiningStatus) {
$Variables.Summary = "'Start Mining' button clicked."
- Write-Host "`n"
+ Write-Host ""
Write-Message -Level Info $Variables.Summary
}
Start-Brain @(Get-PoolBaseName $Config.PoolName)
+ If ($Config.BalancesTrackerPollInterval -gt 0) { Start-BalancesTracker }
Start-Core
Break
}
@@ -624,7 +645,11 @@ Function MainLoop {
If ($LegacyGUIform) { Update-GUIstatus }
}
- If ($Config.BalancesTrackerPollInterval -gt 0 -and $Variables.NewMiningStatus -ne "Idle") { Start-BalancesTracker } Else { Stop-BalancesTracker }
+ If ($Config.BalancesTrackerPollInterval -gt 0 -and $Variables.NewMiningStatus -ne "Idle") { Start-BalancesTracker }
+ ElseIf ($Variables.NewMiningStatus -ne "Idle" -and $Variables.RatesUpdated -lt [DateTime]::Now.ToUniversalTime().AddMinutes( - 15)) {
+ # Update rates every 15 minutes
+ [Void](Get-Rate)
+ }
If ($Variables.MiningStatus -eq "Running") {
If ($Config.IdleDetection) {
@@ -637,7 +662,7 @@ Function MainLoop {
}
Start-Core
}
- ElseIf ($CoreRunspace.Job.IsCompleted -eq $false) {
+ ElseIf ($Global:CoreRunspace.Job.IsCompleted -eq $false) {
$Message = "System activity detected.
Mining is suspended until system is idle for $($Config.IdleSec) second$(If ($Config.IdleSec -ne 1) { "s" })."
Write-Message -Level Verbose ($Message -replace "
", " ")
Stop-Core
@@ -651,7 +676,7 @@ Function MainLoop {
Remove-Variable Message
}
}
- ElseIf ($CoreRunspace.Job.IsCompleted -ne $false) {
+ ElseIf ($Global:CoreRunspace.Job.IsCompleted -ne $false) {
If ($Variables.Timer) {
Write-Message -Level Warn "Core cycle stopped abnormally - restarting..."
Stop-Core
@@ -659,6 +684,12 @@ Function MainLoop {
Start-Core
If ($LegacyGUIform) { Update-GUIstatus }
}
+ ElseIf (-not $Variables.SuspendCycle -and -not $Variables.MinersBenchmarkingOrMeasuring -and [DateTime]::Now.ToUniversalTime() -gt $Variables.BeginCycleTimeCycleTime.AddSeconds(1.5 *$Config.Interval)) {
+ # Core watchdog. Sometimes core loop gets stuck
+ Write-Message -Level Warn "Core cycle is stuck - restarting..."
+ Stop-Core
+ Start-Core
+ }
}
ElseIf ((Test-Path -Path $Variables.PoolsConfigFile) -and (Test-Path -Path $Variables.ConfigFile)) {
If ($Variables.ConfigFileTimestamp -ne (Get-Item -Path $Variables.ConfigFile).LastWriteTime -or $Variables.PoolsConfigFileTimestamp -ne (Get-Item -Path $Variables.PoolsConfigFile).LastWriteTime) {
diff --git a/Version.txt b/Version.txt
index 20ff6201..c2874fa6 100644
--- a/Version.txt
+++ b/Version.txt
@@ -1,6 +1,6 @@
{
"Product": "UG-Miner",
- "Version": "6.3.1",
+ "Version": "6.3.2",
"AutoUpdate": true,
"Uri": "https://github.com/UselessGuru/UG-Miner/archive/refs/heads/master.zip",
"Message": "https://github.com/UselessGuru/UG-Miner/releases"
diff --git a/Web/scripts/demo.ps1 b/Web/scripts/demo.ps1
index 31077581..5617a706 100644
--- a/Web/scripts/demo.ps1
+++ b/Web/scripts/demo.ps1
@@ -18,8 +18,8 @@ along with this program. If not, see .
<#
Product: UG-Miner
File: demo.psm1
-Version: 6.3.1
-Version date: 2024/09/06
+Version: 6.3.2
+Version date: 2024/09/09
#>
# Try running this script as: http://localhost:3999/scripts/demo.ps1?message=Hello%20World!