Ledger-live-desktop: "ETC" app cannot be uninstalled since it is no longer listed in the Manager

Created on 25 Sep 2018  路  5Comments  路  Source: LedgerHQ/ledger-live-desktop

Ledger Live Version and Operating System

ETC app 1.1.3

  • tested on Ledger Live 1.1.11
  • Platform and version: Windows 10

( I suspect this might a better description of issue #1533 )

Expected behavior

I should be able to uninstall the Ledger app named "ETC", but cannot since the Manager has delisted it and added a distinct app named "Ethereum Classic".

Actual behavior

I have no means of uninstalling the app named "ETC". (For comparison, I can install and uninstall the "Ethereum Classic" app.)

A side effect of this is that I am unable to uninstall or upgrade the Ethereum app since the "ETC" app depends on it.

Steps to reproduce the behavior

  1. Open Ledger Live and connect Ledger.
  2. Navigate to the Manager in Ledger Live.
  3. Look for an app named "ETC", hoping to uninstall it.
  4. No app named "ETC" can be found in the Manager.
bug

Most helpful comment

The TLDR

I've dedicated some time to this and I think I have at least a little bit of understanding of how and why this is happening. The gist of it is that the Ethereum Classic name was changed from ETC in https://github.com/LedgerHQ/ledger-app-eth/commit/3f6bb939e78d7c2be633fe9aec02f50b10aa96a2 and since then when we send an uninstall request from the app it uses this data.

{ 
   app: 59,
    date_creation: '2018-10-04T17:07:02.185390Z',
    date_last_modified: '2018-10-04T17:13:20.417828Z',
    delete: 'nanos/1.4.2/ethereum_classic/app_1.1.6_del',
    delete_key: 'nanos/1.4.2/ethereum_classic/app_1.1.6_del_key',
    description: '',
    device_versions: [ 6 ],
    display_name: 'Ethereum Classic',
    firmware: 'nanos/1.4.2/ethereum_classic/app_1.1.6',
    firmware_key: 'nanos/1.4.2/ethereum_classic/app_1.1.6_key',
    hash: '',
    icon: 'ethereum_classic',
    id: 401,
    name: 'Ethereum Classic',
    notes: '',
    perso: 'perso_11',
    providers: [ 1, 4 ],
    se_firmware_final_versions: [ 10 ],
    version: '1.1.6' 
}

To generate a ws url that's used to communicate with the device
wss://api.ledgerwallet.com/update/install?targetId=823132163&perso=perso_11&deleteKey=nanos%2F1.4.2%2Fethereum_classic%2Fapp_1.1.6_del_key&firmware=nanos%2F1.4.2%2Fethereum_classic%2Fapp_1.1.6_del&firmwareKey=nanos%2F1.4.2%2Fethereum_classic%2Fapp_1.1.6_del_key&hash=

Which doesn't refer to ETC at all. Looking at the Makefile we see the APP_NAME was changed (the linked commit) and if that's what the device is relying on to uninstall a certain app, then it will not find it. At this point I'm not sure whether it's a matter of updating the https://github.com/LedgerHQ/ledger-app-store-api since it seems like the delete_key and sibling data comes from there?

One last thing looking at the Makefile from the eth app is this

APP_LOAD_PARAMS += --path "44'/61'"
DEFINES += CHAINID_UPCASE=\"ETC\" CHAINID_COINNAME=\"ETC\" CHAIN_KIND=CHAIN_KIND_ETHEREUM_CLASSIC CHAIN_ID=61
APPNAME = "Ethereum Classic"

Where we mix the usage of etc and Ethereum classic. I don't know what the firmware uses to try to uninstall so that's as far as I can go.

Potential solutions from my limited understanding are showing a notice on an update that send the uninstall command using the old app name, . Either that, or renaming the app again which would leave those of us with the updated version without a means to uninstall :trollface:

How to replicate the issue

  • Get yourself a copy of https://github.com/fix/ledger-vagrant or setup a BOLOS enabled one, whatever is easiest for you.
  • Grab a copy of https://github.com/juan-cortes/ledger-app-eth but reset your copy to a commit that is older that the one linked above. This is will make your Ethereum classic app be named 'ETC'. Either that or simply change the Makefile to rename the app.
  • Install Ethereum and etc into your device
  • Go back to the Ledger Live Desktop app and try to uninstall either of them, you won't be able to uninstall ETC since we don't send the right command, and neither Ethereum because it's needed by the prior. You can install with make CHAIN=ethereum_classic load and delete respectively. Remove the CHAIN parameter for Ethereum.

All 5 comments

https://github.com/LedgerHQ/ledger-live-desktop/issues/1533 is probably related
@amougel what do you think?

The TLDR

I've dedicated some time to this and I think I have at least a little bit of understanding of how and why this is happening. The gist of it is that the Ethereum Classic name was changed from ETC in https://github.com/LedgerHQ/ledger-app-eth/commit/3f6bb939e78d7c2be633fe9aec02f50b10aa96a2 and since then when we send an uninstall request from the app it uses this data.

{ 
   app: 59,
    date_creation: '2018-10-04T17:07:02.185390Z',
    date_last_modified: '2018-10-04T17:13:20.417828Z',
    delete: 'nanos/1.4.2/ethereum_classic/app_1.1.6_del',
    delete_key: 'nanos/1.4.2/ethereum_classic/app_1.1.6_del_key',
    description: '',
    device_versions: [ 6 ],
    display_name: 'Ethereum Classic',
    firmware: 'nanos/1.4.2/ethereum_classic/app_1.1.6',
    firmware_key: 'nanos/1.4.2/ethereum_classic/app_1.1.6_key',
    hash: '',
    icon: 'ethereum_classic',
    id: 401,
    name: 'Ethereum Classic',
    notes: '',
    perso: 'perso_11',
    providers: [ 1, 4 ],
    se_firmware_final_versions: [ 10 ],
    version: '1.1.6' 
}

To generate a ws url that's used to communicate with the device
wss://api.ledgerwallet.com/update/install?targetId=823132163&perso=perso_11&deleteKey=nanos%2F1.4.2%2Fethereum_classic%2Fapp_1.1.6_del_key&firmware=nanos%2F1.4.2%2Fethereum_classic%2Fapp_1.1.6_del&firmwareKey=nanos%2F1.4.2%2Fethereum_classic%2Fapp_1.1.6_del_key&hash=

Which doesn't refer to ETC at all. Looking at the Makefile we see the APP_NAME was changed (the linked commit) and if that's what the device is relying on to uninstall a certain app, then it will not find it. At this point I'm not sure whether it's a matter of updating the https://github.com/LedgerHQ/ledger-app-store-api since it seems like the delete_key and sibling data comes from there?

One last thing looking at the Makefile from the eth app is this

APP_LOAD_PARAMS += --path "44'/61'"
DEFINES += CHAINID_UPCASE=\"ETC\" CHAINID_COINNAME=\"ETC\" CHAIN_KIND=CHAIN_KIND_ETHEREUM_CLASSIC CHAIN_ID=61
APPNAME = "Ethereum Classic"

Where we mix the usage of etc and Ethereum classic. I don't know what the firmware uses to try to uninstall so that's as far as I can go.

Potential solutions from my limited understanding are showing a notice on an update that send the uninstall command using the old app name, . Either that, or renaming the app again which would leave those of us with the updated version without a means to uninstall :trollface:

How to replicate the issue

  • Get yourself a copy of https://github.com/fix/ledger-vagrant or setup a BOLOS enabled one, whatever is easiest for you.
  • Grab a copy of https://github.com/juan-cortes/ledger-app-eth but reset your copy to a commit that is older that the one linked above. This is will make your Ethereum classic app be named 'ETC'. Either that or simply change the Makefile to rename the app.
  • Install Ethereum and etc into your device
  • Go back to the Ledger Live Desktop app and try to uninstall either of them, you won't be able to uninstall ETC since we don't send the right command, and neither Ethereum because it's needed by the prior. You can install with make CHAIN=ethereum_classic load and delete respectively. Remove the CHAIN parameter for Ethereum.

An inconvenient solution for the end-user to get past this bug is to reset the device, restore with the recovery phrase, and reinstall the latest app.

Thanks to @juan-cortes for your work tracking down the technical details of the root cause. I'm not sure it's worth Ledger developers spending more time on this issue, except to ensure any similar mistake is not made in the future.

@gre This is not solved. I can't uninstall "Recovery Check", "Passowrds" and "SSH/PGP Agent". I haven't used my Ledger for over a year and now I connected it and it seems nothing works. That's really bad for something which is supposed to provide stability. (PS: I'm trying to uninstall apps so that I can upgrade from 1.4.2 to the latest firmware version)

@omarabid you need to enable Developer mode to see them https://support.ledger.com/hc/en-us/articles/115005200649-OpenPGP

Was this page helpful?
0 / 5 - 0 ratings

Related issues

pollastri-pierre picture pollastri-pierre  路  3Comments

gre picture gre  路  3Comments

BTCYamakaza picture BTCYamakaza  路  4Comments

kravens picture kravens  路  3Comments

Buttaa picture Buttaa  路  4Comments