"Don't trust — verify."
The reason a hardware wallet is trustworthy is not that the company says so. It's that the firmware running on the device is open source, reproducibly built, and cryptographically signed — and that anyone in the world can confirm the signed binary on the device matches the public source code. This guide walks you through that verification, end to end.

When you connect a KeepKey, three things have to be true for the device to be trustworthy:
You cannot verify any of those by inspecting the device. You can only verify them by reading the source, building it yourself, and confirming the binary you built matches the binary running on the device.
The KeepKey firmware repository is open: github.com/keepkey/keepkey-firmware. It has been peer-reviewed by independent researchers for years. What this guide adds is the missing link — the proof that what's on your device is what's in that repository.
If the hashes match, the published binary is exactly what the public source produces. If they don't, something has been altered between source and release, and you should not flash that binary.
You do not need to install an embedded toolchain locally. The Docker build script handles all of that.
git clone https://github.com/keepkey/keepkey-firmware cd keepkey-firmware
Find the release you want to verify on the releases page. Each release has a tag and a commit hash:

Check out that exact commit:
git checkout 39db6942e62c5f63c3e6cf3a0cd35155bae62914
(Replace the hash with the one from the release you're verifying.)
Pull in the submodules — the firmware depends on several pinned dependencies that live in their own repos:
git submodule update --init --recursive
Run the Docker build script:
./scripts/build/docker/device/release.sh
This produces
./bin/firmware.keepkey.binHash your locally compiled binary:
tail -c +257 ./bin/firmware.keepkey.bin | shasum -a 256
Example output:
f83934f0bb88515712d98448c3ff91989d9ff28c1658245ca01ae45c2bd0a599 -
Now download the matching binary from the GitHub release (the
firmware.keepkey.bintail -c +257 firmware.keepkey.bin | shasum -a 256
f83934f0bb88515712d98448c3ff91989d9ff28c1658245ca01ae45c2bd0a599 -
The two hashes must match exactly. If they do, you have just proven that the published binary is bit-for-bit identical to what the public source code produces — meaning the device flashing this firmware can only do what the open-source code says it does.
If they don't match, something is off. Most often it's a build environment mismatch (wrong commit, missing submodule, wrong Docker tag). Re-run the steps above carefully. If they still don't match, post the discrepancy on the firmware repo's issues page and do not flash that binary.
It proves:
It doesn't prove:
In other words, reproducible builds give you the strongest available trust chain from "publicly auditable source" to "binary on the device" — but that chain still rests on the integrity of the host you ran the verification on.
A KeepKey is a hardware wallet because the device, not the computer, performs the security-critical operations: deriving keys, displaying addresses, signing transactions. If the firmware running on the device cannot be independently verified, that property is a marketing claim rather than a technical guarantee.
Reproducible builds collapse that gap. They turn "trust the company" into "trust the math." That's the whole point.

Once you've verified a release is legitimate, the practical way to install it is via KeepKey Vault Desktop, which checks signatures on the device automatically and walks you through the bootloader flow if needed.
Detailed walkthrough: Updating your KeepKey.
Get a KeepKey at keepkey.com