An Android application designed to discover, connect to, and monitor Logitech Bluetooth Low Energy (BLE) mice, with a focus on Pebble series devices.
- Advanced BLE Scanning: Specifically filtered to discover Logitech peripherals using Manufacturer ID (
0x046D) and HID Service UUIDs. - Auto-Discovery: Real-time scanning with RSSI (Signal Strength) monitoring.
- Pebble Support: Specialized logic to identify and prioritize Logitech Pebble series mice.
- Battery Monitoring: Connects to the standard Battery Service (
0x180F) to read and display the current battery percentage. - Manufacturer Data Parsing: Extracts and displays raw manufacturer-specific data for technical analysis.
- Modern UI: Built entirely with Jetpack Compose featuring Material 3 design, including dynamic status indicators for Bluetooth and Location services.
- Language: Kotlin
- UI Framework: Jetpack Compose (Material 3)
- Dependency Injection: Hilt
- Architecture: MVVM (Model-View-ViewModel)
- Asynchronous Programming: Kotlin Coroutines & Flow
- Bluetooth: Android Bluetooth LE API
The project follows clean architecture principles:
- Presentation: Compose UI and Hilt-powered ViewModels.
- Domain: Business logic, repository interfaces, and data models.
- Data: Implementation of repositories handling BLE scanning and GATT communication.
- Android device running Android 8.0 (API 26) or higher.
- Bluetooth and Location permissions (handled within the app).
- A Logitech BLE-compatible mouse (e.g., Logitech Pebble M350/i345).
- Clone the repository:
git clone https://github.com/mukesh-ms/AndroidBLELogitechMouse.git
- Open in Android Studio Ladybug or newer.
- Sync Gradle and run on a physical device (BLE scanning does not work on emulators).
To find your Logitech Pebble mouse, ensure it is in pairing mode (the LED on the bottom should be blinking rapidly) before starting the discovery in the app.
Created for educational purposes and peripheral experimentation.



