Skip to content

SAND --- Stand Alone Netbridge Driver

SAND converts touch input from MultiTaction Cell video walls into native Windows touch events. Any Windows application that accepts touch input will work with your video wall without modification.

SAND runs as a single executable with no installation required. It sits in the system tray and processes touch silently in the background.

Download

System Requirements

  • Windows 11 x64
  • Network access to one or more NetBridge sources
  • No elevated privileges required

Getting Started

First Run

  1. Download SAND_v1.1.0.exe from the link above
  2. Place it in any folder --- desktop, USB drive, network share
  3. Double-click to run

SAND starts in the system tray (bottom-right of the taskbar, near the clock). Look for the SAND icon.

Automatic Configuration

On first launch, SAND searches for a system config.txt in the standard MultiTaction configuration path (%APPDATA%\MultiTouch\config.txt). If found, it imports NetBridge source addresses automatically.

If no system config exists, SAND creates a local config.json alongside the executable. You can configure sources manually through the settings dialog.

Connecting to a NetBridge Source

  1. Right-click the tray icon and select Settings...
  2. On the Connection tab, enter the IP address and port of your NetBridge source (default port: 5502)
  3. Click Save

SAND connects immediately. The tray icon changes to indicate connection status:

  • Grey --- Disconnected or inactive
  • Green --- Connected and receiving touch data
  • Yellow --- Connecting or reconnecting
  • Red --- Error state

System Tray Menu

Right-click the SAND tray icon to access:


Menu Item Action


SAND v1.1.0 Version label (greyed out)

Settings... Open the settings dialog

Calibration... Start the touch calibration process

Load Config... Load a configuration file

Save Config As... Export current configuration to a file

Track Log Open the log file

Touch Test Page... Open a browser-based touch visualization tool

Exit Close SAND


Double-click the tray icon to open Settings directly.

Settings Dialog

The settings dialog has five tabs.

Connection Tab

Configure the primary NetBridge source:

  • Name --- A label for identification (e.g., \"Wall Panel 1\")
  • Host --- IP address of the NetBridge server
  • Port --- TCP port (default: 5502)
  • Enabled --- Toggle this source on or off
  • Timeout --- Connection timeout in milliseconds
  • Retry Attempts / Delay --- Reconnection behavior on failure

The settings dialog configures a single source. For multi-source setups (video walls with multiple NetBridge panels), configure additional sources by editing config.json directly or using a system config.txt. See sand-multi-source below.

Touch Tab

Configure the touch input window dimensions:

  • Touch Window Width/Height --- The resolution of the NetBridge touch surface (typically 1920x1080)

These values define the coordinate space of the incoming touch data.

Transform Tab

Adjust how touch coordinates map to the screen:

  • Invert X --- Mirror touch coordinates horizontally
  • Invert Y --- Mirror touch coordinates vertically
  • Swap X/Y --- Exchange the X and Y axes
  • Portrait Mode --- Rotate coordinate mapping for portrait-oriented displays

These settings are useful when the physical orientation of the touch surface doesn\'t match the Windows display orientation. For most setups, the calibration process sets these automatically.

Eraser Tab

Configure marker-based eraser support. When a physical fiducial marker with a matching code is placed on the touch surface, SAND injects it as a Windows pen eraser event.

  • Enable eraser injection --- Turn eraser support on or off
  • Marker codes --- Which marker codes act as erasers (e.g., \"612-614\")
  • Default pressure --- Pressure value when not using size-based pressure
  • Size as pressure --- Use the physical marker size to control eraser pressure
  • Size min/max --- Marker size range for pressure mapping

Volume Tab

Configure marker-based rotary volume control. A physical fiducial marker acts as a rotary dial --- rotate it to change system volume. This can be used anywhere on any of the touch sources.

  • Enable volume control --- Turn the feature on or off
  • Marker code --- Which marker code acts as the volume dial
  • Degrees per percent --- Sensitivity (degrees of rotation per 1% volume change)
  • Invert rotation --- Swap clockwise/anticlockwise direction

All settings take effect immediately when you click Save. No restart required.

Calibration

Calibration maps the physical touch positions on your wall to the correct screen coordinates. Run calibration when:

  • Touch positions are offset from where you\'re actually touching

It is very unlikely that you will need to run this unless you are using a rear projection system as the source.

Running Calibration

  1. Right-click the tray icon and select Calibration...
  2. A full-screen window appears with a target marker
  3. Touch the center of each target 3 times --- the target turns green when registered
  4. After all 9 points, SAND calculates the coordinate mapping
  5. A validation phase lets you verify accuracy before applying
  6. Results are saved automatically to the configuration

Calibration Tips

  • Touch precisely at the center of each target circle
  • Use a single finger or pen --- avoid multi-touch during calibration
  • If validation shows inaccurate results, re-run calibration
  • For multi-source setups, calibrate each source independently

Multi-Source / Multi-Monitor

SAND supports video wall configurations with multiple NetBridge sources mapped to multiple monitors.

Setup

Multi-source is configured by editing config.json directly or via a system config.txt --- the settings dialog only supports a single source.

Add multiple entries to the netBridgeSources array in config.json:

{
  "netBridgeSources": [
    { "host": "10.77.84.100", "port": 5502, "enabled": true, "name": "Panel 1" },
    { "host": "10.77.84.101", "port": 5502, "enabled": true, "name": "Panel 2" },
    { "host": "10.77.84.102", "port": 5502, "enabled": true, "name": "Panel 3" }
  ]
}

Each source is assigned a source index (0, 1, 2, ...) in the order listed. Per-source coordinate transforms (translate, rotate, scale) can also be configured in config.json for precise positioning across the virtual desktop.

When per-source transforms are configured, SAND maps each source\'s touch coordinates into the Windows virtual desktop coordinate space. This allows a multi-panel video wall to inject touch across all monitors seamlessly.

Frame Synchronization

When multiple sources are active, SAND synchronizes touch frames across sources within a 16ms window. This ensures that simultaneous touches on different panels are injected as a single coherent frame to Windows.

Touch Test Page

The built-in touch test page helps verify that touch injection is working correctly.

  1. Right-click the tray icon and select Touch Test Page...
  2. A browser window opens showing a canvas
  3. Touch the surface --- you should see colored trails:
    • Green --- Finger touch
    • Blue --- Pen input
    • Red --- Eraser input
    • Blue (lighter) --- Mouse (for comparison)
  4. The side panel shows active pointer details including pressure, tilt, and button states

Click the Span All Monitors button to open a test page window on each connected display at its native resolution. This requires Chrome or Edge 100+ with the Window Management permission granted.

Press C or Delete to clear the canvas.

Command-Line Options

SAND accepts the following command-line flags:


Flag Effect


--verbose Enable detailed debug logging

--console Print touch coordinates to console (no injection)

--testnb Test NetBridge connectivity and display protocol info

--log <file> Write logs to a specific file

--invert-x Override: invert X axis

--invert-y Override: invert Y axis


Example:

SAND_v1.1.0.exe --verbose --log debug.log

Configuration Files

config.json

SAND stores its configuration in config.json (or touchconfig.json) alongside the executable. The file is JSON-formatted and can be edited by hand.

{
  "netBridgeSources": [
    {
      "host": "10.77.84.100",
      "port": 5502,
      "enabled": true,
      "name": "NetBridge 1"
    }
  ],
  "touchSettings": {
    "touchWindowWidth": 1920,
    "touchWindowHeight": 1080,
    "invertX": false,
    "invertY": false,
    "swapXY": false,
    "portraitMode": false
  }
}

config.txt (System Config)

If a MultiTaction system config.txt exists at %APPDATA%\MultiTouch\config.txt, SAND reads NetBridge source addresses from it on startup. This allows SAND to integrate with existing MT installations without manual configuration.

Load and Save

Use the tray menu items Load Config... and Save Config As... to import and export configuration files. This is useful for:

  • Backing up a working configuration
  • Copying configuration between machines
  • Sharing setup with a colleague

Logging

SAND writes logs to sand.log in the same directory as the executable. The log includes:

  • Connection status and handshake details
  • Touch injection events (at DEBUG level)
  • Errors and warnings
  • Performance metrics (CPU, memory, latency)

Use Track Log from the tray menu to open the log file.

For detailed logging, launch with --verbose or set the log level to DEBUG in the configuration.

Troubleshooting

Touch not working

  1. Check the tray icon color --- is SAND connected? (green = connected)
  2. Verify the NetBridge source IP and port in Settings
  3. Use --testnb to test raw connectivity
  4. Use --console to see if touch data is arriving

Touch position is wrong

  1. Run Calibration from the tray menu
  2. Check Transform settings (Invert X/Y, Swap XY)
  3. Verify Touch Window dimensions match your NetBridge source resolution

Intermittent touch / broken lines

  1. Check network stability between SAND and the NetBridge source
  2. Verify only one instance of SAND is running
  3. Check the log for injection errors (error 1460 = timeout)

Touch works but pen/eraser doesn\'t

  1. Pen input requires NetBridge protocol version 3 (check log for \"server version\")
  2. Eraser requires matching marker codes configured in the Eraser tab
  3. Open the Touch Test Page and check the pointer panel for buttons: values

SAND won\'t start

  1. Check if another instance is already running (SAND prevents duplicate instances)
  2. Check the Windows event log for errors
  3. Try launching from a command prompt to see console output

Technical Details

  • Touch injection: Uses the Windows InjectTouchInput API for finger input and InjectSyntheticPointerInput for pen and eraser input
  • Protocol: NetBridge TCP protocol with handshake negotiation (supports protocol versions 1-3)
  • Max contacts: 256 simultaneous touch points
  • Pen support: Pens are injected as PT_PEN pointer type with pressure and tilt
  • Eraser support: Erasers are injected as PT_PEN with PEN_FLAG_INVERTED | PEN_FLAG_ERASER
  • Single instance: SAND uses a Windows named mutex to prevent duplicate instances