diff --git a/pyasic/miners/base.py b/pyasic/miners/base.py index ca65fe93..1ad18b6a 100644 --- a/pyasic/miners/base.py +++ b/pyasic/miners/base.py @@ -561,10 +561,11 @@ class BaseMiner(MinerProtocol): if self._ssh_cls is not None: self.ssh = self._ssh_cls(ip) - async def upgrade_firmware(self, url: str = None, version: str = "latest") -> bool: + async def upgrade_firmware(self, file: str = None, url: str = None, version: str = "latest") -> bool: """Upgrade the firmware of the miner. Parameters: + file: The file path to the firmware to upgrade from. url: The URL to download the firmware from. version: The version of the firmware to upgrade to. @@ -572,7 +573,9 @@ class BaseMiner(MinerProtocol): A boolean value of the success of the firmware upgrade. """ try: - if url is not None: + if file is not None: + await self.web.send_command("firmware-upgrade", file=file) + elif url is not None: await self.web.send_command("firmware-upgrade", url=url) else: await self.web.send_command("firmware-upgrade", version=version) diff --git a/pyasic/miners/device/firmware.py b/pyasic/miners/device/firmware.py index efd2b974..1c65e62e 100644 --- a/pyasic/miners/device/firmware.py +++ b/pyasic/miners/device/firmware.py @@ -21,26 +21,47 @@ from pyasic.miners.base import BaseMiner class StockFirmware(BaseMiner): firmware = MinerFirmware.STOCK + async def upgrade_firmware(self, *, url: str = None, version: str = "latest") -> bool: + return await super().upgrade_firmware(url=url, version=version) + class BraiinsOSFirmware(BaseMiner): firmware = MinerFirmware.BRAIINS_OS + async def upgrade_firmware(self, *, url: str = None, version: str = "latest") -> bool: + return await super().upgrade_firmware(url=url, version=version) + class VNishFirmware(BaseMiner): firmware = MinerFirmware.VNISH + async def upgrade_firmware(self, *, url: str = None, version: str = "latest") -> bool: + return await super().upgrade_firmware(url=url, version=version) + class ePICFirmware(BaseMiner): firmware = MinerFirmware.EPIC + async def upgrade_firmware(self, *, url: str = None, version: str = "latest") -> bool: + return await super().upgrade_firmware(url=url, version=version) + class HiveonFirmware(BaseMiner): firmware = MinerFirmware.HIVEON + async def upgrade_firmware(self, *, url: str = None, version: str = "latest") -> bool: + return await super().upgrade_firmware(url=url, version=version) + class LuxOSFirmware(BaseMiner): firmware = MinerFirmware.LUXOS + async def upgrade_firmware(self, *, url: str = None, version: str = "latest") -> bool: + return await super().upgrade_firmware(url=url, version=version) + class MaraFirmware(BaseMiner): firmware = MinerFirmware.MARATHON + + async def upgrade_firmware(self, *, url: str = None, version: str = "latest") -> bool: + return await super().upgrade_firmware(url=url, version=version)