intermediate 45 minutes

Raspberry Pi LED Server Setup

Complete guide to setting up a Raspberry Pi as a Beeboard LED wall controller.

Raspberry Pi LED Server Setup

This guide walks you through setting up a Raspberry Pi to control LEDs on your climbing wall.

Requirements

Hardware

  • Raspberry Pi 2, 3, or 4 (Pi Zero 2 W also works)
  • MicroSD Card (16GB or larger)
  • 5V Power Supply (2.5A+ recommended)
  • WS2812B LED Strip
  • Appropriate power supply for LEDs (5V, amps depend on LED count)

Software

  • Raspberry Pi Imager (download from raspberrypi.org)
  • SSH client (Terminal on Mac/Linux, PuTTY on Windows)

Step 1: Flash Raspberry Pi OS

  1. Download and open Raspberry Pi Imager
  2. Click “Choose OS”“Raspberry Pi OS (other)”“Raspberry Pi OS (64-bit)”

Important: Use Debian 12 (bookworm) based versions. Newer versions may have Python compatibility issues.

  1. Click the gear icon (⚙️) for advanced settings:

    • ✅ Enable SSH
    • ✅ Set username and password
    • ✅ Configure wireless LAN (enter your WiFi credentials)
    • Set hostname (e.g., beeboard-wall1)
  2. Select your SD card and click “Write”

Step 2: Boot and Connect

  1. Insert the SD card into your Pi and power it on
  2. Wait 2-3 minutes for first boot
  3. Find your Pi’s IP address (check your router or use ping beeboard-wall1.local)
  4. SSH into the Pi:
ssh pi@beeboard-wall1.local
# Or use the IP address
ssh pi@192.168.1.XXX

Step 3: Configure Static IP

For reliable communication, set a static IP address.

Using NetworkManager (Newer OS)

# Find your WiFi connection name
nmcli connection show

# Set static IP (adjust for your network)
sudo nmcli connection modify "Your-WiFi-Name" \
  ipv4.method manual \
  ipv4.addresses 192.168.68.101/24 \
  ipv4.gateway 192.168.68.1 \
  ipv4.dns "192.168.68.1 8.8.8.8"

# Restart networking
sudo nmcli connection down "Your-WiFi-Name"
sudo nmcli connection up "Your-WiFi-Name"

Step 4: Install Dependencies

# Update system
sudo apt update && sudo apt upgrade -y

# Install Python and packages
sudo apt install -y python3 python3-pip git python3-dev

# Install LED libraries
sudo pip3 install --break-system-packages flask flask-cors colorlog
sudo pip3 install --break-system-packages adafruit-circuitpython-neopixel

Step 5: Clone Beeboard Server

# Clone the LED server repository
git clone https://github.com/beeboard/led-server.git ~/beeboard

# Navigate to the server directory
cd ~/beeboard

Step 6: Configure the Server

Edit the configuration file:

nano ~/beeboard/config.py

Set your LED count and GPIO pin:

LED_COUNT = 200      # Number of LEDs in your strip
LED_PIN = 18         # GPIO pin (18 uses PWM)
LED_BRIGHTNESS = 255 # 0-255

Step 7: Test the Server

# Run the server manually to test
sudo python3 ~/beeboard/beeboard_server.py

You should see output indicating the server is running on port 5000.

Test from your computer:

curl http://192.168.68.101:5000/health
# Should return: {"status": "ok"}

Step 8: Set Up Auto-Start

Create a systemd service so the server starts automatically:

sudo nano /etc/systemd/system/beeboard.service

Add this content:

[Unit]
Description=Beeboard LED Server
After=network.target

[Service]
Type=simple
User=root
WorkingDirectory=/home/pi/beeboard
ExecStart=/usr/bin/python3 /home/pi/beeboard/beeboard_server.py
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target

Enable and start the service:

sudo systemctl daemon-reload
sudo systemctl enable beeboard.service
sudo systemctl start beeboard.service

# Check status
sudo systemctl status beeboard.service

Step 9: Connect in Beeboard App

  1. Open Beeboard app
  2. Go to your Wall Settings
  3. Enter the LED Server URL: http://192.168.68.101:5000
  4. Test the connection

Troubleshooting

LEDs Don’t Light Up

  • Check power supply connections
  • Verify GPIO pin matches config
  • Run sudo python3 -c "import board; print(board.D18)" to test GPIO

Server Won’t Start

  • Check if port 5000 is in use: sudo lsof -i :5000
  • View logs: journalctl -u beeboard.service -f

Permission Errors

  • The server must run as root for GPIO access
  • Check service file has User=root

Next Steps