Run Windows FPrint.exe on macOS using Wine for Datecs fiscal printers. Complete solution with automated file management and real-time monitoring.
- Wine + FPrint.exe: Run Windows FPrint software directly on macOS
- Resident Mode: Automatic file-based command processing
- Chrome Extension: Auto-organize downloaded
kasa*.txtfiles - Monitor App: Real-time status tracking with menu bar integration
- Full Compatibility: 100% of FPrint features available
- Complete Documentation: Step-by-step setup guide with troubleshooting
- FPrint Software - Windows fiscal printer driver (runs via Wine)
- Chrome Extension - Automatically moves downloaded kasa files to the correct folder
- Monitor App - macOS menu bar app showing FPrint and printer status
- Configuration Tools - Settings Manager for easy printer setup
IMPORTANT: Clone this repository to your Downloads folder for the Chrome extension to work properly:
cd ~/Downloads
git clone https://github.com/bulgariamitko/datecs-fprint-macos.git
cd datecs-fprint-macos# Install Homebrew if you don't have it
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# Install Wine
brew install wine-stable
# Verify installation
wine --version
# Should show: wine-8.0 or newerGood news: FPrint software is already included in this repository! ๐ฆ
The FPrintWIN/ folder contains all necessary files:
FPrint_SettingsManager.exe- Configuration tool (run this FIRST)FPrint.exe- Main printer service (run this SECOND in background)- All required DLLs and support files
No need to download or install anything else!
IMPORTANT: Run the Settings Manager FIRST to configure your printer.
# Navigate to repository folder
cd datecs-fprint-macos
# Run FPrint Settings Manager with Wine
wine FPrintWIN/FPrint_SettingsManager.exeIn the Settings Manager window:
- Enter your printer's IP Address (e.g.,
192.168.1.155) - Enter Port (usually
4999) - Enter Device Model (e.g.,
DP-25MX) - Enter Serial Number (from printer info menu)
- Enter Fiscal Memory Number (from printer info menu)
- Set Execution Folder (where to watch for commands)
- IMPORTANT: Set this to the
executefolder inside FPrintWIN - Path:
C:\users\{username}\Dropbox\github\datecs-fprint-macos\FPrintWIN\execute - Wine will map this to:
FPrintWIN/execute/
- IMPORTANT: Set this to the
- Set Answer Folder (where results will be saved)
- IMPORTANT: Set this to the
execute-answerfolder inside FPrintWIN - Path:
C:\users\{username}\Dropbox\github\datecs-fprint-macos\FPrintWIN\execute-answer - Wine will map this to:
FPrintWIN/execute-answer/
- IMPORTANT: Set this to the
- Click Save to save configuration
- Close the Settings Manager
The settings will be saved to FPrintWIN/FPrint.ini and FPrintWIN/Settings.dat.
Why these folders are important:
execute/: FPrint monitors this folder for.txtcommand files to processexecute-answer/: FPrint saves response files here after processing commands- Error handling: If there are errors during printing, you'll find error details in the answer files in
execute-answer/
The necessary folders are already included in the repository:
# Verify the folders exist
ls -la FPrintWIN/execute/
ls -la FPrintWIN/execute-answer/Note: These folders should match what you configured in Settings Manager (Step 3). FPrint will monitor execute/ for command files and save responses in execute-answer/.
Now that configuration is complete, run FPrint.exe in the background:
# Navigate to repository folder
cd datecs-fprint-macos
# Start FPrint in background (recommended)
nohup wine FPrintWIN/FPrint.exe /resident > /tmp/fprint.log 2>&1 &
# Check if running
ps aux | grep FPrint.exe
# View logs (optional)
tail -f /tmp/fprint.logOr run in foreground (to see output directly):
wine FPrintWIN/FPrint.exe /residentFPrint is now running and monitoring for command files! ๐
# Create a test command file in the execute folder
echo "I,1,______,_,__;0;80" > FPrintWIN/execute/test01.txt
# Wait a moment, then check result in execute-answer folder
cat FPrintWIN/execute-answer/test01.txtIf you see a response with printer information, it's working! ๐
To stop FPrint:
pkill -f FPrint.exeThe Chrome extension automatically organizes downloaded kasa*.txt files by moving them directly to the execute/ folder.
Install the extension:
- Open Chrome and go to
chrome://extensions/ - Enable Developer mode (toggle in top-right corner)
- Click Load unpacked
- Navigate to your Downloads folder and select:
datecs-fprint-macos/chrome-extension/ - The extension "Kasa ะะตะฝะธะดะถัั ะทะฐ ะะทัะตะณะปัะฝะธั" should now appear in your extensions list
Configure the extension:
- Click the extension icon in Chrome toolbar (puzzle piece โ pin the Kasa extension)
- Click the Kasa extension icon
- The default path should already be set to:
datecs-fprint-macos/FPrintWIN/execute - Click "ะะฐะฟะฐะทะธ ะฝะฐัััะพะนะบะธัะต" (Save Settings)
- Click "ะขะตัั ะธะทัะตะณะปัะฝะต ะธ ะดะตะฑัะณ" (Test Download) to verify it works
How it works:
- Any file matching the pattern
kasa*.txt(e.g.,kasa1.txt,kasa123.txt) will be automatically moved to~/Downloads/datecs-fprint-macos/FPrintWIN/execute/ - FPrint monitors this folder and processes the files automatically
- Results appear in the
execute-answer/folder
Test the full workflow:
# Download a test file from a website, or simulate by:
# 1. Download any .txt file
# 2. Rename it to kasa1.txt before saving
# 3. The extension will automatically move it to execute/
# 4. FPrint will process it and create result in execute-answer/
# Check if file arrived in execute folder
ls -la ~/Downloads/datecs-fprint-macos/FPrintWIN/execute/
# Check the result
cat ~/Downloads/datecs-fprint-macos/FPrintWIN/execute-answer/kasa1.txtThe monitor app is a macOS menu bar application that provides real-time monitoring of both FPrint and the fiscal printer connection. This is the final and most important step for ensuring everything is working correctly.
What it monitors:
- FPrint Status - Checks if
FPrint.exeis running in the background - Printer Connection - Verifies network connectivity to the fiscal printer
Visual Status Indicators:
- ๐ข Green Circle = Both FPrint running AND printer connected = READY TO PRINT
- ๐ก Yellow Circle = Only one service is working (either FPrint OR printer)
- ๐ด Red Circle = Both services are down (FPrint not running AND printer disconnected)
Install the Monitor App:
# The pre-built app is included in the repository
# Simply copy it to your Applications folder
cp -r ~/Downloads/datecs-fprint-macos/monitor-app/dist/FPrintMonitor.app /Applications/
# Launch the app
open /Applications/FPrintMonitor.appFirst-time Configuration:
- Click the monitor icon in your menu bar (top-right, should show ๐ข, ๐ก, or ๐ด)
- Click "Settings"
- Enter your printer's IP and port in format:
IP:PORT- Example:
192.168.1.155:4999
- Example:
- Click "Save"
Using the Monitor:
The menu bar shows:
- FPrint: โ Running or โ Not Running
- Printer: โ Connected or โ Disconnected
Available actions:
- Start FPrint - Starts FPrint.exe in resident mode if not running
- Restart FPrint - Stops and restarts FPrint.exe
- Settings - Configure printer IP and port
- Quit All - Stops FPrint and closes the monitor app
Why this is essential:
- Visual confirmation that everything is working before printing
- Quick troubleshooting - instantly see which component has issues
- Easy FPrint management - start/restart from the menu bar
- Only print when you see the green circle ๐ข - this ensures both FPrint and the printer are ready
Auto-start on login (Optional):
- Open System Settings โ General โ Login Items
- Click the + button
- Select FPrintMonitor.app from Applications
- The monitor will now start automatically when you log in
The FPrintMonitor app is a macOS menu bar utility that continuously monitors your printing system.
Features:
- Real-time monitoring every 5 seconds
- Visual status indicators (๐ข/๐ก/๐ด)
- One-click FPrint start/restart
- Configurable printer IP/port settings
- System notifications for state changes
- Auto-start capability on login
How it works:
The monitor performs two checks:
- FPrint Process Check - Uses
pgrepto verifyFPrint.exeis running - Printer Network Check - Attempts TCP connection to configured IP:PORT
Status Logic:
- Both checks pass โ ๐ข Green (ready to print)
- One check passes โ ๐ก Yellow (partial failure)
- Both checks fail โ ๐ด Red (system down)
Configuration File:
Settings are stored in: ~/.config/fprint_monitor/config.json
Rebuilding the app (if needed):
If you want to modify the monitor app:
cd ~/Downloads/datecs-fprint-macos/monitor-app
# Install dependencies
pip3 install rumps pyinstaller
# Rebuild the app
pyinstaller FPrintMonitor.spec
# The new app will be in dist/FPrintMonitor.appThe included Chrome extension (chrome-extension/) automatically organizes downloaded kasa*.txt files:
Features:
- Monitors all Chrome downloads
- Detects files matching pattern
kasa*.txt(e.g.,kasa1.txt,kasa123.txt,kasa.txt) - Automatically moves them to the configured folder (default:
Downloads/datecs-fprint-macos/FPrintWIN/execute/) - Provides test download functionality
- Debug logging for troubleshooting
Why use it?
Without the extension, you'd need to manually move each downloaded kasa*.txt file to the execute folder. The extension eliminates this manual step, creating a seamless workflow:
- Website generates
kasa1.txtโ you download it - Extension automatically moves it to
execute/ - FPrint processes it immediately
- Result appears in
execute-answer/
Installation (see Step 7 above for detailed instructions):
- Load unpacked extension from
chrome-extension/folder - Configure path in extension popup
- Test with the built-in test download button
Troubleshooting the extension:
- Ensure "Ask where to save each file" is disabled in Chrome settings
- Check extension has download permissions
- Use the debug logs in the extension popup to see what's happening
- Make sure the repository is in
~/Downloads/folder
First time setup: Run Settings Manager first!
wine FPrintWIN/FPrint_SettingsManager.exe
# Configure printer, save, closeThen start FPrint:
# Foreground (see output)
wine FPrintWIN/FPrint.exe /resident
# Background (recommended)
nohup wine FPrintWIN/FPrint.exe /resident > /tmp/fprint.log 2>&1 &# Find and kill the process
pkill -f FPrint.exe
# Or find PID first
ps aux | grep FPrint.exe
kill <PID>FPrint works by monitoring a folder for command files. To send commands:
-
Create a command file in the
execute/folder:# Example: Get device info echo "I,1,______,_,__;0;80" > FPrintWIN/execute/cmd001.txt
-
FPrint processes it automatically and creates a result file in
execute-answer/ -
Read the result:
cat FPrintWIN/execute-answer/cmd001.txt
Important Notes:
- Command files must be
.txtfiles - After processing, responses appear in
execute-answer/with the same filename - If there are errors, error details will be in the answer file
# Get device information
echo "I,1,______,_,__;0;80" > FPrintWIN/execute/info.txt
cat FPrintWIN/execute-answer/info.txt
# Get last document number
echo "N,1,______,_,__;" > FPrintWIN/execute/lastdoc.txt
cat FPrintWIN/execute-answer/lastdoc.txt
# Open fiscal receipt
echo "48,1,______,_,__;1;1;1;0;OPERATOR001;" > FPrintWIN/execute/open.txt
cat FPrintWIN/execute-answer/open.txt
# Print text line
echo "54,1,______,_,__;Test Receipt;" > FPrintWIN/execute/print.txt
cat FPrintWIN/execute-answer/print.txt
# Close fiscal receipt
echo "56,1,______,_,__;" > FPrintWIN/execute/close.txt
cat FPrintWIN/execute-answer/close.txtCreate a helper script to send commands easily:
#!/bin/bash
# save as: fprint-send.sh
# Get the script's directory
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
COMMAND_DIR="$SCRIPT_DIR/FPrintWIN/execute"
RESULT_DIR="$SCRIPT_DIR/FPrintWIN/execute-answer"
# Generate unique filename
FILENAME="cmd_$(date +%s).txt"
# Write command
echo "$1" > "$COMMAND_DIR/$FILENAME"
echo "Command sent: $FILENAME"
echo "Waiting for response..."
# Wait for result
sleep 1
# Show result
if [ -f "$RESULT_DIR/$FILENAME" ]; then
echo "Response:"
cat "$RESULT_DIR/$FILENAME"
else
echo "No result yet, check manually in $RESULT_DIR/$FILENAME"
fiUsage:
chmod +x fprint-send.sh
./fprint-send.sh "I,1,______,_,__;0;80"Wine not found:
# Check installation
which wine
wine --version
# Reinstall if needed
brew reinstall wine-stableWine configuration:
# Open Wine configuration
winecfg
# Set Windows version to Windows 10
# Check drive mappings (C: should exist)FPrint won't start:
# Check for missing DLL errors
wine ~/.wine/drive_c/Program\ Files/Datecs/FPrint/FPrint.exe
# Install dependencies if needed
brew install winetricks
winetricks dotnet40
winetricks vcrun2019FPrint not processing files:
- Verify ExecutionFolder in config matches created folder
- Check file permissions (should be readable/writable)
- Check FPrint logs (if any) in FPrint directory
- Ensure FPrint is actually running:
ps aux | grep FPrint
Can't connect to printer:
# Test network connection
nc -zv YOUR_PRINTER_IP 4999
# Or use telnet
telnet YOUR_PRINTER_IP 4999Connection works but no response:
- Verify IP in config matches actual printer IP
- Check printer is powered on and in fiscal mode
- Verify printer network settings
- Check firewall (both macOS and printer)
- Confirm port 4999 is correct for your model
App won't start:
# Check if you have Python dependencies
pip3 list | grep rumps
# If missing, install:
pip3 install rumpsMonitor shows red/yellow when everything should be working:
-
Verify FPrint is running:
ps aux | grep FPrint.exe -
Verify printer connection:
nc -zv YOUR_PRINTER_IP 4999
-
Check monitor configuration:
cat ~/.config/fprint_monitor/config.json -
Ensure IP/port match your FPrint Settings Manager configuration
Monitor says "FPrint not found":
- Ensure repository is at:
~/Downloads/datecs-fprint-macos/ - Verify FPrintWIN folder exists with FPrint.exe
Monitor can start FPrint but shows yellow:
- Printer connection issue - check IP/port in monitor Settings
- Printer may be powered off or network unreachable
- Try pinging printer:
ping YOUR_PRINTER_IP
| What | Location |
|---|---|
| Repository | ~/Downloads/datecs-fprint-macos/ |
| FPrint executables | FPrintWIN/ |
| Settings Manager | FPrintWIN/FPrint_SettingsManager.exe |
| FPrint main | FPrintWIN/FPrint.exe |
| FPrint config | FPrintWIN/FPrint.ini, FPrintWIN/Settings.dat |
| Command files | FPrintWIN/execute/ |
| Result files | FPrintWIN/execute-answer/ |
| Chrome extension | chrome-extension/ |
| Monitor app (source) | monitor-app/unified_monitor.py |
| Monitor app (built) | monitor-app/dist/FPrintMonitor.app |
| Monitor app (installed) | /Applications/FPrintMonitor.app |
| Monitor config | ~/.config/fprint_monitor/config.json |
| Setup screenshots | screenshots/ |
| Electron app (experimental) | electron-app/ (not functional) |
| FPrint logs | /tmp/fprint.log (if using nohup) |
| Wine C: drive | ~/.wine/drive_c/ |
All Datecs fiscal printers supported by Windows FPrint work via Wine:
| Model Series | Status | Notes |
|---|---|---|
| DP-25MX | โ Tested | Fully working via Wine |
| DP-50X | โ Compatible | Should work (untested) |
| FP-2000 | โ Compatible | Should work (untested) |
| All Models | โ Compatible | If Windows FPrint supports it |
An incomplete Electron + React UI exists in the electron-app/ folder but is not functional and may never be completed. The current Wine-based solution with the monitor app provides all necessary functionality.
๐ See electron-app/README.md for details.
All documentation is contained in this README. For Electron app development docs, see:
- electron-app/README.md - Electron app status and info
- electron-app/CONTRIBUTING.md - Contributing guidelines
- electron-app/docs/ - Technical protocol documentation
The Wine-based solution is complete and working. The only area open for contributions is:
- The Electron app in
electron-app/is incomplete and experimental - Contributions are welcome but not prioritized
- See electron-app/CONTRIBUTING.md for development guidelines
- Please discuss in GitHub issues before investing time
Note: The main Wine-based solution (FPrint + Chrome extension + Monitor app) is production-ready and does not require additional development.
MIT License - see LICENSE file for details.
- Datecs for their fiscal printers and FPrint software
- Wine project for enabling Windows software on macOS
- Community for testing and contributions
- Issues: GitHub Issues for bugs and problems
- Discussions: GitHub Discussions for questions
- Wine Help: WineHQ Forums
- Datecs Support: Contact Datecs for printer-specific issues
# 1. Install Wine
brew install wine-stable
# 2. Clone this repository to Downloads folder
cd ~/Downloads
git clone https://github.com/bulgariamitko/datecs-fprint-macos.git
cd datecs-fprint-macos
# 3. Run Settings Manager (configure your printer)
wine FPrintWIN/FPrint_SettingsManager.exe
# Enter IP, port, model, serial, etc.
# Set Execution Folder to: FPrintWIN/execute
# Set Answer Folder to: FPrintWIN/execute-answer
# Save โ Close
# 4. Verify folders exist
ls -la FPrintWIN/execute/
ls -la FPrintWIN/execute-answer/
# 5. Start FPrint in background
nohup wine FPrintWIN/FPrint.exe /resident > /tmp/fprint.log 2>&1 &
# 6. Send test command
echo "I,1,______,_,__;0;80" > FPrintWIN/execute/test.txt
# 7. Check result
cat FPrintWIN/execute-answer/test.txtOptional but Recommended - Chrome Extension:
- Open Chrome โ
chrome://extensions/ - Enable Developer mode
- Load unpacked โ select
chrome-extension/folder - Configure path:
datecs-fprint-macos/FPrintWIN/execute - Now any downloaded
kasa*.txtfiles auto-move to execute folder!
Highly Recommended - Monitor App:
- Copy to Applications:
cp -r ~/Downloads/datecs-fprint-macos/monitor-app/dist/FPrintMonitor.app /Applications/ - Launch:
open /Applications/FPrintMonitor.app - Configure printer IP:PORT in Settings
- ๐ข = Ready to print | ๐ก = Partial failure | ๐ด = System down
- Only print when you see green circle!
That's it! FPrint software, Chrome extension, and monitor app included - complete solution! ๐
Questions? Problems? Open an issue and we'll help!
