Skip to content

Commit fc2953f

Browse files
Add Marshall BLE integration and rename files
Replace the generic integration_blueprint with a new "marshall" Home Assistant integration for Marshall Bluetooth speakers. Adds BLE client, config flow, constants, coordinator, entity/data models, platform implementations (binary_sensor and others), manifest, translations, README and CHANGELOG. Removes the old blueprint files and updates configuration logging and requirements. This commit introduces the initial Marshall BLE integration implementation and setup for device discovery, notifications, reads/writes, and basic entity support.
1 parent 70184df commit fc2953f

29 files changed

Lines changed: 1696 additions & 527 deletions

CHANGELOG.md

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
# Changelog
2+
3+
All notable changes to this project will be documented in this file.
4+
5+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7+
8+
## [0.1.0] - 2026-02-19
9+
10+
### Added
11+
- Initial release of Marshall Bluetooth Speakers Home Assistant integration
12+
- **Media Player Platform**
13+
- Play/pause/next/previous track controls
14+
- Volume control with real-time feedback (0-32 range)
15+
- Media metadata display (track title, artist, album)
16+
- Audio source selection (Bluetooth, Aux, RCA)
17+
- **Number Platform**
18+
- LED brightness control (0-35 range)
19+
- **Select Platform**
20+
- Audio source selector (model-dependent: Bluetooth, Aux, RCA)
21+
- EQ preset selector (Stanmore II only: Flat, Bright, Warm, Voice)
22+
- **Sensor Platform**
23+
- Device name sensor
24+
- Model name sensor
25+
- Serial number sensor
26+
- Firmware version sensor
27+
- Hardware version sensor
28+
- Volume level sensor
29+
- Audio source sensor
30+
- Play status sensor
31+
- **Binary Sensor Platform**
32+
- Connection status binary sensor
33+
- **Device Support**
34+
- Acton II model support
35+
- Stanmore II model support
36+
- Extensible model configuration system
37+
- **BLE Integration**
38+
- Bluetooth Low Energy connectivity
39+
- Automatic device discovery
40+
- Real-time status updates via BLE notifications
41+
- **Configuration Flow**
42+
- User-friendly setup wizard
43+
- Automatic device discovery
44+
- Manual device configuration option
45+
- Device confirmation step for security
46+
- **Developer Tools**
47+
- Setup script for development environment
48+
- Linting with ruff
49+
- Development helper scripts
50+
- HACS integration ready
51+
52+
### Technical Details
53+
- Bluetooth service UUID: `0000fe8f-0000-1000-8000-00805f9b34fb`
54+
- IoT class: `local_push`
55+
- Config flow enabled
56+
- Bluetooth dependency integration
57+
58+
[0.1.0]: https://github.com/elrobertocarlos/marshall_bluetooth_speaker/releases/tag/v0.1.0

README.md

Lines changed: 174 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -1,46 +1,174 @@
1-
# Notice
2-
3-
The component and platforms in this repository are not meant to be used by a
4-
user, but as a "blueprint" that custom component developers can build
5-
upon, to make more awesome stuff.
6-
7-
HAVE FUN! 😎
8-
9-
## Why?
10-
11-
This is simple, by having custom_components look (README + structure) the same
12-
it is easier for developers to help each other and for users to start using them.
13-
14-
If you are a developer and you want to add things to this "blueprint" that you think more
15-
developers will have use for, please open a PR to add it :)
16-
17-
## What?
18-
19-
This repository contains multiple files, here is a overview:
20-
21-
File | Purpose | Documentation
22-
-- | -- | --
23-
`.devcontainer.json` | Used for development/testing with Visual Studio Code. | [Documentation](https://code.visualstudio.com/docs/remote/containers)
24-
`.github/ISSUE_TEMPLATE/*.yml` | Templates for the issue tracker | [Documentation](https://help.github.com/en/github/building-a-strong-community/configuring-issue-templates-for-your-repository)
25-
`custom_components/integration_blueprint/*` | Integration files, this is where everything happens. | [Documentation](https://developers.home-assistant.io/docs/creating_component_index)
26-
`CONTRIBUTING.md` | Guidelines on how to contribute. | [Documentation](https://help.github.com/en/github/building-a-strong-community/setting-guidelines-for-repository-contributors)
27-
`LICENSE` | The license file for the project. | [Documentation](https://help.github.com/en/github/creating-cloning-and-archiving-repositories/licensing-a-repository)
28-
`README.md` | The file you are reading now, should contain info about the integration, installation and configuration instructions. | [Documentation](https://help.github.com/en/github/writing-on-github/basic-writing-and-formatting-syntax)
29-
`requirements.txt` | Python packages used for development/lint/testing this integration. | [Documentation](https://pip.pypa.io/en/stable/user_guide/#requirements-files)
30-
31-
## How?
32-
33-
1. Create a new repository in GitHub, using this repository as a template by clicking the "Use this template" button in the GitHub UI.
34-
1. Open your new repository in Visual Studio Code devcontainer (Preferably with the "`Dev Containers: Clone Repository in Named Container Volume...`" option).
35-
1. Rename all instances of the `integration_blueprint` to `custom_components/<your_integration_domain>` (e.g. `custom_components/awesome_integration`).
36-
1. Rename all instances of the `Integration Blueprint` to `<Your Integration Name>` (e.g. `Awesome Integration`).
37-
1. Run the `scripts/develop` to start HA and test out your new integration.
38-
39-
## Next steps
40-
41-
These are some next steps you may want to look into:
42-
- Add tests to your integration, [`pytest-homeassistant-custom-component`](https://github.com/MatthewFlamm/pytest-homeassistant-custom-component) can help you get started.
43-
- Add brand images (logo/icon) to https://github.com/home-assistant/brands.
44-
- Create your first release.
45-
- Share your integration on the [Home Assistant Forum](https://community.home-assistant.io/).
46-
- Submit your integration to [HACS](https://hacs.xyz/docs/publish/start).
1+
# Marshall Bluetooth Speakers - Home Assistant Integration
2+
3+
A Home Assistant integration for controlling Marshall Bluetooth speakers over BLE (Bluetooth Low Energy).
4+
5+
## Features
6+
7+
- 🔊 **Media Player Control**: Play, pause, next, previous track controls
8+
- 🔈 **Volume Control**: Adjust speaker volume with real-time feedback
9+
- 💡 **LED Brightness**: Control speaker LED brightness (0-35 range)
10+
- 🎵 **Audio Source Selection**: Switch between Bluetooth, Aux, and RCA inputs (model-dependent)
11+
- 🎧 **EQ Presets**: Select equalizer presets - Flat, Bright, Warm, Voice (Stanmore II only)
12+
- 📊 **Media Metadata**: Display track title, artist, and album information
13+
- 🔌 **Connection Status**: Track device connectivity
14+
- 🏷️ **Device Information**: Model, serial number, firmware, and hardware details
15+
- 🎯 **Multi-Model Support**: Acton II, Stanmore II, and extensible for additional models
16+
17+
## Supported Devices
18+
19+
| Model | Features |
20+
|-------|----------|
21+
| **Acton II** | Volume, LED Brightness, Audio Source (Bluetooth/Aux), Media Controls, Media Info |
22+
| **Stanmore II** | Volume, LED Brightness, Audio Source (Bluetooth/Aux/RCA), EQ Presets, Media Controls, Media Info |
23+
24+
## Installation
25+
26+
### HACS (Recommended)
27+
28+
1. Open Home Assistant and go to **Settings****Devices & Services****Custom repositories**
29+
2. Add this repository URL: `https://github.com/elrobertocarlos/marshall_bluetooth_speaker`
30+
3. Search for "Marshall Bluetooth Speakers" in HACS and install
31+
32+
### Manual Installation
33+
34+
1. Copy the `custom_components/marshall` folder to your Home Assistant `custom_components` directory
35+
2. Restart Home Assistant
36+
3. Go to **Settings****Devices & Services****Create Integration**
37+
4. Search for "Marshall Bluetooth Speakers" and select it
38+
39+
## Configuration
40+
41+
### Discovery
42+
43+
The integration will automatically discover nearby Marshall speakers via Bluetooth:
44+
45+
1. Go to **Settings****Devices & Services**
46+
2. Look for "Discovered" section showing your Marshall speaker
47+
3. Click "Add" to add the integration
48+
4. Confirm the device when prompted (prevents accidental pairing)
49+
50+
### Manual Setup
51+
52+
If auto-discovery doesn't work:
53+
54+
1. Open **Settings****Devices & Services****Create Integration**
55+
2. Search for "Marshall Bluetooth Speakers"
56+
3. Select and configure (will prompt for device address)
57+
58+
## Entities
59+
60+
### Media Player
61+
- **Play/Pause/Next/Previous**: Full playback control
62+
- **Media Title**: Shows current track - artist (album)
63+
- **Source Selection**: Switch between available audio inputs
64+
- **Volume**: Adjustable via slider (0-32)
65+
66+
### Numbers
67+
- **LED Brightness**: Adjustable LED brightness (0-35)
68+
69+
### Selectors
70+
- **Audio Source**: Bluetooth, Aux, RCA (model-dependent)
71+
- **EQ Preset**: Flat, Bright, Warm, Voice (Stanmore II only)
72+
73+
### Sensors (Diagnostic Category)
74+
- **Device Name**: Speaker name from device
75+
- **Model**: Device model name
76+
- **Serial Number**: Device serial number
77+
- **Firmware Version**: Current firmware version
78+
- **Hardware Version**: Hardware revision
79+
- **Volume Level**: Current volume setting (0-32)
80+
- **Audio Source**: Currently active audio source
81+
- **Play Status**: Current playback state (playing/paused/stopped)
82+
83+
### Binary Sensors (Diagnostic Category)
84+
- **Connected**: Speaker connection status
85+
86+
## Usage Examples
87+
88+
### Toggle Playback
89+
```yaml
90+
service: media_player.toggle
91+
target:
92+
entity_id: media_player.acton_ii
93+
```
94+
95+
### Change Volume
96+
```yaml
97+
service: media_player.volume_set
98+
target:
99+
entity_id: media_player.acton_ii
100+
data:
101+
volume_level: 0.5
102+
```
103+
104+
### Switch Audio Source
105+
```yaml
106+
service: select.select_option
107+
target:
108+
entity_id: select.acton_ii_source
109+
data:
110+
option: "Aux"
111+
```
112+
113+
### Set EQ Preset (Stanmore II)
114+
```yaml
115+
service: select.select_option
116+
target:
117+
entity_id: select.stanmore_ii_eq_preset
118+
data:
119+
option: "Bright"
120+
```
121+
122+
### Adjust LED Brightness
123+
```yaml
124+
service: number.set_value
125+
target:
126+
entity_id: number.acton_ii_led_brightness
127+
data:
128+
value: 20
129+
```
130+
131+
## Troubleshooting
132+
133+
### Device Not Discovered
134+
- Ensure the speaker is powered on and in Bluetooth pairing mode
135+
- Check that your Home Assistant device has Bluetooth capability
136+
- Try rebooting Home Assistant
137+
138+
### Connection Timeouts
139+
- Move the speaker closer to your Home Assistant device
140+
- Reduce interference from other Bluetooth devices
141+
- Restart the speaker
142+
143+
### Volume/Source Not Changing
144+
- Ensure the characteristic is writable
145+
- Check the device is responding to commands (LED should blink)
146+
- Verify the speaker model supports the feature
147+
148+
### Missing EQ Preset Select
149+
- This is only available on Stanmore II models
150+
- Check the device model in the entity details
151+
152+
## Contributing
153+
154+
Contributions are welcome! Please open an issue or submit a PR for:
155+
- Additional Marshall speaker models
156+
- Bug fixes
157+
- Feature improvements
158+
- Documentation updates
159+
160+
## License
161+
162+
This project is licensed under the Apache License 2.0. See the [LICENSE](LICENSE) file for details.
163+
164+
## Disclaimer
165+
166+
This is an unofficial integration and is not affiliated with Marshall Amplification plc.
167+
168+
## Credits
169+
170+
This integration was developed by reverse-engineering the Marshall Bluetooth protocol and is built upon research and insights from:
171+
172+
- [rabbit-aaron/marshall-stanmore-2](https://github.com/rabbit-aaron/marshall-stanmore-2) - Protocol analysis and characteristic research for Marshall speakers
173+
174+
Developed for controlling Marshall speakers via BLE without requiring official apps.

config/configuration.yaml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,4 +9,5 @@ homeassistant:
99
logger:
1010
default: info
1111
logs:
12-
custom_components.integration_blueprint: debug
12+
custom_components.marshall: debug
13+
homeassistant.components.bluetooth: debug

custom_components/integration_blueprint/api.py

Lines changed: 0 additions & 101 deletions
This file was deleted.

0 commit comments

Comments
 (0)