rtl-sdr-scanner-cpp
rtl-sdr-scanner-cpp copied to clipboard
sdr monitor reader - missing spectrogram start fail
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!