Help: Why can't I send crypto after reinstalling Algorand Official Wallet and recovering account? - Issues with Ledger Firmware 2.0.0 and Algorand Wallet

Hi @fabrice! Thank you for your help; however, I tried to follow the instructions, but my user experience seems to be different than what is present in the article.

When I press the “+”, I only see the two options. Below is screenshot of what I see before and after pressing the green “+” button.

As you can see on the right side of the image, there is no option stating “Pair Ledger Account”. Given that, what should I do next?

The UI may have slightly changed.
Click “Add account” and then “Pair with Ledger Device”.

I already see a Ledger device in your list of account. Is it the Ledger device that you used to rekey the other account?
Can you now send Algos with the second account?

I apologize, but I’m confused by the first question as I’m not certain what you mean by “other” and “second” account. By “other” account, do you mean the account that I initially rekeyed with the ledger device? By “second” account, do you mean the account that I initially rekeyed with the ledger device and recovered in the wallet, but is now not able to send crypto?

Let me try to get on the same page with you. To help easily identify the account, I have updated the original screenshot in my second post with the name of the account and included the third screen that I see after pressing “Add Account”. I’ll also explain the issue using the name of the account.

The account with the ledger device is called “Governance”. This is the only account rekeyed with a ledger device. This account was rekeyed with a ledger device before I reinstalled the Algorand wallet. It is also the account that isn’t allowing me to send any crypto and the one I initially reached (and still reaching) for help on.

In my first post, I mentioned that I reinstalled the Algorand Wallet and recovered my account called Governance (which was rekeyed to a ledger device before I reinstalled the Algorand Wallet). To recover the Governance account, I used the 25-word passphrase (press green “+” button > “Recover with passphrase”) that was provided when I had initially created the account.

Based on your recommendation, I shouldn’t have used that method to recover my Governance account, which had been rekeyed to a ledger device before I reinstalled the app. Instead, I should have pressed the green “+” button > “Add Account” > “Pair Ledger Device”. Is that correct?

Do not remove the governance account.
Do the following:
“Add Account” → “Pair Ledger Device”.

This will allow your wallet to know about the Ledger device and should make your governance account work.
This may also create a new account that may be empty (the actual account of the Ledger device), but you can just ignore this new account.

Good news - The wallet now seems to know about the ledger! On top of that, Algorand Wallet did create a new account that was empty. Everything went as you said.

Bad news - I still can’t send Algo from the wallet. The original error message is gone, but now a new error message appears:

Connection Error: Could not connect to the Ledger device. Make sure the device is unlocked, nearby and has bluetooth enabled.

Any recommendations?

Details:

  • Bluetooth is enabled for both the phone and Ledger device
  • Algorand App is installed on the Ledger Nano X. The application version is 1.2.15
  • The Ledger Nano X is no more than a few inches away

Do you think your new issue can be related to Algorand Wallet Wont Connect to Ledger Nano X following firmware 2.0.0 update ?

What is your Ledger Firmware version?

Hi Fabrice

Its:

  • secure element 2.0.0
  • microcontroller 2.28
  • bootloader 1.16

Hardware version 1

I think it might now be. My ledger firmware is 2.0.0. I’ll try the below article and see if that fixes the issue. I’ll let you know what I find out.

I’m at the same point as @DeFiYourLife in that I’m getting the same connection error. I’m using:
Samsung A40 with Android 11.
Official Algorand Wallet 4.10.6

I have found this: I CAN connect to Nano X via bluetooth from ledger live app but not from the Algorand Wallet. So there is a connection, but that connection is not accessible to the Algorand Wallet for some reason.

Might there be an other layer of permission required as a result of the firmware update? I’ve followed the ledger workflow for fixing bluetooth pairing issues in all permutations to try and connect and nothing has worked so far. But given that ledger live connects, and nano x is shown as paired with my phone, I’m starting to think this is not a pairing issue?

Hi @fabrice! I followed the Ledger’s Fix Bluetooth pairing issues article and like @rob_b can connect to Nano X via bluetooth from ledger live app, but not from the Algorand Wallet.

The same error message keeps coming up:

Connection Error: Could not connect to the Ledger device. Make sure the device is unlocked, nearby and has bluetooth enabled.

After hearing @rob_b and my issue, what would you recommend next?

On Reddit, there is a posting that is related to this issue, which I’ve pasted below. @fabrice if you have any thoughts on it, then please do share.

Reddit - Ledger Nano X Firmware Update | Be Prepare For Governance Voting

This seems related to Unable to sign transactions using Ledger Nano X after firmware 2.0.0 update · Issue #53 · algorand/ledger-app-algorand · GitHub too.

Hi @fabrice ! How would you feel if I removed the Governance Account and the actual account of the Ledger device?

I want to try the solution mentioned in the Reddit post above, where there is a step to remove the ledger paired accounts and add them back in via ledger device.

I look forward to hearing from you soon!

I found another user having a similar problem. This user though posted on Ledger’s Reddit. I left a comment there too -

Hi @fabrice , @DeFiYourLife I can restate that while I can connect to the wallet with bluetooth using Ledger Live, I cannot with the offical Algorand wallet. So Ledger’s firmware 2.0.0.0 update has introduced a breaking change somwhere, but its deeper than I can go.

Note that when I updated the Firmware from Ledger live on mac it also updated the algorand app on the ledger. So I dont know if that’s implicated.

So where do we go from here?

I’m going to try a cable connection between the phone and the Nano X and see if that works. It’s in the post from Amazon so I’ll be able to try that later today. I’ll report back.

I’ve had a look at the bluetooth connection using nRF connect. The log is a bit beyond me but if you look at the log generated by nRF (which is posted next) you’ll see:

  • I tried connecting 4 times and on the 3rd try refreshed the cache.
  • Each time the connection state changes as a result of a callback with status: 8 and new state DISCONNECTED (0) and then Error 8 (0x8): GATT CONN TIMEOUT
  • The timeout interval is 5000ms so maybe there is not enough delay in the bluetooth paramters in the firmware update, the parameters in Ledger Live probably correspond to the firmware update but not the other apps like the algorand wallet. Thats just a hunch but if I could look at the code for this update that’s where I would be looking. In github the comment is made that usually “restarting bluetooth or adding some delays helps”. We know that restarting bluetooth doesnt work. In stack overflow there’s chat about the devices using 2 different bonding keys or a hardware issue. I dont think its a hardware issue as it worked yestrday morning before the update. As I said, it’s getting beyond me.

But when I pair the nano with ledger live on the phone it does generate a new pair code which then works. But it doesnt with the pairing done generally with the phone.

So the question is, is there sufficient developer effort going into the Algorand wallet to look at and fix this? Or if its a bug in Ledger then liaise with them to get it fixed.

It’s important because my commited governance algos are in this wallet backed up by ledger. A decent mount of algos too. Voting starts in 4 days. This a massive balls up not only for me but I’m guessing there’s going to be a lot of people with this problem and the looming governance voting deadline.

The thought of removing and rebuilding the ledger account is not attractive right now. I dont know enough to feel confident about doing it. Also won’t it mess up my governance commitment?

nRF Connect, 2021-10-27
Nano X 6E1D (DE:F1:F3:14:BB:F2)

V 09:19:18.623 Connecting to DE:F1:F3:14:BB:F2…
D 09:19:18.623 gatt = device.connectGatt(autoConnect = false, TRANSPORT_LE, preferred PHY = LE 1M)
D 09:19:18.920 [Broadcast] Action received: android.bluetooth.device.action.ACL_CONNECTED
D 09:19:18.947 [Callback] Connection state changed with status: 0 and new state: CONNECTED (2)
I 09:19:18.947 Connected to DE:F1:F3:14:BB:F2
D 09:19:18.948 wait(1600ms)
I 09:19:19.209 Connection parameters updated (interval: 7.5ms, latency: 0, timeout: 5000ms)
V 09:19:20.549 Discovering services…
D 09:19:20.549 gatt.discoverServices()
D 09:19:24.251 [Callback] Connection state changed with status: 8 and new state: DISCONNECTED (0)
E 09:19:24.252 Error 8 (0x8): GATT CONN TIMEOUT
I 09:19:24.252 Disconnected
D 09:19:24.315 [Broadcast] Action received: android.bluetooth.device.action.ACL_DISCONNECTED
D 09:19:39.028 gatt.close()
D 09:19:39.041 wait(200)

V 09:19:39.242 Connecting to DE:F1:F3:14:BB:F2…
D 09:19:39.242 gatt = device.connectGatt(autoConnect = false, TRANSPORT_LE, preferred PHY = LE 1M)
D 09:19:39.523 [Broadcast] Action received: android.bluetooth.device.action.ACL_CONNECTED
D 09:19:39.553 [Callback] Connection state changed with status: 0 and new state: CONNECTED (2)
I 09:19:39.553 Connected to DE:F1:F3:14:BB:F2
D 09:19:39.554 wait(1600ms)
I 09:19:39.820 Connection parameters updated (interval: 7.5ms, latency: 0, timeout: 5000ms)
V 09:19:41.156 Discovering services…
D 09:19:41.156 gatt.discoverServices()
D 09:19:44.857 [Callback] Connection state changed with status: 8 and new state: DISCONNECTED (0)
E 09:19:44.858 Error 8 (0x8): GATT CONN TIMEOUT
I 09:19:44.858 Disconnected
D 09:19:44.907 [Broadcast] Action received: android.bluetooth.device.action.ACL_DISCONNECTED
D 09:19:55.250 gatt.close()
D 09:19:55.258 wait(200)

V 09:19:55.459 Connecting to DE:F1:F3:14:BB:F2…
D 09:19:55.459 gatt = device.connectGatt(autoConnect = false, TRANSPORT_LE, preferred PHY = LE 1M)
D 09:19:55.714 [Broadcast] Action received: android.bluetooth.device.action.ACL_CONNECTED
D 09:19:55.739 [Callback] Connection state changed with status: 0 and new state: CONNECTED (2)
I 09:19:55.739 Connected to DE:F1:F3:14:BB:F2
D 09:19:55.740 wait(1600ms)
I 09:19:56.018 Connection parameters updated (interval: 7.5ms, latency: 0, timeout: 5000ms)
V 09:19:57.342 Discovering services…
D 09:19:57.342 gatt.discoverServices()
D 09:20:01.051 [Callback] Connection state changed with status: 8 and new state: DISCONNECTED (0)
E 09:20:01.051 Error 8 (0x8): GATT CONN TIMEOUT
I 09:20:01.051 Disconnected
D 09:20:01.095 [Broadcast] Action received: android.bluetooth.device.action.ACL_DISCONNECTED
V 09:20:20.555 Refreshing device cache…
D 09:20:20.555 gatt.refresh() (hidden)
I 09:20:20.560 Cache refreshed
D 09:20:23.318 gatt.close()
D 09:20:23.327 wait(200)

V 09:20:23.527 Connecting to DE:F1:F3:14:BB:F2…
D 09:20:23.527 gatt = device.connectGatt(autoConnect = false, TRANSPORT_LE, preferred PHY = LE 1M)
D 09:20:23.901 [Broadcast] Action received: android.bluetooth.device.action.ACL_CONNECTED
D 09:20:23.943 [Callback] Connection state changed with status: 0 and new state: CONNECTED (2)
I 09:20:23.943 Connected to DE:F1:F3:14:BB:F2
D 09:20:23.944 wait(1600ms)
I 09:20:24.188 Connection parameters updated (interval: 7.5ms, latency: 0, timeout: 5000ms)
V 09:20:25.546 Discovering services…
D 09:20:25.546 gatt.discoverServices()
D 09:20:29.225 [Callback] Connection state changed with status: 8 and new state: DISCONNECTED (0)
E 09:20:29.225 Error 8 (0x8): GATT CONN TIMEOUT
I 09:20:29.225 Disconnected
D 09:20:29.264 [Broadcast] Action received: android.bluetooth.device.action.ACL_DISCONNECTED

Its also being reported on GitHub:

1 Like

Thanks for providing additional details. We’ll use this in our investigation. Thanks!

Hi @ian, @rob_b, and @fabrice !

I wanted to give an update that I successfully confirmed a transaction through the Ledger Device, but was only able to do it once and haven’t been able to repeat it. My proof is below:

I’m not certain how I did it. Nothing in my phone or Ledger’s environment has changed.

My environment’s details are still the same:

  • App: Algorand Wallet from Algorand, Inc
  • App Version: 4.10.6
  • Platform: Android 12
  • Phone: Pixel 3a
  • Ledger Device: Nano X
  • Ledger Firmware: 2.0.0

Prior to making the transaction, I investigated if the Ledger Nano X could be detected by the Algorand Wallet. To test, I attempted to find the Ledger Device through the “Add Account > Pair Ledger Device” and the Rekey option.

In both cases, I was able to successfully find my Ledger Device. After that, I then attempted to send 0.00 Algos to my wallet that was connected to the Ledger Device. To my surprise, it connected and I was able to sign and send 0.00 Algos with the device.

However, I’ve not been able to sign and send any more Algos. It only worked once. The below error message now appears yet again:

Connection Error: Could not connect to the Ledger device. Make sure the device is unlocked, nearby and has bluetooth enabled.

I’m still able to find the Ledger device through pairing and rekeying features in the Algorand Wallet.

@DeFiYourLife

Thats a good find. I just tried a similar workflow by disabling bluetooth and resetting pairings on the nano, and forgetting the nano and clearing the bluetooth cache on the phone.

After switching everything back on I found the nano inside the wallet and attempted to set up a new account. It generated a pairing inside the algorand wallet which I accepted on the phone and on the nano, I then went back and cancelled the new account creation and tried to send 0 algos from my ledger backed account… but even after pairing inside the wallet the bluetooth error was still there.

I got a bit nervous though because I didnt know the answer to this question, will creating a new ledger backed algorand account do anything to the existing algorand account that stores my governance algos?

1 Like