The driver is configured in MacOS as follows.

A codeless .kext file (tbupddmxhid.kext) is used to specify the hardware. This file contains the list of USB vendor and product ids supported by the driver. Its purpose to register the driver for the supported USB device (s) so that UPDD can take control. This also prevents HID taking control of HID devices to be supported by UPDD.

The main three permanently active UPDD components are the Driver, Daemon and Commander. The driver is invoked via a Launch Daemon and UPDD Commander and Daemon are invoked via Launch Agents such that, should they fail, they will automatically be launched.

Launch agents and launch daemons are managed by "launchd" which is macOS's system for running processes automatically, especially background processes.

If required he components can be invoked from the terminal window, especially to see if there are any errors being issued that are preventing them running, such as this command to launch the driver:

sudo /Library/Application\ Support/UPDD/ -e

The driver uses TCP/IP port 4146 to communicate between components using the API.


The driver uses a number of interfaces to post co-ordinate data into the system:

Interface Type  Description
Simpletouch Single touch mouse interface Default interface that offers a basic touch interface as implemented by the driver itself. In a Mac OS X environment the older IOHID interface is used to post ‘mouse’ messages into the system. Uses an old API that may be deprecated in future releases of MacOS.
Simpletouch_cg Single touch mouse interface Alternative interface that offers a basic touch interface as implemented by the driver itself. In a Mac OS X environment the newer core graphics interface is used to post ‘mouse’ messages into the system.
Multi-touch gesture interface Interfaces with the gesture capability of the Mac OS system and gesture aware applications. This is particularly useful for dual and multi-touch touch devices as it allows common gestures to be performed via the touch screen.

When Gestures/Commander is loaded its interface into the system will take precedence over the simple touch interface.  If gestures/commander is quit the simple touch interface becomes active.


In normal circumstances once installation has completed there will be a number of processes running. The actual number will be dependent on the installed components held in the installer. The core driver utilises two processes updd (the user mode driver service) and updd daemon (the background task). If Commander is installed this application will also be running.  Gestures or TUIO may be seen if running older versions of the software.

Some transitional applications, like the UPDD Test, Calibration and Identify will be listed in the Activity Monitor when they are running. However, some core UPDD applications will be permanently listed once they are running: 


Process Purpose 
UPDD The driver and the API interface.
UPDD Daemon The driver's daemon task offering a number functions relating to the driver and user interface.
UPDD Commander Offers full MacOS gesture support at an individual application level and enhanced gesture API interface. Includes TUIO interface.
UPDD TUIO Obsolete - The UPDD TUIO server that reads co-ordinated data from the driver and broadcasts it to and waiting TUIO client application.
UPDD Gestures 
Obsolete - Offers full MacOS gesture support and gesture API interface.

Stopping and starting UPDD processes

In some cases an end user may wish to start / stop UPDD related processes such that they are only running when required. To allow for this we have created a python script, named upddprocesses, which can be used to start and stop the various processes.

The script must be run under root (precede the command with sudo - password will be required). It can be used from the command line, a script, or process by executing it thusly:
[sudo] upddprocesses start
[sudo] upddprocesses stop

It can also be used as a python module in another python script. Copy into your own module or the python site-packages directory, and then use it like this:
import upddprocesses
Both functions take the following keyword arguments, whose values must be booleans: stopOnErrors, driver, daemon, gestures, tuio

Command line arguments can be passed for ignoring errors and being able to specify specific UPDD processes as described below:
Usage: upddprocesses start|stop <options>

-h or --help Show this help message and exit
-I or --ignore-errors Attempt to start or stop all specified processes; do not stop on errors
Processes: All processes are affected by default. If one or more of these options are used, only the selected processes will be affected.
-d or --driver Start/stop UPDD
-c or --commander Start/stop UPDD Commander
-a or --daemon Start/stop UPDD Daemon
-g or --gestures Start/stop UPDD Gestures
-t or --tuio Start/stop UPDD TUIO
 --all-users Starting with MacOS 10.10, it is possible to start UPDD Daemon, Gestures, and TUIO for user accounts that are already logged in. For this reason you can specify --all-users command line argument when starting processes. If it's used in macOS 10.9 or earlier it is ignored and processes are only started for the current user.

Quitting UPDD processes

UPDD Daemon, Commander, Gestures and TUIO run as launch agent processes in that should they fail they will automatically be restarted. The launch agent mechanism is also used to start the processes at system startup.

Should you want to quit one of these processes such that it does not run at startup you need to move or delete or rename the appropriate file from the launch agent folder:

 UPDD   /Library/LaunchDaemons/com.touch-base.updd.plist
 Daemon   /Library/LaunchAgents/com.touch-base.updddaemon.plist
 Commander   /Library/LaunchAgents/com.touch-base.upddcommander.plist
 Gestures   /Library/LaunchAgents/com.touch-base.upddgestures.plist
 TUIO   /Library/LaunchAgents/com.touch-base.upddtuio.plist