WinUSB-HTTP-Gateway
The Nextgen Pad supports since firmware 1.6 the WinUSB protocol as alternative to the RNDIS Interface. The WinUSB Protocol can redirected with RemoteDesktop (remoteFX) and Citrix which is a advantage, also the device will not be a network device anymore.
For the communication with the device the StepOver Winusb-HTTP-Gateway will be required. The WinUSB-HTTP-Gateway will allow the access to the webinterface and the RestAPI of the device, by emulating it locally.
Download
https://www.stepoverinfo.net/download.php?key=winusbgateway
Enable WinUSB Mode with Swagger
It´s possible to configure the Protocol which the device should support, there are 3 types:
Ethernet (ecm) is the Mode with the external Ethernet Adapter
USB (rndis) is the default mode when you connect the Pad with USB. The OS will create a network interface for the private device communication
WinUSB is the alternativ to the rndis mode, where the device is no Network device anymore
The communication typ can be changed with swagger an the PUT /config Endpoint. You also need to serialize the new Options (also PUT /config) and to restart the device. Please note that WINUSB mode requires the winusb_http_gateway tool, otherwise you will not be able to communicate with the device.
You need to Serialize the option, otherwise it will not be stored permanently on the device and the RNDIS will be selected after a device reboot.
Configuration of the WinUSB-HTTP-Gateway
The WinUSB-HTTP-Gateway can be run as service or with a standalone executive file (.exe). When using it as EXE you can control it with the commandline parameter. When using it as service you need to place a config file winusb_gateway.toml with all settings into the application directory.
Command-Line
Flag | Default | Description |
|---|---|---|
|
| TOML config file path |
|
| Max ms to wait for |
|
| Post-session stale-data drain window |
| (none) | Forward local port to device port, e.g. |
|
| Keepalive interval to gadget; |
|
| Print config file key reference and exit |
|
| TCP bind address |
| (built-in) | Custom status page HTML template |
|
| HTTPS forward port → device port 443; |
|
| List USB device paths (Windows only) and exit |
| off | Register gadget hostname via mDNS ( |
|
| USB Product ID (hex); config also accepts a list |
|
| HTTP proxy port (single or range e.g. |
| (none) | Enable remote shutdown via status port (see below) |
|
| Device reconnect polling interval |
|
| TCP receive buffer size (larger = fewer USB round-trips for uploads) |
| (any) | USB serial number filter |
|
| Status/monitoring HTTP page port; |
|
| USB bulk IN read timeout |
|
| USB bulk OUT write timeout per chunk |
|
| Verbosity 0–9 (0=quiet, 2=verbose, 3+=debug) |
|
| Print version and exit |
|
| USB Vendor ID (hex); config also accepts a list |
|
| Kick device after this many ms of USB silence with active connections |
Port ranges
--port, --https-port, and --status-port accept a single port number or a range (3000-57000). The gateway binds to the first free port in the range. You need to use the port range, when you want to use multiple pads in terminal environment, because you can only open each port once on a server. The assigned port will be visible on the Pad screen.
mDNS
When --mdns is set, the gateway registers <gadget-hostname>.local → 127.0.0.1 so the device can be reached by it´s own name:
http://my-device.local:8080/Bind gateway to a TCP/IP Adress
--host can be used with 127.0.0.1 the access to the gateway should be limited to the host only. If you want to allow also the external access or using --mdns you need to set it to 0.0.0.0 or the specific IP of your Ethernet Adapter. Of course this also requires a firewall access rule.
Example
winusb_http_gateway.exe --port 80 --https-port 443 --mdns --host 0.0.0.0 ← the pads will be reachable under it´s hostname with the standard http(s) ports
in case of a terminal environment where you want to use multiple devices, we need to use the port range, because each port can only be hosted once on a system
winusb_http_gateway.exe --https-port 30000-31000 --mdns --host 0.0.0.0 ← the https ports will be between 30000 and 31000 in that case
Config File
Default location: winusb_gateway.toml in the current directory. All keys are optional; CLI flags override config file values.
vid = "0x22c9" # USB vendor ID (hex); or list: ["0x22c9", "0x1234"]
pid = "0xff17" # USB product ID (hex); or list: ["0xff17", "0xabcd"]
serialnumber = "" # USB serial number filter (empty = any)
host = "127.0.0.1" # TCP bind address
port = "8080" # HTTP proxy port; single port or range e.g. "3000-57000"
https_port = "443" # HTTPS forward → device:443; range supported; "0" = disabled
reconnect_interval_ms = 500 # Device reconnect polling interval (ms)
verbose = 1 # Verbosity 0–9
status_port = "60110" # Status page port; "0" = disabled
html_template = "" # Path to custom status page HTML template
usb_read_timeout_ms = 500 # USB bulk IN read timeout (ms)
usb_write_timeout_ms = 1000 # USB bulk OUT write timeout per chunk (ms)
drain_ms = 300 # Post-session stale-data drain window (ms)
watchdog_ms = 1500 # Kick device after this many ms of USB silence
heartbeat_ms = 5000 # Keepalive interval to gadget (ms); 0 = disabled
disconnect_timeout_ms = 2000 # Max ms to wait for CMD_DISCONNECT on exit; 0 = no wait
rx_buf_size = 65536 # TCP receive buffer size in bytes
mdns = false # Register gadget hostname via mDNS
forward = ["8022:22"] # Port forwards LOCAL:DEST (array)Status Page
Served on --status-port (default http://127.0.0.1:60110). Displays:
Gateway uptime and process ID (
process_id)Device connected / disconnected (VID, PID, serial number)
Gadget hostname, OS pretty name, firmware version, git revision
Gateway HTTP and HTTPS ports
Reconnect count, bytes transferred
Active connections with remote address and local port
Port forwards configured
Auto-refreshes every 2 seconds.
Forwarding WinUSB device
The WinUSB device can be forwared with Citrix and RemoteDesktop, because it will not be longer a network interface device (RNDIS). Here a list of the VID/PID combinations with WinUSB Mode.
VID (HEX) | PID (HEX) | Vendor | Description |
22C9 | FF17 | StepOver GmbH | duraSign Pad NG 10 with WinUSB Mode |
2689 | FF17 | StepOver GmbH | duraSign Pad NG 10 AM with WinUSB Mode |
22C9 | FF17 | StepOver GmbH | nextGen Pad 5 with WinUSB Mode |
2689 | FF17 | StepOver GmbH | nextGen Pad 5 AM with WinUSB Mode |
The forwarding with Citrix is like with other USB devices, by might need to enable the VID/PID combination, but not more.
With the RemoteFX extension you can forward the device into a remote desktop session. Here a small manual for the RemoteFX USB Redirection.
Server
Type gpedit.msc in the Run dialog box and click OK.
Go to Computer Configuration → Administrative Templates → Windows Components → Remote Desktop Services → Remote Desktop Session Host → Device and Resource Redirection, and double-click “Do not allow supported Plug and Play device redirection” to open a pop-up window.
In the “Do Not Allow Supported Plug & Play Device Redirection” window, select “Disabled” and click OK.
Client
Type gpedit.msc in the Run dialog box and click OK
In the Local Group Policy Editor window that opens, click RemoteFx USB Redirection in the menu (Computer Configuration → Administrative Templates → Windows Components → Remote Desktop Services → Remote Desktop Connection Client → RemoteFx USB Redirection). Then double-click Allow RDP redirection of other supported RemoteFx USB devices
In the window that appears, select “Enabled,” go to the “RemoteFX USB Redirection Permissions” menu, and select the “Administrators and Users” option.
Confirm with OK and restart your computer.
In the next remote session you should be able to forward the device