diff --git a/pyasic/device/models.py b/pyasic/device/models.py index 24678d72..81a53427 100644 --- a/pyasic/device/models.py +++ b/pyasic/device/models.py @@ -339,6 +339,13 @@ class BitAxeModels(str, Enum): return self.value +class IceRiverModels(str, Enum): + KS2 = "KS2" + + def __str__(self): + return self.value + + class MinerModel: ANTMINER = AntminerModels WHATSMINER = WhatsminerModels @@ -348,3 +355,4 @@ class MinerModel: AURADINE = AuradineModels EPIC = ePICModels BITAXE = BitAxeModels + ICERIVER = IceRiverModels diff --git a/pyasic/miners/backends/__init__.py b/pyasic/miners/backends/__init__.py index 283a598c..a510d001 100644 --- a/pyasic/miners/backends/__init__.py +++ b/pyasic/miners/backends/__init__.py @@ -24,6 +24,7 @@ from .cgminer import CGMiner from .epic import ePIC from .goldshell import GoldshellMiner from .hiveon import Hiveon +from .iceriver import IceRiver from .innosilicon import Innosilicon from .luxminer import LUXMiner from .marathon import MaraMiner diff --git a/pyasic/miners/backends/iceriver.py b/pyasic/miners/backends/iceriver.py new file mode 100644 index 00000000..cff01f90 --- /dev/null +++ b/pyasic/miners/backends/iceriver.py @@ -0,0 +1,14 @@ +from pyasic.miners.data import DataLocations +from pyasic.miners.device.firmware import StockFirmware +from pyasic.web.iceriver import IceRiverWebAPI + +ICERIVER_DATA_LOC = DataLocations() + + +class IceRiver(StockFirmware): + """Handler for IceRiver miners""" + + _web_cls = IceRiverWebAPI + web: IceRiverWebAPI + + data_locations = ICERIVER_DATA_LOC diff --git a/pyasic/miners/device/makes.py b/pyasic/miners/device/makes.py index 6bfbe40b..615b98e3 100644 --- a/pyasic/miners/device/makes.py +++ b/pyasic/miners/device/makes.py @@ -48,3 +48,7 @@ class ePICMake(BaseMiner): class BitAxeMake(BaseMiner): make = MinerMake.BITAXE + + +class IceRiverMake(BaseMiner): + make = MinerMake.BITAXE diff --git a/pyasic/miners/device/models/__init__.py b/pyasic/miners/device/models/__init__.py index a74bf0a9..666a9c8f 100644 --- a/pyasic/miners/device/models/__init__.py +++ b/pyasic/miners/device/models/__init__.py @@ -19,5 +19,6 @@ from .auradine import * from .avalonminer import * from .epic import * from .goldshell import * +from .iceriver import * from .innosilicon import * from .whatsminer import * diff --git a/pyasic/miners/device/models/iceriver/KSX/KS2.py b/pyasic/miners/device/models/iceriver/KSX/KS2.py new file mode 100644 index 00000000..888067e6 --- /dev/null +++ b/pyasic/miners/device/models/iceriver/KSX/KS2.py @@ -0,0 +1,23 @@ +# ------------------------------------------------------------------------------ +# 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.models import MinerModel +from pyasic.miners.device.makes import IceRiverMake + + +class KS2(IceRiverMake): + raw_model = MinerModel.ICERIVER.KS2 + + expected_fans = 4 diff --git a/pyasic/miners/device/models/iceriver/KSX/__init__.py b/pyasic/miners/device/models/iceriver/KSX/__init__.py new file mode 100644 index 00000000..2f2a4251 --- /dev/null +++ b/pyasic/miners/device/models/iceriver/KSX/__init__.py @@ -0,0 +1 @@ +from .KS2 import KS2 diff --git a/pyasic/miners/device/models/iceriver/__init__.py b/pyasic/miners/device/models/iceriver/__init__.py new file mode 100644 index 00000000..54c0f2b8 --- /dev/null +++ b/pyasic/miners/device/models/iceriver/__init__.py @@ -0,0 +1 @@ +from .KSX import * diff --git a/pyasic/miners/factory.py b/pyasic/miners/factory.py index bf5d25b2..2795d2d7 100644 --- a/pyasic/miners/factory.py +++ b/pyasic/miners/factory.py @@ -38,6 +38,7 @@ from pyasic.miners.bitaxe import * from pyasic.miners.blockminer import * from pyasic.miners.device.makes import * from pyasic.miners.goldshell import * +from pyasic.miners.iceriver import * from pyasic.miners.innosilicon import * from pyasic.miners.whatsminer import * @@ -56,6 +57,7 @@ class MinerTypes(enum.Enum): AURADINE = 10 MARATHON = 11 BITAXE = 12 + ICERIVER = 13 MINER_CLASSES = { @@ -451,6 +453,10 @@ MINER_CLASSES = { "BM1366": BitAxeUltra, "BM1397": BitAxeMax, }, + MinerTypes.ICERIVER: { + None: type("IceRiverUnknown", (IceRiver, IceRiverMake), {}), + "KS2": IceRiverKS2, + }, } @@ -623,6 +629,8 @@ class MinerFactory: return MinerTypes.INNOSILICON if "Miner UI" in web_text: return MinerTypes.AURADINE + if "