Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save sleepdefic1t/29c90bac4b493c6973a77554066bfc5d to your computer and use it in GitHub Desktop.
Save sleepdefic1t/29c90bac4b493c6973a77554066bfc5d to your computer and use it in GitHub Desktop.

ARK Ledger Nano S Environment Setup

Nano S version >=1.5.5

Steps:

  1. Install Vagrant & VirtualBox.
  2. Get Ledger-Vagrant.
  3. Setup the Ledger-Vagrant Machine.
  4. Connect the Ledger.
  5. Connect to the Vagrant Machine.
  6. Get the ARK Ledger App.
  7. Modify the udev Rules.
  8. Update the nanos-secure-sdk.
  9. Flash the ARK App.

1) Install Vagrant and VirtualBox

macOS

  1. brew cask install virtualbox

  2. brew cask install vagrant


2) Get Ledger-Vagrant

  1. git clone https://github.com/fix/ledger-vagrant

  2. cd ledger-vagrant


3) Setup the Ledger-Vagrant machine

  1. vagrant up note: environment setup will take a few minutes.


4) Connect Ledger via USB


5) Connect to the Ledger-Vagrant machine

  1. vagrant ssh


6) Get the ARK Ledger App

Option 1: Place your project folder in the ledger-vagrant/apps directory.

Option 2: Clone via git

  1. cd apps

  2. git clone https://github.com/ArkEcosystem/ledger


7) Modify udev rules via vagrant ssh

Option 1: wget bash script from gist.

wget -q -O - https://gist.githubusercontent.com/sleepdefic1t/71726664f2996ce8d64bf7bf64a9e4d8/raw/a2662606e75545af9c3f630ff35e9ed18c1f3601/update-ledger-udev.sh | sudo bash

Option 2: RYO updated bash script.

Append MODE="0660", GROUP="plugdev" to Ledger udev rules.

src: github/LedgerHQ/udev-rules/issues/#4

cat <<EOF > /etc/udev/rules.d/20-hw1.rules
# HW.1 / Nano
SUBSYSTEMS=="usb", ATTRS{idVendor}=="2581", ATTRS{idProduct}=="1b7c|2b7c|3b7c|4b7c", TAG+="uaccess", TAG+="udev-acl"
# Blue
SUBSYSTEMS=="usb", ATTRS{idVendor}=="2c97", ATTRS{idProduct}=="0000|0000|0001|0002|0003|0004|0005|0006|0007|0008|0009|000a|000b|000c|000d|000e|000f|0010|0011|0012|0013|0014|0015|0016|0017|0018|0019|001a|001b|001c|001d|001e|001f", TAG+="uaccess", TAG+="udev-acl", MODE="0660", GROUP="plugdev"
# Nano S
SUBSYSTEMS=="usb", ATTRS{idVendor}=="2c97", ATTRS{idProduct}=="0001|1000|1001|1002|1003|1004|1005|1006|1007|1008|1009|100a|100b|100c|100d|100e|100f|1010|1011|1012|1013|1014|1015|1016|1017|1018|1019|101a|101b|101c|101d|101e|101f", TAG+="uaccess", TAG+="udev-acl", MODE="0660", GROUP="plugdev"
# Aramis
SUBSYSTEMS=="usb", ATTRS{idVendor}=="2c97", ATTRS{idProduct}=="0002|2000|2001|2002|2003|2004|2005|2006|2007|2008|2009|200a|200b|200c|200d|200e|200f|2010|2011|2012|2013|2014|2015|2016|2017|2018|2019|201a|201b|201c|201d|201e|201f", TAG+="uaccess", TAG+="udev-acl", MODE="0660", GROUP="plugdev"
# HW2
SUBSYSTEMS=="usb", ATTRS{idVendor}=="2c97", ATTRS{idProduct}=="0003|3000|3001|3002|3003|3004|3005|3006|3007|3008|3009|300a|300b|300c|300d|300e|300f|3010|3011|3012|3013|3014|3015|3016|3017|3018|3019|301a|301b|301c|301d|301e|301f", TAG+="uaccess", TAG+="udev-acl", MODE="0660", GROUP="plugdev"
# Nano X
SUBSYSTEMS=="usb", ATTRS{idVendor}=="2c97", ATTRS{idProduct}=="0004|4000|4001|4002|4003|4004|4005|4006|4007|4008|4009|400a|400b|400c|400d|400e|400f|4010|4011|4012|4013|4014|4015|4016|4017|4018|4019|401a|401b|401c|401d|401e|401f", TAG+="uaccess", TAG+="udev-acl", MODE="0660", GROUP="plugdev"
EOF

udevadm trigger
udevadm control --reload-rules
Create a new bash file from the above using terminal
  1. Create a new file: nano

  2. Write the changes: ^O

  3. "File Name to Write": update-udev.sh hit enter to save the filename

  4. Exit file ^X

  5. Run the bash script: sh ./update-udev.sh


8) Update the nanos-secure-sdk

note: versions <1.5.5 can skip this step.

Option 1: Update the NanoS-Secure-SDK

did not work for me on macOS

  1. cd /opt/bolos/nanos-secure-sdk

  2. sudo git pull

Option 2: Manually delete and clone the NanoS-Secure-SDK

  1. cd /opt/bolos/

  2. rm -rf nanos-secure-sdk

  3. sudo git clone https://github.com/LedgerHQ/nanos-secure-sdk


9) Flash the ArkEcosystem/Ledger App

  1. cd ~/apps/ledger

  2. sh ./rebuild.sh


From there, you should see compiler output, then Ledger will begin the app flashing process with prompts on the Nano S device.


Additional notes:

TargetId's

+-----------------+------------+
|    FirmWare     | Target ID  |
+-----------------+------------+
| Nano S <= 1.3.1 | 0x31100002 |
| Nano S 1.4.x    | 0x31100003 |
| Nano S 1.5.x    | 0x31100004 |
|                 |            |
| Blue 2.0.x      | 0x31000002 |
| Blue 2.1.x      | 0x31000004 |
| Blue 2.1.x V2   | 0x31010004 |
|                 |            |
| Nano X          | 0x33000004 |
|                 |            |
| MCU,any version | 0x01000001 |
+-----------------+------------+

LedgerBlue Python Script Reference

ledger.readthedocs/blue-loader-python/script_reference

Ledger Nano S Debugging

ledger.readthedocs.io/debugging

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment