HELIUM-CONTROLLINO

I am trying to setup my controllino to run on balena remote. I can see it online (thankfully!!) but it can not connect to the helium network. Should I put some commands on, or there is a possible hardware problem? These are some printouts of diagnostics .

2022-07-17 17:33:34,377 - [WARNING] - hm_pyhelper.miner_param - (miner_param.py).get_gateway_mfr_command – /opt/python-dependencies/hm_pyhelper/miner_param.py:(132) - Variant None is not recognized. Omitting --device arg.
diagnostics WARNING:hm_pyhelper.miner_param:Variant None is not recognized. Omitting --device arg.
diagnostics 2022-07-17 17:33:34,528 - [INFO] - hm_pyhelper.miner_param - (miner_param.py).run_gateway_mfr – /opt/python-dependencies/hm_pyhelper/miner_param.py:(36) - gateway_mfr response stdout: b’{\n “result”: “fail”,\n “tests”: {\n “ecdh(0)”: {\n “error”: “ecc608 error\n\nCaused by:\n timeout/retry error”,\n “result”: “fail”\n },\n “key_config(0)”: {\n “error”: “timeout/retry error”,\n “result”: “fail”\n },\n “miner_key(0)”: {\n “error”: “ecc608 error\n\nCaused by:\n timeout/retry error”,\n “result”: “fail”\n },\n “sign(0)”: {\n “error”: “ecc608 error\n\nCaused by:\n timeout/retry error”,\n “result”: “fail”\n },\n “slot_config(0)”: {\n “error”: “timeout/retry error”,\n “result”: “fail”\n },\n “zone_locked(config)”: {\n “error”: “timeout/retry error”,\n “result”: “fail”\n },\n “zone_locked(data)”: {\n “error”: “timeout/retry error”,\n “result”: “fail”\n }\n }\n}\n’
diagnostics INFO:hm_pyhelper.miner_param:gateway_mfr response stdout: b’{\n “result”: “fail”,\n “tests”: {\n “ecdh(0)”: {\n “error”: “ecc608 error\n\nCaused by:\n timeout/retry error”,\n “result”: “fail”\n },\n “key_config(0)”: {\n “error”: “timeout/retry error”,\n “result”: “fail”\n },\n “miner_key(0)”: {\n “error”: “ecc608 error\n\nCaused by:\n timeout/retry error”,\n “result”: “fail”\n },\n “sign(0)”: {\n “error”: “ecc608 error\n\nCaused by:\n timeout/retry error”,\n “result”: “fail”\n },\n “slot_config(0)”: {\n “error”: “timeout/retry error”,\n “result”: “fail”\n },\n “zone_locked(config)”: {\n “error”: “timeout/retry error”,\n “result”: “fail”\n },\n “zone_locked(data)”: {\n “error”: “timeout/retry error”,\n “result”: “fail”\n }\n }\n}\n’
diagnostics 2022-07-17 17:33:34,528 - [INFO] - hm_pyhelper.miner_param - (miner_param.py).run_gateway_mfr – /opt/python-dependencies/hm_pyhelper/miner_param.py:(38) - gateway_mfr response stderr: b’’
diagnostics INFO:hm_pyhelper.miner_param:gateway_mfr response stderr: b’’
diagnostics ERROR:root:Failed to provision key: string indices must be integers
diagnostics INFO:apscheduler.scheduler:Scheduler started
diagnostics DEBUG:apscheduler.scheduler:Looking for jobs to run
diagnostics DEBUG:apscheduler.scheduler:No jobs; waiting until a job is added
diagnostics INFO:apscheduler.scheduler:Added job “init_scheduled_tasks..run_ship_diagnostics_task” to job store “default”
diagnostics DEBUG:apscheduler.scheduler:Looking for jobs to run
diagnostics DEBUG:apscheduler.scheduler:Next wakeup is due at 2022-07-17 18:00:00+00:00 (in 1584.636696 seconds)
diagnostics INFO:apscheduler.scheduler:Added job “init_scheduled_tasks..run_network_watchdog_task” to job store “default”
diagnostics INFO:apscheduler.scheduler:Added job “init_scheduled_tasks..run_quectel_health_task” to job store “default”
diagnostics DEBUG:apscheduler.scheduler:Looking for jobs to run
diagnostics /opt/python-dependencies/apscheduler/util.py:436: PytzUsageWarning: The localize method is no longer necessary, as this time zone supports the fold attribute (PEP 495). For more details on migrating to a PEP 495-compliant implementation, see Migration Guide — pytz_deprecation_shim 0.1.0.post0 documentation
diagnostics return tzinfo.localize(dt)
diagnostics DEBUG:apscheduler.scheduler:Next wakeup is due at 2022-07-17 17:35:35.387050+00:00 (in 119.999477 seconds)
diagnostics DEBUG:apscheduler.scheduler:Looking for jobs to run
diagnostics DEBUG:apscheduler.scheduler:Next wakeup is due at 2022-07-17 17:35:35.387050+00:00 (in 119.986058 seconds)
diagnostics DEBUG:flask_caching.backends.simplecache:get key ‘view//json’ → miss
diagnostics INFO:root:Running periodic hardware diagnostics
diagnostics 2022-07-17 17:33:35,428 - [WARNING] - hw_diag.utilities.hardware - (hardware.py).detect_ecc – /opt/python-dependencies/hw_diag/utilities/hardware.py:(209) - Unable to lookup SWARM_KEY_URI from hardware definitions, Exception message: Variant None is not recognized.
diagnostics WARNING:hw_diag.utilities.hardware:Unable to lookup SWARM_KEY_URI from hardware definitions, Exception message: Variant None is not recognized.
diagnostics 2022-07-17 17:33:35,430 - [WARNING] - hw_diag.utilities.hardware - (hardware.py).detect_ecc – /opt/python-dependencies/hw_diag/utilities/hardware.py:(219) - Unable to lookup KEY_STORAGE_BUS from hardware definitions, Exception message: Variant None is not recognized.
diagnostics WARNING:hw_diag.utilities.hardware:Unable to lookup KEY_STORAGE_BUS from hardware definitions, Exception message: Variant None is not recognized.
diagnostics 2022-07-17 17:33:35,431 - [WARNING] - hw_diag.utilities.hardware - (hardware.py).detect_ecc – /opt/python-dependencies/hw_diag/utilities/hardware.py:(223) - Unable to lookup storage bus from hardware definitions, falling back to the default.
diagnostics WARNING:hw_diag.utilities.hardware:Unable to lookup storage bus from hardware definitions, falling back to the default.
diagnostics 2022-07-17 17:33:35,497 - [WARNING] - hm_pyhelper.miner_param - (miner_param.py).get_gateway_mfr_command – /opt/python-dependencies/hm_pyhelper/miner_param.py:(132) - Variant None is not recognized. Omitting --device arg.
diagnostics WARNING:hm_pyhelper.miner_param:Variant None is not recognized. Omitting --device arg.
diagnostics 2022-07-17 17:33:35,536 - [ERROR] - hm_pyhelper.miner_param - (miner_param.py).run_gateway_mfr – /opt/python-dependencies/hm_pyhelper/miner_param.py:(42) - gateway_mfr exited with a non-zero status

Hello @gh_steeod welcome to the balena community!

Just to confirm, you are running this project on your balenaCloud, correct?

Could you go to the helium-miner container on the Terminal box and type miner info summary?

My hypothesis at the moment is that it is syncronizing, but i never tried this hardware! However i don’t like the message diagnostics WARNING:hw_diag.utilities.hardware:Unable to lookup SWARM_KEY_URI from hardware definitions, Exception message: Variant None is not recognized.

Yes, I am running it on balenaCloud! I would love to see it working tbh!
image
Spawning shell…
/opt/miner # miner info summary
Node ‘miner@127.0.0.1’ not responding to pings.

diagnostics 2022-07-18 15:25:22,989 - [INFO] - hw_diag.utilities.quectel - (quectel.py).ensure_quectel_health – /opt/python-dependencies/hw_diag/utilities/quectel.py:(394) - lets ensure that UE_MODE is set to DATA_CENTRIC
diagnostics INFO:hw_diag.utilities.quectel:lets ensure that UE_MODE is set to DATA_CENTRIC
diagnostics 2022-07-18 15:25:22,997 - [DEBUG] - hw_diag.utilities.quectel - (quectel.py).update_setting_with_rollback – /opt/python-dependencies/hw_diag/utilities/quectel.py:(257) - EG25G modem not found
diagnostics DEBUG:hw_diag.utilities.quectel:EG25G modem not found
diagnostics 2022-07-18 15:25:22,997 - [INFO] - hw_diag.utilities.quectel - (quectel.py).ensure_quectel_health – /opt/python-dependencies/hw_diag/utilities/quectel.py:(396) - lets ensure that service domain is PS
diagnostics INFO:hw_diag.utilities.quectel:lets ensure that service domain is PS
diagnostics 2022-07-18 15:25:23,003 - [DEBUG] - hw_diag.utilities.quectel - (quectel.py).update_setting_with_rollback – /opt/python-dependencies/hw_diag/utilities/quectel.py:(257) - EG25G modem not found
diagnostics DEBUG:hw_diag.utilities.quectel:EG25G modem not found
diagnostics 2022-07-18 15:25:23,004 - [INFO] - hw_diag.utilities.quectel - (quectel.py).ensure_quectel_health – /opt/python-dependencies/hw_diag/utilities/quectel.py:(404) - skipping quectel firmware update because UPDATE_QUECTEL_EG25G_MODEM is not set
diagnostics INFO:hw_diag.utilities.quectel:skipping quectel firmware update because UPDATE_QUECTEL_EG25G_MODEM is not set
diagnostics INFO:apscheduler.executors.default:Job “init_scheduled_tasks..run_quectel_health_task (trigger: interval[1:00:00], next run at: 2022-07-18 16:23:19 UTC)” executed successfully
Restarting service ‘packet-forwarder sha256:166b6ba191144704aad64dd41e11a5891ccee984cc051ad11ac061521f3d699d’
packet-forwarder Traceback (most recent call last):
packet-forwarder File “/usr/local/lib/python3.10/runpy.py”, line 196, in _run_module_as_main
packet-forwarder return _run_code(code, main_globals, None,
packet-forwarder File “/usr/local/lib/python3.10/runpy.py”, line 86, in _run_code
packet-forwarder exec(code, run_globals)
packet-forwarder File “/opt/pktfwd/main.py”, line 13, in
packet-forwarder VARIANT = os.environ[‘VARIANT’]
packet-forwarder File “/usr/local/lib/python3.10/os.py”, line 679, in getitem
packet-forwarder raise KeyError(key) from None
packet-forwarder KeyError: ‘VARIANT’
Service exited ‘packet-forwarder sha256:166b6ba191144704aad64dd41e11a5891ccee984cc051ad11ac061521f3d699d’
helium-miner Diagnostics container not ready. Going to sleep.
helium-miner Diagnostics container not ready. Going to sleep.
gateway-config Diagnostics container not ready. Going to sleep.
helium-miner Diagnostics container not ready. Going to sleep.
diagnostics [2022-07-18 15:26:20 +0000] [1] [CRITICAL] WORKER TIMEOUT (pid:57)
diagnostics [2022-07-18 15:26:20 +0000] [57] [INFO] Worker exiting (pid: 57)
diagnostics [2022-07-18 15:26:20 +0000] [79] [INFO] Booting worker with pid: 79
diagnostics 2022-07-18 15:26:21,970 - [WARNING] - hm_pyhelper.miner_param - (miner_param.py).get_gateway_mfr_command – /opt/python-dependencies/hm_pyhelper/miner_param.py:(132) - Variant None is not recognized. Omitting --device arg.
diagnostics WARNING:hm_pyhelper.miner_param:Variant None is not recognized. Omitting --device arg.
diagnostics 2022-07-18 15:26:22,130 - [INFO] - hm_pyhelper.miner_param - (miner_param.py).run_gateway_mfr – /opt/python-dependencies/hm_pyhelper/miner_param.py:(36) - gateway_mfr response stdout: b’{\n “result”: “fail”,\n “tests”: {\n “ecdh(0)”: {\n “error”: “ecc608 error\n\nCaused by:\n timeout/retry error”,\n “result”: “fail”\n },\n “key_config(0)”: {\n “error”: “timeout/retry error”,\n “result”: “fail”\n },\n “miner_key(0)”: {\n “error”: “ecc608 error\n\nCaused by:\n timeout/retry error”,\n “result”: “fail”\n },\n “sign(0)”: {\n “error”: “ecc608 error\n\nCaused by:\n timeout/retry error”,\n “result”: “fail”\n },\n “slot_config(0)”: {\n “error”: “timeout/retry error”,\n “result”: “fail”\n },\n “zone_locked(config)”: {\n “error”: “timeout/retry error”,\n “result”: “fail”\n },\n “zone_locked(data)”: {\n “error”: “timeout/retry error”,\n “result”: “fail”\n }\n }\n}\n’
diagnostics INFO:hm_pyhelper.miner_param:gateway_mfr response stdout: b’{\n “result”: “fail”,\n “tests”: {\n “ecdh(0)”: {\n “error”: “ecc608 error\n\nCaused by:\n timeout/retry error”,\n “result”: “fail”\n },\n “key_config(0)”: {\n “error”: “timeout/retry error”,\n “result”: “fail”\n },\n “miner_key(0)”: {\n “error”: “ecc608 error\n\nCaused by:\n timeout/retry error”,\n “result”: “fail”\n },\n “sign(0)”: {\n “error”: “ecc608 error\n\nCaused by:\n timeout/retry error”,\n “result”: “fail”\n },\n “slot_config(0)”: {\n “error”: “timeout/retry error”,\n “result”: “fail”\n },\n “zone_locked(config)”: {\n “error”: “timeout/retry error”,\n “result”: “fail”\n },\n “zone_locked(data)”: {\n “error”: “timeout/retry error”,\n “result”: “fail”\n }\n }\n}\n’
diagnostics 2022-07-18 15:26:22,131 - [INFO] - hm_pyhelper.miner_param - (miner_param.py).run_gateway_mfr – /opt/python-dependencies/hm_pyhelper/miner_param.py:(38) - gateway_mfr response stderr: b’’
diagnostics INFO:hm_pyhelper.miner_param:gateway_mfr response stderr: b’’
diagnostics ERROR:root:Failed to provision key: string indices must be integers
diagnostics INFO:apscheduler.scheduler:Scheduler started
diagnostics DEBUG:apscheduler.scheduler:Looking for jobs to run
diagnostics DEBUG:apscheduler.scheduler:No jobs; waiting until a job is added
diagnostics INFO:apscheduler.scheduler:Added job “init_scheduled_tasks..run_ship_diagnostics_task” to job store “default”
diagnostics DEBUG:apscheduler.scheduler:Looking for jobs to run
diagnostics DEBUG:apscheduler.scheduler:Next wakeup is due at 2022-07-18 16:00:00+00:00 (in 2017.438337 seconds)
diagnostics INFO:apscheduler.scheduler:Added job “init_scheduled_tasks..run_network_watchdog_task” to job store “default”
diagnostics INFO:apscheduler.scheduler:Added job “init_scheduled_tasks..run_quectel_health_task” to job store “default”
diagnostics DEBUG:apscheduler.scheduler:Looking for jobs to run
diagnostics /opt/python-dependencies/apscheduler/util.py:436: PytzUsageWarning: The localize method is no longer necessary, as this time zone supports the fold attribute (PEP 495). For more details on migrating to a PEP 495-compliant implementation, see Migration Guide — pytz_deprecation_shim 0.1.0.post0 documentation
diagnostics return tzinfo.localize(dt)
diagnostics DEBUG:apscheduler.scheduler:Next wakeup is due at 2022-07-18 15:28:22.568142+00:00 (in 119.999122 seconds)
diagnostics DEBUG:apscheduler.scheduler:Looking for jobs to run
diagnostics DEBUG:apscheduler.scheduler:Next wakeup is due at 2022-07-18 15:28:22.568142+00:00 (in 119.981578 seconds)
diagnostics DEBUG:flask_caching.backends.simplecache:get key ‘view//json’ → miss
diagnostics INFO:root:Running periodic hardware diagnostics
diagnostics 2022-07-18 15:26:22,596 - [WARNING] - hw_diag.utilities.hardware - (hardware.py).detect_ecc – /opt/python-dependencies/hw_diag/utilities/hardware.py:(209) - Unable to lookup SWARM_KEY_URI from hardware definitions, Exception message: Variant None is not recognized.
diagnostics WARNING:hw_diag.utilities.hardware:Unable to lookup SWARM_KEY_URI from hardware definitions, Exception message: Variant None is not recognized.
diagnostics 2022-07-18 15:26:22,596 - [WARNING] - hw_diag.utilities.hardware - (hardware.py).detect_ecc – /opt/python-dependencies/hw_diag/utilities/hardware.py:(219) - Unable to lookup KEY_STORAGE_BUS from hardware definitions, Exception message: Variant None is not recognized.
diagnostics WARNING:hw_diag.utilities.hardware:Unable to lookup KEY_STORAGE_BUS from hardware definitions, Exception message: Variant None is not recognized.
diagnostics 2022-07-18 15:26:22,597 - [WARNING] - hw_diag.utilities.hardware - (hardware.py).detect_ecc – /opt/python-dependencies/hw_diag/utilities/hardware.py:(223) - Unable to lookup storage bus from hardware definitions, falling back to the default.
diagnostics WARNING:hw_diag.utilities.hardware:Unable to lookup storage bus from hardware definitions, falling back to the default.
diagnostics 2022-07-18 15:26:22,638 - [WARNING] - hm_pyhelper.miner_param - (miner_param.py).get_gateway_mfr_command – /opt/python-dependencies/hm_pyhelper/miner_param.py:(132) - Variant None is not recognized. Omitting --device arg.
diagnostics WARNING:hm_pyhelper.miner_param:Variant None is not recognized. Omitting --device arg.
diagnostics 2022-07-18 15:26:22,669 - [ERROR] - hm_pyhelper.miner_param - (miner_param.py).run_gateway_mfr – /opt/python-dependencies/hm_pyhelper/miner_param.py:(42) - gateway_mfr exited with a non-zero status
diagnostics Traceback (most recent call last):
diagnostics File “/opt/python-dependencies/hm_pyhelper/miner_param.py”, line 31, in run_gateway_mfr
diagnostics run_gateway_mfr_result = subprocess.run(
diagnostics File “/usr/local/lib/python3.10/subprocess.py”, line 524, in run
diagnostics raise CalledProcessError(retcode, process.args,
diagnostics subprocess.CalledProcessError: Command ‘[’/opt/python-dependencies/hm_pyhelper/gateway_mfr’, ‘key’]’ returned non-zero exit status 1.
diagnostics ERROR:hm_pyhelper.miner_param:gateway_mfr exited with a non-zero status
diagnostics Traceback (most recent call last):
diagnostics File “/opt/python-dependencies/hm_pyhelper/miner_param.py”, line 31, in run_gateway_mfr
diagnostics run_gateway_mfr_result = subprocess.run(
diagnostics File “/usr/local/lib/python3.10/subprocess.py”, line 524, in run
diagnostics raise CalledProcessError(retcode, process.args,
diagnostics subprocess.CalledProcessError: Command ‘[’/opt/python-dependencies/hm_pyhelper/gateway_mfr’, ‘key’]’ returned non-zero exit status 1.
diagnostics 2022-07-18 15:26:22,675 - [ERROR] - hw_diag.utilities.hardware - (hardware.py).get_public_keys_and_ignore_errors – /opt/python-dependencies/hw_diag/utilities/hardware.py:(295) - gateway_mfr exited with a non-zero status
diagnostics ERROR:hw_diag.utilities.hardware:gateway_mfr exited with a non-zero status
Restarting service ‘packet-forwarder sha256:166b6ba191144704aad64dd41e11a5891ccee984cc051ad11ac061521f3d699d’
packet-forwarder Traceback (most recent call last):
packet-forwarder File “/usr/local/lib/python3.10/runpy.py”, line 196, in _run_module_as_main
packet-forwarder return _run_code(code, main_globals, None,
packet-forwarder File “/usr/local/lib/python3.10/runpy.py”, line 86, in _run_code
packet-forwarder exec(code, run_globals)
packet-forwarder File “/opt/pktfwd/main.py”, line 13, in
packet-forwarder VARIANT = os.environ[‘VARIANT’]
packet-forwarder File “/usr/local/lib/python3.10/os.py”, line 679, in getitem
packet-forwarder raise KeyError(key) from None
packet-forwarder KeyError: ‘VARIANT’
Service exited ‘packet-forwarder sha256:166b6ba191144704aad64dd41e11a5891ccee984cc051ad11ac061521f3d699d’
helium-miner Diagnostics container not ready. Going to sleep.
helium-miner Diagnostics container not ready. Going to sleep.
helium-miner Diagnostics container not ready. Going to sleep.

More or less thats the problem.

@gh_steeod looks like you need the VARIANT variable (at least) and i see an issue on their repo → Variant value? · Issue #1 · NebraLtd/helium-controllino · GitHub but not sure this is going to work.

Maybe you can talk with Nebra on that issue on the repo?

Also can you try to run miner info height and share the results?

TypeError: means that you are trying to perform an operation on a value whose type is not compatible with that operation. An Iterable is a collection of elements that can be accessed sequentially . In Python, iterable objects are indexed using numbers . When you try to access an iterable object using a string or a float as the index, an error will be returned as TypeError: string indices must be integers. This means that when you’re accessing an iterable object like a string or float value, you must do it using an integer value.

For example, str[hello"] and str[2.1] as indexes. As these are not integers, a TypeError exception is raised. This means that when you’re accessing an iterable object like a string or float value, you must do it using an integer value . If you are accessing items from a dictionary , make sure that you are accessing the dictionary itself and not a key in the dictionary.

Python supports slice notation for any sequential data type like lists, strings , tuples, bytes, bytearrays, and ranges. When working with strings and slice notation, it can happen that a TypeError: string indices must be integers is raised, pointing out that the indices must be integers, even if they obviously are.

@salmanfarisvp do you have any update here? is controlino compatible with nebra finally? Thanks :slight_smile:

@mpous just FYI this is working without issue now. See GitHub - NebraLtd/helium-controllino: Balena OpenFleet for Controllino Miners and balenaHub - IoT embedded device apps, edge computing resources, and developer tools