Workstation: simulator, tiles, bench radio

Three things your Mac (or Linux box) can do for Waycast — including everything short of driving.

1. Run the device UI with zero hardware

The full car-device interface runs as a desktop app on a scripted demo scenario — hazards appear from a simulated mesh, age, and fade:

git clone https://github.com/alviso/waycast.git
cd waycast
brew install sdl2          # macOS   (Linux: sudo apt install libsdl2-dev)
make deps                  # fetches LVGL
make -j8
make run

This is also where UI development happens — the simulator and the device share every line of UI code.

2. Pre-fetch map tiles

If you'd rather fill a card from your computer than wait on the device's Wi-Fi:

python3 scripts/fetch_area_tiles.py --center <lat>,<lon> --preset region

Presets: near (15 km, ~140 MB) / region (60 km, ~330 MB) / wide (120 km, ~1 GB). Copy the resulting assets/tiles/ folder to the card as /tiles/. The script is throttled and resume-safe — please keep it that way, and put your own contact e-mail in the UA string if you fork it (OSM tile policy).

3. Bench radio: test a town node from your desk

A second USB-TO-LoRa dongle (configured like the car device's) turns your computer into a transmitter:

cd tools/txtool
cc -o txtool -I ../../msg -I ../../net txtool.c \
   ../../msg/vmesh_wire.c ../../net/lora_dtu.c
./txtool /dev/cu.usbmodemXXXX 1 "hello from the bench"

Then watch your town node's journal:

journalctl -u waycast-peer -f
# → [rx OK ] Debris 02BEEF01/1 … "hello from the bench"

Edit the coordinates in txtool.c to your area first — the mesh drops reports outside their relevance radius, by design.

Reading from a dongle on macOS: plain cat /dev/cu.usbmodem… shows nothing — the dongle only streams once DTR is asserted. Use a real serial terminal (screen, minicom) or see troubleshooting.