MacOS

The driver is configured in MacOS as follows.

A codeless kernel extension (tbupddmxhid.kext) / system extension (UPDD System Extension.app) is used to specify the hardware to be supported. 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 the 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/updd.app/Contents/MacOS/updd -e

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

Interface

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.

Gestures or Commander

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.

Processes

In normal circumstances once installation has completed there will be a number of processes enabled and 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 utility, named upddprocesses, which can be used to start and stop the various processes.

upddprocesses must be run under root (precede the command with sudo - password will be required) if you want to stop the driver.

It can be used from the command line, a script, or process by executing it thusly: [sudo] upddprocesses start [sudo] upddprocesses stop sudo (gives superuser privilegdes) will be needed to stop / start the driver

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>

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 - superuser priviledges needed to stop/start the driver

-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.

Automatically start / stopping the driver

With some devices touch is lost after return from deep sleep. In our investigations we could see there was an outstanding read on the device, but no data was being sent.

Stopping and starting the driver at this point (which in turn would perform driver startup USB communications) kickstarted the device and touch function resumed.

To automate the restart of the driver we added a setting 'power.stop_after_wake'. This can be set in UPDD Console, Advanced, Settings or with the command 'upddutils set power.stop_after_wake 1'

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

Last updated