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
- Zadig (https://zadig.akeo.ie/) installiert WinUSB für das USB-Gerät
- DeviceInterfaceGUID muss danach korrigiert werden:
- Zadig setzt:
{9C8EB541-B51D-45AA-817A-FA151A1A1774}(Standard) - 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:
- VMware reicht das Gerät automatisch an die VM durch
- Zadig öffnen → Options → List All Devices → Gerät auswählen → Install WinUSB
- GUID korrigieren (siehe oben) mit der neuen Seriennummer
- Device neustarten (disable/enable)
- Bridge neustarten:
Restart-Service SaltoLocalIOBridge - 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