PepperDash.ZoomRoom.Sdk
1.1.0-feat-test-public-nuget.3
dotnet add package PepperDash.ZoomRoom.Sdk --version 1.1.0-feat-test-public-nuget.3
NuGet\Install-Package PepperDash.ZoomRoom.Sdk -Version 1.1.0-feat-test-public-nuget.3
<PackageReference Include="PepperDash.ZoomRoom.Sdk" Version="1.1.0-feat-test-public-nuget.3" />
<PackageVersion Include="PepperDash.ZoomRoom.Sdk" Version="1.1.0-feat-test-public-nuget.3" />
<PackageReference Include="PepperDash.ZoomRoom.Sdk" />
paket add PepperDash.ZoomRoom.Sdk --version 1.1.0-feat-test-public-nuget.3
#r "nuget: PepperDash.ZoomRoom.Sdk, 1.1.0-feat-test-public-nuget.3"
#:package PepperDash.ZoomRoom.Sdk@1.1.0-feat-test-public-nuget.3
#addin nuget:?package=PepperDash.ZoomRoom.Sdk&version=1.1.0-feat-test-public-nuget.3&prerelease
#tool nuget:?package=PepperDash.ZoomRoom.Sdk&version=1.1.0-feat-test-public-nuget.3&prerelease
PepperDash.ZoomRoom.Sdk
C# P/Invoke wrapper for the Zoom Rooms Controller SDK (ZRC SDK), targeting Crestron control systems running ARM32 Linux (e.g. CP4N).
Requirements
| Requirement | Details |
|---|---|
| .NET | net8.0 |
| Runtime | linux-arm (ARMv7-A hard-float) |
| Device | Crestron CP4N or similar ARM32 Linux Crestron appliance |
| ZRC SDK | libZRCSdk.so installed at /usr/lib/ on the device (ZRC SDK 6.5.5+) |
Installation
dotnet add package PepperDash.ZoomRoom.Sdk
The NuGet package includes the compiled C wrapper (libzrcsdkwrapperpdt.so) as a runtimes/linux-arm/native/ asset. The proprietary libZRCSdk.so must be separately installed on the target device.
Quick Start
using PepperDash.ZoomRoom.Sdk;
// Optionally override the library search path (useful for testing outside Crestron)
// ZrcSdk.SetLibraryPath("/path/to/libs");
var sdk = new ZrcSdk();
sdk.Initialized += (s, e) => Console.WriteLine($"SDK initialized: {e.ErrorCode}");
sdk.PairRoomResult += (s, e) => Console.WriteLine(ZrcSdkCodes.GetPairRoomResultDescription(e.ErrorCode));
sdk.ConnectionStateChanged += (s, e) => Console.WriteLine(ZrcSdkCodes.GetConnectionStateDescription(e.ErrorCode));
sdk.MeetingStatus += (s, e) => Console.WriteLine(ZrcSdkCodes.GetMeetingStatusDescription(e.ErrorCode));
// Initialize — blocks until IZRCSDK::CreateInstance() returns, then starts the HeartBeat loop
bool ok = sdk.Initialize("/user/zrcsdk");
if (sdk.CanRetryToPairLastRoom())
sdk.RetryToPairRoom(); // reconnect with stored credentials
else
sdk.PairRoomWithActivationCode("XXXXXX"); // first-time pair
// Clean shutdown — flushes credentials to disk, calls IZRCSDK::DestroyInstance()
sdk.Dispose();
On Crestron Systems
Subscribe to CrestronEnvironment.ProgramStatusEventHandler to ensure clean shutdown:
CrestronEnvironment.ProgramStatusEventHandler += (type) =>
{
if (type == eProgramStatusEventType.Stopping)
sdk?.Dispose();
};
Note: All writable paths on Crestron devices (
/simpl/app,/user,/var/volatile) are mountednoexec. The library loads itself viamemfd_create+dlopen(/proc/self/fd/N)to bypass this restriction automatically.
Key APIs
Lifecycle
| Method | Description |
|---|---|
Initialize(configPath) |
Start SDK; HeartBeat loop runs until Dispose() |
Dispose() |
Stop HeartBeat, flush credentials, destroy native instance |
GetSDKVersion() |
Returns the ZRC SDK version string |
SetLibraryPath(dir) |
(static) Override native library search directory |
Pairing
| Method | Description |
|---|---|
CanRetryToPairLastRoom() |
Returns true if stored credentials are available |
RetryToPairRoom() |
Reconnect without an activation code |
PairRoomWithActivationCode(code) |
First-time pair |
UnpairRoom() |
Unpair and clear credentials |
Meeting Control
| Method | Description |
|---|---|
StartInstantMeeting() |
Start a PMI/instant meeting |
JoinMeeting(number) |
Join by meeting number |
JoinMeetingWithURL(url) |
Join via invite URL |
StartMeetingWithHostKey(key) |
Start a scheduled meeting |
EndMeeting() |
End for all (host only) |
LeaveMeeting() |
Leave (meeting continues) |
SendMeetingPassword(pw) |
Respond to MeetingNeedsPassword |
Audio / Video / Recording
SetAudioMute(bool) · SetVideoState(bool) · StartRecording() · StopRecording() · PauseRecording() · ResumeRecording()
Zoom Room Control System (ZRCS)
IsZRCSEnabled() · OpenRoomControls(bool) · ControlZRCSDevice(...) · ExecuteZRCSScene(sceneID)
Error Codes
Use the ZrcSdkCodes static class to convert integer codes to descriptions:
ZrcSdkCodes.GetErrorDescription(code)
ZrcSdkCodes.GetPairRoomResultDescription(code)
ZrcSdkCodes.GetMeetingStatusDescription(code)
ZrcSdkCodes.GetConnectionStateDescription(code)
ZrcSdkCodes.GetExitMeetingReasonDescription(reason)
License
MIT — see LICENSE
The ZRC SDK itself (libZRCSdk.so) is proprietary software © Zoom Video Communications, Inc.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net8.0
- No dependencies.
NuGet packages (1)
Showing the top 1 NuGet packages that depend on PepperDash.ZoomRoom.Sdk:
| Package | Downloads |
|---|---|
|
PepperDash.Essentials.Plugins.Zoom.Room
Package Description |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 1.1.0-feat-test-public-nuget.3 | 94 | 8/28/2026 |
| 1.1.0-feat-test-public-nuget.2 | 113 | 8/21/2026 |
| 1.1.0-feat-test-public-nuget.1 | 89 | 8/21/2026 |
| 1.0.1-feat-test-public-nuget.1 | 70 | 8/21/2026 |