Touch over IP - New

From build 392 UPDD V6 supports a fully integrated Touch over IP solution (toip).

This leverages the existing monitor segmentation support and virtual device capabilities to provide a flexible system to remap touches from one computer to other computers.

At the heart of this is the new touch routing capability. A touch on any physical touch device can be routed to a virtual device on another computer.

This routing is based on a monitor or monitor segment and so can be based on the position of touch on the screen.

The UPDD driver in use must support the physical device and also define a generic virtual device.

A number of settings are used to configure touch over IP or have specific uses in a toip configuration.


​When a touch screen is connected to a system it will always be associated with a monitor number as in normal use touches on the touch screen will be associated with a specific monitor. However, in TOIP, these touches will be rerouted, based on this routing setting, so in this case the monitor number is used to identify the touch device.

This is a global (nodevice) setting and is set with the UPDD Command Line Interface. i.e. upddutils nodevice set toip.routing [routing settings]

A list of routes, one per line. A route comprises the following:

<source monitor>;<target computer>;<target device>
<source monitor:segment>;<target computer>;<target device>

To enter a multi line value on the command line use 'upddutils set+ toip.routing [routing setting]' as described here.

Target computer can be the network name or IP address of the target computer 

For example


This will take touches on monitor 1, segment 2 and direct them to the device with handle 2 on computer with the address and touches on monitor 1, segment 1 to the device with handle 1 on computer with the address

Note that if the toip.routing setting is defined then local touches on the routing system are disabled. This behavior can be overridden by using localhost to direct touches to the local computer


Do NOT use the local computer’s name or ip address as there must not be multiple refences to the same computer with different names – and localhost is used internally.

See the complex example below for an example of a toip.routing setting.


This is a setting in the bootstrap file (updd.ini). This file does not exist by default and should be created with a text editor (notepad, vi etc) 

This setting must be entered in the [UPDD] section:


This is a boolean value (0=false 1 = true).

A value of 1 indicates that this computer is acting as a toip client, i.e. it expects to receive touches from another computer or computers. This opens the driver’s TCP/IP port for non-local connections.

Firewall considerations 

Firewall settings will need to be reviewed both to allow the connection from other expected computers and disallow connections from elsewhere.

The touch over IP function uses a TCP/IP connection using port 4146.

This is a listening port in each toip client, meaning that on each computer configured as a toip client incoming TCP/IP connections must be allowed for this port. The computer’s firewall must be configured appropriately to allow this.

For example with Windows defender firewall the following settings could be used :


This is a device type specific setting.

This is a boolean value (0=false 1 = true). This is set automatically when a virtual device is manually added.

On a system that receives touches over IP you will normally create a virtual device to receive these touches.

Once configured a virtual device in a toip configuration works like any other device, e.g. it can be configured / calibrated and it’s behaviour defined by device settings.

In this example, we use the command 'upddutils supported' to identify the id of the virtual device type (4) then adddevice to add an instance of this device:

Because of the nature of virtual devices, the device shows OK (connected) even though there is no physical device attached.


This is a device setting.

It is a decimal number using US / UK local formatting (i.e. decimal point is “.”) 

If set these values override all calibration functions and provide a fixed scaling ratio.

This is useful in situations where a normal calibration is not practical.

The entered value should by 65535 / <the maximum raw co-ordinate reported by the device in question>.

For example if a controller outputs maximum decimal co-ordinates of 4095 then the value entered should be 16.0 (65535/4095 = 16)

To determine the largest value, use the command:

upddutils events 1 

And touch the bottom right corner of the screen.

The values rx and ry (raw x & y) show the max values in hexadecimal. i.e. 7fff = 32767, fff = 4095, 7ff = 2047, ff =1023

Note: this only works for screens with the origin (0,0) at top left.

A complex example

The following is an example of a complex configuration and how to set it up.

The configuration...

The UPDD package has 2 supported controllers; 1 - the real touch device and 2 - the virtual device.

The real touch device is a frame that spans across 9 screens in a 3x3 grid and is physically connected to COMPUTERA

There are 3 systems with the network names of COMPUTERA, COMPUTERB, COMPUTERC

The 3 left most screens are connected to COMPUTERA

The 3 middle screens are connected to COMPUTERB

The 3 right most screens are connected to COMPUTERC

Setup steps...

  1. Install UPDD on all 3 computers

  2. On COMPUTERB and COMPUTERC identify these systems as toip clients 
    Edit UPDD bootstrap file with the contents
    as per this Windows example

  3. On COMPUTERA , COMPUTERB and COMPUTERC find the UPDD device handle id of the virtual device type (002 in this example).
    This will be the same if installing the same package on all 3 systems.

  4. On COMPUTERA , COMPUTERB and COMPUTERC create 3 virtual devices using the id from above (2)


    Set up the source segment map

    Because calibrating such a configuration is not readily supported; set up fixed x / y scaling
    First find the max x / y raw values by touching the screen until you see the highest rx and ry values:

    And apply the calculated scaling value
    0x7fff = 32767

    65535 / 32767 = 2.0

    Set up the routing 
    (note - the real physical touch screen will be device 1 on the toip server, hence the routing is to virtual devices 2,3,4)

  6. On all three systems run configure to associate the individual virtual devices with the appropriate monitor.