Add Ledvance Smart+ BT Bluetooth

Is it possible to add the Ledvance Smart+ BT?

SMART+ Classic filament lamps with Bluetooth technology | LEDVANCE

How can I help with this? ESPhome blutooth proxy is installed and a bulbe is also there.

5 Likes

I´d like to do the same as there are quite a few Smart+ manufacturers now, so somewhat a standard in bluetooth bulbs.

2 Likes

Also looking for a solution on this - any progress so far?

1 Like

An integration for this would be really awesome. These bulbs aren’t the best on the planet, but they’re excellent value for money.

3 Likes

Hello
Bump here
I also bought one of this to test

I have a raspberry pi 4, extra bluetooth asus dongle and esp home to test, if it helps

Is it predicted to have an integration for this,

Local only please

it works?
LDV BT dont work with smartthings app !?!

Update from my side:
Still have no breakthrough, but tried the following. Bought an old iPhone (:-D) to flash the Bluetooth lamp to the HomeKit compatible firmware. After that HA recognizes the lamp immediately and automatically. However, a PIN is needed for the connection setup, which is unfortunately not included with my lamp (if - unlike with me - “works with HomeKit” is written on the package, the pin should be enclosed).
→ I am now the owner of a useless old iPhone, but the lamp still does not work via HA - possibly the approach helps one or the other, however…

Still looking forward to smart ways/tips for integration.

Could you describe the steps how you came there, please? I tryed the same but I stucked already on the step “activate”. The ledvance App show “no Network found”

I think these “Ledvance Smart+” are the same as the “Osram Smart+” and “Sylvania Smart+” bulbs

My Sylvania Smart+ is recognized by my pixel phone as

[Destination BD_ADDR: Ledvance_22:c6:ac (f0:d1:b8:22:c6:ac)]
[Destination Device Name: SYLVANIA A19 T-C-MC6AC]

From my explorations using bluez gatttool:

Attempting to connect to F0:D1:B8:22:C6:AC
Connection successful
Indication   handle = 0x0029 value: 01 00 ff 00
[F0:D1:B8:22:C6:AC][LE]> primary
attr handle: 0x0001, end grp handle: 0x0007 uuid: 00001800-0000-1000-8000-00805f9b34fb
attr handle: 0x0008, end grp handle: 0x000c uuid: 0000180a-0000-1000-8000-00805f9b34fb
attr handle: 0x000d, end grp handle: 0x0010 uuid: 00010203-0405-0607-0809-0a0b0c0d1912
attr handle: 0x0011, end grp handle: 0x0019 uuid: 00001827-0000-1000-8000-00805f9b34fb
attr handle: 0x001a, end grp handle: 0x0022 uuid: 00007fdd-0000-1000-8000-00805f9b34fb
attr handle: 0x0023, end grp handle: 0x0026 uuid: 00010203-0405-0607-0809-0a0b0c0d7fde
attr handle: 0x0027, end grp handle: 0x002b uuid: 00001801-0000-1000-8000-00805f9b34fb
[F0:D1:B8:22:C6:AC][LE]> char-desc
handle: 0x0001, uuid: 00002800-0000-1000-8000-00805f9b34fb
handle: 0x0002, uuid: 00002803-0000-1000-8000-00805f9b34fb
handle: 0x0003, uuid: 00002a00-0000-1000-8000-00805f9b34fb
handle: 0x0004, uuid: 00002803-0000-1000-8000-00805f9b34fb
handle: 0x0005, uuid: 00002a01-0000-1000-8000-00805f9b34fb
handle: 0x0006, uuid: 00002803-0000-1000-8000-00805f9b34fb
handle: 0x0007, uuid: 00002a04-0000-1000-8000-00805f9b34fb
handle: 0x0008, uuid: 00002800-0000-1000-8000-00805f9b34fb
handle: 0x0009, uuid: 00002803-0000-1000-8000-00805f9b34fb
handle: 0x000a, uuid: 00002a50-0000-1000-8000-00805f9b34fb
handle: 0x000b, uuid: 00002803-0000-1000-8000-00805f9b34fb
handle: 0x000c, uuid: 00002a26-0000-1000-8000-00805f9b34fb
handle: 0x000d, uuid: 00002800-0000-1000-8000-00805f9b34fb
handle: 0x000e, uuid: 00002803-0000-1000-8000-00805f9b34fb
handle: 0x000f, uuid: 00010203-0405-0607-0809-0a0b0c0d2b12
handle: 0x0010, uuid: 00002901-0000-1000-8000-00805f9b34fb
handle: 0x0011, uuid: 00002800-0000-1000-8000-00805f9b34fb
handle: 0x0012, uuid: 00002803-0000-1000-8000-00805f9b34fb
handle: 0x0013, uuid: 00002adc-0000-1000-8000-00805f9b34fb
handle: 0x0014, uuid: 00002901-0000-1000-8000-00805f9b34fb
handle: 0x0015, uuid: 00002902-0000-1000-8000-00805f9b34fb
handle: 0x0016, uuid: 00002803-0000-1000-8000-00805f9b34fb
handle: 0x0017, uuid: 00002adb-0000-1000-8000-00805f9b34fb
handle: 0x0018, uuid: 00002901-0000-1000-8000-00805f9b34fb
handle: 0x0019, uuid: 00002902-0000-1000-8000-00805f9b34fb
handle: 0x001a, uuid: 00002800-0000-1000-8000-00805f9b34fb
handle: 0x001b, uuid: 00002803-0000-1000-8000-00805f9b34fb
handle: 0x001c, uuid: 00002ade-0000-1000-8000-00805f9b34fb
handle: 0x001d, uuid: 00002901-0000-1000-8000-00805f9b34fb
handle: 0x001e, uuid: 00002902-0000-1000-8000-00805f9b34fb
handle: 0x001f, uuid: 00002803-0000-1000-8000-00805f9b34fb
handle: 0x0020, uuid: 00002add-0000-1000-8000-00805f9b34fb
handle: 0x0021, uuid: 00002901-0000-1000-8000-00805f9b34fb
handle: 0x0022, uuid: 00002902-0000-1000-8000-00805f9b34fb
handle: 0x0023, uuid: 00002800-0000-1000-8000-00805f9b34fb
handle: 0x0024, uuid: 00002803-0000-1000-8000-00805f9b34fb
handle: 0x0025, uuid: 00010203-0405-0607-0809-0a0b0c0d7fdf
handle: 0x0026, uuid: 00002901-0000-1000-8000-00805f9b34fb
handle: 0x0027, uuid: 00002800-0000-1000-8000-00805f9b34fb
handle: 0x0028, uuid: 00002803-0000-1000-8000-00805f9b34fb
handle: 0x0029, uuid: 00002a05-0000-1000-8000-00805f9b34fb
handle: 0x002a, uuid: 00002901-0000-1000-8000-00805f9b34fb
handle: 0x002b, uuid: 00002902-0000-1000-8000-00805f9b34fb

I used this sylvania app to control it:
com.ledvance.smartplus

I enabled bluetooth debugging on my phone and them imported the log into wireshark
It uses bluetooth mesh which is not simple to reverse-engineer
Looks like all commands are sent over handle 0x0020
But the commands are variable length, I can’t spot any pattern, and replaying the commands using gatttool doesn’t work

Imgur

I don’t know enough about bluetooth mesh to take this much further

From the nRF connect app, nothing too interesting, I can see the firmware version, and maybe some references to things like SigMesh and Telink, which seems to be an obscure proprietary BLE mesh protocol. There’s some information about it on Google but it seems to be mostly in Japanese

http://wiki.telink-semi.cn/wiki/protocols/Telink-Mesh/


A bit more research on this bulb

It looks like it operates differently depending on whether it has the HomeBridge firmware (uses BLE) or the Google/Amazon firmware (uses Bluetooth Mesh)

From:

a) SMART+ Bluetooth lights in connection with the LEDVANCE SMART+ Bluetooth app, Amazon Alexa app or Google Assistant:

If SMART+ Bluetooth lights are operated with the LEDVANCE SMART+ Bluetooth app, the Amazon Alexa app or Google Assistant, they communicate with Bluetooth mesh. This means that any SMART+ Bluetooth product on the same network acts as a repeater and can therefore relay the signal to other SMART+ Bluetooth devices. This means that the range between the smartphone and the SMART+ light to be controlled can be significantly higher if there are other SMART+ Bluetooth products in between.

b) SMART+ Bluetooth lights in connection with Apple HomeKit:

If SMART+ Bluetooth lights are operated with the Apple Home App, they communicate with Bluetooth Low Energy. Here there is only direct communication between the smartphone and the SMART+ Bluetooth light. This means that only lights that are within direct range of the Bluetooth signal can be controlled.```

I played a bit with one of these bulbs and here’s what I found so far:
On the Telink wiki page that @SomeGuyNamedBob mentioned, I found the TelinkBleMesh example app together with its source code in the Bluetooth SDK: http://wiki.telink-semi.cn/tools_and_sdk/BLE_Mesh/SIG_Mesh/sig_mesh_sdk.zip
With this app, I could successfully pair and control these bulbs. Apparently, the bulb follows the Bluetooth Mesh standard and can be provisioned with (almost) any Bluetooth Mesh stack.

From there I tried to provision it from the Linux Bluez stack. I used the latest 5.66 version and built it with --enable-mesh and --enable-deprecated.
Using meshctl, I could discover the device. Provisioning also worked when setting security 0 first. I could not control the light, however.

Using the (newer and non-deprecated) mesh-cfgclient, I had no luck provisioning. I believe the device supports only the PB-GATT bearer that meshctl is using for provisioning, but not PB-ADV, which seems to be the only one that mesh-cfgclient supports.
That’s all I found out so far. I tried to somehow copy the device information from meshctl to the mesh-cfgclient configuration, but so far without success. Maybe someone else has more luck or a better idea.