Network Setup Notes for SBCs

Summary
Most 'network issues' on SBCs are either DHCP problems, link negotiation problems, or misconfigured DNS. This guide provides systematic network troubleshooting steps for single-board computers, covering Ethernet and WiFi configuration, static IP setup, and common failure modes. By checking each layer of the network stack methodically, you can isolate problems quickly without guesswork.
Who this is for
Anyone setting up networking on an SBC for the first time, troubleshooting intermittent connectivity issues, or migrating from Ethernet to WiFi. If your board can't reach the network reliably, start here.
What you'll do
- Verify physical layer connectivity (cables, link LEDs, WiFi signal).
- Check network layer configuration (IP address, routing, DNS).
- Configure static IP addresses for servers and services.
- Set up WiFi with proper country codes and power management.
- Troubleshoot common failure modes systematically.
Quick diagnostic checks
Run these commands to get a complete picture of network state:
# Check all interfaces and IP addresses:
ip a
# Look for: state UP, inet address assigned
# Check routing table:
ip r
# Look for: default gateway entry
# Check DNS configuration:
cat /etc/resolv.conf
# Look for: nameserver entries (e.g., 1.1.1.1, 8.8.8.8, or router IP)
# Test connectivity at IP layer:
ping -c 3 1.1.1.1
# Tests: internet connectivity without DNS
# Test DNS resolution:
ping -c 3 example.com
# Tests: DNS lookup and connectivity combined
# Check link status for Ethernet:
ethtool eth0 | grep -E "Link|Speed"
# Look for: Link detected: yes, Speed: 1000Mb/s (or 100Mb/s)
Ethernet configuration
DHCP (automatic, recommended for most setups)
Most images configure Ethernet for DHCP by default. Verify DHCP client is running:
# Check DHCP client status (dhcpcd or dhclient depending on distribution):
systemctl status dhcpcd
# or
systemctl status networking
# Request new DHCP lease manually:
sudo dhclient eth0
# or
sudo dhcpcd eth0
Static IP (for servers and services)
For systems that need a consistent IP address, configure static IP. Method depends on your distribution.
Debian/Ubuntu (using /etc/network/interfaces):
sudo nano /etc/network/interfaces
# Add:
auto eth0
iface eth0 inet static
address 192.168.1.50
netmask 255.255.255.0
gateway 192.168.1.1
dns-nameservers 1.1.1.1 8.8.8.8
Apply changes: sudo systemctl restart networking
NetworkManager (Armbian, recent Ubuntu):
# Using nmcli:
sudo nmcli con mod "Wired connection 1" ipv4.addresses 192.168.1.50/24
sudo nmcli con mod "Wired connection 1" ipv4.gateway 192.168.1.1
sudo nmcli con mod "Wired connection 1" ipv4.dns "1.1.1.1 8.8.8.8"
sudo nmcli con mod "Wired connection 1" ipv4.method manual
sudo nmcli con up "Wired connection 1"
# Or use the TUI:
sudo nmtui
# Navigate to Edit Connection > Wired connection 1 > IPv4 Configuration > Manual
systemd-networkd:
sudo nano /etc/systemd/network/20-wired.network
[Match]
Name=eth0
[Network]
Address=192.168.1.50/24
Gateway=192.168.1.1
DNS=1.1.1.1
DNS=8.8.8.8
Apply: sudo networkctl reload and sudo networkctl up eth0
WiFi configuration
WiFi with wpa_supplicant
# Generate encrypted PSK:
wpa_passphrase "YourSSID" "YourPassword" | sudo tee -a /etc/wpa_supplicant/wpa_supplicant.conf
# Edit the file to add country code:
sudo nano /etc/wpa_supplicant/wpa_supplicant.conf
Complete configuration example:
country=US
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
ssid="YourSSID"
psk=3c5a8d2f1e...(encrypted key)
key_mgmt=WPA-PSK
}
Restart networking: sudo systemctl restart wpa_supplicant
WiFi with NetworkManager
# Scan for networks:
sudo nmcli dev wifi list
# Connect:
sudo nmcli dev wifi connect "YourSSID" password "YourPassword"
# Or use the TUI:
sudo nmtui
# Navigate to Activate Connection > Select WiFi > Enter password
WiFi country code
WiFi performance and available channels depend on regulatory domain. Set the correct country code:
# Check current setting:
iw reg get
# Set country code (replace US with your country):
sudo iw reg set US
# Make persistent (edit /etc/default/crda):
echo 'REGDOMAIN=US' | sudo tee -a /etc/default/crda
Common country codes: US (United States), GB (United Kingdom), DE (Germany), FR (France), JP (Japan), AU (Australia), CA (Canada).
Troubleshooting common failures
No IP address assigned
Symptoms: ip a shows interface as UP but no inet address.
Steps:
- Check physical connection:
- Ethernet: Verify link LEDs on port (both board and switch/router). Try different cable.
- WiFi: Check signal strength:
iw dev wlan0 link. Move closer to router if signal is weak.
- Verify DHCP server is reachable:
- Check router DHCP settings are enabled.
- Check DHCP lease table on router for the board's MAC address.
- Try requesting lease manually:
sudo dhclient -v eth0and watch for errors.
- Check for IP conflicts:
- Another device may have the same IP address.
- Release and renew:
sudo dhclient -r eth0 && sudo dhclient eth0.
- Restart networking:
sudo systemctl restart networkingorsudo systemctl restart NetworkManager.
IP works but DNS fails
Symptoms: ping 1.1.1.1 works, but ping example.com fails with "Name or service not known".
If name resolution checks out but you still see slow starts or intermittent stalls, the issue is often higher up the stack (TLS handshake timing, retransmits, or packet loss). This explainer on what is http/3 helps you understand what changes compared with TCP.
Steps:
- Check
/etc/resolv.conf:cat /etc/resolv.conf # Should contain: nameserver 1.1.1.1 (or 8.8.8.8, or router IP) - If empty or incorrect, add DNS servers:
echo "nameserver 1.1.1.1" | sudo tee /etc/resolv.conf echo "nameserver 8.8.8.8" | sudo tee -a /etc/resolv.conf - For persistent DNS (systemd-resolved systems):
sudo nano /etc/systemd/resolved.conf # Add: DNS=1.1.1.1 8.8.8.8 sudo systemctl restart systemd-resolved - Test DNS directly:
nslookup example.com 1.1.1.1
WiFi connects but no internet
Symptoms: iw dev wlan0 link shows connected, but no internet access.
Steps:
- Check if IP address was assigned:
ip a show wlan0. - Check routing:
ip rshould show default via WiFi interface. - If no default route:
sudo ip route add default via 192.168.1.1 dev wlan0(replace with your router IP). - Check WiFi power management:
iw dev wlan0 get power_save. Disable if enabled:sudo iw dev wlan0 set power_save off. - Check for frequency/channel issues: Some channels may not be available in your country. Router should auto-select allowed channels.
Ethernet negotiates at 100Mbps instead of 1000Mbps
Symptoms: ethtool eth0 shows Speed: 100Mb/s on a Gigabit-capable board.
Steps:
- Check cable quality: Use Cat5e or Cat6 cable. Cat5 may not support Gigabit.
- Check switch/router: Ensure the port supports Gigabit.
- Try forcing Gigabit:
sudo ethtool -s eth0 speed 1000 duplex full autoneg on. - If problem persists, cable or switch port may be damaged.
Frequently asked questions
Should I use DHCP or static IP?
DHCP for: Development boards, test systems, devices that move between networks. Static IP for: Servers, services other devices connect to (DNS, VPN, web servers), systems with port forwarding rules on the router.
How do I set up a DHCP reservation instead of static IP?
In your router settings, find DHCP reservation (also called static lease or address reservation). Add an entry for the board's MAC address and assign a specific IP. This combines automatic configuration with a consistent IP.
Why does WiFi disconnect randomly?
Common causes: Power management turning off WiFi to save power (disable with iw set power_save off), weak signal causing frequent reassociation, driver bugs in older kernels (update kernel), interference from USB 3.0 devices near the WiFi antenna.
Can I use both Ethernet and WiFi simultaneously?
Yes, but requires routing configuration. By default, only one interface will be used for internet (whichever has the default route with lower metric). Use Ethernet for primary connection and WiFi as backup, or separate them by routing specific services through specific interfaces.
What DNS servers should I use?
Popular options: 1.1.1.1 / 1.0.0.1 (Cloudflare, fast and privacy-focused), 8.8.8.8 / 8.8.4.4 (Google, reliable), 9.9.9.9 / 149.112.112.112 (Quad9, security filtering), or your ISP's DNS servers. For home networks running Pi-hole, use the Pi-hole's IP address.
How do I find my board's IP address without a display?
Check router DHCP client list (look for hostname "bananapi", "armbian", or MAC address). Scan your network: nmap -sn 192.168.1.0/24. Use serial console to run ip a directly on the board. Set up mDNS (avahi) so you can reach the board via hostname.local (e.g., bananapi.local).
Why can't I SSH to my board over WiFi?
Verify SSH service is running: systemctl status ssh. Check firewall allows SSH: sudo ufw status or sudo iptables -L. Ensure you're on the same network (some routers isolate WiFi clients). Test from the board itself: ssh localhost.
Related guides
Author: LeMaker Documentation Team
Last updated: 2026-01-11