mirror of
https://github.com/trezor/trezor-firmware.git
synced 2024-12-16 03:18:09 +00:00
1ff789101b
[skip_ci]
54 lines
1.6 KiB
Python
54 lines
1.6 KiB
Python
import serial
|
|
|
|
from .device import Device
|
|
|
|
|
|
class TrezorOne(Device):
|
|
def __init__(self, uhub_location, arduino_serial, device_port):
|
|
super().__init__(uhub_location=uhub_location, device_port=device_port)
|
|
self.serial = serial.Serial(arduino_serial, 9600)
|
|
|
|
def touch(self, location, action):
|
|
self.now()
|
|
self.log(f"[hardware/trezor] Touching the {location} button by {action}...")
|
|
self.serial.write(f"{location} {action}\n".encode())
|
|
|
|
def update_firmware(self, file=None):
|
|
if file:
|
|
unofficial = True
|
|
trezorctlcmd = f"firmware-update -s -f {file} &"
|
|
self.log(f"[software] Updating the firmware to {file}")
|
|
else:
|
|
unofficial = False
|
|
trezorctlcmd = "firmware-update &"
|
|
self.log("[software] Updating the firmware to latest")
|
|
self.wait(3)
|
|
self._enter_bootloader()
|
|
|
|
self.wait(3)
|
|
self.check_model("Trezor 1 bootloader")
|
|
|
|
self.run_trezorctl(trezorctlcmd)
|
|
self.wait(3)
|
|
self.touch("right", "click")
|
|
self.wait(30)
|
|
if unofficial:
|
|
self.touch("right", "click")
|
|
self.wait(10)
|
|
self.power_off()
|
|
self.power_on()
|
|
if unofficial:
|
|
self.touch("right", "click")
|
|
self.wait(5)
|
|
self.touch("right", "click")
|
|
self.wait(15)
|
|
return self.check_model("Trezor 1")
|
|
|
|
def _enter_bootloader(self):
|
|
self.power_off()
|
|
self.touch("all", "press")
|
|
self.wait(2)
|
|
self.power_on()
|
|
self.wait(2)
|
|
self.touch("all", "unpress")
|