Complete setup instructions for the VATSIM Flight Strip Printer system.
Install Node.js version 18 or higher:
- Visit: https://nodejs.org/
- Download the LTS (Long Term Support) version
- Run the installer
- Verify installation:
node --version npm --version
The USB printer library requires native modules. Install ONE of:
Option A: Automatic (Recommended)
npm install --global windows-build-toolsOption B: Manual
- Install Visual Studio Build Tools 2019 or later
- Download from: https://visualstudio.microsoft.com/downloads/
- Select "Desktop development with C++"
- Connect the printer via USB
- Ensure the printer is powered on
- Load thermal paper
Open a terminal in the project root directory:
npm run install:allThis installs dependencies for the root project, backend, and frontend.
Note: Warnings during installation are usually safe to ignore. Only errors need to be resolved.
Check for any errors in the output. Common issues:
- ✅ Warnings: Usually safe to ignore
- ❌ Errors: Must be resolved before continuing
The POS-5890K printer requires a WinUSB driver for direct USB communication on Windows.
- Go to https://zadig.akeo.ie/
- Download the latest version
- Run
zadig.exeas Administrator
- In Zadig, click Options → List All Devices
- Find your printer device from the dropdown:
- May show as "USB-Serial CH340" or similar
- Or look for device ID:
1A86 E026
- In the target driver box (right side), select WinUSB
- Click Replace Driver or Install Driver
- Wait for installation to complete
In PowerShell, run:
Get-PnpDevice -Class USB | Where-Object {$_.InstanceId -like "*1A86*"}You should see your device listed with Status: OK
Start both backend and frontend servers:
npm run devThis starts:
- Backend server on http://localhost:3000
- Frontend dev server on http://localhost:5173
Access the application at http://localhost:5173
Build and run the production version:
# Build the frontend
npm run build
# Start production server
npm startAccess the application at http://localhost:3000
- Open the web interface
- Check the printer status indicator (should show "Connected")
- Click the printer test button in the top-right corner
- Verify the test strip prints successfully
- Select an airport (default: ESGG)
- Wait for VATSIM data to load (auto-refreshes every 15 seconds)
- Select an active runway for SID detection
- Click the print button next to any flight
Check USB Connection:
- Verify USB cable is connected
- Ensure printer is powered on
- Check Windows Device Manager for USB devices
- Try different USB port
Driver Issues:
- Verify WinUSB driver is installed using Zadig
- Check Device Manager for yellow warning icons
- Try reinstalling the WinUSB driver
Permission Issues:
- Run PowerShell as Administrator
- Navigate to project directory
- Run
npm startwith elevated privileges
This error occurs when the USB device is locked or inaccessible.
Quick Fixes:
- Unplug and replug the printer USB cable (wait 5 seconds)
- Close any printer management software
- Restart the backend (Ctrl+C, then
npm start) - Check Device Manager for device conflicts
- Reboot Windows (last resort)
Prevention:
- Always stop the backend (Ctrl+C) before unplugging the printer
- Don't have multiple applications accessing the printer simultaneously
Missing build tools:
npm install --global windows-build-toolsOr install Visual Studio Build Tools 2019 or later.
USB package errors:
If you see errors related to the usb package, ensure:
- Build tools are installed
- Restart terminal after installing build tools
- Try cleaning and reinstalling:
npm run install:all
Check connectivity:
- Verify internet connection
- Ensure firewall isn't blocking outbound HTTPS requests
- Check browser console for errors (F12)
Check printer settings:
- Verify correct thermal paper is loaded
- Ensure paper is loaded correctly (thermal side down)
- Test with the built-in printer test button
USB communication issues:
- Try different USB port
- Use different USB cable
- Verify WinUSB driver is installed correctly
If port 3000 or 5173 is already in use:
- Edit
backend/config.jsto change backend port - Edit
frontend/vite.config.jsto change dev server port
When working correctly, you should see:
Scanning USB devices...
Found printer device: { vendor: 6790, product: 57382 }
Device has 1 interface(s)
USB endpoint configured successfully on interface 0
USB connection opened successfully
Printer initialized with ESC/POS commands
Printer connected successfully
Edit backend/config.js:
defaultAirport: 'ESGG', // Change to your airportEdit backend/config.js:
refreshInterval: 15000, // milliseconds (15 seconds)SID data is loaded from data/SID.txt in EuroScope ESE format:
SID:AIRPORT:RUNWAY:SID_NAME:WAYPOINT1 WAYPOINT2 ...
Example:
SID:ESGG:03:DETNA3M:GG401 GG901 GG902 DETNA
Edit SVG templates in the templates/ folder:
stripdeparture.svg- Departure stripsstriparrival.svg- Arrival stripsstrip.svg- Generic blank strip
To access from other devices on your network:
-
Find your computer's IP address:
- Windows: Run
ipconfigin PowerShell - Look for "IPv4 Address" under your active network adapter
- Windows: Run
-
On other devices, navigate to:
- Development:
http://<YOUR_IP>:5173 - Production:
http://<YOUR_IP>:3000
- Development:
-
Allow firewall access if prompted:
- Windows Security → Firewall & network protection
- Allow an app through firewall
- Find "Node.js" and check both Private and Public
vatfsp/
├── backend/ # Backend server (Node.js/Express)
│ ├── server.js # Main server file
│ ├── vatsim.js # VATSIM API client
│ ├── printer.js # Printer controller
│ ├── stripRenderer.js # SVG to image converter
│ ├── sidService.js # SID detection service
│ ├── wtcService.js # Wake turbulence category lookup
│ └── config.js # Configuration
├── frontend/ # Frontend application (Vue 3)
│ ├── src/
│ │ ├── App.vue # Main app component
│ │ ├── components/ # Vue components
│ │ └── services/ # API service
│ └── index.html # HTML entry point
├── templates/ # Flight strip SVG templates
│ ├── stripdeparture.svg
│ ├── striparrival.svg
│ └── strip.svg
├── data/ # Reference data
│ ├── SID.txt # SID definitions
│ └── ICAO_Aircraft.txt # Aircraft type database
├── README.md # Project overview
├── SETUP.md # This file
└── VATIRIS_INTEGRATION_API.md # API documentation
After successful installation:
- ✅ Test printer connectivity
- ✅ Verify VATSIM data loads
- ✅ Print a test flight strip
- 📝 Customize SVG templates if needed
- 🌐 Set up remote access for networked devices
- 🚀 Deploy to production mode
If you encounter issues:
- Check console output for error messages
- Verify all prerequisites are installed
- Review troubleshooting section above
- Check printer USB connection and drivers
- Ensure VATSIM API is accessible
For API integration with other software (like VatIRIS), see VATIRIS_INTEGRATION_API.md.
Important: Keep the terminal window open while using the application. The backend server must be running for the printer to function.