A lightweight web-based APRS monitoring dashboard for Direwolf and DigiPi, designed to run on a Raspberry Pi with no internet connection required.
Repo: https://github.com/hemna/direwolf-dashboard
Release: v1.1.0
| #!/usr/bin/python3 -W ignore::SyntaxWarning | |
| # direwatch | |
| """ | |
| Craig Lamparter KM6LYW, 2026, MIT Licnese | |
| Code derived from Adafruit PIL python example | |
| Usage: |
| #!/bin/sh | |
| # Clean direwatch Pi 5 diagnostic run. | |
| set -u | |
| echo '=== stop existing direwatch processes ===' | |
| pids=$(pgrep -f '[d]irewatch-pi5.py' || true) | |
| if [ -n "$pids" ]; then | |
| echo "$pids" | |
| kill $pids || true |
| #!/usr/bin/python3 -W ignore::SyntaxWarning | |
| # direwatch | |
| """ | |
| Craig Lamparter KM6LYW, 2026, MIT Licnese | |
| Code derived from Adafruit PIL python example | |
| Usage: |
| #!/usr/bin/python3 -W ignore::SyntaxWarning | |
| # direwatch | |
| """ | |
| Craig Lamparter KM6LYW, 2026, MIT Licnese | |
| Code derived from Adafruit PIL python example | |
| Usage: |
| direwatch.py Pi 5 pykms segfault fix | |
| The crash is reported at: | |
| req.add_plane(plane, fb, crtc, None, (0, 0, mode.hdisplay, mode.vdisplay)) | |
| The framebuffer is created as XR24, but the plane is reserved for NV12: | |
| fb = pykms.DumbFramebuffer(card, width, height, "XR24") | |
| plane = res.reserve_generic_plane(crtc, pykms.PixelFormat.NV12) |
A lightweight web-based APRS monitoring dashboard for Direwolf and DigiPi, designed to run on a Raspberry Pi with no internet connection required.
Repo: https://github.com/hemna/direwolf-dashboard
Release: v1.1.0
APRS Chat Debug is a small, temporary tool for diagnosing Bluetooth (BLE) connection problems with Benlink / Benshi radios (VGC VR-N7500, VR-N7600, UV-Pro, GA-5WB, etc.).
Its only job is to reproduce the radio connection, capture a detailed debug log of every step, and let you email that log to the developer. It uses the exact same Bluetooth code as the full APRS Chat app, so whatever fails here fails there too.
It installs alongside the normal APRS Chat app — they don't conflict.
| #!/usr/bin/env python3 | |
| """Quick diagnostic: show station and packet age from packets.db.""" | |
| import sqlite3 | |
| import time | |
| import sys | |
| from datetime import datetime, timezone | |
| DB_PATH = "/tmp/direwolf-dashboard/packets.db" | |
| if len(sys.argv) > 1: | |
| DB_PATH = sys.argv[1] |