esp32-s3-w5500-gopro-ble-livestream
A single PoE cable delivers power, control, and 1080p live video — automatically. Here's how we built a GoPro-to-Ethernet bridge with BLE, a Wi-Fi Soft-AP, and
One Cable. No Crew. Live.
A single PoE cable delivers power, control, and 1080p live video — automatically. Here's how we built a GoPro-to-Ethernet bridge with BLE, a Wi-Fi Soft-AP, and a hardware TCP/IP stack on an ESP32-S3.
The Problem
Using a GoPro as a live camera almost always means depending on a smartphone app — and the familiar pain that comes with it: battery drain, overheating, and a Wi-Fi connection that drops at the worst possible moment. Someone always has to stand nearby and babysit the setup.
HDMI capture cards solve the signal quality problem but trade it for a tangle of cables. Going fully wireless introduces radio interference. Neither approach is great for a multi-camera shoot, a sports venue, or anywhere you need hours of reliable, unattended operation.
What if you could treat a GoPro like a network camera — plug it into your LAN, and walk away?
https://www.hackster.io/abouhatab/diy-gopro-ble-remote-using-esp32-eec5ab

Three Design Principles
1. Keep the wireless hop short The ESP32-S3 opens a 2.4/5 GHz Soft-AP and the GoPro connects to it within one meter. Everything beyond that point travels over wired Ethernet. Eliminating the long wireless hop eliminates almost all the interference risk.
2. Offload TCP/IP to hardware A W5500 Ethernet controller handles the full TCP/IP stack in silicon. The ESP32 never touches RTMP packet processing directly, which is why it can run Wi-Fi and NAT simultaneously while staying under 50% CPU utilization.
3. No human required Power on the board and a 17-step BLE state machine takes over: discover the GoPro, pair over OpenGoPro GATT, set live-stream mode, and press the shutter — all without any input. If the camera reboots or the board resets, the whole sequence runs again automatically.
Architecture
The bridge collapses three separate signal paths — BLE control, Wi-Fi video reception, and Ethernet video delivery — onto a single board.
| 스마트폰 앱 방식 | BLE + Soft-AP + W5500 방식 |
|---|---|
| 앱·배터리 의존, 발열·지연 ↑ | 스마트폰 불필요, 전력·지연 ↓ |
| 무선 전파 혼선에 취약 | 무선 구간 1 m로 국한, 이후 유선 |
| HDMI 케이블·캡처카드 필요 | LAN 1 가닥(+PoE 전원)으로 해결 |
BLE — Control channel
The ESP32-S3 scans for the GoPro's OpenGoPro service (UUID 0xFEA6) and works through a state machine to power the camera on, configure live-stream mode, and trigger the shutter — without any user interaction.
Wi-Fi Soft-AP — Video intake
The board hosts its own 192.168.4.x access point. Because the GoPro is physically close, the RSSI stays strong and stable. No external router, no shared spectrum contention.
lwIP NAT — Transparent bridging
Packets arriving from the AP-side address space are re-mapped to the Ethernet interface's IP (e.g. 10.5.159.x) before heading out. The RTMP server on your LAN sees a clean, wired source — it never knows a Wi-Fi hop was involved.
W5500 — Wired output
Hardware-accelerated TCP/IP means lower RAM pressure, lower latency, and support for up to 100 m of LAN cable. Add a PoE injector and a single cable carries both power and video to wherever the camera needs to be.
Performance
| Metric | Value |
|---|---|
| RTMP end-to-end latency | < 350 ms @ 1080p 30fps |
| ESP32 CPU load | 48% (Wi-Fi + NAT running simultaneously) |
| Packet drops | 0 over a 1-hour continuous stream |
| Power draw | < 5 W via PoE |
Why Not Just Use a Smartphone?
| Smartphone App | This Bridge | |
|---|---|---|
| Extra device needed | Yes (dedicated phone) | No |
| Power | Battery drain, overheating | < 5 W via PoE |
| Wireless range | Long hop, interference-prone | 1 m hop, then wired |
| Cabling | HDMI capture card or dongle | Single LAN cable |
| Operation | Requires monitoring | Fully unattended |
Real-World Applications
- Church & lecture hall multicam — reliable all-day streams without a dedicated operator
- Stadium fence / goalpost cams — low-latency closeups over long cable runs
- Drone / RC pit-stop relay — safe-distance coverage with a hardwired output
- 360° VR multi-feed — multiple wired channels for OBS or vMix stitching
- Construction site & confined-space monitoring — 24-hour operation with PoE
What's Next
- W6300 upgrade — 64 KB buffers, IPv6, and 80+ Mbps throughput
- Official PoE HAT BOM release — full bill of materials for a clean single-cable install
- REST API + mDNS configuration tool — change settings without reflashing firmware
- Web UI — browser-based camera control for non-developers
How It Compares to Similar WIZnet Projects
Two other projects on maker.wiznet.io share the same core idea — using a W5500 to deliver camera video over wired Ethernet — but take meaningfully different approaches.
| GoPro Bridge (this project) | ESP32-Stick-Cam (simons) | ESP32-CAM_MJPEG2SD (lawrence) | |
|---|---|---|---|
| Camera source | Consumer GoPro (BLE-controlled) | OV camera module (on-board sensor) | OV2640 / OV5640 (on-board sensor) |
| Ethernet chip | W5500 (SPI) | W5500 (SPI) | W5500 (SPI, 40 MHz) |
| Streaming protocol | RTMP (H.264/AAC) | HTTP MJPEG | HTTP MJPEG + RTSP |
| Wireless role | BLE (control) + Wi-Fi Soft-AP (video intake) | Wi-Fi optional | Wi-Fi optional / Ethernet-only mode |
| Camera control | Fully automated via BLE (17-step state machine) | Manual / firmware | Web UI |
| PoE support | Yes (via injector) | Yes (Active + Passive PoE on custom PCB) | Yes (via PoE HAT) |
| Unattended operation | ✅ Power-on auto-start, auto-recovery | ⚠️ Requires initial setup | ⚠️ Requires initial setup |
| AI / Edge inference | ✗ | ✅ Edge Impulse (on-board CNN) | ✅ Edge Impulse (motion filter) |
| SD recording | ✗ | ✗ | ✅ MJPEG → AVI to SD card |
| Target latency | < 350 ms (RTMP end-to-end) | Not published | ≤ 4 ms (LAN, MJPEG) |
| Primary use case | Professional multicam live streaming | IP camera / PoE AI camera | Home CCTV / NVR |
Key takeaway: All three projects prove that a W5500 is the right chip for camera-over-Ethernet work — hardware TCP/IP offload keeps the ESP32 headroom free for whatever the application demands. The difference is in the camera source and the streaming goal. ESP32-Stick-Cam goes deep on hardware design with a custom PoE PCB and Edge Impulse inference on-board. ESP32-CAM_MJPEG2SD prioritizes recording reliability and a rich Web UI for CCTV use. This GoPro Bridge takes a different angle entirely: instead of capturing raw sensor data, it remote-controls a finished broadcast camera over BLE, then transparently routes its RTMP output onto a wired LAN — making it the right choice wherever a professional camera body and zero-crew operation matter more than on-board AI or local recording.


