From e55477a8b81fac684241dcc51083eddc4212b152 Mon Sep 17 00:00:00 2001 From: Brett Rowan <121075405+b-rowan@users.noreply.github.com> Date: Mon, 21 Jul 2025 09:51:51 -0600 Subject: [PATCH] feature: add support for S19j+ Fixes: #330 --- docs/miners/antminer/X19.md | 13 +++++++++++++ docs/miners/supported_types.md | 1 + pyasic/device/models.py | 1 + pyasic/miners/antminer/bmminer/X19/S19.py | 5 +++++ pyasic/miners/antminer/bmminer/X19/__init__.py | 1 + pyasic/miners/device/models/antminer/X19/S19.py | 9 +++++++++ .../miners/device/models/antminer/X19/__init__.py | 1 + pyasic/miners/factory.py | 1 + 8 files changed, 32 insertions(+) diff --git a/docs/miners/antminer/X19.md b/docs/miners/antminer/X19.md index f655a931..a57307f1 100644 --- a/docs/miners/antminer/X19.md +++ b/docs/miners/antminer/X19.md @@ -183,6 +183,19 @@ show_root_heading: false heading_level: 0 +## S19j+ (Stock) + +- [x] Shutdowns +- [x] Power Modes +- [ ] Setpoints +- [ ] Presets + +::: pyasic.miners.antminer.bmminer.X19.S19.BMMinerS19jPlus + handler: python + options: + show_root_heading: false + heading_level: 0 + ## S19j No PIC (Stock) - [x] Shutdowns diff --git a/docs/miners/supported_types.md b/docs/miners/supported_types.md index 481c3cd2..91b4db37 100644 --- a/docs/miners/supported_types.md +++ b/docs/miners/supported_types.md @@ -86,6 +86,7 @@ details {
  • S19j No PIC (Stock)
  • S19 Pro+ (Stock)
  • S19j Pro (Stock)
  • +
  • S19j+ (Stock)
  • S19j Pro+ (Stock)
  • S19 XP (Stock)
  • S19a (Stock)
  • diff --git a/pyasic/device/models.py b/pyasic/device/models.py index 92dae912..6f98591f 100644 --- a/pyasic/device/models.py +++ b/pyasic/device/models.py @@ -43,6 +43,7 @@ class AntminerModels(MinerModelType): S19jNoPIC = "S19j No PIC" S19ProPlus = "S19 Pro+" S19jPro = "S19j Pro" + S19jPlus = "S19j+" S19jProNoPIC = "S19j Pro No PIC" S19jProPlus = "S19j Pro+" S19jProPlusNoPIC = "S19j Pro+ No PIC" diff --git a/pyasic/miners/antminer/bmminer/X19/S19.py b/pyasic/miners/antminer/bmminer/X19/S19.py index d2b08ec2..8cd8d2a9 100644 --- a/pyasic/miners/antminer/bmminer/X19/S19.py +++ b/pyasic/miners/antminer/bmminer/X19/S19.py @@ -25,6 +25,7 @@ from pyasic.miners.device.models import ( S19i, S19j, S19jNoPIC, + S19jPlus, S19jPro, S19jProPlus, S19jXP, @@ -81,6 +82,10 @@ class BMMinerS19jPro(AntminerModern, S19jPro): pass +class BMMinerS19jPlus(AntminerModern, S19jPlus): + pass + + class BMMinerS19L(AntminerModern, S19L): pass diff --git a/pyasic/miners/antminer/bmminer/X19/__init__.py b/pyasic/miners/antminer/bmminer/X19/__init__.py index b6f72ff3..d1f4798f 100644 --- a/pyasic/miners/antminer/bmminer/X19/__init__.py +++ b/pyasic/miners/antminer/bmminer/X19/__init__.py @@ -22,6 +22,7 @@ from .S19 import ( BMMinerS19i, BMMinerS19j, BMMinerS19jNoPIC, + BMMinerS19jPlus, BMMinerS19jPro, BMMinerS19jProPlus, BMMinerS19jXP, diff --git a/pyasic/miners/device/models/antminer/X19/S19.py b/pyasic/miners/device/models/antminer/X19/S19.py index 6a40b405..989b6894 100644 --- a/pyasic/miners/device/models/antminer/X19/S19.py +++ b/pyasic/miners/device/models/antminer/X19/S19.py @@ -126,6 +126,15 @@ class S19jPro(AntMinerMake): algo = MinerAlgo.SHA256 +class S19jPlus(AntMinerMake): + raw_model = MinerModel.ANTMINER.S19jPlus + + expected_chips = 108 + expected_fans = 4 + expected_hashboards = 3 + algo = MinerAlgo.SHA256 + + class S19jProNoPIC(AntMinerMake): raw_model = MinerModel.ANTMINER.S19jProNoPIC diff --git a/pyasic/miners/device/models/antminer/X19/__init__.py b/pyasic/miners/device/models/antminer/X19/__init__.py index c2ff64c8..43550efb 100644 --- a/pyasic/miners/device/models/antminer/X19/__init__.py +++ b/pyasic/miners/device/models/antminer/X19/__init__.py @@ -24,6 +24,7 @@ from .S19 import ( S19i, S19j, S19jNoPIC, + S19jPlus, S19jPro, S19jProNoPIC, S19jProPlus, diff --git a/pyasic/miners/factory.py b/pyasic/miners/factory.py index 0c042ba1..7c33b25e 100644 --- a/pyasic/miners/factory.py +++ b/pyasic/miners/factory.py @@ -108,6 +108,7 @@ MINER_CLASSES = { "ANTMINER S19J88NOPIC": BMMinerS19jNoPIC, "ANTMINER S19PRO+": BMMinerS19ProPlus, "ANTMINER S19J PRO": BMMinerS19jPro, + "ANTMINER S19J+": BMMinerS19jPlus, "ANTMINER S19J PRO+": BMMinerS19jProPlus, "ANTMINER S19 XP": BMMinerS19XP, "ANTMINER S19A": BMMinerS19a,