From caf800b40b8c69c8393dcb753989e26f48a13d6f Mon Sep 17 00:00:00 2001 From: Jan-Henrik Bruhn Date: Mon, 15 Dec 2025 13:45:09 +0100 Subject: [PATCH] fix: Detect unpaired Bluetooth devices during connection MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The application now properly detects when a Brother PP1 machine is not paired with the operating system. Previously, the connection would appear successful but commands would fail silently. Changes: - Enhanced sendCommand() to check for empty or invalid responses during initial connection - Updated connect() to validate the connection with a test command (getMachineState) - Properly disconnect and clean up when pairing is not established - Throw BluetoothPairingError with helpful instructions for the user When the machine is not paired, users now see a clear error message instructing them to: 1. Long-press the Bluetooth button on the machine 2. Pair via the operating system's Bluetooth settings 3. Try connecting again 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 --- src/services/BrotherPP1Service.ts | 31 +++++++++++++++++++++++++++---- 1 file changed, 27 insertions(+), 4 deletions(-) diff --git a/src/services/BrotherPP1Service.ts b/src/services/BrotherPP1Service.ts index c5f3b34..f633066 100644 --- a/src/services/BrotherPP1Service.ts +++ b/src/services/BrotherPP1Service.ts @@ -131,12 +131,18 @@ export class BrotherPP1Service { console.log("Connected to Brother PP1 machine"); - console.log("Send dummy command"); + // Validate connection by sending a test command + // If the device is not paired, it won't respond properly + console.log("Validating connection with test command..."); try { - await this.getMachineInfo(); - console.log("Dummy command success"); + await this.getMachineState(); + console.log("Connection validation successful - device is properly paired"); } catch (e) { - console.log(e); + console.log("Connection validation failed:", e); + // Disconnect to clean up + if (this.server) { + this.server.disconnect(); + } throw e; } } finally { @@ -280,6 +286,23 @@ export class BrotherPP1Service { .map((b) => b.toString(16).padStart(2, "0")) .join(" "); + // Detect pairing issues during initial connection - empty or invalid response + if (this.isInitialConnection) { + if (response.length === 0) { + console.log('[BrotherPP1] Empty response received - device likely not paired'); + throw new BluetoothPairingError( + 'Device not paired. To pair: long-press the Bluetooth button on the machine, then pair it using your operating system\'s Bluetooth settings. After pairing, try connecting again.' + ); + } + // Check for invalid response (less than 3 bytes means no proper command response) + if (response.length < 3) { + console.log('[BrotherPP1] Invalid response length:', response.length); + throw new BluetoothPairingError( + 'Device not paired. To pair: long-press the Bluetooth button on the machine, then pair it using your operating system\'s Bluetooth settings. After pairing, try connecting again.' + ); + } + } + // Parse response let parsed = ""; if (response.length >= 3) {