Easy-to-manage touch screens
Free, open-source touch screens. Guided USB setup, a drag-and-drop editor and local control. Made for Home Assistant.
Dashcam, satellite moving map and a Pip-Boy-style HUD on a 5-inch black-and-white tube, fed by a single wire soldered to pin 111 of a Raspberry Pi CM4.
Translation pending
LifestylePython · JavaScriptGitHub @ceoptrsltdOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
A Raspberry Pi CM4 dashcam + wasteland-style satellite navigator on a 2001 black-and-white CRT (composite straight from the SoC)
Taken from the repository README
Loading the full README.
Read the full README ↗A 2001 black‑and‑white reversing monitor, a Raspberry Pi Compute Module 4 and a wasteland navigator.
fallout.nav turns a Raspberry Pi CM4 into an in‑car computer for an old van:
fsync every second: a power cut loses ≤ 2 s of video.VDAC_COMP), NTSC 480i/60 Hz with output
margins and mirroring tuned for the RV‑50. The button on the GPS module switches the video output off so it
does not bleed into the monitor's other camera input.https://<server>/fnadmin/; live video there is a low‑bitrate
H.264 stream that is only encoded while someone watches.Project page with a live demo: https://ptrs.ltd/apps/fallout.nav/
| Part | Notes |
|---|---|
| Raspberry Pi CM4 (eMMC, Wi‑Fi, 4 GB) on Waveshare CM4‑NANO‑B | Raspberry Pi OS (Debian 13 trixie) |
| OV5647 camera | CSI0, dtoverlay=ov5647,cam0 |
| Holybro M8N GPS + IST8310 compass (10‑pin JST‑GH) | UART5 /dev/gps0 + I2C‑1 |
| WAECO Mobitronic RV‑50 monitor | composite input, B/W CRT |
| GH pin | Signal | → | 40‑pin | Pi signal |
|---|---|---|---|---|
| 1 | VCC 5V | → | 2 | 5V |
| 2 | RX (GPS input) | → | 32 | GPIO12 TXD5 |
| 3 | TX (GPS output) | → | 33 | GPIO13 RXD5 |
| 4 | SCL | → | 5 | GPIO3 SCL |
| 5 | SDA | → | 3 | GPIO2 SDA |
| 6 | SAFETY_SWITCH | → | 16 | GPIO23 — short press: video output on/off, long press: protect recording |
| 7 | SAFETY_SWITCH_LED | → | 18 | GPIO24 — blinks while recording |
| 8 | VDD_3V3 | → | 1 | 3.3V |
| 10 | GND | → | 6 | GND |
The GPS uses the PL011 UART5 (dtoverlay=uart5) so that the primary UART0 stays with the on‑board Bluetooth,
which plays the internet radio on a Bluetooth speaker.
CM4 connector J2, pin 111 VDAC_COMP (inner/odd row, 6th from the pin‑101 end; its neighbours are
109 PCIe_nRST and 113 GND — "ground immediately on the far side" is the reliable check) → video pin of the
monitor input, GND → its ground. See docs/device-report.md.
fnav/core FastAPI backend: auth, settings, 10 Hz WebSocket telemetry, nav logic, Esri tile cache, recordings, system
fnav/camera Picamera2 pipeline, crash-safe MPEG-TS recorder, RTSP to MediaMTX (WebRTC), MJPEG for the screen
fnav/sensors gpsd client, UBX configuration, IST8310 driver, calibration + GPS auto-calibration, heading fusion, GPIO
web/display the car screen (Canvas renderer for Esri tiles + Pip-Boy HUD), also runs as an in-browser demo (?demo=1)
web/admin the web UI
pi/ install.sh, deploy.sh, systemd units, boot config, MediaMTX, sudoers/polkit
server/ fnav-relay (position log, login while the device is offline; stdlib Python) and the nginx snippet
tools/ remote.sh (server + tunnel setup), publish_site.sh, UBX/I2C helpers
site/ the project page
Services on the device: fnav-core (port 80; 127.0.0.1:8090 for the tunnel), fnav-camera, mediamtx,
fnav-display (cage + Chromium kiosk), fnav-radio (mpv), bluetooth + bluealsa, fnav-tunnel, gpsd, chrony.
Weather on the car screen (now + the next two days while the radio is off, wind streaks around the vehicle):
Open-Meteo for the GPS position, every 30 min or after 25 km, cached for offline use
(fnav/core/weather.py). Weather data by Open-Meteo.com, CC BY 4.0.
Speed limit sign next to the speedometer: offline OpenStreetMap roads. tools/speedlimits.sh builds the database on
the server from the Geofabrik extract (Poland by default; implicit limits such as PL:urban and defaults by road
class) and copies it to /var/lib/fnav/speedlimits.sqlite; fnav/core/speedlimit.py matches the GPS position and
course to the road once a second. Rerun the script now and then for fresh data. Data © OpenStreetMap contributors, ODbL.
pi/deploy.sh --stage # from a PC (Git Bash / Linux): upload the repo to the device
ssh <device> 'cd ~/fallout.nav && sudo ./pi/install.sh && sudo reboot'
pi/deploy.sh # later updates
browser ─ https://<server>/fnadmin/ ─ nginx ─┬─ static copy of web/ (opens even when the device is off)
├─ /api/tracking/ → fnav-relay (the log lives on the server)
└─ /api, /ws → 127.0.0.1:18080 ─ ssh -R ─ device fnav-core :8090
device: fnav-core ─ a point a minute → SQLite outbox ─ ssh -L 127.0.0.1:18095 → fnav-relay
Requests through the tunnel arrive at a separate listener with no localhost trust; the password is the same as on
the device (the server checks the same session cookie). One-time setup from a PC, after pi/deploy.sh:
cp tools/remote.env.example tools/.remote.env # server login, site name, nginx site file
tools/remote.sh setup # relay, nginx, tunnel user/key, device config, web copy
tools/remote.sh web # after UI changes
Details: docs/contracts/remote.md.
pip install -e .[dev]
python -m fnav.core --mock --port 8000 # http://127.0.0.1:8000/admin/ (password: fnav-dev)
python -m fnav.camera --fake # synthetic camera + recorder
python -m pytest # Python tests (core, camera, sensors, server)
node --test tests/display/*.test.mjs # display tests
The project was designed and written in about a day by Claude acting as lead/integrator with seven parallel
sub‑agents (backend, map renderer, HUD design, web UI, camera/recorder, sensors, system), coordinated through
written contracts in docs/contracts/. Plan and decisions: PLAN.md; hardware bring‑up notes:
docs/device-report.md.
Map imagery © Esri and its data providers (Esri, Maxar, Earthstar Geographics and the GIS user community).
MIT — see LICENSE. Third‑party parts keep their own licenses: fonts in web/display/ui/fonts/
(SIL OFL 1.1, see LICENSES.md there) and web/admin/vendor/mpegts.js (Apache‑2.0).