Skip to main content

Cross-platform Crestron processor provisioning console

Project description

Crestron Processor Setup

Cross-platform interactive console for Crestron processor provisioning. Discovers devices on the LAN, creates accounts, configures settings, and manages firmware — all from a terminal menu.

Features

  • Device Discovery — CIP protocol broadcast (UDP 41794) finds Crestron processors on the local network, with first-boot detection
  • Interactive Console — Arrow-key menus, checkbox device selection, animated progress tracking
  • Cross-Platform — Python + paramiko (works on macOS, Linux, and Windows — no expect dependency)
  • Firmware Management — Download firmware from configurable URLs and upload to processors
  • Network Configuration — Set static IP or DHCP per device during provisioning
  • Restore & Erase — Factory-reset devices with initialize + restore commands
  • 6-Phase Provisioning:
    1. Account Creation — Detects first-boot state; creates admin account or verifies existing credentials
    2. Public Key Upload — SFTP .pub key to /user/
    3. Configuration — Timezone, NTP, web ports, login lockout policy, FIPS mode
    4. Network Configuration — DHCP or static IP with subnet, gateway, and DNS
    5. Reboot — Sends REBOOT and polls until back online
    6. Firmware Upload — Version comparison; uploads .puf to /firmware/ only if newer

Installation

Homebrew (macOS)

brew install mikejobson/tap/crestron-setup

pip (all platforms)

pip install crestron-setup

Standalone Binary

Download the latest binary from GitHub Releases:

Platform Download
macOS crestron-setup-macos
Windows crestron-setup-windows.exe
# macOS — make executable and move to PATH
chmod +x crestron-setup-macos
sudo mv crestron-setup-macos /usr/local/bin/crestron-setup

Scoop (Windows)

scoop bucket add crestron https://github.com/mikejobson/scoop
scoop install crestron-setup

From Source

git clone https://github.com/mikejobson/Crestron-Processor-Setup.git
cd Crestron-Processor-Setup
python3 -m venv .venv
source .venv/bin/activate    # Windows: .venv\Scripts\activate
pip install -e .

Requirements

  • Python 3.10+ (pip and source installs only — standalone binaries are self-contained)
  • Root/admin privileges for device discovery (UDP broadcast)

Usage

# Launch the interactive console
crestron-setup

# Discovery requires elevated privileges
sudo crestron-setup

# If installed via pip / from source
python -m crestron_setup
sudo .venv/bin/python -m crestron_setup

Configuration

Settings are stored in ~/.config/crestron-setup/config.yaml (macOS/Linux) or %APPDATA%\crestron-setup\config.yaml (Windows). A local config.yaml in the working directory takes priority.

Copy config.example.yaml to get started. Key settings:

Setting Default Description
timezone 33 (GMT Standard Time) Crestron timezone ID
ntp_server pool.ntp.org NTP server address
pubkey_file ~/.ssh/id_rsa.pub SSH public key — local path or URL (e.g. https://github.com/user.keys)
firmware_dir ~/Sync/Crestron Firmware Local firmware directory (fallback)
web_port 8080 Web server port
secure_web_port 8443 Secure web server port
firmware_urls (empty) Per-model firmware download URLs

Files

Path Purpose
crestron_setup/ Python package — CLI, discovery, SSH, provisioning, firmware
config.example.yaml Template configuration file
setup_processor.sh Legacy bash script (macOS only, requires expect)
crestron_command_reference.md CLI command reference (414 commands) from a live CP4
example commands.txt Reference log of a manual setup session

Legacy Bash Script

The original setup_processor.sh is still included for reference. It requires macOS with expect and takes a single hostname argument:

./setup_processor.sh <hostname-or-ip>

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

crestron_setup-1.0.2.tar.gz (88.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

crestron_setup-1.0.2-py3-none-any.whl (33.9 kB view details)

Uploaded Python 3

File details

Details for the file crestron_setup-1.0.2.tar.gz.

File metadata

  • Download URL: crestron_setup-1.0.2.tar.gz
  • Upload date:
  • Size: 88.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for crestron_setup-1.0.2.tar.gz
Algorithm Hash digest
SHA256 dd8a976a6d157cbcabf17ec0c9b0f7a77ac4bd8b96daeb68af5ba8df990910c6
MD5 dac76312970b568ec54e2b85b33d8c65
BLAKE2b-256 224612a2fd4e6c7343c289fc8b77ee9c2ae3bad4a17b66ba9faddbdad7611060

See more details on using hashes here.

Provenance

The following attestation bundles were made for crestron_setup-1.0.2.tar.gz:

Publisher: release.yml on mikejobson/Crestron-Processor-Setup

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file crestron_setup-1.0.2-py3-none-any.whl.

File metadata

  • Download URL: crestron_setup-1.0.2-py3-none-any.whl
  • Upload date:
  • Size: 33.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for crestron_setup-1.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 d89dbd26f23716e478aded2b956f729a1acfb2a994d45914df6f43ed4ff835f4
MD5 d21c70b8dc9d34aa2387e17a6181ba60
BLAKE2b-256 c917864fc65fcb1ddc160a53a1f52d0ffd214753c98cba6598b94b181da73d55

See more details on using hashes here.

Provenance

The following attestation bundles were made for crestron_setup-1.0.2-py3-none-any.whl:

Publisher: release.yml on mikejobson/Crestron-Processor-Setup

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page