LogoLogo
🛠️ Tools🗂️ SDK📄 White Paper
  • Getting Started
    • 🟣What is NDI?
    • 🆕Release Notes
    • 📄White Paper
      • Discovery & Registration
        • mDNS
        • Discovery Service
        • Manual Connection
        • NDI Groups
      • NDI Protocols
        • Reliable UDP - NDI 5
        • Multipath TCP - NDI 4
        • UDP with Forward Error Correction – NDI 3
        • Single TCP – NDI 1
      • NDI Related Network Ports
      • Getting video across the network
      • Network Layout
      • Bandwidth
        • NDI High Bandwidth based on SpeedHQ2 (8bit 4:2:2)
        • NDI High Bandwidth based on SpeedHQ7 (8bit 4:2:2:4)
        • NDI HX2 h.264 (8bit 4:2:0)
        • NDI HX2 h.265 (8bit 4:2:0)
        • NDI HX3 h.264 (8bit 4:2:0)
        • NDI HX3 h.265 (8bit 4:2:0)
        • NDI Proxy and bandwidth optimization
      • Network Interface Settings
      • NIC Selection
      • Encoding and Decoding
      • Multicast
      • NDI Administrative Settings
      • Synchronization
      • NDI in the Cloud
    • Glossary
      • NDI Terminology
      • Industry Terminology
  • Using NDI
    • Introduction
    • NDI for Video
      • Digital Video Basics
      • NDI Video Codecs and Format Matrix
      • NDI Encoding Support Matrix
        • Practical NDI Receivers Format Support
        • Practical NDI Transmitters Support
        • Summary Table
      • Interoperability Scenarios
    • NDI for Audio
      • Digital Audio Fundamentals
      • Audio Over IP
      • Technical Facts About NDI for Audio
      • Use Cases
      • Products Using NDI for Audio
    • ⚒️NDI Tools
      • Release Notes
      • Installing NDI Tools
        • Software License Agreement
        • Privacy Policy
      • NDI Tools Launcher
      • NDI Tools for Windows
        • Access Manager
        • Bridge
          • NDI Bridge automation
          • Configuring Port Forwarding
          • Bridge Tool Logging
        • Remote
        • Router
        • Screen Capture
        • Screen Capture HX
        • Studio Monitor
        • Test Patterns
        • Webcam Input
      • NDI Tools for Mac
        • Access Manager
        • Scan Converter
        • Router
        • Test Patterns
        • Video Monitor
        • Virtual Input
      • Plugins
        • NDI for After Effects
        • NDI for Premiere Pro
        • NDI Output for Final Cut Pro
        • NDI for VLC
        • Audio Direct
        • OBS
    • Utilities
      • Analysis
    • Using NDI with Software
      • Getting Started with NDI in OBS for Windows or Mac
      • Using OBS Studio as a Commentary System
      • Using NDI Tools as a virtual camera in Mac
      • Using NDI and Dante on the same Network
      • Use OBS video + audio on Zoom with macOS
    • Using NDI with Hardware
      • NDI HX upgrades for cameras
      • How to Activate Panasonic Cameras for NDI HX1 — Step-by-Step
      • Recommended Network Switch Settings for NDI
  • Developing with NDI
    • Introduction
    • 📂SDK
      • Release Notes
      • Licensing
      • Software Distribution
        • Header Files
        • Binary Files
        • Redistributables
        • Content Files
        • Libraries
        • NDI-SEND
        • NDI-FIND
        • NDI-RECEIVE
        • Utilities
        • Command Line Tools
      • CPU Requirements
      • Dynamic Loading of NDI Libraries
      • Performance and Implementation
      • Startup and Shutdown
      • Example Code
      • Port Numbers
      • 🔧Configuration Files
      • Platform Considerations
      • NDI-SEND
      • NDI-FIND
      • NDI-RECV
      • NDI Routing
      • HDR
      • Command Line Tools
      • Frame Types
        • Video Frames
        • Audio Frames
        • Metadata Frames
      • Windows DirectShow Filter
      • 3rd Party Rights
      • Support
    • Advanced SDK
      • Release Notes
      • Licensing
      • Overview
      • Configuration Files
      • NDI SDK Review
        • Sending
          • Asynchronous Sending Completions
          • NDI Sending On High Latency Connections
        • Receiving
          • Custom Allocators
            • Video Allocators
            • Audio Allocators
          • Dynamic Bandwidth Adjustment
        • Finding
        • Video Formats
          • Receiver Codec Support Level
          • Frame Synchronization
      • Genlock
      • AV Sync
        • Guidelines
        • Creating and Destroying Devices
        • Recovering Audio
      • Using H.264, H.265, and AAC Codecs
        • Sending Audio Frames
        • Sending Video Frames
        • H.264 Support
        • H.265 Support
        • AAC Support
        • OPUS Support
        • Latency of Compressed Streams
        • Stream Validation
      • External Tally Support
      • KVM Support
      • NDI Advanced SDK FPGA Example Designs
        • Prebuilt uSD Images
        • NDI FPGA Reference Design
          • FPGA Projects
            • Changelog
          • C++ Application Code
            • Changelog
          • linux_kernel
            • Changelog
          • uSD Image Builder
            • Changelog
        • Changelog
    • Utilities
      • Unreal Engine SDK
        • Release Notes
        • Licensing
        • NDI Plugin Installation
        • Simple Setup of Broadcast and Receivers
        • NDI Broadcast Actor
        • NDI Receiver Actor
        • NDI Media Assets
        • Getting Started with Example Blueprint Projects
        • Advanced
      • Free Audio
      • Bridge Service
        • Installation
          • Silent Installation
        • Configuration
          • Web UI
          • Configuration File
          • Manual API Key Management
        • Webhooks
        • WebSockets
        • API
    • NDI Certified
      • Certification Guidelines
        • Interoperability Requirements
        • Technical Requirements
      • Certification Process
        • Pre-certification Checklist
        • Device Testing Methods
          • Camera
          • HDMI Encoder
          • SDI Encoder
          • Decoder
          • NDI Controller
          • NDI Monitor
          • Multicast Testing
        • Detailed process
    • Metadata
      • Metadata Sources
      • Metadata for XML
      • XML Validation
      • Metadata Elements
      • Proposed New Metadata Messages
      • PTZ and Control Messages
      • Undocumented Mysteries
  • Developer Guides
    • Decoding with NDI
    • NDI Bridge Deployment
  • FAQ
    • Index
    • NDI Tools
      • What is the NDI Analysis Tool and where do I get it from?
      • Why does my NDI connection stay active once the source is offline?
      • Why are my changes to the NDI JSON configuration file not being saved?
      • Why is the license for my Panasonic camera not active?
      • How does registration for NDI Tools work?
      • The time code on my file is incorrect, how do I change it?
      • How can I make NDI Tools launch automatically?
      • What is the NDI ECCN?
      • How do I use NDI output with Microsoft Teams
      • Where is Screen Capture (HX) for Mac?
    • NDI Certified
      • What is the NDI Certification Program?
      • Why did you start this certification program?​
      • What happens to my device after it's certified?
      • Is certification mandatory to be a partner of NDI?​
      • I am an OEM manufacturer, can my products be certified?​
      • How long does the certification process take?
      • How do I become certified?​
      • What happens if my product doesn’t meet the requirements for Certification?​
      • Are there any fees to become NDI Certified?
    • Common Issues
      • I'm having trouble getting multicast set up.
      • I'm having trouble with my NDI HX License
      • Why can't I find my Android 14-based NDI devices on my network?
      • Why won’t NDI Tools install on my Windows PC?
      • How do I enable NDI in “New” Microsoft Teams (Windows only)?
      • Why can’t HX Capture display the full resolution of my iPad or iPhone?
      • The NDI HX Camera app won't launch on older phones and iOS
      • Why won't MacOS Sonoma (14.1) recognize NDI Tools as a virtual camera?
      • I'm having issues with Virtual Input for macOS
      • I'm having issues with Final Cut Pro
      • NDI Camera App Issue
    • SDK
      • Where can I find the source code for the FPGA board?
      • What system resources are required to support a design including the NDI FPGA Codecs?
      • Why can’t my h264/265 video be received by an NDI receiver when using the embedded SDK?
      • Can I use the Unreal SDK on Mac?
      • What are the Differences Between the NDI SDK and the NDI Advanced SDK
    • ✨NDI 6
      • Do I need to upgrade to NDI 6 if I'm not using the new features?
      • Is there a fee to upgrade to NDI 6
      • Why doesn't my existing Vendor ID work with NDI 6?
      • How can I get a previous version of NDI Tools or the SDK?
    • NDI HX License Upgrades
      • What is happening with NDI HX Upgrades?
      • Will my existing HX-upgraded camera be affected?
      • I bought a camera before June 30, 2025, but didn't buy an HX license. Can I still get one?
      • I bought a license and a camera but didn't redeem it until after. Can I still get an HX license?
      • If my HX upgrade fails can I transfer the license?
      • Can I sell my upgraded HX camera and keep the license?
      • Will my NDI version work with my current HX license?
      • What does the HX upgrade sunset program mean for camera manufacturers?
      • What will NDI Support do for licenses after the sunset date?
      • I factory reset my camera and forgot the license. Can you help me get it back?
Powered by GitBook

2024 @ NDI Vizrt AB.

On this page
  • Login Details
  • Obtaining the uSD Image Files
  • Writing the Image to a uSD Card
  • Using the Image
  • First Boot
  • Running the Example NDI Encode Application
  • Known Issues and Limitations
  • Running the Example NDI Decode Application
  • Known issues and limitations
  • Board Details
  • Altera Arria-10 SoC Development Kit
  • Digilent Zybo-Z7-20
  • Digilent Arty-Z7-20
  • Xilinx ZCU104
  • Xilinx Kria KV260

Was this helpful?

Export as PDF
  1. Developing with NDI
  2. Advanced SDK
  3. NDI Advanced SDK FPGA Example Designs

Prebuilt uSD Images

This page details how to obtain and use prebuilt Micro SD card images with supported FPGA development boards to easily create a working NDI encoder or decoder.

Login Details

Default username: debian
Default password: temppwd

sudo is enabled without password for root access
root login is disabled

Obtaining the uSD Image Files

The uSD images may be downloaded via the following URLs:

Manufacturer
Board
uSD Image Download URL

Altera

A10-SoCDK

http://ndi.link/NDIUSDA10

Digilent

Zybo-Z7-20

http://ndi.link/NDIUSDZYBO

Digilent

Arty-Z7-20

http://ndi.link/NDIUSDZYBO

Xilinx

ZCU104

http://ndi.link/NDIUSDZCU

Xilinx

Kria KV260

http://ndi.link/NDIUSDKV260

NOTE: The same uSD image is used for the Zybo-Z7-20 board, and the Arty-Z7-20. The uSD image contains boot files for both systems. To use the image with the Arty-Z7-20, you must update the boot files on the FAT partition prior to booting on the Arty development board.

Each uSD image is a zip archive of three files:

Extension
Description

.img.xz

The image file (xz compressed)

.bmap

A block map file for use with bmaptools (highly recommended)

.md5

Checksum of the above two files

Most users will likely only need to use the img.xz file.

Writing the Image to a uSD Card

Using the Image

Insert the programmed uSD card into the development board and boot as usual. It is recommended you connect to the serial terminal (via USB). All images use the following console settings:

115200 baud, 8 data bits, 1 stop bit, no parity

The system will boot and display the IP address, as well as the default username and password at the serial console login prompt. You may login either via the serial console or remotely via ssh.

First Boot

The initial boot will take somewhat longer than normal as a new set of ssh keys are generated and the root partition is expanded to fill the uSD card.

Running the Example NDI Encode Application

An example NDI source application is provided. This application is launched automatically at boot and may also be run from the command line. The utility is named ndi_encode and is capable of using a generated video pattern or live HDMI input as the video source. The application includes various command-line options to control the initial video mode as well as a command interpreter that can be used to change the operating mode at run-time. To launch the demo from the command line, simply run one of the following commands:

# Live HDMI input:
ndi_encode

# Pattern generator:
ndi_encode -P

Once running, the operating mode can be changed by typing commands at the console. Type "help" to get a list of commands.

If running with HDMI input on the ZCU104, the second virtual serial port is used as a console for the Cortex-R5 running the HDMI monitoring software. Connection details are the same as the Linux console:

115200 baud, 8 data bits, 1 stop bit, no parity

The R5 will report changes in the incoming HDMI stream on this port.

Known Issues and Limitations

While the NDI Encoder core is fully functional the example software and demo platforms currently have some limitations:

  • This version of the NDI Advanced SDK is designed for development use and will run on a stream for 30 minutes. For a commercial use license, please email support@ndi.video

  • Due to the asynchronous nature of the startup scripts, the system clock may be adjusted after the ndi_encode example is launched. If this happens, it may trigger the 30 minute timeout even though the application may not have been running for 30 minutes of "wall clock" time. Kill and re-start the demo application to resume NDI streaming.

  • The HDMI input hardware for the ZCU104 uses an evaluation license, so HDMI video will stop being received and the image will turn "green" after apx. 1 hour of operation. Reprogram the FPGA (eg: reboot) to restore normal operation.

  • While HDMI input on the ZCU104 is functional, the HDMI management software (running on one of the R5 cores) does not communicate with the ndi_encode application. The video format tracking hardware is used to detect video format changes, however more details regarding the HDMI signal are available via the HDMI management software.

Running the Example NDI Decode Application

An example NDI receive application is provided. This application is launched manually by executing ndi_decode. When launched with no options the utility will attempt to locate NDI sources on the local network and will automatically connect to the first source found. A specific NDI source may be specified using the -s parameter:

ndi_decode -s "NDI Device (Chan 1)"

NOTE: The default boot files on the uSD image must be switched to the NDI Decode version prior to running the ndi_decode application. See the "Available Examples" section for your specific board for details.

Known issues and limitations

  • "Scaling" is performed by manipulating line stride when the NDI stream and video output resolutions do not match

  • Format conversion is not performed between 4:2:2 and 4:2:0 video sources. If the output video format does not match the NDI stream format, a warning is displayed on the Linux console.

Board Details

Connections and settings required to boot using the uSD images. Refer to the vendor documentation for full details.

Altera Arria-10 SoC Development Kit

Available Examples

Two FPGA examples are available for the ZCU104 board:

  • Decode example with 4 NDI Decode cores

  • Encode example with 4 NDI Encode cores

The default uSD image uses the Enc files, however files for all examples are included on the uSD card. To change the example design, simply update the FPGA programming files in the /boot directory and cycle power:

# Use the Decode example
sudo cp /boot/fit_spl_fpga_dec.itb /boot/fit_spl_fpga.itb

# Use the Encode example
sudo cp /boot/fit_spl_fpga_enc.itb /boot/fit_spl_fpga.itb

# You MUST cycle power to reprogram the FPGA!!!

Jumpers and Switches

All jumpers and switches are set per the defaults listed in section 3 of the Arria 10 SoC Development Kit User Guide.

Ref
Function
Setting

SW1

Boot Mode

All off

SW2

User Switches

All off

SW3.1

A10 JTAG

Off

SW3.2

Max V JTAG

Off

SW3.3

FMCA JTAG

On

SW3.4

FMCB JTAG

On

SW3.5

PCIe JTAG

On

SW3.6

MSTR0 JTAG

Off

SW3.7

MSTR1 JTAG

Off

SW3.8

MSTR2 JTAG

Off

SW4

MSEL

All off

J16

OSC2 Clk Sel

Short

J17

OSC2 Clk Sel

Short

J30

HPS Core Voltage

Short

J32

FMCBVADJ

Short 9 and 10

J42

FMCAVADJ

Short 9 and 10

J3

BSEL0

Short left 2 pins

J4

BSEL1

Short upper 2 pins

J5

BSEL2

Short upper 2 pins

Connections

Ref
Function / Label
Connect to

J19

FMC Port B

Bitec FMC HDMI Daughter Card Rev. 11

J5

HPS Ethernet

Local Ethernet network

J10

PROG/UART

Host system USB port

J36

Power

Power Supply Module

RX

Bitec HDMI Rx

HDMI video source (NDI Encode)

TX

Bitec HDMI Tx

HDMI video output (NDI Decode)

LEDs

LED
Function

FPGA_LED0

Tally (Main or Preview)

FPGA_LED1

Tally (Main)

FPGA_LED2

Tally (Preview)

FPGA_LED3

CPU load

Digilent Zybo-Z7-20

Available Examples

Three FPGA examples are available for the Zybo-Z7 board:

  • Decode.Xil: 4-core NDI Decoder with 1 GB of 32-bit SDRAM

  • Encode.Xil: 4-core NDI Encoder with 1 GB of 32-bit SDRAM

  • Enc-Lite.Xil: 2-core NDI Encoder with 512 MB of 16-bit SDRAM (1 SDRAM chip is unused)

The default uSD image uses the 4-core Encoder files, however files for all three examples are included on the uSD card. To change the example design, simply update the files in the /boot directory and reboot:

# Use the Decode example with 4 cores and 1 GB of 32-bit SDRAM
sudo cp /boot/Decode.Xil/* /boot/

# Use the Encode example with 4 cores and 1 GB of 32-bit SDRAM
sudo cp /boot/Encode.Xil/* /boot/

# Use the "Lite" Encode example with 2 cores and 512 MB of 16-bit SDRAM
sudo cp /boot/Enc-Lite.Xil/* /boot/

The "Enc-Lite" Encode example is intended to allow performance evaluation of a typical "minimal" Zynq platform that uses only a single SDRAM memory chip with a 16-bit memory bus. This design is still capable of processing 1080p60 video.

The "Full" Encode example will have lower latency at all resolutions and can in theory compress up to 4Kp60 4:2:0 video (with enough available SDRAM bandwidth). A source of 4K video would also be required (eg: Analog Devices ADV7619, ITE IT68059) since the HDMI I/O on the Zybo-Z7 does not support resolutions beyond 1080p60.

Jumpers and Switches

Ref
Function
Setting

JP5

Boot Mode

SD

JP6

Power

WALL

Connections

Ref
Function / Label
Connect to

J9

HDMI Rx

HDMI video source (NDI Encode)

J8

HDMI Tx

HDMI video output (NDI Decode)

J7

Line In

Analog audio in

J5

Headphone

Analog audio out

J3

Ethernet

Local Ethernet network

J17

Power

Appropriate 5V power supply

J12

PROG/UART

Host system USB port

LEDs

LED
Function

LD0

Tally (Main)

LD1

Tally (Preview)

LD2

CPU load

LD3

uSD activity

LD4

Tally (either Main or Preview)

Digilent Arty-Z7-20

Available Examples

One FPGA example is available for the Arty-Z7 board:

  • Arty-Enc.Xil: NDI Encoder based on Zybo "Lite" design

The default uSD image uses the Zybo boot files, however the Arty boot files are included. To modify the uSD image to boot on the Arty, simply update the files in the FAT partition before booting the Arty board:

# Mount the first partition on the uSD
sudo mount /dev/sdx1 /mnt

# Copy the Arty version of the "Lite" Encode example to the filesystem root
sudo cp /mnt/Arty-Enc.Xil/* /mnt/

# Unmount the partition
sudo umount /mnt

# Remove the uSD and use to boot the Arty-Z7

Jumpers and Switches

Ref
Function
Setting

JP4

Boot Mode

SD

JP5

Power

USB (when using USB power)

JP5

Power

REG (when using J18 with 7-15V power)

Connections

Ref
Function / Label
Connect to

J10

HDMI Rx

HDMI video source (NDI Encode)

J11

HDMI Tx

HDMI video output (NDI Decode)

J8

Ethernet

Local Ethernet network

J14

PROG/UART

Host system USB port

LEDs

LED
Function

LD0

Tally (Main)

LD1

Tally (Preview)

LD2

CPU load

LD3

uSD activity

Xilinx ZCU104

Available Examples

Two FPGA examples are available for the ZCU104 board:

  • Dec: Decode example with 4 NDI Decode cores

  • Enc: Encode example with 4 NDI Encode cores

The default uSD image uses the Enc files, however files for all examples are included on the uSD card. To change the example design, simply update the files in the /boot directory and reboot:

# Use the Decode example
sudo cp /boot/Dec/* /boot/

# Use the Encode example
sudo cp /boot/Enc/* /boot/

Jumpers and Switches

Ref
Function
Setting

J85

POR_OVERRIDE

2-3 (default)

J12

SYSMON I2C addr

1-2 (default)

J13

SYSMON I2C addr

1-2 (default)

J20

PS_POR_B

1-2 (default)

J21

PS_SRST_B

1-2 (default)

J22

Reset Seq

open (default)

SW6 1

PS_MODE

On

SW6 2

PS_MODE

Off

SW6 3

PS_MODE

Off

SW6 4

PS_MODE

Off

Connections

Ref
Function / Label
Connect to

P7

HDMI Rx (bottom)

HDMI video source

J52

Power

Power supply

P12

Ethernet

Ethernet network

J164

JTAG/UART

Host system USB port

LEDs

LED
Function

LED0

Tally (Main or Preview)

LED1

Tally (Main)

LED2

Tally (Preview)

LED3

CPU load

Xilinx Kria KV260

Available Examples

One FPGA example is available for the Kria KV260:

  • Enc: Encode example with 4 NDI Encode cores

Board setup

There are no jumpers or switches to set on the KV260, and there are no user LEDs available to indicate tally.

Last updated 5 months ago

Was this helpful?

Use of bmaptool at a Linux command line is the most efficient way to write the image file to a uSD card. If this is not an option or is considered too complex, any uSD imaging tool which supports xz compression can be used. is a good choice if you do not already have a preference.

The NDI example design requires the same board configuration as the Xilinx "Smart Camera" example, including the FSBL programmed into the on-module flash memory and the AR1335 camera module as provided in the connected to J7.

See the instructions from Xilinx for full details.

Etcher
Basic Accessory Pack
Getting Started