Client not connecting

I’ve got the rotator talking nicely to gpredict and am moving onto the client setup. I followed the instructions and installed on my RPi2

  1. Configured the /etc/supervisor/conf.d/rotctld.conf (note the d in supervisor directoy is removed) with…

[program:rotctld] command=/usr/bin/rotctld -m 202 -r /dev/ttyACM0 -s 19200 -T 127.0.0.1 autostart=true autorestart=true user=pi priority=1

  1. Configured the /etc/supervisor/conf.d/satnogs.conf (same thing with the d on supervisor directory

[program:satnogs] command=/usr/local/bin/satnogs-poller directory=/home/pi/ autostart=true autorestart=true user=pi environment=SATNOGS_SQLITE_URL="sqlite:////tmp/jobs.sqlite",SATNOGS_API_URL="https://network-dev.satnogs.org/api/",SATNOGS_API_TOKEN="token removed",SATNOGS_VERIFY_SSL="TRUE",SATNOGS_STATION_ID="46",SATNOGS_STATION_LAT="54.6422",SATNOGS_STATION_LON="-3.5375",SATNOGS_STATION_ELEV="37",SATNOGS_PPM_ERROR="0"

…note PPM error is not set as I can’t get Kal to find a GSM station…

  1. Restarted supervisor using sudo supervisorctl reloadand notice that there was not green light on the dev-network and get this error in the var/log/supervisor/supervisor.log file

2016-04-20 17:34:33,729 CRIT Supervisor running as root (no user in config file) 2016-04-20 17:34:33,730 WARN Included extra file "/etc/supervisor/conf.d/satnogs.conf" during parsing 2016-04-20 17:34:33,730 WARN Included extra file "/etc/supervisor/conf.d/rotctld.conf" during parsing 2016-04-20 17:34:33,737 INFO RPC interface 'supervisor' initialized 2016-04-20 17:34:33,738 CRIT Server 'unix_http_server' running without any HTTP authentication checking 2016-04-20 17:34:33,739 INFO supervisord started with pid 510 2016-04-20 17:34:34,745 INFO spawned: 'rotctld' with pid 7945 2016-04-20 17:34:34,753 INFO spawned: 'satnogs' with pid 7946 2016-04-20 17:34:35,504 INFO exited: satnogs (exit status 1; not expected) 2016-04-20 17:34:36,506 INFO success: rotctld entered RUNNING state, process has stayed up for > than 1 seconds (startsecs) 2016-04-20 17:34:36,511 INFO spawned: 'satnogs' with pid 7987 2016-04-20 17:34:37,311 INFO exited: satnogs (exit status 1; not expected) 2016-04-20 17:34:39,321 INFO spawned: 'satnogs' with pid 7991 2016-04-20 17:34:40,138 INFO exited: satnogs (exit status 1; not expected) 2016-04-20 17:34:43,148 INFO spawned: 'satnogs' with pid 8037 2016-04-20 17:34:43,990 INFO exited: satnogs (exit status 1; not expected) 2016-04-20 17:34:44,992 INFO gave up: satnogs entered FATAL state, too many start retries too quickly

I’m more of a mechanical chap and this looks a bit fatal for some reason. Any suggestions / comments?

73

Alex, g7kse

Check out the satnogs-specific log for the true reason. The filename will be unique to the process every time but should be in:

/var/log/supervisor/satnogs-stderr—supervisor-XXXXXX.log

Let us know what that says!

Its a long one…

Traceback (most recent call last): File "/usr/local/bin/satnogs-poller", line 7, in <module> from satnogsclient.scheduler import scheduler File "/usr/local/lib/python2.7/dist-packages/satnogsclient/scheduler/__init__.py", line 4, in <module> from apscheduler.executors.pool import ThreadPoolExecutor File "/usr/local/lib/python2.7/dist-packages/apscheduler/__init__.py", line 3, in <module> version_info = tuple(int(x) if x.isdigit() else x for x in parsed_version.public.split('.')) AttributeError: 'tuple' object has no attribute 'public' Traceback (most recent call last): File "/usr/local/bin/satnogs-poller", line 7, in <module> from satnogsclient.scheduler import scheduler File "/usr/local/lib/python2.7/dist-packages/satnogsclient/scheduler/__init__.py", line 4, in <module> from apscheduler.executors.pool import ThreadPoolExecutor File "/usr/local/lib/python2.7/dist-packages/apscheduler/__init__.py", line 3, in <module> version_info = tuple(int(x) if x.isdigit() else x for x in parsed_version.public.split('.')) AttributeError: 'tuple' object has no attribute 'public' Traceback (most recent call last): File "/usr/local/bin/satnogs-poller", line 7, in <module> from satnogsclient.scheduler import scheduler File "/usr/local/lib/python2.7/dist-packages/satnogsclient/scheduler/__init__.py", line 4, in <module> from apscheduler.executors.pool import ThreadPoolExecutor File "/usr/local/lib/python2.7/dist-packages/apscheduler/__init__.py", line 3, in <module> version_info = tuple(int(x) if x.isdigit() else x for x in parsed_version.public.split('.')) AttributeError: 'tuple' object has no attribute 'public' Traceback (most recent call last): File "/usr/local/bin/satnogs-poller", line 7, in <module> from satnogsclient.scheduler import scheduler File "/usr/local/lib/python2.7/dist-packages/satnogsclient/scheduler/__init__.py", line 4, in <module> from apscheduler.executors.pool import ThreadPoolExecutor File "/usr/local/lib/python2.7/dist-packages/apscheduler/__init__.py", line 3, in <module> version_info = tuple(int(x) if x.isdigit() else x for x in parsed_version.public.split('.')) AttributeError: 'tuple' object has no attribute 'public' Traceback (most recent call last): File "/usr/local/bin/satnogs-poller", line 7, in <module> from satnogsclient.scheduler import scheduler File "/usr/local/lib/python2.7/dist-packages/satnogsclient/scheduler/__init__.py", line 4, in <module> from apscheduler.executors.pool import ThreadPoolExecutor File "/usr/local/lib/python2.7/dist-packages/apscheduler/__init__.py", line 3, in <module> version_info = tuple(int(x) if x.isdigit() else x for x in parsed_version.public.split('.')) Traceback (most recent call last): File "/usr/local/bin/satnogs-poller", line 7, in <module> from satnogsclient.scheduler import scheduler File "/usr/local/lib/python2.7/dist-packages/satnogsclient/scheduler/__init__.py", line 4, in <module> from apscheduler.executors.pool import ThreadPoolExecutor File "/usr/local/lib/python2.7/dist-packages/apscheduler/__init__.py", line 3, in <module> version_info = tuple(int(x) if x.isdigit() else x for x in parsed_version.public.split('.')) AttributeError: 'tuple' object has no attribute 'public' Traceback (most recent call last): File "/usr/local/bin/satnogs-poller", line 7, in <module> from satnogsclient.scheduler import scheduler File "/usr/local/lib/python2.7/dist-packages/satnogsclient/scheduler/__init__.py", line 4, in <module> from apscheduler.executors.pool import ThreadPoolExecutor File "/usr/local/lib/python2.7/dist-packages/apscheduler/__init__.py", line 3, in <module> version_info = tuple(int(x) if x.isdigit() else x for x in parsed_version.public.split('.')) AttributeError: 'tuple' object has no attribute 'public' Traceback (most recent call last): File "/usr/local/bin/satnogs-poller", line 7, in <module> from satnogsclient.scheduler import scheduler File "/usr/local/lib/python2.7/dist-packages/satnogsclient/scheduler/__init__.py", line 4, in <module> from apscheduler.executors.pool import ThreadPoolExecutor File "/usr/local/lib/python2.7/dist-packages/apscheduler/__init__.py", line 3, in <module> version_info = tuple(int(x) if x.isdigit() else x for x in parsed_version.public.split('.')) AttributeError: 'tuple' object has no attribute 'public'

Really weird. Only thing I can find is to try this:

pip install setuptools --upgrade

Otherwise, what linux distro are you using?

I ended up doing a fresh install on the RPi and narrowed the issue down to file permissions and ownership of the 2 .conf files. Once these had been chown’ed and chmod’ed (to perhaps the wrong state). Connected, remained connected and is being driven by the web interface.

What was the ownership before? I’ll make note of this in the docs, but given that supervisord runs as root I’m surprised ownership was an issue.

I’m guessing it was something daft Corey.

Because of my limited Linux knowledge I had to create the .conf files as root and that (I think) stopped me running the client with enough permissions to read both the files. As soon as I chown’ed them all the issues went away.

I’ll chalk it down to learning, hopefully if someone else makes the same mistake then its not such a big deal to find an answer