Notice: you're looking at a read-only mirror of our Dokuwiki.

A DIY customizable public transit arrivals board displaying real-time transit information. Built using the open-source Transit Tracker project by Eastside Urbanism, deployed on dma.computer infrastructure.
How to interact with it at dma.computer:
transittracker-display.user.dma.computer (10.20.110.197)http://transittracker-pi.int.dma.computer:3000/feedstransittracker-pi.int.dma.computer (10.20.100.80)st_gtfs) for more accurate end-of-day train counts.Current feed config:
kcm — King County Metro (GTFS-static)st — Sound Transit via OneBusAway (legacy)st_gtfs — Sound Transit via GTFS-static + GTFS-RT (used by the display; gives true "trains remaining today")The board shows arrival times for local transit agencies and updates automatically. Perfect for checking your commute before heading out!
Route presets:
| Preset | Routes | Stops |
|---|---|---|
| Link | 1 Line + 2 Line | Capitol Hill, both directions |
| Bus 8 | KCM 8 | E John St & Broadway, both bays |
| Bus 10 | KCM 10 | E Pine St & 12th Ave, both directions |
| Bus 12 | KCM 12 | E Pine St & 12th Ave, both directions |
| Streetcar | First Hill Streetcar | Broadway & Pike-Pine, both directions |
Home Assistant control:
You can do everything the Stream Deck does from Home Assistant, which is handy if you are not standing next to the sign.
select.transit_tracker_cycling_transit_preset — switches the route presetswitch.hangout_transit_tracker_cycling_display_power — blanks the display without cutting powernumber.hangout_transit_tracker_cycling_display_brightness — brightness, 0-255The Stream Deck talks to these entities over the Home Assistant REST API. It runs as a container on the same Pi as the API, and it mirrors Home Assistant, so switching a preset from either place updates both.
Troubleshooting:
If the sign shows "no upcoming arrivals" for some routes but not others, the routes that break usually share a feed. Work through these in order:
SELECT feed_code, locked_at, now() - locked_at FROM sync_lock; A row older than a few hours is stale, and it blocks that feed from syncing again until you clear it.SELECT feed_code, min(start_date), max(end_date) FROM calendar GROUP BY feed_code; and compare to today. GTFS feeds expire, and an agency service change replaces them.docker exec transit-tracker-api-api-1 node dist/cli sync --force --feed <code>docker restart transit-tracker-api-api-1Repos:

A real-time transit tracker that displays Sound Transit Link Light Rail train positions on a physical LED map. The system uses an ESP32-S3 microcontroller to poll live transit data and render animated train movements across an addressable LED strip. Originally designed for /dev/hack Seattle.
Hardware:
How it works:
oba_api_key@soundtransit.orgDevelopment:
cd wheretrain && nix develop && idf.py build flash monitornetwork.c, API key in main.cidf.py flashStatus: Active development. Contributions and feedback welcome — reach out to Sparky on Zulip or check the repo.

A 7.5" e-ink display dashboard that serves as a distraction-free information display. TRMNL uses a privacy-focused design where the device polls for updates rather than allowing external access to the local network.
How to interact with it at dma.computer:
Learn more at usetrmnl.com
Coming soon