Skip to content

Commit 79b0631

Browse files
committed
backend/bitbox02bootloader: add placeholder firmwares for BB02+
The bootloader assumes there are entries in this map for each product, otherwise it returns errors in various places. We add placeholder firmwares (same as BitBox02 firmwares but with adjusted magic bytes) so we can test the bootloader and firmware upgrades on BB02+ for now.
1 parent cd5c60a commit 79b0631

File tree

4 files changed

+45
-6
lines changed

4 files changed

+45
-6
lines changed

backend/devices/bitbox02bootloader/firmware.go

+30
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,8 @@ var intermediateFirmwareBinaryBTCOnly_9_17_1 []byte
3232
//go:embed assets/firmware.v9.17.1.signed.bin.gz
3333
var intermediateFirmwareBinaryMulti_9_17_1 []byte
3434

35+
// BitBox02
36+
3537
//go:embed assets/firmware-btc.v9.22.0.signed.bin.gz
3638
var firmwareBinaryBTCOnly []byte
3739
var firmwareVersionBTCOnly = semver.NewSemVer(9, 22, 0)
@@ -42,6 +44,18 @@ var firmwareBinaryMulti []byte
4244
var firmwareVersionMulti = semver.NewSemVer(9, 22, 0)
4345
var firmwareMonotonicVersionMulti uint32 = 42
4446

47+
// BitBox02 Plus. TODO: these are placeholder entries.
48+
49+
//go:embed assets/firmware-bb02plus-btconly.v9.22.0.signed.bin.gz
50+
var firmwareBB02PlusBinaryBTCOnly []byte
51+
var firmwareBB02PlusVersionBTCOnly = semver.NewSemVer(9, 22, 0)
52+
var firmwareBB02PlusMonotonicVersionBtcOnly uint32 = 42
53+
54+
//go:embed assets/firmware-bb02plus-multi.v9.22.0.signed.bin.gz
55+
var firmwareBB02PlusBinaryMulti []byte
56+
var firmwareBB02PlusVersionMulti = semver.NewSemVer(9, 22, 0)
57+
var firmwareBB02PlusMonotonicVersionMulti uint32 = 42
58+
4559
type firmwareInfo struct {
4660
version *semver.SemVer
4761
monotonicVersion uint32
@@ -75,6 +89,7 @@ func (fi firmwareInfo) firmwareHash() ([]byte, error) {
7589
// The intermediate upgrades, when run, bump the monotonic version by one so we know whether it has
7690
// booted/run at least once.
7791
var bundledFirmwares = map[bitbox02common.Product][]firmwareInfo{
92+
// BitBox02
7893
bitbox02common.ProductBitBox02Multi: {
7994
{
8095
version: semver.NewSemVer(9, 17, 1),
@@ -99,6 +114,21 @@ var bundledFirmwares = map[bitbox02common.Product][]firmwareInfo{
99114
binaryGzip: firmwareBinaryBTCOnly,
100115
},
101116
},
117+
// BitBox02 Plus.
118+
bitbox02common.ProductBitBox02PlusMulti: {
119+
{
120+
version: firmwareBB02PlusVersionMulti,
121+
monotonicVersion: firmwareBB02PlusMonotonicVersionMulti,
122+
binaryGzip: firmwareBB02PlusBinaryMulti,
123+
},
124+
},
125+
bitbox02common.ProductBitBox02PlusBTCOnly: {
126+
{
127+
version: firmwareBB02PlusVersionBTCOnly,
128+
monotonicVersion: firmwareBB02PlusMonotonicVersionBtcOnly,
129+
binaryGzip: firmwareBB02PlusBinaryBTCOnly,
130+
},
131+
},
102132
}
103133

104134
// BundledFirmwareVersion returns the version of newest bundled firmware. Returns nil if none is

backend/devices/bitbox02bootloader/firmware_test.go

+15-6
Original file line numberDiff line numberDiff line change
@@ -81,12 +81,21 @@ func TestFirmwaresOrdered(t *testing.T) {
8181

8282
func TestNextFirmware(t *testing.T) {
8383
for product, firmwares := range bundledFirmwares {
84-
fwInfo, err := nextFirmware(product, 1)
85-
require.NoError(t, err)
86-
require.Equal(t, uint32(36), fwInfo.monotonicVersion)
84+
switch product {
85+
case bitbox02common.ProductBitBox02Multi, bitbox02common.ProductBitBox02BTCOnly:
86+
fwInfo, err := nextFirmware(product, 1)
87+
require.NoError(t, err)
88+
require.Equal(t, uint32(36), fwInfo.monotonicVersion)
8789

88-
fwInfo, err = nextFirmware(product, 36)
89-
require.NoError(t, err)
90-
require.Equal(t, &firmwares[len(firmwares)-1], fwInfo)
90+
fwInfo, err = nextFirmware(product, 36)
91+
require.NoError(t, err)
92+
require.Equal(t, &firmwares[len(firmwares)-1], fwInfo)
93+
case bitbox02common.ProductBitBox02PlusMulti, bitbox02common.ProductBitBox02PlusBTCOnly:
94+
fwInfo, err := nextFirmware(product, 1)
95+
require.NoError(t, err)
96+
require.Equal(t, &firmwares[len(firmwares)-1], fwInfo)
97+
default:
98+
require.Fail(t, "unknown product")
99+
}
91100
}
92101
}

0 commit comments

Comments
 (0)