ETC app 1.1.3
( I suspect this might a better description of issue #1533 )
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".
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.
https://github.com/LedgerHQ/ledger-live-desktop/issues/1533 is probably related
@amougel what do you think?
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:
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
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 Classicname was changed fromETCin 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.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
ETCat all. Looking at theMakefilewe see theAPP_NAMEwas 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
Makefilefrom the eth app is thisWhere we mix the usage of
etcand 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
make CHAIN=ethereum_classic loadanddeleterespectively. Remove theCHAINparameter for Ethereum.