-
Notifications
You must be signed in to change notification settings - Fork 0
Troubleshooting
github-actions[bot] edited this page Apr 26, 2026
·
1 revision
Common problems and how to fix them. Always start by raising the log level:
GMBOOP_LOG_LEVEL=debug npm startLogs go to stdout and (if configured) to GMBOOP_LOG_FILE with rotation.
| Symptom | Likely cause | Fix |
|---|---|---|
EADDRINUSE :::8080 |
Another process bound to the port |
sudo ss -ltnp | grep 8080 then kill it, or change GMBOOP_SERVER_PORT
|
SQLITE_BUSY / database is locked
|
Stale lock file or another instance | Stop all services (systemctl stop gmboop, pm2 stop all, docker compose down) and retry |
Cannot find module 'better-sqlite3' |
Native build for current Node missing | npm rebuild better-sqlite3 |
Migration failed |
Manual schema edits or skipped migration | Restore the latest backup from BackupScheduler and rerun npm run migrate
|
- Confirm Linux sees it:
aconnect -l. - Add the user to the audio group:
sudo usermod -aG audio $USER, then log out/in. - Hot-plug in the UI: click Refresh or send
device_refresh. - Some USB hubs are flaky on the Pi — try the Pi's built-in ports.
- BlueZ must be running:
systemctl status bluetooth. - The runtime user must be allowed on the BlueZ D-Bus interface; the installer adds the necessary polkit rule.
-
GMBOOP_BLE_ENABLED=truemust be set. - After pairing once, reconnect with
bluetooth_connect(notbluetooth_pair). - See SysEx identity issues in
docs/SYSEX_IDENTITY.md.
- UART overlay enabled in
/boot/firmware/config.txt? Seedocs/GPIO_MIDI_WIRING.md. - Bluetooth disabled or moved off the primary UART? On Pi 3 it shares pins with
mini-uart. - Wiring follows the opto-isolator schema (no direct 5 V into the Pi)?
-
GMBOOP_SERIAL_ENABLED=trueand the right baud (31250)? - Verify with
cat /dev/serial0while a connected keyboard plays — bytes should appear.
- The runtime user must be in the
gpiogroup. -
pigpiotypically requires root or thecap_sys_rawiocapability — the installer handles this. - Don't run two LED drivers on the same pin (e.g. don't combine
GpioStripDriverandGpioLedDriveron a shared pin).
- Ensure the input device is recognised:
arecord -l. - Use a near-field microphone; ambient noise tanks the confidence score.
- Increase the measurement count for noisy environments.
- Lower the detection threshold if onsets are missed; raise it if false positives are detected.
- Source:
src/audio/DelayCalibrator.js.
- Check that each connected instrument has accurate note range and polyphony in the Instruments panel — bad capabilities lead to bad scores.
- Use the preview button before applying so you hear it first.
- Force a manual override on a channel; the routing is editable.
- Detailed scoring rules in
docs/AUTO_ASSIGNMENT.md.
- The server sends heartbeats every ~30 s; clients that miss two heartbeats are dropped. Reverse proxies must allow long-lived WebSocket connections (e.g. nginx
proxy_read_timeout 3600). - If
GMBOOP_API_TOKENis set, the connection URL must include?token=….
- Hard reload (
Ctrl+Shift+R) to bypass the browser cache. - Run
npm run buildand restart if you serve the production bundle.
-
CHANGELOG.md— known fixed issues per release. - GitHub Issues — search for the error message before opening a new one.
-
docs/files referenced from each wiki page above for deep-dive material.
Général Midi Boop · MIT License · Sources tracked in wiki/ — edits synced on push to main.
Getting Started
Interface — Pages & Modals
- Interface-Main-Page
- Interface-Instrument-Creation
- Interface-Virtual-Piano
- Interface-Loop-Manager
- Interface-Lighting-Control
- Interface-Playlist
- Interface-Microphone
- Interface-Settings
- Interface-Hand-Management
Core Concepts
Reference
Operations
Community