According to the release notes GUI v0.12.3.0 includes Ledger support. How do I generate a Ledger Monero wallet with the GUI (monero-wallet-gui)?
-
It is necessary to export the private key to use the wallet normally, that is, I really do not understand the difference between the two options, I would appreciate a response, thank you in advance.– Darik GonzálezAug 15, 2018 at 21:31
-
What part of the explanation in the guide do you not understand?– dEBRUYNE ♦Aug 16, 2018 at 15:02
4 Answers
Before we start, first two notes:
The Ledger Monero App is available for both the Ledger Nano S and the Ledger Nano X.
If you are using Windows or Mac OS X and run active AV (AntiVirus) software, the AV software will likely quarantine the binaries (i.e. the
.zip
file (Windows) or.tar.bz2
file (Mac OS X)) you download from the downloads page of the official website. To resolve this issue, I'd advise to use this guide.
In addition, we have to ensure that we're sufficiently prepared. This entails the following:
Windows
This guide assumes you have already initialized your Ledger device and thus generated a 24 word mnemonic seed.
You need to run / use GUI v0.18.1.2, which can be found here, on the downloads page of the official website, or on Github.
You need to install the Ledger Monero app.
Your Ledger needs to be plugged in and the Ledger Monero app should be running.
Ledger Live (the desktop application) should be closed.
Mac OS X
This guide assumes you have already initialized your Ledger device and thus generated a 24 word mnemonic seed.
You need to run / use GUI v0.18.1.2, which can be found here, on the downloads page of the official website, or on Github.
You need to install the Ledger Monero app.
Your Ledger needs to be plugged in and the Ledger Monero app should be running.
Ledger Live (the desktop application) should be closed.
Linux
This guide assumes you have already initialized your Ledger device and thus generated a 24 word mnemonic seed.
You need to run / use GUI v0.18.1.2, which can be found here, on the downloads page of the official website, or on Github.
You need to install the Ledger Monero app.
You may have to add some udev-rules. A script can be found here.
Your Ledger needs to be plugged in and the Ledger Monero app should be running.
Ledger Live (the desktop application) should be closed.
Now that we're sufficiently prepared, let's start! Note that the following instructions are general. If anything is OS specific I'll mention it explicitly.
Browse to the directory / folder GUI v0.18.1.2 is located.
Open v0.18.1.2
monero-wallet-gui.app
(Mac OS X) ormonero-wallet-gui.exe
(Windows) ormonero-wallet-gui
(Linux).If it tries to open an existing wallet, click on the
Cancel
button. This will bring you back to the wizard.On the first page of the wizard, select your desired language.
On the second page of the wizard, you will have to select a mode. There are three modes, namely
Simple mode
,Simple mode (bootstrap)
andAdvanced
.
- In
Simple mode
mode, the GUI wallet will automatically connect to a remote node and have a simple interface. This mode excludes the need for the blockchain sync and ensures you can immediately use the wallet. However, it weakens your privacy insofar as the remote node will be able to see your IP address as well as associate any of your transactions with your IP address. Besides, using a remote node does not contribute to the strength and decentralization of the network. - In
Simple mode
(bootstrap) mode, the wallet automatically connects to a remote node whilst syncing your own (local) node in the background. The wallet will subsequently switch to your own (local) node once it is fully synced. This allows you to immediately use the wallet while still eventually using your own (local) node (which is optimal for privacy and contributes to the strength and decentralization of the network). Additionally, this mode has a simple interface as well. This mode is the default and is thus recommended by the developers for new users. - In
Advanced
mode, you will perform the blockchain sync from scratch (which may take from 10-14 hours (with an SSD) to several days to complete (with an HDD) and requires approximately 75 GB of free disk space) without connecting to a remote node. Advanced mode also contains all features that were deemed as advanced by the developers (and thus were left out of the simple mode). Note that you won't be able to properly use your wallet until the blockchain sync from scratch has been completed. Lastly, Advanced mode allows you to customly set a remote node (in case you, for instance, want to connect to your own remote node).
On the third page of the wizard, choose
Create a new wallet from hardware device
Enter a new
Wallet name
Make sure the
Create a new wallet from device
option is selected.Make sure the
Device name
is set toLedger
Go to the next page.
The Ledger will ask whether you want to export the private view key or not. First and foremost, your funds cannot be compromised with merely the private view key. Exporting the private view key enables the client (on the computer - Monero v0.18.1.2) to scan blocks looking for transactions that belong to your wallet / address. If this option is not utilized, the device (Ledger) will scan blocks, which will be significantly slower. There is, however, one caveat. That is, if your system gets compromised, the adversary will potentially be able to compromise your private view key as well, which is detrimental to privacy. This is virtually impossible when the private view key is not exported.
You may have to hit confirm twice before it proceeds.
Your Ledger Monero wallet will now be generated. Note that this may take up to a few minutes. Furthermore, there will be no immediate feedback in the GUI nor on the Ledger.
Enter a password for your wallet. Note: this password is not required / needed to recover the Ledger Monero wallet.
Proceed to the next page, which will provide an overview (note: there will be an additional setup page in case you chose
Advanced
mode, please see the Addendum).Press
Use Monero
.Congratulations, you can now use your Ledger Monero wallet in conjunction with the GUI.
Addendum: (in case Advanced
mode was chosen)
On the Daemon settings
page you basically have three options. First, you can simply run a local node. This entails performing the full blockchain sync, which may take from 10-14 hours (with an SSD) to several days to complete (with an HDD). Second, you can run a local node and make use of a bootstrap node. This also entails performing the full blockchain sync. However, this option allows you to immediately use the wallet whilst your local node performs the initial blockchain sync in the background. Third, you can use a remote node, which allows you to immediately use the wallet. Using your own (local) node is most advantageous with respect to privacy and security plus it contributes to the strength and decentralization of the network. It, however, requires approximately 60 GB of free space. Furthermore, performing the initial blockchain sync is quite resource intensive and may cause the GUI to feel laggy / buggy. Although, this can be mitigated by applying this guide. Now, practically speaking, you can choose option 1 by leaving all boxes blank and, optionally, specifying a custom Blockchain location
. Option 2 is chosen by entering a remote node (a list of remote nodes can be found here in the Bootstrap node
box. Option 3 is chosen by first ticking the Connect to a remote node
box and subsequently entering a remote node (to reiterate, a list of remote nodes can be found here.
A few final notes:
I'd strongly advise to test the full process first. That is, send a small amount to the wallet and subsequently restore it (using aforementioned guide) to verify that you can recover the wallet.
The wallet files are, by default, stored in
/Users/<username>/Monero/<wallet-name>
(Mac OS X) orDocuments\Monero\<wallet-name>
(Windows) or/home/<username>/Monero/<wallet-name>
(Linux).The
.keys
wallet file stored on your system contains some settings related to the wallet, your public keys, and your private view key in case you exported it. It does not contain your private spend key. Put differently, the private spend key remains on the Ledger device.You only have to use this guide once (i.e. upon wallet creation). Thereafter, you'd basically use it similar to how you normally use the GUI. That is:
[1] Make sure your Ledger is plugged in and the Monero app is running.
[2] Open GUI v0.18.1.2
[3] Enter the password to open the wallet.
[4] Optionally export the private view key on the Ledger device.
- It's imperative that the closing process of your Ledger Monero wallet is done in this specific consecutive order:
[1] Exit the GUI by clicking on the x
(right top).
[2] Exit the Ledger Monero app.
[3] Unplug the Ledger device.
- If you have any further questions or need assistance, please leave a comment in this thread.
-
1Due to the "loop issue" (not sure how deterministic this is) I would recommend to add that when creating the wallet one should turn off the auto-lock feature in the Ledger settings temporarily.– yngveFeb 20, 2019 at 8:06
-
As far as I know, cslashm implemented some mitigations that would prevent the wallet refresh from looping (even if the device locked itself).– dEBRUYNE ♦Feb 20, 2019 at 15:38
-
I'm a little nervous about this: "It's imperative that the closing process of your Ledger Monero wallet is done in this specific consecutive order:" What if this process is accidentally now followed? What are the consequences? Jun 19, 2019 at 5:07
-
1@StatsStudent - The mere consequence is that the wallet progress won't be saved properly and thus any wallet refresh has to be performed again. For example, if you refreshed the last 10000 blocks and did not exit the wallet properly, you will have to refresh them again in the next session.– dEBRUYNE ♦Jun 19, 2019 at 6:27
dEBRUYNE's guide is comprehensive but for Windows 7 users you may run into an error along the lines of:
failed to generate new wallet: Fail SCard API : (-2146435026) 0x8010002E Device=0, hCard=0, hContext=14771806782070194176
The problem: You need to update your Drivers and it's not easy to see this issue. This is a compilation of the solutions I found from various threads:
In the device manager, under Universal Serial Bus controllers, one of the drivers the ledger will show up as is a USB Composite Device. Go to update the driver, but when doing so, search for the driver under C:\Windows\winsxs. After doing this the device should show up under Smart card readers as a Microsoft Usbccid Smartcard Reader (WUDF).
After the driver is updated the device does not show up as a Smart Card Reader unless the Monero app is open on the Ledger.
If your nano does not appear under Universal Serial Bus controllers it may be listed elsewhere. Find out by following the below steps (It's possible your options under hardware tab may be different than mine, if so please reply):
Devices and Printers and right clicking Nano > Properties > Hardware tab it will display:
HID Compliant Device
USB Input Device
Now you need to update the driver in Device Manager by expanding Human Interface Devices > USB Input Device and right click your nano driver (Matching the ID in Devices and Printers if you're not sure which one it is) and click properties and select the Drivers tab and Update Driver and search for the driver under this folder C:\Windows\winsxs
The original answer was written here: https://github.com/monero-project/monero/issues/4187#issuecomment-409088700 by TheRealDarkhorse702
I had some initial issues/errors getting Monero GUI v0.14.0.0 working with the Monero app on a Ledger Nano S, specifically creating a new hardware wallet on the Nano S. Started with errors that suggested USB issues ("failed to generate new wallet: Wrong Device Status : SW=6e00 (EXPECT=9000, MASK=ffff)") as I was seeing a 'Nano S' item/entry in Device Manager that was showing as missing a driver. This ended up not to be the issue, rather, turned out to be Comodo AV quarantining some Monero GUI components such as monerod.exe et al.
I whitelisted a couple of folder paths containing the zip file and the unzipped file contents but it was still throwing up the same error. I got it working by choosing 'Restore a wallet from device' option instead of the 'Create a new wallet from device' option on the 3rd screen.
It turns out that when the Ledger Monero app is installed into the Ledger Nano S from the Ledger Live desktop app, it creates a wallet. I noticed this because before I had started the Monero GUI, I opened the Ledger Monero app in the Nano and saw an XMR address.
To reiterate, in my case, it looked like the wallet is not created by the Monero GUI but rather by installing the Ledger Monero app from the Ledger Live desktop app.
So the steps that worked for me are:
Install the Ledger Monero app from the Ledger Live desktop app
Open the Ledger Monero app in the Nano S by clicking both buttons on the device
Check if it has an XMR address
Open the the Monero GUI app and on the 3rd screen, choose 'Restore a wallet from device' option instead of the 'Create a new wallet from device' option
Hope this helps others.
Adding a small guide for Manjaro Linux users here (and possibly other Arch-based systems as well) as the process is a bit different than how it is explained in:
https://github.com/LedgerHQ/blue-app-monero/blob/master/doc/user/bolos-app-monero.pdf
specifically part 3.2.1.
The guide tells you to install the following packages: "pcsc-tools" "pcscd" and "libpcsclite1:amd64". However on Manjaro I found that two of these do not exist in the repositories."pcsc-tools" package is there so you can just go ahead and install it. A package called "pcsclite" was already installed on my system and can otherwise be installed from the repo. "pcscd" and "libpcsclite1:amd64" however are missing. This means that there most likely is no file called "libccid_info.plist"and this file is needed and has to be configured as described in the guide.
What I did was to install the package called "ccid" and also a package called "opensc". Not entirely sure if both are needed and you could try to get the wallet working with only one of them, mainly I believe that it was "ccid" that made it work. If uncertain just install both as I did.
Then go ahead and add the lines as described in
https://github.com/LedgerHQ/blue-app-monero/blob/master/doc/user/bolos-app-monero.pdf section 3.2.1.
to /etc/"libccid_info.plist"
Finally I had to start the daemon "pcscd" because on my system it did not start automatically.
"sudo systemctl start pcscd.service" should do the trick.
If you want the service to start auto at boot the command would be:
"sudo systemctl enable pcscd.service"