← All guides

Secure V2 · SDK 0.3.0

Troubleshooting by symptom

Updated October 11, 2026 · verified against repository implementation

Start with observable evidence before rotating credentials or changing schemas.

Cannot build, upload or connect Wi-Fi

Build: open the whole extracted PlatformIO folder and run pio run. Read the first compiler/tool download error; confirm board selection and internet access. C3 needs its RISC-V compiler. Upload: use a data cable, pio device list, the correct USB driver/permissions and an unused serial port; some boards require BOOT.

Wi-Fi: check SSID/password in include/struct_config.h, supported board radio/network and signal. First bootstrap also needs HTTPS and NTP/time for certificates. Do not disable TLS validation. Initialization failure can be Wi-Fi, clock, provisioning token or counter storage; inspect serial output before changing anything.

No telemetry or authentication failure

Confirm ingest.usestruct.com UDP 8081 is reachable through the network/firewall. Do not use the website HTTP URL as the UDP endpoint. Select the same workspace and device in Overview and Diagnostics.

Verify the exported wire ID/root secret belong to this sender and the firmware uses a published slot for exactly the same schema and record length. Never paste secrets into shared commands or support logs. An authentication failure can indicate wrong credentials, a changed frame or a revoked/expired credential.

Replay/counter failures require preserving durable state. Lost or rolled-back counter state requires credential rotation, not resetting to zero. A one-time bootstrap token cannot safely initialize the same credential twice.

No receipt / delivery unknown

Unconfirmed mode does not send receipts. With confirmation enabled, allow the SDK bounded deadline/retry policy. If the status is unknown, inspect the latest stored event and diagnostics for this device: telemetry may have committed while the reply was lost.

A receipt can prove storage only if its authentication verifies. Do not count a UDP send, TCP acknowledgment or visible device activity as a database commit. Use the receipt result or a stored telemetry record.

Stored reading but no downstream result

Open Deliveries. Check destination enabled state, URL, routing match, HTTP response, signature validation and attempt history. A dead job exhausted attempts; replay only after fixing the receiver. Receiver-side deduplication is still required.

An empty chart may indicate nonnumeric fields or expired history. Inspect Latest stored event JSON and retention. If still unresolved, contact support with sanitized evidence and timestamps.

Open device setup · Contact support