

# Setting up a SMPTE 2110 input using NMOS
SMPTE 2110 using NMOSNew way to work with SMPTE 2110 with NMOS

The guide now includes information about working with SMPTE 2110 using NMOS. The implementation of NMOS was completely changed in 2024. The guide now describes the new implementation.

Follow this procedure if you have a SMPTE 2110 source and your organization uses NMOS IS-04 and IS-05.

**Note**  
This section assumes that you have read [Working with SMPTE 2110](SMPTE-ST-2110.md) and are familiar with how SMPTE 2110 works and with its prerequisites.

You must enable NMOS on the appliance, as a one-time action. Then the setup of a SMPTE 2110 source is a two-step process. First, you create a 2110 receiver group to replicate the SMPTE 2110 receivers in Elemental Live. Then in the event, you create an input that uses the 2110 receiver group. In this way, a SMPTE 2110 source is similar to an SDI source, which is represented in Elemental Live by an SDI device that is used by an SDI input.

**Topics**
+ [

# Enable NMOS
](s2110-nmos-configure.md)
+ [

# Obtain information from the NMOS operator
](s2110-nmos-obtain-info.md)
+ [

# Determine the SDPs to create
](s2110-nmos-design-sdps.md)
+ [

# Create the receiver group
](s2110-nmos-create-receiver-group.md)
+ [

# Create a receiver group input
](s2110-nmos-create-input.md)
+ [

# Choose the resiliency scenario
](s2110-nmos-scenarios.md)
+ [

# Resiliency scenario A: Supporting NMOS patching
](s2110-nmos-scenario-patching.md)
+ [

# Resiliency scenario B: Supporting NMOS patching and failover
](s2110-nmos-scenario-patching-plus-failover.md)
+ [

# Resiliency scenario C: Supporting NMOS patching and network failover
](s2110-nmos-scenario-patching-nw-failover.md)

# Enable NMOS
Step 1: Enable NMOS

You must enable NMOS on your appliance. If you are using an NMOS registry, you must configure AWS Elemental Live to connect to it. Perform this configuration once, before you create the first SMPTE 2110 NMOS input.

You perform this step once on each appliance where you will use SMPTE 2110 NMOS inputs.

1. In the Elemental Live web interface, choose **Settings**. (Don't choose **Input Devices** or **Routers** from the submenu).

1. Complete the fields as described in the following table, then choose **Save**.


| Field |  | 
| --- | --- | 
| Enable NMOS Access | Choose Yes | 
| Use make-before-break |  The value that you enter here applies to all the SMPTE 2110 receiver groups in events on the node.  There are two ways for Elemental Live to process receiver patching instructions from the NMOS controller: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/elemental-live/latest/ug/s2110-nmos-configure.html)  | 
| NMOS Node and Device Label**NMOS Node UUID****NMOS Device UUID** |  These fields must uniquely identify this node on the NMOS registry. You can enter values or leave the fields blank to let Elemental Live generate values.  The combination of label UUID for the node must be unique on the NMOS registry. The combination of device label and UUID must be unique on the NMOS registry. When you create a SMPTE 2110 receiver group on this node, the values will be included in the data that Elemental Live sends to the NMOS registry.  | 
| NMOS Registry Server URI | Obtain the URI of the NMOS registry from your organization’s registry operator.If your organization doesn't use an NMOS registry, leave the auto-populated default value for this field in place. | 

# Obtain information from the NMOS operator
Step 2: Obtain information

Speak to the NMOS operator in your organization to make sure that you are aligned on the content of the streams. 
+ Obtain the number and types of the streams — video, audio, and so on.
+ For each audio stream, obtain the languages and order of the languages. For example, in an audio stream that contains three languages, you must know the names and the order of the languages. The languages are assigned an index, starting at 0.
+ For each embedded captions stream, obtain the number and order of the languages. 

You must be aligned so that you can set up Elemental Live to select the audio and ancillary streams correctly, and so that the NMOS controller can successfully perform NMOS patching.

**Example 1**

You and the NMOS operator might agree that the SDP files and their streams are ordered as follows:
+ SDP 1: Video stream
+ SDP 2: Audio stream containing English Dolby Digital
+ SDP 3: Audio stream containing French Dolby Digital
+ SDP 4: Audio stream containing Spanish Dolby Digital
+ SDP 5: Ancillary stream containing EIA-608 embedded captions, with English in CC1, French in CC2, Spanish in CC3, and CC4 not used.
+ SDP 6: Ancillary stream for SCTE-104 messages. 

**Example 2**

You and the NMOS operator might agree to this setup:
+ SDP 1: Video stream
+ SDP 2: Audio stream containing three audio descriptions, in this order:
  + English Dolby Digital
  + French Dolby Digital
  + Spanish Dolby Digital
+ SDP 3: Ancillary stream containing EIA-608 embedded captions, with English in CC1, French in CC2, and Spanish in CC3. CC4 is not used.

# Determine the SDPs to create
Step 3: Determine SDPs to create

Determine the number of SDPs you will create in Elemental Live. Here are the rules:
+ The input must include one and only one video SDP.
+ Plan to create one SDP for each audio stream you want to extract. Following example 2 above, you must create three audio SDPs.
+ Plan to create one SDP for the captions ancillary stream (if any).
+ Plan to create one SDP for the SCTE-104 stream (if any).

# Create the receiver group
Step 4: Create receiver group

You must create the SMPTE 2110 receiver groups that you need. Each receiver group identifies the set of individual streams of video, audio, and ancillary data (captions and SCTE 104 messages) that you want to treat as one input.

1. In the Elemental Live web interface, hover over **Settings** and choose **Input Devices**. Scroll down to the **SMPTE 2110 Receiver Groups** section.

1. Choose **Create SMPTE 2110 Receiver Groups**. Fields appear.

1. In **NMOS SMPTE 2110 Input**, enter a name for the receiver group. This name will appear in the dropdown list of inputs when you create an Elemental Live event or Conductor Live profile. 

1. Adjust the remaining fields to match your requirements. The receiver group must include one video stream. But the audio and ancillary streams are optional. 
   + Click **Add Audio SDP** to add one or more rows for audio streams. Or click **Remove** if you don't want any audio in the input.
   + Click **Add Ancillary SDP** to add one or more rows for ancillary streams (captions and SCTE-104 streams).

   Following example 1 above, you will three audio SDPs, and two ancillary SDPs.

   Following example 2 above, you will one audio SDP, and two ancillary SDPs.

1. Complete each stream row as follows:
   + **Label**: Enter a description. For example, in the video stream, enter **vid\$1rx**. 

     Elemental Live will combine the receiver group name and the label to create a name for the stream that is unique to that system. 
   + **Interface**: Enter the network interface for this stream to connect to the Elemental Live node. For example, **eth4**.
   + **Secondary Interface**: If you want to implement SMPTE 2022-7 , enter the interface for the secondary source. For example, **eth5**.
   + **GUID**: This field is auto-populated with a system-generated value. You might want to change this value, for example, to make it match values you created outside of Elemental Live. To change the value, choose **Show Advanced** and enter the new value.

1. Follow this step only if you are using Conductor Live. You must import the SMPTE 2110 receiver group input into Conductor Live.
   + On the primary Conductor Live web interface, choose the **Cluster** page, then choose **Nodes**.
   + Choose the down arrow beside the node and select **Import Devices**.

   You will now be able to use this input when you create a channel in Conductor Live. The names of all the imported SMPTE 2110 inputs will appear in the list of devices.

# Create a receiver group input
Step 5: Create the receiver group input

You must create a receiver group input that connects to the appropriate SMPTE 2110 receiver streams. 

**Note**  
The information in this section assumes that you are familiar with the general steps for creating a Elemental Live event or Conductor Live channel.

1. In the Elemental Live event or in the AWS Elemental Conductor Live profile, go to the Inputs section. 

1. Click **Add Input**. A row for the new input appears. 

1. Click the **Select Type** field to display a list of types. Select the receiver group that applies to this input. (Don't select **SMPTE 2110 Input**, which is an option that appears at the bottom of the list of types.) Optionally, enter a name for the input.

1. Click **Advanced** to show more fields for this input. Scroll down to the selectors section of this input. Complete the selectors as follows:
   + **Video Selector**: Leave the single selector that appears by default. Ignore the **Program** and **PID** fields, which don't apply to SMPTE 2110 NMOS inputs. Complete the other fields as applicable.
   + **Audio Selector**: Click **Add Audio Selector** to display as many selectors as you need. For example, following the examples in [Create the receiver group](s2110-nmos-create-receiver-group.md), you need three selectors.

     If the receiver group has more than one audio SDP, you must complete these fields:
     + **Selector Type**: Choose **Track**.
     + **Track**: Enter the track. Following the first example in [Create the receiver group](s2110-nmos-create-receiver-group.md), enter **1** to identify the English audio, **2** to identify the French audio, and **3** to enter the Spanish audio. It doesn't matter if the audios are all in the same SDP or different SDPs, the audio streams are always numbered in SDP order, starting from 1. 

1. Click **Add Caption Selector **once. Make sure **Source** specifies **Embedded**. Ignore the other fields on this line, they don't apply to passing through embedded captions. 

# Choose the resiliency scenario
Step 6: Configure the resiliency scenario

You can configure the receiver groups and inputs in an Elemental Live event or Conductor Live profile to support three scenarios. Note that all of the scenarios include NMOS patching, because you must always set up inputs for patching.
+ [Scenario A](input-2110.md): NMOS patching only. With this setup, the NMOS controller can send requests to Elemental Live that patch SDP files with new content. Elemental Live switches to processing the new content.
+ [Scenario B](s2110-nmos-scenario-patching-plus-failover.md): NMOS patching with hot backup. This scenario combines the patching from scenario A with support for Elemental Live hot backup. Hot backup lets Elemental Live automatically fail over from a failed input to another input. 
+ [Scenario C](s2110-nmos-scenario-patching-nw-failover.md): NMOS patching with hot backup and network redundancy. This scenario combines scenario A with hot backup and the network redundancy that is set up between the upstream system (the content source) and Elemental Live.

# Resiliency scenario A: Supporting NMOS patching
Scenario A

With this setup, the NMOS controller can send SDP content that provides patching instructions to Elemental Live. For example, in a curling match, it can send a patch that switches the source from the camera on the curling rink to the camera in the studio. 

To support NMOS patching, you must attach the same Elemental Live receiver group to two Elemental Live inputs. Each pair of Elemental Live receiver group inputs is a *patching pair*. You can set up more than one patching pair in the Elemental Live event or Conductor Live profile. 

To create each patching pair, follow this procedure.

1. Create one receiver group for the patching pair. To create a receiver group, see [Create the receiver group](s2110-nmos-create-receiver-group.md).

1. In the Elemental Live event or Conductor Live profile that you are creating, create one SMPTE 2110 NMOS input (input A), as described in [Create a receiver group input](s2110-nmos-create-input.md). In the **Advanced** section, set **NMOS patching pair **to **ON**.

1. After input A, create another input (input B) and select the same source item from the dropdown. In this way, you attach the same receiver group to both inputs. Set **NMOS patching pair **to **ON**.

**Result of this setup**

Elemental Live sets up a *patching pair* consisting of the first patching-pair-enabled input (input A in this example) and the next input in the list that is patching-pair-enabled (input B in this example). Whenever Elemental Live is ingesting this receiver group content, one of the inputs in the patching pair is *active* and the other input is in *standby*.

![\[alt text not found\]](http://docs.aws.amazon.com/elemental-live/latest/ug/images/2110-input-scenario-A.png)


The two patching-pair inputs must be next to each other. If necessary, use the up and down arrows on the far right of the web interface to move an input up or down the list.

**How patching works at runtime**

The NMOS controller sends a patching request by sending new SDP content for the receiver group that is attached to these two inputs. When Elemental Live receives the request, it sets up the standby input (input B, for example) with the new content, then switches from the active input (input A) to the standby input (input B). Input B becomes the active input. The visual impact during the patch is controlled by the setting of the [Use make-before-break field](s2110-nmos-configure.md).

# Resiliency scenario B: Supporting NMOS patching and failover
Scenario B

This scenario adds failover to the patching capabilities of scenario A.

Elemental Live can automatically fail over to a third input when the active input (from the A/B patching pair) fails. The event fails over to a hot backup input that you define (input X). Typically, this input isn't an NMOS input. You define failure conditions for the first input in the patching pair, which is input A in our example. When these conditions are present, Elemental Live will fail over to input X when there is a problem with either input in the A/B patching pair. You must also define failback conditions in input X to trigger fail back to the A/B patching pair. 

Follow this procedure:

1. Create one receiver group for the two patching pair inputs (inputs A and B). To create a receiver group, see [Create the receiver group](s2110-nmos-create-receiver-group.md).

1. In the Elemental Live event or Conductor Live profile that you are creating, create one SMPTE 2110 NMOS input (input A), as described in [Create a receiver group input](s2110-nmos-create-input.md). In the **Advanced** section, set **NMOS patching pair **to **ON**.

1. After input A, create a backup input (input X). There is no requirement for input X to be a SMPTE 2110 input. For example, it might be a file input that displays a slate. A file input is particularly useful if the cause of the input failure is a network failure, because Elemental Live can switch to a file that is stored locally on the node.

   Make sure input X is the first input immediately after input A. To move input X up or down the list of inputs, use the up and down arrows on the far right of the web interface.

1. After input X, create another SMPTE 2110 NMOS input (input B) and select the same source item that you already attached to input A. Set **NMOS patching pair **to **ON**.

1. Make these changes in input A:
   + Set **Hot Backup** to **ON**. Ignore the **Error Clear Time** and **Failback Rule** fields. 
   + Click **Add Failover Condition** to create as many failover conditions as you want. To create one condition, click **Add Failover Condition**. In **Description**, choose the type of condition, for example **Input Loss**. In **Duration**, enter the length of time the condition must continue before the condition triggers a failover to input X.

1. Make these changes in input X:
   + Set **Hot Backup** to **ON**. 
   + Enter a time in **Error Clear Time**. After all the failover conditions are no longer applicable Elemental Live waits for the specified time before it fails back to input A. 
   + Choose a **Failback Rule** to specify how Elemental Live fails back to input A. 

Don't enable hot backup on input B. Don't enable NMOS patching pair on input X.

**Result of this setup**

You now have three inputs in the order A, X, B. 
+ Patching pair: Inputs A and B each have NMOS patching pair enabled, therefore they are a patching pair, even though they are not next to each other. 
+ Hot-backup pair: Input A and input X both have hot backup enabled. Input A is set up with failover conditions. Input X is set up with failback rules. Therefore, inputs A and X are a hot-backup pair.

![\[alt text not found\]](http://docs.aws.amazon.com/elemental-live/latest/ug/images/2110-input-scenario-B.png)


**How patching works at runtime**

The NMOS controller sends a patching request by sending new SDP content for the receiver group. When Elemental Live receives the request, it sets up the standby input (input B, for example) with the new content, then switches from the active input (input A) to the standby input (input B). Input B becomes the active input. The visual impact during the patch is controlled by the setting of the [Use make-before-break field](s2110-nmos-configure.md).

**How failover works at runtime**

If input A is active and it fails, the event fails over to input X, which is the hot backup for input A Elemental Live stops ingesting input A and starts to ingest input X. 

Input X remains the active input until the failback rules (to input A) take effect. If input X fails before the failback rules come into effect, Elemental Live follows the standard input failure behavior, which means it will repeat frames and so on, then finally display a slate.

# Resiliency scenario C: Supporting NMOS patching and network failover
Scenario C

You can set up inputs in a configuration that combines NMOS patching with hot backup and network redundancy. In this scenario, the hot backup configuration allows failover between the redundant networks that are set up between the upstream system (the content source) and Elemental Live. Network redundancy lets Elemental Live fail over to sources that are being delivered over a different network, if the main network fails. Network redundancy lets you fail over to a different live source, instead of failing over to a slate (as shown in scenario B).

Assume that the event is a curling game with two cameras, one on the curling rink and one in the studio. You have set up your upstream system with the following sources:
+ Source 1: Content from the camera on the curling rink, routed over network 1.
+ Source 2: Content from the camera on the curling rink, routed over network 2.
+ Source 3: Content from the studio, routed over network 1.
+ Source 4: Content from the studio, routed over network 2.

**Topics**
+ [

## Setup steps
](#s2110-nmos-c-steps)
+ [

## Result of the setup
](#s2110-nmos-c-result)
+ [

## Set up the sources on the NMOS controller
](#s2110-nmos-c-controller-setup)
+ [

## How patching works at runtime
](#s2110-nmos-c-patch-in-action)
+ [

## How failover works at runtime
](#s2110-nmos-c-failover-in-action)

## Setup steps


To set up SMPTE 2110 sources in this way, follow this procedure.

1. Create two receiver groups, one for network 1 and one for network 2. For example, RG1 and RG2. To create a receiver group, see [Create the receiver group](s2110-nmos-create-receiver-group.md).

1. In the Elemental Live event or Conductor Live profile that you are creating, create four SMPTE 2110 NMOS inputs. Set up each input with the receiver groups, as follows:
   + Input A. Set the Input type to RG1.
   + Input B. Set the Input type to RG2.
   + Input C. Set the Input type to RG1.
   + Input D. Set the Input type to RG2.

   For detailed instructions, see [Create a receiver group input](s2110-nmos-create-input.md). 

   You now have four inputs in the order A, B, C, D.  
![\[alt text not found\]](http://docs.aws.amazon.com/elemental-live/latest/ug/images/2110-input-scenario-C-1.png)

1. Turn on **NMOS patching pair** in all these inputs.

1. Turn on **Hot Backup** in all these inputs.

1. Make these changes in input A:
   + Create as many failover conditions as you want. To create one condition, click **Add Failover Condition**. In **Description**, choose the type of condition, for example **Input Loss**. In **Duration**, enter the length of time the condition must continue before the condition triggers a failover to input B.
   + Ignore the **Error Clear Time** and **Failback Rule** fields. 

1. Make these changes in input B:
   + **Error Clear Time**: Enter a time. After all the failover conditions are no longer applicable Elemental Live waits for the specified time before it fails back to input A. 
   + **Failback Rule**: Choose a rule to specify how Elemental Live fails back to input A. 

1. On inputs C and D, *don't* set up failover conditions, error clear times or failback rules.

## Result of the setup


You have now set up the four inputs as shown in the following diagram. All inputs have hot backup enabled and all have patching enabled.

![\[alt text not found\]](http://docs.aws.amazon.com/elemental-live/latest/ug/images/2110-input-scenario-C-3.png)


Elemental Live proceeds as follows:
+ Elemental Live sets up a hot-backup pair.

  Inputs A and B have failover conditions and failover rules set, so Elemental Live considers them to be a hot-backup pair. 
+ Elemental Live next sets up the patching pairs.

  It sets up input A with input C, and sets up input B with input D. 

  Inputs C and D have hot backup enabled. But they aren't standard backups. Instead, they shadow the A/B input patching pair:
  + The failover conditions for input A apply to input C.
  + And the failback conditions of input B apply to D.

To summarize:
+ Input A. Its hot backup is input B. Its patching pair is input C.
+ Input B. Its hot backup is input A. Its patching pair is input D.
+ Input C. Its hot backup is input D. Its patching pair in input A.
+ Input D. Its hot backup is input C. Its patching pair is input B.

## Set up the sources on the NMOS controller


Tell the operator of the NMOS controller to set up the four sources as follows, to be ready when the event starts:
+ Source 1: Route to RG1. (This source is the content from the camera on the curling rink, routed over network 1.)
+ Source 2: Route to RG2. (This source is the content from the camera on the curling rink, routed over network 2.)
+ Source 3: Don't route this source. This source is the patching pair for source 1. (This source is the content from the studio, routed over network 1.)
+ Source 4: Don't route this source. This source is the patching pair for source 2. (This source is the content from the studio, routed over network 2.)

When the event starts, the sources will connect to the inputs as shown in this diagram.

![\[alt text not found\]](http://docs.aws.amazon.com/elemental-live/latest/ug/images/2110-input-scenario-C-4.png)


## How patching works at runtime


The following table describes how Elemental Live handles patching requests, depending on which input is currently active. Read across each row. 


| Scenario | Current active input | Result | 
| --- | --- | --- | 
| 1 | Input A | Elemental Live stops ingesting input A and starts to ingest input C. Both these inputs are on the same network. | 
| 2 | Input B | Elemental Live stops ingesting input B and starts to ingest input D. Both these inputs are on the same network. | 
| 3 | Input C | Elemental Live stops ingesting input C and starts to ingest input A. Both these inputs are on the same network. | 
| 4 | Input D | Elemental Live stops ingesting input D and starts to ingest input B. Both these inputs are on the same network. | 

This diagram illustrates scenario 1. The NMOS controller sends a patching request by sending new SDP content for RG1. When Elemental Live receives the request, it sets up the standby input (input C) with the new content, then switches from input A to input C. Input C becomes the active input. The event starts to process the studio feed from network 1 instead of the curling rink feed from network 1. The visual impact during the patch is controlled by the setting of the [Use make-before-break field](s2110-nmos-configure.md).

Typically, the NMOS controller will also send a patching request by sending new SDP content for RG2 (scenario 2). In this way, the hot backup for input C will be input D, which is the same content (the studio) but on the other network.

![\[alt text not found\]](http://docs.aws.amazon.com/elemental-live/latest/ug/images/2110-input-scenario-C-6.png)


If the NMOS controller doesn't patch RG2, Elemental Live still prepares input D (the hot backup for input C). But for the source, the current source for RG2, which is source 2. This source is on the other network, so if input C fails, a failover will succeed. But the content will be curling, not the studio. 

The following diagram illustrates this undesirable setup.

![\[alt text not found\]](http://docs.aws.amazon.com/elemental-live/latest/ug/images/2110-input-scenario-C-7.png)


## How failover works at runtime


The following table describes how Elemental Live handles input failures, depending on which input is currently active. Read across each row.


| Scenario | Current active input | Result | 
| --- | --- | --- | 
| 1 | Input A | If input A fails, the event fails over to input B, which is the hot backup for input A. So Elemental Live switches to the other network). | 
| 2 | Input B | Input B is active until the failback rules (to input A) take effect.If input B fails before the failback rules come into effect, Elemental Live follows the standard input failure behavior, which means it will repeat frames and so on, then finally display a slate. | 
| 3 | Input C |  If input C fails, the event fails over to input D, which is the hot backup for input C. So Elemental Live switches to the other network).  | 
| 4 | Input D | Input D is active until the failback rules (to input C) take effect.If input D fails before the failback rules come into effect, Elemental Live follows the standard input failure behavior, which means it will repeat frames and so on, then finally display a slate. | 

This diagram illustrates scenario 1. Elemental Live stops ingesting input A and starts to ingest input B (the hot backup for input A). Note that both input A and input C are affected when the network goes offline, as shown in the diagram. The event starts to process the studio feed from network 2 instead of network 1. 

![\[alt text not found\]](http://docs.aws.amazon.com/elemental-live/latest/ug/images/2110-input-scenario-C-5.png)
