How-to: IntelliDrive Controller™ and IPD™ in different networks

This is not an official how-to by Lab.gruppen. IntelliDrive Controller and IPD are trademarks of Lab.gruppen AB.

Abstract
If you operate your IntelliDrive Controller and IPD in different networks, they won’t connect ‘out-of-the-box’. We will see why and how to bypass this.

Connection Mechanism
The connection mechanism of the IntelliDrive Controller and the IPD is as follows:

  1. IPD sends UDP broadcasts to 255.255.255.255:50674
  2. IntelliDrive Controller establishes a TCP connection to the IPD on port 50675 after reception of one of the broadcast packets
  3. The TCP connection remains established until the IntelliDrive Controller is shut-down/restarted.

Since broadcast packets are not routed, the mechanism above only works when both devices are connected to the same network. However, this is not always the case. In my setup e.g. the LAN and WLAN are separated and connected through a gateway router (i.e. IPD on LAN and iPad on WLAN).

Workaround
The following steps have to be done to get it running:

  1.  Create a script/program that listens on port 50674 for incoming UDP packets on the network where your IPDs are and forwards these packets as unicasts to your IntelliDrive Controller device (unicasts will be routed through the gateway)
  2. Make sure your gateway will forward and not block UDP traffic on port 50674 to the destination network (where your IntelliDrive device is)
  3. Change the source IP of the UDP packet to the IP of your IPD (SNAT), because the IP of the IPD is not part of the payload of the packet, but the IntelliDrive Controller will connect to the source IP address of  the UDP packet
  4. Make sure your gateway will forward and not block TCP traffic on port 50675 to the network where your IPDs are located

Note
I am already in contact with Lab.gruppen support about this issue. I hope they will add a feature to the IntelliDrive Controller to enable the operator to manually add devices without the need of an initial reception of a broadcast packet sent by the IPD. And maybe it will also be possible to stop the IPD from sending broadcasts all the time (I don’t like that).

Questions, comments? Drop your feedback!