Sources
Everything this guide installs, where it comes from, and under which licence. Check a commit hash here before you build.
Code this guide uses
| What | Version | Licence |
|---|---|---|
| DIY changes to the Classic firmwareFirmware 3.12.0, OneKey's emulator branch plus one commit of DIY changes | 3ea4eb1d01d3 | GPL v3 and LGPL v3 |
| OneKey Classic 1S firmwareThe emulator branch the DIY changes start from | ee01f0114fd1 | GPL v3 and LGPL v3 |
| OneKey appRelease v6.6.3, plus the one-line change in the DIY commit | d510ab79e622 | OneKey Standard Source License 1.1 |
| Trezor firmwareOneKey's Classic firmware is based on it | GPL v3 and LGPL v3 |
The OneKey app's source code is published under OneKey's own licence, not an open-source licence.
How this guide was checked
Checked on 25 October 2026, on a Linux computer (x86-64):
- Step 4's commands, followed word for word in an empty folder, download and compile the firmware. Both builds (all coins, and Bitcoin only) compile with the debug interface off, and the screen build needs no desktop graphics libraries.
- Two new wallets created by the DIY build got different recovery phrases. The unchanged emulator created the same phrase both times.
- With the hardware random number generator replaced by a stuck source, the health tests stop the wallet. A missing generator, and Linux's software generator put in its place, are both refused.
- The DIY build accepts connections from the same computer only, and its debug port answers nothing. The unchanged emulator accepts connections from any network.
- The screen and button code runs end to end against a simulated screen and simulated keys: menus draw correctly and the joystick moves through wallet creation.
- The USB relay passed a request from the app's protocol through to the wallet and its reply back, unchanged.
- The app change applies cleanly to OneKey app release v6.6.3, and the changed app builds with step 6's commands on Linux and opens. The build needed more than 7 GB of memory.
- The screen build also compiles with the compiler version Raspberry Pi OS uses on the Pi (GCC 14, for ARM64), and that ARM64 program runs correctly under an ARM emulator with a simulated screen and keys: menus, joystick and all three keys work.
- The USB relay keeps working after the wallet restarts in the middle of a session.
- The random number check, against a simulated Pi: it accepts Broadcom's generator setting, resets a changed one and refuses any other generator. Its statistical test passes a good source and fails a stuck or biased one.
Not yet checked on the real parts:
- Building on a Raspberry Pi Zero 2 W, and how long it takes.
- Which way up the picture appears on the Waveshare screen.
- The app finding the wallet over USB on macOS and Linux.
- Packaging the app on macOS.
- Whether the Pi's random number generator passes the health tests in long use. They assume at least 4 unpredictable bits in every 8; a weaker generator would make the wallet stop.
- Which generator setting the boot firmware leaves on a Pi Zero 2 W, and that the check can read it on the current Raspberry Pi OS. If it can't, the wallet doesn't start, which is the safe outcome.