Troubleshooting
This guide helps you diagnose and fix common issues when using the Cerulion Visualization bridge. If you encounter problems, start here before diving into deeper debugging.Verifying the Bridge is Running
The first step in troubleshooting is confirming that the bridge server is actually running and accessible.1
Check if the server is listening
Verify the WebSocket server is listening on the expected port:You should see the port is in LISTEN state. If not, the server isn’t running.
2
Check bridge process
Verify the bridge process is running:You should see the bridge process listed.
3
Test WebSocket connection
Test the WebSocket endpoint with a simple client:
4
Check bridge logs
Look at the terminal where you started the bridge. You should see:
- Server startup messages
- Topic discovery output
- Client connection logs
Common Issues and Solutions
Port already in use
Port already in use
Symptoms: Error message like “Address already in use” or “Port 9090 is already bound”.Possible causes:
- Another process is using port 9090
- Previous bridge instance didn’t shut down cleanly
- Another WebSocket server is running
-
Find what’s using the port:
-
Kill the process using the port, or use a different port:
-
Then connect Lichtblick to
ws://localhost:9091instead
No topics discovered
No topics discovered
Symptoms: Bridge starts but shows “Found 0 topics” or no topics appear in Lichtblick.Possible causes:
- No topics are actually publishing
- Wrong transport mode selected
- Topics published via different transport than bridge mode
- Transport not properly configured
-
Verify topics are actually publishing:
- For iox2: Check iceoryx2 service registry
- For zenoh: Check zenoh network for topics
-
Ensure transport mode matches:
- If topics use iox2, bridge must use
--transport iox2 - If topics use zenoh, bridge must use
--transport zenoh
- If topics use iox2, bridge must use
- Check that your Cerulion nodes are running and publishing
- Verify transport configuration (iox2 running, zenoh network accessible)
The bridge can only discover topics from the transport mode you’ve selected. Make sure it matches how your topics are published.
Connection refused in Lichtblick
Connection refused in Lichtblick
Symptoms: Lichtblick shows “Connection refused” or can’t connect to the bridge.Possible causes:
- Bridge server isn’t running
- Wrong port number
- Firewall blocking connection
- Wrong hostname/IP address
- Verify bridge is running (see “Verifying the Bridge is Running” above)
-
Check the port matches:
- Bridge:
--port 9090(or whatever you specified) - Lichtblick:
ws://localhost:9090(same port)
- Bridge:
-
If connecting remotely, check:
- Bridge is bound to
0.0.0.0(not just127.0.0.1) - Firewall allows connections on the port
- Correct IP address or hostname
- Bridge is bound to
- Test with a simple WebSocket client first
Topics appear but no data flows
Topics appear but no data flows
Symptoms: Topics show up in Lichtblick, but subscribing shows no data or messages.Possible causes:
- Topics aren’t actually publishing data
- Schema conversion issues
- Message format problems
- Subscription not working
-
Verify topics are actively publishing:
- Check your Cerulion node logs
- Verify data is flowing in the transport
-
Check bridge logs for errors:
- Look for serialization/conversion errors
- Check for subscription failures
-
Verify schemas exist for message types:
- Without schemas, messages may not convert properly
- Check schema registry configuration
- Test with a simple topic first to isolate the issue
Iox2 transport not working
Iox2 transport not working
Symptoms: Bridge starts with iox2 mode but finds no topics or can’t connect.Possible causes:
- Iceoryx2 not running
- Iceoryx2 service registry not accessible
- Topics not published via iox2
- Permission issues
-
Verify iceoryx2 is running:
-
Check iceoryx2 service registry:
- Ensure iceoryx2 daemon is running
- Verify service registry is accessible
-
Confirm topics are published via iox2:
- Check your Cerulion node configuration
- Verify transport mode in node setup
-
Check permissions:
- Ensure bridge has access to iceoryx2 shared memory
- Verify user permissions
Zenoh transport not working
Zenoh transport not working
Symptoms: Bridge starts with zenoh mode but can’t connect or find topics.Possible causes:
- Zenoh network not accessible
- Zenoh configuration issues
- Network connectivity problems
- Zenoh routers not running
-
Verify zenoh network connectivity:
- Check zenoh configuration
- Ensure zenoh routers are accessible
- Test zenoh connectivity separately
-
Check network settings:
- Firewall rules
- Network routing
- DNS/hostname resolution
-
Verify zenoh session:
- Check zenoh session configuration
- Ensure zenoh libraries are properly installed
-
Test zenoh independently:
- Use zenoh tools to verify connectivity
- Check if topics are visible via zenoh directly
Messages show as hex data
Messages show as hex data
Symptoms: Topics work but messages appear as hex-encoded data instead of structured JSON.Possible causes:
- No schema exists for the message type
- Schema not found or not loaded
- Schema format incorrect
-
Check if schema exists for your message type:
- Look in schema registry
- Verify schema file exists
-
Verify schema is loaded:
- Check bridge logs for schema loading errors
- Ensure schema registry path is correct
-
Create or update schema:
- Add schema for your message type
- Ensure schema format matches Cerulion schema specification
Without schemas, the bridge can’t convert messages to JSON, so it returns hex-encoded data. This is expected behavior when schemas are missing.
Bridge crashes or exits unexpectedly
Bridge crashes or exits unexpectedly
Symptoms: Bridge starts but then crashes or exits without error message.Possible causes:
- Panic in Rust code
- Missing dependencies
- Transport connection failure
- Resource exhaustion
-
Check for panic messages:
- Look for “thread panicked” in output
- Check system logs:
dmesg | tailorjournalctl -xe
-
Run with debug output:
-
Check system resources:
- Memory usage
- File descriptor limits
- Network connection limits
-
Verify dependencies:
- All required libraries installed
- Transport libraries (iox2/zenoh) working
-
Try with release build:
Diagnostic Commands
Check Bridge Status
Test WebSocket Connection
Check Transport Status
For iox2:Verify Topics Exist
Check if topics are actually publishing in your transport:- For iox2: Use iceoryx2 tools or check service registry
- For zenoh: Use zenoh tools to list topics
Understanding Error Messages
”Address already in use”
The port is already bound by another process. Use a different port or stop the conflicting process.”Failed to bind”
The bridge couldn’t bind to the port. Check:- Port permissions
- Another process using the port
- Firewall blocking the port
”No topics discovered”
No topics found in the selected transport. Verify:- Topics are actually publishing
- Transport mode matches topic transport
- Transport is properly configured
”Connection refused”
Client can’t connect to bridge. Check:- Bridge is running
- Correct port number
- Network connectivity
- Firewall rules
”Serialization failed”
Message couldn’t be converted to JSON. Usually means:- Missing schema
- Schema format incorrect
- Message structure mismatch
Performance Issues
If the bridge is slow or using too many resources:-
Use release build: Debug builds are slower
- Limit topics: If possible, only subscribe to needed topics
- Check system resources: Monitor CPU, memory, network
- Reduce message frequency: If topics publish very frequently, consider rate limiting
Getting Help
If you’ve tried the solutions above and still have issues:-
Collect information:
- Bridge startup command and output
- Full error messages
- Transport mode and configuration
- System information (OS, Rust version)
- Steps to reproduce
-
Check logs:
- Bridge server output
- System logs
- Transport-specific logs (iox2/zenoh)
- Report the issue: Include all collected information when reporting
Prevention Tips
Use Release Builds
Always use release builds in production for better performance
Match Transport Modes
Ensure bridge transport mode matches how topics are published
Verify Before Connecting
Check topics are publishing before starting the bridge
Keep Schemas Updated
Ensure schemas exist for message types you want to visualize
Next Steps
If you’ve resolved your issue or want to learn more:- Review the Overview for conceptual understanding
- Check the Usage Guide for best practices
- Learn about Transport Modes in detail