Dante
The Dante page is a visual routing matrix for managing Audinate Dante audio-network subscriptions. From one screen you discover the Dante devices on the network, then create and clear audio routes between transmitter (TX) and receiver (RX) channels — the same crosspoints you would otherwise patch in Dante Controller. Subscription changes made anywhere on the network are reflected back on the matrix in near real time.
Open Dante
Dante is a premium integration. Adding a dante device — and opening this page — requires the Dante product in your license. Existing devices keep running if a license later changes. See License.
How it works
GEM does not speak the Dante protocol directly. It drives a bundled command-line tool (netaudio) that discovers devices and edits subscriptions over the Dante/mDNS multicast network. GEM ships and auto-updates this tool as part of its Python environment — you do not install or configure anything beyond the device record. If that environment was never provisioned, discovery cannot run; see Troubleshooting.
Because GEM rides on the same network plumbing as Dante Controller, you can use both at once — a route you patch in Dante Controller shows up on this matrix, and vice versa.
Prerequisites
- GEM server on the same Layer-2 network as the Dante devices. Dante discovery and routing use multicast, which must reach the GEM host. If GEM is on a different VLAN, multicast (mDNS plus the Dante subscription-change group
224.0.0.231:8702) must be routed to it. - A provisioned GEM Python environment. The bundled
netaudiotool lives there. A normal GEM install provisions it automatically; if it is missing, re-run the GEM installer and choose the Python/dependencies step. Without it, a Dante device will fail to connect and no devices will be discovered. - One
dantedevice record. Create a single device in System → Devices with the driver set todanteand Enabled set to Yes. No IP address, port, or attributes are required — the driver finds Dante devices itself. Only one Dante device is needed per site; this page uses the first enabled one.
Discovery
The Dante Discovery section at the top of the page controls scanning.
| Control | What it does |
|---|---|
| Start Discovery | Begins scanning for Dante devices and starts watching for subscription changes. Newly powered-on devices appear within about ten seconds. The status badge changes to Discovering…. |
| Stop Discovery | Stops scanning and watching for changes. Already-discovered devices stay on screen. The button toggles back to Start Discovery and the badge reads Idle. |
| Refresh | Re-reads the current device list and all active routes from the driver. Use this after changing devices in Dante Controller, or to redraw the matrix. |
Start Discovery and Stop Discovery are the same button toggling state — only one is shown at a time. To the right, a badge shows Discovering… or Idle, followed by a count of how many Dante devices have been found.
Discovery starts on its own as soon as the Dante device connects, so the matrix often populates before you click anything. The Start/Stop buttons let you pause and resume it from this page.
Routing Matrix
The routing matrix is the main interface for creating and clearing audio routes. It appears only once both a transmitter and a receiver have been discovered — if you see devices listed but no matrix, you have only TX (or only RX) devices so far.
Layout
- Columns (across the top): TX (transmitter) devices and their individual output channels. The top-left corner cell shows the orientation: TX ► across, RX ▼ down.
- Rows (down the left): RX (receiver) devices and their individual input channels.
- Grid cells: the crosspoint where a TX channel column meets an RX channel row.
Cell states
| State | Appearance | Meaning |
|---|---|---|
| No route | Empty cell | No subscription between these channels. |
| Active route | Green cell with a checkmark (✓) | The RX channel is subscribed to the TX channel. |
Creating a route
Click an empty cell at the intersection of the TX channel (column) you want as the source and the RX channel (row) you want as the destination. The cell turns green with a checkmark and a toast confirms the route — for example Route created: SourceDevice:01 → DestDevice:01.
Clearing a route
Click a green (routed) cell. The subscription on that RX channel is removed, the cell returns to empty, and a toast confirms the route was cleared.
Collapse and expand
Click a device name (a TX column header or an RX row header) to collapse or expand that device's channels:
- Collapsed TX device: its channel columns are hidden, narrowing the matrix. The arrow icon on the header rotates to indicate the collapsed state.
- Collapsed RX device: its channel rows are hidden, shortening the matrix.
- Auto-behavior on load: when the page (re)loads, devices that have at least one active route are expanded; devices with no active routes are collapsed, so the routes already in use are what you see first.
On networks with many multi-channel devices, collapse the ones you are not patching to keep the matrix readable. Click the header again to expand.
Real-time updates
The matrix reacts to two kinds of events from the driver:
| Event | Behavior |
|---|---|
| Device discovered | A newly found Dante device is added to the matrix as discovery runs. |
| Subscription change | A route created or cleared by another application (for example Dante Controller) is reflected on the matrix. Changes detected over the multicast watch appear within about a second; if multicast is blocked, a polling fallback picks them up within roughly five seconds. |
There is no automatic offline detection in this release. Once a device has been discovered it stays on the matrix until you reload the Dante device (or restart GEM) — powering a Dante endpoint off does not remove it from the grid on its own. If the device list looks stale, reload the Dante device from System → Devices.
Channel and device names
This page routes existing channels; it does not rename them. Channel and device friendly names are managed in Dante Controller, and the matrix shows whatever names the devices advertise. Channel names are case-sensitive on Dante — if a route will not take, confirm the exact channel name in Dante Controller.
Troubleshooting
No devices discovered
- Confirm a
dantedevice exists in System → Devices and is Enabled. - Confirm GEM's Python environment is provisioned — if the bundled
netaudiotool is missing, the Dante device cannot connect and nothing is discovered. Re-run the GEM installer and choose the Python/dependencies step, then reload the Dante device. - Confirm the Dante devices are on the same network as the GEM server, powered on, and initialized.
- Confirm multicast reaches the GEM host: disable IGMP snooping on intermediate switches or place GEM on the same VLAN as the Dante devices. Devices that show in Dante Controller but not in GEM almost always indicate blocked multicast.
- Click Refresh after fixing the path.
Route not taking effect
- Confirm the exact channel name (case-sensitive) against Dante Controller.
- Confirm the TX and RX devices use compatible sample rates and share a clock domain.
- Confirm the channels are not locked by Dante Controller or another application.
- Confirm sufficient network bandwidth for the added flow.
Subscription changes are slow to appear
Changes that take about five seconds to show up mean the multicast watch is blocked and the polling fallback is doing the work. Either accept the few-second latency or fix the multicast path (IGMP snooping / VLAN) for near-instant updates.
Related documentation
- Devices — creating and enabling the
dantedevice record. - AV Zones and AV Sources — GEM's audio-zone model. Dante routing operates at the network/transport level and is independent of GEM AV zones and sources; the Dante device itself does not bind to a zone or source.