Elkbledom
Home Assistant custom component for LED STRIP NAMED ELK- , MELK- , LEDBLE or XROCKER
Install / Use
/learn @dave-code-ruiz/ElkbledomREADME
ELK-BLEDOM Integration for Home Assistant
Support
If you find this integration useful, consider supporting the development:
<a href="https://www.buymeacoffee.com/davecoderuiz" target="_blank"> <img src="https://cdn.buymeacoffee.com/buttons/v2/default-yellow.png" alt="Buy Me A Coffee" height="60"> </a>Control your Bluetooth LED strips and bulbs directly from Home Assistant
Installation • Supported Devices • Features • Configuration • Troubleshooting
</div>Overview
This Home Assistant integration allows you to control Bluetooth Low Energy (BLE) LED strips, bulbs, and light bars that use the ELK-BLEDOM, MELK, LEDBLE, and similar protocols. These devices are commonly sold under various brands and controlled via mobile apps like:
- duoCo Strip (Play Store)
- Lotus Lantern (Play Store)
- Lotus Lamp X (Play Store)
- Happy Lighting
Supported Devices
This integration currently supports the following device models:
<table> <tr> <td width="50%">ELK Family
- ELK-BLEDOM
- ELK-BLEDOB
- ELK-BLEDDM
- ELK-BLE
- ELK-BTC
- ELK-BULB
- ELK-BULB2
- ELK-LAMPL
- MELK
- MELK-OA10
- MELK-OC10
- MELK-OF10
- MELK-OG10
- MELK-OA21
- LEDBLE
- LED-
- JACKYLED
- XROCKER
- DMRRBA-007
Note: These devices use specific Bluetooth UUIDs:
- Write UUID:
0000fff3-...or0000ffe1-...- Read UUID:
0000fff4-...or0000ffe2-...
Where to Buy
- Amazon LED Strips (Example)
- LED Light Bar (Example)
- MELK Strip (Example)
- ELK BTC Strip (Example)
- Search for "ELK-BLEDOM", "MELK LED", or "Bluetooth LED Strip" on your local Amazon
Installation
Method 1: HACS (Recommended)
- Open HACS in your Home Assistant
- Go to Integrations
- Search for "elkbledom" in HACS
- Click Download
- Restart Home Assistant
Method 2: Manual Installation
- Download the latest release from GitHub
- Extract and copy the
custom_components/elkbledomfolder to your Home Assistantconfig/custom_components/directory - Restart Home Assistant
Dependencies
System Requirements
This integration requires Bluetooth support on your Home Assistant installation. The integration uses:
- Home Assistant Bluetooth integration (built-in, enabled by default in recent versions)
- Python BLE libraries (automatically installed)
Optional: Manual Bluetooth Tools
If you want to manually test or troubleshoot Bluetooth connections, you can install gattool:
Debian/Ubuntu/Raspberry Pi OS:
sudo apt-get update
sudo apt-get install bluez bluez-tools
Fedora:
sudo dnf install bluez-deprecated
Arch Linux:
paru -S bluez-deprecated-tools
# or
yay -S bluez-deprecated-tools
Python Requirements
The integration automatically installs these dependencies:
bleak>=0.21.0
bleak-retry-connector>=3.1.0
home-assistant-bluetooth>=1.10.0
For development or manual installation, you can install them with:
pip install -r requirements.txt
Check Device Compatibility
Quick Compatibility Check
Your device is likely compatible if:
- Device name starts with:
ELK-BLE,MELK,LEDBLE, orXROCKER - Controlled by apps: duoCo Strip, Lotus Lantern, Lotus Lamp X, or Happy Lighting
- Has Bluetooth Low Energy (BLE) connectivity
Advanced Compatibility Check with gattool
If you want to verify compatibility manually, use gattool:
gatttool -I
Then connect to your device (replace XX:XX:XX:XX:XX:XX with your device's MAC address):
[LE]> connect XX:XX:XX:XX:XX:XX
Attempting to connect to XX:XX:XX:XX:XX:XX
Connection successful
[XX:XX:XX:XX:XX:XX][LE]> primary
attr handle: 0x0001, end grp handle: 0x0003 uuid: 00001800-0000-1000-8000-00805f9b34fb
attr handle: 0x0004, end grp handle: 0x0009 uuid: 0000fff0-0000-1000-8000-00805f9b34fb
[XX:XX:XX:XX:XX:XX][LE]> characteristics
handle: 0x0002, char properties: 0x12, char value handle: 0x0003, uuid: 00002a00-0000-1000-8000-00805f9b34fb
handle: 0x0005, char properties: 0x10, char value handle: 0x0006, uuid: 0000fff4-0000-1000-8000-00805f9b34fb
handle: 0x0008, char properties: 0x06, char value handle: 0x0009, uuid: 0000fff3-0000-1000-8000-00805f9b34fb
Check the UUIDs:
| UUID Pattern | Compatibility | Repository |
|--------------|---------------|------------|
| 0000fff3-... or 0000ffe1-... | Compatible | This repository |
| 0000ff01-... | Use different integration | lednetwf_ble |
| 0000ffd5-..., 0000ffd9-..., etc. | Use different integration | led_ble |
Using BTScan for Unsupported Devices
If your device isn't supported yet, you can help add support:
git clone https://github.com/dave-code-ruiz/elkbledom
cd elkbledom
pip install -r requirements.txt
python3 BTScan.py
This will scan for BLE devices and create a JSON file with technical information. Then:
- Create a new issue on GitHub
- Attach the generated JSON file
- Include device name, brand, and purchase link if available
For more advanced users, check out our BLE Sniffing Guide to help reverse-engineer the protocol.
Quick Start Guide
Step 1: Enable Bluetooth
Ensure Bluetooth is enabled on your Home Assistant device:
- Go to Settings → System → Hardware
- Verify Bluetooth is detected
- If not, check your hardware supports Bluetooth or add a USB Bluetooth adapter
Step 2: Install Integration
Follow the Installation instructions above.
Step 3: Add Your Device
- Go to Settings → Devices & Services → Integrations
- Click + Add Integration
- Search for "elkbledom"
- Select your device from the discovered list
- Watch your light toggle to confirm connection
- Click Submit
Step 4: Control Your Lights
Your LED device is now available as a light entity in Home Assistant!
Troubleshooting
Common Issues
1. Device Not Discovered
Problem: Your LED device doesn't appear in the discovered devices list.
Solutions:
- Ensure the device is powered on and within Bluetooth range (~10 meters)
- Disconnect the device from any mobile app
- Restart the Bluetooth service in Home Assistant
- Check if your device name starts with
ELK-BLE,MELK,LEDBLE, or similar - Manually scan for BLE devices using
bluetoothctlor the BTScan.py script
2. Connection Failed / Out of Slots Error
Problem:
BleakOutOfConnectionSlotsError: Failed to connect after 9 attempt(s):
No backend with an available connection slot that can reach address
Solutions:
- Only ONE device can connect to the LED strip at a time
- Close the mobile app completely (force stop on Android)
- Disconnect from
gatttoolif you used it for testing - Wait 30 seconds and try again
- Power cycle the LED strip
3. MELK Devices - Initialization Required
Problem: MELK devices don't respond to commands after setup.
Solution: MELK devices require initialization commands. Send these via gatttool (replace MAC address):
sudo gatttool -b XX:XX:XX:XX:XX:XX --char-write-req -a 0x0009 -n 7e0783
sudo gatttool -b XX:XX:XX:XX:XX:XX --char-write-req -a 0x0009 -n 7e0404
After sending these commands:
- Restart the LED strip (power off/on)
- Reload the integration in Home Assistant
- The device should now work normally
See Issue #11 for more details.
4. State Not Updating
Problem: Changes made via IR remote or mobile app don't reflect in Home Assistant.
Explanation: This is a known limitation. The integration doesn't support live state polling.
Workaround:
- Control the lights exclusively through Home Assistant
- Use HA automations instead of physical remotes
5. Interference with TV Remote or Other Devices
Problem: LED strip changes randomly when using TV remote or other IR devices.
Explanation: Some cheap LED controllers respond to generic IR signals.
Solution:
- Block the IR receiver on the LED controller (small piece of tape)
- Control exclusively via Bluetooth/Home Assistant
- Replace the controller with a better quality one
6. Slow Response / Disconnects
Problem: Lights are slow to respond or frequently disconnect.
Solutions:
- Reduce the disconnect delay in configuration (try 60 seconds)
- Move the Home Assistant device closer to the LED strip
- Check for Bluetooth interference (WiFi routers, microwaves, etc.)
- Use a USB Bluetooth adapter with better range
- Set disconnect delay to
0(never disc
