Skip to content

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:

Get-PrinterDriver | Where-Object {$_.Name -like "*TM-T20II*"}

Verify connectivity (PowerShell):

Test-NetConnection -ComputerName printer.emiliavision.com -Port 9100

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

  1. Press Win + X
  2. Select "Windows PowerShell (Admin)" or "Terminal (Admin)"
  3. 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

Get-Printer | Where-Object {$_.Name -like "*Emilia*"} | Format-Table Name, DriverName, PortName

Method B: Graphical Interface Configuration

This method uses the Windows wizard to add printers.

Step 1: Open Printer Settings

  1. Press Win + I to open Settings
  2. Go to DevicesPrinters & scanners
  3. 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

POS/Tablet → localhost:9100 (or LAN IP:9100) → [Port Proxy] → printer.emiliavision.com:9100

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

  1. Press Win + X
  2. Select "Windows PowerShell (Admin)" or "Terminal (Admin)"
  3. Accept the UAC prompt if it appears

Step 2: Verify Cloud Connectivity

Test-NetConnection -ComputerName printer.emiliavision.com -Port 9100

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

netsh interface portproxy show all

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

netsh interface portproxy show all

Delete the port proxy

netsh interface portproxy delete v4tov4 listenaddress=0.0.0.0 listenport=9100

Delete firewall rule

Remove-NetFirewallRule -DisplayName "EmiliaCloudPrinter Port Proxy"

Reset all port proxies

netsh interface portproxy reset

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

Get-Service iphlpsvc | Select-Object Name, Status, StartType

Expected output:

Name     Status  StartType
----     ------  ---------
iphlpsvc Running Automatic

If StartType shows Manual, fix it with:

Set-Service iphlpsvc -StartupType Automatic

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

  1. Verify firewall rule is active:

    Get-NetFirewallRule -DisplayName "EmiliaCloudPrinter Port Proxy"
    

  2. Test local connectivity first:

    Test-NetConnection -ComputerName 127.0.0.1 -Port 9100
    

  3. Ensure both devices are on the same network

Data not reaching the cloud

  1. Verify cloud connectivity:

    Test-NetConnection -ComputerName printer.emiliavision.com -Port 9100
    

  2. Check port proxy is active:

    netsh interface portproxy show v4tov4
    


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

"EmiliaCloudPrinter print test" | Out-Printer -Name "EmiliaCloudPrinter"

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

Get-PrinterDriver | Format-Table Name

Check if Epson Driver is Installed

Get-PrinterDriver | Where-Object {$_.Name -like "*TM-T20II*"}

If the command returns empty, the Epson APD driver is not installed. See Method C, Steps 1-2.

List All Printers

Get-Printer | Format-Table Name, DriverName, PortName

List Only EmiliaCloud Printers

Get-Printer | Where-Object {$_.Name -like "*Emilia*"} | Format-Table Name, DriverName, PortName

Delete a Printer

Remove-Printer -Name "EmiliaCloudPrinter"

Delete a Printer Port

Remove-PrinterPort -Name "EmiliaCloud"

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)

  1. Open SettingsDevicesPrinters & scanners
  2. Click on the printer → ManagePrinter properties
  3. Go to the Advanced tab
  4. In the Driver dropdown, select EPSON TM-T20II Receipt5
  5. Click Apply and OK
# 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"

  1. Verify connectivity:
    Test-NetConnection -ComputerName printer.emiliavision.com -Port 9100
    
  2. Check firewall configuration

EPSON driver not found

If the EPSON driver doesn't appear when adding a printer:

  1. Download and install Epson APD (see Prerequisites section)
  2. Verify installation:
    Get-PrinterDriver | Where-Object {$_.Name -like "*TM-T20II*"}
    
  3. Restart the Print Spooler:
    Restart-Service 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

Restart-Service Spooler

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.