Booil Jung

OpenWRT 기반 UAV 통신 시스템의 심층 분석 및 구축 방법론

OpenWRT는 2004년, Linksys사의 WRT54G 유무선 공유기 펌웨어를 커스터마이징하기 위한 작은 프로젝트에서 시작되었다.1 당시 제조사들은 GPL 라이선스를 따르는 리눅스 커널을 사용하면서도, 수정한 소스코드를 공개하지 않는 경우가 많았다. 이에 개발자들이 직접 펌웨어를 분석하고 수정하면서, OpenWRT는 특정 장비의 한계를 넘어 수많은 임베디드 장치를 지원하는 완전한 형태의 리눅스 배포판으로 진화하였다.

OpenWRT의 핵심 철학은 제조사가 제공하는 제한된 기능의 ‘블랙박스’에서 탈피하여, 사용자에게 시스템에 대한 완전하고 세밀한 제어권을 부여하는 것이다.1 이는 단순한 펌웨어 교체를 넘어, 평범한 가정용 공유기를 강력한 방화벽, VPN 서버, 미디어 스트리머, 또는 IoT 게이트웨이와 같은 다목적 네트워크 서버로 변모시킬 수 있는 무한한 가능성을 열어준다.1

이러한 철학은 무인 항공기(Unmanned Aerial Vehicle, UAV), 즉 드론 시스템에 적용될 때 그 가치가 극대화된다. 현대의 고성능 드론에 탑재되는 컴패니언 컴퓨터(Companion Computer)는 본질적으로 CPU, RAM, 저장 공간이 제한된 고성능 임베디드 시스템이라는 점에서 OpenWRT의 이상적인 적용 대상이다.3 OpenWRT의 경량 설계, 모듈식 아키텍처, 그리고 타의 추종을 불허하는 강력한 네트워크 기능은 비행 제어기(Flight Controller, FC)의 핵심 기능인 비행 안정성을 해치지 않으면서, 통신, 데이터 처리, 원격 제어 등 드론의 지능을 한 차원 높이는 데 최적화된 운영 환경을 제공한다.1

OpenWRT의 강력함은 단순히 기능이 많은 것에서 비롯되지 않는다. 그 힘의 원천은 제한된 자원 환경에서 최대의 성능과 유연성을 발휘하도록 세심하게 설계된 기술 아키텍처에 있다.

데스크톱 리눅스 배포판이 systemd, dbus, glibc와 같이 강력하지만 상대적으로 무거운 라이브러리 스택에 의존하는 것과 대조적으로, OpenWRT는 procd, ubus, libubox라는 자체적인 경량화된 대안을 채택했다.5 이는 단순한 기술적 취향의 차이를 넘어, ‘제한된 자원 내에서 최대의 네트워크 성능과 유연성을 달성한다’는 OpenWRT의 근본적인 설계 철학을 명확히 보여준다. 예를 들어, dbus의 C 언어 API는 사용법이 복잡하고 많은 상용구 코드(boilerplate code)를 요구하는 것으로 알려져 있지만, ubus는 C 코드뿐만 아니라 일반 셸 스크립트에서도 매우 쉽게 접근하고 사용할 수 있도록 설계되었다.5 이러한 설계 철학은 OpenWRT가 단순한 ‘공유기 운영체제’가 아니라, IoT 게이트웨이나 드론 컴패니언 컴퓨터와 같은 ‘네트워크 엣지 컴퓨팅 플랫폼’으로서 최적화되었음을 증명한다. 이는 일부 데스크톱 수준의 편의 기능을 포기하는 대신, 네트워크 처리라는 핵심 임무에 대한 안정성, 성능, 그리고 확장성을 극대화하는 전략적 트레이드오프의 성공적인 결과물이라 할 수 있다.

OpenWRT는 제조사가 제공하는 기본 펌웨어와 비교할 때 명확한 장점과 함께 고려해야 할 한계점을 가지고 있다.

장점:

한계:

드론의 두뇌 역할을 하는 비행 제어기(Flight Controller, FC)는 자이로스코프, 가속도계 등 각종 센서 데이터를 수신하여 기체의 자세를 안정적으로 유지하고, 조종사의 명령이나 자율 비행 경로에 따라 모터를 제어하는 핵심적인 임무에 모든 연산 능력을 집중하도록 설계되었다.7 이 때문에 FC는 고화질 영상 처리, 복잡한 인공지능 연산, 또는 다중 네트워크 인터페이스를 통한 통신과 같은 고수준 작업을 수행하기에는 부적합하다.8

바로 이 지점에서 컴패니언 컴퓨터(Companion Computer, CC)의 필요성이 대두된다. CC는 FC와 나란히 기체에 탑재되어, FC와는 독립적으로 고도의 연산 및 통신 작업을 전담하는 보조 컴퓨터다.8 CC는 일반적으로 FC와 시리얼(UART) 포트를 통해 연결되며, MAVLink(Micro Air Vehicle Link)라는 표준 프로토콜을 사용하여 통신한다.8 CC는 FC로부터 GPS 위치, 기체 자세, 배터리 상태, 센서 값 등 모든 종류의 텔레메트리 데이터를 실시간으로 수신하며 9, 이 데이터를 기반으로 다음과 같은 지능적인 작업을 수행한다:

이러한 CC의 운영체제로서 OpenWRT는 최적의 선택지다. OpenWRT는 CC 위에서 동작하며, 앞서 언급된 복잡한 네트워크 라우팅, 보안 VPN 연결, 다중 데이터 스트리밍과 같은 작업을 안정적이고 효율적으로 처리하는 강력한 기반을 제공한다.12 즉, FC가 ‘안정적인 비행’을 책임진다면, OpenWRT가 탑재된 CC는 ‘지능적인 통신과 연산’을 책임지며 드론 시스템의 전체 능력을 극대화하는 것이다.

드론 펌웨어의 양대 산맥인 ArduPilot과 PX4는 모두 MAVLink 프로토콜을 사용하여 CC와 통신한다는 공통점을 가지지만, CC를 활용하는 방식과 생태계의 철학에서 미묘한 차이를 보인다.

ArduPilot과 PX4의 CC 연동 방식에 대한 접근법 차이는 두 프로젝트가 지향하는 철학의 차이를 반영한다. ArduPilot은 DroneKit-Python 11 등을 통해 개발자들이 빠르고 쉽게 아이디어를 구현할 수 있도록 하는 ‘유연성’과 ‘개발자 친화성’을 우선시한다. 이는 풍부한 커뮤니티 기반의 예제와 프로젝트로 이어져 생태계를 더욱 활성화시킨다.11 반면, PX4는

MAV_1_CONFIG 파라미터 설정, Baudrate 권장, 전압 레벨 주의사항 등 ‘명확하고 안정적인’ 시스템 통합 가이드를 제공하는 데 중점을 둔다.10 이는 PX4가 산업용 및 상업용 애플리케이션에서 요구되는 높은 수준의 신뢰성과 표준화를 지향하고 있음을 보여준다. 개발자는 자신의 프로젝트 목표가 빠른 프로토타이핑인지, 아니면 높은 신뢰성을 갖춘 시스템 통합인지에 따라 적합한 생태계를 선택해야 한다. 중요한 점은, OpenWRT가 이러한 두 가지 상이한 접근 방식을 모두 수용하고 지원할 수 있는 중립적이고 강력한 네트워크 운영 플랫폼으로서 기능한다는 것이다.

OpenWRT를 활용하면 드론 내외부의 네트워크를 체계적으로 설계하고 관리할 수 있다.

UAV 시스템에 OpenWRT를 도입하기 위한 첫 단계는 목적에 맞는 하드웨어를 선정하고 기본 설정을 완료하는 것이다.

다음은 UAV 환경에 적용 가능한 OpenWRT 지원 하드웨어의 비교표이다.

모델명 CPU RAM / Flash 이더넷 포트 USB Wi-Fi 시리얼 크기/무게 주요 특징 관련 자료
CBUnmanned UAV Router MediaTek MT7628 128MB / 32MB 5 (4+1) 1 x USB 2.0 2.4GHz 802.11n 2 30.5mm 표준 UAV 전용 설계, JST-GH 커넥터, 경량 12
Raspberry Pi 4/CM4 Broadcom BCM2711 1/2/4/8GB / - 1 (Onboard) 2x USB 3.0, 2x USB 2.0 2.4/5GHz 802.11ac UART 다양함 높은 성능, 다양한 베이스보드, GPIO 확장성 3
TP-Link TL-WR902AC Qualcomm QCA9531 64MB / 8MB 1 1 x USB 2.0 2.4/5GHz 802.11ac - 소형/경량 휴대성, 저렴한 가격, 듀얼밴드 지원 4
Alfa Tube 2H Atheros AR9331 32MB / 8MB 1 - 2.4GHz 802.11n - 원통형 고출력(최대 27dBm), 외장 안테나, PoE 지원 4
Banana Pi BPI-R3 MediaTek MT7986 2GB / 8GB eMMC 5 (2x 2.5GbE) 1 x USB 3.0 2.4/5GHz Wi-Fi 6 UART 상대적으로 큼 Docker 지원, 고성능, 2.5GbE, M.2 슬롯 22

FC에서 생성되는 시리얼(UART) 기반의 MAVLink 텔레메트리 데이터를 IP 네트워크(TCP 또는 UDP)로 변환하는 것은 OpenWRT 기반 통신 시스템의 가장 기본적이면서도 중요한 단계다. 이를 ‘IP 브릿징’이라 하며, 이를 통해 OpenWRT에 유선 또는 무선으로 연결된 모든 장치(컴패니언 컴퓨터, GCS, IP 카메라 등)가 FC의 데이터에 접근할 수 있게 된다. 주요 방법은 두 가지다.

ser2netMAVProxy의 선택은 기술적 선호를 넘어 아키텍처 설계 철학의 문제와 직결된다. ser2net 23을 사용하는 것은 OpenWRT 라우터를 FC의 시리얼 포트를 네트워크 포트로 ‘투명하게’ 확장해주는 ‘무선 시리얼 어댑터’나 ‘터미널 서버’로 활용하는 개념에 가깝다. 이는 가장 단순하고 효율적인 방법이다. 반면, MAVProxy 26를 사용하면 OpenWRT 라우터는 MAVLink 네트워크의 ‘지능형 허브(Intelligent Hub)’로 격상된다. FC에서 들어온 단일 데이터 스트림을 기체 내부에 있는 IP 카메라 제어 스크립트, LTE를 통해 연결된 원격 GCS, 그리고 클라우드 기반의 비행 데이터 분석 시스템 등 여러 목적지로 동시에, 그리고 선택적으로 분배하고 라우팅할 수 있다. 예를 들어, 대역폭이 제한적인 LTE 링크로는 필수적인 저속 텔레메트리만 전송하고, 근거리의 고속 Wi-Fi 링크로는 모든 데이터를 전송하는 식의 차등적 라우팅 정책을 구현할 수 있다. 따라서 프로젝트의 요구사항이 복잡해지고 확장성이 중요해질수록, MAVProxy의 아키텍처적 가치는 기하급수적으로 증가한다.

드론의 운용 반경을 시야 밖(Beyond Visual Line of Sight, BVLOS)으로 확장하기 위해서는 LTE나 5G와 같은 이동통신망 연동이 필수적이다. OpenWRT는 이를 위한 강력한 기능을 제공한다.

LTE/5G 망을 사용하더라도 CG-NAT 환경 때문에 외부에서 드론으로 직접 접속하는 것은 여전히 어렵다. VPN은 이 문제를 해결하고 안전한 통신 채널을 확보하는 가장 효과적인 방법이다.

드론의 눈 역할을 하는 실시간 영상 스트리밍은 가장 많은 대역폭을 요구하는 기능이다. OpenWRT와 GStreamer를 활용하면 고품질, 저지연 영상 시스템을 구축할 수 있다.

다음은 UAV 영상 스트리밍에 적용 가능한 주요 기술 방식을 비교한 표이다.

방식 프로토콜 주요 소프트웨어/플러그인 장점 단점 최적 사용 사례 관련 자료
GStreamer (RTP/UDP) RTP/UDP GStreamer (rtph264pay, udpsink) 압도적인 저지연, 높은 유연성, 세밀한 파이프라인 제어 가능 파이프라인 설계가 복잡하고 전문 지식 요구, 1:1 P2P에 적합 저지연 FPV, 실시간 원격 조종, 로봇 비전 38
Nginx-RTMP (RTMP/HLS) RTMP, HLS Nginx + nginx-rtmp-module 웹 브라우저 호환성 우수, Twitch 등 표준 스트리밍 플랫폼과 동일한 기술 GStreamer 대비 지연 시간 김(HLS는 수 초 이상), 서버 설정 필요 1:N 방송, 인터넷을 통한 대중 공개 스트리밍 22
WebRTC WebRTC go2rtc, Janus, Kurento 브라우저 네이티브 지원(플러그인 불필요), P2P 홀 펀칭으로 NAT/방화벽 우회 용이 미디어 서버 설정이 복잡할 수 있음, 브라우저 간 호환성 이슈 존재 웹 기반 GCS, 양방향 통신이 필요한 원격 제어 48

드론 기체에 OpenWRT 기반의 통신 시스템이 구축되었다면, 지상의 조종기, 즉 GCS(Ground Control Station)가 이 네트워크에 접속하여 텔레메트리를 수신하고 영상을 확인할 수 있도록 설정해야 한다.

전통적인 RC 송신기 대신, GCS에 연결된 USB 조이스틱이나 게임패드를 사용하여 드론을 직접 조종할 수 있다. 이는 고대역폭의 안정적인 텔레메트리 링크가 확보되었을 때 가능한 강력한 기능이다.

QGroundControl과 같은 GCS에는 MAVLink 데이터를 다른 네트워크 주소로 전달해주는 ‘MAVLink Forwarding’ 기능이 내장되어 있다. 이는 이론적으로 하나의 GCS가 받은 텔레메트리를 다른 GCS나 애플리케이션으로 손쉽게 공유할 수 있게 해줄 것으로 기대된다. 그러나 실제 사용자들의 경험에 따르면, 이 기능은 종종 단방향(one-way)으로만 동작하여 드론에서 GCS로의 데이터는 전달되지만, GCS에서 드론으로 보내는 조종 명령이나 파라미터 요청과 같은 응답 패킷은 전달되지 않는 문제가 빈번하게 발생한다.57 이는 QGC의 포워딩 기능이 완전한 양방향 브릿지가 아니기 때문에 발생하는 근본적인 한계다.

이 문제에 대한 보다 전문적이고 안정적인 해결책은 mavlink-router 26나 MAVProxy 26와 같은 MAVLink 라우팅 전용 소프트웨어를 사용하는 것이다. 드론 기체 또는 별도의 게이트웨이 장비에 설치된 OpenWRT 라우터를 이러한 전문 MAVLink 라우터로 구성하면, 여러 GCS(예: 조종사용, 임무 관제사용, 개발자 디버깅용)가 하나의 드론에 안정적으로 동시 접속하고 양방향 통신을 수행하는 ‘다중 제어(Multi-GCS)’ 아키텍처를 구현할 수 있다. 이는 GCS의 단순 포워딩 기능이 가진 한계를 극복하고, 진정한 의미의 네트워크 기반 분산 드론 제어 시스템으로 나아가는 핵심적인 단계라 할 수 있다.

지금까지 논의된 OpenWRT의 다양한 기능들을 조합하여, 특정 임무 목적에 최적화된 세 가지 종합 아키텍처를 제안한다.

OpenWRT는 더 이상 단순한 공유기 커스텀 펌웨어가 아니다. 본 보고서에서 심층적으로 분석한 바와 같이, OpenWRT는 UAV 시스템의 통신, 제어, 그리고 연산 능력을 기존의 한계에서 벗어나 극적으로 확장할 수 있는 강력하고 성숙한 임베디드 리눅스 플랫폼이다. OpenWRT가 제공하는 모듈성, 경량 설계, 그리고 강력한 네트워킹 기능들은 LTE/5G를 통한 BVLOS 통신, WireGuard를 이용한 종단 간 암호화, GStreamer를 활용한 고화질 저지연 영상 스트리밍, 그리고 메시 네트워킹 기반의 드론 스웜 구축 등, 표준 드론 시스템으로는 구현하기 어렵거나 불가능했던 고급 기능들을 현실로 만들어준다. 이는 드론을 단순히 하늘을 나는 ‘비행체’에서, 인터넷에 연결되어 데이터를 생성하고 처리하는 ‘지능형 네트워크 엣지 노드(Intelligent Network Edge Node)’로 변모시키는 핵심적인 기술이라 결론지을 수 있다.

향후 연구는 OpenWRT의 이러한 강력한 기반 위에서 더욱 발전된 기술을 접목하는 방향으로 나아가야 할 것이다. 첫째, OpenWRT 기반 컴패니언 컴퓨터에 Docker나 기타 컨테이너 기술을 활용하여 AI/ML 모델을 손쉽게 배포하고, 비행 중에 수집되는 데이터를 실시간으로 처리하는 ‘엣지 AI’ 분야로의 확장이 기대된다.22 둘째, 본격적으로 상용화될 5G 이동통신망의 초저지연(URLLC) 및 초연결(mMTC) 특성을 OpenWRT 기반 드론 통신 시스템에 접목하여, 원격 수술이나 정밀 제어와 같은 미션 크리티컬한 임무의 신뢰성과 성능을 한 단계 더 끌어올리는 연구가 필요하다. OpenWRT의 검증된 안정성과 무한한 유연성은 이러한 미래 기술들을 실제 드론 시스템에 통합하고 검증하는 데 가장 이상적인 테스트베드를 제공할 것이다.

  1. OpenWrt: 임베디드 디바이스용 리눅스 배포판 활용 - 재능넷, accessed August 11, 2025, https://www.jaenung.net/tree/1188
  2. OpenWrt - 위키백과, 우리 모두의 백과사전, accessed August 11, 2025, https://ko.wikipedia.org/wiki/OpenWrt
  3. OpenWrt - 나무위키, accessed August 11, 2025, https://namu.wiki/w/OpenWrt
  4. (PDF) “Design of a Communication Architecture for Unmanned Aerial Vehicle (UAV) Swarm Networks” - ResearchGate, accessed August 11, 2025, https://www.researchgate.net/publication/335107014_Design_of_a_Communication_Architecture_for_Unmanned_Aerial_Vehicle_UAV_Swarm_Networks
  5. operating system architecture - OpenWRT, accessed August 11, 2025, https://openwrt.org/docs/techref/architecture
  6. [OpenWrt Wiki] Documentation, accessed August 11, 2025, https://openwrt.org/docs/start
  7. Simple Overview of ArduPilot Operation - Copter documentation, accessed August 11, 2025, https://ardupilot.org/copter/docs/common-basic-operation.html
  8. Companion Computers - Copter documentation - ArduPilot, accessed August 11, 2025, https://ardupilot.org/copter/docs/common-companion-computers.html
  9. Companion Computers - Dev documentation - ArduPilot, accessed August 11, 2025, https://ardupilot.org/dev/docs/companion-computers.html
  10. Companion Computer for Pixhawk Series PX4 User Guide (v1.12), accessed August 11, 2025, https://docs.px4.io/v1.12/en/companion_computer/pixhawk_companion.html
  11. Understanding Architecture with Companion Computer and Dronekit …, accessed August 11, 2025, https://discuss.ardupilot.org/t/understanding-architecture-with-companion-computer-and-dronekit-python/54192
  12. OpenWRT for UAVs! : r/openwrt - Reddit, accessed August 11, 2025, https://www.reddit.com/r/openwrt/comments/1e7ikuk/openwrt_for_uavs/
  13. Companion Computer / GitBook - ArduSub, accessed August 11, 2025, https://www.ardusub.com/introduction/hardware-options/required-hardware/companion-computer.html
  14. OpenWRT UAV Router - About CBUnmanned Wiki, accessed August 11, 2025, https://wiki.cbunmanned.com/wiki/products/openwrt-uav-router
  15. Companion Computers - DroneKit Python 2.4.0 documentation, accessed August 11, 2025, https://dronekit-python.readthedocs.io/en/latest/develop/companion-computers.html
  16. Welcome to the ArduPilot Development Site - Dev documentation, accessed August 11, 2025, https://ardupilot.org/dev/
  17. Companion Computers for Sub - Sub documentation - ArduPilot, accessed August 11, 2025, https://ardupilot.org/sub/docs/sub-companions-computers.html
  18. Using a Companion Computer with Pixhawk Controllers PX4 Guide (main), accessed August 11, 2025, https://docs.px4.io/main/en/companion_computer/pixhawk_companion
  19. [OpenWrt Wiki] Network Components, accessed August 11, 2025, https://openwrt.org/docs/guide-user/network/architecture/components
  20. CGNAT을 해결하고 OpenWRT 라우터와 ZeroTier를 사용해서 홈 …, accessed August 11, 2025, https://www.reddit.com/r/openwrt/comments/i8ejuu/guide_to_get_over_cgnat_and_ssh_into_home_router/?tl=ko
  21. Mesh networking: A guide to using free and open-source software with common hardware, accessed August 11, 2025, https://cgomesu.com/blog/Mesh-networking-openwrt-batman/
  22. Streaming RTMP with OpenWRT - Jared.geek.nz, accessed August 11, 2025, https://jared.geek.nz/2023/11/streaming-rtmp-with-openwrt/
  23. Mavlink Through Serial - About CBUnmanned Wiki, accessed August 11, 2025, https://wiki.cbunmanned.com/wiki/products/openwrt-uav-router/mavlink-through-serial
  24. Using ser2net to remotely access a serial terminal or port - Tutorials - Mender Hub, accessed August 11, 2025, https://hub.mender.io/t/using-ser2net-to-remotely-access-a-serial-terminal-or-port/7807
  25. Yet another Ser2Net tutorial - Wifizoo, accessed August 11, 2025, https://wifizoo.org/2023/05/12/yet-another-ser2net-tutorial/
  26. MAVLink routing with a Router software - Blog - ArduPilot Discourse, accessed August 11, 2025, https://discuss.ardupilot.org/t/mavlink-routing-with-a-router-software/82138
  27. Download and Installation - MAVProxy documentation - ArduPilot, accessed August 11, 2025, https://ardupilot.org/mavproxy/docs/getting_started/download_and_installation.html
  28. Quickstart - MAVProxy documentation - ArduPilot, accessed August 11, 2025, https://ardupilot.org/mavproxy/docs/getting_started/quickstart.html
  29. MAVProxy documentation - ArduPilot, accessed August 11, 2025, https://ardupilot.org/mavproxy/
  30. [OpenWrt Wiki] How to use LTE modem in QMI mode for WAN connection, accessed August 11, 2025, https://openwrt.org/docs/guide-user/network/wan/wwan/ltedongle
  31. [OpenWrt Wiki] Bridge mode, accessed August 11, 2025, https://openwrt.org/docs/guide-user/network/wan/bridge-mode
  32. Using OpenWRT as an LTE half-bridge - Reddit, accessed August 11, 2025, https://www.reddit.com/r/openwrt/comments/1hirylw/using_openwrt_as_an_lte_halfbridge/
  33. openwrt.org, accessed August 11, 2025, https://openwrt.org/docs/guide-user/services/vpn/wireguard/basics
  34. WireGuard Setup guide for OpenWrt - IVPN, accessed August 11, 2025, https://www.ivpn.net/setup/router/openwrt-wireguard/
  35. OpenWRT WireGuard VPN Server Tutorial - Reddit, accessed August 11, 2025, https://www.reddit.com/r/openwrt/comments/bahhua/openwrt_wireguard_vpn_server_tutorial/
  36. OpenWRT WireGuard Simple Home VPN Tutorial - YouTube, accessed August 11, 2025, https://www.youtube.com/watch?v=BbDtc0AhGWU&pp=0gcJCfwAo7VqN5tD
  37. Wireguard OpenWRT Travel Router Tutorial - Script Tactics, accessed August 11, 2025, https://scripttactics.com/self-hosted/openwrt-travel-router-tut/
  38. GStreamer for video streaming - Blueye SDK, accessed August 11, 2025, https://blueye-robotics.github.io/blueye.sdk/v2.1/video/gstreamer-for-video-streaming/
  39. How to Stream Live Video From Your Drone with voxl-streamer ModalAI, Inc., accessed August 11, 2025, https://www.modalai.com/blogs/blog/how-to-stream-live-video-from-your-drone-with-voxl-streamer
  40. Video Streaming Drone Software Development - GitBook, accessed August 11, 2025, https://theiotlearninginitiative.gitbook.io/bitol/virtual-drone-solution/features/video-streaming
  41. Topic: Record and stream video webcam? - OpenWrt Forum Archive, accessed August 11, 2025, https://forum.archive.openwrt.org/viewtopic.php?id=64628
  42. Audio/Video over RTP With GStreamer (Linux) - Toradex Developer Center, accessed August 11, 2025, https://developer.toradex.com/linux-bsp/application-development/multimedia/audiovideo-over-rtp-with-gstreamer-linux/
  43. Low latency h264 rtp video using gstreamer - Raspberry Pi Forums, accessed August 11, 2025, https://forums.raspberrypi.com/viewtopic.php?t=349669
  44. Capturing h.264 stream from camera with Gstreamer - Stack Overflow, accessed August 11, 2025, https://stackoverflow.com/questions/15787967/capturing-h-264-stream-from-camera-with-gstreamer
  45. How to setup gstreamer on raspberry Pi and client for rtp with H264-capable webcam?, accessed August 11, 2025, https://stackoverflow.com/questions/40921983/how-to-setup-gstreamer-on-raspberry-pi-and-client-for-rtp-with-h264-capable-webc
  46. How to stream h264 video from web-cam to network? - Unix & Linux Stack Exchange, accessed August 11, 2025, https://unix.stackexchange.com/questions/57483/how-to-stream-h264-video-from-web-cam-to-network
  47. [Solved] Stream H264 over RTP using nvv4l2h264enc using Gstreamer (Getting corrupted frames) - Jetson Nano - NVIDIA Developer Forums, accessed August 11, 2025, https://forums.developer.nvidia.com/t/solved-stream-h264-over-rtp-using-nvv4l2h264enc-using-gstreamer-getting-corrupted-frames/159319
  48. AlexxIT/go2rtc: Ultimate camera streaming application with support RTSP, RTMP, HTTP-FLV, WebRTC, MSE, HLS, MP4, MJPEG, HomeKit, FFmpeg, etc. - GitHub, accessed August 11, 2025, https://github.com/AlexxIT/go2rtc
  49. Serial Interface Guide - Doodle Labs Technical Library, accessed August 11, 2025, https://techlibrary.doodlelabs.com/serial-interface-guide
  50. gstreamer send and receive h264 rtp stream - GitHub Gist, accessed August 11, 2025, https://gist.github.com/esrever10/7d39fe2d4163c5b2d7006495c3c911bb
  51. Joystick Setup QGC Guide (master) - QGroundControl Guide, accessed August 11, 2025, https://docs.qgroundcontrol.com/master/en/qgc-user-guide/setup_view/joystick.html
  52. How do I use MAVLink Endpoints to get gamepad data? - Blue Robotics Community Forums, accessed August 11, 2025, https://discuss.bluerobotics.com/t/how-do-i-use-mavlink-endpoints-to-get-gamepad-data/16671
  53. Joystick/Gamepad - Copter documentation - ArduPilot, accessed August 11, 2025, https://ardupilot.org/copter/docs/common-joystick.html
  54. QGC does not send required joystick state (physical or virtual) for arming / Issue #11709 / mavlink/qgroundcontrol - GitHub, accessed August 11, 2025, https://github.com/mavlink/qgroundcontrol/issues/11709
  55. Joystick Input - MAVProxy documentation - ArduPilot, accessed August 11, 2025, https://ardupilot.org/mavproxy/docs/modules/joystick.html
  56. MAVProxy/docs/JOYSTICKS.md at master - GitHub, accessed August 11, 2025, https://github.com/ArduPilot/MAVProxy/blob/master/docs/JOYSTICKS.md
  57. MAVLink Forwarding - PX4 Discussion Forum, accessed August 11, 2025, https://discuss.px4.io/t/mavlink-forwarding/32443
  58. mavlink forwarding is one-way / Issue #10682 - GitHub, accessed August 11, 2025, https://github.com/mavlink/qgroundcontrol/issues/10682