A terminal-based DVB frontend monitor for Linux. It can be used as a more capable alternative to the basic
femontool from thedvb-appspackage, especially on systems with many DVB frontends.dsfemonis designed for quick operational overview of tuner state, signal quality, tuning parameters, and service information in multistream backend environments, including IPTV backends.
dsfemon is a fork and modernized continuation of the original Femon DVB frontend monitor developed by David Seidl in 2012.
It shows a compact live overview of DVB tuner state in a terminal UI and is intended for quickly checking frontend lock state, signal quality, DVB tuning parameters, and basic demux/service information from Linux DVB devices.
- scans Linux DVB frontend devices under
/dev/dvb - displays frontend type, name, and lock/status flags
- shows signal and CNR/SNR values with terminal bars
- reads modern DVBv5 properties when available
- keeps legacy DVB ioctl fallbacks for signal and SNR bars
- displays DVB delivery system, frequency, bandwidth, symbol rate, FEC, and modulation
- reads PAT/PMT/NIT/SDT demux information and shows network/service names
- supports paging when many frontends are present
- provides keyboard navigation and a scrollable demux service detail screen with service type, language, provider, PCR PID, CA, and PMT stream information
| Key | Action |
|---|---|
Up / Down |
select frontend detail row or service row |
PgUp / PgDn |
switch page or scroll detail page |
Enter |
open demux detail |
Esc |
return from detail view |
q |
quit |
- Linux with DVB device support
- C++ compiler with C++11-era system headers
makepkg-configlibncurses-dev/ncursesw- Linux DVB headers, usually provided by the system libc/kernel headers package
Debian/Ubuntu example:
sudo apt install build-essential pkg-config libncurses-devmake clean
makeThe resulting binary is:
./dsfemon
Start the monitor with the default broad adapter scan:
./dsfemonAdditional commands and useful arguments:
# Show command-line help
./dsfemon --help
# Show version
./dsfemon --version
# Scan only selected adapters
./dsfemon --adapters 0,2
# Limit the number of frontends scanned per adapter
./dsfemon --subadapters 1/
├── docs/
│ └── screenshots/
│ └── dsfemon-main.png # main application screenshot
├── dsfemon.cpp # main ncurses loop, paging, detail view, keyboard handling
├── command_line.* # command-line options
├── device_discovery.* # DVB device scanning and lifecycle
├── frontend_monitor.* # DVBv5 property collection
├── frontend_status_cache.* # background frontend status cache
├── frontend_status.* # frontend status snapshot collection
├── frontend_view.* # frontend/status rendering
├── demux_reader.cpp # background PAT/PMT/NIT/SDT section reader
├── demux_snapshot.cpp # stable demux data copied for UI rendering
├── demux_view.* # demux/service summary rendering
├── si_parser.cpp # PSI/SI parser helpers
├── *_table.h # small PSI/SI table constants
├── ui_helpers.* # shared ncurses rendering helpers
├── ncurses_present.* # terminal bar helpers
└── color.* # ncurses color pairs/macros
- ✅ modern build against
ncursesw - ✅ default adapter scan starts at adapter
0 - ✅ DVBv5 properties are read individually for better compatibility with older drivers
- ✅ paging and keyboard navigation are implemented
- ✅ demux detail shows a scrollable service table with service type, PMT/PCR PIDs, streams, language, CA, provider, and running status
- ✅ demux detail keeps the last valid snapshot visible during transient SI/PMT refresh gaps
Special thanks to David Seidl, author of the original Femon DVB frontend monitor from 2012.
This project is based on his original work and continues it as a modernized open-source version for current Linux DVB systems.
Permission was granted to continue and publish the project under the condition that open-source principles are preserved.
