Differences
This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
| onairscreen:manual-en [24.09.2026 20:59] – external edit 127.0.0.1 | onairscreen:manual-en [27.09.2026 02:22] (current) – external edit 127.0.0.1 | ||
|---|---|---|---|
| Line 2: | Line 2: | ||
| # OnAirScreen – User Manual | # OnAirScreen – User Manual | ||
| - | **Version: | + | **Version: |
| **Author:** Sascha Ludwig, [astrastudio.de](http:// | **Author:** Sascha Ludwig, [astrastudio.de](http:// | ||
| **Project: | **Project: | ||
| Line 24: | Line 24: | ||
| --- | --- | ||
| + | |||
| + | |||
| ## 1. Overview | ## 1. Overview | ||
| Line 39: | Line 41: | ||
| - **Remote control** via keyboard, mouse (double-click/ | - **Remote control** via keyboard, mouse (double-click/ | ||
| - **Home Assistant integration** via MQTT Autodiscovery | - **Home Assistant integration** via MQTT Autodiscovery | ||
| - | - **GPIO inputs** on Raspberry Pi (mixer GPI via optocoupler) | + | - **GPIO inputs** on Raspberry Pi (mixer GPI via optocoupler), **Axia Livewire GPIO** (multicast or LWRP TCP 93, e.g. mic ON lamp), and **MIDI** (Note/CC from one interface) |
| - **Instance links**: 1→n replicas (full LED/ | - **Instance links**: 1→n replicas (full LED/ | ||
| Line 47: | Line 49: | ||
| --- | --- | ||
| + | |||
| + | |||
| ## 2. Installation and Startup | ## 2. Installation and Startup | ||
| Line 65: | Line 69: | ||
| An older portable `.exe` is **not** removed by the MSI. Delete that copy yourself after installing. | An older portable `.exe` is **not** removed by the MSI. Delete that copy yourself after installing. | ||
| - | Windows only syncs internet time about once a week by default, which can show the wrong clock if the time source is **Local**. Shorten the OS sync interval, or use NTP / PTP / LTC in OnAirScreen (see [5.3 Time Source](#53-time-source)). | + | Windows only syncs internet time about once a week by default, which can show the wrong clock if the time source is **Local**. Shorten the OS sync interval, or use NTP / PTP / LTC in OnAirScreen (see [5.8 Time Source](#time_source)). |
| ### macOS | ### macOS | ||
| Line 143: | Line 147: | ||
| --- | --- | ||
| + | |||
| + | |||
| ## 3. Main Screen | ## 3. Main Screen | ||
| Line 170: | Line 176: | ||
| > **Note:** Status LEDs and AIR timers can be toggled by **left-click**, | > **Note:** Status LEDs and AIR timers can be toggled by **left-click**, | ||
| + | |||
| + | |||
| ### Fullscreen Mode | ### Fullscreen Mode | ||
| Line 181: | Line 189: | ||
| --- | --- | ||
| + | |||
| + | |||
| ## 4. Keyboard Shortcuts (Hotkeys) | ## 4. Keyboard Shortcuts (Hotkeys) | ||
| > On **macOS**, `Ctrl` is replaced by `Cmd (⌘)`. | > On **macOS**, `Ctrl` is replaced by `Cmd (⌘)`. | ||
| + | |||
| + | |||
| ### Application | ### Application | ||
| Line 242: | Line 254: | ||
| --- | --- | ||
| + | |||
| + | |||
| ## 5. Settings Dialog | ## 5. Settings Dialog | ||
| Line 248: | Line 262: | ||
| - | | Tab | Content | + | | Tab | Content |
| - | | ---------------- | --------------------------------------------------------------- | | + | | ---------------- | --------------------------------------------------------------------------- | |
| - | | **General** | + | | **General** |
| - | | **Updates** | + | | **Updates** |
| - | | **Network** | + | | **Network** |
| | **Links** | | **Links** | ||
| - | | **Time Source** | + | | **Advanced** |
| - | | **Advanced** | + | | **Timers** |
| - | | **Timers** | + | | **Fonts** |
| - | | **Fonts** | + | | **Time Source** |
| - | | **Audio Meters** | Level meters, source, TooLoud, Silence Detection | + | | **Audio Meters** | Level meters, source, TooLoud, Silence Detection |
| - | | **GPIO** | + | | **GPIO** |
| - | | **About** | + | | **About** |
| - | | **License** | + | | **License** |
| + | |||
| Line 278: | Line 294: | ||
| --- | --- | ||
| + | |||
| + | |||
| ### 5.1 General | ### 5.1 General | ||
| + | |||
| + | |||
| #### Instance Name | #### Instance Name | ||
| Line 339: | Line 359: | ||
| | Inactive BG Color | `inactivebgcolor` | | Inactive BG Color | `inactivebgcolor` | ||
| | Inactive Text Color | `inactivetextcolor` | `#555555` | | | Inactive Text Color | `inactivetextcolor` | `#555555` | | ||
| + | |||
| + | |||
| Line 355: | Line 377: | ||
| - | | Setting | + | | Setting |
| - | | --------------------- | ---------------------------- | ---------------- | + | | --------------------- | ---------------------------- | --------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | |
| - | | Clock Face | `Clock/ | + | | Clock Face | `Clock/ |
| - | | Digital (legacy) | + | | Digital (legacy) |
| - | | Hours LEDs | `Clock/ | + | | Hours LEDs | `Clock/ |
| - | | Seconds LEDs | `Clock/ | + | | Seconds LEDs | `Clock/ |
| - | | Digits LEDs | `Clock/ | + | | Digits LEDs | `Clock/ |
| - | | Show seconds | + | | Show seconds |
| - | | Seconds Layout | + | | Seconds Layout |
| - | | Static colon | `Clock/ | + | | Static colon | `Clock/ |
| - | | Use textclock | + | | Use textclock |
| - | | Replace IPs after 10s | `General/ | + | | Replace IPs after 10s | `General/ |
| - | | Replace with text | `General/ | + | | Replace with text | `General/ |
| + | |||
| Line 373: | Line 397: | ||
| - | | Setting | + | | Setting |
| - | | -------------------------------- | --------------------------------- | ------- | --------------------------------------------------------------------------- | | + | | ------------------------------- | --------------------------------- | ------- | ---------------------------------------------------------------- | |
| - | | Always start in fullscreen mode | `General/ | + | | Always start in fullscreen mode | `General/ |
| Line 381: | Line 405: | ||
| ### 5.2 Updates | ### 5.2 Updates | ||
| + | |||
| + | |||
| #### Update Check (compiled versions) | #### Update Check (compiled versions) | ||
| Line 395: | Line 421: | ||
| > | > | ||
| > To use update checking in the paid version, an **Update Key** must be entered. You can find it in the customer portal at [customer.astrastudio.de](https:// | > To use update checking in the paid version, an **Update Key** must be entered. You can find it in the customer portal at [customer.astrastudio.de](https:// | ||
| + | |||
| + | |||
| #### Activation (paid builds) | #### Activation (paid builds) | ||
| Line 412: | Line 440: | ||
| --- | --- | ||
| + | |||
| + | |||
| ### 5.3 Network | ### 5.3 Network | ||
| + | |||
| + | |||
| #### UDP / HTTP / Multicast | #### UDP / HTTP / Multicast | ||
| - | | Setting | + | | Setting |
| - | | ----------------- | --------------------------- | ------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | + | | ----------------- | --------------------------- | ------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| - | | UDP Port | `Network/ | + | | UDP Port | `Network/ |
| - | | HTTP Port | `Network/ | + | | HTTP Port | `Network/ |
| - | | Multicast Address | `Network/ | + | | Multicast Address | `Network/ |
| | Web Settings PIN | `Network/ | | Web Settings PIN | `Network/ | ||
| + | |||
| + | |||
| Line 458: | Line 492: | ||
| #### SNMP | #### SNMP | ||
| - | | Setting | + | |
| - | | --------------------- | -------------------------- | --------- | ------------------------------------------------------------------------ | | + | | Setting |
| - | | enable SNMP support | + | | ------------------- | ------------------------- | --------- | ---------------------------------------------------- | |
| - | | SNMP Listen Port | `SNMP/ | + | | enable SNMP support | `SNMP/ |
| - | | sysContact | + | | SNMP Listen Port | `SNMP/ |
| - | | sysLocation | + | | sysContact |
| - | | v2c Read Community | + | | sysLocation |
| - | | v2c Write Community | + | | v2c Read Community |
| - | | v3 User | + | | v2c Write Community | `SNMP/ |
| - | | v3 Auth Password | + | | v3 User |
| - | | v3 Priv Password | + | | v3 Auth Password |
| - | | enable SNMP traps | + | | v3 Priv Password |
| - | | Trap Host | + | | enable SNMP traps |
| - | | Trap Port | + | | Trap Host |
| - | | Trap Version | + | | Trap Port |
| - | | Trap Community | + | | Trap Version |
| - | | trap on silence | + | | Trap Community |
| - | | trap on warning | + | | trap on silence |
| - | | trap on LED change | + | | trap on warning |
| + | | trap on LED change | ||
| At least a v2c community or a v3 user must be set, or the agent will not start. Community and v3 passwords are masked. | At least a v2c community or a v3 user must be set, or the agent will not start. Community and v3 passwords are masked. | ||
| Line 482: | Line 518: | ||
| --- | --- | ||
| - | ### Links | + | |
| + | |||
| + | ### 5.4 Links | ||
| Link several OnAirScreens on the LAN (multicast discovery by **instance name**) or by typing a host and HTTP port. Instance names must be unique; a collision is flagged in Settings and the Web UI, and Apply is rejected. There are no exclusive master/ | Link several OnAirScreens on the LAN (multicast discovery by **instance name**) or by typing a host and HTTP port. Instance names must be unique; a collision is flagged in Settings and the Web UI, and Apply is rejected. There are no exclusive master/ | ||
| Line 495: | Line 533: | ||
| - | | Setting | Key | Default | Description | | + | | Setting |
| - | | ------- | --- | ------- | ----------- | | + | | ----------------------- | ----------------------- | --------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| - | | Enable instance linking | `Links/ | + | | Enable instance linking | `Links/ |
| - | | Replica *n* | `Links/ | + | | Replica *n* |
| - | | Map *n* | `Links/ | + | | Map *n* |
| - | | Replica of | `Links/ | + | | Replica of | `Links/ |
| --- | --- | ||
| - | ### 5.4 Time Source | ||
| - | The display clock can follow the local system clock, an NTP server, a PTPv2 (IEEE 1588-2008) master, or SMPTE LTC (Leo Bodnar LBE-1110 USB serial **or** decoded from a local audio input). **OnAirScreen never changes the operating-system clock.** NTP and PTP steer an independent timebase (`time.monotonic()`), | ||
| - | |||
| - | Date, text clock, and AIR3 top-of-hour follow the same wall time as the large clock when the source is Local, NTP, or PTP. With LTC they keep using the system date/time, because LTC has no calendar date. | ||
| - | |||
| - | |||
| - | | Setting | ||
| - | | ------------------ | ------------------------------ | -------------- | ------------------------------------------------------------------------- | | ||
| - | | Time Source | ||
| - | | Enable NTP-Check | ||
| - | | NTP Server | ||
| - | | PTP Interface | ||
| - | | PTP Domain | ||
| - | | LTC Input | `TimeSource/ | ||
| - | | LTC Serial Port | `TimeSource/ | ||
| - | | LTC Audio Device | ||
| - | | LTC Channel | ||
| - | | LTC unlock warning | `TimeSource/ | ||
| - | |||
| - | |||
| - | **Local System Clock:** The display uses the OS clock. With NTP-Check enabled, the OS clock is compared to the NTP server (deviation > 0.3 s or errors → warning, priority -1). | ||
| - | |||
| - | **NTP Server:** OnAirScreen queries the NTP Server field and steers its own clock. The OS time is not used after the first successful sample. The field stays editable even when NTP-Check is off. Loss of NTP: last time keeps running and a warning is shown. | ||
| - | |||
| - | **PTPv2 IEEE 1588-2008: | ||
| - | |||
| - | **LTC:** One time source with two inputs. Frame rate is inferred from incoming frames (24 / 25 / 30). Loss of LTC: last timecode is frozen (`LTC NOT LOCKED`). The large WARN messages (`waiting for LTC lock`, `Clock not LTC synchronized`, | ||
| - | |||
| - | **LBE-1110 Serial:** USB CDC virtual serial port of a [Leo Bodnar LBE-1110](https:// | ||
| - | |||
| - | **Audio Input:** Decodes SMPTE LTC (biphase-mark) from a **local** PortAudio capture device, independent of Audio Meters (not Livewire/ | ||
| - | |||
| - | The clock lock LED (bottom right) is green when the selected source is locked and red when it is not. Next to it: `PTP LOCK` / `PTP NOT LOCKED` / `PTP ERROR`, `NTP LOCK` / `NTP NOT LOCKED`, `LTC LOCK` / `LTC NOT LOCKED`, or `LOCAL`. | ||
| - | |||
| - | > **Recommendation: | ||
| - | |||
| - | --- | ||
| ### 5.5 Advanced | ### 5.5 Advanced | ||
| Line 566: | Line 567: | ||
| | `MMM` / `MMMM` | Month name (short / long) | | | `MMM` / `MMMM` | Month name (short / long) | | ||
| | `yy` / `yyyy` | | `yy` / `yyyy` | ||
| + | |||
| + | |||
| Line 589: | Line 592: | ||
| --- | --- | ||
| + | |||
| + | |||
| ### 5.6 Timers | ### 5.6 Timers | ||
| Line 623: | Line 628: | ||
| --- | --- | ||
| + | |||
| + | |||
| ### 5.7 Fonts | ### 5.7 Fonts | ||
| Line 643: | Line 650: | ||
| --- | --- | ||
| - | ### 5.8 About | ||
| - | | Element | + | ### 5.8 Time Source |
| - | | ------------------ | ------------------------------------------------------- | | + | |
| - | | Version | + | |
| - | | Distribution | + | |
| - | | Settings Path | Path to the configuration file on this system | + | |
| - | | Log Folder | + | |
| - | | Open log folder | + | |
| - | | Loglevel | + | |
| - | | Enable Reset | Checkbox to enable the reset button | + | |
| - | | Reset all settings | Resets **all** settings to defaults (cannot be undone) | + | |
| - | | Reboot | + | |
| - | | Shutdown | + | |
| + | The display clock can follow the local system clock, an NTP server, a PTPv2 (IEEE 1588-2008) master, or SMPTE LTC (Leo Bodnar LBE-1110 USB serial **or** decoded from a local audio input). **OnAirScreen never changes the operating-system clock.** NTP and PTP steer an independent timebase (`time.monotonic()`), | ||
| + | |||
| + | Date, text clock, and AIR3 top-of-hour follow the same wall time as the large clock when the source is Local, NTP, or PTP. With LTC they keep using the system date/time, because LTC has no calendar date. | ||
| + | |||
| + | |||
| + | | Setting | ||
| + | | ------------------ | ------------------------------ | -------------- | ------------------------------------------------------------------------- | | ||
| + | | Time Source | ||
| + | | Enable NTP-Check | ||
| + | | NTP Server | ||
| + | | PTP Interface | ||
| + | | PTP Domain | ||
| + | | LTC Input | `TimeSource/ | ||
| + | | LTC Serial Port | `TimeSource/ | ||
| + | | LTC Audio Device | ||
| + | | LTC Channel | ||
| + | | LTC unlock warning | `TimeSource/ | ||
| + | |||
| + | |||
| + | **Local System Clock:** The display uses the OS clock. With NTP-Check enabled, the OS clock is compared to the NTP server (deviation > 0.3 s or errors → warning, priority -1). | ||
| + | |||
| + | **NTP Server:** OnAirScreen queries the NTP Server field and steers its own clock. The OS time is not used after the first successful sample. The field stays editable even when NTP-Check is off. Loss of NTP: last time keeps running and a warning is shown. | ||
| + | |||
| + | **PTPv2 IEEE 1588-2008: | ||
| + | |||
| + | **LTC:** One time source with two inputs. Frame rate is inferred from incoming frames (24 / 25 / 30). Loss of LTC: last timecode is frozen (`LTC NOT LOCKED`). The large WARN messages (`waiting for LTC lock`, `Clock not LTC synchronized`, | ||
| + | |||
| + | **LBE-1110 Serial:** USB CDC virtual serial port of a [Leo Bodnar LBE-1110](https:// | ||
| + | |||
| + | **Audio Input:** Decodes SMPTE LTC (biphase-mark) from a **local** PortAudio capture device, independent of Audio Meters (not Livewire/ | ||
| + | |||
| + | The clock lock LED (bottom right) is green when the selected source is locked and red when it is not. Next to it: `PTP LOCK` / `PTP NOT LOCKED` / `PTP ERROR`, `NTP LOCK` / `NTP NOT LOCKED`, `LTC LOCK` / `LTC NOT LOCKED`, or `LOCAL`. | ||
| + | |||
| + | > **Recommendation: | ||
| --- | --- | ||
| + | |||
| + | |||
| ### 5.9 Audio Meters | ### 5.9 Audio Meters | ||
| Line 723: | Line 754: | ||
| --- | --- | ||
| - | ### 5.10 GPIO | ||
| - | GPIO maps contacts | + | |
| + | ### 5.10 GPIO / MIDI | ||
| + | |||
| + | GPIO maps contacts, Livewire source pins, and MIDI messages | ||
| #### Raspberry Pi | #### Raspberry Pi | ||
| Line 734: | Line 767: | ||
| - | | Setting | + | | Setting |
| - | | -------------- | ------------------- | ---------------------------- | --------------------------------------- | | + | | -------------- | ------------------- | ---------------------------- | ---------------------------------------------------------------- | |
| - | | Enable GPIO | `GPIO/ | + | | Enable GPIO | `GPIO/ |
| - | | Debounce | + | | Debounce |
| - | | GPI*n* Enable | + | | GPI*n* Enable |
| - | | GPI*n* Name | `GPIO/ | + | | GPI*n* Name | `GPIO/ |
| - | | GPI*n* BCM pin | `GPIO/ | + | | GPI*n* BCM pin | `GPIO/ |
| - | | GPI*n* Invert | + | | GPI*n* Invert |
| - | | GPI*n* Mode | `GPIO/ | + | | GPI*n* Mode | `GPIO/ |
| | GPI*n* Actions | `GPIO/ | | GPI*n* Actions | `GPIO/ | ||
| | GPI*n* Command | `GPIO/ | | GPI*n* Command | `GPIO/ | ||
| Line 818: | Line 851: | ||
| - Pi 5 overview: [Raspberry Pi 5](https:// | - Pi 5 overview: [Raspberry Pi 5](https:// | ||
| - Compute Module IO boards: [Compute Module](https:// | - Compute Module IO boards: [Compute Module](https:// | ||
| + | |||
| + | |||
| #### Axia Livewire | #### Axia Livewire | ||
| Line 830: | Line 865: | ||
| Typical microphone ON-AIR profile: **GPO pin 1** is the ON lamp (latched while the channel is ON; often off during TALK/MUTE). GPI 1 would be the ON command *to* the console — OAS does not send that. | Typical microphone ON-AIR profile: **GPO pin 1** is the ON lamp (latched while the channel is ON; often off during TALK/MUTE). GPI 1 would be the ON command *to* the console — OAS does not send that. | ||
| - | | Setting | + | |
| - | | -------------------- | ---------------------- | ------------------ | ------------------------------------------------ | | + | | Setting |
| - | | Enable Livewire GPIO | `GPIO/ | + | | -------------------- | ---------------------- | ------------------ | ----------------------------------------------------------------------- | |
| - | | Mode | `GPIO/ | + | | Enable Livewire GPIO | `GPIO/ |
| - | | Host | `GPIO/ | + | | Mode | `GPIO/ |
| - | | Port | `GPIO/ | + | | Host | `GPIO/ |
| - | | Password | + | | Port | `GPIO/ |
| - | | AoIP interface | + | | Password |
| - | | Debounce | + | | AoIP interface |
| - | | GPI*n* Enable | + | | Debounce |
| - | | GPI*n* Name | `GPIO/ | + | | GPI*n* Enable |
| + | | GPI*n* Name | `GPIO/ | ||
| | GPI*n* Channel/ | | GPI*n* Channel/ | ||
| - | | GPI*n* Direction | + | | GPI*n* Direction |
| - | | GPI*n* Pin | `GPIO/ | + | | GPI*n* Pin | `GPIO/ |
| - | | GPI*n* Invert | + | | GPI*n* Invert |
| - | | GPI*n* Mode | `GPIO/ | + | | GPI*n* Mode | `GPIO/ |
| - | | GPI*n* Actions | + | | GPI*n* Actions |
| - | | GPI*n* Command | + | | GPI*n* Command |
| Factory mapping (master **Enable Livewire GPIO** stays off): row 1 channel/ | Factory mapping (master **Enable Livewire GPIO** stays off): row 1 channel/ | ||
| Line 856: | Line 893: | ||
| **Level** (typical ON lamp): GPO 1 low sends `LED1:ON`, high sends `OFF`. Invert stays **off** unless the console polarity is reversed. | **Level** (typical ON lamp): GPO 1 low sends `LED1:ON`, high sends `OFF`. Invert stays **off** unless the console polarity is reversed. | ||
| + | |||
| + | #### MIDI | ||
| + | |||
| + | **MIDI** reads one input interface (Settings → GPIO → MIDI) and maps Note or CC messages to the same LED and AIR commands. **Learn** waits up to 10 seconds for the next Note or CC and fills channel, type, and number. Clock, Active Sensing, and SysEx are ignored. | ||
| + | |||
| + | |||
| + | | Setting | ||
| + | | ----------------- | ----------------------- | --------- | ------------------------------------------------------------------- | | ||
| + | | Enable MIDI | `GPIO/ | ||
| + | | Interface | ||
| + | | Debounce | ||
| + | | MIDI*n* Enable | ||
| + | | MIDI*n* Name | `GPIO/ | ||
| + | | MIDI*n* Channel | ||
| + | | MIDI*n* Type | `GPIO/ | ||
| + | | MIDI*n* Number | ||
| + | | MIDI*n* Threshold | `GPIO/ | ||
| + | | MIDI*n* Behavior | ||
| + | | MIDI*n* Invert | ||
| + | | MIDI*n* Actions | ||
| + | | MIDI*n* Command | ||
| + | |||
| + | |||
| + | **On/Off** holds the level: Note On (velocity > 0) or a CC at the threshold sends `LED1:ON`, Note Off or a CC below the threshold sends `OFF`. **Oneshot** sends `LED1:ON` once per press, or `LED1:OFF` when Invert is on. **Toggle** sends `LED1: | ||
| + | |||
| + | **Only On/Off rows appear in Logic.** Oneshot and Toggle are missing from the Logic input menu even when the row is enabled and named, because they do not hold a level. Every On/Off row is listed, including rows whose Enable box is off. That disabled input counts as off inside a rule. Unnamed On/Off rows are labeled MIDI1 … MIDI8. A name is shown as `PAD (MIDI1)`. To use a MIDI row in Logic, set Behavior to On/Off. | ||
| #### Logic | #### Logic | ||
| - | **Logic** combines Raspberry Pi and Livewire inputs. Each rule has one operator, one or more inputs, and one or more outputs. The outputs follow the combined level: a command is sent only when that result changes. | + | **Logic** combines Raspberry Pi, Livewire, and MIDI On/ |
| + | |||
| + | |||
| + | | Operator | Outputs turn on | Outputs turn off | | ||
| + | | -------- | ------------------------------ | -------------------------------- | | ||
| + | | OR | any selected input is active | ||
| + | | AND | every selected input is active | any selected input is inactive | ||
| - | | Operator | Outputs turn on | Outputs turn off | | ||
| - | | -------- | --------------- | ---------------- | | ||
| - | | OR | any selected input is active | every selected input is inactive | | ||
| - | | AND | every selected input is active | any selected input is inactive | | ||
| Example: name Pi GPI1 `MIC1` and Pi GPI2 `MIC2`. Rule `OR` with those two inputs and outputs LED1 and AIR1 stays on while either microphone is open, and turns both off only when both are closed. | Example: name Pi GPI1 `MIC1` and Pi GPI2 `MIC2`. Rule `OR` with those two inputs and outputs LED1 and AIR1 stays on while either microphone is open, and turns both off only when both are closed. | ||
| Line 870: | Line 935: | ||
| Inputs that are disabled, missing, or not yet seen count as off. An empty input list stays off. Resets and custom commands fire when the rule becomes true, not when it becomes false. Direct row actions (including edge modes) keep working beside the rules. If the same LED or AIR timer is also set on a row or on another rule, that Logic row shows a warning. | Inputs that are disabled, missing, or not yet seen count as off. An empty input list stays off. Resets and custom commands fire when the rule becomes true, not when it becomes false. Direct row actions (including edge modes) keep working beside the rules. If the same LED or AIR timer is also set on a row or on another rule, that Logic row shows a warning. | ||
| - | | Setting | Key | Default | Description | | + | |
| - | | ------- | --- | ------- | ----------- | | + | | Setting |
| - | | Rule *n* Enable | `GPIO/ | + | | ----------------- | --------------------- | --------- | --------------------------------------------- | |
| - | | Rule *n* Operator | `GPIO/ | + | | Rule *n* Enable |
| - | | Rule *n* Inputs | `GPIO/ | + | | Rule *n* Operator | `GPIO/ |
| - | | Rule *n* Outputs | `GPIO/ | + | | Rule *n* Inputs |
| - | | Rule *n* Command | `GPIO/ | + | | Rule *n* Outputs |
| + | | Rule *n* Command | ||
| Eight rules. A microphone that is already on when OnAirScreen starts turns a matching rule on as soon as that input level is known. | Eight rules. A microphone that is already on when OnAirScreen starts turns a matching rule on as soon as that input level is known. | ||
| --- | --- | ||
| + | |||
| + | |||
| + | |||
| + | ### 5.11 About | ||
| + | |||
| + | |||
| + | | Element | ||
| + | | ------------------ | ----------------------------------------------------------- | | ||
| + | | Version | ||
| + | | Distribution | ||
| + | | Settings Path | Path to the configuration file on this system | ||
| + | | Log Folder | ||
| + | | Open log folder | ||
| + | | Loglevel | ||
| + | | Enable Reset | Checkbox to enable the reset button | ||
| + | | Reset all settings | Resets **all** settings to defaults (cannot be undone) | ||
| + | | Reboot | ||
| + | | Shutdown | ||
| + | |||
| + | |||
| + | --- | ||
| + | |||
| + | |||
| ## 6. Features in Detail | ## 6. Features in Detail | ||
| + | |||
| + | |||
| ### 6.1 Status LEDs | ### 6.1 Status LEDs | ||
| Line 892: | Line 984: | ||
| - **Autoflash: | - **Autoflash: | ||
| - **20sec flash:** Blinks for 20 seconds, then turns off automatically | - **20sec flash:** Blinks for 20 seconds, then turns off automatically | ||
| + | |||
| + | |||
| ### 6.2 AIR Timers | ### 6.2 AIR Timers | ||
| Line 901: | Line 995: | ||
| - Simple stopwatch: start/stop, seconds reset to 0 on start | - Simple stopwatch: start/stop, seconds reset to 0 on start | ||
| - Control: `M`/`/` (AIR1), `P`/`*` (AIR2), or left-click the timer | - Control: `M`/`/` (AIR1), `P`/`*` (AIR2), or left-click the timer | ||
| + | |||
| + | |||
| #### AIR3 (Radio Timer) | #### AIR3 (Radio Timer) | ||
| Line 922: | Line 1018: | ||
| - | | Input | Meaning | + | | Input | Meaning |
| - | | ---------------- | --------------------------------- | | + | | ------------------------ | --------------------------------- | |
| | `2:10`, `2,10` or `2.10` | 2 minutes 10 seconds (count-down) | | | `2:10`, `2,10` or `2.10` | 2 minutes 10 seconds (count-down) | | ||
| - | | `30` | + | | `30` |
| - | | `0` | Count-up mode | | + | | `0` | Count-up mode | |
| + | |||
| Line 933: | Line 1031: | ||
| - Like AIR3, but without Top-of-Hour function | - Like AIR3, but without Top-of-Hour function | ||
| - Control: `S` or left-click (start/ | - Control: `S` or left-click (start/ | ||
| + | |||
| + | |||
| ### 6.3 Text Lines NOW, NEXT, WARN | ### 6.3 Text Lines NOW, NEXT, WARN | ||
| Line 968: | Line 1068: | ||
| | Priority 2 | `WARN:2:` *(empty text after colon)* | | | Priority 2 | `WARN:2:` *(empty text after colon)* | | ||
| | Web UI | X button next to the warning | | Web UI | X button next to the warning | ||
| + | |||
| + | |||
| Line 997: | Line 1099: | ||
| ](https:// | ||
| + | |||
| - **Text clock:** Spoken time display (e.g. " | - **Text clock:** Spoken time display (e.g. " | ||
| - | - **Time source:** Local, NTP, PTPv2, or LTC — see [5.3 Time Source](#53-time-source); the OS clock is never set | + | - **Time source:** Local, NTP, PTPv2, or LTC — see [5.8 Time Source](#time_source); the OS clock is never set |
| - **Lock LED** bottom right: green = locked, red = not locked (`PTP LOCK` / `NTP LOCK` / `LTC LOCK`, or `LOCAL`) | - **Lock LED** bottom right: green = locked, red = not locked (`PTP LOCK` / `NTP LOCK` / `LTC LOCK`, or `LOCAL`) | ||
| - **Weather widget:** Optionally displayed next to the clock (OpenWeatherMap) | - **Weather widget:** Optionally displayed next to the clock (OpenWeatherMap) | ||
| + | |||
| + | |||
| ### 6.6 System Commands | ### 6.6 System Commands | ||
| Line 1016: | Line 1121: | ||
| ### 6.7 GPIO Inputs | ### 6.7 GPIO Inputs | ||
| - | Mixer GPI (contact closure) can drive LEDs and AIR timers through **Raspberry Pi** GPIO. Axia consoles can drive the same LED and AIR actions through **Livewire GPIO** (multicast source channel or LWRP TCP 93, e.g. mic ON lamp). | + | Mixer GPI (contact closure) can drive LEDs and AIR timers through **Raspberry Pi** GPIO. Axia consoles can drive the same LED and AIR actions through **Livewire GPIO** (multicast source channel or LWRP TCP 93, e.g. mic ON lamp). |
| --- | --- | ||
| + | |||
| + | |||
| ## 7. Remote Control and API | ## 7. Remote Control and API | ||
| Line 1037: | Line 1144: | ||
| echo " | echo " | ||
| ``` | ``` | ||
| + | |||
| + | |||
| ### 7.2 HTTP (Port 8010) | ### 7.2 HTTP (Port 8010) | ||
| Line 1044: | Line 1153: | ||
| curl " | curl " | ||
| ``` | ``` | ||
| + | |||
| + | |||
| ### 7.3 Web UI | ### 7.3 Web UI | ||
| Line 1068: | Line 1179: | ||
| - Links in the overlay: same Nearby list, Add as replica / Use as source, and Replicas / Sources grids as the desktop Settings | - Links in the overlay: same Nearby list, Add as replica / Use as source, and Replicas / Sources grids as the desktop Settings | ||
| - Audio Meters in the overlay: Livewire Source and AES67 Stream dropdowns (live discovery while the overlay is open) plus Paste SDP | - Audio Meters in the overlay: Livewire Source and AES67 Stream dropdowns (live discovery while the overlay is open) plus Paste SDP | ||
| + | |||
| + | |||
| ### 7.4 REST API | ### 7.4 REST API | ||
| Line 1090: | Line 1203: | ||
| " | " | ||
| " | " | ||
| - | " | + | " |
| " | " | ||
| " | " | ||
| Line 1195: | Line 1308: | ||
| Drag presets for LED1–4 (toggle + colour), AIR1–4 with live caption and time on the button (MIC = AIR1), TOTH, Reset AIR3/4, NOW / NEXT / WARN, Silence, Loudness I+LRA, and Reset I+LRA. | Drag presets for LED1–4 (toggle + colour), AIR1–4 with live caption and time on the button (MIC = AIR1), TOTH, Reset AIR3/4, NOW / NEXT / WARN, Silence, Loudness I+LRA, and Reset I+LRA. | ||
| - | Variables such as `$(oas: | + | Variables such as `$(oas: |
| If you cannot load a custom module, **Generic OSC** remains available (next section). Status push over OSC is slower (every 5 seconds) than the HTTP poll / WebSocket. | If you cannot load a custom module, **Generic OSC** remains available (next section). Status push over OSC is slower (every 5 seconds) than the HTTP poll / WebSocket. | ||
| Line 1235: | Line 1348: | ||
| python3 utils/ | python3 utils/ | ||
| ``` | ``` | ||
| + | |||
| + | |||
| #### Alternative: | #### Alternative: | ||
| Line 1280: | Line 1395: | ||
| ### 7.9 Command Reference | ### 7.9 Command Reference | ||
| + | |||
| + | |||
| #### Control Commands | #### Control Commands | ||
| Line 1306: | Line 1423: | ||
| | `CMD: | | `CMD: | ||
| | `CMD: | | `CMD: | ||
| + | |||
| + | |||
| Line 1315: | Line 1434: | ||
| - | | Command | + | | Command |
| - | | ----------------------------------------------- | ------------------------- | | + | | ----------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| - | | `CONF: | + | | `CONF: |
| - | | `CONF: | + | | `CONF: |
| - | | `CONF: | + | | `CONF: |
| - | | `CONF: | + | | `CONF: |
| - | | `CONF: | + | | `CONF: |
| - | | `CONF: | + | | `CONF: |
| - | | `CONF: | + | | `CONF: |
| - | | `CONF: | + | | `CONF: |
| - | | `CONF: | + | | `CONF: |
| - | | `CONF: | + | | `CONF: |
| - | | `CONF: | + | | `CONF: |
| - | | `CONF: | + | | `CONF: |
| - | | `CONF: | + | | `CONF: |
| | `CONF: | | `CONF: | ||
| - | | `CONF: | + | | `CONF: |
| - | | `CONF: | + | | `CONF: |
| - | | `CONF: | + | | `CONF: |
| - | | `CONF: | + | | `CONF: |
| - | | `CONF: | + | | `CONF: |
| - | | `CONF: | + | | `CONF: |
| - | | `CONF: | + | | `CONF: |
| - | | `CONF: | + | | `CONF: |
| - | | `CONF: | + | | `CONF: |
| - | | `CONF: | + | | `CONF: |
| - | | `CONF: | + | | `CONF: |
| - | | `CONF: | + | | `CONF: |
| - | | `CONF: | + | | `CONF: |
| - | | `CONF: | + | | `CONF: |
| - | | `CONF: | + | | `CONF: |
| - | | `CONF: | + | | `CONF: |
| - | | `CONF: | + | | `CONF: |
| - | | `CONF: | + | | `CONF: |
| - | | `CONF: | + | | `CONF: |
| - | | `CONF: | + | | `CONF: |
| - | | `CONF: | + | | `CONF: |
| - | | `CONF: | + | | `CONF: |
| - | | `CONF: | + | | `CONF: |
| - | | `CONF: | + | | `CONF: |
| - | | `CONF: | + | | `CONF: |
| - | | `CONF: | + | | `CONF: |
| - | | `CONF: | + | | `CONF: |
| - | | `CONF: | + | | `CONF: |
| - | | `CONF: | + | | `CONF: |
| - | | `CONF: | + | | `CONF: |
| - | | `CONF: | + | | `CONF: |
| - | | `CONF: | + | | `CONF: |
| - | | `CONF: | + | | `CONF: |
| - | | `CONF: | + | | `CONF: |
| - | | `CONF: | + | | `CONF: |
| - | | `CONF: | + | | `CONF: |
| - | | `CONF: | + | | `CONF: |
| - | | `CONF: | + | | `CONF: |
| - | | `CONF: | + | | `CONF: |
| - | | `CONF: | + | | `CONF: |
| - | | `CONF: | + | | `CONF: |
| - | | `CONF: | + | | `CONF: |
| - | | `CONF: | + | | `CONF: |
| - | | `CONF: | + | | `CONF: |
| - | | `CONF: | + | | `CONF: |
| - | | `CONF: | + | | `CONF: |
| - | | `CONF: | + | | `CONF: |
| - | | `CONF: | + | | `CONF: |
| - | | `CONF: | + | | `CONF: |
| - | | `CONF: | + | | `CONF: |
| - | | `CONF: | + | | `CONF: |
| - | | `CONF: | + | | `CONF: |
| - | | `CONF: | + | | `CONF: |
| Line 1391: | Line 1510: | ||
| --- | --- | ||
| + | |||
| + | |||
| ## 8. Presets (Profiles) | ## 8. Presets (Profiles) | ||
| Line 1411: | Line 1532: | ||
| --- | --- | ||
| + | |||
| + | |||
| ## 9. Command-Line Options | ## 9. Command-Line Options | ||
| Line 1421: | Line 1544: | ||
| - | | Option | + | | Option |
| - | | ------------------- | ----------------------------------------------- | -------------------------------------------------------- | | + | | ------------------ | ----------------------------------------------- | ---------------------------------------------------- | |
| - | | `-l`, `--loglevel` | + | | `-l`, `--loglevel` | `DEBUG`, `INFO`, `WARNING`, `ERROR`, `CRITICAL` | Override log level (not saved) |
| - | | `--start-time` | + | | `--start-time` |
| Line 1430: | Line 1553: | ||
| --- | --- | ||
| + | |||
| + | |||
| ## 10. Configuration Storage Location | ## 10. Configuration Storage Location | ||
| Line 1467: | Line 1592: | ||
| --- | --- | ||
| + | |||
| + | |||
| ## 11. Troubleshooting | ## 11. Troubleshooting | ||
| + | |||
| + | |||
| ### OnAirScreen won't start / port in use | ### OnAirScreen won't start / port in use | ||
| Line 1474: | Line 1603: | ||
| - Check if UDP port 3310 or HTTP port 8010 is already in use | - Check if UDP port 3310 or HTTP port 8010 is already in use | ||
| - Change ports in **Network** | - Change ports in **Network** | ||
| + | |||
| + | |||
| ### Remote control not working | ### Remote control not working | ||
| Line 1480: | Line 1611: | ||
| - Use correct IP address and ports | - Use correct IP address and ports | ||
| - Test locally with `curl http:// | - Test locally with `curl http:// | ||
| + | |||
| + | |||
| ### GPIO not switching LEDs or timers | ### GPIO not switching LEDs or timers | ||
| Line 1487: | Line 1620: | ||
| - Pi GPIO works on Raspberry Pi only. Other platforms show “not available” on that sub-tab | - Pi GPIO works on Raspberry Pi only. Other platforms show “not available” on that sub-tab | ||
| - Check **Settings → GPIO → Raspberry Pi** status | - Check **Settings → GPIO → Raspberry Pi** status | ||
| - | - Status " | ||
| - Use a PC817 module; never feed mixer 5–24 V into Pi pins | - Use a PC817 module; never feed mixer 5–24 V into Pi pins | ||
| - Confirm Invert (default on for contacts to GND) and Level vs edge mode | - Confirm Invert (default on for contacts to GND) and Level vs edge mode | ||
| Line 1500: | Line 1632: | ||
| - No packets / LED stays off: confirm the console/ | - No packets / LED stays off: confirm the console/ | ||
| - Mic already ON at OAS start: OAS requests the current state after join/ | - Mic already ON at OAS start: OAS requests the current state after join/ | ||
| + | |||
| + | |||
| ### Companion module shows Disconnected | ### Companion module shows Disconnected | ||
| Line 1506: | Line 1640: | ||
| - Confirm `curl http://< | - Confirm `curl http://< | ||
| - After `yarn build`, restart Companion so it reloads the local module | - After `yarn build`, restart Companion so it reloads the local module | ||
| + | |||
| + | |||
| ### Silence Detection does not trigger | ### Silence Detection does not trigger | ||
| Line 1513: | Line 1649: | ||
| - Lower the dBFS threshold or shorten the duration if the residual noise sits above −50 dBFS | - Lower the dBFS threshold or shorten the duration if the residual noise sits above −50 dBFS | ||
| - If the device or stream is missing, enable **Trigger silence warning when Device/ | - If the device or stream is missing, enable **Trigger silence warning when Device/ | ||
| + | |||
| + | |||
| ### MQTT connection fails | ### MQTT connection fails | ||
| Line 1519: | Line 1657: | ||
| - Are credentials correct? | - Are credentials correct? | ||
| - Is `enable MQTT support` enabled and saved with **Apply**? | - Is `enable MQTT support` enabled and saved with **Apply**? | ||
| + | |||
| + | |||
| ### NTP warning appears permanently | ### NTP warning appears permanently | ||
| Line 1525: | Line 1665: | ||
| - If the time source is Local, synchronize system time or switch the time source to NTP/PTP | - If the time source is Local, synchronize system time or switch the time source to NTP/PTP | ||
| - Disable NTP check if not needed | - Disable NTP check if not needed | ||
| + | |||
| + | |||
| ### Weather widget shows nothing | ### Weather widget shows nothing | ||
| Line 1531: | Line 1673: | ||
| - Search the city name with **Find** next to City ID, or enter the ID by hand | - Search the city name with **Find** next to City ID, or enter the ID by hand | ||
| - Run **Test API** in settings | - Run **Test API** in settings | ||
| + | |||
| + | |||
| ### Livewire meters show no levels | ### Livewire meters show no levels | ||
| Line 1539: | Line 1683: | ||
| - UDP port 5004 allowed? | - UDP port 5004 allowed? | ||
| - **No names in Livewire Source:** advertisements are `239.192.255.3: | - **No names in Livewire Source:** advertisements are `239.192.255.3: | ||
| + | |||
| + | |||
| ### AES67 meters: no streams or no levels | ### AES67 meters: no streams or no levels | ||
| Line 1544: | Line 1690: | ||
| - **No streams in the combo:** AoIP interface, VLAN, and IGMP; SAP is `239.255.255.255: | - **No streams in the combo:** AoIP interface, VLAN, and IGMP; SAP is `239.255.255.255: | ||
| - **Stream listed, meter silent:** RTP address/ | - **Stream listed, meter silent:** RTP address/ | ||
| + | |||
| + | |||
| ### Reset settings | ### Reset settings | ||
| Line 1551: | Line 1699: | ||
| 3. Click **Reset all OnAirScreen settings to default** | 3. Click **Reset all OnAirScreen settings to default** | ||
| 4. Click **Apply** | 4. Click **Apply** | ||
| + | |||
| + | |||
| ### Sending logs for support | ### Sending logs for support | ||
| Line 1563: | Line 1713: | ||
| --- | --- | ||
| + | |||
| + | |||
| ## Appendix: Event Logging | ## Appendix: Event Logging | ||