From b957aa7fba578c28b20f430ced63305718be384f Mon Sep 17 00:00:00 2001 From: 1e9abhi1e10 <2311abhiptdr@gmail.com> Date: Tue, 20 Aug 2024 16:12:33 +0530 Subject: [PATCH] feat: Add update firmware for LuxOS Miner --- pyasic/miners/backends/luxminer.py | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/pyasic/miners/backends/luxminer.py b/pyasic/miners/backends/luxminer.py index abaa3664..73b7a508 100644 --- a/pyasic/miners/backends/luxminer.py +++ b/pyasic/miners/backends/luxminer.py @@ -14,6 +14,7 @@ # limitations under the License. - # ------------------------------------------------------------------------------ from typing import List, Optional +import logging from pyasic.config import MinerConfig from pyasic.data import AlgoHashRate, Fan, HashBoard, HashUnit @@ -146,6 +147,32 @@ class LUXMiner(LuxOSFirmware): async def get_config(self) -> MinerConfig: return self.config + async def upgrade_firmware(self) -> dict: + """ + Upgrade the firmware on a LuxOS miner by calling the 'updaterun' API command. + + Returns: Result of the upgrade process. + + """ + command = "updaterun" + + try: + response = await self.rpc.send_command(command=command) + + if not response: + raise ValueError("No response received during the firmware upgrade process.") + + if response.get("status") == "success": + logging.info(f"{self.ip}: Firmware upgrade initiated successfully.") + return "Firmware upgrade completed successfully." + else: + logging.error(f"{self.ip}: Firmware upgrade failed. Response: {response}") + raise ValueError(f"Firmware upgrade failed. Response: {response}") + + except Exception as e: + logging.error(f"An error occurred during the firmware upgrade process: {e}", exc_info=True) + raise + ################################################## ### DATA GATHERING FUNCTIONS (get_{some_data}) ### ##################################################