AMLDigitalFPV is an Amlogic-based ground FPV receiver for the OpenIPC ecosystem. It targets cheap consumer Amlogic boxes (e.g., S905L3A/S905X2) with strong hardware decode. The design borrows ideas from CoreELEC, moonlight-embedded, and pixelpilot_rk.
- Video: GStreamer + libamcodec
- Optional audio: RTP (payload 98, Opus) straight to ALSA, no A/V sync for lowest latency.
- CoreELEC toolchain (
armv8a-libreelec-linux-gnueabihf-) and sysroot (toolchain/armv8a-libreelec-linux-gnueabihf/sysroot). - GStreamer, glib, spdlog, fmt (or bundled via spdlog), libamcodec present in sysroot.
cmake -B build -S . \
-DCMAKE_SYSROOT=${SYSROOT_PREFIX} \
-DCMAKE_C_COMPILER=${CC} \
-DCMAKE_CXX_COMPILER=${CXX}
cmake --build build -j$(nproc)
# optional install:
cmake --install build --prefix=/tmp/stagemake # builds AMLDigitalFPV
make clean # removes build/ and binaryEdit CMakeLists.txt or Makefile to tweak sources/flags. Outputs live in build/, final binary AMLDigitalFPV in repo root.
src/: main.cpp, gstrtpreceiver.cpp, aml.c, util.c, etc.CMakeLists.txt/Makefile: build scripts.systemd/: amldigitalfpv.service unit.
AMLDigitalFPV accepts several CLI flags:
| Flag | Default | Description |
|---|---|---|
-w <width> |
1920 |
Expected video width used when calling aml_setup and when tagging recorded files. |
-h <height> |
1080 |
Expected video height. |
-p <fps> |
120 |
Expected frame rate (also controls DVR timestamp increments). |
-s <path> |
(empty) | Override DVR output location: point to a directory to auto-increment files there, or specify a .mp4 file for a fixed target. Without this flag the recorder searches /var/media, /media, /run/media, then /storage. |
Recording remains off until a UDP command arrives on port 5612:
record=1– start writing MP4.record=0– stop and close the file.
Call enable_audio_stream(port, 98, "default") before start_receiving() to enable RTP audio (assumes Opus). Audio goes to alsasink without A/V sync to minimize latency.
- Update toolchain/sysroot paths if your CoreELEC tree moves.
- Missing libs? install into the CoreELEC sysroot.
- Service can be installed/enabled via package.mk with
enable_service amldigitalfpv.service.