PoE Control
5 minute read
The Interceptor PoE Board is managed through the /proc/pse interface, which provides
control over individual PoE ports.
The /proc/pse interface requires exaviz OS image dated:
- 2025-05-01 or newer for Raspberry Pi CM4/CM5
- 2025-04-30 or newer for Banana Pi CM4
The /proc/pse Interface
The PoE ports are controlled via a simple text-based interface at /proc/pse.
Checking Port Status
cat /proc/pse
Example output:
Board 0:
Port 0: power on (15.2W)
Port 1: disabled
Port 2: power on (8.7W)
Port 3: searching
Port 4: disabled
Port 5: power on (12.1W)
Port 6: searching
Port 7: disabled
Port Status Values
| Status | Meaning |
|---|---|
power on | Device detected and receiving power |
searching | Port enabled, looking for PoE device |
disabled | Port administratively disabled |
fault | Error condition (overcurrent, short, etc.) |
backoff | Temporary backoff after detection failure |
Controlling Ports
Enable a Port
echo "enable-port <board> <port>" > /proc/pse
Examples:
# Enable port 0 on board 0
echo "enable-port 0 0" > /proc/pse
# Enable port 5 on board 0
echo "enable-port 0 5" > /proc/pse
# Enable port 2 on board 1 (second PoE board)
echo "enable-port 1 2" > /proc/pse
Disable a Port
echo "disable-port <board> <port>" > /proc/pse
Examples:
# Disable port 3 on board 0
echo "disable-port 0 3" > /proc/pse
# Disable port 7 on board 1
echo "disable-port 1 7" > /proc/pse
Reset a Port
Power-cycle a port (disable then re-enable):
echo "reset-port <board> <port>" > /proc/pse
Example:
# Reset port 2 on board 0
echo "reset-port 0 2" > /proc/pse
Set PoE Mode (AF vs AT)
By default, ports are configured for 802.3at (PoE+, 30W). To limit a port to 802.3af (15W), use:
echo "set-af-mode <board> <port>" > /proc/pse
Example:
# Set port 2 on board 0 to AF mode (15W max)
echo "set-af-mode 0 2" > /proc/pse
| Mode | Standard | Max Power |
|---|---|---|
| AT (default) | 802.3at (PoE+) | 30W |
| AF | 802.3af (PoE) | 15W |
Board and Port Numbering
Single PoE Board Configuration
| Carrier Connector | Board Number | Ports |
|---|---|---|
| J9 | 0 | 0-7 |
Dual PoE Board Configuration
| Carrier Connector | Board Number | Ports |
|---|---|---|
| J9 | 0 | 0-7 |
| J10 | 1 | 0-7 |
Port numbers are 0-7 for each board. With dual boards, board 0 ports are sometimes referred to as “ports 0-7” and board 1 ports as “ports 8-15” in user interfaces.
Common Operations
Enable All Ports on Board 0
for port in 0 1 2 3 4 5 6 7; do
echo "enable-port 0 $port" > /proc/pse
done
Disable All Ports on Board 0
for port in 0 1 2 3 4 5 6 7; do
echo "disable-port 0 $port" > /proc/pse
done
Check Power Consumption
cat /proc/pse | grep "power on"
Monitor Status in Real-Time
watch -n 1 'cat /proc/pse'
Important Notes
ip link vs /proc/pse
The ip link set command controls the network interface, not the PoE power.
# This controls the network link, NOT the PoE power
ip link set poe0 up # ❌ Does not enable PoE power
ip link set poe0 down # ❌ Does not disable PoE power
# Use /proc/pse to control PoE power
echo "enable-port 0 0" > /proc/pse # ✅ Enables PoE power
echo "disable-port 0 0" > /proc/pse # ✅ Disables PoE power
Power Budget Management
The system does not automatically manage power budget. If you enable more ports than your PSU can handle, you may experience:
- Voltage drops
- Port resets
- System instability
Calculate your power budget before enabling ports:
| Devices | Typical Power | Max Power |
|---|---|---|
| IP Camera (basic) | 5-8W | 12W |
| IP Camera (PTZ) | 15-25W | 30W |
| WiFi AP | 8-12W | 15W |
| VoIP Phone | 3-6W | 10W |
Fault Recovery
If a port enters fault status:
- Check for short circuits or damaged cables
- Verify the connected device is PoE-compatible
- Reset the port:
echo "reset-port 0 <port>" > /proc/pse
Scripting Examples
Startup Script to Enable Specific Ports
Create /usr/local/bin/poe-init.sh:
#!/bin/bash
# Enable PoE ports on boot
# Ports to enable on board 0
ENABLED_PORTS="0 1 2 5"
for port in $ENABLED_PORTS; do
echo "enable-port 0 $port" > /proc/pse
sleep 0.5
done
echo "PoE ports initialized"
Make executable and add to startup:
chmod +x /usr/local/bin/poe-init.sh
# Add to /etc/rc.local or create a systemd service
Port Status Check Script
#!/bin/bash
# Check PoE port status
echo "=== PoE Port Status ==="
cat /proc/pse
echo ""
echo "=== Active Ports ==="
cat /proc/pse | grep "power on" | wc -l
echo "ports delivering power"
echo ""
echo "=== Total Power ==="
cat /proc/pse | grep -oP '\d+\.\d+W' | awk '{sum += $1} END {print sum "W total"}'
Troubleshooting
“Permission denied” Error
You need root privileges to write to /proc/pse:
sudo echo "enable-port 0 0" > /proc/pse # ❌ Won't work
# Use this instead:
echo "enable-port 0 0" | sudo tee /proc/pse
# Or run as root:
sudo -i
echo "enable-port 0 0" > /proc/pse
Port Won’t Enable
- Check if
/proc/pseexists (OS version requirement) - Verify board is connected (FFC cable)
- Check 48V power is connected
- Look for error messages in
dmesg:dmesg | grep -i poe
Device Not Receiving Power
- Verify port shows “power on” in
/proc/pse - Check device is PoE-capable
- Try a different cable
- Try a different port
- Check total power budget
API Reference
Commands
| Command | Syntax | Description |
|---|---|---|
| Enable | enable-port <board> <port> | Enable PoE on specified port |
| Disable | disable-port <board> <port> | Disable PoE on specified port |
| Reset | reset-port <board> <port> | Power-cycle specified port |
| Set AF Mode | set-af-mode <board> <port> | Limit port to 15W (802.3af) |
Parameters
| Parameter | Range | Description |
|---|---|---|
<board> | 0-1 | PoE board number |
<port> | 0-7 | Port number on board |
Note for Cruiser Board Users
If you are using the Cruiser Carrier Board (a different exaviz product), the
ip link set command does control PoE power. This behavior is specific to the
Cruiser and does not apply to the Interceptor PoE Boards described here.
Last modified December 30, 2025