Network Configuration Guide
Proper network configuration is essential for reliable robot communication and competition compliance. This guide covers the complete MARSLib network setup.
Network structure Overview
Section titled “Network structure Overview”📡 Standard FRC Network
Section titled “📡 Standard FRC Network”IP Addressing Scheme
Section titled “IP Addressing Scheme”Standard FRC Addresses
Section titled “Standard FRC Addresses”| Device | IP Address | Purpose |
|---|---|---|
| roboRIO | 10.TE.AM.1 | Main robot controller |
| Driver Station | 10.TE.AM.5 | Competition laptop |
| Radio | 10.TE.AM.1 | Bridge (same as roboRIO) |
| IP Camera 1 | 10.TE.AM.11 | Vision camera 1 |
| IP Camera 2 | 10.TE.AM.12 | Vision camera 2 |
| Co-Processor | 10.TE.AM.20 | Raspberry Pi/Jetson |
| Limelight | 10.TE.AM.11 | Vision system |
Legend: TE = Team Number, AM = Alliance (Red/Blue)
Example for Team 2614:
- roboRIO:
10.26.14.1 - Driver Station:
10.26.14.5 - Camera 1:
10.26.14.11
Hardware Configuration
Section titled “Hardware Configuration”OM5P Radio Setup
Section titled “OM5P Radio Setup”Initial Radio Configuration:
- Connect to radio via Ethernet.
- Access web interface:
http://192.168.1.1 - Login: admin / admin.
- Set team number: Your FRC team number.
- Configure channel: Choose least congested 2.4GHz channel.
- Set security: WPA2-Personal with strong password.
Competition Settings:
{ "teamNumber": 2614, "channel": 6, "security": "WPA2-Personal", "band": "2.4GHz", "bandwidthLimit": "20Mbps", "firewall": "enabled"}roboRIO Network Setup
Section titled “roboRIO Network Setup”Method 1: Web Dashboard
- Connect to roboRIO USB.
- Access:
http://roborio-TEAM-FRC.local - Configure → Network.
- Set static IP:
10.TE.AM.1
Method 2: Imaging Tool
- Open roboRIO Imaging Tool.
- Configure team number.
- Image to SD card.
- Image roboRIO (5-10 minutes)
Device Configuration
Section titled “Device Configuration”IP Camera Setup
Section titled “IP Camera Setup”Limelight Configuration:
- Connect to Limelight via USB.
- Access:
http://limelight.localor10.TE.AM.11 - Configure:
- Set static IP:
10.TE.AM.11 - Team number: Your team number.
- Camera exposure: Low (5-15 for AprilTags)
- Pipeline: AprilTag pipeline.
- Set static IP:
PhotonVision Configuration:
- Install PhotonVision on coprocessor.
- Configure network settings:
- Static IP:
10.TE.AM.11 - Gateway:
10.TE.AM.1 - DNS:
10.TE.AM.1
- Static IP:
Co-Processor Setup
Section titled “Co-Processor Setup”Raspberry Pi Configuration:
# Edit network configurationsudo nano /etc/dhcpcd.conf
# Add static IP configurationinterface eth0static ip_address=10.26.14.20/24static routers=10.26.14.1static domain_name_servers=10.26.14.1
# Restart networkingsudo systemctl restart dhcpcdJetson Orin Configuration:
# Configure network interfacesudo nmcli con modify "Wired connection 1" \ ipv4.addresses 10.26.14.20/24 \ ipv4.gateway 10.26.14.1 \ ipv4.dns "10.26.14.1" \ ipv4.method manualSoftware Integration
Section titled “Software Integration”MARSLib Network Configuration
Section titled “MARSLib Network Configuration”Vision System Network Setup:
public class VisionNetworkConfig { public static final String ROBORIO_IP = "10.26.14.1"; public static final String LIMELIGHT_IP = "10.26.14.11"; public static final String COPROCESSOR_IP = "10.26.14.20";
// Camera configurations public static final int FRONT_CAM_ID = 11; public static final int BACK_CAM_ID = 12;
public static void configureCameras() { // Configure Limelight Limelight frontCamera = new Limelight(FRONT_CAM_ID); frontCamera.setPipelineIndex(0); // AprilTag pipeline
// Configure PhotonVision PhotonCamera backCamera = new PhotonCamera("back-cam"); backCamera.setVersion(PhotonVersion.v3); }}Network Tables Integration
Section titled “Network Tables Integration”Network Tables Server Configuration:
public class NetworkTablesConfig { public static final String SERVER_ADDRESS = "10.26.14.1"; // roboRIO
public static void configureNetworkTables() { // Start NetworkTables server on roboRIO NetworkTables.startServer(); NetworkTables.setServerTeam(2614); // Automatically configures IP }}Client Configuration:
public class NetworkTablesClient { public static void connectToRobot() { // Connect to robot NetworkTables NetworkTables.setClientTeam(2614); NetworkTables.startClient4();
// Wait for connection try { Thread.sleep(1000); } catch (InterruptedException e) { Thread.currentThread().interrupt(); }
boolean connected = NetworkTables.isConnected(); if (!connected) { System.err.println("Failed to connect to robot NetworkTables!"); } }}Troubleshooting Network Issues
Section titled “Troubleshooting Network Issues”Connection Problems
Section titled “Connection Problems”Issue: Cannot Connect to Robot
Diagnosis:
# 1. Check roboRIO is reachableping 10.26.14.1
# 2. Check Driver Station connection# Driver Station should show green "Communications"
# 3. Check Radio linkssh admin@10.26.14.1# Look at radio status LEDsSolutions:
- Verify radio is powered (solid blue LED)
- Check Ethernet cables are securely connected.
- Restart Driver Station application.
- Reimage radio if necessary.
High Latency Issues
Section titled “High Latency Issues”**Issue: Robot Response Delayed
Diagnosis:
// Monitor network latencypublic class NetworkMonitor { public static void checkLatency() { long startTime = System.nanoTime();
// Send NetworkTables ping NetworkTables.getEntry("Ping").setDouble(0.0); Double pong = NetworkTables.getEntry("Pong").getDouble(0.0);
long latency = System.nanoTime() - startTime; double latencyMs = latency / 1_000_000.0;
Logger.recordOutput("Network/LatencyMs", latencyMs);
if (latencyMs > 50) { MARSFaultManager.warn("High network latency: " + latencyMs + "ms"); } }}Solutions:
- Reduce wireless interference (change radio channel)
- Use wired connection for development.
- Optimize network tables updates (don’t spam updates)
- Check for bandwidth-heavy applications (vision streaming)
Intermittent Disconnections
Section titled “Intermittent Disconnections”**Issue: Robot randomly disconnects
Diagnosis:
# Check signal strength# Watch Driver Station "Signal Strength" indicator
# Check radio logsssh admin@10.26.14.1dmesg | grep -i wifiSolutions:
- Update radio firmware to latest version.
- Check power supply to radio.
- Inspect antenna connections on radio.
- Reduce wireless interference at venue.
Competition Preparation
Section titled “Competition Preparation”FMS Connection Testing
Section titled “FMS Connection Testing”Pre-Competition Checklist:
- Connect to practice field.
- Test driver station connection.
- Verify all devices communicate.
- Test robot code deployment.
- Check camera streaming works.
Practice Field Test:
public class FMSConnectionTest { public static void testFMSConnection() { // Test FMS attachment DriverStation ds = DriverStation.getInstance();
// Check FMS connected boolean fmsAttached = ds.isFMSAttached(); boolean dsAttached = ds.isDSAttached();
Logger.recordOutput("FMS/Connected", fmsAttached); Logger.recordOutput("DS/Connected", dsAttached);
if (fmsAttached && dsAttached) { System.out.println("✅ FMS connection test passed"); } else { System.err.println("❌ FMS connection test failed"); } }}Bandwidth Management
Section titled “Bandwidth Management”Monitor Network Usage:
public class BandwidthMonitor { public static void monitorBandwidth() { // Monitor data usage from cameras double[] bandwidthUsage = new double[2]; bandwidthUsage[0] = getCameraBandwidth(0); // Front camera bandwidthUsage[1] = getCameraBandwidth(1); // Back camera
double totalBandwidth = bandwidthUsage[0] + bandwidthUsage[1]; Logger.recordOutput("Network/TotalBandwidthMbps", totalBandwidth);
// FMS bandwidth limit: ~7Mbps per robot if (totalBandwidth > 6.5) { MARSFaultManager.warn("High bandwidth usage: " + totalBandwidth + "Mbps"); } }
private static double getCameraBandwidth(int cameraIndex) { // Estimate camera bandwidth based on resolution and FPS // Typical: 640x480 @ 30fps = ~4-5Mbps return 4.5; }}Security Configuration
Section titled “Security Configuration”Wireless Security
Section titled “Wireless Security”Recommended Settings:
- Security Mode: WPA2-Personal.
- Password: Strong password (16+ characters)
- Encryption: AES.
- Key Rotation: Change password each season.
Password Management:
# Generate strong passwordopenssl rand -base64 16 | head -c 16
# Update radio password# Access radio web interface → Wireless → SecurityFirewall Configuration
Section titled “Firewall Configuration”Enable Radio Firewall:
{ "firewall": "enabled", "rules": [ { "action": "allow", "protocol": "tcp", "ports": [80, 443, 1180, 1181, 1182], "description": "Web, SSH, NetworkTables" }, { "action": "allow", "protocol": "udp", "ports": [5010, 5011, 5012, 5013, 5014], "description": "NT, DS, Camera, Radio, USB" } ]}Advanced Networking
Section titled “Advanced Networking”Multi-Robot Coordination
Section titled “Multi-Robot Coordination”For alliance coordination or multi-robot setups.
public class MultiRobotCommunication { private final String[] allianceRobots = { "10.26.14.1", // Us "10.1.14.1", // Alliance partner 1 "10.2.14.1" // Alliance partner 2 };
public void broadcastAlliancePosition() { Pose2d myPose = drive.getPose();
// Broadcast our position to alliance for (String robotIp : allianceRobots) { if (!robotIp.equals(NetworkTablesConfig.ROBORIO_IP)) { NetworkTables.getTable(robotIp).getEntry("RobotPose").setString(myPose.toString()); } } }
public Pose2d getAlliancePartnerPosition(String partnerIp) { String poseString = NetworkTables.getTable(partnerIp) .getEntry("RobotPose").getString("");
if (poseString != null && !poseString.isEmpty()) { return Pose2d.fromString(poseString); } return null; }}Remote Debugging
Section titled “Remote Debugging”SSH Access Configuration:
# Enable SSH access to roboRIOssh admin@10.26.14.1
# Enable SSH in web dashboard# Networking → SSH → Enable
# Change default passwordpasswd adminRemote Code Deployment:
# Deploy code over network./gradlew deploy
# This uses SSH to copy JAR to roboRIO# Requires network connection📖 Further Reading
Section titled “📖 Further Reading”- Deployment Guide - Complete robot deployment.
- Troubleshooting Guide - Network troubleshooting.
- FRC Network Rules - Official network rules.
- OM5P Documentation - Radio configuration.
Ready to configure? Set up your network and get connected!