Skip to content

Commit 92a9a60

Browse files
committed
Add bitbox01 downloader
1 parent 09df0b2 commit 92a9a60

File tree

1 file changed

+29
-0
lines changed

1 file changed

+29
-0
lines changed

hwilib/firmware.py

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,35 @@ def keepkey_id_formatted(id_str):
122122

123123
return {'success': True, 'message': 'Keepkey firmware version {} downloaded to {}'.format(version, downloaded_file)}
124124

125+
def digitalbitbox_01_download(version=None, bitcoinonly=False):
126+
versions = feedparser.parse('https://github.com/digitalbitbox/mcu/tags.atom')
127+
releases = versions.entries
128+
129+
def id_formatted(id_str):
130+
tag = id_str.split('/')[-1]
131+
p = re.compile(r'^v\d+.\d+.\d$')
132+
return bool(p.match(tag))
133+
134+
releases = [r for r in releases if id_formatted(r['id'])]
135+
releases.sort(key=lambda r: r["updated_parsed"], reverse=True)
136+
137+
version_info = {}
138+
if version is None:
139+
version_info = releases[0]
140+
version = version_info['id'].split('/')[-1][1:]
141+
else:
142+
for r in releases:
143+
if r['id'].split('/')[-1][1:] == version:
144+
version_info = r
145+
break
146+
else:
147+
raise BadArgumentError('{} is not available'.format(version))
148+
149+
url = 'https://github.com/digitalbitbox/mcu/releases/download/v{}/firmware.deterministic.{}.signed.bin'.format(version, version)
150+
downloaded_file = _download_file(url)
151+
152+
return {'success': True, 'message': 'Digital Bitbox01 firmware version {} downloaded to {}'.format(version, downloaded_file)}
153+
125154
def download_firmware(model, version, bitcoinonly=False):
126155
dev_model = model.lower()
127156
func_name = dev_model + '_download'

0 commit comments

Comments
 (0)