Hardware

Epson-USB-TSE im Windows-Netzwerk

Stand: 07.09.2026 17:45 Lesezeit: 14 min

Schritt für Schritt: lokalen Epson-Listener prüfen, TCP 8009 ausschließlich für den Kassenclient weiterleiten, TSE-Lesezugriff testen und Änderungen kontrolliert zurückbauen.

Kurzüberblick: Diese Anleitung zeigt einen kontrollierten Windows-Workaround, mit dem ein Kassenclient eine an einem TSE-Server angeschlossene Epson-USB-TSE über ePOS-Device XML erreicht. Voraussetzung ist ein lokal funktionierender Epson-TSE-Treiber mit einem ausschließlich an 127.0.0.1:8009 gebundenen ePOSDevice-Prozess.

Verbindungsschema vom Kassenclient über einen Windows-TSE-Server zur Epson-USB-TSE
Verbindungsschema mit austauschbaren Beispielwerten. Der Bondrucker ist nicht Teil dieses Verbindungswegs.

Ziel und Geltungsbereich

Eine Windows-TCP-Weiterleitung verbindet die LAN-Adresse des TSE-Servers mit dem lokalen Epson-Listener. Die Windows-Firewall erlaubt TCP 8009 ausschließlich für den festgelegten Kassenclient. Der StorageHandler-Port 23500 bleibt unverändert und wird nicht zusätzlich im Netzwerk freigegeben.

Wichtige Abgrenzung: Der Ablauf wurde in einem konkreten Ausgangsfall erfolgreich getestet. Er ist keine bestätigte Epson-Freigabe für beliebige Treiberversionen oder einen vollständigen Mehrkassenbetrieb. Ein erfolgreicher Status-Lesezugriff ersetzt nicht die betriebliche Abnahme mit einem regulären Kassenbeleg.

Alle Servernamen, DNS-Namen und LAN-Adressen auf dieser Seite sind Beispiele. Sie müssen vor der Verwendung durch Werte der eigenen Umgebung ersetzt werden. Der Beispielname tse-server.example.test funktioniert ohne eigene DNS-Konfiguration nicht.

1. Eigene Werte festlegen

SERVER bezeichnet den Windows-PC mit USB-TSE, CLIENT die zugreifende Kasse.

EinstellungBeispiel / Bedeutung
TSE-Server / ComputernameTSE-SERVER
DNS-Name für die Kassetse-server.example.test
Stabile Server-IPv4192.168.10.10
Stabile Client-IPv4192.168.10.20
ePOS-Device XMLTCP 8009
Lokales Weiterleitungsziel127.0.0.1:8009
TSE-Gerätekennunglocal_TSE
StorageHandler23500; keine zusätzliche LAN-Freigabe

Server- und Client-IP per DHCP-Reservierung oder vorhandener statischer Konfiguration stabil halten. Ein DNS-Name ersetzt dies nicht: Die Portweiterleitung bindet eine IP, die Firewallregel erlaubt eine Quell-IP. Epson-TSE-Treiber installieren, USB-TSE am Server einstecken und zuerst den lokalen Zugriff mit der Epson-Software prüfen.

Werteblock für die folgenden PowerShell-Schritte

# BEISPIELE: vor der Ausfuehrung an die Umgebung anpassen.
$tseServerName = 'TSE-SERVER'
$tseServerDns  = 'tse-server.example.test'
$tseServerIp   = '192.168.10.10'
$tseClientIp   = '192.168.10.20'
$tseRuleName   = 'Epson-TSE-TCP8009-' + $tseClientIp

Den angepassten Werteblock in jeder neuen PowerShell-Sitzung zuerst ausführen. Auf dem Server muss PowerShell für Einrichtung und Rückbau als Administrator geöffnet werden.

2. Lokalen Epson-Listener prüfen

Die folgenden Befehle lesen ausschließlich den vorhandenen Zustand:

hostname
Get-NetTCPConnection -State Listen -LocalPort 8009 |
    Format-Table LocalAddress,LocalPort,OwningProcess
Get-Service iphlpsvc | Select-Object Name,Status,StartType
netsh interface portproxy show all
Beispielausgabe eines nur lokal gebundenen Epson-ePOSDevice-Listeners auf Port 8009
Beispiel für einen lokal gebundenen Listener. Die Prozess-ID ist kein fester Konfigurationswert.
BefundNächster Schritt
Nur 127.0.0.1:8009Prozess prüfen; diese Anleitung ist für diesen Zustand vorgesehen.
Kein Listener auf 8009Epson-Treiber und Startzustand zuerst prüfen.
LAN-IP:8009 oder 0.0.0.0:8009Besitzer und vorhandene Konfiguration prüfen.
Portweiterleitung bereits vorhandenZiel kontrollieren; eine abweichende Regel nicht überschreiben.
Get-NetTCPConnection -State Listen -LocalPort 8009 |
    Where-Object { $_.LocalAddress -eq '127.0.0.1' } |
    ForEach-Object { Get-Process -Id $_.OwningProcess }

Erwarteter Prozessname: ePOSDevice. Seine Prozess-ID ändert sich. Die Epson-Datei C:\ProgramData\EPSON\TSE\TSEDrvConf wird für die Netzwerkweiterleitung nicht verändert.

3. Weiterleitung und Firewall einrichten

Nur nach bestätigtem lokalen Epson-Listener fortfahren. Bestehende Regeln müssen vor einer Änderung auf Zweck, Ziel und Reichweite geprüft werden.

3.1 Bestehende Regeln kontrollieren

netsh interface portproxy show all
Get-NetFirewallRule -Name $tseRuleName `
    -ErrorAction SilentlyContinue
Get-NetFirewallRule `
    -DisplayName ("Epson TSE - Kasse " + $tseClientIp) `
    -ErrorAction SilentlyContinue

Passende Regeln weiterverwenden. Das bereitgestellte Skript 02-einrichten.ps1 bricht bei erkannten Konflikten ab und unterstützt -WhatIf.

3.2 Lokalen Epson-Port über die Server-IP erreichbar machen

Start-Service iphlpsvc
netsh interface portproxy add v4tov4 `
    "listenaddress=$tseServerIp" listenport=8009 `
    connectaddress=127.0.0.1 connectport=8009 protocol=tcp

3.3 TCP 8009 für genau einen Kassenclient freigeben

New-NetFirewallRule -Name $tseRuleName `
    -DisplayName ("Epson TSE - Kasse " + $tseClientIp) `
    -Direction Inbound -Action Allow -Protocol TCP `
    -LocalPort 8009 -RemoteAddress $tseClientIp -Profile Any
netsh interface portproxy show all

Erwartetes Ziel: Server-LAN-IP:8009 führt auf 127.0.0.1:8009. Keine Routerfreigabe ins Internet anlegen. Der Dienst iphlpsvc wird gestartet; sein Starttyp wird nicht geändert. Den automatischen Wiederanlauf gemeinsam mit dem Epson-Treiber nach einem geplanten Neustart prüfen.

4. Netzwerk und TSE vom Kassenclient testen

Test-NetConnection -ComputerName $tseServerDns -Port 8009
Beispielausgabe eines erfolgreichen TCP-Tests vom Kassenclient zum TSE-Server
Erwartete Beispielausgabe des TCP-Tests. Die dargestellten Beispieladressen sind keine Live-Messung.

4.1 Epson-Demo im BIN-Ordner starten

EpsonTseDemo 2.4.1 entpacken. Im Explorer den Ordner mit EpsonTseDemo.exe öffnen, in der Adresszeile powershell eingeben und Enter drücken. Danach den eigenen Werteblock laden und den Lesetest starten:

.\EpsonTseDemo.exe -m2 "-i$tseServerIp" `
    -tlocal_TSE -w5 -y1 -z1

-m2 wählt ePOS-Device XML; -tlocal_TSE umgeht die automatische Geräteliste. Im Menü 1 (Get TSE Info) wählen, bei raw JSON bei Bedarf n, anschließend mit 99 beenden. Für diesen Lesetest keine Einrichtung, Rücksetzung oder Transaktion auslösen.

4.2 Ergebnis und Kasseneinstellungen prüfen

Erwartet werden open_device = OK, GetStorageInfo = EXECUTION_OK und close_device = OK. In der Kassensoftware die passende Epson-/ePOS-Device-XML-Schnittstelle, den eigenen Server-DNS-Namen, Port 8009 und local_TSE eintragen. Die Feldnamen hängen von der Kassensoftware ab.

TCP True allein bestätigt keine funktionsfähige TSE. Bestehende TSE-Zuordnung und Client-Registrierung beibehalten; keine bereits eingerichtete TSE erneut initialisieren. Den regulären Kassenablauf separat testen.

5. Fehler gezielt eingrenzen

SymptomPrüfung / Maßnahme
DNS/Ping OK, TCP FalseListener, Portweiterleitung und tatsächliche Client-Quell-IP mit der Firewallregel vergleichen.
Nur lokaler Listener vorhandenDie LAN-Weiterleitung muss auf die aktuelle Server-IP zeigen.
TCP True, TSE-Abfrage scheitertTSE lokal mit Epson-Software prüfen; direkt local_TSE verwenden; Fehlertext sichern.
Demo findet ihre EXE nichtIm BIN-Ordner .\EpsonTseDemo.exe verwenden.
Geräteliste leer / Timeout 10060In Demo 2.4.1 die direkte Kennung -tlocal_TSE verwenden. Die Listenabfrage nutzt HTTP-Port 80.
Nach Neustart keine VerbindungEpson-Prozess, iphlpsvc, IP-Adressen und Listener erneut prüfen.

Firewallregel gezielt kontrollieren

Get-NetFirewallRule `
    -DisplayName ("Epson TSE - Kasse " + $tseClientIp) |
    Get-NetFirewallAddressFilter
Get-NetFirewallRule `
    -DisplayName ("Epson TSE - Kasse " + $tseClientIp) |
    Get-NetFirewallPortFilter

Für einen DNS-Test das gesamte DNS-Argument in Anführungszeichen setzen. Der IPv4-Aufruf ist der dokumentierte Diagnoseweg; der korrigierte DNS-Demo-Aufruf wurde im Ausgangsfall nicht erneut getestet.

.\EpsonTseDemo.exe -m2 "-i$tseServerDns" `
    -tlocal_TSE -w5 -y1 -z1

Für die direkte TSE-Kennung ist keine zusätzliche Port-80-Freigabe erforderlich. Die Firewall zur Fehlersuche nicht pauschal deaktivieren.

6. Betrieb prüfen und Änderungen gezielt entfernen

ZeitpunktHandlung
Vor ArbeitsbeginnTSE-Server und Epson-Software starten lassen; Verbindung in der Kasse prüfen.
Nach WartungsneustartTCP-Test vom Client und TSE-Lesetest erneut ausführen.
Vor AbschaltungZugreifende Kassen ihre Vorgänge beenden lassen.
Weitere KasseGezielte Client-Freigabe und passende TSE-Registrierung in der Kassensoftware vorsehen.
Neue IP-AdresseServer-Portweiterleitung bzw. Client-Firewallregel kontrolliert anpassen.

Vor der Freigabe für den laufenden Betrieb automatischen Start, Energiesparverhalten, stabilen DNS-/IP-Bezug und einen regulären Kassenbeleg prüfen. Parallele Zugriffe sind mit der eingesetzten Kassensoftware gesondert zu testen.

Gezielter Rückbau auf dem Server

Nur wenn keine Kasse die Netzwerk-TSE mehr benötigt: eigene Werte laden, die konkrete Weiterleitung sowie den tatsächlichen internen Firewall-Regelnamen prüfen. Niemals sämtliche Firewall- oder Portproxy-Regeln global löschen.

netsh interface portproxy show all
Get-NetFirewallRule -Name $tseRuleName

# Nur die zuvor gepruefte, eigene Konfiguration entfernen:
netsh interface portproxy delete v4tov4 `
    "listenaddress=$tseServerIp" listenport=8009
Remove-NetFirewallRule -Name $tseRuleName
netsh interface portproxy show all

Epson-Treiber, USB-TSE und TSEDrvConf bleiben bestehen. iphlpsvc nicht pauschal deaktivieren; andere Windows-Funktionen können ihn verwenden.

7. Geprüfte PowerShell-Hilfen

Alle Skripte verlangen die relevanten Umgebungswerte ausdrücklich. Einrichtung und Rückbau sollten zuerst mit -WhatIf geprüft werden. Die Skripte verändern keine PowerShell-Ausführungsrichtlinie; Epson-Software ist nicht enthalten.

DateiZweckDownload
01-pruefen.ps1Lesende Diagnose auf Server oder ClientHerunterladen
02-einrichten.ps1Einrichtung mit Vorprüfungen und -WhatIfHerunterladen
03-tse-test.ps1Start der lokalen Epson-Demo mit direkter TSE-KennungHerunterladen
04-rueckbau.ps1Gezielter Rückbau mit Vorprüfungen und -WhatIfHerunterladen
.\01-Pruefen.ps1 -Role Client -ServerDns $tseServerDns
.\01-Pruefen.ps1 -Role Server -ClientIPv4 $tseClientIp

$tseArgs = @{
    ExpectedComputerName = $tseServerName
    ServerIPv4 = $tseServerIp
    ClientIPv4 = $tseClientIp
}
.\02-Einrichten.ps1 @tseArgs -WhatIf
.\04-Rueckbau.ps1 @tseArgs `
    -FirewallRuleName $tseRuleName -WhatIf

Quellen und technischer Stand

Stand: 07.09.2026, Version 2.0. Diese technische Anleitung ersetzt keine Herstellerfreigabe, steuerliche Beratung oder betriebliche Abnahme. Änderungen an Netzwerk und Firewall dürfen nur durch berechtigte Administratoren und nach Prüfung der eigenen Umgebung erfolgen.