ChroGPS Dash Troubleshooting
Installation & Service Issues
Dashboard not loading (Nginx “Welcome” Page)
If you see the default “Welcome to nginx!” page after installation, it means the default Nginx configuration is still active and taking priority over ChroGPS Dash.
To resolve this, run the following commands to disable the default site and restart the web server:
sudo rm /etc/nginx/sites-enabled/default && sudo systemctl restart nginx
/etc/nginx/sites-enabled/ before running this.
Chrony failed after hardware provisioning (/dev/pps0 not found)
If you ran the hardware provisioning script in GPIO mode and Chrony is failing to start with an error like:
Fatal error: Could not open /dev/pps0: No such file or directory
or systemctl status chrony shows the service in a failed state immediately after running the provisioning script – this is expected behavior and not a bug. In GPIO mode, the pps-gpio Device Tree overlay (added to config.txt) must activate before /dev/pps0 is created, and that only happens after a reboot. Reboot and the error will not recur:
sudo reboot
USB mode does not have this issue – GPSd and Chrony are restarted by the provisioning script immediately and no reboot is required.
GPSd not seeing the GNSS receiver after GPIO provisioning
After rebooting following GPIO mode setup, if GPSd reports no device or no data from the GNSS receiver:
- Confirm the serial device exists:
ls -la /dev/serial0 /dev/ttyAMA0 - Confirm the
disable-btandpps-gpiooverlays are active:Both should appear in the output. If they don’t, verify yourdtoverlay -lconfig.txtcontains the entries added by the provisioning script and that you have fully rebooted (not just restarted services). - Verify GPSd is pointed at the correct device:
cat /etc/default/gpsd - Check GPSd logs for errors:
journalctl -u gpsd -n 50
dtoverlay=disable-bt entry in config.txt is essential. Without it, Bluetooth occupies the reliable PL011 UART (ttyAMA0), leaving the GPS receiver on the unreliable mini-UART (ttyS0), which often results in garbage or missing data. The provisioning script adds this automatically, but it only takes effect after a reboot.Empty Graphs?
If graphs appear but have no data:
- Verify Chrony is logging:
sudo ls -l /var/log/chrony/ - Wait a few minutes for logs to populate.
- Run the installer again to re-apply permission fixes.
chrogps-poller systemd timer, which polls the dashboard endpoint every 30 seconds in the background – no browser tab needs to be open. Verify it is running: systemctl status chrogps-poller.timer. If it is inactive, re-running the installer will re-enable it.Upgraded your OS and now the Dashboard won’t load or throws an error?
Re-Run the Installer
<a href="../#installer" class="advisory-cta">
<i data-feather="arrow-right"></i>
Quick Installer
</a>
</div>
“Cannot create/open log file: …” Message?
GPS & Satellite Data Issues
Wrong constellation colors?
Your GPS receiver may be using u-blox-style gnssid values instead of the NMEA standard. ChroGPS Dash handles both automatically by validating gnssid against PRN ranges.
To verify which scheme your receiver is using:
gpspipe -w | grep '"class":"SKY"' | head -3 | jq '.satellites[]? | {PRN, gnssid}'
Requires gpspipe and jq. If either is missing, run:
sudo apt-get install -y gpsd-clients jq
Then re-run the test command.
If you see GLONASS satellites (PRN 65-96) with gnssid=6, that’s u-blox numbering. If you see gnssid=2, that’s NMEA numbering. ChroGPS Dash handles both correctly.
Missing satellites?
Some receivers report satellites across multiple gpsd messages. ChroGPS Dash caches satellites for 30 seconds to accumulate all of them - the satellite count should grow from ~15 to ~25 over a few refreshes.
To inspect the cache directly:
cat /var/tmp/cgpsd-sat-cache.json | jq '.satellites | length'
Duplicate satellites on a multi-band receiver?
Satellites showing but no position fix?
Check that you have:
- A clear view of the sky.
- At least 4 satellites with good signal (> 25 dBHz).
- HDOP < 5.0.
- Waited 30–60 seconds for the initial fix after startup.
Access & Security
Locked out of the dashboard? (Dashboard Gate)
If DASHBOARD_REQUIRE_AUTH is enabled and you have lost or forgotten the admin token, you cannot authenticate through the browser - the gate lock screen will reject all attempts. To regain access:
Option 1 - Display the current token (no change):
curl -fsSL https://chro.gpsda.sh/install | sudo bash -s -- -dt
This prints the token currently stored in cgpsd-settings.php without modifying anything.
Option 2 - Read it directly from the settings file:
sudo grep ADMIN_TOKEN /var/www/chrogps-dash/cgpsd-settings.php
Option 3 - Temporarily disable the gate via SSH:
sudo sed -i 's/\$DASHBOARD_REQUIRE_AUTH = true/\$DASHBOARD_REQUIRE_AUTH = false/' \
/var/www/chrogps-dash/cgpsd-settings.php
This disables the gate immediately (no restart needed). Re-enable it from the Admin Panel once you have your token.
If you need to reset the admin token entirely, run the installer with the -rt flag:
curl -fsSL https://chro.gpsda.sh/install | sudo bash -s -- -rt
This generates a new random token and prints it to the terminal. Any existing dashboard gate sessions will be invalidated automatically since the HMAC cookie is derived from the token.
General Support (Note: lack thereof)
- Q: “It’s not working, can you help me?”
- A: No.
- Q: “But I used the installer!”
A: It works on my machines.
¯\_(ツ)_/¯This project is a labor of love, not a job. Please consult the Googles, the Linux man pages, or your local wizard for assistance.
In all (kind-of-)seriousness…
This dashboard is provided with a strict “You Break It, You Fix It” warranty.
I have provided crystal-clear instructions and a magical installer script that does 99% of the work for you. If you still manage to break it, congratulations! You have just discovered a learning opportunity.
- Documentation & Code: Read it again. Slower this time.
- Bugs: If you find a bug, patches are welcome.
- Tech Support: I do not offer tech support. If I did, I would charge a lot more than “Free.”
- Q: “Does ChroGPS Dash support the ntpd daemon from Network Time Foundation/ISC (or ntpsec or ntpd-rs or timesyncd or openntpd etc.)?”
- A: God no. And it never will. Chrony is superior in every way. Just…use…Chrony.
- Q: “Can I install ChroGPS Dash on WPSD??”
- A: No!!! 🛑 🚫
Look, I know I wrote both of these apps, but they were (deliberately) designed to not play nice together. WPSD is a managed ‘appliance’ - it likes its designs/setups exactly how they are.
Install ChroGPS Dash on a fresh or other existing, non-WPSD Linux instance so that WPSD remains happy and functional.
For the love of God…Just leave your WPSD installation alone and let it be. 🤦
If you haven't gotten the hint yet, I do not offer support nor do I respond to support inquiries. That means do not ask for support.
This project was created by me as a pet project in order to scratch an itch: I could not find anything like it (otherwise, I'd be using it). I am sharing it with you and giving it away for free; but that does not automatically obligate me to support you.
Asking for support is a guarantee you will be ignored. No fun!