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/updd.app/Contents/MacOS/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:
||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.
||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:
||The driver and the API interface.
||The driver's daemon task offering a number functions relating to the driver and user interface.
||Offers full MacOS gesture support at an individual application level and enhanced gesture API interface. Includes TUIO interface.
||Obsolete - The UPDD TUIO server that reads co-ordinated data from the driver and broadcasts it to and waiting TUIO client application.
|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 upddprocesses.py into your own module or the python site-packages directory, and then use it like this:
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
||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
|-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
||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: