DCS Panel Manager is a modern Windows application for detecting, monitoring, and eventually configuring flight simulation panels for DCS World.
The first supported devices are:
- Logitech/Saitek Pro Flight Switch Panel PZ55;
- Logitech/Saitek Pro Flight Multi Panel PZ70.
The project uses C#, .NET 10, and Avalonia UI. DCS-BIOS will be the primary interface with DCS World; this project does not reimplement DCS-BIOS.
Version 0.6.1 adds tested PZ55 gear LEDs and PZ70 LCD/autopilot LED output, alongside DCS-BIOS monitoring, profiles, the interactive mapping editor, and opt-in live DCS-BIOS commands.
- automatic PZ55 and PZ70 detection;
- hot-plug connection, disconnection, and reconnection;
- support for multiple devices and multiple instances of the same model;
- individual identification using the complete HID path and serial number when available;
- display of VID, PID, instance path, and connection state;
- raw HID report capture;
- decoding for switches, buttons, selectors, and encoders;
- Live Monitor with Hardware, Mapping, DCS-BIOS, and Error filters;
- backend-independent mapping engine;
- versioned and validated JSON profiles;
- safe
NoSyncstrategy by default; - dependency injection and structured logging;
- command-line hardware diagnostic tool.
- read-only DCS-BIOS UDP multicast listener;
- DCS-BIOS connection and inactivity detection;
- active aircraft detection through the official
_ACFT_NAMEexport; - automatic import of aircraft control metadata from DCS-BIOS JSON files;
- DCS-BIOS packet count and sampled receive activity in Live Monitor.
- validated JSON profile catalog plus automatically generated starters for every aircraft and helicopter exposed by the installed DCS-BIOS metadata;
- automatic aircraft profile selection with Generic fallback;
- searchable DCS-BIOS control catalog for the aircraft detected in the active mission;
- interactive mapping editor with physical input learning, command search, safe preview, automatic saving, and mapping removal;
- separate On/Off and Pressed/Released triggers with DCS-BIOS argument suggestions;
- opt-in DCS-BIOS command transmission from saved mappings, disabled by default at every application start;
- data-driven Profiles and Mappings pages.
- ready-to-use PZ55/PZ70 starter mappings for the F-5E-3, F/A-18C, Mirage 2000C, and F-16C;
- PZ55 green, red, yellow, and off landing-gear LED states;
- PZ70 upper/lower numeric LCD rendering and all autopilot LEDs;
- hardware-only output test buttons on the Devices page.
- a Live Monitor that begins empty for each new application session.
HID input has been tested with real hardware on Windows:
| Panel | USB identifier | Status |
|---|---|---|
| PZ55 Switch Panel | VID 06A3 / PID 0D67 |
Detection, inputs, and gear LED output validated |
| PZ70 Multi Panel | VID 06A3 / PID 0D06 |
Detection, inputs, LCD, and autopilot LED output validated |
Testing confirmed PZ55 state changes and PZ70 selector positions. Streams remain open while panels are idle and close cleanly when the application stops.
The application currently contains these pages:
- Dashboard: system overview, live DCS World/DCS-BIOS status, connected panels, and active profile;
- Devices: detailed cards for every detected panel and instance;
- Live Monitor: structured and filterable event console for HID, mapping, DCS-BIOS, and error events;
- DCS-BIOS: connection status and a searchable catalog of the active aircraft's identifiers, command interfaces, outputs, and descriptions;
- Profiles: selectable catalog with aircraft, device, mapping, and safety details;
- Mappings: learn a physical panel input, select a writable DCS-BIOS command, preview it safely, and save or remove mappings from the active aircraft profile;
- Settings: current safe configuration and upcoming preferences.
- Windows 10 or Windows 11;
- .NET 10 SDK;
- a PZ55 or PZ70 for hardware features;
- DCS-BIOS for simulator data. The application and hardware monitoring still start when it is absent.
DCS Panel Manager discovers metadata in the standard installation path:
%USERPROFILE%\Saved Games\DCS*\Scripts\DCS-BIOS\doc\json
With DCS World running in a mission, the application listens to the official export
multicast group 239.255.50.10:5010. The Dashboard changes to Connected after a
valid protocol frame is received and displays the active aircraft when available.
To use saved mappings, open Settings and enable DCS commands only after
DCS World and DCS-BIOS are running. The application sends newline-terminated DCS-BIOS
commands to the local DCS-BIOS command listener on UDP port 7778. This setting is
intentionally disabled again whenever the application starts.
Check the installed SDK:
dotnet --versionFrom PowerShell:
git clone https://github.com/lolo1580/dcs_panel_manager.git
cd dcs_panel_manager
dotnet restore .\DCSPanelManager.sln
dotnet build .\DCSPanelManager.sln -c Release
dotnet test .\DCSPanelManager.sln -c Release --no-buildCurrent reference status: 0 warnings, 0 errors, 37 passing tests.
dotnet run --project .\src\DCSPanel.App\DCSPanel.App.csproj -c ReleaseConnect the panels, then open Devices or Live Monitor.
dotnet publish .\src\DCSPanel.App\DCSPanel.App.csproj -c Release -r win-x64 --self-contained true -p:PublishSingleFile=true -p:IncludeNativeLibrariesForSelfExtract=true -o .\artifacts\DCSPanelManager-win-x64Launch artifacts\DCSPanelManager-win-x64\DCSPanel.App.exe. Keep the generated
profiles folder beside the executable.
The probe uses the same HID service as the desktop application. The final argument is the test duration in seconds:
dotnet run --project .\tools\DCSPanel.Hardware.Probe\DCSPanel.Hardware.Probe.csproj -c Release -- 20Operate switches, buttons, and encoders during the test. A successful run reports both
connections, raw reports, decoded inputs, and errors=0.
If a panel cannot be opened, close Logitech Flight Panels, DCSFlightpanels, or any other application that may be using the HID device exclusively.
src/
|-- DCSPanel.Core/ Abstractions, events, and mapping engine
|-- DCSPanel.Hardware/ Generic hardware models and contracts
|-- DCSPanel.Hardware.Logitech/ HID enumeration and PZ55/PZ70 protocol
|-- DCSPanel.DCSBIOS/ UDP transport, parser, metadata import, and commands
|-- DCSPanel.Profiles/ JSON profiles, persistence, and validation
`-- DCSPanel.App/ Avalonia UI and dependency composition
tests/
|-- DCSPanel.Core.Tests/
|-- DCSPanel.DCSBIOS.Tests/
`-- DCSPanel.Hardware.Tests/
tools/
`-- DCSPanel.Hardware.Probe/
Core does not depend on Logitech, HID, or DCS-BIOS. Logitech protocol details remain
confined to DCSPanel.Hardware.Logitech.
Additional documentation:
- Avalonia 12: the requested cross-platform user interface framework;
- HidSharp: raw HID device and report access;
- Microsoft.Extensions.DependencyInjection: modular dependency composition;
- Microsoft.Extensions.Logging: structured logging;
- xUnit: unit testing.
Core, Hardware, Profiles, and DCSBIOS avoid unnecessary external dependencies.
- visual mapping editor;
- validated F-16C and F/A-18C mappings;
NoSyncretained as the safe default strategy.
- PZ55 LEDs;
- PZ70 LCD and LEDs;
- DCS State -> Hardware Output feedback mappings.
- modifiers, layers, and multiple actions;
- keyboard backend;
- Stream Deck and additional device support.
Live DCS-BIOS commands are disabled by default and require an explicit opt-in in
Settings for the current application session. Loading a profile never sends
physical switch positions automatically, and the NoSync strategy remains the
default.
This project is distributed under the MIT License.