Hello,
I’ve got rsudp installed on a Pi 4. Everything looks to be working correctly, I’m getting a waveform and spectrogram and when I set it to write I get files save in the output_dir. However, when an alert it triggered, I’m not getting a screenshot saved.
My rsudp_settings.json:
{
"settings": {
"port": 8888,
"station": "S8B94",
"output_dir": "/home/pi/rsudp_data/",
"debug": true
},
"printdata": {
"enabled": false
},
"write": {
"enabled": false,
"channels": [
"all"
]
},
"plot": {
"enabled": true,
"duration": 90,
"refresh_interval": 0,
"spectrogram": true,
"fullscreen": true,
"kiosk": true,
"eq_screenshots": true,
"channels": [
"all"
],
"filter_waveform": false,
"filter_spectrogram": false,
"filter_highpass": 0.7,
"filter_lowpass": 2.0,
"filter_corners": 4,
"spectrogram_freq_range": false,
"upper_limit": 15.0,
"lower_limit": 0.0,
"logarithmic_y_axis": false,
"deconvolve": true,
"units": "CHAN"
},
"forward": {
"enabled": false,
"address": [
"192.168.1.254"
],
"port": [
8888
],
"channels": [
"all"
],
"fwd_data": true,
"fwd_alarms": false
},
"alert": {
"enabled": true,
"channel": "HZ",
"sta": 6,
"lta": 30,
"duration": 0.0,
"threshold": 1,
"reset": 0.2,
"highpass": 0.8,
"lowpass": 9,
"deconvolve": false,
"units": "VEL",
"on_plot": false,
"on_plot_end_line_color": "#D72638",
"on_plot_start_line_color": "#4C8BF5"
},
"alertsound": {
"enabled": true,
"mp3file": "doorbell"
},
"custom": {
"enabled": false,
"codefile": "n/a",
"win_override": false
},
"tweets": {
"enabled": false,
"tweet_images": true,
"api_key": "n/a",
"api_secret": "n/a",
"access_token": "n/a",
"access_secret": "n/a",
"extra_text": ""
},
"telegram": {
"enabled": false,
"send_images": true,
"token": "",
"chat_id": "",
"extra_text": ""
},
"rsam": {
"enabled": false,
"quiet": true,
"fwaddr": "192.168.1.254",
"fwport": 8887,
"fwformat": "LITE",
"channel": "HZ",
"interval": 10,
"deconvolve": false,
"units": "VEL"
}
}
Output from at startup:
Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
Processing /home/pi/rsudp
Preparing metadata (setup.py): started
Preparing metadata (setup.py): finished with status 'done'
Requirement already satisfied: obspy in /home/pi/miniforge3/envs/rsudp/lib/python3.12/site-packages (from rsudp==2.1.0) (1.4.1)
Requirement already satisfied: numpy<3,>=2.0.0 in /home/pi/miniforge3/envs/rsudp/lib/python3.12/site-packages (from rsudp==2.1.0) (2.0.1)
Requirement already satisfied: matplotlib<4,>3.2 in /home/pi/miniforge3/envs/rsudp/lib/python3.12/site-packages (from rsudp==2.1.0) (3.10.1)
Requirement already satisfied: pydub in /home/pi/miniforge3/envs/rsudp/lib/python3.12/site-packages (from rsudp==2.1.0) (0.25.1)
Requirement already satisfied: twython in /home/pi/miniforge3/envs/rsudp/lib/python3.12/site-packages (from rsudp==2.1.0) (3.9.1)
Requirement already satisfied: python-telegram-bot in /home/pi/miniforge3/envs/rsudp/lib/python3.12/site-packages (from rsudp==2.1.0) (22.0)
Requirement already satisfied: contourpy>=1.0.1 in /home/pi/miniforge3/envs/rsudp/lib/python3.12/site-packages (from matplotlib<4,>3.2->rsudp==2.1.0) (1.3.2)
Requirement already satisfied: cycler>=0.10 in /home/pi/miniforge3/envs/rsudp/lib/python3.12/site-packages (from matplotlib<4,>3.2->rsudp==2.1.0) (0.12.1)
Requirement already satisfied: fonttools>=4.22.0 in /home/pi/miniforge3/envs/rsudp/lib/python3.12/site-packages (from matplotlib<4,>3.2->rsudp==2.1.0) (4.57.0)
Requirement already satisfied: kiwisolver>=1.3.1 in /home/pi/miniforge3/envs/rsudp/lib/python3.12/site-packages (from matplotlib<4,>3.2->rsudp==2.1.0) (1.4.8)
Requirement already satisfied: packaging>=20.0 in /home/pi/miniforge3/envs/rsudp/lib/python3.12/site-packages (from matplotlib<4,>3.2->rsudp==2.1.0) (25.0)
Requirement already satisfied: pillow>=8 in /home/pi/miniforge3/envs/rsudp/lib/python3.12/site-packages (from matplotlib<4,>3.2->rsudp==2.1.0) (11.2.1)
Requirement already satisfied: pyparsing>=2.3.1 in /home/pi/miniforge3/envs/rsudp/lib/python3.12/site-packages (from matplotlib<4,>3.2->rsudp==2.1.0) (3.2.3)
Requirement already satisfied: python-dateutil>=2.7 in /home/pi/miniforge3/envs/rsudp/lib/python3.12/site-packages (from matplotlib<4,>3.2->rsudp==2.1.0) (2.9.0.post0)
Requirement already satisfied: scipy>=1.7 in /home/pi/miniforge3/envs/rsudp/lib/python3.12/site-packages (from obspy->rsudp==2.1.0) (1.15.2)
Requirement already satisfied: lxml in /home/pi/miniforge3/envs/rsudp/lib/python3.12/site-packages (from obspy->rsudp==2.1.0) (5.3.0)
Requirement already satisfied: setuptools in /home/pi/miniforge3/envs/rsudp/lib/python3.12/site-packages (from obspy->rsudp==2.1.0) (75.8.0)
Requirement already satisfied: sqlalchemy<2 in /home/pi/miniforge3/envs/rsudp/lib/python3.12/site-packages (from obspy->rsudp==2.1.0) (1.4.54)
Requirement already satisfied: decorator in /home/pi/miniforge3/envs/rsudp/lib/python3.12/site-packages (from obspy->rsudp==2.1.0) (5.2.1)
Requirement already satisfied: requests in /home/pi/miniforge3/envs/rsudp/lib/python3.12/site-packages (from obspy->rsudp==2.1.0) (2.32.3)
Requirement already satisfied: httpx~=0.27 in /home/pi/miniforge3/envs/rsudp/lib/python3.12/site-packages (from python-telegram-bot->rsudp==2.1.0) (0.28.1)
Requirement already satisfied: requests-oauthlib>=0.4.0 in /home/pi/miniforge3/envs/rsudp/lib/python3.12/site-packages (from twython->rsudp==2.1.0) (2.0.0)
Requirement already satisfied: anyio in /home/pi/miniforge3/envs/rsudp/lib/python3.12/site-packages (from httpx~=0.27->python-telegram-bot->rsudp==2.1.0) (4.9.0)
Requirement already satisfied: certifi in /home/pi/miniforge3/envs/rsudp/lib/python3.12/site-packages (from httpx~=0.27->python-telegram-bot->rsudp==2.1.0) (2025.1.31)
Requirement already satisfied: httpcore==1.* in /home/pi/miniforge3/envs/rsudp/lib/python3.12/site-packages (from httpx~=0.27->python-telegram-bot->rsudp==2.1.0) (1.0.8)
Requirement already satisfied: idna in /home/pi/miniforge3/envs/rsudp/lib/python3.12/site-packages (from httpx~=0.27->python-telegram-bot->rsudp==2.1.0) (3.10)
Requirement already satisfied: h11<0.15,>=0.13 in /home/pi/miniforge3/envs/rsudp/lib/python3.12/site-packages (from httpcore==1.*->httpx~=0.27->python-telegram-bot->rsudp==2.1.0) (0.14.0)
Requirement already satisfied: six>=1.5 in /home/pi/miniforge3/envs/rsudp/lib/python3.12/site-packages (from python-dateutil>=2.7->matplotlib<4,>3.2->rsudp==2.1.0) (1.17.0)
Requirement already satisfied: charset-normalizer<4,>=2 in /home/pi/miniforge3/envs/rsudp/lib/python3.12/site-packages (from requests->obspy->rsudp==2.1.0) (3.4.1)
Requirement already satisfied: urllib3<3,>=1.21.1 in /home/pi/miniforge3/envs/rsudp/lib/python3.12/site-packages (from requests->obspy->rsudp==2.1.0) (2.4.0)
Requirement already satisfied: oauthlib>=3.0.0 in /home/pi/miniforge3/envs/rsudp/lib/python3.12/site-packages (from requests-oauthlib>=0.4.0->twython->rsudp==2.1.0) (3.2.2)
Requirement already satisfied: greenlet!=0.4.17 in /home/pi/miniforge3/envs/rsudp/lib/python3.12/site-packages (from sqlalchemy<2->obspy->rsudp==2.1.0) (3.1.1)
Requirement already satisfied: sniffio>=1.1 in /home/pi/miniforge3/envs/rsudp/lib/python3.12/site-packages (from anyio->httpx~=0.27->python-telegram-bot->rsudp==2.1.0) (1.3.1)
Requirement already satisfied: typing_extensions>=4.5 in /home/pi/miniforge3/envs/rsudp/lib/python3.12/site-packages (from anyio->httpx~=0.27->python-telegram-bot->rsudp==2.1.0) (4.12.2)
Building wheels for collected packages: rsudp
Building wheel for rsudp (setup.py): started
Building wheel for rsudp (setup.py): finished with status 'done'
Created wheel for rsudp: filename=rsudp-2.1.0-py3-none-any.whl size=502025 sha256=91917053488a06619c7dd1204d9bd6b5ac79b9fa9b9b2181dac082be5fe25f81
Stored in directory: /tmp/pip-ephem-wheel-cache-6fqscems/wheels/e5/39/d9/1dab84c371793aa92f519063a54e56844a6bdad5cc0dd1de45
Successfully built rsudp
Installing collected packages: rsudp
Attempting uninstall: rsudp
Found existing installation: rsudp 2.1.0
Uninstalling rsudp-2.1.0:
Successfully uninstalled rsudp-2.1.0
Successfully installed rsudp-2.1.0
Qt import failed. Trying Tk...
detail: Failed to import any of the following Qt binding modules: PyQt5, PySide2
2025-04-20 06:24:40 [Init] Logging initialized successfully.
2025-04-20 06:24:40 Using settings file: /home/pi/.config/rsudp/rsudp_settings.json
2025-04-20 06:24:40 Output directory is: /home/pi/rsudp_data
2025-04-20 06:24:40 [RS lib] Initializing rsudp v 2.1.0.
2025-04-20 06:24:40 [openSOCK] Opening socket on localhost:8888 (HOST:PORT)
2025-04-20 06:24:40 [RS lib] Waiting for UDP data on port 8888...
2025-04-20 06:24:42 [Init] Available channels: ['EHZ']
2025-04-20 06:24:42 [get_inventory] Fetching inventory for station AM.S8B94 from Raspberry Shake FDSN.
2025-04-20 06:24:44 [get_inventory] Inventory fetch successful. Station region is WASHINGTON-OREGON BORDER REGION
2025-04-20 06:24:44 [conn_stats] Initialization stats:
2025-04-20 06:24:44 [conn_stats] Port: 8888
2025-04-20 06:24:44 [conn_stats] Sending IP address: 10.10.0.42
2025-04-20 06:24:44 [conn_stats] Set station name: S8B94
2025-04-20 06:24:44 [conn_stats] Number of channels: 1
2025-04-20 06:24:44 [conn_stats] Transmission freq.: 250 ms/packet
2025-04-20 06:24:44 [conn_stats] Transmission rate: 4 packets/sec
2025-04-20 06:24:44 [conn_stats] Samples per second: 100 sps
2025-04-20 06:24:44 [conn_stats] Inventory: AM.S8B94 (Raspberry Shake Citizen Science Station)
2025-04-20 06:24:44 [PlotAbc] WARNING: Running on aarch64 machine, using Tk instead of Qt
2025-04-20 06:24:44 [PlotAbc] Signal deconvolution set to CHAN
2025-04-20 06:24:44 [PlotAbc] Seismogram units are channel-specific
2025-04-20 06:24:44 [Plot] Plotting 1 channels: ['EHZ']
2025-04-20 06:24:44 [Plot] Starting.
2025-04-20 06:24:44 [Alert] Alert stream units are counts
2025-04-20 06:24:44 [Alert] Alert stream will be bandpass filtered from 0.8 to 9 Hz
2025-04-20 06:24:45 [AlertSound] Loaded 4.07 sec alert sound from /home/pi/miniforge3/envs/rsudp/lib/python3.12/site-packages/rsudp/rs_sounds/doorbell.mp3
2025-04-20 06:24:45 [AlertSound] Starting.
2025-04-20 06:24:45 [PlotsController] Starting.
2025-04-20 06:24:45 [Consumer] Starting.
2025-04-20 06:24:45 [Producer] Starting.
2025-04-20 06:24:45 [Producer] Receiving UDP data from 10.10.0.42
2025-04-20 06:24:45 [Alert] Starting Alert trigger with sta=6s, lta=30s, duration=0.0s and threshold=1 on channel=EHZ
2025-04-20 06:24:45 [Alert] Earthquake trigger warmup time of 30 seconds...
2025-04-20 06:24:45 [Plot] WARNING: Failed to set PNG icon image, trying .ico instead
2025-04-20 06:25:15 [Alert] Earthquake trigger up and running normally.
The only two things of note that I can see are:
[PlotAbc] WARNING: Running on aarch64 machine, using Tk instead of Qt
and
WARNING: Failed to set PNG icon image, trying .ico instead
But as far as I can tell those are benign. I don’t think it’s a permissions issue, since data is written to the output dir when write is enabled. And I don’t see any errors in the log after an alert is triggered. In fact it logs that it wrote the png file.
The only other thing, I ran conda activate rsudp and then rs-test (which seems to default to saving data in /home/pi/rsudp/output_dir/screenshots) and the same behavior, it saved miniSEED data but no screenshots. The results are:
2025-04-20 06:34:05 TESTING Test results:
2025-04-20 06:34:05 TESTING log directory : PASS
2025-04-20 06:34:05 TESTING stdout logging : PASS
2025-04-20 06:34:05 TESTING logging to file : PASS
2025-04-20 06:34:05 TESTING output directory structure : PASS
2025-04-20 06:34:05 TESTING screenshot directory : PASS
2025-04-20 06:34:05 TESTING data directory : PASS
2025-04-20 06:34:05 TESTING port : PASS
2025-04-20 06:34:05 TESTING internet : PASS
2025-04-20 06:34:05 TESTING inventory (RS FDSN server) : PASS
2025-04-20 06:34:05 TESTING packetizing data : PASS
2025-04-20 06:34:05 TESTING sending data : PASS
2025-04-20 06:34:05 TESTING receiving data : PASS
2025-04-20 06:34:05 TESTING master queue : PASS
2025-04-20 06:34:05 TESTING processing data : PASS
2025-04-20 06:34:05 TESTING ALARM message : PASS
2025-04-20 06:34:05 TESTING RESET message : PASS
2025-04-20 06:34:05 TESTING IMGPATH message : FAIL
2025-04-20 06:34:05 TESTING TERM message : PASS
2025-04-20 06:34:05 TESTING pydub dependencies : PASS
2025-04-20 06:34:05 TESTING matplotlib backend : PASS
2025-04-20 06:34:05 TESTING plot : FAIL
2025-04-20 06:34:05 TESTING miniSEED write : PASS
2025-04-20 06:34:05 TESTING miniSEED data : PASS
2025-04-20 06:34:05 TESTING print data : PASS
2025-04-20 06:34:05 TESTING alert trigger on : PASS
2025-04-20 06:34:05 TESTING alert trigger off : PASS
2025-04-20 06:34:05 TESTING play sound : PASS
2025-04-20 06:34:05 TESTING screenshot exists : FAIL
2025-04-20 06:34:05 TESTING Twitter text message : PASS
2025-04-20 06:34:05 TESTING Twitter image message : FAIL
2025-04-20 06:34:05 TESTING Telegram text message : PASS
2025-04-20 06:34:05 TESTING Telegram image : FAIL
2025-04-20 06:34:05 TESTING forwarding : PASS
2025-04-20 06:34:05 TESTING RSAM transmission : PASS
2025-04-20 06:34:05 TESTING [Main] Shutdown successful.
Not sure why plot failed, as it displayed ok, IMGPATH message fail might indicate something but I’m not sure what.
Any help is appreciated.
Adam