monthly

GitHub C# Trending

The latest build: 2024-06-16Source of data: GitHubTrendingRSS

Perfect 4K@240Hz Virtual Display



parsec-vdd

Standalone Parsec Virtual Display
Create virtual display up to 4K@240Hz


About

This project demonstrates a standalone solution to create virtual displays by using Parsec VDD, without relying on the Parsec app.

The Virtual Display Driver (VDD) is required to enable virtual displays on a Windows host. Virtual displays is a feature available for Teams and Warp customers that lets you add up to 3 additional virtual displays to the host while connecting to a machine you own through Parsec.

Parsec VDD is a perfect software driver developed by Parsec. It utilizes the IddCx API (Indirect Display Driver) to create virtual displays on Windows 10+. This virtual display is particularly useful in situations where a physical monitor may not be available or when additional screens are desired.

One of the notable features of Parsec VDD is its support for a wide range of resolutions and refresh rates, including up to 4K and 240 Hz. This makes it well-suited for gaming, as it can provide a high-quality visual experience. It enables users to simulate the presence of additional screens or work without a physical monitor, enhancing flexibility and customization in display management.

ParsecVDisplay App

This is a complete driver application to control the Parsec VDD, written in C# and WPF. It can show the number of virtual displays added, allows adding multiple virtual displays and removing a specific selected one. Also allows to change resolution and take screenshot, and more..

Check out Releases to download it.

Full source code of this application is located in the app folder.

Using Core API

Design notes

Parsec VDD is designed to work with Parsec client-connection session. When user connects to the host, the app will start controlling the driver, it sends IO control codes and gets result. When adding a virtual display, you will get its index to be used for unplugging, the maximum number of displays could be added up to 16 per adapter. You have to ping to the driver periodically to keep added displays alive, otherwise all of them will be unplugged after a second. There's no direct way to manipulate added displays, you should call Win32 Display API to change their display mode (see the ParsecVDisplay source).

flowchart LR A(app) B(vdd) A <--->|ioctl| B A ..->|ping| B B --- X(display1) B --- Y(display2) B --- Z(display3) winapi -->|manipulate| X

Using the code

Picking a driver

You have to install the driver to make them work.

VersionMinimum OSIddCxNotes
parsec-vdd-0.38Windows 10 16071.0Obsolete, may crash randomly.
parsec-vdd-0.41Windows 10 19H21.4Stable.
parsec-vdd-0.45Windows 10 21H21.5Better streaming color, but may not work on some Windows.

All of them also work on Windows Server 2019 or higher.

You can unzip (using 7z) the driver setup above to obtain the driver files and nefconw CLI.

vdd-0.45/ |__ nefconw.exe |__ driver/ |__ mm.cat |__ mm.dll |__ mm.inf

Command line method to install the driver using nefconw (admin required):

start /wait .\nefconw.exe --remove-device-node --hardware-id Root\Parsec\VDA --class-guid "4D36E968-E325-11CE-BFC1-08002BE10318"start /wait .\nefconw.exe --create-device-node --class-name Display --class-guid "4D36E968-E325-11CE-BFC1-08002BE10318" --hardware-id Root\Parsec\VDAstart /wait .\nefconw.exe --install-driver --inf-path ".\driver\mm.inf"

In additional, you can run the driver setup in silent mode to install it quickly.

.\parsec-vdd-0.45.0.0.exe /S

Known Limitations

This list shows the known limitations of Parsec VDD.

1. HDR support

Parsec VDD does not support HDR on its displays (see the EDID below). Theoretically, you can unlock support by editing the EDID, then adding HDR metadata and setting 10-bit+ color depth. Unfortunately, you cannot flash its firmware like a physical device, or modify the registry value.

All IDDs have their own fixed EDID block inside the driver binary to initialize the monitor specs. So the solution is to modify this block in the driver DLL (mm.dll), then reinstall it with nefconw CLI (see above).

2. Custom resolutions

Before connecting, the virtual display looks in the HKEY_LOCAL_MACHINE\SOFTWARE\Parsec\vdd registry for additional preset resolutions. Currently this supports a maximum of 5 values.

SOFTWARE\Parsec\vdd key: 0 -> 5 | (width, height, hz)

To unlock this limit, you need to patch the driver DLL the same way as above, but 5 is enough for personal use.

Known Bugs

This is a list of known issues when working with standalone Parsec VDD.

1. Incompatible with Parsec Privacy Mode

Alt text

If you have enabled "Privacy Mode" in Parsec Host settings, please disable it and clear the connected display configruations in the following Registry path.

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GraphicsDrivers\Connectivity

This option causes your main display to turn off when virtual displays are added, making it difficult to turn the display on and disrupting the remote desktop session.

2. // todo

Comparison with other IDDs

The table below shows a comparison with other popular Indirect Display Driver projects.

ProjectIddcx versionSignedGamingHDRH-CursorTweakableController
usbmmidd_v2
IddSampleDriver1.2
RustDeskIddDriver1.2
Virtual-Display-Driver (HDR)1.10
virtual-display-rs1.5#81
parsec-vdd1.5

- full support, - limited support

Signed means that the driver files have a valid digital signature. H-Cursor means hardware cursor support, without it you will get double cursor on some remote desktop apps. Tweakable is the ability to customize display modes. Visit MSDN IddCx versions to check the minimum supported Windows version.

Parsec VDD Specs

Preset display modes

All of the following display modes are set by driver default.

ResolutionCommon nameAspect ratioRefresh rates (Hz)
4096 x 2160DCI 4K1.90:1 (256:135)24/30/60/144/240
3840 x 21604K UHD16:924/30/60/144/240
3840 x 1600UltraWide24:1024/30/60/144/240
3840 x 1080UltraWide32:9 (2x 16:9 FHD)24/30/60/144/240
3440 x 144021.5:9 (43:18)24/30/60/144/240
3240 x 21603:260
3200 x 18003K16:924/30/60/144/240
3000 x 20003:260
2880 x 18002.8K16:1060
2880 x 16202.8K16:924/30/60/144/240
2736 x 182460
2560 x 16002K16:1024/30/60/144/240
2560 x 14402K16:924/30/60/144/240
2560 x 1080UltraWide21:924/30/60/144/240
2496 x 166460
2256 x 150460
2048 x 115260/144/240
1920 x 1200FHD16:1060/144/240
1920 x 1080FHD16:924/30/60/144/240
1800 x 1200FHD3:260
1680 x 1050HD+16:1060/144/240
1600 x 1200HD+4:324/30/60/144/240
1600 x 900HD+16:960/144/240
1440 x 900HD16:1060/144/240
1366 x 76860/144/240
1280 x 800HD16:1060/144/240
1280 x 720HD16:960/144/240

Notes:

  • Low GPUs, e.g GTX 1650 will not support the highest DCI 4K.
  • All resolutions are compatible with 60 Hz refresh rates.

Adapter info

  • Name: Parsec Virtual Display Adapter
  • Hardware ID: Root\Parsec\VDA
  • Adapter GUID: {00b41627-04c4-429e-a26e-0265cf50c8fa}
  • Class GUID: {4d36e968-e325-11ce-bfc1-08002be10318}

Monitor info

  • ID: PSCCDD0
  • Name: ParsecVDA
  • EDID:
00 FF FF FF FF FF FF 00 42 63 D0 CD ED 5F 84 0011 1E 01 04 A5 35 1E 78 3B 57 E0 A5 54 4F 9D 2612 50 54 27 CF 00 71 4F 81 80 81 40 81 C0 81 0095 00 B3 00 01 01 86 6F 80 A0 70 38 40 40 30 2035 00 E0 0E 11 00 00 1A 00 00 00 FD 00 30 A5 C1C1 29 01 0A 20 20 20 20 20 20 00 00 00 FC 00 5061 72 73 65 63 56 44 41 0A 20 20 20 00 00 00 1000 00 00 00 00 00 00 00 00 00 00 00 00 00 01 C602 03 10 00 4B 90 05 04 03 02 01 11 12 13 14 1F8A 4D 80 A0 70 38 2C 40 30 20 35 00 E0 0E 11 0000 1A FE 5B 80 A0 70 38 35 40 30 20 35 00 E0 0E11 00 00 1A FC 7E 80 88 70 38 12 40 18 20 35 00E0 0E 11 00 00 1E A4 9C 80 A0 70 38 59 40 30 2035 00 E0 0E 11 00 00 1A 02 3A 80 18 71 38 2D 4058 2C 45 00 E0 0E 11 00 00 1E 00 00 00 00 00 0000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 A6

Visit http://www.edidreader.com/ to view it online or use an advanced tool AW EDID Editor

A reference .NET application implementing an eCommerce site


eShop Reference Application - "AdventureWorks"

A reference .NET application implementing an e-commerce website using a services-based architecture using .NET Aspire.

eShop Reference Application architecture diagram

eShop homepage screenshot

Getting Started

Prerequisites

Windows with Visual Studio

  • Install Visual Studio 2022 version 17.10 or newer.
    • Select the following workloads:
      • ASP.NET and web development workload.
      • .NET Aspire SDK component in Individual components.
      • Optional: .NET Multi-platform App UI development to run client apps

Mac, Linux, & Windows without Visual Studio

dotnet workload updatedotnet workload install aspiredotnet restore eShop.Web.slnf

Note: These commands may require sudo

Note: When running on Mac with Apple Silicon (M series processor), Rosetta 2 for grpc-tools.

Running the solution

[!WARNING] Remember to ensure that Docker is started

  • (Windows only) Run the application from Visual Studio:
  • Open the eShop.Web.slnf file in Visual Studio
  • Ensure that eShop.AppHost.csproj is your startup project
  • Hit Ctrl-F5 to launch Aspire
  • Or run the application from your terminal:
dotnet run --project src/eShop.AppHost/eShop.AppHost.csproj

then look for lines like this in the console output in order to find the URL to open the Aspire dashboard:

Login to the dashboard at: http://localhost:19888/login?t=uniquelogincodeforyou

You may need to install ASP.NET Core HTTPS development certificates first, and then close all browser tabs. Learn more at https://aka.ms/aspnet/https-trust-dev-cert

Azure Open AI

When using Azure OpenAI, inside eShop.AppHost/appsettings.json, add the following section:

 "ConnectionStrings": { "OpenAi": "Endpoint=xxx;Key=xxx;" }

Replace the values with your own. Then, in the eShop.AppHost Program.cs, set this value to true

bool useOpenAI = false;

Here's additional guidance on the .NET Aspire OpenAI component.

Use Azure Developer CLI

You can use the Azure Developer CLI to run this project on Azure with only a few commands. Follow the next instructions:

  • Install the latest or update to the latest Azure Developer CLI (azd).
  • Log in azd (if you haven't done it before) to your Azure account:
azd auth login
  • Initialize azd from the root of the repo.
azd init
  • During init:

    • Select Use code in the current directory. Azd will automatically detect the .NET Aspire project.
    • Confirm .NET (Aspire) and continue.
    • Select which services to expose to the Internet (exposing webapp is enough to test the sample).
    • Finalize the initialization by giving a name to your environment.
  • Create Azure resources and deploy the sample by running:

azd up

Notes:

  • The operation takes a few minutes the first time it is ever run for an environment.
  • At the end of the process, azd will display the url for the webapp. Follow that link to test the sample.
  • You can run azd up after saving changes to the sample to re-deploy and update the sample.
  • Report any issues to azure-dev repo.
  • FAQ and troubleshoot for azd.

Contributing

For more information on contributing to this repo, read the contribution documentation and the Code of Conduct.

Sample data

The sample catalog data is defined in catalog.json. Those product names, descriptions, and brand names are fictional and were generated using GPT-35-Turbo, and the corresponding product images were generated using DALL·E 3.

eShop on Azure

For a version of this app configured for deployment on Azure, please view the eShop on Azure repo.

A powerful tool for managing networks and troubleshoot network problems!


NETworkManager Preview

NETworkManager

A powerful open source tool for managing networks and troubleshooting network problems!

Connect and manage remote systems with Remote Desktop, PowerShell, PuTTY, TigerVNC or AWS (Systems Manager) Session Manager. Analyze and troubleshoot your network and systems with features such as the WiFi Analyzer, IP Scanner, Port Scanner, Ping Monitor, Traceroute, DNS lookup or LLDP/CDP capture (and many more) in a unfied interface. Hosts (or networks) can be saved in (encrypted) profiles and used across all features.

All releases

All releasesLatest releaseLatest pre-release

GitHub starsGitHub forks

AppVeyorAppVeyor

TransifexFeature requestBug report

DownloadChangelogDocumentationContributingBuildLicense

NETworkManager Preview

Download

Pre-built and signed binaries (setup, portable and archive) are available on the download page with install instructions (e.g. silent install). The files are provided via GitHub releases.

In addition, NETworkManager is also available through the following package managers

  • Chocolatey

    # Install via Chocolateychoco install networkmanager
  • WinGet

    # Install via WinGetwinget install BornToBeRoot.NETworkManager
  • Evergreen

    # Get release via EvergreenGet-EvergreenApp -Name NETworkManager# Get release via Evergreen and save the setup file to diskGet-EvergreenApp -Name NETworkManager | Save-EvergreenApp -Path C:\Users\$env:Username\Downloads\

    Evergreen PowerShell module: https://github.com/aaronparker/evergreen

Changelog

You can find the changelog for each version of NETworkManager here.

Documentation

The documentation is provided with Docusaurus via GitHub pages and can be found here.

Contributing

Want to contribute to NETworkManager? Here are a few information on how to get started:

A list of all contributors can be found here.

This project has adopted the code of conduct defined by the Contributor Covenant.

Build

You can build the application like any other .NET / WPF application on Windows.

  1. Make sure that the following requirements are installed:

    • .NET 8.x - SDK
    • Visual Studio 2022 with .NET desktop development and Universal Windows Platform development
  2. Clone the repository with all submodules:

    # Clone the repositorygit clone https://github.com/BornToBeRoot/NETworkManager# Navigate to the repositorycd NETworkManager# Clone the submodulesgit submodule update --init
  3. Open the project file .\Source\NETworkManager.sln with Visual Studio or JetBrains Rider to build (or debug) the solution.

    ALTERNATIVE

    With the following commands you can directly build the binaries from the command line:

    dotnet restore .\Source\NETworkManager.slndotnet build .\Source\NETworkManager.sln --configuration Release --no-restore

Thanks

Thanks to everyone helping to improve NETworkManager by contributing code, translations, bug reports, feature requests, documentation, and more.

We would like to thank the following people and companies for their support of this open source project:

AppVeyorCI/CD service for Windows, Linux and macOS
GitHub PagesWebsites for you and your projects
ip-api.comIP Geolocation API (free for non-commercial use)
JetBrainsProviding a license for JetBrains Rider and other tools
SignPath FoundationFree code signing certificates for open source projects
SignPath.ioFree code signing service for open source projects
TransifexLocalization platform

NETworkManager uses the following projects and libraries. Please consider supporting them as well (e.g., by starring their repositories):

#SNMP LibrarySNMP library for .NET
AirspaceFixerAirspacePanel fixes all Airspace issues with WPF-hosted Winforms.
ControlzExShared Controlz for WPF and more
DnsClient.NETPowerful, high-performance open-source library for DNS lookups
DocusaurusEasy to maintain open source documentation websites.
DragablzTearable TabControl for WPF
IPNetwork.NET library for complex network, IP, and subnet calculations
LoadingIndicators.WPFA collection of loading indicators for WPF
MahApps.Metro.IconPacksAwesome icon packs for WPF and UWP in one library
MahApps.MetroUI toolkit for WPF applications
NetBeauty2Move .NET app runtime components and dependencies into a sub-directory
PSDiscoveryProtocolPowerShell module for LLDP/CDP discovery

Code Signing Policy

NETworkManager uses free code signing provided by SignPath.io and a free code signing certificate from SignPath Foundation.

The binaries and installer are built on AppVeyor directly from the GitHub repository. Build artifacts are automatically sent to SignPath.io via webhook, where they are signed after manual approval by the maintainer. The signed binaries are then uploaded to the GitHub releases page.

Privacy Policy

This program will not transfer any information to other networked systems unless specifically requested by the user or the person installing or operating it.

NETworkManager has integrated the following services for additional functions, which can be enabled or disabled at the first start (in the welcome dialog) or at any time in the settings:

  • api.github.com (Check for program updates)
  • ipify.org (Retrieve the public IP address used by the client)
  • ip-api.com (Retrieve network information such as geo location, ISP, DNS resolver used, etc. used by the client)

License

NETworkManager is published under the GNU General Public License v3.

The licenses of the libraries used can be found here.