Check out this video tutorial on the Makerbits channel.
![HWW_front](https://private-user-images.githubusercontent.com/63317640/315980333-a9942720-b3e0-45a0-8f39-7211c4969cb5.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkxODE4ODUsIm5iZiI6MTczOTE4MTU4NSwicGF0aCI6Ii82MzMxNzY0MC8zMTU5ODAzMzMtYTk5NDI3MjAtYjNlMC00NWEwLThmMzktNzIxMWM0OTY5Y2I1LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTAlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjEwVDA5NTk0NVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTQxYWNlOGFlNDU3MDllYzc1Yzc5NjgzMzFiOWU5ZjhkMDVhOTc5ZDNmZGNhNjY0Zjc4Zjk4YzQ3ZTBmYTYwMjYmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.wTzT_tAdp9JqY8rKdXnQoTq3ub9Vzgn0CHM6_LWJzeE)
![HWW_back](https://private-user-images.githubusercontent.com/63317640/315980323-8dc3dc21-2820-4fcd-a12c-7f0e2d96943c.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkxODE4ODUsIm5iZiI6MTczOTE4MTU4NSwicGF0aCI6Ii82MzMxNzY0MC8zMTU5ODAzMjMtOGRjM2RjMjEtMjgyMC00ZmNkLWExMmMtN2YwZTJkOTY5NDNjLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTAlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjEwVDA5NTk0NVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWMxMGRiY2ViNTQyM2ZkODExZjdhNGMxOTBmNGQzNmM4MDZjY2VhOGQ1YzE1YTc3NWE4YjI2OWNjYzQ1MTUzMDkmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.RD60dwhyLnQt-AH0Rj0hU_AeSSUeGWB7S9dDUnV_q1c)
Flash and configure via webinstaller https://lnbits.github.io/hardware-wallet
Data is sent to/from the Hardware Wallet over webdev serial. It is not the most secure data transmission method, but fine for handling small-medium sized amounts of funds or if you need a hardware wallet for a small period of time like e.g. on a vacation. You can use LNbits OnchainWallet extension, your terminal or any other serial monitor.
- Lilygo TTGO/Tdisplay or any other ESP32 version
- Optional: a case => or get the kit in the LNbits shop
- Data Cable
- Desktop PC and Chrome/Chromium/Brave Browser
- LNbits Onchain Extension
Got questions ? Join us t.me/lnbits, t.me/makerbits
- Buy a Lilygo Tdisplay (although with a little tinkering any ESP32 will do)
- Install Arduino IDE 1.8.19
- Install ESP32 boards, using boards manager
- Download this repo
- Copy these libraries into your Arduino install "libraries" folder
- Open this wallet.ino file in the Arduino IDE
- Select "TTGO-LoRa32-OLED-V1" from tools>board
- Upload to device
The client (OnchainWallet extension or anyother one) communicates with the device using strings (called commands) of this form:
/command-name {param1} {param2} ... {paramn}
- the order of the parametes is relevant (the position gives its meaning)
- if no the value is specified then the minus (
-
) character should be used at the respective position - eg:
/password my-password-1
The device (HWW) can respond (not mandatory) with a string of the same form:
/command-name {resp1} {resp2} ... {respn}
The documentation for each command can be found in the linked .ino
file so you can build on top of it.
/ping
720_ping.ino/pair
712_cmd_pair.ino/check_pairing
721_check_pairing.ino/password
713_cmd_password_check.ino/password-clear
714_cmd_password_clear.ino/restore
717_cmd_restore.ino/wipe
716_cmd_wipe_hww.ino/psbt
718_cmd_sign_psbt/seed
719_show_seed/xpub
715_cmd_xpub.ino/address
722_show_address/help
711_cmd_help
Note: the device is not fully airgapped when other communication mediums are enabled (wifi, bluetooth, serial-port, etc).
In order to run from an SD Card one must:
- mount the SD Card into a computer
- create a file named
commands.in.txt
on the top level directory (no parent directory) of the SD Card - add the commands to the file. See sample files in examples/sd-card
- mount the SD Card into the hardware device
- reboot the device. On reboot the device will detect the
commands.in.txt
on the SD Card and will start executing the commands - wait for the device to complete execution
- mount the SD Card into the computer. Two new files should be present:
commands.out.txt
- contains the outputs of the commands. Here you will find the relevant data (like the signed PSBT)commands.log.txt
- contains the logs
// Guide to go here
Note: If using MacOS, you will need the CP210x USB to UART Bridge VCP Drivers available here https://www.silabs.com/developers/usb-to-uart-bridge-vcp-drivers If you are using MacOS Big Sur or an Mac with M1 chip, you might encounter the issue
A fatal error occurred: Failed to write to target RAM (result was 0107)
, this is related to the chipsest used by TTGO, you can find the correct driver and more info in this GitHub issue
This repo is powered by the uBitcoin library.