Use the rpc update_firmware method

This commit is contained in:
1e9abhi1e10
2024-06-12 22:23:43 +05:30
parent 2a66602c2c
commit 87377fbe4c

View File

@@ -16,10 +16,7 @@
import logging import logging
from typing import List, Optional from typing import List, Optional
import asyncio
import aiofiles import aiofiles
import json
import struct
from pathlib import Path from pathlib import Path
from pyasic.config import MinerConfig, MiningModeConfig from pyasic.config import MinerConfig, MiningModeConfig
@@ -676,32 +673,10 @@ class BTMiner(StockFirmware):
async with aiofiles.open(file, "rb") as f: async with aiofiles.open(file, "rb") as f:
upgrade_contents = await f.read() upgrade_contents = await f.read()
# Establish a TCP connection to the miner result = await self.rpc.update_firmware(upgrade_contents)
reader, writer = await asyncio.open_connection(self.ip, self.port)
# Send the update_firmware command
command = json.dumps({"token": token, "cmd": "update_firmware"})
writer.write(command.encode())
await writer.drain()
# Wait for the miner to respond with "ready"
response = await reader.read(1024)
response_json = json.loads(response.decode())
if response_json.get("Msg") != "ready":
raise Exception("Miner is not ready for firmware upgrade.")
# Send the firmware file size and data
file_size = struct.pack("<I", len(upgrade_contents))
writer.write(file_size)
writer.write(upgrade_contents)
await writer.drain()
# Close the connection
writer.close()
await writer.wait_closed()
logging.info("Firmware upgrade process completed successfully for Whatsminer.") logging.info("Firmware upgrade process completed successfully for Whatsminer.")
return "Firmware upgrade completed successfully." return result
except FileNotFoundError as e: except FileNotFoundError as e:
logging.error(f"File not found during the firmware upgrade process: {e}") logging.error(f"File not found during the firmware upgrade process: {e}")
raise raise