Embedded hardware modernization

Giving a Crestron TSW-750 a second life.

The Apfel Orchard panel project turns a discontinued Crestron TSW-750 into a modern, general-purpose control surface by leaving the touchscreen hardware in place and moving the intelligence to an Ubuntu server.

Apfel Panel v0.19.0Python 3.10+CIP bridge :41794Web UI :8089systemdHome AssistantBiamp Tesira

What the project actually does

TouchscreenCrestron TSW-750 running a native VT Pro-style projectControllerUbuntu service implementing the panel-side CIP bridgeRuntimePython, standard library core, Pillow + Paramiko where requiredDesign22-page native panel project managed from browser-based StudioStatePersistent configuration under /var/lib/apfel-panelCurrent release0.19.0

The core idea

The project does not try to turn the TSW-750 into an Ubuntu computer. Instead, it treats the panel as a capable embedded display and input device. Ubuntu becomes the processor, data broker, renderer, policy engine, and update system.

01

Preserve the panel

Keep the original touch hardware, physical buttons, PoE, native graphics engine and Crestron networking behavior.

02

Replace the processor

A custom Python service accepts the TSW-750’s CIP connection and supplies joins, serial values, navigation and dynamic image URLs.

03

Integrate modern systems

Ubuntu talks to Home Assistant, Tesira, network telemetry, weather/radar sources and other services that the original panel was never designed to understand.

Architecture

The TSW remains a thin endpoint. Almost every dynamic decision happens on the server, which keeps the panel project small and makes new integrations possible without replacing the hardware.

Endpoint

Crestron TSW-750

800×480 native UI, touch joins, serial joins, hard buttons, page navigation, image controls and CIP client connection.

→
Bridge

Ubuntu / Apfel Panel

Python bridge on TCP 41794, browser UI on 8089, session state, policy checks, image generation, telemetry caching and update orchestration.

→
Integrations

Modern services

Home Assistant, Biamp Tesira, network status collector, weather/radar, album artwork, printer telemetry and management interfaces.

What it has become

By v0.19, this is no longer a proof-of-concept page on an old panel. It is a small control-platform stack with server-side applications, a guarded deployment model, and a native touchscreen front end.

Native dashboard and navigationHome, Audio, Printer, Automation and Infrastructure sections share a common native navigation model.
Home Assistant control planeWeather, calendar, favorites, printer telemetry and selected actions are sourced through HA with explicit allowlists and state checks.
Biamp Tesira controlVolume, mute, L/R meters, PEQ editing, bypass states, response curves and named listening presets.
Weather and radarServer-generated current-weather cards, seven-day forecast graphics, alerts and animated/recorded radar views.
3D printer consoleOctoPro/Klipper data with a 30-reading detail set, temperatures, progress, material and guarded command confirmation.
Infrastructure viewsRead-only network snapshots, interface state, panel diagnostics and a fixed-target connectivity test from Ubuntu.
Hard-button remappingThe physical Power, Home, Lights, Up and Down buttons can be assigned globally or overridden per page.
Panel StudioBrowser-side preview, text/layout editing, themes, object palettes, drafts, XML export, check/backup/apply workflow and UI restart.

Current interface

These are actual project preview screens from the v0.12–v0.19 development path. They show how much of the user experience is now composed on Ubuntu and delivered through the original panel project.

Project evolution

The release trail shows a steady shift from “make the panel talk” toward a reusable platform.

v0.10
Interface refresh

Home clock/calendar/weather, Infrastructure pages, printer and audio redesign, native image alignment fixes and fixed-destination ping diagnostics.

v0.12
Printer telemetry matured

Three detail pages, 30 readings, static technical artwork and explicit control safeguards.

v0.15
Fast Tesira feedback

One-second audio telemetry path, direct PEQ numeric entry and immediate readback behavior.

v0.16–17
Physical controls and profiles

Configurable bezel buttons, page-specific behavior, idle/profile logic, presets and PEQ response visualization.

v0.18
Server-rendered weather visuals

Full home weather card, radar preview and seven-column forecast generated at exact TSW display sizes.

v0.19
Self-service design system

Eight theme families, per-object color editing, page-only palettes, undo and direct Forecast navigation while preserving existing bindings.

Ubuntu deployment model

The release is installed as a hardened systemd service. Configuration and user state are kept outside the replaced runtime so an upgrade can swap application code without erasing the working panel configuration.

/opt/apfel-panel/                 # installed runtime
/etc/apfel-panel.json             # protected service configuration
/var/lib/apfel-panel/             # persistent state
  Studio.xml                      # working native panel design
  updates/                        # backups and update reports
  printer.json
  info.json
  profiles.json
  hard-buttons.json
  audio-presets.json

TCP 41794  TSW-750 CIP connection
TCP 8089   authenticated dashboard + dynamic panel assets

The bridge is intentionally not a full Crestron processor emulator. It implements the protocol behavior needed by this project and limits panel connections to configured IP networks. The service also runs with systemd hardening such as NoNewPrivileges, ProtectSystem=strict, ProtectHome=true and a narrow writable state directory.

Updating the physical panel

One of the most useful parts of the project is that everyday development does not require repeatedly imaging or rewriting the TSW storage. Native design changes are staged and applied from Ubuntu.

1

Edit in Studio

Load the bundled release pages or a saved draft, preview pages, and make layout/theme changes in the browser.

2

Check & back up

The server reads the live panel version, saves a backup and binds the exact candidate design to the check.

3

Apply & restart UI

The checked design is uploaded over SSH, verified, and the native panel UI is restarted. Editing after Check invalidates the candidate.

The project deliberately separates server upgrades from physical-panel updates. Installing a new Ubuntu release preserves the working Studio design; the native layout changes only when explicitly checked and applied.

Why this matters

Commercial touchpanels are often discarded when their original control ecosystem ages out even though the display, touch digitizer, PoE interface, enclosure and physical controls remain perfectly usable. This project demonstrates another path: preserve the purpose-built endpoint and replace the proprietary “brain” behind it with software that can evolve.

Project thesis

The TSW-750 does not need to become a modern tablet. It only needs a modern server that understands how to speak its language.