Skip to content

Commit 2c098c3

Browse files
committed
Router update started
1 parent 4454267 commit 2c098c3

File tree

1 file changed

+29
-0
lines changed
  • content/hardware/02.uno/boards/uno-q/tutorials/01.user-manual

1 file changed

+29
-0
lines changed

content/hardware/02.uno/boards/uno-q/tutorials/01.user-manual/content.md

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -785,6 +785,35 @@ The `Bridge` library provides a communication layer built on top of the `Arduino
785785
- **MPU side (Qualcomm QRB, Linux)**: Runs higher-level services and can remotely invoke MCU functions.
786786
- **MCU side (STM32, Zephyr RTOS)**: Handles time-critical tasks and exposes functions to the MPU via RPC.
787787

788+
#### The Arduino Router (Infrastructure)
789+
790+
Under the hood, the communication is managed by a background Linux service called the Arduino Router (`arduino-router`).
791+
792+
While the `Bridge` library is what you use in your code, the Router is the traffic controller that makes it possible. It implements a **Star Topology** network using MessagePack RPC.
793+
794+
**Key Features:**
795+
796+
- **Multipoint Communication:** Unlike simple serial communication (which is typically point-to-point), the Router allows multiple Linux processes to communicate with the MCU simultaneously. For example, you could have a Python script reading sensor data while a separate C++ application commands motors, both interacting with the same running Sketch.
797+
798+
- **Service Discovery:** Clients (like your Python script or the MCU Sketch) "register" functions they want to expose. The Router keeps a directory of these functions and routes calls to the correct destination.
799+
800+
**Managing the Router Service**
801+
802+
The arduino-router runs automatically as a system service. In most cases, you do not need to interact with it directly. However, if you are debugging advanced issues or need to restart the communication stack, you can control it via the Linux terminal:
803+
804+
**Check Status** To see if the router is running and connected:
805+
```bash
806+
systemctl status arduino-router
807+
```
808+
**Restart the Service** If the communication seems stuck, you can restart the router without rebooting the board:
809+
```bash
810+
sudo systemctl restart arduino-router
811+
```
812+
**View Logs** To view the real-time logs for debugging (e.g., to see if RPC messages are being rejected or if a client has disconnected):
813+
```bash
814+
journalctl -u arduino-router -f
815+
```
816+
788817
#### Core Components
789818

790819
`BridgeClass`

0 commit comments

Comments
 (0)