This guide covers the most common issues encountered when running Node v1, with diagnostic steps and solutions for each. Most problems fall into one of four categories: network connectivity to the Seestar (ALPACA), astrometry (plate solve), photometry quality, or safety and scheduling state. Start by checking the live log stream in the dashboard — almost every failure produces a descriptive log line at WARNING or ERROR level that points directly to the cause.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/skyrobot804/node_v1/llms.txt
Use this file to discover all available pages before exploring further.
"No ALPACA servers found"
"No ALPACA servers found"
Symptom: Clicking Discover in the dashboard times out with no servers found. The log shows no UDP responses on port 32227.Causes and fixes:
- Seestar not on the same subnet. ALPACA discovery uses UDP broadcast, which does not cross router boundaries. Confirm that the host computer and the Seestar are on the same LAN segment. Check that both are connected to the same access point (not one on 2.4 GHz and one on 5 GHz if the router isolates bands).
-
UDP broadcast blocked by a firewall or router. Some mesh Wi-Fi systems and corporate routers disable broadcast traffic. Test directly with:
If no packets appear while the Seestar is powered on, the broadcast is being filtered. Try temporarily disabling the host firewall to confirm.
- macOS Privacy & Security. macOS may block Python from receiving network data. Go to System Preferences → Privacy & Security → Local Network and ensure your Python runtime or terminal is listed and enabled.
-
Bypass discovery with a manual address. If broadcast is not fixable, set the Seestar’s IP and port directly in
config.yamlto skip UDP discovery entirely:config.yaml
"ErrorNumber 1: Device not connected"
"ErrorNumber 1: Device not connected"
Symptom: The dashboard connects to the ALPACA server successfully but commands return
ErrorNumber 1: Device not connected.Cause: The ALPACA HTTP server on the Seestar is running and reachable, but the telescope has not been fully initialised inside the Seestar app. The ALPACA layer wraps the firmware; if the firmware is still booting or the app has not completed its startup sequence, all device calls are rejected.Fix:- Open the Seestar iOS or Android app.
- Wait for the app to show the telescope as fully connected and operational (the main control screen is visible, not a loading or pairing screen).
- Click Connect in the Node v1 dashboard again.
Plate solve fails
Plate solve fails
Symptom: The photometry pipeline logs
plate solve failed or WCS not found. Photometry does not run.Causes and fixes:-
ASTAP not found in PATH. The pipeline calls
astapas a subprocess. If it is not in your systemPATH, set the full path explicitly:config.yaml - ASTAP star catalog not installed. ASTAP requires a star catalog (D50 or H18) to be downloaded separately from the ASTAP solver itself. Download the catalog from hnsky.org and install it to ASTAP’s default catalog directory. ASTAP will fail silently with an empty result if the catalog is missing.
-
Search radius too small. If the FITS header contains approximate coordinates but they are off by more than the search radius, ASTAP will not find a solution. Increase the radius:
config.yaml
CTYPE1/CTYPE2 WCS keywords are absent.AAVSO submission rejected
AAVSO submission rejected
Symptom: The dashboard shows Common causes:
aavso: rejected or aavso: error. No observation appears in AAVSO WebObs.Diagnosis: Check the raw WebObs response in the audit trail:-
Invalid or expired observer code. Your
aavso.observer_codemust match an active AAVSO OBSCODE exactly (case-sensitive). Verify yours at aavso.org. A mismatch produces an authentication error in the response file. -
Target name not in AAVSO VSX. The target name in the FITS header (or
photometry.target.name) must match a VSX variable star name. Check your target spelling against VSX directly. - Date out of range. WebObs rejects observations with BJD dates in the future or implausibly far in the past.
-
Validate with dry_run before going live. Set
aavso.dry_run: trueinconfig.yamlto format and write the submission file without POSTing it. Inspect the.txtfile inaavso_submissions/to confirm the format is correct, then setdry_run: falseto submit for real.
config.yaml
Photometry quality always "poor"
Photometry quality always "poor"
Symptom: Every photometry result has
quality_flag: "poor". Results may still be submitted if aavso.submit_poor_quality: true, but magnitudes are unreliable.Causes and fixes:-
Low SNR. The target is too faint for the current exposure. Increase
stacking.exposure_sor stack more frames before running photometry. Checksnrin the result dict — a value belowphotometry.snr_threshold(default 20) degrades the quality flag. -
Too few comparison stars. The pipeline requires at least
photometry.min_comparison_stars(default 3) comparison stars. If the target field has sparse AAVSO VSP coverage, try widening the search:The Gaia DR3 fallback activates automatically if AAVSO VSP returns fewer than the minimum required.config.yaml -
Poor seeing or cloud cover. Large ZP scatter (
zp_scatterin the result dict) directly inflates the reported uncertainty and can push quality below the threshold. Checkfwhm— values above ~6 pixels typically indicate poor seeing. Wait for better atmospheric conditions.
"Host is down" errors
"Host is down" errors
Symptom: Dashboard logs show repeated
[Errno 64] Host is down or ConnectTimeoutError on the Seestar’s IP and port, even though the Seestar app shows the telescope as fully connected and operational.What happened: The ALPACA HTTP server on the Seestar has locked up (hung, deadlocked, or crashed). The Seestar app communicates with the device firmware directly and can still control the telescope, but the ALPACA endpoint is a separate HTTP service that has failed independently.Recovery:- Open the Seestar app and perform a full device restart: Settings → Restart.
- A simple app quit and relaunch will not fix this — the HTTP daemon is part of the firmware and requires a full device reboot.
- Once the Seestar finishes restarting,
dashboard.pywill reconnect automatically via the SafetyManager’s reconnect-with-backoff logic.
SafetyManager stuck in unsafe state
SafetyManager stuck in unsafe state
Symptom: Logs show repeated heartbeat failures, an emergency park attempt, and then all slews are rejected with a message like
Slew rejected — system is in an unsafe state (telescope unreachable for Xs) — even after the Seestar comes back online.What happened: The SafetyManager lost contact for longer than safety.disconnect_timeout (default 600 s) and triggered an emergency park. The unsafe state does not self-clear — slews remain blocked until the session is restarted.Recovery:- Confirm the Seestar is back online by opening
http://<seestar-ip>:32323/api/v1/telescope/0/connectedin a browser and verifying a valid JSON response. - Restart
dashboard.py. The SafetyManager initialises in a safe state on every startup. - If the emergency park command also failed (logged as
park command failed), verify the mount’s physical position in the Seestar app before issuing any slew commands.
- Place the Seestar closer to the access point, or switch to the 2.4 GHz band for better range.
- Increase
safety.disconnect_timeoutif brief network glitches are common at your site (e.g.,900or1200seconds). - Disable Wi-Fi sleep and power-save on your router for the Seestar’s MAC address.
- Prevent the host machine from sleeping during a session:
sudo pmset -b sleep 0on macOS, or use a tool such as Caffeinate.
"ErrorNumber 1024: Method Unpark is not implemented in this driver"
"ErrorNumber 1024: Method Unpark is not implemented in this driver"
Symptom: Clicking Unpark in the dashboard logs
ErrorNumber 1024: Method Unpark is not implemented in this driver. The mount does not move.Cause: The Seestar S50 ALPACA driver does not implement the ASCOM Unpark command. This is a known firmware limitation.Fix: Unpark the telescope from within the official Seestar iOS or Android app. Once the app shows the mount as unparked, all dashboard slew, tracking, and nudge controls will function normally. The Unpark button in the Node v1 dashboard has no effect on this device and can be safely ignored."CoverCalibrator 400 Client Error"
"CoverCalibrator 400 Client Error"
Symptom: At startup, logs show a WARNING like Dashboard arm control will show as unavailable, but telescope, camera, focuser, and filter wheel functions are unaffected.
CoverCalibrator connect failed: 400 Client Error. The dashboard shows the cover calibrator as unavailable.Cause: A 400 response (rather than a connection timeout) means the ALPACA server is reachable but rejects the request — typically because no cover or calibrator device is registered at index 0 on this firmware version. This is non-fatal; all other device functions continue normally.Fix: If you do not have a cover calibrator attached to your setup, suppress these warnings by disabling the device in config.yaml:config.yaml
Dawn parking not triggering
Dawn parking not triggering
Symptom: The Seestar is not automatically parked at dawn. The SafetyManager log shows no dawn park attempt despite the sun having risen.Causes and fixes:
-
Observer coordinates are zero. Dawn detection requires your actual location. The default values are
0.0 / 0.0(null island in the Atlantic Ocean). Set your real coordinates:config.yaml -
Dawn type threshold not reached.
dawn_type: astronomicalrequires the sun to rise above −18° elevation, which at mid-latitudes in summer may never happen (astronomical twilight persists all night). Try a less strict threshold:config.yaml -
Verify in the dashboard. The dashboard header displays the current sun elevation. Compare the live reading against your configured
dawn_typethreshold to confirm when parking should trigger.
Reading the Log Stream
The fastest way to diagnose any issue is to watch the live log stream while reproducing the problem. Every WARNING and ERROR in Node v1 includes a descriptive message and (where applicable) the raw exception text. Dashboard log panel: Openhttp://localhost:5173 in a browser. The Logs panel in the lower section of the dashboard streams all log messages in real time via Server-Sent Events, colour-coded by level (DEBUG grey, INFO white, WARNING yellow, ERROR red).
SSE endpoint: You can also consume the log stream from the command line or another tool:
logging.level key in config.yaml:
config.yaml
Getting Help
If you have worked through the steps above and the issue persists, open an issue on the Boundless Skies Node v1 GitHub repository. Include:- The relevant section of the log stream (from the SSE endpoint or dashboard panel)
- Your
config.yamlwith sensitive credentials redacted - The Node v1 version (
git log -1 --oneline) - Your platform (macOS / Linux / Windows) and Python version
