A few days ago, I received the Ledger Nano S, a hardware wallet for cryptocurrencies. Unfortunately, my device got stuck so I was unable to use it anymore.
After a firmware update failed, my device got stuck on the “Update” display. I followed the instructions on the support page of Ledger Wallet without success. Within the Ledger Manager app (in Chrome), I was unable to update the firmware. I was left with a device with “Update” on the display and I could not reset the device or redo the firmware update.
Since it was weekend and Ledger Wallet has to deal with a huge number of messages, I would not get a quick response. Because of this, I searched for a solution myself.
My solution (has to be verified by Ledger Wallet)
It took me some hours to find a solution while I was thinking how I could flash the firmware on the device. And here is how I finally did it within MacOS with some help from the Ledger Wallet github pages! (All commands were entered within the MacOS terminal.)
- Close all Ledger Wallet related apps and disconnect your Nano S device.
- Download and install Python 2.7.
- Download and install setuptools (pip):
- Download and install virtualenv (source):
sudo /usr/bin/easy_install virtualenv
- Create a folder somewhere on your Mac (e.g. “NanoS_Issue”) and go to this newly created folder.
- Download and install Python tools for Ledger Blue and Nano S and create an isolated Python environment (source):
virtualenv ledger source ledger/bin/activate pip install ledgerblue
- Download a firmware release e.g. https://raw.githubusercontent.com/LedgerHQ/nanos-nonsecure-firmware-releases/master/nanosr1/token.loadable.signed_perso_11.hex into the created folder (right click on this page -> Save as…).
- Verify the content of the .hex file (it should only exist of hex symbols otherwise you will get the exception “Invalid data”).
- Turn on your Ledger Nano S with the left button pressed, until “Bootloader” is displayed (source).
- Load the .hex firmware file into your device (source):
python -m ledgerblue.loadMCU --target 0x01000001 --fileName token.loadable.signed_perso_11.hex