{"id":13666812,"url":"https://github.com/lnbits/hardware-wallet","last_synced_at":"2025-03-02T20:28:50.297Z","repository":{"id":50968944,"uuid":"516522423","full_name":"lnbits/hardware-wallet","owner":"lnbits","description":"Use a world of microcontrollers to contruct your own bitcoin hardware wallet","archived":false,"fork":false,"pushed_at":"2024-04-30T05:15:39.000Z","size":6347,"stargazers_count":75,"open_issues_count":1,"forks_count":12,"subscribers_count":2,"default_branch":"main","last_synced_at":"2024-11-11T01:35:17.372Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/lnbits.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-07-21T21:10:02.000Z","updated_at":"2024-11-06T01:55:20.000Z","dependencies_parsed_at":"2024-03-18T14:15:52.626Z","dependency_job_id":null,"html_url":"https://github.com/lnbits/hardware-wallet","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lnbits%2Fhardware-wallet","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lnbits%2Fhardware-wallet/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lnbits%2Fhardware-wallet/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lnbits%2Fhardware-wallet/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lnbits","download_url":"https://codeload.github.com/lnbits/hardware-wallet/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241567268,"owners_count":19983466,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-02T06:01:25.579Z","updated_at":"2025-03-02T20:28:50.276Z","avatar_url":"https://github.com/lnbits.png","language":"C","funding_links":[],"categories":["Uncategorized"],"sub_categories":["Uncategorized"],"readme":"\n![Group 156 (1)](https://github.com/arbadacarbaYK/hardware-wallet/assets/63317640/6136bcf2-ddcb-4507-a0dd-2b388f89a69c)\n\n# WALLY, the Bitcoin Hardware Wallet \n\nCheck out this [video tutorial](https://www.youtube.com/watch?v=uMg598-3wIk) on the Makerbits channel.\n\n\u003cimg src=\"https://github.com/lnbits/hardware-wallet/assets/63317640/a9942720-b3e0-45a0-8f39-7211c4969cb5\" alt=\"HWW_front\" width=\"200\"\u003e\n\u003cimg src=\"https://github.com/lnbits/hardware-wallet/assets/63317640/8dc3dc21-2820-4fcd-a12c-7f0e2d96943c\" alt=\"HWW_back\" width=\"200\"\u003e\n\n## Flash and configure via webinstaller https://lnbits.github.io/hardware-wallet\n\nData 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. \nYou can use LNbits OnchainWallet extension, your terminal or any other serial monitor.\n\n\n### Wally is in BETA, use with TESTNET only, or with an amount of funds you are willing to lose \n\n## What you need\n- Lilygo TTGO/Tdisplay or any other ESP32 version\n- Optional: a case\n=\u003e or get the kit in the [LNbits shop](https://shop.lnbits.com/product-category/hardware/hardware-wallets)\n- Data Cable\n- Desktop PC and Chrome/Chromium/Brave Browser\n- LNbits Onchain Extension\n\nGot questions ? Join us \u003ca href=\"https://t.me/lnbits\"\u003et.me/lnbits\u003c/a\u003e, \u003ca href=\"https://t.me/makerbits\"\u003et.me/makerbits\u003c/a\u003e\n\n\n## Manual Install instructions (without webinstaller)\n\n- Buy a Lilygo \u003ca href=\"https://www.aliexpress.com/item/33048962331.html\"\u003eTdisplay\u003c/a\u003e (although with a little tinkering any ESP32 will do) \n- Install \u003ca href=\"https://www.arduino.cc/en/software\"\u003eArduino IDE 1.8.19\u003c/a\u003e\n- Install ESP32 boards, using \u003ca href=\"https://docs.espressif.com/projects/arduino-esp32/en/latest/installing.html#installing-using-boards-manager\"\u003eboards manager\u003c/a\u003e\n- Download this repo\n- Copy these \u003ca href=\"libraries\"\u003elibraries\u003c/a\u003e into your Arduino install \"libraries\" folder\n- Open this \u003ca href=\"wallet/wallet.ino\"\u003ewallet.ino\u003c/a\u003e file in the Arduino IDE\n- Select \"TTGO-LoRa32-OLED-V1\" from tools\u003eboard\n- Upload to device\n\n\u003cimg style=\"width:500px;\" src=\"https://user-images.githubusercontent.com/33088785/180316957-4f99d7e9-9820-4302-9dde-ba555cb04729.png\"\u003e\n\n## Device Commands\nThe client (OnchainWallet extension or anyother one) communicates with the device using strings (called commands) of this form:\n`/command-name {param1} {param2} ... {paramn}`\n - the order of the parametes is relevant (the position gives its meaning)\n - if no the value is specified then the minus (`-`) character should be used at the respective position\n - eg: `/password my-password-1`\n\n The device (HWW) can respond (not mandatory) with a string of the same form: \n  - `/command-name {resp1} {resp2} ... {respn}`\n\nThe documentation for each command can be found in the linked `.ino` file so you can build on top of it.\n\n - `/ping` [720_ping.ino](https://github.com/lnbits/hardware-wallet/blob/main/wallet/720_ping.ino)\n - `/pair` [712_cmd_pair.ino](https://github.com/lnbits/hardware-wallet/blob/main/wallet/712_cmd_pair.ino)\n - `/check_pairing` [721_check_pairing.ino](https://github.com/lnbits/hardware-wallet/blob/main/wallet/721_check_pairing.ino)\n - `/password` [713_cmd_password_check.ino](https://github.com/lnbits/hardware-wallet/blob/main/wallet/713_cmd_password_check.ino)\n - `/password-clear` [714_cmd_password_clear.ino](https://github.com/lnbits/hardware-wallet/blob/main/wallet/714_cmd_password_clear.ino)\n - `/restore` [717_cmd_restore.ino](https://github.com/lnbits/hardware-wallet/blob/main/wallet/717_cmd_restore.ino)\n - `/wipe` [716_cmd_wipe_hww.ino](https://github.com/lnbits/hardware-wallet/blob/main/wallet/716_cmd_wipe_hww.ino)\n - `/psbt` [718_cmd_sign_psbt](https://github.com/lnbits/hardware-wallet/blob/main/wallet/718_cmd_sign_psbt.ino)\n - `/seed` [719_show_seed](https://github.com/lnbits/hardware-wallet/blob/main/wallet/719_show_seed.ino)\n - `/xpub` [715_cmd_xpub.ino](https://github.com/lnbits/hardware-wallet/blob/main/wallet/715_cmd_xpub.ino)\n - `/address` [722_show_address](https://github.com/lnbits/hardware-wallet/blob/main/wallet/722_show_address.ino)\n - `/help` [711_cmd_help](https://github.com/lnbits/hardware-wallet/blob/main/wallet/711_cmd_help.ino)\n\n\n ## Run from SD Card (air-gapped)\n **Note**: the device is not fully airgapped when other communication mediums are enabled (wifi, bluetooth, serial-port, etc).\n\n In order to run from an SD Card one must:\n  - mount the SD Card into a computer\n  - create a file named `commands.in.txt` on the top level directory (no parent directory) of the SD Card\n  - add the commands to the file. See sample files in [examples/sd-card](https://github.com/lnbits/hardware-wallet/tree/main/examples/sd-card)\n  - mount the SD Card into the hardware device\n  - reboot the device. On reboot the device will detect the `commands.in.txt` on the SD Card and will start executing the commands\n  - wait for the device to complete execution\n  - mount the SD Card into the computer. Two new files should be present:\n     - `commands.out.txt` - contains the outputs of the commands. Here you will find the relevant data (like the signed PSBT)\n     - `commands.log.txt` - contains the logs\n## How to use\n// Guide to go here\n\n\u003e _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_\n\u003e 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 \u003ca href=\"https://github.com/Xinyuan-LilyGO/LilyGo-T-Call-SIM800/issues/139#issuecomment-904390716\"\u003eGitHub issue\u003c/a\u003e\n\nThis repo is powered by the \u003ca href=\"https://www.arduino.cc/reference/en/libraries/ubitcoin/\"\u003euBitcoin\u003c/a\u003e library.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flnbits%2Fhardware-wallet","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flnbits%2Fhardware-wallet","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flnbits%2Fhardware-wallet/lists"}