Just installed latest update for specter and my instance seems to be in a stalled in a startup loop. Do you know if it is possible to go back to an older version of the software without doing a complete uninstall? Would like to keep my data if possible
Seems the package might not have fully installed. During Specter configuration I get an error “No module named ‘cryptoadvance.specter.devices.hwi.jadepy.jade_ble’”.
Including full log errors below. I dont recall the last version I was running but it would have been the last update before 2.1.1~2 came out.
Logs:
2025-05-09T09:16:01-05:00 Configuring Specter...
2025-05-09T09:16:01-05:00 No module named 'cryptoadvance.specter.devices.hwi.jadepy.jade_ble'
2025-05-09T09:16:01-05:00 BLE scanning/connectivity will not be available
2025-05-09T09:16:01-05:00 [2025-05-09 14:16:01,742] INFO in server: Configuration: cryptoadvance.specter.config.ProductionConfig
2025-05-09T09:16:01-05:00 [2025-05-09 14:16:01,742] INFO in server: SPECTER_DATA_FOLDER: /root/.specter
2025-05-09T09:16:01-05:00 [2025-05-09 14:16:01,743] INFO in specter_migrator: Initiated MigDataManager(/root/.specter/migration_data.json events:3 execs:2 )
2025-05-09T09:16:01-05:00 [2025-05-09 14:16:01,743] INFO in specter_migrator: Collecting possible migrations ...
2025-05-09T09:16:01-05:00 [2025-05-09 14:16:01,744] INFO in specter_migrator: Collecting possible migrations ...
2025-05-09T09:16:01-05:00 [2025-05-09 14:16:01,744] INFO in specter_migrator: Collecting possible migrations ...
2025-05-09T09:16:01-05:00 [2025-05-09 14:16:01,744] INFO in specter_migrator: No Migrations to execute!
2025-05-09T09:16:01-05:00 [2025-05-09 14:16:01,744] INFO in server: Initializing LoginManager
2025-05-09T09:16:01-05:00 [2025-05-09 14:16:01,744] INFO in server: Initializing Specter with data-folder /root/.specter
2025-05-09T09:16:01-05:00 [2025-05-09 14:16:01,744] INFO in service_manager: ----> starting service discovery Static
2025-05-09T09:16:01-05:00 [2025-05-09 14:16:01,745] INFO in reflection: Found class SwanService
2025-05-09T09:16:01-05:00 [2025-05-09 14:16:01,747] INFO in reflection: Found class LiquidissuerService
2025-05-09T09:16:01-05:00 [2025-05-09 14:16:01,750] INFO in reflection: Found class DevhelpService
2025-05-09T09:16:01-05:00 [2025-05-09 14:16:01,774] INFO in reflection: Found class NotificationsService
2025-05-09T09:16:01-05:00 [2025-05-09 14:16:01,775] INFO in reflection: Found class ExfundService
2025-05-09T09:16:01-05:00 [2025-05-09 14:16:01,775] INFO in reflection: Found class FaucetService
2025-05-09T09:16:01-05:00 [2025-05-09 14:16:01,775] INFO in reflection: Found class ElectrumService
2025-05-09T09:16:01-05:00 [2025-05-09 14:16:01,908] INFO in reflection: Found class SpectrumService
2025-05-09T09:16:01-05:00 [2025-05-09 14:16:01,909] INFO in reflection: Found class StacktrackService
2025-05-09T09:16:01-05:00 [2025-05-09 14:16:01,910] INFO in service_manager: ----> skipping service discovery dynamic
2025-05-09T09:16:01-05:00 [2025-05-09 14:16:01,910] INFO in service_manager: ----> starting service loading
2025-05-09T09:16:01-05:00 [2025-05-09 14:16:01,910] INFO in service_manager: Loading Extension SwanService from cryptoadvance.specterext.swan.service
2025-05-09T09:16:01-05:00 [2025-05-09 14:16:01,910] INFO in service_manager: Loading Extension-specific configuration from <class 'cryptoadvance.specterext.swan.config.ProductionConfig'>
2025-05-09T09:16:01-05:00 --- Logging error ---
2025-05-09T09:16:01-05:00 Traceback (most recent call last):
2025-05-09T09:16:01-05:00 File "/usr/local/lib/python3.10/site-packages/cryptoadvance/specter/persistence.py", line 100, in read_json_file
2025-05-09T09:16:01-05:00 content = json.load(f)
2025-05-09T09:16:01-05:00 File "/usr/local/lib/python3.10/json/__init__.py", line 293, in load
2025-05-09T09:16:01-05:00 return loads(fp.read(),
2025-05-09T09:16:01-05:00 File "/usr/local/lib/python3.10/json/__init__.py", line 346, in loads
2025-05-09T09:16:01-05:00 return _default_decoder.decode(s)
2025-05-09T09:16:01-05:00 File "/usr/local/lib/python3.10/json/decoder.py", line 337, in decode
2025-05-09T09:16:01-05:00 obj, end = self.raw_decode(s, idx=_w(s, 0).end())
2025-05-09T09:16:01-05:00 File "/usr/local/lib/python3.10/json/decoder.py", line 355, in raw_decode
2025-05-09T09:16:01-05:00 raise JSONDecodeError("Expecting value", s, err.value) from None
2025-05-09T09:16:01-05:00 json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
2025-05-09T09:16:01-05:00
2025-05-09T09:16:01-05:00 During handling of the above exception, another exception occurred:
2025-05-09T09:16:01-05:00
2025-05-09T09:16:01-05:00 Traceback (most recent call last):
2025-05-09T09:16:01-05:00 File "/usr/local/lib/python3.10/logging/__init__.py", line 1100, in emit
2025-05-09T09:16:01-05:00 msg = self.format(record)
2025-05-09T09:16:01-05:00 File "/usr/local/lib/python3.10/logging/__init__.py", line 943, in format
2025-05-09T09:16:01-05:00 return fmt.format(record)
2025-05-09T09:16:01-05:00 File "/usr/local/lib/python3.10/logging/__init__.py", line 678, in format
2025-05-09T09:16:01-05:00 record.message = record.getMessage()
2025-05-09T09:16:01-05:00 File "/usr/local/lib/python3.10/logging/__init__.py", line 368, in getMessage
2025-05-09T09:16:01-05:00 msg = msg % self.args
2025-05-09T09:16:01-05:00 TypeError: not all arguments converted during string formatting
2025-05-09T09:16:01-05:00 Call stack:
2025-05-09T09:16:01-05:00 File "/usr/local/lib/python3.10/runpy.py", line 196, in _run_module_as_main
2025-05-09T09:16:01-05:00 return _run_code(code, main_globals, None,
2025-05-09T09:16:01-05:00 File "/usr/local/lib/python3.10/runpy.py", line 86, in _run_code
2025-05-09T09:16:01-05:00 exec(code, run_globals)
2025-05-09T09:16:01-05:00 File "/usr/local/lib/python3.10/site-packages/cryptoadvance/specter/__main__.py", line 7, in <module>
2025-05-09T09:16:01-05:00 entry_point()
2025-05-09T09:16:01-05:00 File "/usr/local/lib/python3.10/site-packages/click/core.py", line 1157, in __call__
2025-05-09T09:16:01-05:00 return self.main(*args, **kwargs)
2025-05-09T09:16:01-05:00 File "/usr/local/lib/python3.10/site-packages/click/core.py", line 1078, in main
2025-05-09T09:16:01-05:00 rv = self.invoke(ctx)
2025-05-09T09:16:01-05:00 File "/usr/local/lib/python3.10/site-packages/click/core.py", line 1688, in invoke
2025-05-09T09:16:01-05:00 return _process_result(sub_ctx.command.invoke(sub_ctx))
2025-05-09T09:16:01-05:00 File "/usr/local/lib/python3.10/site-packages/click/core.py", line 1434, in invoke
2025-05-09T09:16:01-05:00 return ctx.invoke(self.callback, **ctx.params)
2025-05-09T09:16:01-05:00 File "/usr/local/lib/python3.10/site-packages/click/core.py", line 783, in invoke
2025-05-09T09:16:01-05:00 return __callback(*args, **kwargs)
2025-05-09T09:16:01-05:00 File "/usr/local/lib/python3.10/site-packages/cryptoadvance/specter/cli/cli_server.py", line 159, in server
2025-05-09T09:16:01-05:00 init_app(app, hwibridge=hwibridge)
2025-05-09T09:16:01-05:00 File "/usr/local/lib/python3.10/site-packages/cryptoadvance/specter/server.py", line 171, in init_app
2025-05-09T09:16:01-05:00 specter.service_manager = ExtensionManager(
2025-05-09T09:16:01-05:00 File "/usr/local/lib/python3.10/site-packages/cryptoadvance/specter/managers/service_manager/service_manager.py", line 80, in __init__
2025-05-09T09:16:01-05:00 active=clazz.id in self.specter.config.get("services", []),
2025-05-09T09:16:01-05:00 File "/usr/local/lib/python3.10/site-packages/cryptoadvance/specter/specter.py", line 275, in config
2025-05-09T09:16:01-05:00 return self.config_manager.data
2025-05-09T09:16:01-05:00 File "/usr/local/lib/python3.10/site-packages/cryptoadvance/specter/specter.py", line 672, in config_manager
2025-05-09T09:16:01-05:00 self._config_manager = ConfigManager(self.data_folder)
2025-05-09T09:16:01-05:00 File "/usr/local/lib/python3.10/site-packages/cryptoadvance/specter/managers/config_manager.py", line 29, in __init__
2025-05-09T09:16:01-05:00 super().__init__(data_folder)
2025-05-09T09:16:01-05:00 File "/usr/local/lib/python3.10/site-packages/cryptoadvance/specter/managers/genericdata_manager.py", line 38, in __init__
2025-05-09T09:16:01-05:00 self.load()
2025-05-09T09:16:01-05:00 File "/usr/local/lib/python3.10/site-packages/cryptoadvance/specter/managers/genericdata_manager.py", line 48, in load
2025-05-09T09:16:01-05:00 self.data = read_json_file(self.data_file)
2025-05-09T09:16:01-05:00 File "/usr/local/lib/python3.10/site-packages/cryptoadvance/specter/persistence.py", line 104, in read_json_file
2025-05-09T09:16:01-05:00 logger.exception(
2025-05-09T09:16:01-05:00 Message: 'Exception Expecting value: line 1 column 1 (char 0) while reading file /root/.specter/config.json. Reading from backup'
2025-05-09T09:16:01-05:00 Arguments: (JSONDecodeError('Expecting value: line 1 column 1 (char 0)'),)
2025-05-09T09:16:01-05:00 Traceback (most recent call last):
2025-05-09T09:16:01-05:00 File "/usr/local/lib/python3.10/runpy.py", line 196, in _run_module_as_main
2025-05-09T09:16:01-05:00 return _run_code(code, main_globals, None,
2025-05-09T09:16:01-05:00 File "/usr/local/lib/python3.10/runpy.py", line 86, in _run_code
2025-05-09T09:16:01-05:00 exec(code, run_globals)
2025-05-09T09:16:01-05:00 File "/usr/local/lib/python3.10/site-packages/cryptoadvance/specter/__main__.py", line 7, in <module>
2025-05-09T09:16:01-05:00 entry_point()
2025-05-09T09:16:01-05:00 File "/usr/local/lib/python3.10/site-packages/click/core.py", line 1157, in __call__
2025-05-09T09:16:01-05:00 return self.main(*args, **kwargs)
2025-05-09T09:16:01-05:00 File "/usr/local/lib/python3.10/site-packages/click/core.py", line 1078, in main
2025-05-09T09:16:01-05:00 rv = self.invoke(ctx)
2025-05-09T09:16:01-05:00 File "/usr/local/lib/python3.10/site-packages/click/core.py", line 1688, in invoke
2025-05-09T09:16:01-05:00 return _process_result(sub_ctx.command.invoke(sub_ctx))
2025-05-09T09:16:01-05:00 File "/usr/local/lib/python3.10/site-packages/click/core.py", line 1434, in invoke
2025-05-09T09:16:01-05:00 return ctx.invoke(self.callback, **ctx.params)
2025-05-09T09:16:01-05:00 File "/usr/local/lib/python3.10/site-packages/click/core.py", line 783, in invoke
2025-05-09T09:16:01-05:00 return __callback(*args, **kwargs)
2025-05-09T09:16:01-05:00 File "/usr/local/lib/python3.10/site-packages/cryptoadvance/specter/cli/cli_server.py", line 159, in server
2025-05-09T09:16:01-05:00 init_app(app, hwibridge=hwibridge)
2025-05-09T09:16:01-05:00 File "/usr/local/lib/python3.10/site-packages/cryptoadvance/specter/server.py", line 171, in init_app
2025-05-09T09:16:01-05:00 specter.service_manager = ExtensionManager(
2025-05-09T09:16:01-05:00 File "/usr/local/lib/python3.10/site-packages/cryptoadvance/specter/managers/service_manager/service_manager.py", line 80, in __init__
2025-05-09T09:16:01-05:00 active=clazz.id in self.specter.config.get("services", []),
2025-05-09T09:16:01-05:00 File "/usr/local/lib/python3.10/site-packages/cryptoadvance/specter/specter.py", line 275, in config
2025-05-09T09:16:01-05:00 return self.config_manager.data
2025-05-09T09:16:01-05:00 File "/usr/local/lib/python3.10/site-packages/cryptoadvance/specter/specter.py", line 672, in config_manager
2025-05-09T09:16:01-05:00 self._config_manager = ConfigManager(self.data_folder)
2025-05-09T09:16:01-05:00 File "/usr/local/lib/python3.10/site-packages/cryptoadvance/specter/managers/config_manager.py", line 29, in __init__
2025-05-09T09:16:01-05:00 super().__init__(data_folder)
2025-05-09T09:16:01-05:00 File "/usr/local/lib/python3.10/site-packages/cryptoadvance/specter/managers/genericdata_manager.py", line 38, in __init__
2025-05-09T09:16:01-05:00 self.load()
2025-05-09T09:16:01-05:00 File "/usr/local/lib/python3.10/site-packages/cryptoadvance/specter/managers/genericdata_manager.py", line 48, in load
2025-05-09T09:16:01-05:00 self.data = read_json_file(self.data_file)
2025-05-09T09:16:01-05:00 File "/usr/local/lib/python3.10/site-packages/cryptoadvance/specter/persistence.py", line 112, in read_json_file
2025-05-09T09:16:01-05:00 content = json.load(f)
2025-05-09T09:16:01-05:00 File "/usr/local/lib/python3.10/json/__init__.py", line 293, in load
2025-05-09T09:16:01-05:00 return loads(fp.read(),
2025-05-09T09:16:01-05:00 File "/usr/local/lib/python3.10/json/__init__.py", line 346, in loads
2025-05-09T09:16:01-05:00 return _default_decoder.decode(s)
2025-05-09T09:16:01-05:00 File "/usr/local/lib/python3.10/json/decoder.py", line 337, in decode
2025-05-09T09:16:01-05:00 obj, end = self.raw_decode(s, idx=_w(s, 0).end())
2025-05-09T09:16:01-05:00 File "/usr/local/lib/python3.10/json/decoder.py", line 355, in raw_decode
2025-05-09T09:16:01-05:00 raise JSONDecodeError("Expecting value", s, err.value) from None
2025-05-09T09:16:01-05:00 json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
Hey before releasing this package I tried downgrading the versions and it worked!
So please try to go to the service tab on start9 → marketplace listing and then → other versions.
You should be able to downgrade without loosing data.
If you do so successful, please use the specter backup functionality to back up your wallet and devices data. Also you did you do a start9 backup at any time? You should be able to restore just specter from it separatly.
Strange that your upgrade did not work , it worked fine when testing. Could you also try specter 2.1.1 ( the version before 2.1.1~2)? Please do a start9 backup also before trying to upgrade again.
Also the “No module named ‘cryptoadvance.specter.devices.hwi.jadepy.jade_ble’”. Is normal, it just means that no bluetooth connection for jade is available. Maybe you could also attempt a Start9 system rebuild to solve the loop.
Did you try to restart the service and also StartOS restart?
I did try and restart the service with no success. I have not re-installed. My main concern is loosing meta-data for transactions, which I hope would be preserved through an install from backup. Would love some clarity if you can provide.
(post deleted by author)
I also can confirm that restoring your old StartOS backup will restore all user data including metadata.
Just tested this again.
I did a complete uninstall.
And all my wallets with transaction labels got restored from Start9 backup funktionality.
So best method would be to restore your old specter version from backup.
Just don’t make a backup of your new version because it will overwrite your old backup!
After restore then make a backup within specter app… settings-> backup
Then attempt an upgrade to version 2.1.1 not 2.1.1-2
This should work.