NDI Discovery Server on a Raspberry Pi
Summary: This guide will show you how to set up a Raspberry Pi to act as a headless NDI Discovery Server for your network. This guide will use a Raspberry Pi 3.
Equipment Needed:
- Raspberry Pi (Raspberry Pi 3 used in this guide)
- HDMI Cable
- HDMI Monitor
- Wired USB Keyboard
- Router
- Network Cable
- SD Card and SD Card Drive
Note: Instructions in monotype font are commands that must be entered into the computer’s terminal. We recommend that you copy and paste these commands when possible. Press the “Enter” button after inputting these commands into the terminal.
Initial Setup of the Raspberry Pi:
- Download the Raspberry Pi Imager and install it to your computer
- Open the Raspberry Pi Imager. Click on “Choose OS”. Navigate to: “Raspberry Pi OS (other)” -> “Raspberry Pi OS Lite (32-bit)”. This will install the 32-bit, server version of the Raspberry Pi OS onto your SD Card.
- Insert your SD Card into your SD Card Drive. Click “Choose Storage” and select your SD Card. Click “Write” and the image will write to the SD Card.
- When the image finishes writing to the SD Card, insert the SD Card into your Raspberry Pi. Connect the Raspberry Pi to your monitor with an HDMI cable. Connect your Raspberry Pi to your network with an ethernet cable. Connect a USB keyboard to one of the USB ports. Once the connections are made, plug your Raspberry Pi into power.
- It will take about 2 minutes for your Raspberry Pi to boot. Because you are using a server installation, the computer will wait for user input to show the login prompt. Press ‘Enter’ after 2 minutes, and you should see the following prompt:
"raspberrypi login:"
- The default login name is:
pi
- the default password is:
raspberry
- Change the default password:
passwd pi
- Next, update your system:
sudo apt update && sudo apt upgrade -y
- This update process may install updates that require a reboot. After your system updates:
sudo reboot
Configure Your Raspberry Pi for Remote Access:
- You will enable SSH with the Raspberry Pi Configuration Utility:
sudo raspi-config
- You will change the hostname of your computer. Select: “1. System Options” and then “S4 Hostname” I will use the hostname: “pindisrv”
- Next, choose “3. Interface Options” and then “F2 SSH”. Then select “Yes” to enable the SSH server.
- Select Finish and Reboot
- You will set a static IP address for your Raspberry Pi. You will need a Static IP address, Subnet Mask, Gateway IP address, and DNS server. Please refer to the LAN settings of your Router to determine an appropriate IP address. I will use the following settings:
Static IP address and subnet mask: 192.168.15.89/24
Gateway IP address: 192.168.15.1
DNS: 192.168.15.1
- You will configure your static settings with DHCPCD:
sudo nano /etc/dhcpcd.conf
- Look down the page of text until you see the line ***Make explicit how to delete characters with nano***
- # Sample static IP configuration
- Delete the “#” in front of the line: “interface eth0”
- Delete the “#” in front of the line: ”static ip address==192.168.0.10/24” and put your static ip address in place of “192.168.0.10/24”.
- Delete the “#” in front of the line: “static routers==192.168.0.1” and put your gateway IP address in place of “192.168.0.1”.
- Delete the “# in front of the line: “static domain name servers==...” and put only the ip addresses on the DNS servers you want, separated by a space after the “==”.
- Press “Ctrl+x” to exit and press “y” to save. Press “Enter” to confirm the file name for saving.
- Reboot your computer:
sudo reboot
- Now, you can access your Raspberry Pi remotely through SSH.
- Windows Users: Open cmd.exe
MacOS users: Open terminal.app
- Connect to your Raspberry Pi:
ssh pi@<ip_address>
- You will get a warning about an ECDSA fingerprint to which you will have to type ‘yes’ to get past. You will then type the password for your Raspberry Pi.
- Install the NDI SDK:
- Get the NDI SDK here: https://www.ndi.tv/sdk/
- Make a directory that will house the SDK:
mkdir ndi-sdk
- Change to that directory:
cd ndi-sdk
- Newtek will send you an email with links to the SDK for various operating systems. Copy the link for the NDI SDK for Linux, and go back to your SSH window. You will use wget to download the SDK. Right click into the terminal window to paste the link:
wget https://<NDI_SDK_Address>
- This downloads the archive “Install NDISDK_v4_Linux.tar.gz”
- Extract the archive:
tar -xvf InstallNDISDK_v4_Linux.tar.gz
- Make the resulting shell script executable:
sudo chmod +x InstallNDISDK_v4_Linux.sh
- Execute the shell script to install the SDK:
sudo ./InstallNDISDK_v4_Linux.sh
- You have to go through the NDI SDK EULA. Pressing enter gives you a new line. Press ‘y’ on the correct line, and the installation will complete. If you miss the ‘y’ entry, run the shell script again.
- Remove the archive file:
rm InstallNDISDK_v4_Linux.tar.gz
- Remove the installation script:
rm InstallNDISDK_v4_Linux.sh
- Copy the contents of the SDK to the current directory:
cp -r 'NDI SDK for Linux'/* ./
- Remove the old directory:
rm -r 'NDI SDK for Linux'/
- You can try running the NDI Discovery server. First, change to the directory of the NDI Discovery Server:
cd bin/arm-rpi3-linux-gnueabihf/
- Run the NDI Discovery Server:
./ndi-directory-service
- Press “Ctrl+c” to stop the NDI Discovery Server.
Create a Service for the NDI Discovery Server:
- You will create a systemd service to run the NDI Discovery Server in the background and restart on boot. Navigate to the folder with your services:
cd /etc/systemd/system/
- Open a new file where you will define the NDI Discovery service:
sudo nano ndi-discovery.service
- Write the following in the file:
[Unit]
Description=NDI Discovery Service
[Service]
ExecStartPre =/bin/sleep 30
User=pi
WorkingDirectory=/home/pi/ndi-sdk/bin/arm-rpi3-linux-gnueabihf/
ExecStart=/home/pi/ndi-sdk/bin/arm-rpi3-linux-gnueabihf/ndi-directory-service
Restart=always
[Install]
WantedBy=multi-user.target
- Ctrl+x and Y to quit and save
- Reload Systemd:
- Start the NDI Discovery Service
p; sudo systemctl start ndi-discovery.service
- Check the status of the NDI Discovery Service:
sudo systemctl status ndi-discovery.service
- Enable the Discovery Service
sudo systemctl enable ndi-discovery.service
- Reboot the computer. The NDI Discovery Server will start 30 seconds after boot:
sudo reboot
- Attempt to connect to the NDI Discovery Server from your computer and cameras.
The NDI Discovery Server is located in the NDI SDK. You will need to download the NDI SDK here: https://www.ndi.tv/sdk/
Click here for assistance with the NDI Access Manager, click here.
Click here for more information on the NDI Discovery Server.