Setting up the full DeskRadar system from scratch.
This step is done from your Mac or Linux machine, not the Pi.
.uf2 file from circuitpython.org and drag it onto the device's boot drive.git clone https://github.com/deskradario/deskradar-matrixportals3.git cd deskradar-matrixportals3
CIRCUITPY at /Volumes/CIRCUITPY/.src/wifi.txt — set line 1 to your WiFi SSID and line 2 to your password. For initial setup on the Pi's AP, use:
deskradar deskradaradsb
./install.sh
screen /dev/tty.usbmodem* 115200) to confirm it connects to WiFi and prints its IP address.sudo apt update sudo apt install -y python3.13 python3.13-venv python3.13-dev sudo apt install -y i2c-tools git nmcli
raspi-config:
sudo raspi-config
Navigate to Interface Options → I2C → Enable.
sudo apt install -y dump1090-fa sudo systemctl enable dump1090-fa sudo systemctl start dump1090-fa
Verify it's serving data: curl http://127.0.0.1:8080/data/aircraft.json
sudo i2cdetect -y 1
You should see address 7c in the output.
sudo git clone https://github.com/deskradario/deskradar-pi-services.git /opt/deskradar-pi-services cd /opt/deskradar-pi-services
python3.13 -m venv .venv .venv/bin/pip install -r requirements.txt
bash configurator/setup_mdns.sh
The Pi is now reachable as deskradar.local.
bash scripts/setup_ap.sh
sudo mkdir -p /etc/deskradar sudo cp configurator/config.json /etc/deskradar/config.json
sudo nano /etc/deskradar/config.json
Set LAT and LON to your coordinates.
bash install_services.sh
sudo git clone https://github.com/deskradario/deskradar.git /opt/deskradar cd /opt/deskradar
python3.13 -m venv .venv .venv/bin/pip install -r requirements.txt
cat /etc/deskradar/config.json
deskradar SSID) — its wifi.txt should already have these credentials from Step 1.sudo reboot
deskradar-portal.local and shows the MatrixPortal's IPsudo systemctl status deskradar deskradar-lcd deskradar-configurator deskradar-bootstrap
sudo journalctl -u deskradar -f
For production use, you'll want both the Pi and the MatrixPortal on your home network instead of the Pi's AP.
deskradar / deskradaradsb).http://10.42.0.50:5000 in a browser.wifi.txt via the CIRCUITPY mount, and triggers a reboot.deskradar.local.deskradarAP access point and reboots. You can reconnect to the AP and try again.Once on your home network, access the web configurator at:
http://deskradar.local:5000/config
From here you can adjust display radius, altitude threshold, fade factor, location, and other settings. Saving restarts the main app automatically.
The boot check cannot find deskradar-portal.local. Check that the MatrixPortal S3 is powered on and connected to the same network as the Pi. Verify with:
ping deskradar-portal.local
If it's unreachable, check the MatrixPortal's serial console for WiFi connection errors.
Check that MATRIX_HTTP_URL in /etc/deskradar/config.json contains the correct IP. Verify the MatrixPortal is reachable:
curl http://<matrix-ip>/ping
Check the main app logs: sudo journalctl -u deskradar -n 50
Confirm dump1090 is receiving data:
curl http://127.0.0.1:8080/data/aircraft.json | python3 -m json.tool | head -30
Check that LAT, LON, and DISPLAY_RADIUS_NM are set correctly for your location. Aircraft must be within the configured radius and above MIN_ALT.
sudo systemctl status deskradar-configurator sudo journalctl -u deskradar-configurator -n 30
sudo i2cdetect -y 1
Address 7c should appear. If not, check wiring (SDA=pin 3, SCL=pin 5, 3.3V power). Some LCD backpacks use address 27 or 3f — if yours differs, update the address in lcd/lib/LCD1602.py.
The 60-second watchdog reboots the device if no request arrives. If the main deskradar app is not running or cannot reach the MatrixPortal, the device will repeatedly reboot. Ensure deskradar.service is running and MATRIX_HTTP_URL is correct.
The switch failed and the Pi restored the AP. Connect to deskradar SSID and try again via http://10.42.0.50:5000. Check sudo journalctl -u deskradar-configurator -n 50 for the failure reason.