API reference¶
Generated from the docstrings in the package. The guides cover how these fit together; this page is the exhaustive list.
Autodoc emits reStructuredText, which the markdown parser does not read, so
every directive below sits in an eval-rst block. Without it the page renders
the directive source as prose and the build still succeeds.
mx_remote - Python 3 library for interfacing with MX Remote compatible devices.
Provides device discovery, video/audio routing, volume control, remote control key passthrough, V2IP (OneIP) streaming, and multiviewer control over a local network using UDP multicast or broadcast.
- Main entry point:
>>> import mx_remote >>> mx = mx_remote.Remote() >>> await mx.start_async()
- Key classes:
Remote Main component that manages network connections and device registry. DeviceBase A discovered device on the network (matrix, OneIP unit, amplifier). BayBase A single input or output port on a device. MxrCallbacks Subclass to receive notifications on state changes.
See README.md for full usage documentation.
Client¶
Remote owns the socket, the device registry and the background probe that
keeps both in step with the mesh.
Remote device discovery and management over UDP multicast/broadcast.
- class mx_remote.remote.Remote.Remote[source]¶
Bases:
DeviceRegistry,ConnectionCallbacksMain component that handles the network connections and registration of remote devices
- __init__(target_ip=None, port=None, http_session=None, open_connection=True, callbacks=None, name='MXR Python', local_ip=None, broadcast=None, addr_filter=None, uid_path=None)[source]¶
Initialise the remote controller.
- Parameters:
target_ip (str | None) – multicast/broadcast IP to use, or None for the default
port (int | None) – UDP port to use, or None for the default
http_session (ClientSession | None) – shared aiohttp session for API calls, or None to create one
open_connection (bool) – open the UDP connection immediately when True
callbacks (MxrCallbacks | None) – event callbacks for device state changes
name (str) – human-readable name advertised on the network
local_ip (str | None) – local interface IP to bind to, or None for any
broadcast (bool | None) – use broadcast instead of multicast when True
addr_filter (str | None) – only log frames from this IP address when set
uid_path (str | None) – file holding this client’s uid, or None for ~/.mxr-uid. Give concurrent clients on one host separate paths - see _load_uid
- Return type:
None
- property uid: MxrDeviceUid¶
uid of this device
- property callbacks: MxrCallbacks¶
callbacks to call when the device is updated
- property http_session: ClientSession¶
Active HTTP client session for API commands
- async update_config(callbacks=None, name=None, target_ip=None, port=None, local_ip=None, broadcast=None)[source]¶
Update runtime configuration, reconnecting if network parameters changed.
- has_completed_devices()[source]¶
Return True if at least one registered device has completed configuration.
- Return type:
- async start_async()[source]¶
Start the server that listens for mx_remote frames from other devices.
- Return type:
None
- get_by_serial(serial)[source]¶
Get the cached device matching the given serial number, or None.
- Parameters:
serial (str)
- Return type:
DeviceBase | None
- get_by_uid(remote_id)[source]¶
Get the cached device matching the given unique id, or None.
- Parameters:
remote_id (str | MxrDeviceUid | None)
- Return type:
DeviceBase | None
- uid_to_user_string(remote_id)[source]¶
return the serial of the unit if the uid is known, or the uid as string if it isn’t
- Parameters:
remote_id (str | MxrDeviceUid | bytes | None)
- Return type:
- get_bay_by_portnum(remote_id, portnum)[source]¶
Get the cached bay for a device, given the device id and port number.
- Parameters:
remote_id (str | MxrDeviceUid)
portnum (int)
- Return type:
BayBase | None
- get_bay_by_portname(remote_id, portname)[source]¶
get a bay of a device by its unique id and port name
- Parameters:
remote_id (str | MxrDeviceUid)
portname (str)
- Return type:
BayBase | None
- tx_discover()[source]¶
Transmit a discover frame. All remotes will respond with a hello frame.
- Return type:
- on_connection_made()[source]¶
Callback invoked after ConnectionAsync has started the server.
- Return type:
None
Devices, bays and callbacks¶
A client works against these types rather than the classes implementing them: they are what the registry hands out and what a callback receives.
- mx_remote.Interface.mxr_valid_addresses()[source]¶
Get the list of valid local_ip addresses that can be used
- mx_remote.Interface.mxr_broadcast_address(local_ip=None)[source]¶
Get the broadcast address for the interface matching local_ip, or the first non-loopback interface.
- class mx_remote.Interface.DeviceStatus[source]¶
Bases:
IntEnumStatus of a device on the network
- ONLINE = 0¶
unit is online
- OFFLINE = 1¶
unit is offline
- REBOOTING = 2¶
unit indicated that it is going to reboot
- BOOTING = 3¶
unit is booting
- INACTIVE = 4¶
bay is inactive (V2IP encoder/decoder idle)
- __new__(value)¶
- class mx_remote.Interface.VideoColourSpace[source]¶
Bases:
IntEnumVideo colour space encoding format.
- __new__(value)¶
- class mx_remote.Interface.VideoSignalDetails[source]¶
Bases:
objectVideo format of a bay: CTA-861 svd, colour space, bit depth, frame rate kind.
from_reportsays where it came from, because the two sources do not carry the same currency. A signal status report is the live format and arrives on a signal change. The bay config snapshot is a fallback for a bay no report has been seen for: it refreshes on the bay config broadcast cycle, so it can lag a change by a broadcast interval.bppis a bit depth in both cases, not a wire index. None means no format is set; 0 means one is set whose depth is not known, and those are different answers.- __init__(svd, colour, bpp, non_int, from_report)[source]¶
- Parameters:
svd (int | None)
colour (VideoColourSpace | None)
bpp (int | None)
non_int (bool | None)
from_report (bool)
- Return type:
None
- property colour: VideoColourSpace | None¶
Colour space, or None when no format is set or the value is unknown to this build.
- class mx_remote.Interface.AmpDolbySettings[source]¶
Bases:
objectDolby Digital settings for an amplifier
- class mx_remote.Interface.AmpZoneSettings[source]¶
Bases:
objectZone specific settings for an amplifier input/output
- class mx_remote.Interface.V2IPAudioFormat[source]¶
Bases:
objectV2IP audio format (sample rate + channels). Zero values mean “use firmware defaults”.
- class mx_remote.Interface.V2IPStreamSource[source]¶
Bases:
ABCV2IP multicast IP address and port number
- class mx_remote.Interface.V2IPStreamSources[source]¶
Bases:
objectAll V2IP multicast IP addresses and port numbers used by a device
- abstract property uid: MxrDeviceUid | None¶
uid of the originating source device, when known
- abstract property video: V2IPStreamSource¶
video stream source
- abstract property audio: V2IPStreamSource¶
audio stream source
- abstract property anc: V2IPStreamSource¶
ancillary stream source
- abstract property arc: V2IPStreamSource | None¶
audio return stream source
- property valid: bool¶
True when this entry carries a usable address.
Video and anc must both be multicast with a non-zero port; audio is optional and rides along. A sender without MXR_FEATURE_CONFIG_INITIALISED can put stack contents in bay 0’s addresses under its own uid, which rarely satisfy both halves of this test.
- class mx_remote.Interface.V2IPStreamSourcesList[source]¶
Bases:
list[V2IPStreamSources]list of V2IP sources
- class mx_remote.Interface.DeviceList[source]¶
Bases:
list[MxrDeviceUid]- append(item)[source]¶
Append object to the end of the list.
- Parameters:
item (MxrDeviceUid)
- Return type:
None
- class mx_remote.Interface.FilteredDevices[source]¶
Bases:
DeviceListlist of filtered devices
- class mx_remote.Interface.BayBase[source]¶
Bases:
ABCA bay (input/output) of an mx_remote device
- abstract property status: DeviceStatus¶
bay status
- abstract property callbacks: MxrCallbacks¶
mx_remote callbacks
- abstract property device: DeviceBase¶
device to which this bay belongs
- abstract property features: BayFeaturesMask¶
List of supported features as strings
- abstract property video_route_endpoint: str | None¶
port’ literal when the sink is subscribed to a multicast that does not map to any registered input bay; else None.
- Type:
Current video route as ‘ip
- abstract property audio_route_endpoint: str | None¶
port’ literal when the sink is subscribed to a multicast that does not map to any registered input bay; else None.
- Type:
Current audio route as ‘ip
- abstract property powered_on: bool¶
True the connected device supports CEC and reports that the device is powered on
- abstract property powered_off: bool¶
True the connected device supports CEC and reports that the device is powered off
- abstract property power_status: PowerStatus¶
Power status
True if flagged as hidden
- abstract property signal_detected: bool¶
Video signal detected (matrix/oneip) or audio signal detected (proamp)
- abstract property video_details: VideoSignalDetails | None¶
Current video format, or None if neither source has carried one.
Prefers the signal status report, which arrives on a signal change, and falls back to the bay config snapshot for a bay no report has been seen for. Read from_report to tell which one this is.
- abstract property mirroring: BayMirrorStatus¶
Bay mirroring status
- abstract property filtered: FilteredDevices¶
Filtered bays
- abstract property v2ip_source: V2IPStreamSources | None¶
V2IP source address information
- abstract property v2ip_uid: MxrDeviceUid | None¶
Remote V2IP device uid
- abstract property v2ip_device: DeviceBase | None¶
Remote V2IP device
- abstract property linked_bay: BayBase | None¶
linked bay if an mx-remote virtual link has been set up
- abstract property amp_settings: AmpZoneSettings | None¶
proamp zone settings
- abstract property audio_endpoint: AudioEndpoint | None¶
primary audio endpoint. currently v2ip only
- abstractmethod async select_video_source(port, opt=True)[source]¶
change the video source of an output bay
- abstractmethod async select_video_source_by_user_name(name, opt=True)[source]¶
change the video source of an output bay
- abstractmethod async select_audio_source(source, endpoint=None, audio_fmt=None)[source]¶
change the audio source of an output bay
- abstractmethod async select_edid_profile(profile)[source]¶
change the edid profile of an input bay
- Parameters:
profile (EdidProfile)
- Return type:
- abstractmethod async power_on()[source]¶
power on the remote device if CEC is supported
- Return type:
- abstractmethod async power_off()[source]¶
power off the remote device if CEC is supported
- Return type:
- abstractmethod register_callback(callback)[source]¶
register a callback, called when the bay state changed
- class mx_remote.Interface.DeviceV2IPScalingSettings[source]¶
Bases:
ABC- abstract property refresh: int¶
Refresh rate paired with mode, under the same MXR_SCALING_FLAG_MODE_VALID marker
- abstract property flags: int¶
mxr_scaling_config.flags.
MXR_SCALING_FLAG_MODE_VALID and MXR_SCALING_FLAG_OPTIONS_VALID mark which half a sender meant to send, and are separately valid; a sender setting neither is offering no scaling at all. MXR_SCALING_FLAG_AUTO_SCALING is the only option bit with a defined meaning.
- mx_remote.Interface.v2ip_stream_valid(stream)[source]¶
True when a stream source carries an address a frame actually meant to send.
Mirrors the firmware’s own test: a multicast ip and a non-zero port. A controller write that offers no addresses leaves the block zeroed, which fails both tests.
- Parameters:
stream (V2IPStreamSource | None)
- Return type:
- mx_remote.Interface.v2ip_av_source_valid(video, anc)[source]¶
True when an av source block carries addresses a frame meant to send.
Mirrors the firmware’s own test: video and anc must both be valid, audio is optional and is carried along with them.
- Parameters:
video (V2IPStreamSource | None)
anc (V2IPStreamSource | None)
- Return type:
- mx_remote.Interface.v2ip_stream_cleared(stream)[source]¶
True when a stream source is zeroed, which is how “no source” is spelled.
- Parameters:
stream (V2IPStreamSource | None)
- Return type:
- class mx_remote.Interface.V2IPScalingSettings[source]¶
Bases:
DeviceV2IPScalingSettingsPlain holder for a merged mxr_scaling_config.
- property refresh: int¶
Refresh rate paired with mode, under the same MXR_SCALING_FLAG_MODE_VALID marker
- property flags: int¶
mxr_scaling_config.flags.
MXR_SCALING_FLAG_MODE_VALID and MXR_SCALING_FLAG_OPTIONS_VALID mark which half a sender meant to send, and are separately valid; a sender setting neither is offering no scaling at all. MXR_SCALING_FLAG_AUTO_SCALING is the only option bit with a defined meaning.
- class mx_remote.Interface.V2IPDscpConfig[source]¶
Bases:
objectPer-stream DSCP marking carried in a V2IP device configuration.
DSCP 0 (CS0) is a legal marking, so each wire byte carries a set bit alongside its value and a stream whose byte is unset reads back as None here. Firmware treats the marking as all-or-nothing: it only applies one when all three streams carry a value, and otherwise falls back to CS2 (
V2IP_DSCP_DEFAULT) -completereports which case a frame is in.- property carried: bool¶
True when this frame carried a marking at all.
Gated on the video byte alone, matching the firmware cache, which stores all three bytes verbatim. Not
complete: a partial set does overwrite a peer’s marking, so treating it as absent would report a marking the peer does not hold.
- class mx_remote.Interface.DeviceV2IPDetails[source]¶
Bases:
objectV2IP stream source details for a device
- __init__(video, audio, anc, arc, tx_rate, scaling, dscp=None)[source]¶
- Parameters:
video (V2IPStreamSource | None)
audio (V2IPStreamSource | None)
anc (V2IPStreamSource | None)
arc (V2IPStreamSource | None)
tx_rate (int | None)
scaling (DeviceV2IPScalingSettings | None)
dscp (V2IPDscpConfig | None)
- Return type:
None
- property tx_rate: int | None¶
Source rate this device transmits at, or None if none is known.
Only a rate within V2IP_SOURCE_RATE_MIN..MAX is one a sender meant to send; anything else is an absent offer rather than a rate, and merge() keeps the previously known value instead of caching what was on the wire.
- property dscp: V2IPDscpConfig | None¶
Per-stream DSCP marking, or None from peers that predate it.
- merge(previous)[source]¶
Carry forward every field this frame did not carry.
A controller writing one field of a peer’s config leaves the others zeroed on the wire, so each is applied only behind its own validity marker. See FrameV2IPDeviceConfiguration for the markers.
- Parameters:
previous (DeviceV2IPDetails | None)
- Return type:
- class mx_remote.Interface.DeviceV2IPSink[source]¶
Bases:
objectA V2IP sink’s effective multicast subscriptions and resolved audio format.
Mirrors the sink-side state broadcast alongside v2ip_device_config updates and manual-switch frames.
addressesis None when no active route is announced; when present, each stream may still carry an all-zero ip when that stream is inactive.audio_fmtcarries the resolved sink audio format (zero fields fall back to firmware defaults of 48kHz / 2 channels).- __init__(addresses, audio_fmt)[source]¶
- Parameters:
addresses (V2IPStreamSources | None)
audio_fmt (V2IPAudioFormat | None)
- Return type:
None
- class mx_remote.Interface.NetworkPortStatus[source]¶
Bases:
ABCdetailed status of a network port
- property errors: UtpLinkErrorStatus | None¶
link error status
- property link_speed: UtpLinkSpeed¶
link speed
- property cable_status: list[UtpCableStatus] | None¶
utp cable pair status
- class mx_remote.Interface.DeviceBase[source]¶
Bases:
ABCan mx_remote device on the network
- abstract property status: DeviceStatus¶
device status
- abstract property registry: DeviceRegistry¶
local device information registry
- abstract property configuration_complete: bool¶
check whether all configuration info for this device has been received
- abstract property callbacks: MxrCallbacks¶
callbacks for this device
- abstract property remote_id: MxrDeviceUid¶
unique id
- abstract property v2ip_sources: V2IPStreamSourcesList | None¶
V2IP stream source addresses
- abstract property v2ip_details: DeviceV2IPDetails | None¶
V2IP encoder/decoder configuration
- abstract property v2ip_sink: DeviceV2IPSink | None¶
V2IP sink-side multicast subscriptions and resolved audio format (None until first announced)
- abstract property v2ip_source_local: V2IPStreamSources | None¶
local v2ip source addresses
- abstract property mesh_master: DeviceBase | None¶
The device that is the master device in the V2IP mesh to which this device belongs
- abstract property protocol: int¶
Highest protocol version this device advertises, or 0 if none has been seen.
- abstractmethod supports_opcode(opcode)[source]¶
True when this device can receive opcode.
Each opcode has a minimum protocol version, and a device whose cap is lower drops the frame without answering - there is no NAK at any layer, so an ungated send looks like success. A device that has advertised no version yet returns True: refusing on that would break every send made before the first hello arrives, and the firmware itself only compares against a version it has.
- abstract property supports_video_wall: bool¶
True if this sink can crop its source to a video wall window (MXR_FEATURE_VIDEO_WALL)
- abstract property config_initialised: bool¶
True if every configuration block this device broadcasts is fully written.
A device without MXR_FEATURE_CONFIG_INITIALISED builds some config payloads from stack locals it never zeroes, so these are unreliable from it: the scaling block in V2IP_DEVICE_CFG, bay 0’s addresses in SYS_BAY_V2IP_SOURCES, and the padding beside the rc target in RC_SETTINGS. None of that is detectable within a frame.
- abstract property dolby_settings: AmpDolbySettings | None¶
Dolby Digital settings (proamp)
- abstract property v2ip_firmware_versions: dict[FirmwareType, FirmwareVersion] | None¶
V2IP FPGA firmware versions
- abstractmethod v2ip_source(bay)[source]¶
Get the V2IP source addresses for the given bay
- Parameters:
bay (BayBase)
- Return type:
V2IPStreamSources | None
- abstractmethod get_by_portname(portname)[source]¶
Get the bay with the given port name (not user set name) on this device
- abstract property network_status: dict[int, NetworkPortStatus]¶
network status for all ports
- abstractmethod register_callback(callback)[source]¶
register a callback, called when the device state changed
- Parameters:
callback (Callable[[DeviceBase], None])
- Return type:
None
- abstractmethod unregister_callback(callback)[source]¶
unregister a callback
- Parameters:
callback (Callable[[DeviceBase], None])
- Return type:
None
- class mx_remote.Interface.BayLink[source]¶
Bases:
objecta virtual mx_remote link between bays, like an amp output that’s linked to a oneip sink
- __init__(registry, bay, linked_serial, linked_bay, features)[source]¶
- Parameters:
registry (DeviceRegistry)
bay (BayBase)
linked_serial (str)
linked_bay (str)
features (int)
- Return type:
None
- property features_mask: LinkFeature¶
supported link features as bitmask
- class mx_remote.Interface.BayLinks[source]¶
Bases:
objectlinked bay configurations for all devices
- __init__(registry)[source]¶
- Parameters:
registry (DeviceRegistry)
- Return type:
None
- class mx_remote.Interface.DeviceRegistry[source]¶
Bases:
ABCall mx_remote devices on the network
- abstract property net_protocol_version_max: int¶
highest protocol version used by devices on the network
- abstract property net_protocol_version_min: int¶
lowest protocol version used by devices on the network
- property uid: MxrDeviceUid¶
uid of this device
- abstract property callbacks: MxrCallbacks¶
callbacks to call when the device is updated
- abstractmethod get_by_serial(serial)[source]¶
get a device by its serial number
- Parameters:
serial (str)
- Return type:
DeviceBase | None
- abstractmethod get_by_uid(remote_id)[source]¶
get a device by its unique id
- Parameters:
remote_id (str | MxrDeviceUid | None)
- Return type:
DeviceBase | None
- abstractmethod uid_to_user_string(remote_id)[source]¶
return the serial of the unit if the uid is known, or the uid as string if it isn’t
- Parameters:
remote_id (str | MxrDeviceUid | bytes | None)
- Return type:
- abstractmethod get_bay_by_portnum(remote_id, portnum)[source]¶
get a bay of a device by its unique id and port number
- Parameters:
remote_id (str | MxrDeviceUid)
portnum (int)
- Return type:
BayBase | None
- class mx_remote.Interface.MxrCallbacks[source]¶
Bases:
objectcallbacks that can be used by an external application to get notified when a status changes
- on_device_update(dev)[source]¶
called when properties of ‘dev’ have been updated
- Parameters:
dev (DeviceBase)
- Return type:
None
- on_bay_update(bay)[source]¶
called when properties of ‘bay’ have been updated
- Parameters:
bay (BayBase)
- Return type:
None
- on_device_config_changed(dev)[source]¶
called when device configuration properties of ‘dev’ have been updated
- Parameters:
dev (DeviceBase)
- Return type:
None
- on_device_config_complete(dev)[source]¶
called when device configuration of ‘dev’ had been received fully
- Parameters:
dev (DeviceBase)
- Return type:
None
- on_device_online_status_changed(dev, online)[source]¶
called when the online status of ‘dev’ changed
- Parameters:
dev (DeviceBase)
online (bool)
- Return type:
None
- on_bay_registered(bay)[source]¶
called when a new bay was registered by mx_remote
- Parameters:
bay (BayBase)
- Return type:
None
- on_device_temperature_changed(dev)[source]¶
called when the temperature values of ‘dev’ changed
- Parameters:
dev (DeviceBase)
- Return type:
None
- on_power_changed(bay, power)[source]¶
called when the power status of ‘bay’ changed
- Parameters:
bay (BayBase)
power (PowerStatus)
- Return type:
None
- on_name_changed(bay, user_name)[source]¶
called when the name that’s set up by the user of ‘bay’ changed
- on_status_signal_detected_changed(bay, val)[source]¶
called when the signal detect status of ‘bay’ changed
called when the hidden status of ‘bay’ changed
- on_status_hdbt_connected_changed(bay, val)[source]¶
called when the HDBaseT connection status of ‘bay’ changed
- on_status_arc_changed(bay, val)[source]¶
called when the audio return channel status of ‘bay’ changed
- on_volume_changed(bay, volume)[source]¶
called when the volume/mute status of ‘bay’ changed
- Parameters:
bay (BayBase)
volume (VolumeMuteStatus | None)
- Return type:
None
- on_video_source_changed(bay, video_source)[source]¶
called when a video source changed was detected on ‘bay’
- on_audio_source_changed(bay, audio_source)[source]¶
called when an audio source changed was detected on ‘bay’
- on_bay_linked(bay, linked_serial, linked_bay, features)[source]¶
called when a bay link was detected
- on_mirror_status_changed(bay, mirror)[source]¶
called when a bay mirroring setup change was detected
- Parameters:
bay (BayBase)
mirror (BayMirrorStatus)
- Return type:
None
- on_filter_status_changed(bay, filtered)[source]¶
called when a bay filtering setup change was detected
- Parameters:
bay (BayBase)
filtered (list[MxrDeviceUid])
- Return type:
None
- on_edid_profile_changed(bay, profile)[source]¶
called when a source EDID profile was changed
- Parameters:
bay (BayBase)
profile (EdidProfile | None)
- Return type:
None
- on_amp_zone_settings_changed(bay, settings)[source]¶
called when amp zone settings were changed
- Parameters:
bay (BayBase)
settings (AmpZoneSettings)
- Return type:
None
- on_amp_dolby_settings_changed(device, settings)[source]¶
called when amp dolby settings were changed
- Parameters:
device (DeviceBase)
settings (AmpDolbySettings)
- Return type:
None
Device identity¶
Unique device and bay identifier types for mx_remote.
- class mx_remote.Uid.MxrDeviceUid[source]¶
Bases:
objectUnique ID of an mx_remote device on the network
Remote-control keys and actions¶
The key and action codes a bay reports, and the target a key was aimed at.
- class mx_remote.proto.Constants.RCKey[source]¶
Bases:
IntEnumRemote control key codes (CEC/IR).
- KEY_0 = 0¶
- KEY_1 = 1¶
- KEY_2 = 2¶
- KEY_3 = 3¶
- KEY_4 = 4¶
- KEY_5 = 5¶
- KEY_6 = 6¶
- KEY_7 = 7¶
- KEY_8 = 8¶
- KEY_9 = 9¶
- KEY_SELECT = 10¶
- KEY_BACK = 11¶
- KEY_UP = 12¶
- KEY_DOWN = 13¶
- KEY_LEFT = 14¶
- KEY_RIGHT = 15¶
- KEY_MENU = 16¶
- KEY_CONTENT_MENU = 17¶
- KEY_CHANNEL_UP = 18¶
- KEY_CHANNEL_DOWN = 19¶
- KEY_PLAY = 20¶
- KEY_PAUSE = 21¶
- KEY_STOP = 22¶
- KEY_RECORD = 23¶
- KEY_FAST_FORWARD = 24¶
- KEY_REWIND = 25¶
- KEY_RED = 26¶
- KEY_GREEN = 27¶
- KEY_YELLOW = 28¶
- KEY_BLUE = 29¶
- KEY_HELP = 30¶
- KEY_INFORMATION = 31¶
- KEY_TEXT = 32¶
- KEY_GUIDE = 33¶
- KEY_VIDEO_ON_DEMAND = 34¶
- KEY_PREVIOUS_CHANNEL = 80¶
- KEY_3D_MODE = 81¶
- KEY_SUBTITLE = 82¶
- KEY_SOUND_SELECT = 83¶
- KEY_INPUT_SELECT = 84¶
- KEY_EJECT = 85¶
- KEY_NEXT_CHAPTER = 86¶
- KEY_PREVIOUS_CHAPTER = 87¶
- KEY_CUSTOM_CEC = 1280¶
- KEY_INTERACTIVE = 128¶
- KEY_SEARCH = 129¶
- KEY_SKY = 130¶
- KEY_CUSTOM_SKY = 2048¶
- __new__(value)¶
- class mx_remote.proto.Constants.RCAction[source]¶
Bases:
IntEnumRemote control actions.
- ACTION_POWER_TOGGLE = 0¶
- ACTION_POWER_ON = 1¶
- ACTION_POWER_OFF = 2¶
- ACTION_VOLUME_DOWN = 3¶
- ACTION_VOLUME_UP = 4¶
- ACTION_VOLUME_MUTE = 5¶
- __new__(value)¶
- class mx_remote.proto.Constants.RCType[source]¶
Bases:
IntEnumRemote control protocol type.
- IR = 0¶
- CEC = 1¶
- SKY_UK = 2¶
- TIVO = 3¶
- KODI = 4¶
- DISH = 5¶
- DIRECTV = 6¶
- MX_REMOTE = 7¶
- __new__(value)¶
- mx_remote.proto.Constants.MXR_PROTOCOL_VERSION = 41¶
Highest mx_remote protocol version this library understands.
Mirrors the firmware’s own protocol version. Bump when adding RX support for an opcode revision; transmitters stamp the per-opcode minimum from MXR_OPCODE_VERSIONS so older peers still parse the frame.
This is also a receive ceiling: Remote.process_frame drops any frame stamped above it, unparsed. So it has to reach the stamp of every layout revision decoded below, or that revision goes silent on the mesh rather than noisy - 0x29 is what a MatrixOS 10.12.46 unit stamps on V2IP_STATS.