rtl-sdr-scanner-cpp icon indicating copy to clipboard operation
rtl-sdr-scanner-cpp copied to clipboard

sdr monitor reader - missing spectrogram start fail

Open upya4ko opened this issue 2 years ago • 0 comments

Have some problems when running server couple weeks, in last days it stop recording, i look output and found error:

rtl-sdr-scanner-cpp-sdr-broker-1          | 1677834164: New connection from 172.18.0.5:45259 on port 1883.
rtl-sdr-scanner-cpp-sdr-broker-1          | 1677834164: New client connected from 172.18.0.5:45259 as auto-333333333-4444444-55555-666666-88888888888C63 (p2, c1, k60, u'admin').
rtl-sdr-scanner-cpp-sdr-monitor-reader-1  | Traceback (most recent call last):
rtl-sdr-scanner-cpp-sdr-monitor-reader-1  |   File "/usr/src/sdr-panel/manage.py", line 10, in <module>
rtl-sdr-scanner-cpp-sdr-monitor-reader-1  | Exception while running run() in 'scripts.mqtt_reader'
rtl-sdr-scanner-cpp-sdr-monitor-reader-1  |     execute_from_command_line(sys.argv)
rtl-sdr-scanner-cpp-sdr-monitor-reader-1  |   File "/usr/local/lib/python3.10/dist-packages/django/core/management/__init__.py", line 419, in execute_from_command_line
rtl-sdr-scanner-cpp-sdr-monitor-reader-1  |     utility.execute()
rtl-sdr-scanner-cpp-sdr-monitor-reader-1  |   File "/usr/local/lib/python3.10/dist-packages/django/core/management/__init__.py", line 413, in execute
rtl-sdr-scanner-cpp-sdr-monitor-reader-1  |     self.fetch_command(subcommand).run_from_argv(self.argv)
rtl-sdr-scanner-cpp-sdr-monitor-reader-1  |   File "/usr/local/lib/python3.10/dist-packages/django_extensions/management/email_notifications.py", line 65, in run_from_argv
rtl-sdr-scanner-cpp-sdr-monitor-reader-1  |     super().run_from_argv(argv)
rtl-sdr-scanner-cpp-sdr-monitor-reader-1  |   File "/usr/local/lib/python3.10/dist-packages/django/core/management/base.py", line 354, in run_from_argv
rtl-sdr-scanner-cpp-sdr-monitor-reader-1  |     self.execute(*args, **cmd_options)
rtl-sdr-scanner-cpp-sdr-monitor-reader-1  |   File "/usr/local/lib/python3.10/dist-packages/django_extensions/management/email_notifications.py", line 77, in execute
rtl-sdr-scanner-cpp-sdr-monitor-reader-1  |     super().execute(*args, **options)
rtl-sdr-scanner-cpp-sdr-monitor-reader-1  |   File "/usr/local/lib/python3.10/dist-packages/django/core/management/base.py", line 398, in execute
rtl-sdr-scanner-cpp-sdr-monitor-reader-1  |     output = self.handle(*args, **options)
rtl-sdr-scanner-cpp-sdr-monitor-reader-1  |   File "/usr/local/lib/python3.10/dist-packages/django_extensions/management/utils.py", line 62, in inner
rtl-sdr-scanner-cpp-sdr-monitor-reader-1  |     ret = func(self, *args, **kwargs)
rtl-sdr-scanner-cpp-sdr-monitor-reader-1  |   File "/usr/local/lib/python3.10/dist-packages/django_extensions/management/commands/runscript.py", line 281, in handle
rtl-sdr-scanner-cpp-sdr-monitor-reader-1  |     run_script(script_mod, *script_args)
rtl-sdr-scanner-cpp-sdr-monitor-reader-1  |   File "/usr/local/lib/python3.10/dist-packages/django_extensions/management/commands/runscript.py", line 159, in run_script
rtl-sdr-scanner-cpp-sdr-monitor-reader-1  |     exit_code = mod.run(*script_args)
rtl-sdr-scanner-cpp-sdr-monitor-reader-1  |   File "/usr/src/sdr-panel/scripts/mqtt_reader.py", line 499, in run
rtl-sdr-scanner-cpp-sdr-monitor-reader-1  |     paho.mqtt.subscribe.callback(
rtl-sdr-scanner-cpp-sdr-monitor-reader-1  |   File "/usr/local/lib/python3.10/dist-packages/paho/mqtt/subscribe.py", line 183, in callback
rtl-sdr-scanner-cpp-sdr-monitor-reader-1  |     client.loop_forever()
rtl-sdr-scanner-cpp-sdr-monitor-reader-1  |   File "/usr/local/lib/python3.10/dist-packages/paho/mqtt/client.py", line 1756, in loop_forever
rtl-sdr-scanner-cpp-sdr-monitor-reader-1  |     rc = self._loop(timeout)
rtl-sdr-scanner-cpp-sdr-monitor-reader-1  |   File "/usr/local/lib/python3.10/dist-packages/paho/mqtt/client.py", line 1164, in _loop
rtl-sdr-scanner-cpp-sdr-monitor-reader-1  |     rc = self.loop_read()
rtl-sdr-scanner-cpp-sdr-monitor-reader-1  |   File "/usr/local/lib/python3.10/dist-packages/paho/mqtt/client.py", line 1556, in loop_read
rtl-sdr-scanner-cpp-sdr-monitor-reader-1  |     rc = self._packet_read()
rtl-sdr-scanner-cpp-sdr-monitor-reader-1  |   File "/usr/local/lib/python3.10/dist-packages/paho/mqtt/client.py", line 2439, in _packet_read
rtl-sdr-scanner-cpp-sdr-monitor-reader-1  |     rc = self._packet_handle()
rtl-sdr-scanner-cpp-sdr-monitor-reader-1  |   File "/usr/local/lib/python3.10/dist-packages/paho/mqtt/client.py", line 3033, in _packet_handle
rtl-sdr-scanner-cpp-sdr-monitor-reader-1  |     return self._handle_publish()
rtl-sdr-scanner-cpp-sdr-monitor-reader-1  |   File "/usr/local/lib/python3.10/dist-packages/paho/mqtt/client.py", line 3327, in _handle_publish
rtl-sdr-scanner-cpp-sdr-monitor-reader-1  |     self._handle_on_message(message)
rtl-sdr-scanner-cpp-sdr-monitor-reader-1  |   File "/usr/local/lib/python3.10/dist-packages/paho/mqtt/client.py", line 3570, in _handle_on_message
rtl-sdr-scanner-cpp-sdr-monitor-reader-1  |     on_message(self, self._userdata, message)
rtl-sdr-scanner-cpp-sdr-monitor-reader-1  |   File "/usr/local/lib/python3.10/dist-packages/paho/mqtt/subscribe.py", line 45, in _on_message_callback
rtl-sdr-scanner-cpp-sdr-monitor-reader-1  |     userdata['callback'](client, userdata['userdata'], message)
rtl-sdr-scanner-cpp-sdr-monitor-reader-1  |   File "/usr/src/sdr-panel/scripts/mqtt_reader.py", line 456, in on_message
rtl-sdr-scanner-cpp-sdr-monitor-reader-1  |     cleaner.clear()
rtl-sdr-scanner-cpp-sdr-monitor-reader-1  |   File "/usr/src/sdr-panel/scripts/mqtt_reader.py", line 415, in clear
rtl-sdr-scanner-cpp-sdr-monitor-reader-1  |     self.__remove_spectrograms()
rtl-sdr-scanner-cpp-sdr-monitor-reader-1  |   File "/usr/src/sdr-panel/scripts/mqtt_reader.py", line 424, in __remove_spectrograms
rtl-sdr-scanner-cpp-sdr-monitor-reader-1  |     total_size += s.data_file.size
rtl-sdr-scanner-cpp-sdr-monitor-reader-1  |   File "/usr/local/lib/python3.10/dist-packages/django/db/models/fields/files.py", line 71, in size
rtl-sdr-scanner-cpp-sdr-monitor-reader-1  |     return self.storage.size(self.name)
rtl-sdr-scanner-cpp-sdr-monitor-reader-1  |   File "/usr/local/lib/python3.10/dist-packages/django/core/files/storage.py", line 341, in size
rtl-sdr-scanner-cpp-sdr-monitor-reader-1  |     return os.path.getsize(self.path(name))
rtl-sdr-scanner-cpp-sdr-monitor-reader-1  |   File "/usr/lib/python3.10/genericpath.py", line 50, in getsize
rtl-sdr-scanner-cpp-sdr-monitor-reader-1  |     return os.stat(filename).st_size
rtl-sdr-scanner-cpp-sdr-monitor-reader-1  | FileNotFoundError: [Errno 2] No such file or directory: '/usr/src/sdr-panel/public/media/device_2/spectrogram/2023-01-20/00_00_00_435000000.bin'
rtl-sdr-scanner-cpp-sdr-broker-1          | 1677834165: Client auto-D4C8AF75-39EB-55E5-3A1D-3F0F8189FC63 closed its connection.

Ok, server have power loss, i try just give script what it need to start:

sudo touch /srv/docker/volumes/rtl-sdr-scanner-cpp_monitor_data/_data/device_2/spectrogram/2023-01-20/00_00_00_427000000.bin

restart service in foreground and after night server "stop" again on same error

My docker-compose.yml

version: '3.7'
services:
  sdr-broker:
    image: eclipse-mosquitto:latest
    restart: on-failure
    command:
      - /bin/sh
      - -c
      - |
        echo "listener 1883" > /mosquitto/config/mosquitto.conf
        echo "allow_anonymous false" >> /mosquitto/config/mosquitto.conf
        echo "password_file /mosquitto/config/password.txt" >> /mosquitto/config/mosquitto.conf
        echo "admin:password" > /mosquitto/config/password.txt
        mosquitto_passwd -U /mosquitto/config/password.txt
        mosquitto -c /mosquitto/config/mosquitto.conf
  sdr-scanner:
    image: shajen/sdr-scanner:latest
    restart: on-failure
    depends_on:
      - sdr-broker
    volumes:
      - /etc/timezone:/etc/timezone:ro
      - /etc/localtime:/etc/localtime:ro
      - ./config.json:/config.json
    devices:
      - /dev/bus/usb:/dev/bus/usb
  sdr-monitor-setup:
    image: shajen/sdr-monitor:latest
    restart: on-failure
    depends_on:
      - sdr-broker
    volumes:
      - "/etc/timezone:/etc/timezone:ro"
      - "/etc/localtime:/etc/localtime:ro"
      - "monitor_db:/usr/src/sdr-panel/db"
      - "monitor_data:/usr/src/sdr-panel/public/media"
    command: bash -c "python3 manage.py migrate && DJANGO_SUPERUSER_PASSWORD=password python3 manage.py createsuperuser --noinput --username admin --email [email protected] || true"
  sdr-monitor-server:
    image: shajen/sdr-monitor:latest
    restart: on-failure
    depends_on:
      sdr-monitor-setup:
        condition: service_completed_successfully
    volumes:
      - "/etc/timezone:/etc/timezone:ro"
      - "/etc/localtime:/etc/localtime:ro"
      - "monitor_db:/usr/src/sdr-panel/db"
      - "monitor_data:/usr/src/sdr-panel/public/media"
    command: python3 manage.py runserver 0.0.0.0:8000
    ports:
      - 8000:8000
  sdr-monitor-reader:
    image: shajen/sdr-monitor:latest
    restart: on-failure
    depends_on:
      sdr-monitor-setup:
        condition: service_completed_successfully
    volumes:
      - "/etc/timezone:/etc/timezone:ro"
      - "/etc/localtime:/etc/localtime:ro"
      - "monitor_db:/usr/src/sdr-panel/db"
      - "monitor_data:/usr/src/sdr-panel/public/media"
    command: python3 manage.py runscript mqtt_reader

volumes:
  monitor_db:
  monitor_data:

My config.json

{
  "scanner_frequencies_ranges": [
    {
      "device_serial": "auto",
      "ranges": [
        {
          "start": 440000000,
          "stop": 441000000,
          "step": 1000,
          "sample_rate": 2048000
        },
        {
          "start": 441000000,
          "stop": 442000000,
          "step": 1000,
          "sample_rate": 2048000
        },
        {
          "start": 442000000,
          "stop": 443000000,
          "step": 1000,
          "sample_rate": 2048000
        },
        {
          "start": 443000000,
          "stop": 444000000,
          "step": 1000,
          "sample_rate": 2048000
        },
        {
          "start": 444000000,
          "stop": 445000000,
          "step": 1000,
          "sample_rate": 2048000
        },
        {
          "start": 445000000,
          "stop": 446000000,
          "step": 1000,
          "sample_rate": 2048000
        },
        {
          "start": 446000000,
          "stop": 447000000,
          "step": 1000,
          "sample_rate": 2048000
        },
        {
          "start": 447000000,
          "stop": 448000000,
          "step": 1000,
          "sample_rate": 2048000
        },
        {
          "start": 448000000,
          "stop": 449000000,
          "step": 1000,
          "sample_rate": 2048000
        },
        {
          "start": 449000000,
          "stop": 450000000,
          "step": 1000,
          "sample_rate": 2048000
        },
        {
          "start": 450000000,
          "stop": 451000000,
          "step": 1000,
          "sample_rate": 2048000
        }
        ,
        {
          "start": 451000000,
          "stop": 452000000,
          "step": 1000,
          "sample_rate": 2048000
        },
        {
          "start": 452000000,
          "stop": 453000000,
          "step": 1000,
          "sample_rate": 2048000
        },
        {
          "start": 453000000,
          "stop": 454000000,
          "step": 1000,
          "sample_rate": 2048000
        },
        {
          "start": 454000000,
          "stop": 455000000,
          "step": 1000,
          "sample_rate": 2048000
        },
        {
          "start": 455000000,
          "stop": 456000000,
          "step": 1000,
          "sample_rate": 2048000
        },
        {
          "start": 456000000,
          "stop": 457000000,
          "step": 1000,
          "sample_rate": 2048000
        },
        {
          "start": 457000000,
          "stop": 458000000,
          "step": 1000,
          "sample_rate": 2048000
        },
        {
          "start": 458000000,
          "stop": 459000000,
          "step": 1000,
          "sample_rate": 2048000
        },
        {
          "start": 459000000,
          "stop": 460000000,
          "step": 1000,
          "sample_rate": 2048000
        },
        {
          "start": 460000000,
          "stop": 461000000,
          "step": 1000,
          "sample_rate": 2048000
        },
        {
          "start": 461000000,
          "stop": 462000000,
          "step": 1000,
          "sample_rate": 2048000
        },
        {
          "start": 462000000,
          "stop": 463000000,
          "step": 1000,
          "sample_rate": 2048000
        },
        {
          "start": 463000000,
          "stop": 464000000,
          "step": 1000,
          "sample_rate": 2048000
        },
        {
          "start": 464000000,
          "stop": 465000000,
          "step": 1000,
          "sample_rate": 2048000
        },
        {
          "start": 465000000,
          "stop": 466000000,
          "step": 1000,
          "sample_rate": 2048000
        },
        {
          "start": 466000000,
          "stop": 467000000,
          "step": 1000,
          "sample_rate": 2048000
        },
        {
          "start": 467000000,
          "stop": 468000000,
          "step": 1000,
          "sample_rate": 2048000
        },
        {
          "start": 468000000,
          "stop": 469000000,
          "step": 1000,
          "sample_rate": 2048000
        },
        {
          "start": 469000000,
          "stop": 470000000,
          "step": 1000,
          "sample_rate": 2048000
        },
        {
          "start": 470000000,
          "stop": 471000000,
          "step": 1000,
          "sample_rate": 2048000
        },
        {
          "start": 471000000,
          "stop": 472000000,
          "step": 1000,
          "sample_rate": 2048000
        },
        {
          "start": 472000000,
          "stop": 473000000,
          "step": 1000,
          "sample_rate": 2048000
        },
        {
          "start": 473000000,
          "stop": 474000000,
          "step": 1000,
          "sample_rate": 2048000
        },
        {
          "start": 474000000,
          "stop": 475000000,
          "step": 1000,
          "sample_rate": 2048000
        },
        {
          "start": 475000000,
          "stop": 476000000,
          "step": 1000,
          "sample_rate": 2048000
        },
        {
          "start": 476000000,
          "stop": 477000000,
          "step": 1000,
          "sample_rate": 2048000
        },
        {
          "start": 477000000,
          "stop": 478000000,
          "step": 1000,
          "sample_rate": 2048000
        },
        {
          "start": 478000000,
          "stop": 479000000,
          "step": 1000,
          "sample_rate": 2048000
        },
        {
          "start": 479000000,
          "stop": 480000000,
          "step": 1000,
          "sample_rate": 2048000
        },
        {
          "start": 481000000,
          "stop": 482000000,
          "step": 1000,
          "sample_rate": 2048000
        },
        {
          "start": 482000000,
          "stop": 483000000,
          "step": 1000,
          "sample_rate": 2048000
        },
        {
          "start": 483000000,
          "stop": 484000000,
          "step": 1000,
          "sample_rate": 2048000
        },
        {
          "start": 484000000,
          "stop": 485000000,
          "step": 1000,
          "sample_rate": 2048000
        },
        {
          "start": 485000000,
          "stop": 486000000,
          "step": 1000,
          "sample_rate": 2048000
        },
        {
          "start": 486000000,
          "stop": 487000000,
          "step": 1000,
          "sample_rate": 2048000
        },
        {
          "start": 487000000,
          "stop": 488000000,
          "step": 1000,
          "sample_rate": 2048000
        },
        {
          "start": 488000000,
          "stop": 489000000,
          "step": 1000,
          "sample_rate": 2048000
        },
        {
          "start": 489000000,
          "stop": 490000000,
          "step": 1000,
          "sample_rate": 2048000
        },
        {
          "start": 491000000,
          "stop": 492000000,
          "step": 1000,
          "sample_rate": 2048000
        },
        {
          "start": 492000000,
          "stop": 493000000,
          "step": 1000,
          "sample_rate": 2048000
        },
        {
          "start": 493000000,
          "stop": 494000000,
          "step": 1000,
          "sample_rate": 2048000
        },
        {
          "start": 494000000,
          "stop": 495000000,
          "step": 1000,
          "sample_rate": 2048000
        },
        {
          "start": 495000000,
          "stop": 496000000,
          "step": 1000,
          "sample_rate": 2048000
        },
        {
          "start": 496000000,
          "stop": 497000000,
          "step": 1000,
          "sample_rate": 2048000
        },
        {
          "start": 497000000,
          "stop": 498000000,
          "step": 1000,
          "sample_rate": 2048000
        },
        {
          "start": 498000000,
          "stop": 499000000,
          "step": 1000,
          "sample_rate": 2048000
        },
        {
          "start": 499000000,
          "stop": 500000000,
          "step": 1000,
          "sample_rate": 2048000
        }

      ]
    }
  ],
  "ignored_frequencies_ranges": [
    {
      "comments": "Digital repeating strobe",
      "start": 442233000,
      "stop": 442241000
    },
    {
      "comments": "Digital repeating strobe",
      "start": 442333000,
      "stop": 442341000
    },
    {
      "start": 446133000,
      "stop": 446135000
    },
    {
      "start": 446133000,
      "stop": 446135000
    },
    {
      "start": 446175000,
      "stop": 446178000
    },
    {
      "start": 446021000,
      "stop": 446024000
    }

  ],
  "devices": {
    "rtl_sdr": {
      "ppm_error": -2.429,
      "tuner_gain": 49.9,
      "offset": 0
    },
    "hack_rf": {
      "lna_gain": 0,
      "vga_gain": 0,
      "offset": 0
    }
  },
  "recording": {
    "max_noise_time_ms": 500,
    "min_time_ms": 2000,
    "min_sample_rate": 16000
  },
  "detection": {
    "frequency_grouping_size": 12500,
    "frequency_range_scanning_time_ms": 64,
    "noise_learning_time_seconds": 30,
    "noise_detection_margin": 10,
    "torn_transmission_learning_time_seconds": 60
  },
  "output": {
    "logs": "sdr/logs",
    "file_log_level": "info",
    "console_log_level": "info"
  },
  "cores": 4,
  "memory_limit_mb": 0,
  "mqtt": {
    "hostname": "sdr-broker",
    "port": 1883,
    "username": "admin",
    "password": "password"
  }
}

Maybe need add additional check "If file absent" in my opinion error appears when monitor-reader try access deleted spectrogramm (it over 10GB of default limit already and date of missing file is older than 30 days)

Thanks for work!

upya4ko avatar Mar 03 '23 09:03 upya4ko