diff --git a/en/getting-started/features/QR-transcript-tools/index.html b/en/getting-started/features/QR-transcript-tools/index.html index ad98ddcf3..697f45f4a 100644 --- a/en/getting-started/features/QR-transcript-tools/index.html +++ b/en/getting-started/features/QR-transcript-tools/index.html @@ -1125,7 +1125,7 @@
When you export a mnemonic, encrypted mnemonic or a generic text QR code, alternative visualization modes will be available. To change modes swipe sideways, or press Page
buttons if the device doesn't have touchscreen. Find transcribe templates here.
When you export a mnemonic, encrypted mnemonic or a generic text QR code, alternative visualization modes will be available. Swipe left or right to change modes, or if your device doesn't have a touchscreen, press the Page
buttons. Find transcribe templates here.
diff --git a/en/getting-started/features/tools/index.html b/en/getting-started/features/tools/index.html index f7318efdd..a87325fcb 100644 --- a/en/getting-started/features/tools/index.html +++ b/en/getting-started/features/tools/index.html @@ -1143,7 +1143,7 @@
-
Enter a text input to create, print or transcript a QR code that can be later used as an encryption key or as a passphrase.
+Enter a text input to create, print or transcript a QR code that can be later used as an encryption key or as a passphrase. Swipe left or right to change modes if your device has a touchscreen.
-
After confirming the mnemonic words, you can optionally choose to type or scan a BIP-39 passphrase. You can create a QR code from your passphrase offline in Tools section.
+After confirming the mnemonic words, you can optionally choose to type or scan a BIP-39 passphrase. When typing, swipe left or right to change modes if your device has a touchscreen. For scanning, you can also create a QR code from your offline passphrase in Tools.
When you export a mnemonic, encrypted mnemonic or a generic text QR code, alternative visualization modes will be available. To change modes swipe sideways, or press Page
buttons if the device doesn't have touchscreen. Find transcribe templates here.
When you export a mnemonic, encrypted mnemonic or a generic text QR code, alternative visualization modes will be available. Swipe left or right to change modes, or if your device doesn't have a touchscreen, press the Page
buttons. Find transcribe templates here.
diff --git a/getting-started/features/tools/index.html b/getting-started/features/tools/index.html index e33c7b4c4..5024ecbd0 100644 --- a/getting-started/features/tools/index.html +++ b/getting-started/features/tools/index.html @@ -1143,7 +1143,7 @@
-
Enter a text input to create, print or transcript a QR code that can be later used as an encryption key or as a passphrase.
+Enter a text input to create, print or transcript a QR code that can be later used as an encryption key or as a passphrase. Swipe left or right to change modes if your device has a touchscreen.
-
After confirming the mnemonic words, you can optionally choose to type or scan a BIP-39 passphrase. You can create a QR code from your passphrase offline in Tools section.
+After confirming the mnemonic words, you can optionally choose to type or scan a BIP-39 passphrase. When typing, swipe left or right to change modes if your device has a touchscreen. For scanning, you can also create a QR code from your offline passphrase in Tools.
Some Amigo screens have inverted X coordinates while others don\u2019t. If you notice that the buttons on keypad input screens appear to be in the wrong order, please go to Settings > Hardware > Display
and change the value of Flipped X Coordinates
which should correct the issue.
Others have found that there are issues with the colors displayed in the interface and camera preview. To fix this we have two options in Settings > Hardware > Display
, BGR Colors
and Inverted Colors
, test with them until the colors appear to be correct on your device.
We added IRQ to the firmware, so when you open your Maix Amigo, you will see a switch in the middle of the device board, it must be in the upper position for the touchscreen to work with v24.03.0 and later.
"},{"location":"faq/#why-isnt-my-device-charging-or-being-recognized-when-connected-to-the-computers-usb","title":"Why isn't my device charging or being recognized when connected to the computer's USB?","text":"If you have a Maix Amigo, make sure you're using the USB-C port at the bottom of the device, not the one on the left side.
Different computer hosts have varying hardware, operating systems, and behaviors regarding their USB ports. Below are the expected behaviors:
"},{"location":"faq/#usb-a","title":"USB-A:","text":"Your device should charge and turn on when connected to a USB-A port, even if it was initially turned off. You can also turn off the device while it continues to charge. However, some hosts' USB-A ports may behave like USB-C ports, as described below.
"},{"location":"faq/#usb-c","title":"USB-C:","text":"If the device is turned off and connected to a USB-C port, it should turn on and start charging. You can turn it off again, and it will continue to charge.
If the device is already turned on and connected to a USB-C port, it may not charge or be recognized by the computer. In this case, turn off the device to initiate recognition and charging. Once turned off and reconnected, the device should restart, be recognized by the computer, and charging should be triggered by USB-C hosts. If your device is not charging or being recognized as expected, try using a different USB port or a different computer to determine if the issue is with the device or the host's USB port.
M5stickV's USB-C port lacks pull up resistors required for it to be recognized and powered by host (computer) USB-C ports. If you don't have an USB-A available, you can use a USB hub connected between your computer's USB-C and M5stickV.
"},{"location":"faq/#why-does-my-krux-device-randomly-freeze-or-restart-when-connected-to-the-computer","title":"Why does my Krux device randomly freeze or restart when connected to the computer?","text":"Windows is known to have issues with the USB-C devices. If you are experiencing random crashes or even reboots and your device does not have a battery, try using a phone charger or other power source such as a power bank.
"},{"location":"faq/#why-wont-my-linux-os-list-a-serial-port-after-connecting-my-device","title":"Why won't my Linux OS list a serial port after connecting my device?","text":"If you get the following error when trying to flash your device: Failed to find device via USB. Is it connected and powered on?
Make sure your device is being detected and serial ports are being mounted by running:
ls /dev/ttyUSB*\n
Expect one port to be listed for devices like M5stickV and Maix Dock /dev/ttyUSB0
, and two ports for Maix Amigo and Maix Bit /dev/ttyUSB0 /dev/ttyUSB1
. If you don't see them, your OS may not be loading the correct drivers to create the serial ports to connect to. Ubuntu has a known bug where the brltty
driver \"kidnaps\" serial devices. You can solve this problem by removing it:
sudo apt-get remove brltty\n
"},{"location":"faq/#my-device-didnt-reboot-after-flashing-the-firmware-and-when-i-turned-it-off-and-on-again-it-just-stayed-blank-without-showing-anything-on-the-screen-what-should-i-do","title":"My device didn't reboot after flashing the firmware and when I turned it off and on again, it just stayed blank without showing anything on the screen. What should I do?","text":"Check if the downloaded file matches the device, this can also occur due to data corruption. Try downloading binaries again. You can install MaixPy IDE to help with debugging, Tools > Open Terminal > New Terminal > Connect to serial port > Select a COM port available (if it doesn't work, try another COM port). It will show the terminal and some messages, a message about an empty device or with corrupted firmware appears like: \"interesting, something's wrong, boot failed with exit code 233, go to find your vendor.\"
"},{"location":"faq/#what-are-all-the-features-available-what-are-the-additional-features-of-the-test-or-beta-version-is-there-an-android-app","title":"What are all the features available? What are the additional features of the Test or Beta version? Is there an Android app?","text":"For official releases you will find all the features detailed here on the Getting Started page with a brief summary on the Navigation Overview page. The latest and most experimental features, which we sometimes share on our social media, can be found only in the test (beta) repository. Only official releases are signed, Test or Beta is just for trying new things and providing feedback. Krux Android app is available as an apk
on the test (beta) repository (requires Android 6.0 or above).
The xpub that Krux displays follows the bitcoin core descriptors spec and includes key origin and derivation info that, in theory, makes zpubs (and ypubs) unnecessary if the wallet software being shown this extra information can parse it.
From the spec:
Every public key can be prefixed by an 8-character hexadecimal fingerprint plus optional derivation steps (hardened and unhardened) surrounded by brackets, identifying the master and derivation path the key or xpub that follows was derived with.
However, in practice not all wallet software supports this extended format, so Krux still provides a zpub as a fallback.
For more information, check out https://outputdescriptors.org/.
"},{"location":"faq/#why-isnt-krux-scanning-my-qr-code","title":"Why isn't Krux scanning my QR code?","text":"The level of detail that you see is what Krux sees. If the QR code shown on the device's screen is blurry, the camera lens of the device may be out of focus. It can be adjusted by rotating it clockwise or counter-clockwise to achieve a clearer result. The lenses usually comes with a drop of glue that makes id harder to adjust for the first time. You can use your fingertip, tweezers or small precision pliers to help, being careful to don't damage the fragile lenses.
If you have adjusted the lens already, the device may be too far away or too close to the code to read it. Start by holding the device as close to the QR code as possible and pulling away slowly until all or most of the QR code is viewable within the screen. If the code on the screen looks crisp, Krux should read it quickly and give you immediate feedback.
If you are in a dark environment, you can hold down the ENTER button of the M5StickV or Maix Amigo to turn on their LED light to potentially increase visibility. M5stickV and Amigo also has an anti-glare mode to better capture images from high brightness screens or with incident light, to enable/disable the anti-glare just press the PAGE button while scanning.
"},{"location":"faq/#why-am-i-getting-an-error-when-i-try-to-scan-a-qr-code","title":"Why am I getting an error when I try to scan a QR code?","text":"If Krux is recognizing that it sees a QR code but is displaying an error message after reading it, the likely reason is that the QR code is not in a format that Krux works with. We have listed the supported formats below:
For BIP-39 mnemonics:
crypto-bip39
For Wallet output descriptor:
descriptor
key containing an output descriptor stringFormat
, Policy
, and Derivation
keyscrypto-output
For PSBT (Partially Signed Bitcoin Transactions):
crypto-psbt
Additionally, Krux recognizes animated QR codes that use either the plaintext pMofN
(the Specter QR format) or binary UR
encodings.
If you are using an M5StickV, the small screen makes it difficult for laptop webcams to capture enough detail to parse the QR codes it displays. You can toggle brightness of QR codes from public keys and PSBTs by pressing PAGE button. In the future, more work will be done to support displaying lower density QR codes. For now, a workaround you can do is to take a picture or video of the QR code with a better-quality camera (such as your phone), then enlarge and display the photo or video to your webcam. Alternatively, it may be simpler to use a mobile wallet such as BlueWallet with the M5StickV since phone cameras don't seem to have issues reading the small QR codes. You can also save the PSBT on a microSD card for Krux to sign and then save the signed transaction to the microSD card to transfer the file to the computer or phone.
"},{"location":"faq/#why-isnt-krux-detecting-my-microsd-card-or-presenting-an-error","title":"Why isn't Krux detecting my microSD card or presenting an error?","text":"Starting from version 23.09.0, Krux supports SD card hot plugging. If you are using older versions, it may only detect the SD card at boot, so make sure Krux is turned off when inserting the microSD into it. To test the card compatibility use Krux Tools>Check SD Card. Make sure the SD card is using MBR/DOS partition table and FAT32 format.
Here is some supported microSD cards, and here is the MaixPy FAQ explaining Why my micro SD card cannot be read.
"},{"location":"faq/#why-insert-an-sd-card-into-my-device-what-is-it-for-does-it-save-something","title":"Why insert an SD card into my device? What is it for? Does it save something?","text":"SD card use is optional, most people use Krux only with QR codes. But you can use SD card to to upgrade the firmware, save settings, cnc/file, QR codes, XPUBs, encrypted mnemonics, and to save and load PSBTs, messages and wallet output descriptors.
"},{"location":"","title":"Krux","text":"Krux is an open-source firmware that transforms off-the-shelf Kendryte K210 devices, such as the Maix Amigo, M5StickV and more, into versatile Bitcoin transaction signers. Beyond its core functionality, Krux is a flexible platform that can adapt to devices with different form factors, providing a suite of tools to assist with the creation and recovery of mnemonic backups, some of which include encryption options for enhanced security.
Devices like Maix Amigo comes ready to use, with large touchscreens that make it easy and user-friendly to operate. These devices are ideal for those looking for a plug-and-play solution. On the other hand, Krux also supports development board kits, which are perfect for DIY enthusiasts who enjoy customizing and building their own hardware setups.
Interacting seamlessly with leading coordinator wallets through QR codes, SD cards, and even thermal printers, the firmware is continuously evolving to become a Swiss Army knife for self-custody, offering an array of features to support transactions and backups in a user-friendly and airgapped environment.
To learn more about Krux, check out Getting Started.
"},{"location":"parts/","title":"Devices and Part List","text":""},{"location":"parts/#krux-compatible-devices","title":"Krux Compatible Devices","text":""},{"location":"parts/#comparative-table","title":"Comparative Table","text":"Device M5stickV Maix Amigo Maix Dock Maix Bit Yahboom k210 module Price avg. US$50 US$55 US$35 US$35 US$60 Screen size / resolution 1.14\" / 135*240 3.5\" / 320*480 2.4\" / 240*320 2.4\" / 240*320 2\" / 240*320 Touchscreen Capacitive Capacitive Camera OV7740 OV7740 rearGC0328 front GC0328 OV2640 orOV5642 OV2640 Battery 200mAh 520mAh Requirements None None Rotary encoder 3D printed case SolderingAssembly Buttons 3D printed case SolderingAssembly None Warnings Camera has lens distortion Micro USB: M5stickV's USB-C port lacks pull up resistors required for it to be recognized and powered by host (computer) USB-C ports. If you don't have an USB-A available, you can use a USB hub connected between your computer's USB-C and M5stickV.
: Some Amigo screens have inverted X coordinates, others display colors differently. For more info see FAQ
: Some stores ship the Maix Dock with soldered pin connectors that do not fit into the 3D printed case
All devices feature Kendryte K210 chip: 28nm process, dual-core RISC-V 64bit @400MHz, 8 MB high-speed SRAM, DVP camera and MCU LCD interface, AES Accelerator, SHA256 Accelerator, FFT Accelerator.
"},{"location":"parts/#m5stickv","title":"M5StickV","text":"Below is a list of some distributors where you can find this device:
Below is a list of some distributors where you can find this device:
Below is a list of some distributors where you can find this device:
For the DIYers, the Maix Dock and Maix Bit are also supported but will require sourcing the parts individually and building the device yourself.
Below are example implementations with instructions on how to recreate them:
Below is a list of some distributors where you can find these devices:
This will be included with the M5StickV and Maix Amigo that you purchase from one of the distributors above. It will be necessary to power and charge the device and to initially flash the firmware.
"},{"location":"parts/#optional-microsd-card","title":"(Optional) MicroSD Card","text":"We cannot guarantee that a microSD card is compatible and will work in your device; you'll need to test it on the device to be sure, read the FAQ for more info. The size of the SD card isn't important; anything over a few megabytes will be plenty.
"},{"location":"parts/#optional-thermal-printer","title":"(Optional) Thermal Printer","text":"Krux has the capability to print all QR codes it generates, including those for mnemonics, xpubs, wallet backups, and signed PSBTs, using a locally-connected thermal printer via its serial port.
Many thermal printers may be compatible, but currently, the Goojprt QR203 (easily found on AliExpress) has the best support. The Adafruit printer starter pack can also be a convenient option to get started, as it includes all the necessary components for printing (except the conversion cable). To ensure proper functionality, enable the printer driver in the Krux settings, set the Tx pin and baud rate value to either 19200 or 9600, as explained in this Adafruit printer tutorial. You will need to connect the device's Tx to the printer's Rx and ground. The printer requires a dedicated power supply, typically with an output of 5 to 9V and capable of supplying at least 2A. For more information, see this discussion.
"},{"location":"parts/#optional-conversion-cable-for-thermal-printer","title":"(Optional) Conversion Cable for Thermal Printer","text":"To connect the printer to the device, you will need a conversion cablewith a 4-pin female Grove connector on one end (to connect to the device) and 4-pin male jumpers on the other end (to connect to the printer). For a more reliable connection, it is recommended to cut and solder the wires of your custom cables instead of using jumpers.
"},{"location":"support/","title":"Support the Project","text":""},{"location":"support/#ways-you-can-help","title":"Ways you can help","text":""},{"location":"support/#development","title":"Development","text":"Audit the code, file an issue, make a pull request, or do all three. :)
"},{"location":"support/#documentation","title":"Documentation","text":"I'd like to see Krux help as many people as possible, and to do that, good documentation is needed. If you identify a better way to say something, please make a PR, any help is appreciated.
"},{"location":"support/#translation","title":"Translation","text":"Krux supports different languages. If you missed a language or saw a awkward translation, open an issue or make a PR! You can also make a difference by translating this documentation!
"},{"location":"support/#social","title":"Social","text":"Reach out our Telegram group or X profile for faster help, share ideas and join the Krux community. Help others get to know Krux.
\"I'm an engineer, not a marketer. If you like Krux, help spread the word!\" - Jeff
"},{"location":"support/#donations","title":"Donations","text":"Krux won't ask for, receive, manage or distribute donations. You can donate directly to a Krux contributor of your choice.
Thank you!
"},{"location":"getting-started/","title":"Getting Started","text":"Krux is open-source Bitcoin signing firmware for devices with the K210 chipset.
Signing operations in Krux are done offline via QR code or via SD card. You can create/load your BIP-39 mnemonic, or import a wallet output descriptor, and sign transactions all without having to plug the device into your computer (except to initially install the firmware). It reads QR codes with its camera and outputs QR codes to its screen, or to paper via an optional thermal printer attachment.
Krux does not come with its own desktop wallet software. Instead, you can use Krux with third-party wallet coordinators to create/manage wallets, and send transactions from your online computer or mobile device while keeping your keys offline. Krux was built to be vendor agnostic and works with many popular wallet coordinators, including:
Below is the mind map representation of the currently menus available. Click the circle with a number (Ex.: ) to the right of each node to expand and explore. Also, enable full screen in the top right menu for better viewing .
"},{"location":"getting-started/navigation/#login-menu","title":"Login Menu","text":""},{"location":"getting-started/navigation/#home-menu-loaded-a-mnemonic","title":"Home Menu (Loaded a mnemonic)","text":""},{"location":"getting-started/settings/","title":"Settings","text":"In the Krux home menu, there is a Settings
entry. Below is a breakdown of the options you can change:
"},{"location":"getting-started/settings/#bitcoin-network","title":"Bitcoin - Network","text":"
This option allows you to switch between mainnet
(the default) and testnet
. Testnet
can be used to try out different wallet coordinators or for development.
Modify the encryption method and parameters to fit your needs. This will be used when storing encrypted mnemonics or creating encrypted QR codes. For more info see Krux Encrypted Mnemonics.
"},{"location":"getting-started/settings/#pbkdf2-iter-iterations","title":"PBKDF2 Iter. (Iterations)","text":"When you enter the encryption key, it is not directly used to encrypt your data. In order to protect against brute force attacks, the key is derived multiple times using hashing functions. PBKDF2 (Password-Based Key Derivation Function) iterations stands for the amount of derivations that will be performed over your key prior to encrypt/decrypt your mnemonic.
If you increase this value it will make the encryption harder, at the cost of taking longer to encrypt/decrypt your mnemonics.
Values must be multiple of 10,000. This was done to save data space on QR codes.
"},{"location":"getting-started/settings/#encryption-mode","title":"Encryption Mode","text":"Choose between well known and widely used AES (Advanced Encryption Standard) modes:
"},{"location":"getting-started/settings/#aes-ecb","title":"AES-ECB","text":"ECB (Electronic Codebook), its a simpler method where encryption data blocks are encrypted individually. It will be faster and simpler to encrypt, QR codes will have a lower density and will be easier to transcribe.
"},{"location":"getting-started/settings/#aes-cbc","title":"AES-CBC","text":"CBC (Cipher-block Chaining) is considered more secure as in the first data block an initialization vector (IV) is used to add random data to the encryption. The encryption of subsequent blocks depends on the data from previous blocks, ensuring chaining.
Encryption will take longer because a snapshot will be needed to generate the IV. This IV will be stored together with encrypted data, making encrypted QR codes denser and harder to transcribe.
"},{"location":"getting-started/settings/#hardware","title":"Hardware","text":"Customize the parameters available for your device and change printer settings.
"},{"location":"getting-started/settings/#encoder-maix-dock-only","title":"Encoder (Maix Dock only)","text":"If your device has a rotary encoder, you can change the debounce threshold in milliseconds. With lower values, faster movements and navigation will be allowed.
The caveat is low values can cause issues, such as double step and unexpected movements, especially with lower quality encoders. If this is the case increase the value to make navigation more stable.
"},{"location":"getting-started/settings/#display-maix-amigo-only","title":"Display (Maix Amigo only)","text":"Some Maix Amigo screens are different, here you can customize the BGR Colors, Flipped X Coordinates and Inverted Colors. For more info see FAQ
"},{"location":"getting-started/settings/#printer","title":"Printer","text":"You can set up a thermal printer or tell Krux to store a GRBL CNC instructions file on a SD card to machine QR codes
"},{"location":"getting-started/settings/#cnc","title":"CNC","text":"Define several machining parameters according to the desired size, material you'll use, and your CNC characteristics and capabilities.
"},{"location":"getting-started/settings/#thermal","title":"Thermal","text":"Printers can come with different baudrates from the manufacturer. By default, Krux assumes the connected printer will have a baudrate of 9600
. If yours is different, you can change it here.
Also setup the TX Pin you'll use (e.g. 35 for M5stickV and 7 for Maix Amigo) and tweak other parameters according to your printer recommendations. For most printers you will only need to connect 2 cables, the device TX to the printer RX and ground. Consult the part list page for supported printers.
"},{"location":"getting-started/settings/#driver","title":"Driver","text":"Here you choose between Thermal, CNC or none (default). Leave this setting to \"none\" if you won't use a printer and don't want to be bothered by print prompts.
"},{"location":"getting-started/settings/#touchscreen-maix-amigo-and-yahboom-only","title":"Touchscreen (Maix Amigo and Yahboom only)","text":"If your device has touchscreen you can change the touch detection threshold. If it is being too sensitive or detecting false or ghost touches, you should increase the threshold value, making it less sensitive. The other way is also valid, reduce the threshold to make the screen more sensitive to touches.
"},{"location":"getting-started/settings/#language-locale","title":"Language - Locale","text":"Here you can change Krux to your desired language.
"},{"location":"getting-started/settings/#persist","title":"Persist","text":"Choose between flash (device's internal memory) or SD card for the place where your settings will be stored.
"},{"location":"getting-started/settings/#appearance","title":"Appearance","text":"Configure screensaver time and change Krux to your desired theme.
"},{"location":"getting-started/settings/#screensaver-time","title":"Screensaver time","text":"Set how long to wait idle before the screensaver appears. Enter 0 to disable the screensaver.
"},{"location":"getting-started/settings/#theme","title":"Theme","text":"Choose your color theme according to your preference. Some themes may be more suitable for some devices, coordinator cameras and environments. As an example, it may be easier to scan QR codes from Krux devices using light theme in brighter environments.
"},{"location":"getting-started/settings/#factory-settings","title":"Factory Settings","text":"
Restore device to factory settings and reboot.
"},{"location":"getting-started/features/QR-transcript-tools/","title":"Transcribing QR Codes","text":"When you export a mnemonic, encrypted mnemonic or a generic text QR code, alternative visualization modes will be available. To change modes swipe sideways, or press Page
buttons if the device doesn't have touchscreen. Find transcribe templates here.
This mode is optimized for scanning, the raw QR code will be displayed
"},{"location":"getting-started/features/QR-transcript-tools/#lines-mode","title":"Lines Mode","text":"If you are good at transcribing things like handwritten text, with this mode one QR code line will be highlighted at a time. Press Enter
to highlight the next line.
QR codes will be split into regions, of 5x5 or 7x7 \"blocks\". One QR code region will be shown at a time. Press Enter
to display the next region.
QR codes will be split into regions, of 5x5 or 7x7 \"blocks\". One QR code region will be highlighted at a time. Press Enter
to highlight the next region.
Grids will be added to a standard QR code. In a dark room, if you place a sheet of paper over the device's screen, you'll notice QR code will be visible and it will be possible to copy it directly from above. Be careful to don't damage your screen with pen and markers, use an insulating plastic tape or film to protect the device if you use this method.
"},{"location":"getting-started/features/encrypted-mnemonics/","title":"Encrypted Mnemonics","text":""},{"location":"getting-started/features/encrypted-mnemonics/#introduction","title":"Introduction","text":"There are many possible security layers one could add to protect a wallet\u2019s private key. Adding a BIP-39 passphrase to the mnemonic is the most common method. Encrypting a BIP-39 mnemonic has a similar use case as the BIP-39 passphrase, but the user experience may differ depending on the implementation. The main difference between BIP-39 passphrases and Krux\u2019s encrypted mnemonic implementation is that when users type the wrong key, encrypted mnemonics will return an error instead of loading a different wallet, as BIP-39 passphrases do. This difference may be desired or not. The implementation also has the convenience of storing a mnemonic ID together with the stored or QR code encrypted mnemonics. Mnemonic encryption, with its own key, can be used together with BIP-39 passphrase as an extra security layer.
We use standard AES encryption modes ECB and CBC:
"},{"location":"getting-started/features/encrypted-mnemonics/#aes-ecb","title":"AES-ECB","text":"ECB (Electronic Codebook) is a simpler method where encryption data blocks are encrypted individually. This mode is faster and simpler to encrypt, resulting in QR codes with lower density and easier to transcribe. It is generally considered less secure than CBC because it does not provide data chaining, meaning identical plaintext blocks will produce identical ciphertext blocks, making it vulnerable to pattern analysis. However, in Krux's implementation, only one or two binary data blocks are encrypted, so there will be no patterns, and the lack of chaining is not as relevant as it would be for larger files, plain text, or media.
"},{"location":"getting-started/features/encrypted-mnemonics/#aes-cbc","title":"AES-CBC","text":"CBC (Cipher-block Chaining) is considered more secure. In the first data block, an initialization vector (IV) is used to add random data to the encryption. The encryption of subsequent blocks depends on the data from previous blocks, characterizing chaining. The tradeoff is that the encryption process will take longer because a snapshot will be needed to generate the IV. This IV will be stored together with encrypted data, making encrypted QR codes denser and harder to transcribe.
"},{"location":"getting-started/features/encrypted-mnemonics/#cbc-encryption-iv","title":"CBC Encryption IV","text":"The Initial Vector (IV) will be generated from a snapshot taken with the camera. The IV is a fixed-size input value used in the first block of the encryption process. It adds randomness to the encryption, ensuring that data encrypted with the same key will produce different ciphertexts each time. The IV is not secret and will be transmitted along with the ciphertext. However, like any nonce, it should not be reused to maintain security.
"},{"location":"getting-started/features/encrypted-mnemonics/#pbkdf2-iterations","title":"PBKDF2 Iterations","text":"When you enter the encryption key, it is not directly used to encrypt your data. In order to protect against brute force attacks, the key is derived multiple times using hashing functions. PBKDF2 (Password-Based Key Derivation Function) iterations refer to the number of derivations that will be performed over your key prior to encrypting/decrypting your mnemonic.
"},{"location":"getting-started/features/encrypted-mnemonics/#encrypted-qr-codes-data-and-parsing","title":"Encrypted QR Codes Data and Parsing","text":"In search of efficiency and smaller QR codes, all data is converted to bytes and organized like a Bitcoin transaction, with variable and fixed length fields. The following data is present on the QR code:
ID length (1) ID (2) Version (3) Key Derivations (4) IV (5) Encrypted Mnemonic (6) Validation Block (7) 1 Byte Variable 1 Byte 3 Bytes 16 Bytes (optional) 16 Bytes (12 words) 32 Bytes (24 words) 16 BytesStorage of encrypted mnemonics on the device or SD cards are meant for convenience only and should not be considered a form of backup. Always make a physical backup of your keys that is independent from electronic devices and test recovering your wallet from this backup before you send funds to it.
Remember that the stored encrypted mnemonic is protected by the key you defined to encrypt it. If the defined key is weak, your encrypted mnemonic will not be protected. If you have stored a mnemonic with funds in the device's internal flash memory using a weak key, the best way to undo this is to wipe the device.
"},{"location":"getting-started/features/printing/","title":"Printing","text":"Krux has the ability to print all QR codes it generates, including mnemonic, xpub, wallet backup, and signed PSBT, via a locally-connected thermal printer over its serial port. Consult the part list page for supported printers.
Once connected and powered on, all screens that display a QR code will begin showing a follow-up screen asking if you want to Print to QR?
.
There are many ways you can use this functionality, including:
Since printed thermal paper fades quickly, you can also print your backups on sticker thermal paper to use as templates for punching into more resilient materials like steel.
We also have plans to add support for other kinds of QR \"printers\" in the future, including CNC machines. In this case, gcode will be generated that can be sent directly to a GRBL controller to cut your QRs out of wood or metal!
Just be careful what you do with the printed codes, since most smartphones can now quickly and easily read QR codes. Treat your QR mnemonic the same way you would treat a plaintext copy of it.
"},{"location":"getting-started/features/sd-card-update/","title":"SD Card Updates","text":""},{"location":"getting-started/features/sd-card-update/#upgrade-via-microsd-card","title":"Upgrade via microSD card","text":"Once you've installed the initial firmware on your device via USB, you can either continue updating the device by flashing via USB or you can perform upgrades via microSD card to keep the device airgapped.
To perform an upgrade, simply copy the official release firmware.bin
and firmware.bin.sig
files to the root of a FAT-32 / MBR formatted microSD card, insert the card into your device, and reboot the device. If it detects the new firmware file and is able to verify the signature, you will be prompted to install it.
Once installation is complete, eject the microSD card and delete the firmware files before reinserting and rebooting. Otherwise you will be prompted to install it again.
We cannot guarantee that a microSD card is compatible and will work in your device; you'll need to test it on the device to be sure, read the FAQ for more info. Only official releases are signed and can be installed via microSD card.
"},{"location":"getting-started/features/tools/","title":"Tools","text":"Here are some useful tools that are available as soon as Krux starts! These are offered as a complement to managing your device and wallets.
"},{"location":"getting-started/features/tools/#check-sd-card","title":"Check SD Card","text":"
You can check if a SD card can be detected and read by your device and explore its content.
"},{"location":"getting-started/features/tools/#print-test-qr","title":"Print Test QR","text":"Quickly print a test QR code to check and optimize your printer setup.
"},{"location":"getting-started/features/tools/#create-qr-code","title":"Create QR Code","text":"Enter a text input to create, print or transcript a QR code that can be later used as an encryption key or as a passphrase.
"},{"location":"getting-started/features/tools/#remove-mnemonic","title":"Remove Mnemonic","text":"This option allows you to remove any stored encrypted mnemonic from the device's internal memory or an SD card. For more information, see Krux Encrypted Mnemonics.
When mnemonics are removed from the device's flash memory, Krux will no longer be able to access them. However, as with most operating systems, the data may still be recoverable using specialized tools. If you stored any important keys with a weak encryption key, it is recommended to use the \"Wipe Device\" feature below to ensure that the data is irrecoverable.
When mnemonics are removed from an SD card, Krux will overwrite the region where the encrypted mnemonic was stored with empty data. This makes it more secure to delete mnemonics from SD cards using Krux rather than a PC or another device. However, Krux does not have a \"Wipe\" feature for SD cards; you can find this feature in third-party applications.
"},{"location":"getting-started/features/tools/#wipe-device","title":"Wipe Device","text":"This option permanently removes all stored encrypted mnemonics and settings from the device's internal flash memory. It ensures that the data is irrecoverable, making it an adequate measure to take if any important mnemonics were stored with a weak encryption key.
"},{"location":"getting-started/installing/from-gui/","title":"From GUI application","text":"You can install Krux (both official or beta releases) onto your K210-based device using our official desktop application, KruxInstaller, available for Linux and Windows.
"},{"location":"getting-started/installing/from-gui/#download","title":"Download","text":"Download the installer by choosing the right asset for your operating system from our Github releases page:
Operational System File Windowskrux-installer_0.0.13.exe*
Debian-based: Ubuntu, PopOS, etc... krux-installer_0.0.13_amd64.deb*
RedHat-based: Fedora, etc... krux-installer-0.0.13.x86_64.rpm*
Any linux distribution krux-installer-0.0.13.AppImage*
Package for Archlinux on AUR. krux-installer-bin
"},{"location":"getting-started/installing/from-gui/#verify-files","title":"Verify files","text":"If you trust the project developers, you can skip to install:
\u26a0\ufe0f TIP: This step helps detect if any unauthorized modifications were made between github and your local computer.
"},{"location":"getting-started/installing/from-gui/#integrity","title":"Integrity","text":"System Commands Windows (powershell)# Compare this output:\n(Get-FileHash 'krux-installer_0.0.13.exe').Hash\n\n# With this:\nGet-Content 'krux-installer_0.0.13.exe.sha256.txt'\n
Debian-based sha256sum --check ./krux-installer_0.0.13_amd64.deb.sha256.txt\n
RedHat-based sha256txt --check ./krux-installer-0.0.13.x86_64.rpm.sha256.txt\n
Any Linux distribution sha256sum --check ./krux-installer-0.0.13.AppImage.sha256.txt\n
"},{"location":"getting-started/installing/from-gui/#authenticity","title":"Authenticity","text":"You will need have GPG installed. Most Linux already have this, but on Windows we recommend installing GPG4Win.
Once installed, run this command to retrieve the developer's key:
gpg --keyserver hkps://keys.openpgp.org --recv-keys B4281DDDFBBD207BFA4113138974C90299326322\n
Then you can verify:
System Command Windows (powershell)gpg --verify krux-installer_0.0.13.exe.sig
Debian-based gpg --verify ./krux-installer_0.0.13_amd64.deb.sig
RedHat-based gpg --verify ./krux-installer-0.0.13.x86_64.rpm.sig
Any Linux distribution gpg --verify ./krux-installer-0.0.13.AppImage.sig
\u26a0\ufe0f TIP: If the verification was successful, you may get a message similar to: Good signature from \"qlrddev <qlrddev@gmail.com>\"
Each system require different steps to install:
System Steps Windowskrux-installer_0.0.13.exe
is a NSIS installer;.exe
file the system will ask you to trust the application;sudo dpkg -i krux-installer_0.0.13_amd64.deb
;sudo apt-get install -f krux-installer_0.0.13_amd64.deb
.sudo dnf install krux-installer-0.0.13.x86_64.rpm
;sudo yum localinstall krux-installer-0.0.13.x86_64.rpm
.krux-installer-0.0.13.AppImage
where you want;chmod +x krux-installer-0.0.13.AppImage
;./krux-installer-0.0.13.AppImage
.On Windows, you'll be faced with a blue window saying \"Windows protected your PC\". This occurs because we don't have a code signing certificate, Click on \"More info\" and allow the execution. Follow the installer's instructions to complete the installation.
\ud83d\udee1\ufe0f TIP: If you followed the steps presented in authenticity, you already have the assurance that the software is from a verified and genuine software publisher
"},{"location":"getting-started/installing/from-gui/#usage","title":"Usage","text":""},{"location":"getting-started/installing/from-gui/#main-menu","title":"Main Menu","text":"When executing the Krux Installer, you will be presented with a menu of two items:
"},{"location":"getting-started/installing/from-gui/#select-device","title":"Select Device","text":"First, select the device we want to flash. After that the menu will shown three items:
"},{"location":"getting-started/installing/from-gui/#select-version","title":"Select Version","text":"This option allows you to select the latest official version or the latest beta version on our github. If the connection works, you will see the following screen:
Version Name Advantages Disadvantages Officialselfcustody/krux/releases/tag/*
odudex/krux_binaries
Once you choose the device and version, it enables the \"flash with ktool\" button.
\u26a0\ufe0f TIP: You must connect and turn on your device before flashing. In Linux, you'll be prompted to type your password (sudo or admin). Do not disconnect the device until the process is complete!
When the flashing process completes, you should see the Krux logo:
If it doesn't, try turning your device off and on by holding down the power button for six seconds.
Congrats, you're now running Krux!
"},{"location":"getting-started/installing/from-gui/#wipe-device","title":"Wipe device","text":"This option erases ALL data from the device's flash memory. On Linux, it will prompt for your password before. Once the process starts, the screen will appear frozen. When it's done, you can scroll down and see all the events that occurred.
\u26a0\ufe0f TIP: It's useful when your device is not working or for security reasons. To use Krux again, you'll need to re-flash the firmware.
\u26a0\ufe0f TIP: Do not unplug or poweroff your device or computer. Wait until the process finishes.
"},{"location":"getting-started/installing/from-gui/#multilingual-support","title":"Multilingual support","text":"Prefer a different language? Krux has support for multiple languages. Once at the start screen, go to Settings
, followed by Locale
, and select the locale you wish to use.
Once you've installed the initial firmware on your device via USB, you can either continue updating the device by flashing or you can perform upgrades via microSD card to keep the device airgapped.
"},{"location":"getting-started/installing/from-pre-built-release/","title":"From pre-built official release","text":"This page explains how to install Krux from an official, pre-built release.
"},{"location":"getting-started/installing/from-pre-built-release/#download-the-latest-release","title":"Download the latest release","text":"Head over to the releases page and download the latest signed release.
"},{"location":"getting-started/installing/from-pre-built-release/#verify-the-files","title":"Verify the files","text":"Before installing the release, it's a good idea to check that:
krux-vX.Y.Z.zip
matches the hash in krux-vX.Y.Z.zip.sha256.txt
krux-vX.Y.Z.zip.sig
can be verified with the selfcustody.pem
public key found in the root of the krux repository.You can either do this manually or with the krux
shell script, which contains helper commands for this:
./krux sha256 krux-vX.Y.Z.zip\n./krux verify krux-vX.Y.Z.zip selfcustody.pem\n
Fun fact: Each Krux release is signed with Krux!
"},{"location":"getting-started/installing/from-pre-built-release/#flash-the-firmware-onto-the-device","title":"Flash the firmware onto the device","text":"Extract the latest version of Krux you downloaded and enter the folder:
unzip krux-vX.Y.Z.zip && cd krux-vX.Y.Z\n
Connect the device to your computer via USB (for Maix Amigo, make sure you\u2019re using bottom port), power it on, and run the following, replacing DEVICE
with either m5stickv
, amigo
, bit
or yahboom
(to yahboom you may need to manually specify the port):
./ktool -B goE -b 1500000 maixpy_DEVICE/kboot.kfpkg\n
For dock
the -B
parameter changes, so run:
./ktool -B dan -b 1500000 maixpy_dock/kboot.kfpkg\n
When the flashing process completes, you should see the Krux logo:
If it doesn't, try turning your device off and on by holding down the power button for six seconds.
Congrats, you're now running Krux!
"},{"location":"getting-started/installing/from-pre-built-release/#a-note-about-the-maix-amigo","title":"A note about the Maix Amigo","text":"Some Amigo screens have inverted X coordinates, others display colors differently. For more info see FAQ
"},{"location":"getting-started/installing/from-pre-built-release/#troubleshooting","title":"Troubleshooting","text":"If ktool
fails to run, you may need to give it executable permissions with chmod +x ./ktool
, or you might need to use \"sudo\" if your user don't have access to serial port. In Windows or Mac you may need to explicitly allow the tool to run by adding an exception for it.
If the flashing process fails midway through, check the connection, restart the device, and try the command again.
Two serial ports are created when Amigo
and Bit
are connected to a PC. Sometimes Ktool will pick the wrong and flash will fail. Manually specify the serial port to overcome this issue using -p
argument:
./ktool-linux -B goE -b 1500000 maixpy_amigo/kboot.kfpkg -p /dev/ttyUSB1\n
Check por names of devices manager on Windows (e.g. COM1, COM9), or list the ports on linux
ls /dev/ttyUSB*\n
List ports on Mac
ls /dev/cu.usbserial*\n
Different OS versions may have different port names, and the absence of ports may indicate a connection, driver or hardware related issue."},{"location":"getting-started/installing/from-pre-built-release/#multilingual-support","title":"Multilingual support","text":"Prefer a different language? Krux has support for multiple languages. Once at the start screen, go to Settings
, followed by Locale
, and select the locale you wish to use.
Once you've installed the initial firmware on your device via USB, you can either continue updating the device by flashing or you can perform upgrades via microSD card to keep the device airgapped.
"},{"location":"getting-started/installing/from-source/","title":"From source","text":"This page explains how to install Krux from source. You can check these instructions in our README too.
"},{"location":"getting-started/installing/from-source/#software","title":"Software","text":"You will need a computer with git
and vagrant
installed.
In a terminal, run the following:
git clone --recurse-submodules https://github.com/selfcustody/krux\n
This will pull down the Krux source code as well as the code for all its dependencies and put them inside a new krux
folder. Note: When you wish to pull down updates to this repo, you can run the following inside the krux
folder:
git pull origin main && git submodule update --init --recursive\n
"},{"location":"getting-started/installing/from-source/#spin-up-a-virtual-machine","title":"Spin up a virtual machine","text":"After you have installed Vagrant, run the following inside the krux
folder to spin up a new VM:
vagrant up\n
"},{"location":"getting-started/installing/from-source/#build-the-firmware","title":"Build the firmware","text":""},{"location":"getting-started/installing/from-source/#prerequisite-for-upgrading-via-microsd","title":"Prerequisite for upgrading via microSD","text":"If you wish to perform airgapped upgrades via microSD card, you will need to have a private and public key pair to sign your builds and verify the signatures.
You can use an existing Krux installation and mnemonic to sign your builds with, or you can generate a keypair and sign from the openssl
CLI. Commands have been added to the krux
shell script to make this easier.
In either case, you will need to update the SIGNER_PUBKEY
field in src/krux/metadata.py
to store your public key so that Krux can verify future builds before installing.
To generate a keypair, run:
vagrant ssh -c 'cd /vagrant; ./krux generate-keypair'\nvagrant ssh -c 'cd /vagrant; ./krux pem-to-pubkey pubkey.pem'\n
The first command will create privkey.pem
and pubkey.pem
files you can use with openssl, and the second command will output your public key in the form expected by Krux.
Once you've updated the SIGNER_PUBKEY
with this value, you can proceed with the regular build process.
Run the following, replacing DEVICE
with either m5stickv
, amigo
, dock
, bit
or yahboom
:
vagrant ssh -c 'cd /vagrant; ./krux build maixpy_DEVICE'\n
This will take around an hour or so to complete the first time. Subsequent builds should take only a few minutes.
If all goes well, you should see a new build
folder containing firmware.bin
and kboot.kfpkg
files when the build completes.
If you build from the main
branch of the source code, you should be able to reproduce the build process used to generate the last release binaries and obtain exact copies of the firmware.bin
and kboot.kfpkg
files, with matching hash checksums.
To extract and verify the firmware.bin contained in kboot.kfpkg, you can use the following command:
unzip kboot.kfpkg -d ./kboot/
Connect the device to your computer via USB (for Maix Amigo, make sure you\u2019re using bottom port), power it on, and run the following, replacing DEVICE
with either m5stickv
, amigo
, dock
, bit
or yahboom
:
vagrant ssh -c 'cd /vagrant; ./krux flash maixpy_DEVICE'\n
If the flashing fails try one of the following common solutions: vagrant reload
prior to flashing in order for the newly-inserted USB device to be detected and passed through to the VM on startup.Failed to find device via USB. Is it connected and powered on?
, make sure that your user has been added to the vboxusers
group. On Mac or Linux, run the following command: sudo usermod -a -G vboxusers yourusername\n
When the flashing process completes, you should see the Krux logo:
If it doesn't, try turning your device off and on by holding down the power button for six seconds.
Congrats, you're now running Krux!
"},{"location":"getting-started/installing/from-source/#a-note-about-the-maix-amigo","title":"A note about the Maix Amigo","text":"Some Amigo screens have inverted X coordinates, others display colors differently. For more info see FAQ
"},{"location":"getting-started/installing/from-source/#signing-the-firmware","title":"Signing the firmware","text":"You can sign the firmware using one of the two methods listed below:
"},{"location":"getting-started/installing/from-source/#method-1-signing-from-krux","title":"Method 1: Signing from Krux","text":"First, calculate the SHA256 hash of the new firmware by running:
vagrant ssh -c 'cd /vagrant; ./krux sha256 build/firmware.bin'\n
Copy this hex string and turn it into a QR code using whichever QR code generator you'd like.
In Krux, enter the mnemonic of your private key that will be used for signing, and go to Sign > Message. Scan the QR code you generated, and you will be asked if you wish to sign the hash. Proceed, and you will be presented with a base64-encoded string containing the signature, as text and as a QR code.
Take this string and create a signature file by running:
vagrant ssh -c 'cd /vagrant; ./krux b64decode \"signature-in-base64\" > build/firmware.bin.sig'\n
This will generate a firmware.bin.sig
file containing a signature of the firmware's SHA256 hash.
With the keypair you generated before, you can now run:
vagrant ssh -c 'cd /vagrant; ./krux sign build/firmware.bin privkey.pem'\n
This will generate a firmware.bin.sig
file containing a signature of the firmware's SHA256 hash.
This page explains how to install Krux from a test (beta), pre-built release.
"},{"location":"getting-started/installing/from-test-release/#warning","title":"Warning","text":"Keep in mind that these are unsigned binaries.
"},{"location":"getting-started/installing/from-test-release/#download","title":"Download","text":"Download experimental compiled firmware or the Android app apk
: Krux binaries
Krux Android app is intended for learning about Krux and Bitcoin airgapped transactions. Vulnerabilities inherent to Android phones such as the OS, other apps and wireless / CDMA / GSM / Bluetooth connectivity make using any phone insecure. Krux app should NOT be used to manage savings or important keys and mnemonics. For that, a dedicated device is recommended.
"},{"location":"getting-started/installing/from-test-release/#m5stickv","title":"M5StickV","text":""},{"location":"getting-started/installing/from-test-release/#linux","title":"Linux","text":"To Flash M5stickV run:
./ktool-linux -B goE -b 1500000 maixpy_m5stickv/kboot.kfpkg\n
"},{"location":"getting-started/installing/from-test-release/#windows","title":"Windows","text":"Replace './ktool-linux' for 'ktool-win.exe' and / for \\ in commands:
./ktool-win.exe -B goE -b 1500000 maixpy_m5stickv\\kboot.kfpkg\n
"},{"location":"getting-started/installing/from-test-release/#sipeed-maix-amigo","title":"Sipeed Maix Amigo","text":""},{"location":"getting-started/installing/from-test-release/#linux_1","title":"Linux","text":"To Flash Maix Amigo run:
./ktool-linux -B goE -b 1500000 maixpy_amigo/kboot.kfpkg\n
"},{"location":"getting-started/installing/from-test-release/#windows_1","title":"Windows","text":"Replace './ktool-linux' for 'ktool-win.exe' and / for \\ in commands:
./ktool-win.exe -B goE -b 1500000 maixpy_amigo\\kboot.kfpkg\n
"},{"location":"getting-started/installing/from-test-release/#a-note-about-the-maix-amigo","title":"A note about the Maix Amigo","text":"Some Amigo screens have inverted X coordinates, others display colors differently. For more info see FAQ
"},{"location":"getting-started/installing/from-test-release/#sipeed-maix-bit","title":"Sipeed Maix Bit","text":""},{"location":"getting-started/installing/from-test-release/#linux_2","title":"Linux","text":"To Flash Maix Bit run:
./ktool-linux -B goE -b 1500000 maixpy_bit/kboot.kfpkg\n
"},{"location":"getting-started/installing/from-test-release/#windows_2","title":"Windows","text":"Replace './ktool-linux' for 'ktool-win.exe' and / for \\ in commands:
./ktool-win.exe -B goE -b 1500000 maixpy_bit\\kboot.kfpkg\n
"},{"location":"getting-started/installing/from-test-release/#sipeed-maix-dock","title":"Sipeed Maix Dock","text":""},{"location":"getting-started/installing/from-test-release/#linux_3","title":"Linux","text":"To Flash Maix Dock run:
./ktool-linux -B dan -b 1500000 maixpy_dock/kboot.kfpkg\n
"},{"location":"getting-started/installing/from-test-release/#windows_3","title":"Windows","text":"Replace './ktool-linux' for 'ktool-win.exe' and / for \\ in commands:
./ktool-win.exe -B dan -b 1500000 maixpy_dock\\kboot.kfpkg\n
"},{"location":"getting-started/installing/from-test-release/#aimotion-yahboom-k210-module","title":"Aimotion Yahboom k210 module","text":""},{"location":"getting-started/installing/from-test-release/#linux_4","title":"Linux","text":"To Flash Yahboom k210 module you'll have to manually specify the port, on this example /dev/ttyUSB0
:
./ktool-linux -B goE -b 1500000 -p /dev/ttyUSB0 yahboom/kboot.kfpkg\n
"},{"location":"getting-started/installing/","title":"Installing","text":"You can install Krux in four different ways:
Please, check the part list for the compatible devices and requirements.
After the first firmware install, you can use a microSD card if you wish to perform further airgapped updates.
"},{"location":"getting-started/usage/generating-a-mnemonic/","title":"Generating a Mnemonic","text":"Krux has support for creating 12 and 24-word mnemonic seed phrases. Since true entropy is difficult to produce, especially with an embedded device, we recommend to outsource entropy generation using dice rolls, but it is also possible to use camera as a source of entropy to quickly create a mnemonic. At the start screen, once you select New Mnemonic
, you will be taken to a second menu where you can choose to create a mnemonic via camera, via rolls of a D6 (standard six-sided die) or D20 (20-sided die).
"},{"location":"getting-started/usage/generating-a-mnemonic/#camera","title":"Camera","text":"
(Experimental!) Choose between 12 or 24 words, then take a random picture and Krux will generate a mnemonic from the hash of the image bytes.
"},{"location":"getting-started/usage/generating-a-mnemonic/#image-entropy-quality-estimation","title":"Image Entropy Quality Estimation","text":"
During image capture, entropy quality estimation is displayed to assist you in obtaining a high-quality image source for your key. After a snapshot is taken, Shannon's entropy and pixel deviation indices are presented. Minimum thresholds are established to prevent the use of poor-quality images with low entropy for key generation. It's important to note that these values serve as indicators or estimations of entropy quality, but they are not absolute entropy values in a cryptographic context.
"},{"location":"getting-started/usage/generating-a-mnemonic/#dice-rolls","title":"Dice Rolls","text":""},{"location":"getting-started/usage/generating-a-mnemonic/#via-d6","title":"Via D6","text":"Choose between 12 or 24 words.
The entropy in a single roll of a D6 is 2.585 bits ( log2(6) ); therefore a minimum of a 50 rolls will be required for 128 bits of entropy, enough to generate a 12-word mnemonic. For 24 words, or an entropy of 256 bits, a minimum of 99 rolls will be required.
"},{"location":"getting-started/usage/generating-a-mnemonic/#via-d20","title":"Via D20","text":"
Since a D20 has more possible outcomes, the entropy is increased per roll to 4.322 bits ( log2(20) ). This means that only 30 rolls are necessary to create a 12-word mnemonic and 60 rolls for a 24-word mnemonic.
"},{"location":"getting-started/usage/generating-a-mnemonic/#dice-rolls-entropy-quality-estimation","title":"Dice Rolls Entropy Quality Estimation","text":"
When you input your dice rolls, you'll see two progress bars filling up. The top progress bar shows how many rolls you've entered compared to the minimum number needed. The bottom progress bar shows the real-time calculated Shannon's entropy compared to the required minimum (128 bits for 12 words and 256 bits for 24 words). When the Shannon's entropy estimation reaches the recommended level, the progress bar will be full, and its frame will change color. If you've met the minimum number of rolls but the entropy estimation is still below the recommended level, a warning will appear, suggesting you add more rolls to increase entropy. Note: Similar to image entropy quality estimation, dice rolls Shannon's entropy serves as an indicator and should not be considered an absolute measure of cryptographic entropy.
"},{"location":"getting-started/usage/generating-a-mnemonic/#stats-for-nerds","title":"Stats for Nerds","text":"A low Shannon's entropy value might suggest that your dice are biased or that there's a problem with how you're gathering entropy. To investigate further, examine the \"Stats for Nerds\" section to check the distribution of your rolls and look for any abnormalities.
"},{"location":"getting-started/usage/generating-a-mnemonic/#how-it-works","title":"How it works","text":"
For dice rolls, Krux keeps track of every roll you enter and displays the cumulative string of outcomes after each roll.
When you have entered your final roll, Krux will hash this string using SHA256 and output the resulting hash to the screen so that you can verify it for yourself.
In the case a camera snapshot is used as source, image bytes, which contain pixels data in RGB565 format, will be hashed just like it is done with the dice rolls string.
Krux then takes this hash, runs unhexlify
on it to encode it as bytes, and deterministically converts it into a mnemonic according to the BIP-39 Reference Implementation.
Note: For 12-word mnemonics, only the first half of the SHA256 hash is used (128 bits), while 24-word mnemonics use the full hash (256 bits).
"},{"location":"getting-started/usage/generating-a-mnemonic/#how-to-verify","title":"How to verify","text":"Don't trust, verify. We encourage you not to trust any claim you cannot verify yourself. Therefore, there are wallets that use compatible algorithms to calculate the entropy derived from dice rolls. You can use the SeedSigner or Coldcard hardware wallets, or even the Bitcoiner Guide website, they share the same logic that Krux uses and will give the same mnemonic for the dice roll method.
"},{"location":"getting-started/usage/generating-a-mnemonic/#alternatives","title":"Alternatives","text":"You can use any other offline airgapped devices to generate your mnemonic. If you have an old Android smartphone that is offline (in airplane mode [no active CDMA or GSM chip], no Wifi connection, no Bluetooth and localization service turned off), you can use the Krux app for Android. If you want to use a regular PC, a common strategy is to boot the PC using Tails from a USB stick, without connecting the device to the internet, and then you can run Krux using our simulator, use a copy of the the Bitcoiner Guide website or even Ian Coleman's BIP-39 Tool. It's worth noting that both generate a QR code that Krux can read via the QR input method mentioned on the next page (Loading a Mnemonic).
"},{"location":"getting-started/usage/loading-a-mnemonic/","title":"Loading a Mnemonic","text":"Once you have either a 12- or 24-word mnemonic, choose Load Mnemonic
on Krux's start menu, and you will be presented with several input methods:
"},{"location":"getting-started/usage/loading-a-mnemonic/#input-methods","title":"Input Methods","text":""},{"location":"getting-started/usage/loading-a-mnemonic/#via-camera","title":"Via Camera","text":"
You can choose to use the camera to scan a QR code
or Tiny Seed
metal plate backup.
It's unpleasant having to manually enter 12 or 24 words every time you want to use Krux. To remedy this you can instead use the device's camera to read a QR code containing the words. Krux will decode QR codes of four types:
After opening your wallet via one of the manual methods you can use Krux to create QR codes of all types above, transcript them to paper or metal using the transcription helpers or attach a thermal printer to your Krux and print out the mnemonic. Check out the Printing section for more information. You can also use an offline QR code generator for this (ideally on an airgapped device).
"},{"location":"getting-started/usage/loading-a-mnemonic/#tiny-seed","title":"Tiny Seed","text":"Tiny Seed is a compact metal plate mnemonic backup method. Krux devices have machine vision capabilities that allow users to scan these metal plates and instantly load mnemonics engraved on them. To properly scan them place the Tiny Seed over a black background and paint the punched bits black to increase contrast. You can also scan the thermally printed version, or a filled template. Find templates to scan or print here.
"},{"location":"getting-started/usage/loading-a-mnemonic/#via-manual-input","title":"Via Manual Input","text":"Manually type Words
, Word Numbers
, Tiny Seed
(toggle the bits or punches) or Stackbit
(model 1248 metal plate backup).
Enter each word of your BIP-39 mnemonic one at a time. Krux will disable impossible-to-reach letters as you type and will attempt to autocomplete your words to speed up the process.
On your 12th or 24th word, you can leave it blank to have Krux generate the final checksum word of your mnemonic for you. This is useful when you choose a manual method to generate your mnemonic and want the final BIP-39 checksum word to be valid.
"},{"location":"getting-started/usage/loading-a-mnemonic/#word-numbers","title":"Word Numbers","text":""},{"location":"getting-started/usage/loading-a-mnemonic/#decimal","title":"Decimal","text":"Enter each word of your BIP-39 mnemonic as a number from 1 to 2048 one at a time. You can use this list for reference.
"},{"location":"getting-started/usage/loading-a-mnemonic/#hexadecimal-and-octal","title":"Hexadecimal and Octal","text":"You can also enter your BIP-39 mnemonic word's numbers (1-2048) in hexadecimal format, with values ranging from 0x1 to 0x800, or in octal format, with values ranging from 01 to 04000. This is useful with some metal plate backups that uses those formats.
"},{"location":"getting-started/usage/loading-a-mnemonic/#final-checksum-word","title":"Final checksum word","text":"On your 12th or 24th word, you can leave it blank to have Krux generate the final checksum word of your mnemonic for you. This is useful when you choose a manual method to generate your mnemonic and want the final BIP-39 checksum word to be valid.
"},{"location":"getting-started/usage/loading-a-mnemonic/#tiny-seed-bits","title":"Tiny Seed (Bits)","text":"Enter the BIP-39 mnemonic word's numbers (1-2048) in binary format, toggling necessary bits to recreate each of the word's respective number. The last word will have checksum bits dynamically toggled while you fill the bits.
"},{"location":"getting-started/usage/loading-a-mnemonic/#stackbit-1248","title":"Stackbit 1248","text":"Enter the BIP-39 mnemonic word's numbers (1-2048) using the Stackbit 1248 metal plate backup method, where each of the four digits of the word's number is a sum of the numbers marked (punched) 1, 2, 4, or 8. For example, to enter the word \"pear\", number 1297, you must punch (1)(2)(1+8=9)(1+2+4=7).
"},{"location":"getting-started/usage/loading-a-mnemonic/#from-storage","title":"From Storage","text":"You can retrieve mnemonics previously stored on device's internal flash or external (SD card). All stored mnemonics are encrypted, to load them you'll have to enter the same key you used to encrypt them.
"},{"location":"getting-started/usage/loading-a-mnemonic/#wallet-loading-sequence","title":"Wallet loading sequence","text":""},{"location":"getting-started/usage/loading-a-mnemonic/#confirm-mnemonic-words","title":"Confirm Mnemonic Words","text":"Once you have entered your mnemonic, you will be presented with the full list of words to confirm.
"},{"location":"getting-started/usage/loading-a-mnemonic/#passphrase","title":"Passphrase","text":"After confirming the mnemonic words, you can optionally choose to type or scan a BIP-39 passphrase. You can create a QR code from your passphrase offline in Tools section.
"},{"location":"getting-started/usage/loading-a-mnemonic/#fingerprint","title":"Fingerprint","text":"The wallet's fingerprint, if you have it noted down, will help you make sure you entered the correct mnemonic and passphrase (optional) and will load the expected wallet.
"},{"location":"getting-started/usage/loading-a-mnemonic/#single-sig-or-multisig","title":"Single-sig or Multisig","text":"After loading your mnemonic and passphrase (optional), you will be asked if you want to use it as part of a Single-sig
or Multisig
wallet.
Your choice here will subtly change the generated xpub that is used to set up your device in your wallet coordinator software. You can learn more about the difference in the following guides for using single-sig and multisig wallets.
Now, onto the main menu...
"},{"location":"getting-started/usage/navigating-the-main-menu/","title":"Navigating the Main Menu","text":"After entering your mnemonic, and loading a wallet, you will find yourself on Krux's main menu. Below is a breakdown of the entries available:
"},{"location":"getting-started/usage/navigating-the-main-menu/#mnemonic","title":"Mnemonic","text":"
This will open a new submenu with the following options to backup your mnemonic. If you set a printer driver, it will also give the option to print the backup!
"},{"location":"getting-started/usage/navigating-the-main-menu/#words","title":"Words","text":"Display the mnemonic words as text so you can write them down.
"},{"location":"getting-started/usage/navigating-the-main-menu/#numbers","title":"Numbers","text":"Display the mnemonic word numbers in decimal, hex, or octal format.
"},{"location":"getting-started/usage/navigating-the-main-menu/#plaintext-qr","title":"Plaintext QR","text":"Generate a QR containing the mnemonic words as regular text, where words are separated by spaces.
"},{"location":"getting-started/usage/navigating-the-main-menu/#compact-seedqr","title":"Compact SeedQR","text":"A QR code is created from a binary representation of mnemonic words. Format created by SeedSigner backup-qr-compact
"},{"location":"getting-started/usage/navigating-the-main-menu/#seedqr","title":"SeedQR","text":"Words are converted to their BIP-39 numeric indexes, those numbers are then concatenated as a string and finally converted to a QR code. Format created by SeedSigner
"},{"location":"getting-started/usage/navigating-the-main-menu/#stackbit-1248","title":"Stackbit 1248","text":"This metal backup format represents the BIP-39 mnemonic word's numbers (1-2048). Each of the four digits is converted to a sum of 1, 2, 4 or 8. This option does not print even if a printer driver is set.
"},{"location":"getting-started/usage/navigating-the-main-menu/#tiny-seed","title":"Tiny Seed","text":"This metal backup format represents the BIP-39 mnemonic word's numbers (1-2048) in binary format on a metal plate, where the 1's are marked (punched) and the 0's are left intact.
"},{"location":"getting-started/usage/navigating-the-main-menu/#encrypt-mnemonic","title":"Encrypt Mnemonic","text":"This feature allows you to back up your mnemonic by encrypting it and storing it on the device's flash memory, an SD card, or in QR code format. You can customize the encryption method and parameters in the settings.
For convenience, you may choose to store the encrypted mnemonic on flash memory or an SD card, but it is advisable not to rely solely on these methods for backup. Flash storage can degrade over time and may be subject to permanent damage, resulting in the loss of stored information.
When using any of the encryption methods, you will be prompted to enter an encryption key. This key can be provided in text or QR code format. Additionally, you have the option to set a custom ID for easier management of your mnemonics. If a custom key is not specified, the device's current loaded wallet fingerprint will be used as the ID.
"},{"location":"getting-started/usage/navigating-the-main-menu/#store-on-flash","title":"Store on Flash","text":"This option stores the encrypted mnemonic in the device's flash memory. You can decrypt and load it later through the \"Load Mnemonic\" -> \"From Storage\" option.
"},{"location":"getting-started/usage/navigating-the-main-menu/#store-on-sd-card","title":"Store on SD Card","text":"If an SD card is available, this option stores the encrypted mnemonic on it. You can decrypt and load it later through the \"Load Mnemonic\" -> \"From Storage\" option.
"},{"location":"getting-started/usage/navigating-the-main-menu/#encrypted-qr-code","title":"Encrypted QR Code","text":"This option converts the encrypted mnemonic into a QR code. When you scan this QR code through \"Load Mnemonic\" -> \"Via Camera\" -> \"QR Code,\" you will be prompted to enter the decryption key to load the mnemonic stored in it.
Learn more about Krux Mnemonics Encryption
"},{"location":"getting-started/usage/navigating-the-main-menu/#extended-public-key","title":"Extended Public Key","text":"A menu will be presented with options to display your master extended public key (xPub) as text and as a QR code. Depending on whether a single-sig or multisig wallet was loaded, the options shown will be xPub, zPub, or ZPub. When displayed as text, the extended public key can be stored on an SD card if available. If you choose to export a QR code, you can not only scan it but also save it as an image on an SD card or print it if a thermal printer is attached.
All QR codes will contain key origin information in key expressions. If your coordinator cannot parse this information, it will not be capable of importing the wallet's fingerprint. As a result, Krux will not be able to sign transactions created by it unless you manually add the fingerprint so that it can be used to create Krux compatible PSBTs.
"},{"location":"getting-started/usage/navigating-the-main-menu/#wallet-descriptor","title":"Wallet Descriptor","text":"When you select this option for the first time, you will be prompted to load a wallet. The camera will activate, and you will need to scan a wallet backup QR code generated by your wallet coordinator software. If the scan is successful, a preview of the wallet will be displayed for confirmation. If you abort the scan, you can alternatively load the wallet descriptor from an SD card.
If you access this option again after having loaded your wallet, you will see the wallet's name, fingerprints and the abbreviated xPubs of all cosigners, along with a QR code containing the exact data that was initially loaded. If an SD card is inserted, you can save the descriptor to it. Additionally, if you have a thermal printer attached, you can print this QR code.
Please note that once a wallet is loaded, it cannot be changed. To load a different wallet, you will need to restart the device and re-enter your mnemonic.
"},{"location":"getting-started/usage/navigating-the-main-menu/#address","title":"Address","text":"Scan, verify, export or print your wallet addresses.
"},{"location":"getting-started/usage/navigating-the-main-menu/#scan-address","title":"Scan Address","text":"This option turns on the camera and allows you to scan in a QR code of a receive address. Upon scanning, it will render its own QR code of the address back to the display along with the (text) address below it. You could use this feature to scan the address of someone you want to send coins to and display the QR back to your wallet coordinator rather than copy-pasting an address.
If you have a thermal printer attached, you can also print this QR code.
After proceeding through this screen, you will be asked if you want to check that the address belongs to your wallet. If you confirm, it will exhaustively search through as many addresses derived from your wallet as you want in order to find a match.
This option exists as an extra security check to verify that the address your wallet coordinator has generated is authentic and belongs to your wallet.
"},{"location":"getting-started/usage/navigating-the-main-menu/#receive-addresses","title":"Receive Addresses","text":"List your wallet receiving addresses, you can browse to select an arbitrary address to show your QRCode and print if you want
"},{"location":"getting-started/usage/navigating-the-main-menu/#change-addresses","title":"Change Addresses","text":"List your wallet change addresses, you can browse to select an arbitrary address to show your QRCode and print if you want
"},{"location":"getting-started/usage/navigating-the-main-menu/#sign","title":"Sign","text":"Under Sign, you can choose to sign a PSBT or a message. You can load both PSBTs and messages scanning QR codes or loading from files on a SD card.
"},{"location":"getting-started/usage/navigating-the-main-menu/#psbt","title":"PSBT","text":"To sign a Bitcoin PSBT, you have the following options:
Upon loading the PSBT, you will be presented with a preview showing the amount of BTC being sent, the recipient's address, and the transaction fee. Amounts are displayed according to your locale and the International Bureau of Weights and Measures, while still adhering to the concept of the Satcomma standard format.
If you choose to proceed and sign the transaction, the signed PSBT can be exported in two ways:
If a thermal printer is attached to your device, you can also print the PSBT QR codes for record-keeping or further processing.
"},{"location":"getting-started/usage/navigating-the-main-menu/#message","title":"Message","text":"Similar to PSBTs, Krux can load, sign, and export signatures for messages. This feature allows you to attest not only to the ownership of the messages themselves but also to the ownership of Bitcoin addresses and the authorship of documents and files.
"},{"location":"getting-started/usage/navigating-the-main-menu/#standard-messages-and-files","title":"Standard Messages and Files","text":"You can scan or load a file from an SD card, the content can be plaintext or the SHA-256 hash of a message. Upon loading, you will be shown a preview of the message's SHA-256 hash for confirmation before signing.
If you confirm, a signature will be generated, and you will see a base64-encoded version of it. You can then choose to export it as a QR code or save it to an SD card. If a thermal printer is attached, you can also print the QR code.
Following this, you will see and be allowed to export your raw (master) public key in hexadecimal form, which can be used by others to verify your signature. If a thermal printer is attached, you can also print this QR code.
This feature is used to sign Krux releases, airgapped, using a Krux device.
"},{"location":"getting-started/usage/navigating-the-main-menu/#messages-at-address","title":"Messages at Address","text":"Coordinators like Sparrow and Specter offer the possibility to sign messages at a Bitcoin receive address, allowing you to attest ownership of that address. Krux will detect if the message is of this type and present a similar workflow for signing. The main difference is that the address will be displayed along with the raw message, and since the message is signed with a derived address instead of the master public key, Krux won't offer the option to export the raw public key after the signature.
"},{"location":"getting-started/usage/using-a-multisig-wallet/","title":"Using a Multisig Wallet","text":"This guide assumes you have already created a mnemonic for each cosigner that will be in your multisig wallet. If that is not the case, head over to the Generating a Mnemonic page and complete those steps first.
When entering your mnemonics into Krux, make sure to select Multisig
for all keys in your multisignature scheme. The choice of Single-sig
vs. Multisig
at this point will change the derivation path used to generate your master extended public key (xpub) which will affect how wallet software handles it.
Selecting Multisig
will derive an xpub using the derivation path m/48'/0'/0'/2'
on mainnet and m/48'/1'/0'/2'
on testnet, which indicates to wallet software that a Multisig Wallet script type should be used, specifically the Native Segwit script P2WSH
, or just wsh
.
Note: While not required, the load of the Wallet Descriptor
is strongly recommended to load your multisig wallet into Krux before signing a PSBT as it will allow the device to verify that the transaction it is signing has the correct list of cosigners as defined in the wallet. It is also useful if you wish to print a backup of the wallet or visually inspect the list of cosigners being output by your wallet coordinator.
In Specter Desktop, you will need to import your public key by adding a new device. Press the Add new device button on the left side of the app.
Krux is not listed as one of the available device types on the Add Device screen, so you will need to select the Other option.
You will be taken to the Upload Keys screen where you can choose to Scan QR code.
On your Krux, navigate to the Extended Public Key option under the main menu and show the first QR code to Specter Desktop.
It should import the xpub and display the Purpose as #0 Multisig Sig (Segwit).
Give the device a name and press Continue. You should see the new device in the devices list on the left side of the app.
Repeat this process for every key that will be in your multisig wallet.
Once all key devices have been added, you can make a wallet using them. Press the Add new wallet button on the left side of the app.
Choose to create a Multisignature wallet when it asks which type of wallet you want on the following screen.
Select the devices you just added and press Continue.
Give your wallet a name, make sure to select Segwit for the wallet type, and decide how many of your keys are required to sign a transaction, then press Create wallet.
Congrats, you just created a multisig wallet!
"},{"location":"getting-started/usage/using-a-multisig-wallet/#load-the-wallet-into-krux","title":"Load the wallet into Krux","text":"Load the wallet into Krux by going to the Settings page in Specter Desktop, then click the Export tab. There, press the Export button to display a QR code of your wallet.
In Krux, select the Wallet Descriptor menu item option and scan the QR code.
If it worked, Krux should display the wallet information that it loaded:
"},{"location":"getting-started/usage/using-a-multisig-wallet/#receive-coins","title":"Receive coins","text":"
The Receive screen should show your first receive address that you can send funds to.
"},{"location":"getting-started/usage/using-a-multisig-wallet/#send-coins","title":"Send coins","text":"Go to Send in Specter Desktop, fill in the recipient address, amount, and any extra information you wish to supply, and click Create unsigned transaction.
You will now see a screen listing the devices in your wallet. Select the device you want to sign the PSBT transaction with.
Specter Desktop will display an animated QR code of the PSBT that you can scan with Krux by going to Sign > PSBT in its main menu. After scanning, Krux should display info about the transaction for you to confirm before signing.
Once you have confirmed, Krux will begin animating a QR code of the signed transaction that you can scan into Specter Desktop.
In Specter Desktop, click Scan signed transaction and show it the QR. Each part of the QR code that is read will receive a ghost icon to indicate progress.
Once all parts of the QR code have been read, you should see a checkmark next to your device indicating its signature was added.
Repeat this process for the remaining keys in your wallet until you have a quorum of signatures.
After the final signature, a window will popup asking you to broadcast the transaction. Click Send transaction and your transaction should be broadcasted to the network!
Congratulations, you have learned how to send a transaction using Specter Desktop \ud83c\udf89
"},{"location":"getting-started/usage/using-a-multisig-wallet/#sparrow","title":"Sparrow","text":""},{"location":"getting-started/usage/using-a-multisig-wallet/#create-the-wallet_1","title":"Create the wallet","text":"In Sparrow, create a new wallet by going to File > New Wallet and give it a name.
On the wallet screen, make sure to select a Multi Signature policy type with the Native Segwit (P2WSH) script type. Here you can decide how many keys will be in your multisig and how many should be required to sign a transaction.
Now, you will need to import your public key. To do so, press the Airgapped Hardware Wallet button under Keystores section. On the screen that pops up, look for Krux option and click its Scan... button.
On your Krux device, navigate to the Extended Public Key option in the main menu and click on XPUB - QR Code and show it to Sparrow.
It should import the xpub and show a key tab under Keystores section:
Repeat this process for every key that will be in your multisig wallet.
Once all keys have been added, click the blue Apply button to create your wallet.
Congrats, you just created a multisig wallet!
"},{"location":"getting-started/usage/using-a-multisig-wallet/#load-the-wallet-output-descriptor-into-krux","title":"Load the wallet output descriptor into Krux","text":"Load the wallet output descriptor into Krux by going to the Settings screen of the wallet in Sparrow, then click the (QR code symbol) button at Script Policy section to the right of the Descriptor: to display a QR code that you can scan with Krux.
In Krux, select the Wallet menu item option and scan the QR code.
If it worked, Krux should display the wallet information that it loaded:
"},{"location":"getting-started/usage/using-a-multisig-wallet/#receive-coins_1","title":"Receive coins","text":"
Navigate to the Receive screen where you should see your first receive address that you can send funds to.
"},{"location":"getting-started/usage/using-a-multisig-wallet/#send-coins_1","title":"Send coins","text":"Go to the Send screen, fill in the recipient address, amount, and any extra information you wish to supply, and click the blue Create Transaction button.
On the next screen, make sure that the Signing Wallet is the one you created and that the Sighash is set to All. Click the blue Finalize Transaction for Signing button.
On the next screen, click Show QR to make Sparrow display an animated QR code of the PSBT that you can scan with Krux by going to Sign > PSBT > Load from camera in its main menu.
After scanning, Krux should display info about the transaction for you to confirm before signing.
Once you have confirmed, Krux will begin animating a QR code of the signed transaction that you can scan into Sparrow.
In Sparrow, click Scan QR and show it the QR. A progress bar will indicate how many parts of the QR have been read.
Once all parts of the QR code have been read, you should see the signature bar partially fill indicating the signature was added.
Repeat this process for the remaining keys in your wallet until you have a quorum of signatures.
After the final signature, the bar will fill and two new buttons appear. Click the blue Broadcast Transaction button and your transaction should be broadcasted to the network!
Congratulations, you have learned how to send a transaction using Sparrow \ud83c\udf89
"},{"location":"getting-started/usage/using-a-multisig-wallet/#bluewallet","title":"BlueWallet","text":""},{"location":"getting-started/usage/using-a-multisig-wallet/#create-the-wallet_2","title":"Create the wallet","text":"In BlueWallet, create a new wallet by either pressing the + button or scrolling to the right until you see the Add now button.
On the screen that pops up, add a name for your wallet, tap on Vault, and tap Create to begin creating a multisig wallet.
On the following screen, you can proceed with the defaults or adjust the number of cosigners (default is 2-of-3) as needed by going into the Vault Settings. Make sure to leave the script type as p2wsh
.
Continue and you will be taken to a screen where you can import your keys.
Tap Import under the first Vault Key.
Tap again on Scan or import a file to begin scanning a QR code.
On your Krux, navigate to the Extended Public Key option under the main menu and show the first QR code to BlueWallet.
You should see a green checkmark next to the key if successful.
Repeat this process for every key that will be in your multisig wallet.
Once all keys have been added, tap Create.
From here, you can send or receive.
Congrats, you just created a multisig wallet!
"},{"location":"getting-started/usage/using-a-multisig-wallet/#load-the-wallet-into-krux_1","title":"Load the wallet into Krux","text":"Load the wallet into Krux by tapping the ellipsis in the top-right to see the wallet settings.
From here, tap Export Coordination Setup in order to display a QR code of your wallet.
In Krux, select the Wallet Descriptor menu item option and scan the QR code.
If it worked, Krux should display the wallet information that it loaded:
"},{"location":"getting-started/usage/using-a-multisig-wallet/#receive-coins_2","title":"Receive coins","text":"
Navigate to the Receive screen where you should see your first receive address that you can send funds to.
"},{"location":"getting-started/usage/using-a-multisig-wallet/#send-coins_2","title":"Send coins","text":"Go to the Send screen, fill in the recipient address, amount, and any extra information you wish to supply, and tap Next.
You should see an animated QR code of the PSBT that you can scan with Krux by going to Sign > PSBT in its main menu.
After scanning, Krux should display info about the transaction for you to confirm before signing.
Once you have confirmed, Krux will begin animating a QR code of the signed transaction that you can scan into BlueWallet.
Once all parts of the QR code have been read, you can then choose to broadcast the transaction, sending it to the network!
Congratulations, you have learned how to send a transaction using BlueWallet \ud83c\udf89
"},{"location":"getting-started/usage/using-a-single-sig-wallet/","title":"Using a Single-sig Wallet","text":"This guide assumes you have already created a mnemonic. If that is not the case, head over to the Generating a Mnemonic page and complete those steps first.
When entering your mnemonic into Krux, make sure to select Single-sig
before proceeding. The choice of Single-sig
vs. Multisig
at this point will change the derivation path used to generate your master extended public key (xpub) which will affect how wallet software handles it.
Selecting Single-sig
will derive an xpub using the derivation path m/84'/0'/0'
on mainnet and m/84'/1'/0'
on testnet, which indicates to wallet software that a Segregated Witness (Segwit) script type should be used. For single-sig wallets, this script is P2WPKH
, or just wpkh
.
Note: The load of the Wallet Descriptor
step is unnecessary for signing PSBTs with Single-sig wallets since the script type (wpkh
) and key are already known. However, this can be useful if you wish to print a backup of the wallet or want an additional sanity check.
In Specter Desktop, you will need to import your public key by adding a new device. Press the Add new device button on the left side of the app.
Krux is not listed as one of the available device types on the Add Device screen, so you will need to select the Other option.
You will be taken to the Upload Keys screen where you can choose to Scan QR code.
On your Krux, navigate to the Extended Public Key option under the main menu and show the first QR code to Specter Desktop.
It should import the xpub and display the Purpose as #0 Single Sig (Segwit).
Give the device a name and press Continue. You should see the new device in the devices list on the left side of the app.
After you've added a device with your key to Specter Desktop, you can make a wallet using it. Press the Add new wallet button on the left side of the app.
Choose to create a Single key wallet when it asks which type of wallet you want on the following screen.
Select the device you just added.
Give your wallet a name and make sure to select Segwit for the wallet type, then press Create wallet.
Congrats, you just created a single-sig wallet with your key!
"},{"location":"getting-started/usage/using-a-single-sig-wallet/#load-the-wallet-into-krux","title":"Load the wallet into Krux","text":"Load the wallet into Krux by going to the Settings page in Specter Desktop, then click the Export tab. There, press the Export button to display a QR code of your wallet.
In Krux, select the Wallet Descriptor menu item option and scan the QR code.
If it worked, Krux should display the wallet information that it loaded:
"},{"location":"getting-started/usage/using-a-single-sig-wallet/#receive-coins","title":"Receive coins","text":"
Navigate to the Receive screen where you should see a receive address that you can send funds to.
"},{"location":"getting-started/usage/using-a-single-sig-wallet/#send-coins","title":"Send coins","text":"Go to Send in Specter Desktop, fill in the recipient address, amount, and any extra information you wish to supply, and click Create unsigned transaction.
You will now see a screen listing the devices in your wallet. Select the device you want to sign the PSBT transaction with.
Specter Desktop will display an animated QR code of the PSBT that you can scan with Krux by going to Sign > PSBT in its main menu. After scanning, Krux should display info about the transaction for you to confirm before signing.
Once you have confirmed, Krux will begin animating a QR code of the signed transaction that you can scan into Specter Desktop.
In Specter Desktop, click Scan signed transaction and show it the QR. Each part of the QR code that is read will receive a ghost icon to indicate progress.
Once all parts of the QR code have been read, you should see a window popup asking you to broadcast the transaction. Click Send transaction and your transaction should be broadcasted to the network!
Congratulations, you have learned how to send a transaction using Specter Desktop \ud83c\udf89
"},{"location":"getting-started/usage/using-a-single-sig-wallet/#sparrow","title":"Sparrow","text":""},{"location":"getting-started/usage/using-a-single-sig-wallet/#create-the-wallet_1","title":"Create the wallet","text":"In Sparrow, create a new wallet by going to File > New Wallet and give it a name.
On the wallet screen, make sure to select a Single Signature policy type with the Native Segwit (P2WPKH) script type.
Now, you will need to import your public key. To do so, press the Airgapped Hardware Wallet button under Keystores section. On the screen that pops up, look for Krux option and click its Scan... button.
On your Krux device, navigate to the Extended Public Key option in the main menu and click on XPUB - QR Code and show it to Sparrow.
It should import the xpub and show a key tab under Keystores section:
If everything looks right, click the blue Apply button to create your wallet.
Congrats, you just created a single-sig wallet with your key!
"},{"location":"getting-started/usage/using-a-single-sig-wallet/#load-the-wallet-output-descriptor-into-krux-optional","title":"Load the wallet output descriptor into Krux (optional)","text":"Single-sig wallets don't need to perform this step, it is optional! Load the wallet output descriptor into Krux by going to the Settings screen of the wallet in Sparrow, then click the (QR code symbol) button at Script Policy section to the right of the Descriptor: to display a QR code that you can scan with Krux.
In Krux, select the Wallet menu item option and scan the QR code.
If it worked, Krux should display the wallet information that it loaded:
"},{"location":"getting-started/usage/using-a-single-sig-wallet/#receive-coins_1","title":"Receive coins","text":"
Navigate to the Receive screen where you should see a receive address that you can send funds to.
"},{"location":"getting-started/usage/using-a-single-sig-wallet/#send-coins_1","title":"Send coins","text":"Go to the Send screen, fill in the recipient address, amount, and any extra information you wish to supply, and click the blue Create Transaction button.
On the next screen, make sure that the Signing Wallet is the one you created and that the Sighash is set to All. Click the blue Finalize Transaction for Signing button.
On the next screen, click Show QR to make Sparrow display an animated QR code of the PSBT that you can scan with Krux by going to Sign > PSBT > Load from camera in its main menu.
After scanning, Krux should display info about the transaction for you to confirm before signing.
Once you have confirmed, Krux will begin animating a QR code of the signed transaction that you can scan into Sparrow.
In Sparrow, click Scan QR and show it the QR. A progress bar will indicate how many parts of the QR have been read.
Once all parts of the QR code have been read, you should see the signature bar fill and two new buttons appear. Click the blue Broadcast Transaction button and your transaction should be broadcasted to the network!
Congratulations, you have learned how to send a transaction using Sparrow \ud83c\udf89
"},{"location":"getting-started/usage/using-a-single-sig-wallet/#bluewallet","title":"BlueWallet","text":""},{"location":"getting-started/usage/using-a-single-sig-wallet/#create-the-wallet_2","title":"Create the wallet","text":"In BlueWallet, create a new wallet by either pressing the + button or scrolling to the right until you see the Add now button.
On the screen that pops up, tap Import wallet to import your public key.
On the following screen, tap Scan or import a file and it will begin trying to scan a QR code.
On your Krux, navigate to the Extended Public Key option under the main menu and make sure to show the second, zpub QR code to BlueWallet.
It should import the key and create a watch-only wallet. From here, you can send or receive.
Congrats, you just created a single-sig wallet with your key!
"},{"location":"getting-started/usage/using-a-single-sig-wallet/#load-the-wallet-into-krux_1","title":"Load the wallet into Krux","text":"Load the wallet into Krux by tapping the ellipsis in the top-right to see the wallet settings.
From here, tap Export/Backup in order to display a QR code of your wallet.
In Krux, select the Wallet Descriptor menu item option and scan the QR code.
If it worked, Krux should display the wallet information that it loaded:
"},{"location":"getting-started/usage/using-a-single-sig-wallet/#receive-coins_2","title":"Receive coins","text":"
Navigate to the Receive screen where you should see a receive address that you can send funds to.
Note that you can verify the receive address belongs to your wallet by using the Scan Address option.
"},{"location":"getting-started/usage/using-a-single-sig-wallet/#send-coins_2","title":"Send coins","text":"Go to the Send screen, fill in the recipient address, amount, and any extra information you wish to supply, and tap Next.
You should see an animated QR code of the PSBT that you can scan with Krux by going to Sign > PSBT in its main menu.
After scanning, Krux should display info about the transaction for you to confirm before signing.
Once you have confirmed, Krux will begin animating a QR code of the signed transaction that you can scan into BlueWallet.
Once all parts of the QR code have been read, you can then choose to broadcast the transaction, sending it to the network!
Congratulations, you have learned how to send a transaction using BlueWallet \ud83c\udf89
"},{"location":"snippets/12th-24th-word-generate/","title":"12th 24th word generate","text":"On your 12th or 24th word, you can leave it blank to have Krux generate the final checksum word of your mnemonic for you. This is useful when you choose a manual method to generate your mnemonic and want the final BIP-39 checksum word to be valid.
"},{"location":"snippets/amigo-more-info-faq/","title":"Amigo more info faq","text":""},{"location":"snippets/amigo-more-info-faq/#a-note-about-the-maix-amigo","title":"A note about the Maix Amigo","text":"Some Amigo screens have inverted X coordinates, others display colors differently. For more info see FAQ
"},{"location":"snippets/flash-krux-logo/","title":"Flash krux logo","text":"When the flashing process completes, you should see the Krux logo:
If it doesn't, try turning your device off and on by holding down the power button for six seconds.
Congrats, you're now running Krux!
"},{"location":"snippets/m5stickv-usb-c/","title":"M5stickv usb c","text":"M5stickV's USB-C port lacks pull up resistors required for it to be recognized and powered by host (computer) USB-C ports. If you don't have an USB-A available, you can use a USB hub connected between your computer's USB-C and M5stickV.
"},{"location":"snippets/sd-card-info-faq/","title":"Sd card info faq","text":"We cannot guarantee that a microSD card is compatible and will work in your device; you'll need to test it on the device to be sure, read the FAQ for more info.
"},{"location":"snippets/single-multi-wallet-descriptor/","title":"Single multi wallet descriptor","text":"In Krux, select the Wallet Descriptor menu item option and scan the QR code.
If it worked, Krux should display the wallet information that it loaded:
"},{"location":"snippets/tips-after-install/","title":"Tips after install","text":""},{"location":"snippets/tips-after-install/#multilingual-support","title":"Multilingual support","text":"Prefer a different language? Krux has support for multiple languages. Once at the start screen, go to Settings
, followed by Locale
, and select the locale you wish to use.
Once you've installed the initial firmware on your device via USB, you can either continue updating the device by flashing or you can perform upgrades via microSD card to keep the device airgapped.
"},{"location":"snippets/sparrow/broadcast-sparrow/","title":"Broadcast sparrow","text":"Click the blue Broadcast Transaction button and your transaction should be broadcasted to the network!
Congratulations, you have learned how to send a transaction using Sparrow \ud83c\udf89
"},{"location":"snippets/sparrow/import-xpub-sparrow/","title":"Import xpub sparrow","text":"Now, you will need to import your public key. To do so, press the Airgapped Hardware Wallet button under Keystores section. On the screen that pops up, look for Krux option and click its Scan... button.
On your Krux device, navigate to the Extended Public Key option in the main menu and click on XPUB - QR Code and show it to Sparrow.
It should import the xpub and show a key tab under Keystores section:
"},{"location":"snippets/sparrow/load-wallet-output-sparrow/","title":"Load wallet output sparrow","text":"In Krux, select the Wallet menu item option and scan the QR code.
If it worked, Krux should display the wallet information that it loaded:
"},{"location":"snippets/sparrow/send-coins-sparrow/","title":"Send coins sparrow","text":""},{"location":"snippets/sparrow/send-coins-sparrow/#send-coins","title":"Send coins","text":"Go to the Send screen, fill in the recipient address, amount, and any extra information you wish to supply, and click the blue Create Transaction button.
On the next screen, make sure that the Signing Wallet is the one you created and that the Sighash is set to All. Click the blue Finalize Transaction for Signing button.
On the next screen, click Show QR to make Sparrow display an animated QR code of the PSBT that you can scan with Krux by going to Sign > PSBT > Load from camera in its main menu.
After scanning, Krux should display info about the transaction for you to confirm before signing.
Once you have confirmed, Krux will begin animating a QR code of the signed transaction that you can scan into Sparrow.
In Sparrow, click Scan QR and show it the QR. A progress bar will indicate how many parts of the QR have been read.
"}]} \ No newline at end of file +{"config":{"lang":["en"],"separator":"[\\s\\-]+","pipeline":["stopWordFilter"]},"docs":[{"location":"faq/","title":"FAQ","text":""},{"location":"faq/#why-are-the-buttons-on-my-maix-amigo-in-the-wrong-order-why-is-my-amigo-screen-displaying-the-wrong-colors","title":"Why are the buttons on my Maix Amigo in the wrong order? Why is my Amigo screen displaying the wrong colors?","text":"Some Amigo screens have inverted X coordinates while others don\u2019t. If you notice that the buttons on keypad input screens appear to be in the wrong order, please go to Settings > Hardware > Display
and change the value of Flipped X Coordinates
which should correct the issue.
Others have found that there are issues with the colors displayed in the interface and camera preview. To fix this we have two options in Settings > Hardware > Display
, BGR Colors
and Inverted Colors
, test with them until the colors appear to be correct on your device.
We added IRQ to the firmware, so when you open your Maix Amigo, you will see a switch in the middle of the device board, it must be in the upper position for the touchscreen to work with v24.03.0 and later.
"},{"location":"faq/#why-isnt-my-device-charging-or-being-recognized-when-connected-to-the-computers-usb","title":"Why isn't my device charging or being recognized when connected to the computer's USB?","text":"If you have a Maix Amigo, make sure you're using the USB-C port at the bottom of the device, not the one on the left side.
Different computer hosts have varying hardware, operating systems, and behaviors regarding their USB ports. Below are the expected behaviors:
"},{"location":"faq/#usb-a","title":"USB-A:","text":"Your device should charge and turn on when connected to a USB-A port, even if it was initially turned off. You can also turn off the device while it continues to charge. However, some hosts' USB-A ports may behave like USB-C ports, as described below.
"},{"location":"faq/#usb-c","title":"USB-C:","text":"If the device is turned off and connected to a USB-C port, it should turn on and start charging. You can turn it off again, and it will continue to charge.
If the device is already turned on and connected to a USB-C port, it may not charge or be recognized by the computer. In this case, turn off the device to initiate recognition and charging. Once turned off and reconnected, the device should restart, be recognized by the computer, and charging should be triggered by USB-C hosts. If your device is not charging or being recognized as expected, try using a different USB port or a different computer to determine if the issue is with the device or the host's USB port.
M5stickV's USB-C port lacks pull up resistors required for it to be recognized and powered by host (computer) USB-C ports. If you don't have an USB-A available, you can use a USB hub connected between your computer's USB-C and M5stickV.
"},{"location":"faq/#why-does-my-krux-device-randomly-freeze-or-restart-when-connected-to-the-computer","title":"Why does my Krux device randomly freeze or restart when connected to the computer?","text":"Windows is known to have issues with the USB-C devices. If you are experiencing random crashes or even reboots and your device does not have a battery, try using a phone charger or other power source such as a power bank.
"},{"location":"faq/#why-wont-my-linux-os-list-a-serial-port-after-connecting-my-device","title":"Why won't my Linux OS list a serial port after connecting my device?","text":"If you get the following error when trying to flash your device: Failed to find device via USB. Is it connected and powered on?
Make sure your device is being detected and serial ports are being mounted by running:
ls /dev/ttyUSB*\n
Expect one port to be listed for devices like M5stickV and Maix Dock /dev/ttyUSB0
, and two ports for Maix Amigo and Maix Bit /dev/ttyUSB0 /dev/ttyUSB1
. If you don't see them, your OS may not be loading the correct drivers to create the serial ports to connect to. Ubuntu has a known bug where the brltty
driver \"kidnaps\" serial devices. You can solve this problem by removing it:
sudo apt-get remove brltty\n
"},{"location":"faq/#my-device-didnt-reboot-after-flashing-the-firmware-and-when-i-turned-it-off-and-on-again-it-just-stayed-blank-without-showing-anything-on-the-screen-what-should-i-do","title":"My device didn't reboot after flashing the firmware and when I turned it off and on again, it just stayed blank without showing anything on the screen. What should I do?","text":"Check if the downloaded file matches the device, this can also occur due to data corruption. Try downloading binaries again. You can install MaixPy IDE to help with debugging, Tools > Open Terminal > New Terminal > Connect to serial port > Select a COM port available (if it doesn't work, try another COM port). It will show the terminal and some messages, a message about an empty device or with corrupted firmware appears like: \"interesting, something's wrong, boot failed with exit code 233, go to find your vendor.\"
"},{"location":"faq/#what-are-all-the-features-available-what-are-the-additional-features-of-the-test-or-beta-version-is-there-an-android-app","title":"What are all the features available? What are the additional features of the Test or Beta version? Is there an Android app?","text":"For official releases you will find all the features detailed here on the Getting Started page with a brief summary on the Navigation Overview page. The latest and most experimental features, which we sometimes share on our social media, can be found only in the test (beta) repository. Only official releases are signed, Test or Beta is just for trying new things and providing feedback. Krux Android app is available as an apk
on the test (beta) repository (requires Android 6.0 or above).
The xpub that Krux displays follows the bitcoin core descriptors spec and includes key origin and derivation info that, in theory, makes zpubs (and ypubs) unnecessary if the wallet software being shown this extra information can parse it.
From the spec:
Every public key can be prefixed by an 8-character hexadecimal fingerprint plus optional derivation steps (hardened and unhardened) surrounded by brackets, identifying the master and derivation path the key or xpub that follows was derived with.
However, in practice not all wallet software supports this extended format, so Krux still provides a zpub as a fallback.
For more information, check out https://outputdescriptors.org/.
"},{"location":"faq/#why-isnt-krux-scanning-my-qr-code","title":"Why isn't Krux scanning my QR code?","text":"The level of detail that you see is what Krux sees. If the QR code shown on the device's screen is blurry, the camera lens of the device may be out of focus. It can be adjusted by rotating it clockwise or counter-clockwise to achieve a clearer result. The lenses usually comes with a drop of glue that makes id harder to adjust for the first time. You can use your fingertip, tweezers or small precision pliers to help, being careful to don't damage the fragile lenses.
If you have adjusted the lens already, the device may be too far away or too close to the code to read it. Start by holding the device as close to the QR code as possible and pulling away slowly until all or most of the QR code is viewable within the screen. If the code on the screen looks crisp, Krux should read it quickly and give you immediate feedback.
If you are in a dark environment, you can hold down the ENTER button of the M5StickV or Maix Amigo to turn on their LED light to potentially increase visibility. M5stickV and Amigo also has an anti-glare mode to better capture images from high brightness screens or with incident light, to enable/disable the anti-glare just press the PAGE button while scanning.
"},{"location":"faq/#why-am-i-getting-an-error-when-i-try-to-scan-a-qr-code","title":"Why am I getting an error when I try to scan a QR code?","text":"If Krux is recognizing that it sees a QR code but is displaying an error message after reading it, the likely reason is that the QR code is not in a format that Krux works with. We have listed the supported formats below:
For BIP-39 mnemonics:
crypto-bip39
For Wallet output descriptor:
descriptor
key containing an output descriptor stringFormat
, Policy
, and Derivation
keyscrypto-output
For PSBT (Partially Signed Bitcoin Transactions):
crypto-psbt
Additionally, Krux recognizes animated QR codes that use either the plaintext pMofN
(the Specter QR format) or binary UR
encodings.
If you are using an M5StickV, the small screen makes it difficult for laptop webcams to capture enough detail to parse the QR codes it displays. You can toggle brightness of QR codes from public keys and PSBTs by pressing PAGE button. In the future, more work will be done to support displaying lower density QR codes. For now, a workaround you can do is to take a picture or video of the QR code with a better-quality camera (such as your phone), then enlarge and display the photo or video to your webcam. Alternatively, it may be simpler to use a mobile wallet such as BlueWallet with the M5StickV since phone cameras don't seem to have issues reading the small QR codes. You can also save the PSBT on a microSD card for Krux to sign and then save the signed transaction to the microSD card to transfer the file to the computer or phone.
"},{"location":"faq/#why-isnt-krux-detecting-my-microsd-card-or-presenting-an-error","title":"Why isn't Krux detecting my microSD card or presenting an error?","text":"Starting from version 23.09.0, Krux supports SD card hot plugging. If you are using older versions, it may only detect the SD card at boot, so make sure Krux is turned off when inserting the microSD into it. To test the card compatibility use Krux Tools>Check SD Card. Make sure the SD card is using MBR/DOS partition table and FAT32 format.
Here is some supported microSD cards, and here is the MaixPy FAQ explaining Why my micro SD card cannot be read.
"},{"location":"faq/#why-insert-an-sd-card-into-my-device-what-is-it-for-does-it-save-something","title":"Why insert an SD card into my device? What is it for? Does it save something?","text":"SD card use is optional, most people use Krux only with QR codes. But you can use SD card to to upgrade the firmware, save settings, cnc/file, QR codes, XPUBs, encrypted mnemonics, and to save and load PSBTs, messages and wallet output descriptors.
"},{"location":"","title":"Krux","text":"Krux is an open-source firmware that transforms off-the-shelf Kendryte K210 devices, such as the Maix Amigo, M5StickV and more, into versatile Bitcoin transaction signers. Beyond its core functionality, Krux is a flexible platform that can adapt to devices with different form factors, providing a suite of tools to assist with the creation and recovery of mnemonic backups, some of which include encryption options for enhanced security.
Devices like Maix Amigo comes ready to use, with large touchscreens that make it easy and user-friendly to operate. These devices are ideal for those looking for a plug-and-play solution. On the other hand, Krux also supports development board kits, which are perfect for DIY enthusiasts who enjoy customizing and building their own hardware setups.
Interacting seamlessly with leading coordinator wallets through QR codes, SD cards, and even thermal printers, the firmware is continuously evolving to become a Swiss Army knife for self-custody, offering an array of features to support transactions and backups in a user-friendly and airgapped environment.
To learn more about Krux, check out Getting Started.
"},{"location":"parts/","title":"Devices and Part List","text":""},{"location":"parts/#krux-compatible-devices","title":"Krux Compatible Devices","text":""},{"location":"parts/#comparative-table","title":"Comparative Table","text":"Device M5stickV Maix Amigo Maix Dock Maix Bit Yahboom k210 module Price avg. US$50 US$55 US$35 US$35 US$60 Screen size / resolution 1.14\" / 135*240 3.5\" / 320*480 2.4\" / 240*320 2.4\" / 240*320 2\" / 240*320 Touchscreen Capacitive Capacitive Camera OV7740 OV7740 rearGC0328 front GC0328 OV2640 orOV5642 OV2640 Battery 200mAh 520mAh Requirements None None Rotary encoder 3D printed case SolderingAssembly Buttons 3D printed case SolderingAssembly None Warnings Camera has lens distortion Micro USB: M5stickV's USB-C port lacks pull up resistors required for it to be recognized and powered by host (computer) USB-C ports. If you don't have an USB-A available, you can use a USB hub connected between your computer's USB-C and M5stickV.
: Some Amigo screens have inverted X coordinates, others display colors differently. For more info see FAQ
: Some stores ship the Maix Dock with soldered pin connectors that do not fit into the 3D printed case
All devices feature Kendryte K210 chip: 28nm process, dual-core RISC-V 64bit @400MHz, 8 MB high-speed SRAM, DVP camera and MCU LCD interface, AES Accelerator, SHA256 Accelerator, FFT Accelerator.
"},{"location":"parts/#m5stickv","title":"M5StickV","text":"Below is a list of some distributors where you can find this device:
Below is a list of some distributors where you can find this device:
Below is a list of some distributors where you can find this device:
For the DIYers, the Maix Dock and Maix Bit are also supported but will require sourcing the parts individually and building the device yourself.
Below are example implementations with instructions on how to recreate them:
Below is a list of some distributors where you can find these devices:
This will be included with the M5StickV and Maix Amigo that you purchase from one of the distributors above. It will be necessary to power and charge the device and to initially flash the firmware.
"},{"location":"parts/#optional-microsd-card","title":"(Optional) MicroSD Card","text":"We cannot guarantee that a microSD card is compatible and will work in your device; you'll need to test it on the device to be sure, read the FAQ for more info. The size of the SD card isn't important; anything over a few megabytes will be plenty.
"},{"location":"parts/#optional-thermal-printer","title":"(Optional) Thermal Printer","text":"Krux has the capability to print all QR codes it generates, including those for mnemonics, xpubs, wallet backups, and signed PSBTs, using a locally-connected thermal printer via its serial port.
Many thermal printers may be compatible, but currently, the Goojprt QR203 (easily found on AliExpress) has the best support. The Adafruit printer starter pack can also be a convenient option to get started, as it includes all the necessary components for printing (except the conversion cable). To ensure proper functionality, enable the printer driver in the Krux settings, set the Tx pin and baud rate value to either 19200 or 9600, as explained in this Adafruit printer tutorial. You will need to connect the device's Tx to the printer's Rx and ground. The printer requires a dedicated power supply, typically with an output of 5 to 9V and capable of supplying at least 2A. For more information, see this discussion.
"},{"location":"parts/#optional-conversion-cable-for-thermal-printer","title":"(Optional) Conversion Cable for Thermal Printer","text":"To connect the printer to the device, you will need a conversion cablewith a 4-pin female Grove connector on one end (to connect to the device) and 4-pin male jumpers on the other end (to connect to the printer). For a more reliable connection, it is recommended to cut and solder the wires of your custom cables instead of using jumpers.
"},{"location":"support/","title":"Support the Project","text":""},{"location":"support/#ways-you-can-help","title":"Ways you can help","text":""},{"location":"support/#development","title":"Development","text":"Audit the code, file an issue, make a pull request, or do all three. :)
"},{"location":"support/#documentation","title":"Documentation","text":"I'd like to see Krux help as many people as possible, and to do that, good documentation is needed. If you identify a better way to say something, please make a PR, any help is appreciated.
"},{"location":"support/#translation","title":"Translation","text":"Krux supports different languages. If you missed a language or saw a awkward translation, open an issue or make a PR! You can also make a difference by translating this documentation!
"},{"location":"support/#social","title":"Social","text":"Reach out our Telegram group or X profile for faster help, share ideas and join the Krux community. Help others get to know Krux.
\"I'm an engineer, not a marketer. If you like Krux, help spread the word!\" - Jeff
"},{"location":"support/#donations","title":"Donations","text":"Krux won't ask for, receive, manage or distribute donations. You can donate directly to a Krux contributor of your choice.
Thank you!
"},{"location":"getting-started/","title":"Getting Started","text":"Krux is open-source Bitcoin signing firmware for devices with the K210 chipset.
Signing operations in Krux are done offline via QR code or via SD card. You can create/load your BIP-39 mnemonic, or import a wallet output descriptor, and sign transactions all without having to plug the device into your computer (except to initially install the firmware). It reads QR codes with its camera and outputs QR codes to its screen, or to paper via an optional thermal printer attachment.
Krux does not come with its own desktop wallet software. Instead, you can use Krux with third-party wallet coordinators to create/manage wallets, and send transactions from your online computer or mobile device while keeping your keys offline. Krux was built to be vendor agnostic and works with many popular wallet coordinators, including:
Below is the mind map representation of the currently menus available. Click the circle with a number (Ex.: ) to the right of each node to expand and explore. Also, enable full screen in the top right menu for better viewing .
"},{"location":"getting-started/navigation/#login-menu","title":"Login Menu","text":""},{"location":"getting-started/navigation/#home-menu-loaded-a-mnemonic","title":"Home Menu (Loaded a mnemonic)","text":""},{"location":"getting-started/settings/","title":"Settings","text":"In the Krux home menu, there is a Settings
entry. Below is a breakdown of the options you can change:
"},{"location":"getting-started/settings/#bitcoin-network","title":"Bitcoin - Network","text":"
This option allows you to switch between mainnet
(the default) and testnet
. Testnet
can be used to try out different wallet coordinators or for development.
Modify the encryption method and parameters to fit your needs. This will be used when storing encrypted mnemonics or creating encrypted QR codes. For more info see Krux Encrypted Mnemonics.
"},{"location":"getting-started/settings/#pbkdf2-iter-iterations","title":"PBKDF2 Iter. (Iterations)","text":"When you enter the encryption key, it is not directly used to encrypt your data. In order to protect against brute force attacks, the key is derived multiple times using hashing functions. PBKDF2 (Password-Based Key Derivation Function) iterations stands for the amount of derivations that will be performed over your key prior to encrypt/decrypt your mnemonic.
If you increase this value it will make the encryption harder, at the cost of taking longer to encrypt/decrypt your mnemonics.
Values must be multiple of 10,000. This was done to save data space on QR codes.
"},{"location":"getting-started/settings/#encryption-mode","title":"Encryption Mode","text":"Choose between well known and widely used AES (Advanced Encryption Standard) modes:
"},{"location":"getting-started/settings/#aes-ecb","title":"AES-ECB","text":"ECB (Electronic Codebook), its a simpler method where encryption data blocks are encrypted individually. It will be faster and simpler to encrypt, QR codes will have a lower density and will be easier to transcribe.
"},{"location":"getting-started/settings/#aes-cbc","title":"AES-CBC","text":"CBC (Cipher-block Chaining) is considered more secure as in the first data block an initialization vector (IV) is used to add random data to the encryption. The encryption of subsequent blocks depends on the data from previous blocks, ensuring chaining.
Encryption will take longer because a snapshot will be needed to generate the IV. This IV will be stored together with encrypted data, making encrypted QR codes denser and harder to transcribe.
"},{"location":"getting-started/settings/#hardware","title":"Hardware","text":"Customize the parameters available for your device and change printer settings.
"},{"location":"getting-started/settings/#encoder-maix-dock-only","title":"Encoder (Maix Dock only)","text":"If your device has a rotary encoder, you can change the debounce threshold in milliseconds. With lower values, faster movements and navigation will be allowed.
The caveat is low values can cause issues, such as double step and unexpected movements, especially with lower quality encoders. If this is the case increase the value to make navigation more stable.
"},{"location":"getting-started/settings/#display-maix-amigo-only","title":"Display (Maix Amigo only)","text":"Some Maix Amigo screens are different, here you can customize the BGR Colors, Flipped X Coordinates and Inverted Colors. For more info see FAQ
"},{"location":"getting-started/settings/#printer","title":"Printer","text":"You can set up a thermal printer or tell Krux to store a GRBL CNC instructions file on a SD card to machine QR codes
"},{"location":"getting-started/settings/#cnc","title":"CNC","text":"Define several machining parameters according to the desired size, material you'll use, and your CNC characteristics and capabilities.
"},{"location":"getting-started/settings/#thermal","title":"Thermal","text":"Printers can come with different baudrates from the manufacturer. By default, Krux assumes the connected printer will have a baudrate of 9600
. If yours is different, you can change it here.
Also setup the TX Pin you'll use (e.g. 35 for M5stickV and 7 for Maix Amigo) and tweak other parameters according to your printer recommendations. For most printers you will only need to connect 2 cables, the device TX to the printer RX and ground. Consult the part list page for supported printers.
"},{"location":"getting-started/settings/#driver","title":"Driver","text":"Here you choose between Thermal, CNC or none (default). Leave this setting to \"none\" if you won't use a printer and don't want to be bothered by print prompts.
"},{"location":"getting-started/settings/#touchscreen-maix-amigo-and-yahboom-only","title":"Touchscreen (Maix Amigo and Yahboom only)","text":"If your device has touchscreen you can change the touch detection threshold. If it is being too sensitive or detecting false or ghost touches, you should increase the threshold value, making it less sensitive. The other way is also valid, reduce the threshold to make the screen more sensitive to touches.
"},{"location":"getting-started/settings/#language-locale","title":"Language - Locale","text":"Here you can change Krux to your desired language.
"},{"location":"getting-started/settings/#persist","title":"Persist","text":"Choose between flash (device's internal memory) or SD card for the place where your settings will be stored.
"},{"location":"getting-started/settings/#appearance","title":"Appearance","text":"Configure screensaver time and change Krux to your desired theme.
"},{"location":"getting-started/settings/#screensaver-time","title":"Screensaver time","text":"Set how long to wait idle before the screensaver appears. Enter 0 to disable the screensaver.
"},{"location":"getting-started/settings/#theme","title":"Theme","text":"Choose your color theme according to your preference. Some themes may be more suitable for some devices, coordinator cameras and environments. As an example, it may be easier to scan QR codes from Krux devices using light theme in brighter environments.
"},{"location":"getting-started/settings/#factory-settings","title":"Factory Settings","text":"
Restore device to factory settings and reboot.
"},{"location":"getting-started/features/QR-transcript-tools/","title":"Transcribing QR Codes","text":"When you export a mnemonic, encrypted mnemonic or a generic text QR code, alternative visualization modes will be available. Swipe left or right to change modes, or if your device doesn't have a touchscreen, press the Page
buttons. Find transcribe templates here.
This mode is optimized for scanning, the raw QR code will be displayed
"},{"location":"getting-started/features/QR-transcript-tools/#lines-mode","title":"Lines Mode","text":"If you are good at transcribing things like handwritten text, with this mode one QR code line will be highlighted at a time. Press Enter
to highlight the next line.
QR codes will be split into regions, of 5x5 or 7x7 \"blocks\". One QR code region will be shown at a time. Press Enter
to display the next region.
QR codes will be split into regions, of 5x5 or 7x7 \"blocks\". One QR code region will be highlighted at a time. Press Enter
to highlight the next region.
Grids will be added to a standard QR code. In a dark room, if you place a sheet of paper over the device's screen, you'll notice QR code will be visible and it will be possible to copy it directly from above. Be careful to don't damage your screen with pen and markers, use an insulating plastic tape or film to protect the device if you use this method.
"},{"location":"getting-started/features/encrypted-mnemonics/","title":"Encrypted Mnemonics","text":""},{"location":"getting-started/features/encrypted-mnemonics/#introduction","title":"Introduction","text":"There are many possible security layers one could add to protect a wallet\u2019s private key. Adding a BIP-39 passphrase to the mnemonic is the most common method. Encrypting a BIP-39 mnemonic has a similar use case as the BIP-39 passphrase, but the user experience may differ depending on the implementation. The main difference between BIP-39 passphrases and Krux\u2019s encrypted mnemonic implementation is that when users type the wrong key, encrypted mnemonics will return an error instead of loading a different wallet, as BIP-39 passphrases do. This difference may be desired or not. The implementation also has the convenience of storing a mnemonic ID together with the stored or QR code encrypted mnemonics. Mnemonic encryption, with its own key, can be used together with BIP-39 passphrase as an extra security layer.
We use standard AES encryption modes ECB and CBC:
"},{"location":"getting-started/features/encrypted-mnemonics/#aes-ecb","title":"AES-ECB","text":"ECB (Electronic Codebook) is a simpler method where encryption data blocks are encrypted individually. This mode is faster and simpler to encrypt, resulting in QR codes with lower density and easier to transcribe. It is generally considered less secure than CBC because it does not provide data chaining, meaning identical plaintext blocks will produce identical ciphertext blocks, making it vulnerable to pattern analysis. However, in Krux's implementation, only one or two binary data blocks are encrypted, so there will be no patterns, and the lack of chaining is not as relevant as it would be for larger files, plain text, or media.
"},{"location":"getting-started/features/encrypted-mnemonics/#aes-cbc","title":"AES-CBC","text":"CBC (Cipher-block Chaining) is considered more secure. In the first data block, an initialization vector (IV) is used to add random data to the encryption. The encryption of subsequent blocks depends on the data from previous blocks, characterizing chaining. The tradeoff is that the encryption process will take longer because a snapshot will be needed to generate the IV. This IV will be stored together with encrypted data, making encrypted QR codes denser and harder to transcribe.
"},{"location":"getting-started/features/encrypted-mnemonics/#cbc-encryption-iv","title":"CBC Encryption IV","text":"The Initial Vector (IV) will be generated from a snapshot taken with the camera. The IV is a fixed-size input value used in the first block of the encryption process. It adds randomness to the encryption, ensuring that data encrypted with the same key will produce different ciphertexts each time. The IV is not secret and will be transmitted along with the ciphertext. However, like any nonce, it should not be reused to maintain security.
"},{"location":"getting-started/features/encrypted-mnemonics/#pbkdf2-iterations","title":"PBKDF2 Iterations","text":"When you enter the encryption key, it is not directly used to encrypt your data. In order to protect against brute force attacks, the key is derived multiple times using hashing functions. PBKDF2 (Password-Based Key Derivation Function) iterations refer to the number of derivations that will be performed over your key prior to encrypting/decrypting your mnemonic.
"},{"location":"getting-started/features/encrypted-mnemonics/#encrypted-qr-codes-data-and-parsing","title":"Encrypted QR Codes Data and Parsing","text":"In search of efficiency and smaller QR codes, all data is converted to bytes and organized like a Bitcoin transaction, with variable and fixed length fields. The following data is present on the QR code:
ID length (1) ID (2) Version (3) Key Derivations (4) IV (5) Encrypted Mnemonic (6) Validation Block (7) 1 Byte Variable 1 Byte 3 Bytes 16 Bytes (optional) 16 Bytes (12 words) 32 Bytes (24 words) 16 BytesStorage of encrypted mnemonics on the device or SD cards are meant for convenience only and should not be considered a form of backup. Always make a physical backup of your keys that is independent from electronic devices and test recovering your wallet from this backup before you send funds to it.
Remember that the stored encrypted mnemonic is protected by the key you defined to encrypt it. If the defined key is weak, your encrypted mnemonic will not be protected. If you have stored a mnemonic with funds in the device's internal flash memory using a weak key, the best way to undo this is to wipe the device.
"},{"location":"getting-started/features/printing/","title":"Printing","text":"Krux has the ability to print all QR codes it generates, including mnemonic, xpub, wallet backup, and signed PSBT, via a locally-connected thermal printer over its serial port. Consult the part list page for supported printers.
Once connected and powered on, all screens that display a QR code will begin showing a follow-up screen asking if you want to Print to QR?
.
There are many ways you can use this functionality, including:
Since printed thermal paper fades quickly, you can also print your backups on sticker thermal paper to use as templates for punching into more resilient materials like steel.
We also have plans to add support for other kinds of QR \"printers\" in the future, including CNC machines. In this case, gcode will be generated that can be sent directly to a GRBL controller to cut your QRs out of wood or metal!
Just be careful what you do with the printed codes, since most smartphones can now quickly and easily read QR codes. Treat your QR mnemonic the same way you would treat a plaintext copy of it.
"},{"location":"getting-started/features/sd-card-update/","title":"SD Card Updates","text":""},{"location":"getting-started/features/sd-card-update/#upgrade-via-microsd-card","title":"Upgrade via microSD card","text":"Once you've installed the initial firmware on your device via USB, you can either continue updating the device by flashing via USB or you can perform upgrades via microSD card to keep the device airgapped.
To perform an upgrade, simply copy the official release firmware.bin
and firmware.bin.sig
files to the root of a FAT-32 / MBR formatted microSD card, insert the card into your device, and reboot the device. If it detects the new firmware file and is able to verify the signature, you will be prompted to install it.
Once installation is complete, eject the microSD card and delete the firmware files before reinserting and rebooting. Otherwise you will be prompted to install it again.
We cannot guarantee that a microSD card is compatible and will work in your device; you'll need to test it on the device to be sure, read the FAQ for more info. Only official releases are signed and can be installed via microSD card.
"},{"location":"getting-started/features/tools/","title":"Tools","text":"Here are some useful tools that are available as soon as Krux starts! These are offered as a complement to managing your device and wallets.
"},{"location":"getting-started/features/tools/#check-sd-card","title":"Check SD Card","text":"
You can check if a SD card can be detected and read by your device and explore its content.
"},{"location":"getting-started/features/tools/#print-test-qr","title":"Print Test QR","text":"Quickly print a test QR code to check and optimize your printer setup.
"},{"location":"getting-started/features/tools/#create-qr-code","title":"Create QR Code","text":"Enter a text input to create, print or transcript a QR code that can be later used as an encryption key or as a passphrase. Swipe left or right to change modes if your device has a touchscreen.
"},{"location":"getting-started/features/tools/#remove-mnemonic","title":"Remove Mnemonic","text":"This option allows you to remove any stored encrypted mnemonic from the device's internal memory or an SD card. For more information, see Krux Encrypted Mnemonics.
When mnemonics are removed from the device's flash memory, Krux will no longer be able to access them. However, as with most operating systems, the data may still be recoverable using specialized tools. If you stored any important keys with a weak encryption key, it is recommended to use the \"Wipe Device\" feature below to ensure that the data is irrecoverable.
When mnemonics are removed from an SD card, Krux will overwrite the region where the encrypted mnemonic was stored with empty data. This makes it more secure to delete mnemonics from SD cards using Krux rather than a PC or another device. However, Krux does not have a \"Wipe\" feature for SD cards; you can find this feature in third-party applications.
"},{"location":"getting-started/features/tools/#wipe-device","title":"Wipe Device","text":"This option permanently removes all stored encrypted mnemonics and settings from the device's internal flash memory. It ensures that the data is irrecoverable, making it an adequate measure to take if any important mnemonics were stored with a weak encryption key.
"},{"location":"getting-started/installing/from-gui/","title":"From GUI application","text":"You can install Krux (both official or beta releases) onto your K210-based device using our official desktop application, KruxInstaller, available for Linux and Windows.
"},{"location":"getting-started/installing/from-gui/#download","title":"Download","text":"Download the installer by choosing the right asset for your operating system from our Github releases page:
Operational System File Windowskrux-installer_0.0.13.exe*
Debian-based: Ubuntu, PopOS, etc... krux-installer_0.0.13_amd64.deb*
RedHat-based: Fedora, etc... krux-installer-0.0.13.x86_64.rpm*
Any linux distribution krux-installer-0.0.13.AppImage*
Package for Archlinux on AUR. krux-installer-bin
"},{"location":"getting-started/installing/from-gui/#verify-files","title":"Verify files","text":"If you trust the project developers, you can skip to install:
\u26a0\ufe0f TIP: This step helps detect if any unauthorized modifications were made between github and your local computer.
"},{"location":"getting-started/installing/from-gui/#integrity","title":"Integrity","text":"System Commands Windows (powershell)# Compare this output:\n(Get-FileHash 'krux-installer_0.0.13.exe').Hash\n\n# With this:\nGet-Content 'krux-installer_0.0.13.exe.sha256.txt'\n
Debian-based sha256sum --check ./krux-installer_0.0.13_amd64.deb.sha256.txt\n
RedHat-based sha256txt --check ./krux-installer-0.0.13.x86_64.rpm.sha256.txt\n
Any Linux distribution sha256sum --check ./krux-installer-0.0.13.AppImage.sha256.txt\n
"},{"location":"getting-started/installing/from-gui/#authenticity","title":"Authenticity","text":"You will need have GPG installed. Most Linux already have this, but on Windows we recommend installing GPG4Win.
Once installed, run this command to retrieve the developer's key:
gpg --keyserver hkps://keys.openpgp.org --recv-keys B4281DDDFBBD207BFA4113138974C90299326322\n
Then you can verify:
System Command Windows (powershell)gpg --verify krux-installer_0.0.13.exe.sig
Debian-based gpg --verify ./krux-installer_0.0.13_amd64.deb.sig
RedHat-based gpg --verify ./krux-installer-0.0.13.x86_64.rpm.sig
Any Linux distribution gpg --verify ./krux-installer-0.0.13.AppImage.sig
\u26a0\ufe0f TIP: If the verification was successful, you may get a message similar to: Good signature from \"qlrddev <qlrddev@gmail.com>\"
Each system require different steps to install:
System Steps Windowskrux-installer_0.0.13.exe
is a NSIS installer;.exe
file the system will ask you to trust the application;sudo dpkg -i krux-installer_0.0.13_amd64.deb
;sudo apt-get install -f krux-installer_0.0.13_amd64.deb
.sudo dnf install krux-installer-0.0.13.x86_64.rpm
;sudo yum localinstall krux-installer-0.0.13.x86_64.rpm
.krux-installer-0.0.13.AppImage
where you want;chmod +x krux-installer-0.0.13.AppImage
;./krux-installer-0.0.13.AppImage
.On Windows, you'll be faced with a blue window saying \"Windows protected your PC\". This occurs because we don't have a code signing certificate, Click on \"More info\" and allow the execution. Follow the installer's instructions to complete the installation.
\ud83d\udee1\ufe0f TIP: If you followed the steps presented in authenticity, you already have the assurance that the software is from a verified and genuine software publisher
"},{"location":"getting-started/installing/from-gui/#usage","title":"Usage","text":""},{"location":"getting-started/installing/from-gui/#main-menu","title":"Main Menu","text":"When executing the Krux Installer, you will be presented with a menu of two items:
"},{"location":"getting-started/installing/from-gui/#select-device","title":"Select Device","text":"First, select the device we want to flash. After that the menu will shown three items:
"},{"location":"getting-started/installing/from-gui/#select-version","title":"Select Version","text":"This option allows you to select the latest official version or the latest beta version on our github. If the connection works, you will see the following screen:
Version Name Advantages Disadvantages Officialselfcustody/krux/releases/tag/*
odudex/krux_binaries
Once you choose the device and version, it enables the \"flash with ktool\" button.
\u26a0\ufe0f TIP: You must connect and turn on your device before flashing. In Linux, you'll be prompted to type your password (sudo or admin). Do not disconnect the device until the process is complete!
When the flashing process completes, you should see the Krux logo:
If it doesn't, try turning your device off and on by holding down the power button for six seconds.
Congrats, you're now running Krux!
"},{"location":"getting-started/installing/from-gui/#wipe-device","title":"Wipe device","text":"This option erases ALL data from the device's flash memory. On Linux, it will prompt for your password before. Once the process starts, the screen will appear frozen. When it's done, you can scroll down and see all the events that occurred.
\u26a0\ufe0f TIP: It's useful when your device is not working or for security reasons. To use Krux again, you'll need to re-flash the firmware.
\u26a0\ufe0f TIP: Do not unplug or poweroff your device or computer. Wait until the process finishes.
"},{"location":"getting-started/installing/from-gui/#multilingual-support","title":"Multilingual support","text":"Prefer a different language? Krux has support for multiple languages. Once at the start screen, go to Settings
, followed by Locale
, and select the locale you wish to use.
Once you've installed the initial firmware on your device via USB, you can either continue updating the device by flashing or you can perform upgrades via microSD card to keep the device airgapped.
"},{"location":"getting-started/installing/from-pre-built-release/","title":"From pre-built official release","text":"This page explains how to install Krux from an official, pre-built release.
"},{"location":"getting-started/installing/from-pre-built-release/#download-the-latest-release","title":"Download the latest release","text":"Head over to the releases page and download the latest signed release.
"},{"location":"getting-started/installing/from-pre-built-release/#verify-the-files","title":"Verify the files","text":"Before installing the release, it's a good idea to check that:
krux-vX.Y.Z.zip
matches the hash in krux-vX.Y.Z.zip.sha256.txt
krux-vX.Y.Z.zip.sig
can be verified with the selfcustody.pem
public key found in the root of the krux repository.You can either do this manually or with the krux
shell script, which contains helper commands for this:
./krux sha256 krux-vX.Y.Z.zip\n./krux verify krux-vX.Y.Z.zip selfcustody.pem\n
Fun fact: Each Krux release is signed with Krux!
"},{"location":"getting-started/installing/from-pre-built-release/#flash-the-firmware-onto-the-device","title":"Flash the firmware onto the device","text":"Extract the latest version of Krux you downloaded and enter the folder:
unzip krux-vX.Y.Z.zip && cd krux-vX.Y.Z\n
Connect the device to your computer via USB (for Maix Amigo, make sure you\u2019re using bottom port), power it on, and run the following, replacing DEVICE
with either m5stickv
, amigo
, bit
or yahboom
(to yahboom you may need to manually specify the port):
./ktool -B goE -b 1500000 maixpy_DEVICE/kboot.kfpkg\n
For dock
the -B
parameter changes, so run:
./ktool -B dan -b 1500000 maixpy_dock/kboot.kfpkg\n
When the flashing process completes, you should see the Krux logo:
If it doesn't, try turning your device off and on by holding down the power button for six seconds.
Congrats, you're now running Krux!
"},{"location":"getting-started/installing/from-pre-built-release/#a-note-about-the-maix-amigo","title":"A note about the Maix Amigo","text":"Some Amigo screens have inverted X coordinates, others display colors differently. For more info see FAQ
"},{"location":"getting-started/installing/from-pre-built-release/#troubleshooting","title":"Troubleshooting","text":"If ktool
fails to run, you may need to give it executable permissions with chmod +x ./ktool
, or you might need to use \"sudo\" if your user don't have access to serial port. In Windows or Mac you may need to explicitly allow the tool to run by adding an exception for it.
If the flashing process fails midway through, check the connection, restart the device, and try the command again.
Two serial ports are created when Amigo
and Bit
are connected to a PC. Sometimes Ktool will pick the wrong and flash will fail. Manually specify the serial port to overcome this issue using -p
argument:
./ktool-linux -B goE -b 1500000 maixpy_amigo/kboot.kfpkg -p /dev/ttyUSB1\n
Check por names of devices manager on Windows (e.g. COM1, COM9), or list the ports on linux
ls /dev/ttyUSB*\n
List ports on Mac
ls /dev/cu.usbserial*\n
Different OS versions may have different port names, and the absence of ports may indicate a connection, driver or hardware related issue."},{"location":"getting-started/installing/from-pre-built-release/#multilingual-support","title":"Multilingual support","text":"Prefer a different language? Krux has support for multiple languages. Once at the start screen, go to Settings
, followed by Locale
, and select the locale you wish to use.
Once you've installed the initial firmware on your device via USB, you can either continue updating the device by flashing or you can perform upgrades via microSD card to keep the device airgapped.
"},{"location":"getting-started/installing/from-source/","title":"From source","text":"This page explains how to install Krux from source. You can check these instructions in our README too.
"},{"location":"getting-started/installing/from-source/#software","title":"Software","text":"You will need a computer with git
and vagrant
installed.
In a terminal, run the following:
git clone --recurse-submodules https://github.com/selfcustody/krux\n
This will pull down the Krux source code as well as the code for all its dependencies and put them inside a new krux
folder. Note: When you wish to pull down updates to this repo, you can run the following inside the krux
folder:
git pull origin main && git submodule update --init --recursive\n
"},{"location":"getting-started/installing/from-source/#spin-up-a-virtual-machine","title":"Spin up a virtual machine","text":"After you have installed Vagrant, run the following inside the krux
folder to spin up a new VM:
vagrant up\n
"},{"location":"getting-started/installing/from-source/#build-the-firmware","title":"Build the firmware","text":""},{"location":"getting-started/installing/from-source/#prerequisite-for-upgrading-via-microsd","title":"Prerequisite for upgrading via microSD","text":"If you wish to perform airgapped upgrades via microSD card, you will need to have a private and public key pair to sign your builds and verify the signatures.
You can use an existing Krux installation and mnemonic to sign your builds with, or you can generate a keypair and sign from the openssl
CLI. Commands have been added to the krux
shell script to make this easier.
In either case, you will need to update the SIGNER_PUBKEY
field in src/krux/metadata.py
to store your public key so that Krux can verify future builds before installing.
To generate a keypair, run:
vagrant ssh -c 'cd /vagrant; ./krux generate-keypair'\nvagrant ssh -c 'cd /vagrant; ./krux pem-to-pubkey pubkey.pem'\n
The first command will create privkey.pem
and pubkey.pem
files you can use with openssl, and the second command will output your public key in the form expected by Krux.
Once you've updated the SIGNER_PUBKEY
with this value, you can proceed with the regular build process.
Run the following, replacing DEVICE
with either m5stickv
, amigo
, dock
, bit
or yahboom
:
vagrant ssh -c 'cd /vagrant; ./krux build maixpy_DEVICE'\n
This will take around an hour or so to complete the first time. Subsequent builds should take only a few minutes.
If all goes well, you should see a new build
folder containing firmware.bin
and kboot.kfpkg
files when the build completes.
If you build from the main
branch of the source code, you should be able to reproduce the build process used to generate the last release binaries and obtain exact copies of the firmware.bin
and kboot.kfpkg
files, with matching hash checksums.
To extract and verify the firmware.bin contained in kboot.kfpkg, you can use the following command:
unzip kboot.kfpkg -d ./kboot/
Connect the device to your computer via USB (for Maix Amigo, make sure you\u2019re using bottom port), power it on, and run the following, replacing DEVICE
with either m5stickv
, amigo
, dock
, bit
or yahboom
:
vagrant ssh -c 'cd /vagrant; ./krux flash maixpy_DEVICE'\n
If the flashing fails try one of the following common solutions: vagrant reload
prior to flashing in order for the newly-inserted USB device to be detected and passed through to the VM on startup.Failed to find device via USB. Is it connected and powered on?
, make sure that your user has been added to the vboxusers
group. On Mac or Linux, run the following command: sudo usermod -a -G vboxusers yourusername\n
When the flashing process completes, you should see the Krux logo:
If it doesn't, try turning your device off and on by holding down the power button for six seconds.
Congrats, you're now running Krux!
"},{"location":"getting-started/installing/from-source/#a-note-about-the-maix-amigo","title":"A note about the Maix Amigo","text":"Some Amigo screens have inverted X coordinates, others display colors differently. For more info see FAQ
"},{"location":"getting-started/installing/from-source/#signing-the-firmware","title":"Signing the firmware","text":"You can sign the firmware using one of the two methods listed below:
"},{"location":"getting-started/installing/from-source/#method-1-signing-from-krux","title":"Method 1: Signing from Krux","text":"First, calculate the SHA256 hash of the new firmware by running:
vagrant ssh -c 'cd /vagrant; ./krux sha256 build/firmware.bin'\n
Copy this hex string and turn it into a QR code using whichever QR code generator you'd like.
In Krux, enter the mnemonic of your private key that will be used for signing, and go to Sign > Message. Scan the QR code you generated, and you will be asked if you wish to sign the hash. Proceed, and you will be presented with a base64-encoded string containing the signature, as text and as a QR code.
Take this string and create a signature file by running:
vagrant ssh -c 'cd /vagrant; ./krux b64decode \"signature-in-base64\" > build/firmware.bin.sig'\n
This will generate a firmware.bin.sig
file containing a signature of the firmware's SHA256 hash.
With the keypair you generated before, you can now run:
vagrant ssh -c 'cd /vagrant; ./krux sign build/firmware.bin privkey.pem'\n
This will generate a firmware.bin.sig
file containing a signature of the firmware's SHA256 hash.
This page explains how to install Krux from a test (beta), pre-built release.
"},{"location":"getting-started/installing/from-test-release/#warning","title":"Warning","text":"Keep in mind that these are unsigned binaries.
"},{"location":"getting-started/installing/from-test-release/#download","title":"Download","text":"Download experimental compiled firmware or the Android app apk
: Krux binaries
Krux Android app is intended for learning about Krux and Bitcoin airgapped transactions. Vulnerabilities inherent to Android phones such as the OS, other apps and wireless / CDMA / GSM / Bluetooth connectivity make using any phone insecure. Krux app should NOT be used to manage savings or important keys and mnemonics. For that, a dedicated device is recommended.
"},{"location":"getting-started/installing/from-test-release/#m5stickv","title":"M5StickV","text":""},{"location":"getting-started/installing/from-test-release/#linux","title":"Linux","text":"To Flash M5stickV run:
./ktool-linux -B goE -b 1500000 maixpy_m5stickv/kboot.kfpkg\n
"},{"location":"getting-started/installing/from-test-release/#windows","title":"Windows","text":"Replace './ktool-linux' for 'ktool-win.exe' and / for \\ in commands:
./ktool-win.exe -B goE -b 1500000 maixpy_m5stickv\\kboot.kfpkg\n
"},{"location":"getting-started/installing/from-test-release/#sipeed-maix-amigo","title":"Sipeed Maix Amigo","text":""},{"location":"getting-started/installing/from-test-release/#linux_1","title":"Linux","text":"To Flash Maix Amigo run:
./ktool-linux -B goE -b 1500000 maixpy_amigo/kboot.kfpkg\n
"},{"location":"getting-started/installing/from-test-release/#windows_1","title":"Windows","text":"Replace './ktool-linux' for 'ktool-win.exe' and / for \\ in commands:
./ktool-win.exe -B goE -b 1500000 maixpy_amigo\\kboot.kfpkg\n
"},{"location":"getting-started/installing/from-test-release/#a-note-about-the-maix-amigo","title":"A note about the Maix Amigo","text":"Some Amigo screens have inverted X coordinates, others display colors differently. For more info see FAQ
"},{"location":"getting-started/installing/from-test-release/#sipeed-maix-bit","title":"Sipeed Maix Bit","text":""},{"location":"getting-started/installing/from-test-release/#linux_2","title":"Linux","text":"To Flash Maix Bit run:
./ktool-linux -B goE -b 1500000 maixpy_bit/kboot.kfpkg\n
"},{"location":"getting-started/installing/from-test-release/#windows_2","title":"Windows","text":"Replace './ktool-linux' for 'ktool-win.exe' and / for \\ in commands:
./ktool-win.exe -B goE -b 1500000 maixpy_bit\\kboot.kfpkg\n
"},{"location":"getting-started/installing/from-test-release/#sipeed-maix-dock","title":"Sipeed Maix Dock","text":""},{"location":"getting-started/installing/from-test-release/#linux_3","title":"Linux","text":"To Flash Maix Dock run:
./ktool-linux -B dan -b 1500000 maixpy_dock/kboot.kfpkg\n
"},{"location":"getting-started/installing/from-test-release/#windows_3","title":"Windows","text":"Replace './ktool-linux' for 'ktool-win.exe' and / for \\ in commands:
./ktool-win.exe -B dan -b 1500000 maixpy_dock\\kboot.kfpkg\n
"},{"location":"getting-started/installing/from-test-release/#aimotion-yahboom-k210-module","title":"Aimotion Yahboom k210 module","text":""},{"location":"getting-started/installing/from-test-release/#linux_4","title":"Linux","text":"To Flash Yahboom k210 module you'll have to manually specify the port, on this example /dev/ttyUSB0
:
./ktool-linux -B goE -b 1500000 -p /dev/ttyUSB0 yahboom/kboot.kfpkg\n
"},{"location":"getting-started/installing/","title":"Installing","text":"You can install Krux in four different ways:
Please, check the part list for the compatible devices and requirements.
After the first firmware install, you can use a microSD card if you wish to perform further airgapped updates.
"},{"location":"getting-started/usage/generating-a-mnemonic/","title":"Generating a Mnemonic","text":"Krux has support for creating 12 and 24-word mnemonic seed phrases. Since true entropy is difficult to produce, especially with an embedded device, we recommend to outsource entropy generation using dice rolls, but it is also possible to use camera as a source of entropy to quickly create a mnemonic. At the start screen, once you select New Mnemonic
, you will be taken to a second menu where you can choose to create a mnemonic via camera, via rolls of a D6 (standard six-sided die) or D20 (20-sided die).
"},{"location":"getting-started/usage/generating-a-mnemonic/#camera","title":"Camera","text":"
(Experimental!) Choose between 12 or 24 words, then take a random picture and Krux will generate a mnemonic from the hash of the image bytes.
"},{"location":"getting-started/usage/generating-a-mnemonic/#image-entropy-quality-estimation","title":"Image Entropy Quality Estimation","text":"
During image capture, entropy quality estimation is displayed to assist you in obtaining a high-quality image source for your key. After a snapshot is taken, Shannon's entropy and pixel deviation indices are presented. Minimum thresholds are established to prevent the use of poor-quality images with low entropy for key generation. It's important to note that these values serve as indicators or estimations of entropy quality, but they are not absolute entropy values in a cryptographic context.
"},{"location":"getting-started/usage/generating-a-mnemonic/#dice-rolls","title":"Dice Rolls","text":""},{"location":"getting-started/usage/generating-a-mnemonic/#via-d6","title":"Via D6","text":"Choose between 12 or 24 words.
The entropy in a single roll of a D6 is 2.585 bits ( log2(6) ); therefore a minimum of a 50 rolls will be required for 128 bits of entropy, enough to generate a 12-word mnemonic. For 24 words, or an entropy of 256 bits, a minimum of 99 rolls will be required.
"},{"location":"getting-started/usage/generating-a-mnemonic/#via-d20","title":"Via D20","text":"
Since a D20 has more possible outcomes, the entropy is increased per roll to 4.322 bits ( log2(20) ). This means that only 30 rolls are necessary to create a 12-word mnemonic and 60 rolls for a 24-word mnemonic.
"},{"location":"getting-started/usage/generating-a-mnemonic/#dice-rolls-entropy-quality-estimation","title":"Dice Rolls Entropy Quality Estimation","text":"
When you input your dice rolls, you'll see two progress bars filling up. The top progress bar shows how many rolls you've entered compared to the minimum number needed. The bottom progress bar shows the real-time calculated Shannon's entropy compared to the required minimum (128 bits for 12 words and 256 bits for 24 words). When the Shannon's entropy estimation reaches the recommended level, the progress bar will be full, and its frame will change color. If you've met the minimum number of rolls but the entropy estimation is still below the recommended level, a warning will appear, suggesting you add more rolls to increase entropy. Note: Similar to image entropy quality estimation, dice rolls Shannon's entropy serves as an indicator and should not be considered an absolute measure of cryptographic entropy.
"},{"location":"getting-started/usage/generating-a-mnemonic/#stats-for-nerds","title":"Stats for Nerds","text":"A low Shannon's entropy value might suggest that your dice are biased or that there's a problem with how you're gathering entropy. To investigate further, examine the \"Stats for Nerds\" section to check the distribution of your rolls and look for any abnormalities.
"},{"location":"getting-started/usage/generating-a-mnemonic/#how-it-works","title":"How it works","text":"
For dice rolls, Krux keeps track of every roll you enter and displays the cumulative string of outcomes after each roll.
When you have entered your final roll, Krux will hash this string using SHA256 and output the resulting hash to the screen so that you can verify it for yourself.
In the case a camera snapshot is used as source, image bytes, which contain pixels data in RGB565 format, will be hashed just like it is done with the dice rolls string.
Krux then takes this hash, runs unhexlify
on it to encode it as bytes, and deterministically converts it into a mnemonic according to the BIP-39 Reference Implementation.
Note: For 12-word mnemonics, only the first half of the SHA256 hash is used (128 bits), while 24-word mnemonics use the full hash (256 bits).
"},{"location":"getting-started/usage/generating-a-mnemonic/#how-to-verify","title":"How to verify","text":"Don't trust, verify. We encourage you not to trust any claim you cannot verify yourself. Therefore, there are wallets that use compatible algorithms to calculate the entropy derived from dice rolls. You can use the SeedSigner or Coldcard hardware wallets, or even the Bitcoiner Guide website, they share the same logic that Krux uses and will give the same mnemonic for the dice roll method.
"},{"location":"getting-started/usage/generating-a-mnemonic/#alternatives","title":"Alternatives","text":"You can use any other offline airgapped devices to generate your mnemonic. If you have an old Android smartphone that is offline (in airplane mode [no active CDMA or GSM chip], no Wifi connection, no Bluetooth and localization service turned off), you can use the Krux app for Android. If you want to use a regular PC, a common strategy is to boot the PC using Tails from a USB stick, without connecting the device to the internet, and then you can run Krux using our simulator, use a copy of the the Bitcoiner Guide website or even Ian Coleman's BIP-39 Tool. It's worth noting that both generate a QR code that Krux can read via the QR input method mentioned on the next page (Loading a Mnemonic).
"},{"location":"getting-started/usage/loading-a-mnemonic/","title":"Loading a Mnemonic","text":"Once you have either a 12- or 24-word mnemonic, choose Load Mnemonic
on Krux's start menu, and you will be presented with several input methods:
"},{"location":"getting-started/usage/loading-a-mnemonic/#input-methods","title":"Input Methods","text":""},{"location":"getting-started/usage/loading-a-mnemonic/#via-camera","title":"Via Camera","text":"
You can choose to use the camera to scan a QR code
or Tiny Seed
metal plate backup.
It's unpleasant having to manually enter 12 or 24 words every time you want to use Krux. To remedy this you can instead use the device's camera to read a QR code containing the words. Krux will decode QR codes of four types:
After opening your wallet via one of the manual methods you can use Krux to create QR codes of all types above, transcript them to paper or metal using the transcription helpers or attach a thermal printer to your Krux and print out the mnemonic. Check out the Printing section for more information. You can also use an offline QR code generator for this (ideally on an airgapped device).
"},{"location":"getting-started/usage/loading-a-mnemonic/#tiny-seed","title":"Tiny Seed","text":"Tiny Seed is a compact metal plate mnemonic backup method. Krux devices have machine vision capabilities that allow users to scan these metal plates and instantly load mnemonics engraved on them. To properly scan them place the Tiny Seed over a black background and paint the punched bits black to increase contrast. You can also scan the thermally printed version, or a filled template. Find templates to scan or print here.
"},{"location":"getting-started/usage/loading-a-mnemonic/#via-manual-input","title":"Via Manual Input","text":"Manually type Words
, Word Numbers
, Tiny Seed
(toggle the bits or punches) or Stackbit
(model 1248 metal plate backup).
Enter each word of your BIP-39 mnemonic one at a time. Krux will disable impossible-to-reach letters as you type and will attempt to autocomplete your words to speed up the process.
On your 12th or 24th word, you can leave it blank to have Krux generate the final checksum word of your mnemonic for you. This is useful when you choose a manual method to generate your mnemonic and want the final BIP-39 checksum word to be valid.
"},{"location":"getting-started/usage/loading-a-mnemonic/#word-numbers","title":"Word Numbers","text":""},{"location":"getting-started/usage/loading-a-mnemonic/#decimal","title":"Decimal","text":"Enter each word of your BIP-39 mnemonic as a number from 1 to 2048 one at a time. You can use this list for reference.
"},{"location":"getting-started/usage/loading-a-mnemonic/#hexadecimal-and-octal","title":"Hexadecimal and Octal","text":"You can also enter your BIP-39 mnemonic word's numbers (1-2048) in hexadecimal format, with values ranging from 0x1 to 0x800, or in octal format, with values ranging from 01 to 04000. This is useful with some metal plate backups that uses those formats.
"},{"location":"getting-started/usage/loading-a-mnemonic/#final-checksum-word","title":"Final checksum word","text":"On your 12th or 24th word, you can leave it blank to have Krux generate the final checksum word of your mnemonic for you. This is useful when you choose a manual method to generate your mnemonic and want the final BIP-39 checksum word to be valid.
"},{"location":"getting-started/usage/loading-a-mnemonic/#tiny-seed-bits","title":"Tiny Seed (Bits)","text":"Enter the BIP-39 mnemonic word's numbers (1-2048) in binary format, toggling necessary bits to recreate each of the word's respective number. The last word will have checksum bits dynamically toggled while you fill the bits.
"},{"location":"getting-started/usage/loading-a-mnemonic/#stackbit-1248","title":"Stackbit 1248","text":"Enter the BIP-39 mnemonic word's numbers (1-2048) using the Stackbit 1248 metal plate backup method, where each of the four digits of the word's number is a sum of the numbers marked (punched) 1, 2, 4, or 8. For example, to enter the word \"pear\", number 1297, you must punch (1)(2)(1+8=9)(1+2+4=7).
"},{"location":"getting-started/usage/loading-a-mnemonic/#from-storage","title":"From Storage","text":"You can retrieve mnemonics previously stored on device's internal flash or external (SD card). All stored mnemonics are encrypted, to load them you'll have to enter the same key you used to encrypt them.
"},{"location":"getting-started/usage/loading-a-mnemonic/#wallet-loading-sequence","title":"Wallet loading sequence","text":""},{"location":"getting-started/usage/loading-a-mnemonic/#confirm-mnemonic-words","title":"Confirm Mnemonic Words","text":"Once you have entered your mnemonic, you will be presented with the full list of words to confirm.
"},{"location":"getting-started/usage/loading-a-mnemonic/#passphrase","title":"Passphrase","text":"After confirming the mnemonic words, you can optionally choose to type or scan a BIP-39 passphrase. When typing, swipe left or right to change modes if your device has a touchscreen. For scanning, you can also create a QR code from your offline passphrase in Tools.
"},{"location":"getting-started/usage/loading-a-mnemonic/#fingerprint","title":"Fingerprint","text":"The wallet's fingerprint, if you have it noted down, will help you make sure you entered the correct mnemonic and passphrase (optional) and will load the expected wallet.
"},{"location":"getting-started/usage/loading-a-mnemonic/#single-sig-or-multisig","title":"Single-sig or Multisig","text":"After loading your mnemonic and passphrase (optional), you will be asked if you want to use it as part of a Single-sig
or Multisig
wallet.
Your choice here will subtly change the generated xpub that is used to set up your device in your wallet coordinator software. You can learn more about the difference in the following guides for using single-sig and multisig wallets.
Now, onto the main menu...
"},{"location":"getting-started/usage/navigating-the-main-menu/","title":"Navigating the Main Menu","text":"After entering your mnemonic, and loading a wallet, you will find yourself on Krux's main menu. Below is a breakdown of the entries available:
"},{"location":"getting-started/usage/navigating-the-main-menu/#mnemonic","title":"Mnemonic","text":"
This will open a new submenu with the following options to backup your mnemonic. If you set a printer driver, it will also give the option to print the backup!
"},{"location":"getting-started/usage/navigating-the-main-menu/#words","title":"Words","text":"Display the mnemonic words as text so you can write them down.
"},{"location":"getting-started/usage/navigating-the-main-menu/#numbers","title":"Numbers","text":"Display the mnemonic word numbers in decimal, hex, or octal format.
"},{"location":"getting-started/usage/navigating-the-main-menu/#plaintext-qr","title":"Plaintext QR","text":"Generate a QR containing the mnemonic words as regular text, where words are separated by spaces.
"},{"location":"getting-started/usage/navigating-the-main-menu/#compact-seedqr","title":"Compact SeedQR","text":"A QR code is created from a binary representation of mnemonic words. Format created by SeedSigner backup-qr-compact
"},{"location":"getting-started/usage/navigating-the-main-menu/#seedqr","title":"SeedQR","text":"Words are converted to their BIP-39 numeric indexes, those numbers are then concatenated as a string and finally converted to a QR code. Format created by SeedSigner
"},{"location":"getting-started/usage/navigating-the-main-menu/#stackbit-1248","title":"Stackbit 1248","text":"This metal backup format represents the BIP-39 mnemonic word's numbers (1-2048). Each of the four digits is converted to a sum of 1, 2, 4 or 8. This option does not print even if a printer driver is set.
"},{"location":"getting-started/usage/navigating-the-main-menu/#tiny-seed","title":"Tiny Seed","text":"This metal backup format represents the BIP-39 mnemonic word's numbers (1-2048) in binary format on a metal plate, where the 1's are marked (punched) and the 0's are left intact.
"},{"location":"getting-started/usage/navigating-the-main-menu/#encrypt-mnemonic","title":"Encrypt Mnemonic","text":"This feature allows you to back up your mnemonic by encrypting it and storing it on the device's flash memory, an SD card, or in QR code format. You can customize the encryption method and parameters in the settings.
For convenience, you may choose to store the encrypted mnemonic on flash memory or an SD card, but it is advisable not to rely solely on these methods for backup. Flash storage can degrade over time and may be subject to permanent damage, resulting in the loss of stored information.
When using any of the encryption methods, you will be prompted to enter an encryption key. This key can be provided in text or QR code format. Additionally, you have the option to set a custom ID for easier management of your mnemonics. If a custom key is not specified, the device's current loaded wallet fingerprint will be used as the ID.
"},{"location":"getting-started/usage/navigating-the-main-menu/#store-on-flash","title":"Store on Flash","text":"This option stores the encrypted mnemonic in the device's flash memory. You can decrypt and load it later through the \"Load Mnemonic\" -> \"From Storage\" option.
"},{"location":"getting-started/usage/navigating-the-main-menu/#store-on-sd-card","title":"Store on SD Card","text":"If an SD card is available, this option stores the encrypted mnemonic on it. You can decrypt and load it later through the \"Load Mnemonic\" -> \"From Storage\" option.
"},{"location":"getting-started/usage/navigating-the-main-menu/#encrypted-qr-code","title":"Encrypted QR Code","text":"This option converts the encrypted mnemonic into a QR code. When you scan this QR code through \"Load Mnemonic\" -> \"Via Camera\" -> \"QR Code,\" you will be prompted to enter the decryption key to load the mnemonic stored in it.
Learn more about Krux Mnemonics Encryption
"},{"location":"getting-started/usage/navigating-the-main-menu/#extended-public-key","title":"Extended Public Key","text":"A menu will be presented with options to display your master extended public key (xPub) as text and as a QR code. Depending on whether a single-sig or multisig wallet was loaded, the options shown will be xPub, zPub, or ZPub. When displayed as text, the extended public key can be stored on an SD card if available. If you choose to export a QR code, you can not only scan it but also save it as an image on an SD card or print it if a thermal printer is attached.
All QR codes will contain key origin information in key expressions. If your coordinator cannot parse this information, it will not be capable of importing the wallet's fingerprint. As a result, Krux will not be able to sign transactions created by it unless you manually add the fingerprint so that it can be used to create Krux compatible PSBTs.
"},{"location":"getting-started/usage/navigating-the-main-menu/#wallet-descriptor","title":"Wallet Descriptor","text":"When you select this option for the first time, you will be prompted to load a wallet. The camera will activate, and you will need to scan a wallet backup QR code generated by your wallet coordinator software. If the scan is successful, a preview of the wallet will be displayed for confirmation. If you abort the scan, you can alternatively load the wallet descriptor from an SD card.
If you access this option again after having loaded your wallet, you will see the wallet's name, fingerprints and the abbreviated xPubs of all cosigners, along with a QR code containing the exact data that was initially loaded. If an SD card is inserted, you can save the descriptor to it. Additionally, if you have a thermal printer attached, you can print this QR code.
Please note that once a wallet is loaded, it cannot be changed. To load a different wallet, you will need to restart the device and re-enter your mnemonic.
"},{"location":"getting-started/usage/navigating-the-main-menu/#address","title":"Address","text":"Scan, verify, export or print your wallet addresses.
"},{"location":"getting-started/usage/navigating-the-main-menu/#scan-address","title":"Scan Address","text":"This option turns on the camera and allows you to scan in a QR code of a receive address. Upon scanning, it will render its own QR code of the address back to the display along with the (text) address below it. You could use this feature to scan the address of someone you want to send coins to and display the QR back to your wallet coordinator rather than copy-pasting an address.
If you have a thermal printer attached, you can also print this QR code.
After proceeding through this screen, you will be asked if you want to check that the address belongs to your wallet. If you confirm, it will exhaustively search through as many addresses derived from your wallet as you want in order to find a match.
This option exists as an extra security check to verify that the address your wallet coordinator has generated is authentic and belongs to your wallet.
"},{"location":"getting-started/usage/navigating-the-main-menu/#receive-addresses","title":"Receive Addresses","text":"List your wallet receiving addresses, you can browse to select an arbitrary address to show your QRCode and print if you want
"},{"location":"getting-started/usage/navigating-the-main-menu/#change-addresses","title":"Change Addresses","text":"List your wallet change addresses, you can browse to select an arbitrary address to show your QRCode and print if you want
"},{"location":"getting-started/usage/navigating-the-main-menu/#sign","title":"Sign","text":"Under Sign, you can choose to sign a PSBT or a message. You can load both PSBTs and messages scanning QR codes or loading from files on a SD card.
"},{"location":"getting-started/usage/navigating-the-main-menu/#psbt","title":"PSBT","text":"To sign a Bitcoin PSBT, you have the following options:
Upon loading the PSBT, you will be presented with a preview showing the amount of BTC being sent, the recipient's address, and the transaction fee. Amounts are displayed according to your locale and the International Bureau of Weights and Measures, while still adhering to the concept of the Satcomma standard format.
If you choose to proceed and sign the transaction, the signed PSBT can be exported in two ways:
If a thermal printer is attached to your device, you can also print the PSBT QR codes for record-keeping or further processing.
"},{"location":"getting-started/usage/navigating-the-main-menu/#message","title":"Message","text":"Similar to PSBTs, Krux can load, sign, and export signatures for messages. This feature allows you to attest not only to the ownership of the messages themselves but also to the ownership of Bitcoin addresses and the authorship of documents and files.
"},{"location":"getting-started/usage/navigating-the-main-menu/#standard-messages-and-files","title":"Standard Messages and Files","text":"You can scan or load a file from an SD card, the content can be plaintext or the SHA-256 hash of a message. Upon loading, you will be shown a preview of the message's SHA-256 hash for confirmation before signing.
If you confirm, a signature will be generated, and you will see a base64-encoded version of it. You can then choose to export it as a QR code or save it to an SD card. If a thermal printer is attached, you can also print the QR code.
Following this, you will see and be allowed to export your raw (master) public key in hexadecimal form, which can be used by others to verify your signature. If a thermal printer is attached, you can also print this QR code.
This feature is used to sign Krux releases, airgapped, using a Krux device.
"},{"location":"getting-started/usage/navigating-the-main-menu/#messages-at-address","title":"Messages at Address","text":"Coordinators like Sparrow and Specter offer the possibility to sign messages at a Bitcoin receive address, allowing you to attest ownership of that address. Krux will detect if the message is of this type and present a similar workflow for signing. The main difference is that the address will be displayed along with the raw message, and since the message is signed with a derived address instead of the master public key, Krux won't offer the option to export the raw public key after the signature.
"},{"location":"getting-started/usage/using-a-multisig-wallet/","title":"Using a Multisig Wallet","text":"This guide assumes you have already created a mnemonic for each cosigner that will be in your multisig wallet. If that is not the case, head over to the Generating a Mnemonic page and complete those steps first.
When entering your mnemonics into Krux, make sure to select Multisig
for all keys in your multisignature scheme. The choice of Single-sig
vs. Multisig
at this point will change the derivation path used to generate your master extended public key (xpub) which will affect how wallet software handles it.
Selecting Multisig
will derive an xpub using the derivation path m/48'/0'/0'/2'
on mainnet and m/48'/1'/0'/2'
on testnet, which indicates to wallet software that a Multisig Wallet script type should be used, specifically the Native Segwit script P2WSH
, or just wsh
.
Note: While not required, the load of the Wallet Descriptor
is strongly recommended to load your multisig wallet into Krux before signing a PSBT as it will allow the device to verify that the transaction it is signing has the correct list of cosigners as defined in the wallet. It is also useful if you wish to print a backup of the wallet or visually inspect the list of cosigners being output by your wallet coordinator.
In Specter Desktop, you will need to import your public key by adding a new device. Press the Add new device button on the left side of the app.
Krux is not listed as one of the available device types on the Add Device screen, so you will need to select the Other option.
You will be taken to the Upload Keys screen where you can choose to Scan QR code.
On your Krux, navigate to the Extended Public Key option under the main menu and show the first QR code to Specter Desktop.
It should import the xpub and display the Purpose as #0 Multisig Sig (Segwit).
Give the device a name and press Continue. You should see the new device in the devices list on the left side of the app.
Repeat this process for every key that will be in your multisig wallet.
Once all key devices have been added, you can make a wallet using them. Press the Add new wallet button on the left side of the app.
Choose to create a Multisignature wallet when it asks which type of wallet you want on the following screen.
Select the devices you just added and press Continue.
Give your wallet a name, make sure to select Segwit for the wallet type, and decide how many of your keys are required to sign a transaction, then press Create wallet.
Congrats, you just created a multisig wallet!
"},{"location":"getting-started/usage/using-a-multisig-wallet/#load-the-wallet-into-krux","title":"Load the wallet into Krux","text":"Load the wallet into Krux by going to the Settings page in Specter Desktop, then click the Export tab. There, press the Export button to display a QR code of your wallet.
In Krux, select the Wallet Descriptor menu item option and scan the QR code.
If it worked, Krux should display the wallet information that it loaded:
"},{"location":"getting-started/usage/using-a-multisig-wallet/#receive-coins","title":"Receive coins","text":"
The Receive screen should show your first receive address that you can send funds to.
"},{"location":"getting-started/usage/using-a-multisig-wallet/#send-coins","title":"Send coins","text":"Go to Send in Specter Desktop, fill in the recipient address, amount, and any extra information you wish to supply, and click Create unsigned transaction.
You will now see a screen listing the devices in your wallet. Select the device you want to sign the PSBT transaction with.
Specter Desktop will display an animated QR code of the PSBT that you can scan with Krux by going to Sign > PSBT in its main menu. After scanning, Krux should display info about the transaction for you to confirm before signing.
Once you have confirmed, Krux will begin animating a QR code of the signed transaction that you can scan into Specter Desktop.
In Specter Desktop, click Scan signed transaction and show it the QR. Each part of the QR code that is read will receive a ghost icon to indicate progress.
Once all parts of the QR code have been read, you should see a checkmark next to your device indicating its signature was added.
Repeat this process for the remaining keys in your wallet until you have a quorum of signatures.
After the final signature, a window will popup asking you to broadcast the transaction. Click Send transaction and your transaction should be broadcasted to the network!
Congratulations, you have learned how to send a transaction using Specter Desktop \ud83c\udf89
"},{"location":"getting-started/usage/using-a-multisig-wallet/#sparrow","title":"Sparrow","text":""},{"location":"getting-started/usage/using-a-multisig-wallet/#create-the-wallet_1","title":"Create the wallet","text":"In Sparrow, create a new wallet by going to File > New Wallet and give it a name.
On the wallet screen, make sure to select a Multi Signature policy type with the Native Segwit (P2WSH) script type. Here you can decide how many keys will be in your multisig and how many should be required to sign a transaction.
Now, you will need to import your public key. To do so, press the Airgapped Hardware Wallet button under Keystores section. On the screen that pops up, look for Krux option and click its Scan... button.
On your Krux device, navigate to the Extended Public Key option in the main menu and click on XPUB - QR Code and show it to Sparrow.
It should import the xpub and show a key tab under Keystores section:
Repeat this process for every key that will be in your multisig wallet.
Once all keys have been added, click the blue Apply button to create your wallet.
Congrats, you just created a multisig wallet!
"},{"location":"getting-started/usage/using-a-multisig-wallet/#load-the-wallet-output-descriptor-into-krux","title":"Load the wallet output descriptor into Krux","text":"Load the wallet output descriptor into Krux by going to the Settings screen of the wallet in Sparrow, then click the (QR code symbol) button at Script Policy section to the right of the Descriptor: to display a QR code that you can scan with Krux.
In Krux, select the Wallet menu item option and scan the QR code.
If it worked, Krux should display the wallet information that it loaded:
"},{"location":"getting-started/usage/using-a-multisig-wallet/#receive-coins_1","title":"Receive coins","text":"
Navigate to the Receive screen where you should see your first receive address that you can send funds to.
"},{"location":"getting-started/usage/using-a-multisig-wallet/#send-coins_1","title":"Send coins","text":"Go to the Send screen, fill in the recipient address, amount, and any extra information you wish to supply, and click the blue Create Transaction button.
On the next screen, make sure that the Signing Wallet is the one you created and that the Sighash is set to All. Click the blue Finalize Transaction for Signing button.
On the next screen, click Show QR to make Sparrow display an animated QR code of the PSBT that you can scan with Krux by going to Sign > PSBT > Load from camera in its main menu.
After scanning, Krux should display info about the transaction for you to confirm before signing.
Once you have confirmed, Krux will begin animating a QR code of the signed transaction that you can scan into Sparrow.
In Sparrow, click Scan QR and show it the QR. A progress bar will indicate how many parts of the QR have been read.
Once all parts of the QR code have been read, you should see the signature bar partially fill indicating the signature was added.
Repeat this process for the remaining keys in your wallet until you have a quorum of signatures.
After the final signature, the bar will fill and two new buttons appear. Click the blue Broadcast Transaction button and your transaction should be broadcasted to the network!
Congratulations, you have learned how to send a transaction using Sparrow \ud83c\udf89
"},{"location":"getting-started/usage/using-a-multisig-wallet/#bluewallet","title":"BlueWallet","text":""},{"location":"getting-started/usage/using-a-multisig-wallet/#create-the-wallet_2","title":"Create the wallet","text":"In BlueWallet, create a new wallet by either pressing the + button or scrolling to the right until you see the Add now button.
On the screen that pops up, add a name for your wallet, tap on Vault, and tap Create to begin creating a multisig wallet.
On the following screen, you can proceed with the defaults or adjust the number of cosigners (default is 2-of-3) as needed by going into the Vault Settings. Make sure to leave the script type as p2wsh
.
Continue and you will be taken to a screen where you can import your keys.
Tap Import under the first Vault Key.
Tap again on Scan or import a file to begin scanning a QR code.
On your Krux, navigate to the Extended Public Key option under the main menu and show the first QR code to BlueWallet.
You should see a green checkmark next to the key if successful.
Repeat this process for every key that will be in your multisig wallet.
Once all keys have been added, tap Create.
From here, you can send or receive.
Congrats, you just created a multisig wallet!
"},{"location":"getting-started/usage/using-a-multisig-wallet/#load-the-wallet-into-krux_1","title":"Load the wallet into Krux","text":"Load the wallet into Krux by tapping the ellipsis in the top-right to see the wallet settings.
From here, tap Export Coordination Setup in order to display a QR code of your wallet.
In Krux, select the Wallet Descriptor menu item option and scan the QR code.
If it worked, Krux should display the wallet information that it loaded:
"},{"location":"getting-started/usage/using-a-multisig-wallet/#receive-coins_2","title":"Receive coins","text":"
Navigate to the Receive screen where you should see your first receive address that you can send funds to.
"},{"location":"getting-started/usage/using-a-multisig-wallet/#send-coins_2","title":"Send coins","text":"Go to the Send screen, fill in the recipient address, amount, and any extra information you wish to supply, and tap Next.
You should see an animated QR code of the PSBT that you can scan with Krux by going to Sign > PSBT in its main menu.
After scanning, Krux should display info about the transaction for you to confirm before signing.
Once you have confirmed, Krux will begin animating a QR code of the signed transaction that you can scan into BlueWallet.
Once all parts of the QR code have been read, you can then choose to broadcast the transaction, sending it to the network!
Congratulations, you have learned how to send a transaction using BlueWallet \ud83c\udf89
"},{"location":"getting-started/usage/using-a-single-sig-wallet/","title":"Using a Single-sig Wallet","text":"This guide assumes you have already created a mnemonic. If that is not the case, head over to the Generating a Mnemonic page and complete those steps first.
When entering your mnemonic into Krux, make sure to select Single-sig
before proceeding. The choice of Single-sig
vs. Multisig
at this point will change the derivation path used to generate your master extended public key (xpub) which will affect how wallet software handles it.
Selecting Single-sig
will derive an xpub using the derivation path m/84'/0'/0'
on mainnet and m/84'/1'/0'
on testnet, which indicates to wallet software that a Segregated Witness (Segwit) script type should be used. For single-sig wallets, this script is P2WPKH
, or just wpkh
.
Note: The load of the Wallet Descriptor
step is unnecessary for signing PSBTs with Single-sig wallets since the script type (wpkh
) and key are already known. However, this can be useful if you wish to print a backup of the wallet or want an additional sanity check.
In Specter Desktop, you will need to import your public key by adding a new device. Press the Add new device button on the left side of the app.
Krux is not listed as one of the available device types on the Add Device screen, so you will need to select the Other option.
You will be taken to the Upload Keys screen where you can choose to Scan QR code.
On your Krux, navigate to the Extended Public Key option under the main menu and show the first QR code to Specter Desktop.
It should import the xpub and display the Purpose as #0 Single Sig (Segwit).
Give the device a name and press Continue. You should see the new device in the devices list on the left side of the app.
After you've added a device with your key to Specter Desktop, you can make a wallet using it. Press the Add new wallet button on the left side of the app.
Choose to create a Single key wallet when it asks which type of wallet you want on the following screen.
Select the device you just added.
Give your wallet a name and make sure to select Segwit for the wallet type, then press Create wallet.
Congrats, you just created a single-sig wallet with your key!
"},{"location":"getting-started/usage/using-a-single-sig-wallet/#load-the-wallet-into-krux","title":"Load the wallet into Krux","text":"Load the wallet into Krux by going to the Settings page in Specter Desktop, then click the Export tab. There, press the Export button to display a QR code of your wallet.
In Krux, select the Wallet Descriptor menu item option and scan the QR code.
If it worked, Krux should display the wallet information that it loaded:
"},{"location":"getting-started/usage/using-a-single-sig-wallet/#receive-coins","title":"Receive coins","text":"
Navigate to the Receive screen where you should see a receive address that you can send funds to.
"},{"location":"getting-started/usage/using-a-single-sig-wallet/#send-coins","title":"Send coins","text":"Go to Send in Specter Desktop, fill in the recipient address, amount, and any extra information you wish to supply, and click Create unsigned transaction.
You will now see a screen listing the devices in your wallet. Select the device you want to sign the PSBT transaction with.
Specter Desktop will display an animated QR code of the PSBT that you can scan with Krux by going to Sign > PSBT in its main menu. After scanning, Krux should display info about the transaction for you to confirm before signing.
Once you have confirmed, Krux will begin animating a QR code of the signed transaction that you can scan into Specter Desktop.
In Specter Desktop, click Scan signed transaction and show it the QR. Each part of the QR code that is read will receive a ghost icon to indicate progress.
Once all parts of the QR code have been read, you should see a window popup asking you to broadcast the transaction. Click Send transaction and your transaction should be broadcasted to the network!
Congratulations, you have learned how to send a transaction using Specter Desktop \ud83c\udf89
"},{"location":"getting-started/usage/using-a-single-sig-wallet/#sparrow","title":"Sparrow","text":""},{"location":"getting-started/usage/using-a-single-sig-wallet/#create-the-wallet_1","title":"Create the wallet","text":"In Sparrow, create a new wallet by going to File > New Wallet and give it a name.
On the wallet screen, make sure to select a Single Signature policy type with the Native Segwit (P2WPKH) script type.
Now, you will need to import your public key. To do so, press the Airgapped Hardware Wallet button under Keystores section. On the screen that pops up, look for Krux option and click its Scan... button.
On your Krux device, navigate to the Extended Public Key option in the main menu and click on XPUB - QR Code and show it to Sparrow.
It should import the xpub and show a key tab under Keystores section:
If everything looks right, click the blue Apply button to create your wallet.
Congrats, you just created a single-sig wallet with your key!
"},{"location":"getting-started/usage/using-a-single-sig-wallet/#load-the-wallet-output-descriptor-into-krux-optional","title":"Load the wallet output descriptor into Krux (optional)","text":"Single-sig wallets don't need to perform this step, it is optional! Load the wallet output descriptor into Krux by going to the Settings screen of the wallet in Sparrow, then click the (QR code symbol) button at Script Policy section to the right of the Descriptor: to display a QR code that you can scan with Krux.
In Krux, select the Wallet menu item option and scan the QR code.
If it worked, Krux should display the wallet information that it loaded:
"},{"location":"getting-started/usage/using-a-single-sig-wallet/#receive-coins_1","title":"Receive coins","text":"
Navigate to the Receive screen where you should see a receive address that you can send funds to.
"},{"location":"getting-started/usage/using-a-single-sig-wallet/#send-coins_1","title":"Send coins","text":"Go to the Send screen, fill in the recipient address, amount, and any extra information you wish to supply, and click the blue Create Transaction button.
On the next screen, make sure that the Signing Wallet is the one you created and that the Sighash is set to All. Click the blue Finalize Transaction for Signing button.
On the next screen, click Show QR to make Sparrow display an animated QR code of the PSBT that you can scan with Krux by going to Sign > PSBT > Load from camera in its main menu.
After scanning, Krux should display info about the transaction for you to confirm before signing.
Once you have confirmed, Krux will begin animating a QR code of the signed transaction that you can scan into Sparrow.
In Sparrow, click Scan QR and show it the QR. A progress bar will indicate how many parts of the QR have been read.
Once all parts of the QR code have been read, you should see the signature bar fill and two new buttons appear. Click the blue Broadcast Transaction button and your transaction should be broadcasted to the network!
Congratulations, you have learned how to send a transaction using Sparrow \ud83c\udf89
"},{"location":"getting-started/usage/using-a-single-sig-wallet/#bluewallet","title":"BlueWallet","text":""},{"location":"getting-started/usage/using-a-single-sig-wallet/#create-the-wallet_2","title":"Create the wallet","text":"In BlueWallet, create a new wallet by either pressing the + button or scrolling to the right until you see the Add now button.
On the screen that pops up, tap Import wallet to import your public key.
On the following screen, tap Scan or import a file and it will begin trying to scan a QR code.
On your Krux, navigate to the Extended Public Key option under the main menu and make sure to show the second, zpub QR code to BlueWallet.
It should import the key and create a watch-only wallet. From here, you can send or receive.
Congrats, you just created a single-sig wallet with your key!
"},{"location":"getting-started/usage/using-a-single-sig-wallet/#load-the-wallet-into-krux_1","title":"Load the wallet into Krux","text":"Load the wallet into Krux by tapping the ellipsis in the top-right to see the wallet settings.
From here, tap Export/Backup in order to display a QR code of your wallet.
In Krux, select the Wallet Descriptor menu item option and scan the QR code.
If it worked, Krux should display the wallet information that it loaded:
"},{"location":"getting-started/usage/using-a-single-sig-wallet/#receive-coins_2","title":"Receive coins","text":"
Navigate to the Receive screen where you should see a receive address that you can send funds to.
Note that you can verify the receive address belongs to your wallet by using the Scan Address option.
"},{"location":"getting-started/usage/using-a-single-sig-wallet/#send-coins_2","title":"Send coins","text":"Go to the Send screen, fill in the recipient address, amount, and any extra information you wish to supply, and tap Next.
You should see an animated QR code of the PSBT that you can scan with Krux by going to Sign > PSBT in its main menu.
After scanning, Krux should display info about the transaction for you to confirm before signing.
Once you have confirmed, Krux will begin animating a QR code of the signed transaction that you can scan into BlueWallet.
Once all parts of the QR code have been read, you can then choose to broadcast the transaction, sending it to the network!
Congratulations, you have learned how to send a transaction using BlueWallet \ud83c\udf89
"},{"location":"snippets/12th-24th-word-generate/","title":"12th 24th word generate","text":"On your 12th or 24th word, you can leave it blank to have Krux generate the final checksum word of your mnemonic for you. This is useful when you choose a manual method to generate your mnemonic and want the final BIP-39 checksum word to be valid.
"},{"location":"snippets/amigo-more-info-faq/","title":"Amigo more info faq","text":""},{"location":"snippets/amigo-more-info-faq/#a-note-about-the-maix-amigo","title":"A note about the Maix Amigo","text":"Some Amigo screens have inverted X coordinates, others display colors differently. For more info see FAQ
"},{"location":"snippets/flash-krux-logo/","title":"Flash krux logo","text":"When the flashing process completes, you should see the Krux logo:
If it doesn't, try turning your device off and on by holding down the power button for six seconds.
Congrats, you're now running Krux!
"},{"location":"snippets/m5stickv-usb-c/","title":"M5stickv usb c","text":"M5stickV's USB-C port lacks pull up resistors required for it to be recognized and powered by host (computer) USB-C ports. If you don't have an USB-A available, you can use a USB hub connected between your computer's USB-C and M5stickV.
"},{"location":"snippets/sd-card-info-faq/","title":"Sd card info faq","text":"We cannot guarantee that a microSD card is compatible and will work in your device; you'll need to test it on the device to be sure, read the FAQ for more info.
"},{"location":"snippets/single-multi-wallet-descriptor/","title":"Single multi wallet descriptor","text":"In Krux, select the Wallet Descriptor menu item option and scan the QR code.
If it worked, Krux should display the wallet information that it loaded:
"},{"location":"snippets/tips-after-install/","title":"Tips after install","text":""},{"location":"snippets/tips-after-install/#multilingual-support","title":"Multilingual support","text":"Prefer a different language? Krux has support for multiple languages. Once at the start screen, go to Settings
, followed by Locale
, and select the locale you wish to use.
Once you've installed the initial firmware on your device via USB, you can either continue updating the device by flashing or you can perform upgrades via microSD card to keep the device airgapped.
"},{"location":"snippets/sparrow/broadcast-sparrow/","title":"Broadcast sparrow","text":"Click the blue Broadcast Transaction button and your transaction should be broadcasted to the network!
Congratulations, you have learned how to send a transaction using Sparrow \ud83c\udf89
"},{"location":"snippets/sparrow/import-xpub-sparrow/","title":"Import xpub sparrow","text":"Now, you will need to import your public key. To do so, press the Airgapped Hardware Wallet button under Keystores section. On the screen that pops up, look for Krux option and click its Scan... button.
On your Krux device, navigate to the Extended Public Key option in the main menu and click on XPUB - QR Code and show it to Sparrow.
It should import the xpub and show a key tab under Keystores section:
"},{"location":"snippets/sparrow/load-wallet-output-sparrow/","title":"Load wallet output sparrow","text":"In Krux, select the Wallet menu item option and scan the QR code.
If it worked, Krux should display the wallet information that it loaded:
"},{"location":"snippets/sparrow/send-coins-sparrow/","title":"Send coins sparrow","text":""},{"location":"snippets/sparrow/send-coins-sparrow/#send-coins","title":"Send coins","text":"Go to the Send screen, fill in the recipient address, amount, and any extra information you wish to supply, and click the blue Create Transaction button.
On the next screen, make sure that the Signing Wallet is the one you created and that the Sighash is set to All. Click the blue Finalize Transaction for Signing button.
On the next screen, click Show QR to make Sparrow display an animated QR code of the PSBT that you can scan with Krux by going to Sign > PSBT > Load from camera in its main menu.
After scanning, Krux should display info about the transaction for you to confirm before signing.
Once you have confirmed, Krux will begin animating a QR code of the signed transaction that you can scan into Sparrow.
In Sparrow, click Scan QR and show it the QR. A progress bar will indicate how many parts of the QR have been read.
"}]} \ No newline at end of file diff --git a/sitemap.xml b/sitemap.xml index 280c8ac78..0145996a7 100644 --- a/sitemap.xml +++ b/sitemap.xml @@ -2,231 +2,231 @@