EmiliaCloudPrinter Configuration Guide¶
Cloud POS Order Capture¶
This technical guide explains how to configure virtual printers on Windows that send print data directly to Emilia Vision's CloudPOS service.
Target audience: System administrators, support technicians, and POS vendors.
Overview¶
EmiliaCloudPrinter captures orders that your POS system sends to thermal printers (kitchen, bar, desserts, cashier) and stores them in the cloud for analysis.
Three configuration methods are available:
| Method | Driver | Interface | Time |
|---|---|---|---|
| Method A: PowerShell (Recommended) | EPSON TM-T20II | CLI | 5 min* |
| Method B: Graphical Interface | EPSON TM-T20II | GUI | 15 min* |
| Method C: Port Proxy (LAN) | N/A | CLI | 5 min |
*Requires Epson APD driver pre-installed (see Prerequisites)
Prerequisites¶
- Windows 10 or Windows 11
- Administrator permissions
- Internet connectivity
- Epson APD driver installed (see below)
Connection data:
| Parameter | Value |
|---|---|
| Server | printer.emiliavision.com |
| Port | 9100 |
| Protocol | RAW |
| Driver | EPSON TM-T20II Receipt5 |
Install Epson APD Driver (Required)¶
Before configuring the printer, download and install the Epson APD driver:
| Region | URL |
|---|---|
| USA | epson.com/Support/.../TM-T20II |
| Colombia | epson.com.co/Soporte/.../TM-T20II |
| Brazil | epson.com.br/Suporte/.../TM-T20II |
Download: Advanced Printer Driver (APD) v5.13 (~70 MB)
Extract the ZIP and run APD_513_T20II.exe as Administrator.
Verify driver installation:
Verify connectivity (PowerShell):
Should display TcpTestSucceeded : True
Method A: PowerShell Configuration (Recommended)¶
This method is faster and allows creating multiple printers in seconds.
Step 1: Open PowerShell as Administrator¶
- Press
Win + X - Select "Windows PowerShell (Admin)" or "Terminal (Admin)"
- Accept the UAC prompt if it appears
Step 2: Create Basic Printer¶
Add-PrinterPort -Name "EmiliaCloud" -PrinterHostAddress "printer.emiliavision.com" -PortNumber 9100
Add-Printer -Name "EmiliaCloudPrinter" -DriverName "EPSON TM-T20II Receipt5" -PortName "EmiliaCloud"
Step 3: Create Multiple Printers per Station¶

Recommended configuration: One virtual printer per workstation.
| Printer Name | Port | Station |
|---|---|---|
| EmiliaCloudPrinter-Kitchen | EmiliaCloud-Kitchen | Hot kitchen |
| EmiliaCloudPrinter-Bar | EmiliaCloud-Bar | Beverages |
| EmiliaCloudPrinter-Desserts | EmiliaCloud-Desserts | Cold kitchen / Desserts |
| EmiliaCloudPrinter-Cashier | EmiliaCloud-Cashier | Cashier / Receipts |
Complete script:
# EmiliaCloudPrinter - Installation Script
# Kitchen
Add-PrinterPort -Name "EmiliaCloud-Kitchen" -PrinterHostAddress "printer.emiliavision.com" -PortNumber 9100
Add-Printer -Name "EmiliaCloudPrinter-Kitchen" -DriverName "EPSON TM-T20II Receipt5" -PortName "EmiliaCloud-Kitchen"
# Bar
Add-PrinterPort -Name "EmiliaCloud-Bar" -PrinterHostAddress "printer.emiliavision.com" -PortNumber 9100
Add-Printer -Name "EmiliaCloudPrinter-Bar" -DriverName "EPSON TM-T20II Receipt5" -PortName "EmiliaCloud-Bar"
# Desserts
Add-PrinterPort -Name "EmiliaCloud-Desserts" -PrinterHostAddress "printer.emiliavision.com" -PortNumber 9100
Add-Printer -Name "EmiliaCloudPrinter-Desserts" -DriverName "EPSON TM-T20II Receipt5" -PortName "EmiliaCloud-Desserts"
# Cashier
Add-PrinterPort -Name "EmiliaCloud-Cashier" -PrinterHostAddress "printer.emiliavision.com" -PortNumber 9100
Add-Printer -Name "EmiliaCloudPrinter-Cashier" -DriverName "EPSON TM-T20II Receipt5" -PortName "EmiliaCloud-Cashier"
Write-Host "Installation completed" -ForegroundColor Green
Step 4: Verify Installation¶
Method B: Graphical Interface Configuration¶
This method uses the Windows wizard to add printers.
Step 1: Open Printer Settings¶
- Press
Win + Ito open Settings - Go to Devices → Printers & scanners
- Click on "The printer that I want isn't listed"

Step 2: Add Local Printer with Manual Settings¶
Select "Add a local printer or network printer with manual settings" and click Next.

Step 3: Create TCP/IP Port¶
Select "Create a new port" → "Standard TCP/IP Port" and click Next.
| Field | Value |
|---|---|
| Hostname or IP address | printer.emiliavision.com |
| Port name | EmiliaCloudPrinter |
Important: Uncheck "Query the printer and automatically select the driver to use"

Step 4: Port Detection¶
Wait while Windows detects the TCP/IP port.

Step 5: Configure RAW Port¶
When the port configuration dialog appears:
| Field | Value |
|---|---|
| Protocol | Raw |
| Port Number | 9100 |
Leave "SNMP Status Enabled" unchecked.

Step 6: Select Epson Driver¶
- Manufacturer: EPSON
- Printer: EPSON TM-T20II Receipt5

Step 7: Use Existing Driver¶
If the driver is already installed, select "Use the driver that is currently installed (recommended)".

Step 8: Name the Printer¶
Enter the name: EmiliaCloudPrinter

Step 9: Installation Complete¶
The printer appears in the list of installed devices.

To create additional printers (Kitchen, Bar, Desserts, Cashier), repeat the process changing the port name and printer name.
Method C: Port Proxy (LAN Printer Emulation)¶
This method creates a local port forwarder that makes the cloud printer appear as a LAN printer. Use this method when:
- The POS system requires a printer on the local network (LAN)
- Printing from Android tablets that connect directly to IP:port
- The POS sends data directly to the printer without using the Windows Spooler
- You need to emulate a physical thermal printer on the network
How It Works¶
The Windows machine acts as a bridge, listening on port 9100 and forwarding all data to the EmiliaVision cloud.
Step 1: Open PowerShell as Administrator¶
- Press
Win + X - Select "Windows PowerShell (Admin)" or "Terminal (Admin)"
- Accept the UAC prompt if it appears
Step 2: Verify Cloud Connectivity¶
Should display TcpTestSucceeded : True
Step 3: Create Port Proxy¶
netsh interface portproxy add v4tov4 listenaddress=0.0.0.0 listenport=9100 connectaddress=printer.emiliavision.com connectport=9100
| Parameter | Value | Description |
|---|---|---|
listenaddress | 0.0.0.0 | Listen on all network interfaces |
listenport | 9100 | Local port (standard RAW printer port) |
connectaddress | printer.emiliavision.com | EmiliaVision cloud server |
connectport | 9100 | Cloud server port |
Step 4: Configure Windows Firewall¶
Allow incoming connections on port 9100:
New-NetFirewallRule -DisplayName "EmiliaCloudPrinter Port Proxy" -Direction Inbound -Protocol TCP -LocalPort 9100 -Action Allow
Step 5: Verify Port Proxy Configuration¶
Expected output:
Listen on ipv4: Connect to ipv4:
Address Port Address Port
--------------- ---------- ---------------------------- ----------
0.0.0.0 9100 printer.emiliavision.com 9100
Step 6: Test the Connection¶
Test locally:
$client = New-Object System.Net.Sockets.TcpClient("127.0.0.1", 9100)
$stream = $client.GetStream()
$bytes = [Text.Encoding]::ASCII.GetBytes("Test from localhost`r`n")
$stream.Write($bytes, 0, $bytes.Length)
$stream.Close()
$client.Close()
Write-Host "Test sent successfully" -ForegroundColor Green
Test from another device on the network:
Configure the POS or tablet to print to <Windows_IP>:9100, where <Windows_IP> is the IP address of the Windows machine running the port proxy.
Configuring the POS/Tablet¶
| Setting | Value |
|---|---|
| Printer IP | IP address of Windows machine (e.g., 192.168.1.100) |
| Port | 9100 |
| Protocol | RAW / TCP |
To find the Windows machine IP:
Get-NetIPAddress -AddressFamily IPv4 | Where-Object {$_.InterfaceAlias -notlike "*Loopback*"} | Select-Object IPAddress, InterfaceAlias
Useful Port Proxy Commands¶
List all port proxies¶
Delete the port proxy¶
Delete firewall rule¶
Reset all port proxies¶
Port Proxy Persistence¶
The port proxy configuration persists across reboots because it's stored in the Windows registry. However, the IP Helper service (iphlpsvc) must be running for the port proxy to work.
Verify IP Helper Service¶
Expected output:
If StartType shows Manual, fix it with:
Complete Verification Script¶
Run this script to verify the entire Port Proxy setup:
# EmiliaCloudPrinter Port Proxy - Complete Verification
Write-Host "=== IP Helper Service ===" -ForegroundColor Cyan
$svc = Get-Service iphlpsvc
$svc | Select-Object Name, Status, StartType
if ($svc.StartType -ne "Automatic") {
Write-Host "WARNING: Setting IP Helper to Automatic startup" -ForegroundColor Yellow
Set-Service iphlpsvc -StartupType Automatic
}
Write-Host "`n=== Port Proxy Rules ===" -ForegroundColor Cyan
netsh interface portproxy show all
Write-Host "`n=== Firewall Rule ===" -ForegroundColor Cyan
$fw = Get-NetFirewallRule -DisplayName "EmiliaCloudPrinter Port Proxy" -ErrorAction SilentlyContinue
if ($fw) {
$fw | Select-Object DisplayName, Enabled
} else {
Write-Host "WARNING: Firewall rule not found" -ForegroundColor Yellow
}
Write-Host "`n=== Connectivity Test ===" -ForegroundColor Cyan
$test = Test-NetConnection -ComputerName 127.0.0.1 -Port 9100 -WarningAction SilentlyContinue
if ($test.TcpTestSucceeded) {
Write-Host "OK: Port 9100 is listening" -ForegroundColor Green
} else {
Write-Host "ERROR: Port 9100 is not listening" -ForegroundColor Red
}
Troubleshooting Port Proxy¶
Port 9100 already in use¶
Another application is using port 9100. Check what's using it:
Get-NetTCPConnection -LocalPort 9100 -ErrorAction SilentlyContinue | Select-Object OwningProcess
Get-Process -Id (Get-NetTCPConnection -LocalPort 9100).OwningProcess
Connection refused from tablet/POS¶
-
Verify firewall rule is active:
-
Test local connectivity first:
-
Ensure both devices are on the same network
Data not reaching the cloud¶
-
Verify cloud connectivity:
-
Check port proxy is active:
When to Use Each Method¶
| Scenario | Recommended Method |
|---|---|
| Standard Windows POS with Spooler | Method A (PowerShell) or B (GUI) |
| Android tablet printing to LAN | Method C (Port Proxy) |
| POS bypasses Windows Spooler | Method C (Port Proxy) |
| Multiple devices printing to one IP | Method C (Port Proxy) |
Functionality Tests¶
Individual Test¶
Test per Station¶
"=== KITCHEN ===`r`nTable: 12`r`n2x Burger`r`n1x Salad" | Out-Printer -Name "EmiliaCloudPrinter-Kitchen"
"=== BAR ===`r`nTable: 12`r`n2x Margarita`r`n1x Beer" | Out-Printer -Name "EmiliaCloudPrinter-Bar"
"=== DESSERTS ===`r`nTable: 12`r`n1x Cheesecake" | Out-Printer -Name "EmiliaCloudPrinter-Desserts"
"=== CASHIER ===`r`nTable: 12`r`nTotal: $45.50" | Out-Printer -Name "EmiliaCloudPrinter-Cashier"
Contact the Emilia Vision team to confirm data reception.
Useful Commands¶
List Available Drivers¶
Check if Epson Driver is Installed¶
If the command returns empty, the Epson APD driver is not installed. See Method C, Steps 1-2.
List All Printers¶
List Only EmiliaCloud Printers¶
Delete a Printer¶
Delete a Printer Port¶
Delete All EmiliaCloud Printers and Ports¶
# Remove printers
Get-Printer | Where-Object {$_.Name -like "*Emilia*"} | Remove-Printer
# Remove ports
Get-PrinterPort | Where-Object {$_.Name -like "*Emilia*"} | Remove-PrinterPort
Troubleshooting¶
Migrate from Generic / Text Only to EPSON Driver¶
If you previously configured printers with the "Generic / Text Only" driver and need to switch to EPSON:
Option 1: Change Driver on Existing Printer (PowerShell)¶
# List current printers with Generic driver
Get-Printer | Where-Object {$_.DriverName -eq "Generic / Text Only"} | Format-Table Name, DriverName, PortName
# Change driver for a specific printer
Set-Printer -Name "EmiliaCloudPrinter" -DriverName "EPSON TM-T20II Receipt5"
# Verify the change
Get-Printer -Name "EmiliaCloudPrinter" | Select-Object Name, DriverName
Option 2: Change Driver on Existing Printer (GUI)¶
- Open Settings → Devices → Printers & scanners
- Click on the printer → Manage → Printer properties
- Go to the Advanced tab
- In the Driver dropdown, select EPSON TM-T20II Receipt5
- Click Apply and OK
Option 3: Delete and Recreate (Recommended for multiple printers)¶
# Delete all EmiliaCloud printers with Generic driver
Get-Printer | Where-Object {$_.Name -like "*Emilia*" -and $_.DriverName -eq "Generic / Text Only"} | Remove-Printer
# Recreate with EPSON driver (ports remain intact)
Add-Printer -Name "EmiliaCloudPrinter-Kitchen" -DriverName "EPSON TM-T20II Receipt5" -PortName "EmiliaCloud-Kitchen"
Add-Printer -Name "EmiliaCloudPrinter-Bar" -DriverName "EPSON TM-T20II Receipt5" -PortName "EmiliaCloud-Bar"
Add-Printer -Name "EmiliaCloudPrinter-Desserts" -DriverName "EPSON TM-T20II Receipt5" -PortName "EmiliaCloud-Desserts"
Add-Printer -Name "EmiliaCloudPrinter-Cashier" -DriverName "EPSON TM-T20II Receipt5" -PortName "EmiliaCloud-Cashier"
Complete Migration Script¶
# EmiliaCloudPrinter - Migration from Generic to EPSON
Write-Host "=== Checking for EPSON driver ===" -ForegroundColor Cyan
$driver = Get-PrinterDriver | Where-Object {$_.Name -like "*TM-T20II*"}
if (-not $driver) {
Write-Host "ERROR: EPSON TM-T20II driver not installed. Install APD first." -ForegroundColor Red
exit 1
}
Write-Host "OK: EPSON driver found" -ForegroundColor Green
Write-Host "`n=== Finding printers with Generic driver ===" -ForegroundColor Cyan
$genericPrinters = Get-Printer | Where-Object {$_.Name -like "*Emilia*" -and $_.DriverName -eq "Generic / Text Only"}
if ($genericPrinters.Count -eq 0) {
Write-Host "No printers with Generic driver found" -ForegroundColor Yellow
exit 0
}
$genericPrinters | Format-Table Name, DriverName, PortName
Write-Host "`n=== Migrating to EPSON driver ===" -ForegroundColor Cyan
foreach ($printer in $genericPrinters) {
Write-Host "Updating: $($printer.Name)" -ForegroundColor Yellow
Set-Printer -Name $printer.Name -DriverName "EPSON TM-T20II Receipt5"
}
Write-Host "`n=== Verification ===" -ForegroundColor Cyan
Get-Printer | Where-Object {$_.Name -like "*Emilia*"} | Format-Table Name, DriverName, PortName
Write-Host "Migration completed" -ForegroundColor Green
Error: "Windows cannot connect to the printer"¶
- Verify connectivity:
- Check firewall configuration
EPSON driver not found¶
If the EPSON driver doesn't appear when adding a printer:
- Download and install Epson APD (see Prerequisites section)
- Verify installation:
- Restart the Print Spooler:
Data arrives as binary/garbage¶
- Verify you are using the EPSON TM-T20II Receipt5 driver
- DO NOT use "Generic / Text Only" or "Microsoft Software Printer Driver"
- If using Generic driver, migrate to EPSON (see above)
Printer doesn't appear in the list¶
Configuration Summary¶
| Parameter | Value |
|---|---|
| Server | printer.emiliavision.com |
| Port | 9100 |
| Protocol | RAW |
| Driver | EPSON TM-T20II Receipt5 |

Configuration Complete!¶
For technical support, contact the Emilia Vision team.