π A beautiful, feature-rich web application for monitoring your FNIRSI FNB58 USB Power Meter
Monitor voltage, current, power, and more in real-time through your web browser. Supports both USB and Bluetooth connectivity!
Live voltage, current, and power tracking with interactive charts
Trigger modes for protocol analysis |
D+/D- waveform oscilloscope |
FFT spectrum analyzer |
Detailed statistics and metrics |
Bluetooth scanner and device settings |
Record and review monitoring sessions |
- β‘ Real-time Monitoring - Live voltage, current, and power readings
- π Beautiful Charts - Interactive Chart.js graphs with zoom and pan
- π Dual-Mode Support - Connect via USB or Bluetooth
- π± Mobile-First - PWA ready, works great on phones and tablets
- π Dark Theme - Easy on the eyes, professional look
- π Session Recording - Start/stop recording with statistics
- πΎ Export Options - Export to CSV or JSON
- π Session History - View and analyze past sessions
- π Statistics - Min/max/avg calculations, energy & capacity tracking
- π΅ Bluetooth Support - Wireless monitoring from any device
- π WebSocket Updates - Real-time data streaming
- π± Progressive Web App - Install on home screen
- π¨ Responsive Design - Works on desktop, tablet, and mobile
Two ways to run:
- π³ Docker (Recommended) - Easy deployment, no dependencies
- π Python - Native installation
# Using Docker Compose
docker-compose up -d
# Or using Docker CLI
docker run -d -p 5000:5000 \
--device=/dev/bus/usb:/dev/bus/usb \
--privileged \
fnb58-monitorβ‘οΈ See DOCKER.md for complete Docker documentation
- Python 3.8 or higher
- FNIRSI FNB58 USB Power Meter
- macOS, Linux, or Windows
- Clone the repository
git clone https://github.com/RedThoroughbred/FNB58-MacOS.git
cd FNB58-MacOS- Create and activate virtual environment (recommended)
# Create virtual environment
python3 -m venv venv
# Activate it
# macOS/Linux:
source venv/bin/activate
# Windows:
venv\Scripts\activate- Install Python dependencies
pip install -r requirements.txt- For USB support on macOS/Linux, you may need libusb:
# macOS
brew install libusb
# Ubuntu/Debian
sudo apt-get install libusb-1.0-0-dev
# Fedora
sudo dnf install libusb-devel- Run the application
python start.py- Open your browser
http://localhost:5001
- Plug in your FNIRSI FNB58 via USB or turn on Bluetooth
- Click "Connect (Auto)" on the dashboard
- Auto mode will try Bluetooth first, then USB
- Or manually select USB or Bluetooth
- Start monitoring! Data will stream in real-time
- Connect your device (if not already connected)
- Click "Start Recording"
- Perform your test (charge phone, test power bank, etc.)
- Click "Stop Recording"
- Export or view the session in History
- Navigate to History page
- Click on any session to view details
- View charts and statistics
- Export to CSV or JSON
If you have the Bluetooth version of FNB58:
- Go to Settings page
- Click "Scan for Bluetooth Devices"
- Select your FNB58 from the list
- Save the MAC address
The app will remember your device and auto-connect next time!
On Linux, you may need to set up udev rules:
# Create udev rule
sudo tee /etc/udev/rules.d/90-fnirsi.rules << EOF
SUBSYSTEM=="usb", ATTRS{idVendor}=="0716", MODE="0666"
EOF
# Reload rules
sudo udevadm control --reload-rules
sudo udevadm trigger- 100Hz sampling rate (USB mode)
- 10Hz sampling rate (Bluetooth mode)
- Live charts with automatic scaling
- Min/max tracking for all metrics
- D+/D- voltages for protocol analysis
- Temperature monitoring
- CSV format - Compatible with Excel, Python, R
- JSON format - Full session data with metadata
- Timestamps - ISO 8601 format for easy parsing
- Energy consumption (Wh)
- Capacity (Ah/mAh)
- Min/Max/Average for all metrics
- Sample count and duration
fnirsi-web-monitor/
βββ app.py # Main Flask application
βββ config.py # Configuration
βββ requirements.txt # Python dependencies
βββ device/ # Device communication
β βββ usb_reader.py # USB HID communication
β βββ bluetooth_reader.py # Bluetooth LE communication
β βββ device_manager.py # Connection management
β βββ data_processor.py # Data analysis
βββ static/ # Frontend assets
β βββ css/
β βββ js/
β βββ manifest.json # PWA manifest
βββ templates/ # HTML templates
βββ base.html
βββ dashboard.html
βββ settings.html
βββ history.html
GET /api/status- Connection statusPOST /api/connect- Connect to devicePOST /api/disconnect- DisconnectGET /api/reading/latest- Latest readingGET /api/reading/recent- Recent data pointsGET /api/stats- Current statisticsPOST /api/recording/start- Start recordingPOST /api/recording/stop- Stop recordingGET /api/sessions- List saved sessionsGET /api/sessions/:id- Get specific sessionGET /api/scan-bluetooth- Scan for Bluetooth devices
connect- Client connecteddisconnect- Client disconnectednew_reading- New data from devicerequest_data- Request historical data
Contributions are welcome! This project is designed to be:
- Easy to understand - Clear code with comments
- Easy to extend - Modular architecture
- Easy to deploy - Minimal dependencies
- π± iOS/Android native apps
- π Battery testing presets
- π More chart types (heatmaps, 3D, etc.)
- π Multi-language support
- π Push notifications
- π§ Email alerts
- ποΈ Database support (PostgreSQL, etc.)
- Check USB cable is data-capable (not charge-only)
- Try a different USB port
- Check udev rules (Linux)
- Run with sudo (temporary test)
- Ensure device is in range
- Check Bluetooth is enabled on computer
- Pair device in OS Bluetooth settings first
- Scan for devices in Settings page
- Check WebSocket connection in browser console
- Refresh the page
- Check if device is connected
- Clear browser cache
- Run with appropriate permissions
- Set up udev rules (Linux)
- Check firewall settings
MIT License - feel free to use, modify, and distribute!
- baryluk - USB protocol reverse engineering (fnirsi-usb-power-data-logger)
- parkerlreed - Bluetooth protocol reverse engineering
- FNIRSI - For making awesome test equipment
Found a bug? Have a feature request? Open an issue!
Want to show off your setup? Share screenshots!
Made with β‘ for the FNIRSI FNB58 community





