CAP Operations
Day-to-day management of Titan CAP on R700 readers.
Checking CAP Status
Via Reader Web UI
- Open
https://<reader-ip>/ - Navigate to Apps → Custom Applications
- Find Titan Agent - status should be Running
- Click View Log to see recent activity
Via Titan Hub UI
Reader status in hub reflects CAP health indirectly:
- Online: CAP connected, command subscriptions active
- Degraded: Tag reads arriving, but no command acks (CAP may be offline)
- Offline: No tag reads or status updates (reader or CAP down)
Start/Stop button responsiveness: If buttons work, CAP is healthy. If buttons do nothing (no ack), check CAP log.
Reading CAP Logs
In Reader Web UI
Apps → Titan Agent → View Log
Healthy log shows:
[2026-09-20 12:00:01] INFO: Titan Agent 0.1.6.0 starting
[2026-09-20 12:00:02] INFO: Read identity from /cust/rw_dir/
[2026-09-20 12:00:03] INFO: Connecting to mqtt.titanrfid.com:8883
[2026-09-20 12:00:04] INFO: TLS handshake complete
[2026-09-20 12:00:05] INFO: MQTT connected, client_id=370-12-34-5678-9012-agent
[2026-09-20 12:00:06] INFO: Subscribed to titan/v1/370-12-34-5678-9012/commands
[2026-09-20 12:00:07] INFO: Ready
Command execution:
[12:05:30] INFO: Received command: {"kind":"start","id":"abc123","preset":"titan-default"}
[12:05:31] INFO: POST /api/v1/profiles/inventory/presets/titan-default/start
[12:05:32] INFO: Reader started (200 OK)
[12:05:33] INFO: Published ack: {"id":"abc123","ok":true,"status":"started"}
Error patterns:
ERROR: Cannot read /cust/rw_dir/titan.json → Identity not provisioned
ERROR: TLS handshake failed → Wrong CA, cert/key mismatch, or cert revoked on the broker
ERROR: MQTT connected but no events in hub → Cert CN mismatch (ACL silently drops publishes)
ERROR: POST /api/v1/presets failed: 401 → Reader REST password wrong
Via SSH (If Enabled)
SSH to reader (if enabled in reader settings):
ssh root@<reader-ip>
cat /var/log/cap/titan-agent.log
Note: SSH is disabled by default on R700. Enable in reader web UI under Settings → SSH.
Restarting CAP
When to restart:
- After provisioning identity (if CAP was already running)
- After updating identity files (cert rotation)
- If CAP log shows errors and you want to retry connection
How:
- Reader web UI → Apps → Titan Agent
- Click Restart
- Wait 10 seconds, check log for "Ready" message
Alternative: Restart reader (reboots stock firmware + CAP). Takes ~2 minutes.
Upgrading CAP
In-Place Upgrade
- Download new
.upgxfile (e.g.titan-agent-0.1.7.0.upgx) - Reader web UI → Apps → Titan Agent → Upload New Version
- Select new
.upgxfile - Persistent Data: Ensure rw_dir is selected
- Click Upload
What happens:
- Old CAP stopped
- New CAP installed
- Identity files (
/cust/rw_dir/) preserved - New CAP started automatically
Downtime: ~30 seconds. Tag reads and commands are queued during upgrade.
Verify Upgrade
Check CAP log after upgrade:
[12:10:05] INFO: Titan Agent 0.1.7.0 starting ← New version
[12:10:08] INFO: Ready
Hub UI should show reader back online within 1 minute.
Monitoring CAP Health
Key Metrics
From Hub UI (per reader):
- Last Seen: When last tag read or status update arrived
- Commands Acked: Timestamp of last command acknowledgment
- Status: Online / Degraded / Offline
From Reader Log:
- MQTT connection state (connected / reconnecting)
- Command receive → ack latency (should be under 2 seconds)
- REST API errors (reader's own API, not CAP's fault)
Alerting
Hub Alerts (if configured):
- Reader offline > 5 minutes
- Commands timeout (no ack within 30 seconds)
CAP-Specific: Watch for:
- Crash-loop (restarts every few seconds) → Check log for errors
- Commands received but not executed → REST API credentials wrong
- No MQTT connection → Identity or network issue
Common Operations
Rotate Reader Certificate
When: Certificate nearing expiry, or security incident
Steps:
- Generate new client cert (same CN as reader serial / device identity)
- Write new
client.crtandclient.keyto/cust/rw_dir/(via REST API or re-provision) - Restart CAP
- Contact support or Wonder to revoke the previous certificate on the broker if it must not reconnect
Downtime: ~10 seconds (CAP restart)
Change MQTT Broker Address
Scenario: Migrating from one broker to another
Steps:
- Update broker address in hub config (titand side)
- Re-provision identity (includes new broker address in
titan.jsonor CAP config) - Restart CAP
Note: CAP currently hardcodes broker address at build time. Future versions will read from titan.json or rw_dir config file.
Revoke Reader (Lost or Stolen)
Operator console (not customer hub UI): revoke the device via titand's operator API after recording a reason.
Titand revoke effect:
- Marks the device revoked so Titan stops accepting its data.
- Does not stop the reader connecting to the MQTT broker.
To block MQTT reconnects: Contact support or Wonder to revoke the client certificate on the broker. After the cert is on the broker revocation list, the reader is refused at its next connection attempt. An existing connection continues until it drops on its own (no fixed time bound).
Cannot be undone in titand. Re-provisioning issues a new certificate but does not revoke the old one; contact support or Wonder to revoke the old certificate if it must not reconnect.
Troubleshooting
CAP Running But Start/Stop Doesn't Work
Symptom: Hub buttons do nothing, or commands timeout
Check:
- CAP log: Is CAP subscribed to
titan/v1/{serial}/commands? - Hub audit log: Is command being published?
- CAP log: Is command received?
Received command: {...} - CAP log: Is command executed?
POST /api/v1/...and response - CAP log: Is ack published?
Published ack: {...}
Common causes:
- Cert CN mismatch → MQTT may connect, but the ACL delivers no commands to the reader (the commands topic is
readfor the cert CN; a wrong%uhas no read rule). Publishes to events/status can be dropped on CN mismatch. - Reader REST password wrong → Command received, execution fails
- Network issue → Commands published but not reaching reader
CAP Crash-Loops
Symptom: Reader web UI shows CAP restarting every few seconds
Check:
- CAP log: What's the error before crash?
- Firmware version: CAP 0.1.6.0 requires firmware 10.0.0+ (libstdc++ compatibility)
- Identity files: Are all 4 files present and readable?
Common causes:
- Missing identity files →
Cannot read /cust/rw_dir/... - libstdc++ version mismatch →
GLIBCXX_3.4.32 not found(upgrade CAP to 0.1.6.0+) - Permissions on
client.key→ Must be 0600
Reader Online But No Commands Acked
Symptom: Tag reads flowing, but Start/Stop buttons timeout
Check:
- CAP running? (Web UI → Apps → Status)
- CAP log: MQTT connected?
- CAP log: Subscribed to correct topic?
- Hub audit log: Commands being published?
Common causes:
- CAP not installed (stock firmware only)
- CAP installed but stopped
- CAP subscribed to wrong topic (cert CN ≠ actual serial)
TLS Handshake Failures
Symptom: CAP log shows TLS handshake failed or certificate verify failed
Check:
ca.crt: Is it Titan Cloud CA? (Not reader's self-signed cert)client.crt+client.key: Do they match? (issued together)- Client certificate revoked on the broker?
Fix:
- Re-provision with correct CA and matching cert+key
- If support or Wonder has revoked the certificate on the broker, re-provision with a new cert and ask support to revoke the previous cert if needed
Commands Work Initially, Then Stop
Symptom: Start/Stop worked, then stopped working hours/days later
Check:
- CAP still running? (May have crashed)
- MQTT connection still up? (CAP log:
Reconnecting...means broker unreachable) - Client certificate revoked on the broker? (For example after re-provisioning elsewhere)
Fix:
- Restart CAP if crashed
- Check network connectivity to broker
- If the old cert was revoked on the broker, re-provision identity with a new cert
Performance Notes
CAP Resource Usage:
- Memory: ~10 MB
- CPU: under 1% (idle), ~5% (processing command)
- No impact on reader's RFID performance
Command Latency:
- Hub click → CAP receives command: under 1 second (MQTT)
- CAP → Reader REST API: under 1 second
- Total: ~2 seconds from hub click to radio started
Concurrency: CAP processes one command at a time. Multiple Start commands queued → processed in order.
Backup and Disaster Recovery
What to back up:
- Reader configuration (export from reader web UI)
- Identity files (
/cust/rw_dir/*) - but these can be re-provisioned
Restoring:
- Factory reset reader (if replacing hardware)
- Restore reader config (or reconfigure from scratch)
- Install CAP (upload
.upgx) - Re-provision identity (Wonder-shipped path, or BYO claim when available)
Lost identity files: Re-provision or re-claim (issues new cert; contact support or Wonder to revoke the old certificate if it must not reconnect). No data loss (tag history is in Titan, not on reader).
Next Steps
- Factory Reset - Safely resetting reader while preserving identity
- Troubleshooting - Full troubleshooting guide
- CAP claim-and-pull - Future self-service provisioning (internal security design)