Cross-platform .NET MAUI apps for discovering, controlling, and chatting with
Disney Droid Depot droids via Bluetooth Low Energy (BLE).
This repo contains two apps and a shared BLE library:
| App | Platforms | What it does |
|---|---|---|
| DisneyDroids | Android, iOS | Manual droid control — scan, connect, drive, play sounds |
| DisneyDroids.MacOS | macOS | AI-powered droid companion — chat with your droid, webcam vision |
The mobile app gives you direct, hands-on control of your droid.
- Scan for nearby Disney droids over Bluetooth Low Energy
- Live RSSI signal strength display
- Automatic droid type detection from BLE manufacturer data
- R-Series (R2-D2, C1-10P, etc.)
- BB-Series (BB-8)
- BD-Series (BD-1)
- D-Pad layout for forward, backward, left, and right driving
- Immediate stop command
- Adjustable motor power (32–255)
- Configurable movement duration (100–2000 ms)
- Rotate head left and right
- Center head to neutral position
- Automatically disabled for BB-Series and BD-Series droids
- 9 themed sound banks: General, Droid Depot, Resistance, Dok-Ondar's, First Order, Detector, Activation, Blaster, and Thruster
- Cycle through tracks within a sound bank
- Adjustable volume control (0–100%)
- One-tap connect with 30-second timeout
- Graceful disconnect
- Live connection status indicator
- Automatic heartbeat keep-alive (10-second interval)
- Disconnect detection via reactive observables
- Built-in step-by-step guide for powering on R-Series and BB-Series droids
- Tips for Bluetooth pairing, range, and troubleshooting
The macOS app turns your droid into an AI-powered companion. Instead of manual controls, you chat with your droid in natural language and it acts on your commands.
- Conversational interface powered by GitHub Copilot
- Authenticate via GitHub device flow (opens browser automatically)
- The AI stays in character — terse, playful, and beepy
- Chat history with reset support
The AI has access to all droid capabilities as tools and will use them in response to your messages:
- Drive forward, backward, turn left/right
- Rotate head (R-Series)
- Play sounds from any of the 9 sound banks
- Adjust volume
- Emergency stop
- The droid can "see" through your Mac's webcam
- Ask the droid to look around and it will capture a frame and describe what it sees
- Uses native AVFoundation for low-latency 640x480 JPEG capture
- Camera starts on demand and auto-manages its lifecycle
- Same BLE scanning as the mobile app
- Select a droid from the scan list and navigate to the chat interface
| Project | Description |
|---|---|
| DisneyDroids.Ble | Reusable BLE library implementing Disney's proprietary droid command protocol. Targets net10.0, Android, iOS, and macOS. |
| DisneyDroids | .NET MAUI mobile app with manual droid controls for Android and iOS |
| DisneyDroids.MacOS | .NET MAUI macOS app with AI chat, tool-use, and webcam vision |
Patterns & Practices: MVVM · Dependency Injection · Reactive Streams · Shell Navigation · Microsoft.Extensions.AI
| Library | Version | Used By | Description |
|---|---|---|---|
| Shiny.BluetoothLE | 4.1.0-beta | Ble | Cross-platform BLE client for scanning, connecting, and communicating with peripherals |
| Shiny.Hosting.Maui | 4.1.0-beta | Mobile | MAUI hosting integration for Shiny services and dependency injection |
| Shiny.Maui.Shell | 5.0.0 | Mobile, macOS | Shell navigation extensions with source-generated routing |
| CommunityToolkit.Mvvm | 8.4.2 | Mobile, macOS | Lightweight MVVM framework with source generators for ObservableObject and RelayCommand |
| Microsoft.Extensions.AI | 10.4.0 | macOS | Unified AI abstractions for chat clients, tool calling, and function invocation |
| Platform.Maui.MacOS | 0.3.0 | macOS | Enables .NET MAUI apps to run natively on macOS |
| System.Reactive | 6.0.1 | Ble | Reactive Extensions (Rx) for composing asynchronous event-based streams |
| Microsoft.Extensions.Logging.Debug | 10.0.5+ | Mobile, macOS | Debug output logging provider for development diagnostics |
| Platform | Minimum Version |
|---|---|
| Android | API 23+ |
| iOS | 15.0+ |
| macOS | 14.0+ |
Target Framework: .NET 10.0
This project is licensed under the MIT License.