128 lines
4.7 KiB
Markdown
128 lines
4.7 KiB
Markdown
## This repo is currently a work in progress
|
|
- The README.md will be fully updated once the repo is in a stable state
|
|
|
|
|
|
## TODO
|
|
- Need to automate Rust project (xbnet)
|
|
- Configure (looks good)
|
|
- Build
|
|
- Deploy
|
|
- On Ubuntu for testing
|
|
- On Linux for Tegra for TX2
|
|
- On Jetson Orin
|
|
- Working on setup_host_device.sh
|
|
- Issues with bridging interfaces
|
|
- Need to add setup_end_device.sh
|
|
- Need to dockerize service
|
|
- Possibly may need to bridge docker xbnet network with local wifi interface as well
|
|
- Make a submodule of xbnet, or copy over raw files, depending on future decisions
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
# SERVICES-XBEE_NET
|
|
|
|
This project contains a Dockerized setup to create and manage an XBee network using the `xbnet` utility. The network interface is bridged with a host Wi-Fi interface, enabling internet access for connected devices.
|
|
##### Note: This project uses the `tap` xbnet protocol, which is a layer 2 protocol. This supports full ethernet pipeline. For a simple IP level protocol support, the `tun` xbnet protocol can be used.
|
|
|
|
## File Structure
|
|
```bash
|
|
services-xbee_net/
|
|
├── scripts/
|
|
│ ├── entrypoint.sh # Entrypoint script for Docker container
|
|
│ ├── get_connected_wifi_info.sh # Script to fetch connected Wi-Fi device information
|
|
│ ├── health_check.sh # Script to perform health checks on the container
|
|
│ ├── setup_end_device.sh # Script to set up the XBee end device
|
|
│ ├── setup_host_device.sh # Script to set up the XBee host device
|
|
│ ├── test.sh # Script to run tests
|
|
├── tests/ # Directory for testing-related scripts and files
|
|
├── xbnet/ # The xbnet source code directory
|
|
├── .env # Environment variables for the Docker setup
|
|
├── .gitignore # Git ignore file
|
|
├── docker-compose-run-multiple.yml # Docker Compose file to run multiple instances
|
|
├── docker-compose.yml # Main Docker Compose file
|
|
├── Dockerfile # Dockerfile to build the Docker image
|
|
├── README.md # Project documentation
|
|
└── supervisord.conf # Supervisor configuration file
|
|
```
|
|
|
|
## Prerequisites
|
|
|
|
Ensure Docker and Docker Compose are installed on your machine.
|
|
|
|
## Getting Started
|
|
|
|
#### 1. Clone the Repository
|
|
|
|
```bash
|
|
git clone https://git.spirirobotics.com/Spiri/services-xbee_net
|
|
cd services-xbee_net
|
|
```
|
|
|
|
#### 2. Modify `.env-...` File based on running single or multiple xbnets
|
|
|
|
The `.env` file contains the configuration parameters for the XBee network. You may need to update these parameters according to your specific setup.
|
|
- For a single xbnet setup, modify params in the `.env-run-single`
|
|
- For multi xbnet setup, modify params in the `.env-run-multiple`
|
|
#### (Note: Multi node xbnet setup is currently under progress)
|
|
|
|
---
|
|
##### a. Sample `.env-run-single` config:
|
|
```bash
|
|
# Configuration for xbnet0
|
|
XBEE_PORT=/dev/ttyUSB0
|
|
XBEE_BAUDRATE=230400
|
|
XBEE_NET_SRC_IP=192.168.1.100 # Ensure this IP matches the network range
|
|
XBEE_NET_IFACE_NAME=xbnet0
|
|
|
|
# Default Gateway
|
|
DEFAULT_GATEWAY=192.168.1.1
|
|
```
|
|
|
|
##### b. Sample `.env-run-multiple` config:
|
|
```bash
|
|
# Configuration for xbnet0 (REQUIRED: minimum config to run a single xbnet node)
|
|
XBEE0_PORT=/dev/ttyUSB0 # The serial port for the XBee device
|
|
XBEE0_BAUDRATE=230400 # Baud rate for the XBee device
|
|
XBEE0_NET_SRC_IP=192.168.1.100 # Source IP for the XBee network
|
|
XBEE0_NET_IFACE_NAME=xbnet0 # Interface name for the XBee network
|
|
|
|
# Configuration for xbnet1 (OPTIONAL: only required for multi node xbnets)
|
|
XBEE1_PORT=/dev/ttyUSB1
|
|
XBEE1_BAUDRATE=230400
|
|
XBEE1_NET_SRC_IP=192.168.1.101
|
|
XBEE1_NET_IFACE_NAME=xbnet1
|
|
|
|
# Default Gateway (REQUIRED: part of minimum concifg to run a single xbnet node)
|
|
DEFAULT_GATEWAY=192.168.1.1
|
|
```
|
|
---
|
|
|
|
|
|
#### 3. Build and Start the Docker Container
|
|
|
|
To build the Docker image and start the container, run:
|
|
|
|
```bash
|
|
docker-compose -f docker-compose.yml up --build
|
|
```
|
|
|
|
This will build the Docker image and start the container with the XBee network and the required setup.
|
|
|
|
#### 4. Health Check and Container Management
|
|
|
|
The container includes a health check that pings the XBee network interface to ensure it is functioning properly. \
|
|
The container is configured to restart automatically if the health check fails.
|
|
|
|
#### 5. Troubleshooting
|
|
|
|
Ensure the XBee devices are connected to the correct serial ports.\
|
|
Verify the network interfaces using ip a inside the container.\
|
|
The container logs can be viewed using:
|
|
|
|
```bash
|
|
docker logs xbee_node
|
|
``` |