Zum Inhalt

Salto Local IO Bridge — Windows 11 ARM (VMware Fusion)

Datum: 04. März 2026
Host: macOS Andreas (192.168.178.72)
VM: Windows 11 ARM64 (VMware Fusion)
Betrifft: SALTO ProAccess Space Local IO Bridge 1.5.0.0


Übersicht

Die Salto Local IO Bridge ermöglicht die Nutzung von USB-Geräten (Encoder, PPD) über den Browser mit Salto ProAccess Space. Da die Bridge nur für Windows verfügbar ist, läuft sie in einer Windows 11 ARM VM auf dem Mac (Apple Silicon).

Architektur

macOS (192.168.178.72)
 └── VMware Fusion
      └── Windows 11 ARM64 (VMware NAT: 172.16.41.128)
           ├── Salto Local IO Bridge Service (Port 50000/50001)
           │    ├── Browser ↔ Bridge: localhost:50000 (HTTP) / 50001 (HTTPS)
           │    ├── Bridge ↔ SaltoServer: 10.128.40.6:8102 (WebSocket)
           │    └── Bridge ↔ USB: SiUSBXp.dll → WinUSB → Encoder/PPD
           └── USB Passthrough: Salto Encoder / PPD via VMware

VM-Konfiguration

Parameter Wert
Hypervisor VMware Fusion 25h2 (kostenlos für Personal Use)
OS Windows 11 Professional ARM64
VM-Pfad ~/Virtual Machines.localized/Windows 11 64-bit Arm.vmwarevm
Netzwerk VMware NAT (172.16.41.x), IP: 172.16.41.128
SSH ak / zaphod42 (OpenSSH Server aktiviert)
VMware Tools Installiert (Display, Netzwerk, Clipboard)

Netzwerk-Routen (persistent)

route -p add 10.128.40.0 mask 255.255.255.0 192.168.178.67
route -p add 10.128.30.0 mask 255.255.255.0 192.168.178.67

Zugriff auf SaltoServer (10.128.40.6) erfolgt über rpp1 (192.168.178.67) als VPN-Gateway.


USB-Treiber (WinUSB + Zadig)

Problem

Die Salto USB-Geräte (Encoder, PPD) verwenden den Silicon Labs CP210x-Chip (VID_10C4, PID_82E9). Die Bridge kommuniziert jedoch nicht über den CP210x COM-Port-Treiber, sondern über die USBXpress-Schnittstelle (SiUSBXp.dll → WinUSB).

Der Original-Treiber von Salto (salxpdrv.inf) hat keine NTARM64-Section und lässt sich auf ARM64 Windows nicht installieren.

Lösung: Zadig + GUID-Korrektur

  1. Zadig (https://zadig.akeo.ie/) installiert WinUSB für das USB-Gerät
  2. DeviceInterfaceGUID muss danach korrigiert werden:
  3. Zadig setzt: {9C8EB541-B51D-45AA-817A-FA151A1A1774} (Standard)
  4. Bridge erwartet: {3C5E1462-5695-4e18-876B-F3F3D08AAF18} (USBXpress)

GUID-Korrektur per Registry

Für jedes Salto USB-Gerät (unterschiedliche Seriennummer) muss die GUID korrigiert werden:

reg add "HKLM\SYSTEM\CurrentControlSet\Enum\USB\VID_10C4&PID_82E9\{SERIENNUMMER}\Device Parameters" /v DeviceInterfaceGUIDs /t REG_MULTI_SZ /d "{3C5E1462-5695-4e18-876B-F3F3D08AAF18}" /f

Danach Gerät neustarten:

pnputil /disable-device "USB\VID_10C4&PID_82E9\{SERIENNUMMER}"
pnputil /enable-device "USB\VID_10C4&PID_82E9\{SERIENNUMMER}"

Der reg add Befehl muss als SYSTEM ausgeführt werden (via Scheduled Task):

$batch = 'reg add "HKLM\SYSTEM\CurrentControlSet\Enum\USB\VID_10C4&PID_82E9\{SERIAL}\Device Parameters" /v DeviceInterfaceGUIDs /t REG_MULTI_SZ /d "{3C5E1462-5695-4e18-876B-F3F3D08AAF18}" /f'
Set-Content C:\Users\andre\fix_guid.bat -Value $batch
schtasks /create /tn "FixGUID" /tr C:\Users\andre\fix_guid.bat /sc once /st 00:00 /ru SYSTEM /f
schtasks /run /tn "FixGUID"
Start-Sleep 3
schtasks /delete /tn "FixGUID" /f

Registrierte Geräte

Gerät Seriennummer device_type
Encoder 040000036043 0
PPD NFC 020000092805 1

Beide haben die korrigierte GUID und funktionieren persistent nach Neustart.


Salto Local IO Bridge

Service

Parameter Wert
Dienstname SaltoLocalIOBridge
Pfad C:\SALTO\Local IO Bridge\SaltoLocalIOBridge.exe
Ports HTTP 50000, HTTPS 50001
Framework .NET Framework 4.8
Starttyp Automatisch
Config C:\SALTO\Local IO Bridge\SaltoLocalIOBridge.exe.config

API-Endpunkte

Endpunkt Beschreibung
GET /info Version, Timezone, Bluetooth-Status
GET /ports Liste der erkannten USB-Geräte

Prüfung

# Service-Status
Get-Service SaltoLocalIOBridge

# Erkannte Geräte
(Invoke-WebRequest -Uri http://localhost:50000/ports -UseBasicParsing).Content

# Device-Status
Get-PnpDevice -InstanceId "USB*10C4*82E9*" | Format-Table FriendlyName,Status,Class

Neues USB-Gerät einrichten

Wenn ein neues Salto USB-Gerät (andere Seriennummer) angeschlossen wird:

  1. VMware reicht das Gerät automatisch an die VM durch
  2. Zadig öffnen → Options → List All Devices → Gerät auswählen → Install WinUSB
  3. GUID korrigieren (siehe oben) mit der neuen Seriennummer
  4. Device neustarten (disable/enable)
  5. Bridge neustarten: Restart-Service SaltoLocalIOBridge
  6. Prüfen: GET http://localhost:50000/ports

Wichtige Hinweise

  • bcdedit testsigning ist aktiviert → unsignierte Treiber werden geladen
  • nointegritychecks ist aktiviert → Integritätsprüfung deaktiviert
  • Die VM muss nicht mit Boot-Option 7 gestartet werden (nur für erstmalige Zadig-Installation nötig)
  • Log-Level der Bridge: INFO (Config: SaltoLocalIOBridge.exe.config, <level value="INFO" />)
  • Für Debugging: Level auf DEBUG setzen und Service neustarten

Erstellt: 04.03.2026