How to access iota funds spread over too many inputs on Ledger Nano S
Overcome Ledger Nano S hardware restrictions by consolidating iotas to a single address
For some time now the official iota Trinity wallet is compatible with the hardware wallet Ledger Nano S. Although Trinity offers rather seamless integration, there are still hardware restrictions that can lead to the above error message when trying to send funds.
As this is a rather generic error message you should first check the Trinity error log to see a more detailed description. You can access it via the main menu (Trinity → Error Log).
If you see an entry similar to the one shown below, you are affected by the issue described in this article.
The Ledger Nano S hardware has a very limited amount of available memory. Due to the size of private keys and signatures in the iota environment, it is not possible at the moment to send a transaction that uses funds from more than two addresses (inputs). When sending a transaction you do not have manual control over which addresses are used as inputs and this issue will most likely occur if you have sent funds to your ledger account multiple times using new receive addresses each time. The result of this will be that your funds are spread over many addresses, requiring Trinity to use multiple input addresses when larger amounts of iotas should be sent.
Developers of both Trinity and the Ledger iota app are already discussing possible software fixes, but until then, you will not be able to send your full funds on the Ledger. If you need access to your funds now, there is another way out of this situation, but it will require some manual work and can be a bit tedious (depending on the number of addresses your funds are spread over).
How to fix this situation?
Remember that not all the funds are blocked, but we can still send a transaction with a maximum of two inputs. We will always take two addresses and send their funds to the same single target address until all iotas are consolidated there and sending the full amount will be possible again. While we cannot tell Trinity which input addresses to use for this merge process, we can nudge it to use the ones we want by sending the right amount of iotas.
First, check how your funds are distributed over your addresses by using the command Account → Account Management → View Addresses from the Trinity main menu.
In the shown example the iotas are spread over 5 addresses. We will take the one on top (YLE WWT…) as the target address and try to send all funds to this address. Now we can send the first transaction, by adding the balances of the two lowest addresses (87i + 50i = 137i). If we send a transaction over 137i Trinity will start at the lowest address and look for input addresses until it has enough to cover what we want to send. Sending 137i, in this case, will make sure that Trinity uses the addresses we want.
Do the same for your list of addresses and write down the target address and the added balance of the two addresses lowest address with funds. Then send a transaction to the target address using the calculated balance.
Check and Approve the transaction on your Ledger. After the new transaction is confirmed, your list of addresses will have changed.
Depending on the number of addresses that your iotas were spread over, you will need to repeat this task. In the shown example we will have to send another transaction to the same target address over 300i until finally the full balance is consolidated in a single address again.
Now we can send the full funds again without any issues.
I hope you liked this article. If you have any questions, comments or would like to see things changed, visit the Iota Discord server and find me (HBMY289).