Free & Open Source  ·  No Cloud  ·  No Subscription

Control and monitor your PTZ cameras
from any browser on the network

Designed for technicians who receive cameras in unknown states during live productions.

Runs locally. Direct access to Panasonic and BirdDog PTZ cameras over the network. No cloud, no subscriptions.

Download View on GitHub
smart-reset browser UI

Targeted reset — not a factory reset

After the reset

Every camera is in a defined, verified state — comparable across the rig and ready for white balance and black balance. No guesswork, no surprises at go-live.

Why not a factory reset?

Factory reset causes signal loss and requires menu access on the camera body. smart-reset targets only the color parameters — no signal interruption, no physical access needed.

🔁

Readback on every change

Every command is confirmed by reading back the actual camera state. You see what the camera accepted — not just what was sent.

From unknown state to calibration-ready

1

Detect cameras

Start smart-reset and open localhost:8765. The scanner finds every Panasonic and BirdDog camera on the network automatically — no IP configuration needed.

2

Read current values

Select a camera. smart-reset immediately reads back all current color and exposure parameters so you know exactly what state the camera is in before touching anything.

3

Apply verified reset

Trigger the color reset sequence. Each parameter is set and confirmed with a readback — so you know the camera accepted the value, not just that the command was sent.

4

Ready for WB & BB

All cameras are now in a defined, comparable state. Proceed directly to white balance and black balance — with confidence that every unit starts from the same baseline.

Reference scopes, right in your browser

A lightweight visual aid for color reset and calibration. All scopes computed in BT.709 color space, with graticule at 0, 25, 50, 75, and 100 IRE.

RGB Parade

R, G, and B channels side by side — spot color casts and channel imbalance at a glance.

RGB Overlay

All three channels on the same axes — the fastest way to check white balance and overall exposure at once.

Luma (Y)

Standard BT.709 luma (Y = 0.2126·R + 0.7152·G + 0.0722·B) for clean exposure and contrast judgement.

Vectorscope

YCbCr BT.709 trace with saturation rings every 10%, crosshair at neutral, and 75% color-bar target boxes.

NDI live camera feed
Live NDI feed
RGB Parade waveform
RGB Parade waveform
YCbCr vectorscope
YCbCr vectorscope

NDI runtime (Processing.NDI.Lib.x64.dll) is bundled in lib/ndi/ — no SDK installation required. Link with camera to start/stop the feed automatically on connect.
For reference during reset and calibration only. Not intended as a substitute for professional broadcast scopes.
NDI HX is not supported. Full-bandwidth NDI only.

Supported cameras

Hardware-tested on three models. Support for additional Panasonic and BirdDog cameras is implemented from API documentation and accepted as untested contributions.

Tested Hardware-verified    API Based on manufacturer API documentation

Panasonic UE Series

  • AW-UE160 Tested
  • AW-UE100 Tested
  • AW-UE30 / UE40 / UE50 API
  • AW-UE70 / UE80 API
  • AW-UE145 / UE150A API

Panasonic HE / HR

  • AW-HE40 / HE42 / HE50 API
  • AW-HE60 / HE120 / HE130 API
  • AW-HR140 API
  • AK-UB300 API

BirdDog — Full Matrix

  • P200 Tested
  • A200 / A300 API
  • 14-parameter color matrix

BirdDog — Standard

  • P100 / PF120 API
  • P110 / P120 API
  • 12-parameter color matrix

BirdDog — Other

  • P4k / P400 / P240 API
  • Generic fallback for unlisted models

What you need

smart-reset is lightweight — no special hardware or software stack required.

Windows (exe)

  • Windows 10 or later
  • Network connection (wired recommended)
  • Cameras on the same subnet
  • NDI monitor: Windows only

macOS (from source)

  • Python 3.10 or later
  • Network connection
  • Cameras on the same subnet
  • NDI SDK for NDI monitor

Network

  • All devices on the same local network
  • UDP broadcast must be allowed
  • Port 8765 must be free
  • Wi-Fi works, wired is more reliable

Free & open source — download and run

Last updated: May 2026  ·  Actively maintained

With the Windows executable — nothing else required.
For macOS: see from source below.

smart-reset.exe

Everything in one executable — camera control, color reset, and NDI monitor with practical scopes. Panasonic and BirdDog support included. NDI runtime bundled.

Download from GitHub

Windows may show a SmartScreen warning when launching the .exe for the first time. Click More infoRun anyway. This is expected for unsigned open-source software.

From source — Windows · macOS

Requires Python 3.10+. On macOS, the NDI monitor also requires the NDI SDK to be installed separately.

bash
# Clone and enter the repo
git clone https://github.com/AndyJae/smart-reset-browser.git
cd smart-reset-browser

# Create and activate a virtual environment
python -m venv .venv
.venv\Scripts\activate

# Install dependencies
pip install -r requirements.txt

# Launch — browser opens at http://localhost:8765
py web_main.py

Built with

FastAPI uvicorn HTMX Jinja2 Vanilla JS NumPy Pillow WebSocket NDI 6 SDK (ctypes)

Contribute to smart-reset

The most valuable contribution is adding support for new camera models. Everything you need is in the plugin architecture. Developers are encouraged to contribute new ideas and actively help shape the direction of the project.

What contributions are welcome

  • Adding new camera manufacturers
  • Adding new camera models
  • Adding new values for the reset sequence
  • Bug fixes for existing reset sequences
  • Improved network discovery
  • Documentation corrections
  • Help shape the direction of the project

Adding a Panasonic camera

  1. Copy camera_plugins/panasonic/aw_ue80.py as a starting point
  2. Name the file aw_<model>.py or ak_<model>.py — the loader filters by prefix
  3. Set CAMERA_ID, DISPLAY_NAME, and PROTOCOL = "panasonic"
  4. Define RESET_COMMANDS, UI_BUTTONS, UI_DROPDOWNS, UI_LAYOUT
  5. Test against real hardware

Adding a BirdDog camera

  1. Copy camera_plugins/birddog/p200.py as a starting point
  2. Same structure as Panasonic — REST/JSON instead of CGI; API port is 8080
  3. Verify against the BirdDog REST API documentation for your model
  4. Test against real hardware

Adding a new manufacturer

  • Two layers: a transport (transport.py) and one module per model
  • Transport implements the protocol — how commands are sent and responses parsed
  • Model files define reset commands and UI — same structure as Panasonic or BirdDog
  • Full contract in core/interfaces.py
  • Full architecture documented in DOKU.md in the repository

Private plugins

  • Plugins can be built independently — no fork required
  • Drop a new folder into camera_plugins/ with a transport.py and your model files
  • The registry picks them up automatically on startup
  • Useful for proprietary or in-house camera systems
  • Full plugin contract in DOKU.md

Pull request checklist

  • One camera model per PR
  • DISPLAY_NAME matches the official product name exactly
  • No changes outside camera_plugins/ unless discussed in an issue first
  • Tested on real hardware — state this in the PR description

PRs without hardware testing are accepted as "untested" and merged with a warning comment in the module header. Questions? Open an issue or contact support@medien-support.com.

Get notified about updates

Leave your name and email and we'll let you know when something new ships. No spam — just release notes.

Frequently asked questions

Installation & setup

Yes. On Windows use the .exe — nothing else required. On macOS and Linux run it from source with py web_main.py. Linux is not officially tested yet.
No. The Windows executable is self-contained — just download and run.
The web interface runs on port 8765. The camera scan port can be changed in the UI.
smart-reset keeps running in the background. Click the PTZ icon in the system tray to open a new browser window.
Right-click the PTZ icon in the system tray and select Quit.

Camera support

Currently Panasonic AW series and BirdDog. More models can be added via plugins — see the Developer section.
Yes. The plugin architecture makes it straightforward to add new models. See the Developer section for step-by-step instructions.
It is designed for local networks. Remote access over the internet is not officially supported.

Reset behaviour

It sends a predefined set of commands to restore the camera's color settings to a known baseline.
Not through the UI yet — custom presets can be configured directly in the camera plugin file.

Security & network

smart-reset has no login of its own. Keep it on a trusted local network.
Yes. Open a browser on any device on the same network and navigate to the host machine's IP address on port 8765.

Contributing

Follow the steps in the Developer section and open a pull request on GitHub. PRs without hardware testing are accepted as "untested".
Open an issue on GitHub or contact support@medien-support.com.