Skip to main content

Samsung MDC Display

Samsung commercial displays and digital-signage panels — the QM, QB, QH, BE, DM, ED, and PM series, the LH-model signage panels, and most "Smart Signage"/MagicINFO displays — are controlled over Samsung's MDC (Multiple Display Control) protocol. GEM speaks MDC's binary command set over TCP, either natively on the panel's Ethernet port or through a serial-to-IP adapter wired to the display's RS-232C input. One panel becomes one GEM device; commands target the panel directly (this driver creates no zones).

This is the driver for commercial / signage Samsung panels that expose MDC. A consumer Samsung "The Frame"/Tizen smart TV uses a different control path and is not what this driver targets.

What's controlled​

  • Power on/off, plus a panel (backlight) blank that keeps the unit responsive while the screen is dark
  • Volume — absolute set (0–100), up/down, and mute on/off/toggle
  • Input switching — quick HDMI buttons (hdmi_1–hdmi_4) and a fuller input picker that also reaches DisplayPort, MagicINFO, the URL launcher, and the web browser
  • Full on-screen-remote key set: D-pad, enter/exit/menu/info/guide/back, the digit keys, and a catch-all keypress command for anything else
  • Channel up/down, last channel, and direct channel tuning (ATV/DTV)
  • Video-wall control — turn the wall mode on/off and switch between full and natural scaling
  • Safety lock (front-key/IR lock) on/off
  • Live status polling for power, volume, mute, and the selected input

Prerequisites​

  • A Samsung commercial/MDC display reachable on the LAN — either by its own IP (native MDC over Ethernet) or by the IP of a serial-to-IP adapter cabled to the panel's RS-232C IN jack.

  • MDC control enabled on the panel. On most models this is under the service/system menu as MDC or RS-232C control; the exact menu path varies by model and firmware year. If the panel ignores commands, this is the first thing to check.

  • The panel's MDC ID noted. Every MDC display has a unit ID (factory default 01). GEM must be told the same ID — both to address the panel and to recognize its replies.

  • Network Standby on for native Ethernet MDC. Without it the panel drops off the network when it is powered off, and power_on has nothing to talk to.

Give the display (or the serial-to-IP adapter) a static IP or a DHCP reservation so the address never moves.

Setup​

  1. On the panel, enable MDC/RS-232C control and confirm its MDC ID (default 01).
  2. In GEM, open Devices, add a device, and choose the Samsung MDC Display driver.
  3. Set the IP Address field to the panel's LAN IP (or the serial-to-IP adapter's IP).
  4. TCP Port defaults to 1515, the typical native-MDC port. Leave it for Ethernet MDC; for a serial-to-IP adapter, set the adapter's configured listening port instead.
  5. If the panel's MDC ID is not the default 01, set the MDC Unit ID field (under the advanced settings) to match.
  6. Leave Control Protocol (advanced settings) on mdc. See below.
  7. Save and enable the device. On connect, GEM begins polling the panel's status (see below).

The power, volume, mute, HDMI, remote-key and status-poll commands were first written as Samsung ex-link frames (08 22 …), the RS-232 command set of consumer Samsung TVs. A commercial panel on MDC answers none of them, so on those devices power, volume and the status poll did nothing while the MDC-only commands (input picker, keypress, video wall, safety lock) worked.

The Control Protocol setting picks which set those commands use:

ValueBehavior
mdcEach of those commands is sent as the MDC frame that does the same thing: power through MDC power (0x11), volume through 0x12 (capped at 100), mute through 0x13, hdmi_1–hdmi_4 through the input command (0x14), and the remote keys, volume_up/volume_down and channel_up/channel_down as MDC keypresses. MDC has no mute toggle, so mute_toggle sends mute on or off from the panel's reported mute_state. Direct tuning (channel, get_channel) has no MDC frame and returns an error.
exlinkThe original ex-link frames, unchanged. For a consumer Samsung TV on an RS-232 adapter.

A device added from the Devices page gets mdc. A device that has no value, such as one added before this setting existed, keeps sending ex-link exactly as before. Set the attribute to mdc on such a device when it is a commercial panel whose power or status never worked.

Multiple panels on one link

On a serial daisy-chain (panel RS-232 OUT → next panel's IN) fed by a single serial-to-IP adapter, several displays share one IP. Give each panel a distinct MDC ID, add one GEM device per panel pointed at the same adapter IP/port, and set each device's MDC Unit ID to that panel's ID. With native Ethernet MDC, each panel has its own IP and uses the default ID 01.

Status polling and feedback​

While connected, GEM cycles through four status queries — mute, then volume, then input, then power — about three seconds apart, so a full refresh of all four takes roughly twelve seconds. The values it reads back populate read-only state attributes on the device (power_state, volume, mute_state, input) and drive the volume slider and mute indicator on any AV zone this panel is linked to. The reported input comes back as a friendly name (for example hdmi_1, hdmi_2, displayport_1, magic_info, screen_mirroring).

Feedback depends on the MDC ID matching

GEM only applies a reply when the panel's reply carries the same MDC ID set in MDC Unit ID. If the panel is set to a different ID than the device, commands may still reach it but the live status (power/volume/mute/input) will not refresh. A panel whose status never updates is almost always an MDC-ID mismatch.

Linking to an AV zone​

A Samsung commercial panel usually has its own speakers and amplifier, so it can act as the volume control for the room it serves:

  1. Open AV Zones and edit (or create) the zone for that room.
  2. In Device Configuration, set the Volume Device field to this Samsung display.
  3. Save. The zone's volume slider and mute control now drive the panel, and the panel's reported volume/mute mirror back onto the zone.

To wake the panel and select the right HDMI input when a source is chosen, put the display's power_on and an input command (hdmi_1…hdmi_4, or input) into the AV zone's On macro — the same place a theater zone powers up a projector and receiver. Powering the room off can run power_off, or panel_off if you want the panel to blank but stay reachable for the next power-up. See AV Zones and Macros.

note

Switching the panel's input is a device command, not an AV source change by itself. Selecting a room source on a touchpanel only changes the panel's input if that input command is wired into the source's on-macro — see AV Sources.

Attributes​

Device — required​

AttributeTypeDescription
ipstringThe panel's LAN IP (or the serial-to-IP adapter's IP).

Device — optional​

AttributeTypeDefaultDescription
portint1515TCP port. 1515 for native Ethernet MDC; set the adapter's port for a serial-to-IP link.
unit_idstring01The panel's MDC ID, as a two-character hex value. Must match the ID set on the display. Override per command if you mix IDs on one link.
control_protocolstringmdcmdc or exlink — which frames the power, volume, mute, HDMI, key and poll commands use. No value means exlink. See Control protocol.

The driver also auto-populates these state attributes as the panel reports them: power_state, volume, mute_state, and input. They are read-only status — not values you set by hand.

Commands​

Driver-declared commands appear on the device's Commands tab and can be used in macros, triggers, and on UI buttons. GEM computes each command's MDC checksum automatically, so you never enter one.

Power​

CommandAction
power_on / power_offFull power on / off.
panel_on / panel_offTurn the screen (backlight) on or off while the unit stays powered and reachable. Use panel_off to blank a signage panel without dropping control.

Volume and mute​

CommandAction
volume (arg volume)Set absolute volume, 0–100. GEM converts the level to the panel's hex scale.
volume_up / volume_downStep volume up / down.
mute_on / mute_offMute / unmute.
mute_toggleToggle mute (native — no server emulation needed).

Input selection​

CommandAction
hdmi_1 … hdmi_4Jump straight to HDMI 1–4.
input (arg input)Pick an input from the fuller list: hdmi_1, hdmi_2, hdmi_3, hdmi_4, display_port, magic_info, url_launcher, web_browser.

Remote keys and navigation​

CommandAction
up down left right enterD-pad and select.
menu exit back info guideOn-screen menu, exit, back, info overlay, and guide.
0–9Number keys.
keypress (arg keycode)Send any supported remote key by name — covers the digits, source, power_toggle, volume_up/volume_down, mute_toggle, channel_up/channel_down, menu, exit, enter, the D-pad directions, and power_off. Use this for keys without their own command.

Channels​

CommandAction
channel_up / channel_downStep channels.
previous_channelReturn to the last channel.
channel (args tuner, major, minor)Tune directly. tuner is atv or dtv; major/minor are the channel numbers. Ex-link only.

Video wall​

CommandAction
videowall_on / videowall_offEnable / disable video-wall mode.
set_videowall_mode (arg mode)Switch wall scaling between full and natural.
get_videowall_mode / get_videowall_statusQuery the current wall mode / status.

Safety lock and status queries​

CommandAction
safety_lock_onLock the panel's front keys / IR remote.
safety_lock_ofUnlock the front keys / IR remote. (The command name is spelled safety_lock_of — enter it exactly that way in a macro.)
get_safety_lockQuery the safety-lock state.
get_screen_modeQuery the current picture/screen mode.
get_power get_volume get_mute get_input get_channelOne-off status queries. GEM already runs these on its polling cycle, but you can trigger one on demand.

Raw passthrough​

CommandAction
passthrough (arg command)Send a raw MDC command (space-separated hex bytes) for anything the built-in commands don't cover. GEM still appends the checksum, so supply the command without it.

Known limitations​

  • No native input-feedback for every source. Status polling reports power, volume, mute, and input. Other settings (screen mode, video-wall state, safety lock) are queryable on demand but are not part of the automatic poll, so they are not continuously tracked.
  • One picture/mode picker is read-only. get_screen_mode reads the current mode back, but there is no set-screen-mode command in this revision — set the picture mode on the panel.
  • MDC must be enabled per panel. A factory-fresh display ignores MDC until control is turned on in its menu; there is no way for GEM to enable it remotely.

Troubleshooting​

SymptomCheck
Power, volume or status do nothing while input and keypress workThe device is sending ex-link frames. Set Control Protocol to mdc and reload the device.
power_on does nothing once the panel is offTurn on Network Standby on the panel.
No response from the panelConfirm MDC/RS-232C control is enabled on the display, the IP/port are correct, and (for a serial-to-IP adapter) the port matches the adapter's listener.
Commands work but status never updatesThe MDC Unit ID must match the ID set on the panel — GEM ignores replies whose ID doesn't match. Set them the same and reload the device.
Wrong panel responds on a daisy chainEach panel on a shared serial/IP link needs a unique MDC ID, and each GEM device must point at the correct ID.
Volume slider behaves oddlyThe panel scales 0–100; verify the linked AV zone's Volume Device is this display and that the panel is reporting volume on the poll.
Unlock command does nothingThe unlock command is safety_lock_of (not safety_lock_off); enter it exactly.

See also​

  • AV Zones — set this display as a zone's Volume Device, and wire its power/input commands into the zone's on/off macros.
  • AV Sources — how room sources route, and where an input-switch macro lives.
  • Commands — running and scripting device commands.
  • Devices — adding and configuring devices.