Compare commits

...

9 Commits

Author SHA1 Message Date
Brett Rowan
aa3d105fcb version: bump version number 2025-07-21 15:41:35 -06:00
Brett Rowan
77f59f6db6 feature: add support for Elphapex DG1 Home
Fixes: #311
2025-07-21 10:08:11 -06:00
Brett Rowan
3fa0d96fbb feature: add support for Iceriver AL3
Fixes: #317
2025-07-21 10:02:06 -06:00
Brett Rowan
e55477a8b8 feature: add support for S19j+
Fixes: #330
2025-07-21 09:51:51 -06:00
Brett Rowan
7d5744ae28 feature: add support for vnish XP Hydro
Fixes: #342
2025-07-21 09:48:11 -06:00
Brett Rowan
d4500be10c feature: add support for a couple alternate models
- Antminer S19j Pro+, ANTMINER
 - Antminer S19 Pro A, VNISH
 - Antminer S19 XP, VNISH
 - Antminer L9, VNISH
 - DG1, ELPHAPEX

 Fixes: #354
2025-07-21 09:35:00 -06:00
Brett Rowan
7ef2540133 feature: add support for Vnish S19 Hydro
Fixes: #355
2025-07-21 09:18:20 -06:00
Brett Rowan
1ea4f4e124 version: bump version number 2025-07-15 08:11:34 -06:00
bbemoll
a8a0e4a5fe Added support for Antminer S19XH Hydro running on Braiins OS (#353)
* Add pyasic files

* Add pyasic files

* Update pyproject.toml

* Update pyproject.toml

* Added support for Antminer S19XP Hydro running on Braiins OS

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-07-15 08:10:59 -06:00
39 changed files with 406 additions and 13 deletions

View File

@@ -157,6 +157,19 @@
show_root_heading: false show_root_heading: false
heading_level: 0 heading_level: 0
## S19j Pro+ (Stock)
- [x] Shutdowns
- [x] Power Modes
- [ ] Setpoints
- [ ] Presets
::: pyasic.miners.antminer.bmminer.X19.S19.BMMinerS19jProPlus
handler: python
options:
show_root_heading: false
heading_level: 0
## S19j XP (Stock) ## S19j XP (Stock)
- [x] Shutdowns - [x] Shutdowns
@@ -170,6 +183,19 @@
show_root_heading: false show_root_heading: false
heading_level: 0 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) ## S19j No PIC (Stock)
- [x] Shutdowns - [x] Shutdowns
@@ -287,6 +313,19 @@
show_root_heading: false show_root_heading: false
heading_level: 0 heading_level: 0
## S19 XP Hydro (BOS+)
- [x] Shutdowns
- [ ] Power Modes
- [x] Setpoints
- [ ] Presets
::: pyasic.miners.antminer.bosminer.X19.S19.BOSMinerS19XPHydro
handler: python
options:
show_root_heading: false
heading_level: 0
## S19+ (BOS+) ## S19+ (BOS+)
- [x] Shutdowns - [x] Shutdowns
@@ -443,6 +482,19 @@
show_root_heading: false show_root_heading: false
heading_level: 0 heading_level: 0
## S19 Hydro (VNish)
- [x] Shutdowns
- [ ] Power Modes
- [x] Setpoints
- [x] Presets
::: pyasic.miners.antminer.vnish.X19.S19.VNishS19Hydro
handler: python
options:
show_root_heading: false
heading_level: 0
## S19 Pro (VNish) ## S19 Pro (VNish)
- [x] Shutdowns - [x] Shutdowns
@@ -456,6 +508,19 @@
show_root_heading: false show_root_heading: false
heading_level: 0 heading_level: 0
## S19 Pro A (VNish)
- [x] Shutdowns
- [ ] Power Modes
- [x] Setpoints
- [x] Presets
::: pyasic.miners.antminer.vnish.X19.S19.VNishS19ProA
handler: python
options:
show_root_heading: false
heading_level: 0
## S19 Pro Hydro (VNish) ## S19 Pro Hydro (VNish)
- [x] Shutdowns - [x] Shutdowns
@@ -469,6 +534,32 @@
show_root_heading: false show_root_heading: false
heading_level: 0 heading_level: 0
## S19 XP (VNish)
- [x] Shutdowns
- [ ] Power Modes
- [x] Setpoints
- [x] Presets
::: pyasic.miners.antminer.vnish.X19.S19.VNishS19XP
handler: python
options:
show_root_heading: false
heading_level: 0
## S19 XP Hydro (VNish)
- [x] Shutdowns
- [ ] Power Modes
- [x] Setpoints
- [x] Presets
::: pyasic.miners.antminer.vnish.X19.S19.VNishS19XPHydro
handler: python
options:
show_root_heading: false
heading_level: 0
## S19a (VNish) ## S19a (VNish)
- [x] Shutdowns - [x] Shutdowns

View File

@@ -73,7 +73,7 @@
- [x] Setpoints - [x] Setpoints
- [x] Presets - [x] Presets
::: pyasic.miners.antminer.vnish.X3.L3.VnishL3Plus ::: pyasic.miners.antminer.vnish.X3.L3.VNishL3Plus
handler: python handler: python
options: options:
show_root_heading: false show_root_heading: false

View File

@@ -47,7 +47,7 @@
- [x] Setpoints - [x] Setpoints
- [x] Presets - [x] Presets
::: pyasic.miners.antminer.vnish.X7.L7.VnishL7 ::: pyasic.miners.antminer.vnish.X7.L7.VNishL7
handler: python handler: python
options: options:
show_root_heading: false show_root_heading: false

View File

@@ -105,6 +105,19 @@
show_root_heading: false show_root_heading: false
heading_level: 0 heading_level: 0
## L9 (VNish)
- [x] Shutdowns
- [ ] Power Modes
- [x] Setpoints
- [x] Presets
::: pyasic.miners.antminer.vnish.X9.L9.VNishL9
handler: python
options:
show_root_heading: false
heading_level: 0
## T9 (Hive) ## T9 (Hive)
- [ ] Shutdowns - [ ] Shutdowns

View File

@@ -1,6 +1,19 @@
# pyasic # pyasic
## DGX Models ## DGX Models
## DG1 (Stock)
- [ ] Shutdowns
- [ ] Power Modes
- [ ] Setpoints
- [ ] Presets
::: pyasic.miners.elphapex.daoge.DGX.DG1.ElphapexDG1
handler: python
options:
show_root_heading: false
heading_level: 0
## DG1+ (Stock) ## DG1+ (Stock)
- [ ] Shutdowns - [ ] Shutdowns
@@ -14,3 +27,16 @@
show_root_heading: false show_root_heading: false
heading_level: 0 heading_level: 0
## DG1Home (Stock)
- [ ] Shutdowns
- [ ] Power Modes
- [ ] Setpoints
- [ ] Presets
::: pyasic.miners.elphapex.daoge.DGX.DG1.ElphapexDG1Home
handler: python
options:
show_root_heading: false
heading_level: 0

View File

@@ -86,6 +86,8 @@ details {
<li><a href="../antminer/X19#s19j-no-pic-stock">S19j No PIC (Stock)</a></li> <li><a href="../antminer/X19#s19j-no-pic-stock">S19j No PIC (Stock)</a></li>
<li><a href="../antminer/X19#s19-pro_1-stock">S19 Pro+ (Stock)</a></li> <li><a href="../antminer/X19#s19-pro_1-stock">S19 Pro+ (Stock)</a></li>
<li><a href="../antminer/X19#s19j-pro-stock">S19j Pro (Stock)</a></li> <li><a href="../antminer/X19#s19j-pro-stock">S19j Pro (Stock)</a></li>
<li><a href="../antminer/X19#s19j_1-stock">S19j+ (Stock)</a></li>
<li><a href="../antminer/X19#s19j-pro_1-stock">S19j Pro+ (Stock)</a></li>
<li><a href="../antminer/X19#s19-xp-stock">S19 XP (Stock)</a></li> <li><a href="../antminer/X19#s19-xp-stock">S19 XP (Stock)</a></li>
<li><a href="../antminer/X19#s19a-stock">S19a (Stock)</a></li> <li><a href="../antminer/X19#s19a-stock">S19a (Stock)</a></li>
<li><a href="../antminer/X19#s19a-pro-stock">S19a Pro (Stock)</a></li> <li><a href="../antminer/X19#s19a-pro-stock">S19a Pro (Stock)</a></li>
@@ -656,6 +658,7 @@ details {
<li><a href="../antminer/X19#s19-xp-bos_1">S19 XP (BOS+)</a></li> <li><a href="../antminer/X19#s19-xp-bos_1">S19 XP (BOS+)</a></li>
<li><a href="../antminer/X19#s19-pro_1-hydro-bos_1">S19 Pro+ Hydro (BOS+)</a></li> <li><a href="../antminer/X19#s19-pro_1-hydro-bos_1">S19 Pro+ Hydro (BOS+)</a></li>
<li><a href="../antminer/X19#t19-bos_1">T19 (BOS+)</a></li> <li><a href="../antminer/X19#t19-bos_1">T19 (BOS+)</a></li>
<li><a href="../antminer/X19#s19-xp-hydro-bos_1">S19 XP Hydro (BOS+)</a></li>
</ul> </ul>
</details> </details>
<details> <details>
@@ -694,6 +697,12 @@ details {
<li><a href="../antminer/X7#l7-vnish">L7 (VNish)</a></li> <li><a href="../antminer/X7#l7-vnish">L7 (VNish)</a></li>
</ul> </ul>
</details> </details>
<details>
<summary>X9 Series:</summary>
<ul>
<li><a href="../antminer/X9#l9-vnish">L9 (VNish)</a></li>
</ul>
</details>
<details> <details>
<summary>X17 Series:</summary> <summary>X17 Series:</summary>
<ul> <ul>
@@ -709,11 +718,15 @@ details {
<li><a href="../antminer/X19#s19-pro-vnish">S19 Pro (VNish)</a></li> <li><a href="../antminer/X19#s19-pro-vnish">S19 Pro (VNish)</a></li>
<li><a href="../antminer/X19#s19j-vnish">S19j (VNish)</a></li> <li><a href="../antminer/X19#s19j-vnish">S19j (VNish)</a></li>
<li><a href="../antminer/X19#s19i-vnish">S19i (VNish)</a></li> <li><a href="../antminer/X19#s19i-vnish">S19i (VNish)</a></li>
<li><a href="../antminer/X19#s19-xp-vnish">S19 XP (VNish)</a></li>
<li><a href="../antminer/X19#s19-xp-hydro-vnish">S19 XP Hydro (VNish)</a></li>
<li><a href="../antminer/X19#s19j-pro-vnish">S19j Pro (VNish)</a></li> <li><a href="../antminer/X19#s19j-pro-vnish">S19j Pro (VNish)</a></li>
<li><a href="../antminer/X19#s19j-pro-vnish">S19j Pro (VNish)</a></li> <li><a href="../antminer/X19#s19j-pro-vnish">S19j Pro (VNish)</a></li>
<li><a href="../antminer/X19#s19j-pro-vnish">S19j Pro (VNish)</a></li> <li><a href="../antminer/X19#s19j-pro-vnish">S19j Pro (VNish)</a></li>
<li><a href="../antminer/X19#s19a-vnish">S19a (VNish)</a></li> <li><a href="../antminer/X19#s19a-vnish">S19a (VNish)</a></li>
<li><a href="../antminer/X19#s19-hydro-vnish">S19 Hydro (VNish)</a></li>
<li><a href="../antminer/X19#s19a-pro-vnish">S19a Pro (VNish)</a></li> <li><a href="../antminer/X19#s19a-pro-vnish">S19a Pro (VNish)</a></li>
<li><a href="../antminer/X19#s19-pro-a-vnish">S19 Pro A (VNish)</a></li>
<li><a href="../antminer/X19#s19-pro-hydro-vnish">S19 Pro Hydro (VNish)</a></li> <li><a href="../antminer/X19#s19-pro-hydro-vnish">S19 Pro Hydro (VNish)</a></li>
<li><a href="../antminer/X19#s19k-pro-vnish">S19k Pro (VNish)</a></li> <li><a href="../antminer/X19#s19k-pro-vnish">S19k Pro (VNish)</a></li>
<li><a href="../antminer/X19#t19-vnish">T19 (VNish)</a></li> <li><a href="../antminer/X19#t19-vnish">T19 (VNish)</a></li>
@@ -922,6 +935,12 @@ details {
<li><a href="../iceriver/KSX#ks5m-stock">KS5M (Stock)</a></li> <li><a href="../iceriver/KSX#ks5m-stock">KS5M (Stock)</a></li>
</ul> </ul>
</details> </details>
<details>
<summary>ALX Series:</summary>
<ul>
<li><a href="../iceriver/ALX#al3-stock">AL3 (Stock)</a></li>
</ul>
</details>
</ul> </ul>
</details> </details>
<details> <details>
@@ -953,6 +972,8 @@ details {
<summary>DGX Series:</summary> <summary>DGX Series:</summary>
<ul> <ul>
<li><a href="../elphapex/DGX#dg1_1-stock">DG1+ (Stock)</a></li> <li><a href="../elphapex/DGX#dg1_1-stock">DG1+ (Stock)</a></li>
<li><a href="../elphapex/DGX#dg1-stock">DG1 (Stock)</a></li>
<li><a href="../elphapex/DGX#dg1home-stock">DG1Home (Stock)</a></li>
</ul> </ul>
</details> </details>
</ul> </ul>

View File

@@ -1,5 +1,6 @@
from .base import MinerAlgoType from .base import MinerAlgoType
from .blake256 import Blake256Algo from .blake256 import Blake256Algo
from .blockflow import BlockFlowAlgo
from .eaglesong import EaglesongAlgo from .eaglesong import EaglesongAlgo
from .equihash import EquihashAlgo from .equihash import EquihashAlgo
from .ethash import EtHashAlgo from .ethash import EtHashAlgo
@@ -24,3 +25,4 @@ class MinerAlgo:
EAGLESONG = EaglesongAlgo EAGLESONG = EaglesongAlgo
ETHASH = EtHashAlgo ETHASH = EtHashAlgo
EQUIHASH = EquihashAlgo EQUIHASH = EquihashAlgo
BLOCKFLOW = BlockFlowAlgo

View File

@@ -0,0 +1,12 @@
from __future__ import annotations
from .base import MinerAlgoType
from .hashrate import BlockFlowHashRate
from .hashrate.unit import BlockFlowUnit
class BlockFlowAlgo(MinerAlgoType):
hashrate: type[BlockFlowHashRate] = BlockFlowHashRate
unit: type[BlockFlowUnit] = BlockFlowUnit
name = "BlockFlow"

View File

@@ -1,5 +1,6 @@
from .base import AlgoHashRateType from .base import AlgoHashRateType
from .blake256 import Blake256HashRate from .blake256 import Blake256HashRate
from .blockflow import BlockFlowHashRate
from .eaglesong import EaglesongHashRate from .eaglesong import EaglesongHashRate
from .equihash import EquihashHashRate from .equihash import EquihashHashRate
from .ethash import EtHashHashRate from .ethash import EtHashHashRate
@@ -22,3 +23,4 @@ class AlgoHashRate:
EAGLESONG = EaglesongHashRate EAGLESONG = EaglesongHashRate
ETHASH = EtHashHashRate ETHASH = EtHashHashRate
EQUIHASH = EquihashHashRate EQUIHASH = EquihashHashRate
BLOCKFLOW = BlockFlowHashRate

View File

@@ -0,0 +1,18 @@
from __future__ import annotations
from typing_extensions import Self
from pyasic.device.algorithm.hashrate.base import AlgoHashRateType
from pyasic.device.algorithm.hashrate.unit.blockflow import BlockFlowUnit
from .unit import HashUnit
class BlockFlowHashRate(AlgoHashRateType):
rate: float
unit: BlockFlowUnit = HashUnit.BLOCKFLOW.default
def into(self, other: BlockFlowUnit) -> Self:
return self.__class__(
rate=self.rate / (other.value / self.unit.value), unit=other
)

View File

@@ -1,4 +1,5 @@
from .blake256 import Blake256Unit from .blake256 import Blake256Unit
from .blockflow import BlockFlowUnit
from .eaglesong import EaglesongUnit from .eaglesong import EaglesongUnit
from .equihash import EquihashUnit from .equihash import EquihashUnit
from .ethash import EtHashUnit from .ethash import EtHashUnit
@@ -21,3 +22,4 @@ class HashUnit:
EAGLESONG = EaglesongUnit EAGLESONG = EaglesongUnit
ETHASH = EtHashUnit ETHASH = EtHashUnit
EQUIHASH = EquihashUnit EQUIHASH = EquihashUnit
BLOCKFLOW = BlockFlowUnit

View File

@@ -0,0 +1,16 @@
from __future__ import annotations
from .base import AlgoHashRateUnitType
class BlockFlowUnit(AlgoHashRateUnitType):
H = 1
KH = int(H) * 1000
MH = int(KH) * 1000
GH = int(MH) * 1000
TH = int(GH) * 1000
PH = int(TH) * 1000
EH = int(PH) * 1000
ZH = int(EH) * 1000
default = MH

View File

@@ -43,6 +43,7 @@ class AntminerModels(MinerModelType):
S19jNoPIC = "S19j No PIC" S19jNoPIC = "S19j No PIC"
S19ProPlus = "S19 Pro+" S19ProPlus = "S19 Pro+"
S19jPro = "S19j Pro" S19jPro = "S19j Pro"
S19jPlus = "S19j+"
S19jProNoPIC = "S19j Pro No PIC" S19jProNoPIC = "S19j Pro No PIC"
S19jProPlus = "S19j Pro+" S19jProPlus = "S19j Pro+"
S19jProPlusNoPIC = "S19j Pro+ No PIC" S19jProPlusNoPIC = "S19j Pro+ No PIC"
@@ -54,6 +55,7 @@ class AntminerModels(MinerModelType):
S19ProPlusHydro = "S19 Pro+ Hydro" S19ProPlusHydro = "S19 Pro+ Hydro"
S19KPro = "S19K Pro" S19KPro = "S19K Pro"
S19kPro = "S19k Pro" S19kPro = "S19k Pro"
S19ProA = "S19 Pro A"
S19kProNoPIC = "S19k Pro No PIC" S19kProNoPIC = "S19k Pro No PIC"
S19jXP = "S19j XP" S19jXP = "S19j XP"
T19 = "T19" T19 = "T19"
@@ -63,6 +65,7 @@ class AntminerModels(MinerModelType):
S21Pro = "S21 Pro" S21Pro = "S21 Pro"
S21Hydro = "S21 Hydro" S21Hydro = "S21 Hydro"
T21 = "T21" T21 = "T21"
S19XPHydro = "S19 XP Hydro"
def __str__(self): def __str__(self):
return self.value return self.value
@@ -532,6 +535,7 @@ class IceRiverModels(MinerModelType):
KS5 = "KS5" KS5 = "KS5"
KS5L = "KS5L" KS5L = "KS5L"
KS5M = "KS5M" KS5M = "KS5M"
AL3 = "AL3"
def __str__(self): def __str__(self):
return self.value return self.value
@@ -557,7 +561,9 @@ class BraiinsModels(MinerModelType):
class ElphapexModels(MinerModelType): class ElphapexModels(MinerModelType):
DG1 = "DG1"
DG1Plus = "DG1+" DG1Plus = "DG1+"
DG1Home = "DG1Home"
class MinerModel: class MinerModel:

View File

@@ -25,7 +25,9 @@ from pyasic.miners.device.models import (
S19i, S19i,
S19j, S19j,
S19jNoPIC, S19jNoPIC,
S19jPlus,
S19jPro, S19jPro,
S19jProPlus,
S19jXP, S19jXP,
S19KPro, S19KPro,
S19Plus, S19Plus,
@@ -80,6 +82,10 @@ class BMMinerS19jPro(AntminerModern, S19jPro):
pass pass
class BMMinerS19jPlus(AntminerModern, S19jPlus):
pass
class BMMinerS19L(AntminerModern, S19L): class BMMinerS19L(AntminerModern, S19L):
pass pass
@@ -102,3 +108,7 @@ class BMMinerS19KPro(AntminerModern, S19KPro):
class BMMinerS19jXP(AntminerModern, S19jXP): class BMMinerS19jXP(AntminerModern, S19jXP):
pass pass
class BMMinerS19jProPlus(AntminerModern, S19jProPlus):
pass

View File

@@ -22,7 +22,9 @@ from .S19 import (
BMMinerS19i, BMMinerS19i,
BMMinerS19j, BMMinerS19j,
BMMinerS19jNoPIC, BMMinerS19jNoPIC,
BMMinerS19jPlus,
BMMinerS19jPro, BMMinerS19jPro,
BMMinerS19jProPlus,
BMMinerS19jXP, BMMinerS19jXP,
BMMinerS19KPro, BMMinerS19KPro,
BMMinerS19L, BMMinerS19L,

View File

@@ -30,6 +30,7 @@ from pyasic.miners.device.models import (
S19Plus, S19Plus,
S19Pro, S19Pro,
S19ProPlusHydro, S19ProPlusHydro,
S19XPHydro,
) )
@@ -87,3 +88,7 @@ class BOSMinerS19XP(BOSer, S19XP):
class BOSMinerS19ProPlusHydro(BOSer, S19ProPlusHydro): class BOSMinerS19ProPlusHydro(BOSer, S19ProPlusHydro):
pass pass
class BOSMinerS19XPHydro(BOSer, S19XPHydro):
pass

View File

@@ -29,5 +29,6 @@ from .S19 import (
BOSMinerS19Pro, BOSMinerS19Pro,
BOSMinerS19ProPlusHydro, BOSMinerS19ProPlusHydro,
BOSMinerS19XP, BOSMinerS19XP,
BOSMinerS19XPHydro,
) )
from .T19 import BOSMinerT19 from .T19 import BOSMinerT19

View File

@@ -20,13 +20,16 @@ from pyasic.miners.device.models import (
S19XP, S19XP,
S19a, S19a,
S19aPro, S19aPro,
S19Hydro,
S19i, S19i,
S19j, S19j,
S19jPro, S19jPro,
S19kPro, S19kPro,
S19NoPIC, S19NoPIC,
S19Pro, S19Pro,
S19ProA,
S19ProHydro, S19ProHydro,
S19XPHydro,
) )
@@ -42,10 +45,18 @@ class VNishS19Pro(VNish, S19Pro):
pass pass
class VNishS19Hydro(VNish, S19Hydro):
pass
class VNishS19XP(VNish, S19XP): class VNishS19XP(VNish, S19XP):
pass pass
class VNishS19XPHydro(VNish, S19XPHydro):
pass
class VNishS19a(VNish, S19a): class VNishS19a(VNish, S19a):
pass pass
@@ -54,6 +65,10 @@ class VNishS19aPro(VNish, S19aPro):
pass pass
class VNishS19ProA(VNish, S19ProA):
pass
class VNishS19i(VNish, S19i): class VNishS19i(VNish, S19i):
pass pass
@@ -72,3 +87,7 @@ class VNishS19ProHydro(VNish, S19ProHydro):
class VNishS19kPro(VNish, S19kPro): class VNishS19kPro(VNish, S19kPro):
pass pass
class VNishS19ProA(VNish, S19ProA):
pass

View File

@@ -18,13 +18,16 @@ from .S19 import (
VNishS19, VNishS19,
VNishS19a, VNishS19a,
VNishS19aPro, VNishS19aPro,
VNishS19Hydro,
VNishS19i, VNishS19i,
VNishS19j, VNishS19j,
VNishS19jPro, VNishS19jPro,
VNishS19kPro, VNishS19kPro,
VNishS19NoPIC, VNishS19NoPIC,
VNishS19Pro, VNishS19Pro,
VNishS19ProA,
VNishS19ProHydro, VNishS19ProHydro,
VNishS19XP, VNishS19XP,
VNishS19XPHydro,
) )
from .T19 import VNishT19 from .T19 import VNishT19

View File

@@ -18,5 +18,5 @@ from pyasic.miners.backends import VNish
from pyasic.miners.device.models import L3Plus from pyasic.miners.device.models import L3Plus
class VnishL3Plus(VNish, L3Plus): class VNishL3Plus(VNish, L3Plus):
pass pass

View File

@@ -14,4 +14,4 @@
# limitations under the License. - # limitations under the License. -
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
from .L3 import VnishL3Plus from .L3 import VNishL3Plus

View File

@@ -18,5 +18,5 @@ from pyasic.miners.backends import VNish
from pyasic.miners.device.models import L7 from pyasic.miners.device.models import L7
class VnishL7(VNish, L7): class VNishL7(VNish, L7):
pass pass

View File

@@ -14,4 +14,4 @@
# limitations under the License. - # limitations under the License. -
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
from .L7 import VnishL7 from .L7 import VNishL7

View File

@@ -0,0 +1,22 @@
# ------------------------------------------------------------------------------
# Copyright 2022 Upstream Data Inc -
# -
# Licensed under the Apache License, Version 2.0 (the "License"); -
# you may not use this file except in compliance with the License. -
# You may obtain a copy of the License at -
# -
# http://www.apache.org/licenses/LICENSE-2.0 -
# -
# Unless required by applicable law or agreed to in writing, software -
# distributed under the License is distributed on an "AS IS" BASIS, -
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -
# See the License for the specific language governing permissions and -
# limitations under the License. -
# ------------------------------------------------------------------------------
from pyasic.miners.backends import VNish
from pyasic.miners.device.models import L9
class VNishL9(VNish, L9):
pass

View File

@@ -0,0 +1,17 @@
# ------------------------------------------------------------------------------
# Copyright 2022 Upstream Data Inc -
# -
# Licensed under the Apache License, Version 2.0 (the "License"); -
# you may not use this file except in compliance with the License. -
# You may obtain a copy of the License at -
# -
# http://www.apache.org/licenses/LICENSE-2.0 -
# -
# Unless required by applicable law or agreed to in writing, software -
# distributed under the License is distributed on an "AS IS" BASIS, -
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -
# See the License for the specific language governing permissions and -
# limitations under the License. -
# ------------------------------------------------------------------------------
from .L9 import VNishL9

View File

@@ -16,6 +16,7 @@
from .X3 import * from .X3 import *
from .X7 import * from .X7 import *
from .X9 import *
from .X17 import * from .X17 import *
from .X19 import * from .X19 import *
from .X21 import * from .X21 import *

View File

@@ -126,6 +126,15 @@ class S19jPro(AntMinerMake):
algo = MinerAlgo.SHA256 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): class S19jProNoPIC(AntMinerMake):
raw_model = MinerModel.ANTMINER.S19jProNoPIC raw_model = MinerModel.ANTMINER.S19jProNoPIC
@@ -216,6 +225,15 @@ class S19KPro(AntMinerMake):
algo = MinerAlgo.SHA256 algo = MinerAlgo.SHA256
class S19ProA(AntMinerMake):
raw_model = MinerModel.ANTMINER.S19ProA
expected_chips = 114
expected_fans = 4
expected_hashboards = 3
algo = MinerAlgo.SHA256
class S19jXP(AntMinerMake): class S19jXP(AntMinerMake):
raw_model = MinerModel.ANTMINER.S19jXP raw_model = MinerModel.ANTMINER.S19jXP
@@ -223,3 +241,12 @@ class S19jXP(AntMinerMake):
expected_fans = 4 expected_fans = 4
expected_hashboards = 3 expected_hashboards = 3
algo = MinerAlgo.SHA256 algo = MinerAlgo.SHA256
class S19XPHydro(AntMinerMake):
raw_model = MinerModel.ANTMINER.S19XPHydro
expected_chips = 204
expected_fans = 0
expected_hashboards = 3
algo = MinerAlgo.SHA256

View File

@@ -24,6 +24,7 @@ from .S19 import (
S19i, S19i,
S19j, S19j,
S19jNoPIC, S19jNoPIC,
S19jPlus,
S19jPro, S19jPro,
S19jProNoPIC, S19jProNoPIC,
S19jProPlus, S19jProPlus,
@@ -35,8 +36,10 @@ from .S19 import (
S19NoPIC, S19NoPIC,
S19Plus, S19Plus,
S19Pro, S19Pro,
S19ProA,
S19ProHydro, S19ProHydro,
S19ProPlus, S19ProPlus,
S19ProPlusHydro, S19ProPlusHydro,
S19XPHydro,
) )
from .T19 import T19 from .T19 import T19

View File

@@ -18,6 +18,15 @@ from pyasic.device.models import MinerModel
from pyasic.miners.device.makes import ElphapexMake from pyasic.miners.device.makes import ElphapexMake
class DG1(ElphapexMake):
raw_model = MinerModel.ELPHAPEX.DG1
expected_chips = 144
expected_hashboards = 4
expected_fans = 4
algo = MinerAlgo.SCRYPT
class DG1Plus(ElphapexMake): class DG1Plus(ElphapexMake):
raw_model = MinerModel.ELPHAPEX.DG1Plus raw_model = MinerModel.ELPHAPEX.DG1Plus
@@ -25,3 +34,12 @@ class DG1Plus(ElphapexMake):
expected_hashboards = 4 expected_hashboards = 4
expected_fans = 4 expected_fans = 4
algo = MinerAlgo.SCRYPT algo = MinerAlgo.SCRYPT
class DG1Home(ElphapexMake):
raw_model = MinerModel.ELPHAPEX.DG1Home
expected_chips = 120
expected_hashboards = 4
expected_fans = 4
algo = MinerAlgo.SCRYPT

View File

@@ -1 +1 @@
from .DG1 import DG1Plus from .DG1 import DG1, DG1Home, DG1Plus

View File

@@ -0,0 +1,27 @@
# ------------------------------------------------------------------------------
# Copyright 2024 Upstream Data Inc -
# -
# Licensed under the Apache License, Version 2.0 (the "License"); -
# you may not use this file except in compliance with the License. -
# You may obtain a copy of the License at -
# -
# http://www.apache.org/licenses/LICENSE-2.0 -
# -
# Unless required by applicable law or agreed to in writing, software -
# distributed under the License is distributed on an "AS IS" BASIS, -
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -
# See the License for the specific language governing permissions and -
# limitations under the License. -
# ------------------------------------------------------------------------------
from pyasic.device.algorithm import MinerAlgo
from pyasic.device.models import MinerModel
from pyasic.miners.device.makes import IceRiverMake
class AL3(IceRiverMake):
raw_model = MinerModel.ICERIVER.AL3
expected_chips = 156
expected_fans = 4
expected_hashboards = 3
algo = MinerAlgo.BLOCKFLOW

View File

@@ -0,0 +1 @@
from .AL3 import AL3

View File

@@ -1 +1,2 @@
from .ALX import *
from .KSX import * from .KSX import *

View File

@@ -1,6 +1,14 @@
from pyasic.miners.backends.elphapex import ElphapexMiner from pyasic.miners.backends.elphapex import ElphapexMiner
from pyasic.miners.device.models import DG1Plus from pyasic.miners.device.models import DG1, DG1Home, DG1Plus
class ElphapexDG1Plus(ElphapexMiner, DG1Plus): class ElphapexDG1Plus(ElphapexMiner, DG1Plus):
pass pass
class ElphapexDG1(ElphapexMiner, DG1):
pass
class ElphapexDG1Home(ElphapexMiner, DG1Home):
pass

View File

@@ -1 +1 @@
from .DG1 import ElphapexDG1Plus from .DG1 import ElphapexDG1, ElphapexDG1Home, ElphapexDG1Plus

View File

@@ -41,6 +41,7 @@ from pyasic.miners.elphapex import *
from pyasic.miners.goldshell import * from pyasic.miners.goldshell import *
from pyasic.miners.hammer import * from pyasic.miners.hammer import *
from pyasic.miners.iceriver import * from pyasic.miners.iceriver import *
from pyasic.miners.iceriver.iceminer.ALX import IceRiverAL3
from pyasic.miners.innosilicon import * from pyasic.miners.innosilicon import *
from pyasic.miners.luckyminer import * from pyasic.miners.luckyminer import *
from pyasic.miners.volcminer import * from pyasic.miners.volcminer import *
@@ -108,6 +109,8 @@ MINER_CLASSES = {
"ANTMINER S19J88NOPIC": BMMinerS19jNoPIC, "ANTMINER S19J88NOPIC": BMMinerS19jNoPIC,
"ANTMINER S19PRO+": BMMinerS19ProPlus, "ANTMINER S19PRO+": BMMinerS19ProPlus,
"ANTMINER S19J PRO": BMMinerS19jPro, "ANTMINER S19J PRO": BMMinerS19jPro,
"ANTMINER S19J+": BMMinerS19jPlus,
"ANTMINER S19J PRO+": BMMinerS19jProPlus,
"ANTMINER S19 XP": BMMinerS19XP, "ANTMINER S19 XP": BMMinerS19XP,
"ANTMINER S19A": BMMinerS19a, "ANTMINER S19A": BMMinerS19a,
"ANTMINER S19A PRO": BMMinerS19aPro, "ANTMINER S19A PRO": BMMinerS19aPro,
@@ -561,12 +564,14 @@ MINER_CLASSES = {
"ANTMINER T21": BOSMinerT21, "ANTMINER T21": BOSMinerT21,
"BRAIINS MINI MINER BMM 100": BraiinsBMM100, "BRAIINS MINI MINER BMM 100": BraiinsBMM100,
"BRAIINS MINI MINER BMM 101": BraiinsBMM101, "BRAIINS MINI MINER BMM 101": BraiinsBMM101,
"ANTMINER S19 XP HYD.": BOSMinerS19XPHydro,
}, },
MinerTypes.VNISH: { MinerTypes.VNISH: {
None: VNish, None: VNish,
"L3+": VnishL3Plus, "L3+": VNishL3Plus,
"ANTMINER L3+": VnishL3Plus, "ANTMINER L3+": VNishL3Plus,
"ANTMINER L7": VnishL7, "ANTMINER L7": VNishL7,
"ANTMINER L9": VNishL9,
"ANTMINER S17+": VNishS17Plus, "ANTMINER S17+": VNishS17Plus,
"ANTMINER S17 PRO": VNishS17Pro, "ANTMINER S17 PRO": VNishS17Pro,
"ANTMINER S19": VNishS19, "ANTMINER S19": VNishS19,
@@ -574,11 +579,15 @@ MINER_CLASSES = {
"ANTMINER S19 PRO": VNishS19Pro, "ANTMINER S19 PRO": VNishS19Pro,
"ANTMINER S19J": VNishS19j, "ANTMINER S19J": VNishS19j,
"ANTMINER S19I": VNishS19i, "ANTMINER S19I": VNishS19i,
"ANTMINER S19 XP": VNishS19XP,
"ANTMINER S19 XP HYD.": VNishS19XPHydro,
"ANTMINER S19J PRO": VNishS19jPro, "ANTMINER S19J PRO": VNishS19jPro,
"ANTMINER S19J PRO A": VNishS19jPro, "ANTMINER S19J PRO A": VNishS19jPro,
"ANTMINER S19J PRO BB": VNishS19jPro, "ANTMINER S19J PRO BB": VNishS19jPro,
"ANTMINER S19A": VNishS19a, "ANTMINER S19A": VNishS19a,
"ANTMINER S19 HYD.": VNishS19Hydro,
"ANTMINER S19A PRO": VNishS19aPro, "ANTMINER S19A PRO": VNishS19aPro,
"ANTMINER S19 PRO A": VNishS19ProA,
"ANTMINER S19 PRO HYD.": VNishS19ProHydro, "ANTMINER S19 PRO HYD.": VNishS19ProHydro,
"ANTMINER S19K PRO": VNishS19kPro, "ANTMINER S19K PRO": VNishS19kPro,
"ANTMINER T19": VNishT19, "ANTMINER T19": VNishT19,
@@ -677,6 +686,7 @@ MINER_CLASSES = {
"KS5": IceRiverKS5, "KS5": IceRiverKS5,
"KS5L": IceRiverKS5L, "KS5L": IceRiverKS5L,
"KS5M": IceRiverKS5M, "KS5M": IceRiverKS5M,
"10306": IceRiverAL3,
}, },
MinerTypes.HAMMER: { MinerTypes.HAMMER: {
None: type("HammerUnknown", (BlackMiner, HammerMake), {}), None: type("HammerUnknown", (BlackMiner, HammerMake), {}),
@@ -689,6 +699,8 @@ MINER_CLASSES = {
MinerTypes.ELPHAPEX: { MinerTypes.ELPHAPEX: {
None: type("ElphapexUnknown", (ElphapexMiner, ElphapexMake), {}), None: type("ElphapexUnknown", (ElphapexMiner, ElphapexMake), {}),
"DG1+": ElphapexDG1Plus, "DG1+": ElphapexDG1Plus,
"DG1": ElphapexDG1,
"DG1-Home": ElphapexDG1Home,
}, },
} }

View File

@@ -0,0 +1,6 @@
from pyasic.miners.backends.iceriver import IceRiver
from pyasic.miners.device.models.iceriver import AL3
class IceRiverAL3(IceRiver, AL3):
pass

View File

@@ -0,0 +1 @@
from .AL3 import IceRiverAL3

View File

@@ -1,6 +1,6 @@
[project] [project]
name = "pyasic" name = "pyasic"
version = "0.72.10" version = "0.73.0"
description = "A simplified and standardized interface for Bitcoin ASICs." description = "A simplified and standardized interface for Bitcoin ASICs."
authors = [{name = "UpstreamData", email = "brett@upstreamdata.ca"}] authors = [{name = "UpstreamData", email = "brett@upstreamdata.ca"}]