OpenDisplayNet is a standalone .NET library for discovering and controlling
OpenDisplay Bluetooth Low Energy displays from
Windows. It implements the OpenDisplay BLE protocol, including fast
PIPE_WRITE image transfer, for applications that want to render their own
content on e-paper displays.
- Discover advertising and paired OpenDisplay BLE devices.
- Read display configuration, panel dimensions, firmware information, sensors, and manufacturer data.
- Upload
System.Drawing.Bitmapinstances or image files with panel-aware palette reduction and ordered dithering, or send caller-encoded frames through Direct Write or negotiatedPIPE_WRITE. - Authenticate encrypted sessions, send partial updates, and control LEDs and buzzers.
Discover a device, connect to it, and upload a bitmap. The library resizes it to the panel and converts it to the panel's configured color scheme:
using System.Drawing;
using OpenDisplayNet;
IReadOnlyList<OpenDisplayDevice> devices = await OpenDisplayDiscovery
.DiscoverAsync(TimeSpan.FromSeconds(10));
OpenDisplayDevice device = devices.First();
using OpenDisplayClient client = await OpenDisplayClient.ConnectAsync(device);
using Bitmap bitmap = new("dashboard.png");
using OpenDisplayImage image = new(bitmap);
await client.SendImageAsync(image);
// Or load directly from a file.
using OpenDisplayImage fileImage = new("dashboard.png");
await client.SendImageAsync(fileImage);Create OpenDisplayImage from a caller-encoded frame when conversion is
handled elsewhere:
using OpenDisplayImage encodedImage = new(encodedFrame);
await client.SendImageAsync(encodedImage);| Project | Purpose |
|---|---|
src/OpenDisplayNet |
The Windows BLE client library. |
samples/ConsoleTest |
Interactive display discovery and test-pattern uploader. |
samples/WinApp |
Reactor-based device discovery, image upload, and camera UI. |
tests/OpenDisplayNet.Tests |
Protocol serialization and parsing tests. |
dotnet build OpenDisplayNet.slnx
dotnet test OpenDisplayNet.slnx
dotnet run --project samples\ConsoleTest\ConsoleTest.csproj
dotnet run --project samples\WinApp\WinApp.csproj -p:Platform=x64The test application scans until a device is selected, reads its panel configuration, and uploads a matching test image.