Share USB devices (plotters, printers, scanners) over your network
by BangerTECH
Loki-PrintServer lets you plug a USB device (cutting plotter, printer, scanner, label printer…) into a Raspberry Pi and use it from any computer on your network — as if it were plugged in locally.
Works with Illustrator + xfcut, Silhouette Studio, Inkcut, and any other software that talks to a USB device.
Requires: Raspberry Pi with Docker installed
git clone https://github.com/BangerTech/Loki-PrintServer.git
cd Loki-PrintServer/server
docker compose up -dThat's it. The server is now running.
Web Dashboard: open http://<raspberry-pi-ip>:7576 in your browser.
Download the latest client for your platform from GitHub Releases:
| Platform | File | Installation |
|---|---|---|
| macOS (Apple Silicon + Intel) | Loki-Client.dmg |
Open → drag to Applications |
| Windows | LokiClient.exe |
Run installer |
| Linux | Loki-Client-linux |
chmod +x + run |
- Open Loki-Client — it appears in your menu bar (macOS) or system tray (Windows/Linux)
- The server on your network is found automatically
- Click your server → select your device → Attach
- The device appears locally — open your software and use it normally
macOS only: On first launch right-click → Open (once, because the app is not notarized yet). If you get "App is damaged", run
xattr -cr /Applications/Loki-Client.app
┌─────────────────────────┐ ┌──────────────────────────┐
│ Raspberry Pi (Server) │ │ Your Computer (Client) │
│ │ │ │
│ USB Plotter │ │ Loki-Client │
│ └─► usbipd :7575 │◄──TCP──►│ └─► usbip attach │
│ FastAPI :7576 │ │ /dev/ttyUSB0 │
│ CUPS :631 │ │ or COM3 │
│ socat :7580+ │ │ (device appears local!) │
└─────────────────────────┘ └──────────────────────────┘
| Device type | Forwarding method | Works on |
|---|---|---|
| Plotter / USB-Serial (CH340, FTDI) | Serial over TCP (socat) | macOS, Windows, Linux |
| USB Printer | CUPS / IPP network printer | macOS, Windows, Linux |
| Any USB device | USB/IP kernel passthrough | Windows (usbip-win), Linux |
- ✂ Cutting plotters: Silhouette Cameo, Cricut, Graphtec, Roland, generic CH340
- 🖨 Printers: HP, Canon, Epson, Brother, Samsung
- 🏷 Label printers: DYMO LabelWriter, Brother QL
- 📷 Scanners: Epson Perfection, Canon CanoScan, HP ScanJet
- 🔌 Any other USB device (via USB/IP on Windows & Linux)
Server:
- Raspberry Pi (any model) running Raspberry Pi OS or any Debian-based Linux
- Docker
Client:
- macOS 11+, Windows 10+, or Linux
- macOS cutting plotters: AMFI must be disabled for virtual USB device support (see below)
- Windows: usbip-win2 / USBip for full USB passthrough (bundled)
On macOS, Loki creates a real virtual USB device (/dev/cu.usbmodem*) that cutting software like FineCut, xfcut, and Inkcut recognizes natively. The virtual device mimics the original USB identity (Vendor ID, Product ID) so vendor-specific software detects it automatically.
This requires AMFI (Apple Mobile File Integrity) to be disabled:
| Setup | How to disable AMFI |
|---|---|
| OpenCore / Hackintosh | Add amfi_get_out_of_my_way=1 to boot-args in your OpenCore config.plist, then reboot |
| OpenCore Legacy Patcher | Settings → Kernel Security → Enable "Disable AMFI" → Apply → Reboot |
| Stock Mac | Boot into Recovery → Terminal → nvram boot-args="amfi_get_out_of_my_way=1" → Reboot |
Without AMFI disabled, Loki falls back to a PTY bridge (
/tmp/tty.loki-*) which works for software that allows manual port entry, but won't be detected by IOKit-based programs like FineCut.
After first download, you may need to run:
xattr -cr /Applications/Loki-Client.appgit clone https://github.com/BangerTech/Loki-PrintServer.git
cd Loki-PrintServer
# macOS
bash client/build/build_mac.sh
# Windows (run on Windows)
client\build\build_windows.batMIT License — © BangerTECH
