Android app that displays the live video feed from a RubyFPV ground station over USB-C tethering.
Plug your phone into the Ruby ground station, enable USB tethering, and see exactly what the pilot sees.
- Phone connects to Ruby ground station via USB cable
- USB tethering is enabled on the phone (creates a network link)
- Ruby detects the phone and sends raw H.264 video over UDP port 5001
- The app decodes and displays the video in fullscreen with minimal latency
- Hardware H.264 decoding via Android MediaCodec
- Fullscreen landscape display
- Auto-recovery on stream loss (3-second watchdog)
- Stream stats overlay (tap screen to toggle): bitrate, packet rate, NAL rate
- Minimal latency — designed for FPV use
- Android 7.0+ (API 24)
- USB data cable (not charge-only)
- RubyFPV ground station with USB video forwarding enabled
- Go to Controller > Video Forward in the Ruby menu
- Enable Video Forward To USB Device
- Set type to Raw (H264)
- Port: 5001 (default)
Download the latest APK from GitHub Actions (build artifacts) or build from source.
git clone https://github.com/wkumik/RubyFPV-Android-Viewer.git
cd RubyFPV-Android-Viewer
./gradlew assembleDebug
APK will be at app/build/outputs/apk/debug/app-debug.apk
You can test the app using ffmpeg from a PC while the phone is USB-tethered to the PC:
ffmpeg -f lavfi -i testsrc=size=1280x720:rate=30 \
-pix_fmt yuv420p -c:v libx264 -profile:v baseline \
-tune zerolatency -g 30 -bsf:v dump_extra \
-f h264 udp://<phone_ip>:5001?pkt_size=1024
See ROADMAP.md for planned features including:
- Ruby OSD overlay (V2)
- H.265 support (V3)
- Screen recording / DVR (V4)
- RubyFPV by Petru Soroaga
- Video decoding architecture inspired by OpenIPC Decoder (MIT License)
- NAL parsing based on Consti10/myMediaCodecPlayer-for-FPV
MIT — see LICENSE