Controller Software for the Brother PP-1 SKiTCH embroidery machine.
Find a file
Jan-Henrik Bruhn 8ee7d0ce7b Add Bluetooth pairing error detection and automatic disconnect handling
Detect when device is not paired at OS level and handle automatic disconnections. The app now properly updates UI state when the device is disconnected by the OS.

Changes:
- Add BluetoothPairingError custom error class in BrotherPP1Service
- Track isInitialConnection state to differentiate pairing issues from disconnects
- Detect pairing issues in sendCommand() only during initial connection
- Add onDisconnect() subscription method to BrotherPP1Service
- Listen for 'gattserverdisconnected' events and update state automatically
- Add isPairingError state to useBrotherMachine hook
- Display pairing errors with blue info styling instead of red error styling
- Include step-by-step pairing instructions: long-press Bluetooth button on machine, then pair in OS settings
- Automatically reset connection state when device disconnects

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-07 13:49:34 +01:00
.claude Fix build and lint errors, refactor embroidery constants 2025-12-06 23:55:10 +01:00
public Add Vite plugin to download Python wheels from PyPI during build 2025-12-07 13:32:15 +01:00
src Add Bluetooth pairing error detection and automatic disconnect handling 2025-12-07 13:49:34 +01:00
.gitignore Migrate to Tailwind CSS and fix canvas zoom issues 2025-12-05 23:25:55 +01:00
eslint.config.js initial 2025-11-30 22:18:14 +01:00
index.html initial 2025-11-30 22:18:14 +01:00
package-lock.json Migrate to official @types/web-bluetooth package 2025-12-07 12:18:27 +01:00
package.json Migrate to official @types/web-bluetooth package 2025-12-07 12:18:27 +01:00
QUICK_UI_IMPROVEMENTS.md Implement comprehensive UI/UX improvements 2025-12-06 13:15:51 +01:00
README.md initial 2025-11-30 22:18:14 +01:00
tailwind.config.js Implement comprehensive dark mode support and improve pattern visibility 2025-12-06 20:12:46 +01:00
tsconfig.app.json Migrate to official @types/web-bluetooth package 2025-12-07 12:18:27 +01:00
tsconfig.json initial 2025-11-30 22:18:14 +01:00
tsconfig.node.json initial 2025-11-30 22:18:14 +01:00
UI_BEFORE_AFTER_EXAMPLES.md Implement comprehensive UI/UX improvements 2025-12-06 13:15:51 +01:00
UI_DESIGN_ANALYSIS.md Implement comprehensive UI/UX improvements 2025-12-06 13:15:51 +01:00
UI_IMPROVEMENTS.md Fix PEN encoding and improve UI layout 2025-12-06 12:56:27 +01:00
UI_IMPROVEMENTS_IMPLEMENTED.md Implement comprehensive UI/UX improvements 2025-12-06 13:15:51 +01:00
UI_IMPROVEMENTS_SUMMARY.md Implement comprehensive UI/UX improvements 2025-12-06 13:15:51 +01:00
vite.config.ts Fix lint errors in Vite config and MachineConnection 2025-12-07 13:35:02 +01:00

Brother Embroidery Machine Web Controller

A modern web application for controlling Brother embroidery machines via WebBluetooth.

Features

  • WebBluetooth Connection: Connect directly to Brother PP1 embroidery machines from your browser
  • Pattern Upload: Load and upload PEN format embroidery files
  • Pattern Visualization: Preview embroidery patterns on an interactive canvas with color information
  • Real-time Monitoring: Monitor sewing progress, position, and status in real-time
  • Machine Control: Start mask trace, start sewing, and manage patterns

Requirements

  • Modern browser with WebBluetooth support (Chrome, Edge, Opera)
  • HTTPS connection (required for WebBluetooth API)
  • Brother PP1 compatible embroidery machine with BLE

Getting Started

Installation

npm install

Development

npm run dev

The application will be available at http://localhost:5173

Note: WebBluetooth requires HTTPS. For local development, you can use:

  • localhost (works with HTTP)
  • A reverse proxy with SSL
  • Vite's HTTPS mode: npm run dev -- --https

Build for Production

npm run build

The built files will be in the dist directory.

Preview Production Build

npm run preview

Usage

  1. Connect to Machine

    • Click "Connect to Machine"
    • Select your Brother embroidery machine from the browser's Bluetooth device picker
    • Machine information and status will be displayed
  2. Load Pattern

    • Click "Choose PEN File" and select a .pen embroidery file
    • Pattern details and preview will be shown on the canvas
    • Different colors are displayed in the preview
  3. Upload to Machine

    • Click "Upload to Machine" to transfer the pattern
    • Upload progress will be shown
    • Pattern information will be retrieved from the machine
  4. Start Mask Trace (optional)

    • Click "Start Mask Trace" to trace the pattern outline
    • Confirm on the machine when prompted
  5. Start Sewing

    • Click "Start Sewing" to begin the embroidery process
    • Real-time progress, position, and status will be displayed
    • Follow machine prompts for color changes
  6. Monitor Progress

    • View current stitch count and completion percentage
    • See real-time needle position
    • Track elapsed time

Project Structure

web/
├── src/
│   ├── components/       # React components
│   │   ├── MachineConnection.tsx
│   │   ├── FileUpload.tsx
│   │   ├── PatternCanvas.tsx
│   │   └── ProgressMonitor.tsx
│   ├── hooks/           # Custom React hooks
│   │   └── useBrotherMachine.ts
│   ├── services/        # BLE communication
│   │   └── BrotherPP1Service.ts
│   ├── types/           # TypeScript types
│   │   └── machine.ts
│   ├── utils/           # Utility functions
│   │   └── penParser.ts
│   ├── App.tsx          # Main application component
│   ├── App.css          # Application styles
│   └── main.tsx         # Entry point
├── public/              # Static assets
├── package.json
├── tsconfig.json
└── vite.config.ts

Technology Stack

  • React 18: UI framework
  • TypeScript: Type safety
  • Vite: Build tool and dev server
  • WebBluetooth API: BLE communication
  • HTML5 Canvas: Pattern visualization

Protocol

The application implements the Brother PP1 BLE protocol:

  • Service UUID: a76eb9e0-f3ac-4990-84cf-3a94d2426b2b
  • Write Characteristic: a76eb9e2-f3ac-4990-84cf-3a94d2426b2b
  • Read Characteristic: a76eb9e1-f3ac-4990-84cf-3a94d2426b2b

See ../emulator/PROTOCOL.md for detailed protocol documentation.

PEN Format

The application supports PEN format embroidery files:

  • Binary format with 4-byte stitch records
  • Coordinates in 0.1mm units
  • Supports multiple colors and color changes
  • Includes jump stitches and flags

Browser Compatibility

WebBluetooth is supported in:

  • Chrome 56+
  • Edge 79+
  • Opera 43+

Not supported in:

  • Firefox (no WebBluetooth support)
  • Safari (no WebBluetooth support)

License

MIT