Print Friendly and PDF

IpMIDI, Delta Control and Multiple Network Adapters

Introduction

Most computers have multiple network adapters. This can present a problem with IpMIDI and Delta Control because multicast data (DAW control, Delta Control, MIDI Time Code, and MIDI Machine Control) will by default be forwarded to one adapter, defined automatically in the OS routing table. Without any intervention, the route chosen by the OS will be the adapter connected to the internet or your corporate network (the gateway adapter), not the connection to the console.

 

Single Adapter Solution

The simplest solution is to connect every device to an unmanaged switch (or your home router), and enable only one adapter on your computer, guaranteeing traffic has no choice but to be forwarded to the one connected adapter, and is therefore forwarded to all devices.

An unmanaged switch is specified since IGMP Snooping on a managed switch may prevent multicast from being forwarded; SSL analogue consoles such as Duality and AWS do not participate in IGMP, whereas digital consoles such as System T and Live do. 


Multiple Network Adapters Solution

If you require multiple network adapters active on your computer, you will need to edit the routing table in the OS to ensure the multicast destined for ipMIDI and Delta Control are forwarded through the correct adapter. Note the multicast destination addresses below - Delta Control is only applicable to AWS, Duality, Matrix and Sigma:

225.0.0.37 = ipMIDI
225.0.0.38 = Delta Control

To edit the routing table, apply the following commands either in the Terminal in macOS or Command Line (CMD) in Windows.

macOS Routing Table

Persistent Routes

Refered to as 'additional routes' in macOS Terminal. 

sudo networksetup -setadditionalroutes <NetServiceName> <IPAddress> <NetMask> <Router>

NetworkServiceName                                   User-given name for the adapter service (not system name)
IP Address                                                       225.0.0.37 or .38 multicast address in this context
Subnet Mask                                                   32 bit (255.255.255.255) in this context
Router                                                             IP address of next switch hop (or console if direct)

To confirm the Network Service Name, use the networksetup -listallnetworkservices Terminal command. In this example, the required network is 'USBLAN1'. The computer has an IP address 192.168.10.50 and the router that is responsible for multicast routing is 192.168.10.254. 

Example:
sudo networksetup -setadditionalroutes USBLAN1 225.0.0.37 255.255.255.255 192.168.10.254

Subsequently running the networksetup -getadditionalroutes USBLAN1 (using your own network service name) will confirm that this additional, persistent route is now made. If you see multiple entries from previous configurations or attempts, you can remove remove all additional routes for this service/interface using the follow command ready to start again:
sudo networksetup -setadditionalroutes USBLAN1  

 

Temporary Routes - Reset on Login/Restart

These commands can be useful if this is an ad-hoc computer/console network setup, such as a spare network adapter or backup computer. These routing table edits reset on next login, and prevent binding IpMIDI to a destination that later, does not exist: 

sudo route -n add -net 225.0.0.37 -interface <NIC system name>
sudo route -n add -net 225.0.0.38 -interface <NIC system name>

Replace <NIC system name> with the system level ifconfig name of the Ethernet adapter connected to the console. You will be asked to enter your password for authentication.

To list all network adapter system level names, enter ifconfig in Terminal. You can identify the correct adapter by its IP address. The name shown in macOS System Settings>Network is a user label only, not the low-level adapter reference. 

Example:
sudo route -n add -net 225.0.0.37 -interface en0

Additional Useful Network Routing Commands

sudo networksetup -setadditionalroutes <ServiceName>  deletes additional routes
networksetup -getadditionalroutes <ServiceName>           show additional routes
networksetup -listallnetworkservices          lists all network service names
ifconfig                                                           lists all adapter system names and info
netstat -nr                                                       lists all static routes
netstat -rn | grep <IP address>                    lists specific static route
sudo route -n delete <IP address>              deletes existing static route

 

Windows routing table

route add -p 225.0.0.37 mask 255.255.255.0 Windows adapter IP address
route add -p 225.0.0.38 mask 255.255.255.0 Windows adapter IP address

Replace Windows adapter IP address with the IP address of the adapter connected to the console.
If you need to print adapter information in CMD to identify this use the ipconfig command. 

 

Caveats

  • Apple has periodically changed their method for persistent routing table changes. Should this happen in future, this process may need to be revisited.
  • Reinstalling or updating the OS will remove static routes. The configuration process will need to be repeated.
  • Anecdotally some consumer TP-Link brand switches do not pass multicast data correctly.

 

Related content

The Remote app connects but DAW control does not work

Link-local addressing

I can only use Wi-Fi in my setup

Using Wireshark

ipMIDI setup video