Skip to content

Instantly share code, notes, and snippets.

@dejanb
Last active February 8, 2024 15:41
Show Gist options
  • Save dejanb/85282932d08d26dce2c9323b3d0cc1e2 to your computer and use it in GitHub Desktop.
Save dejanb/85282932d08d26dce2c9323b3d0cc1e2 to your computer and use it in GitHub Desktop.
Test Bluetooth mesh

start clean mesh (first terminal):


$ rm -rf ~/.config/meshcfg/config_db.json
$ sudo rm -rf /var/lib/bluetooth/mesh
$ sudo mkdir /var/lib/bluetooth/mesh
$ sudo /usr/libexec/bluetooth/bluetooth-meshd -nd --debug

provisioner (second terminal):


$ mesh-cfgclient

Warning: config file "/home/pi/.config/meshcfg/config_db.json" not found
[mesh-cfgclient]# create
Created new node with token 522b02d50de1c8a2
Proxy added: org.bluez.mesh.Node1 (/org/bluez/mesh/nodea186fe8c7e3b461daa29664eba26ed2d)
Proxy added: org.bluez.mesh.Management1 (/org/bluez/mesh/nodea186fe8c7e3b461daa29664eba26ed2d)
Attached with path /org/bluez/mesh/nodea186fe8c7e3b461daa29664eba26ed2d
[mesh-cfgclient]# appkey-create 0 0

device (third terminal):


$ bluez/test/test-mesh

join
Joining with UUID 3df8492249f1476491a1e4e1d051a5f7
Join procedure started

provisioner:


[mesh-cfgclient]# provision 3df8492249f1476491a1e4e1d051a5f7

device:

PromptStatic ( static-oob )
Enter 16 octet key on remote device:  6f4b1f31cbe0d0f81b0ef64a1c70b86c

provisioner:


[[mesh-agent]# ] Enter key (hex number): 6f4b1f31cbe0d0f81b0ef64a1c70b86c

device:

Joined mesh network with token 62cb5d464413e5c7

provisioner:


Assign addresses for 2 elements
Provisioning done:
Mesh node:
	UUID = 3DF8492249F1476491A1E4E1D051A5F7
	primary = 00aa

	elements (2):

[mesh-cfgclient]# menu config
[mesh-cfgclient]# target 00aa
Configuring node 00aa

[config: Target = 00aa]# appkey-add 0

[config: Target = 00aa]# composition-get
Received DeviceCompositionStatus (len 29)
Received composion:
	Feature support:
		relay: yes
		proxy: no
		friend: yes
		lpn: no
	 Element 0:
		location: 0000
		SIG defined models:
		  Model ID	0000 "Configuration Server"
		  Model ID	1000 "Generic OnOff Server"
		 Vendor defined models:
		  Model ID	05f1 0001
	 Element 1:
		location: 0000
		SIG defined models:
		  Model ID	1001 "Generic OnOff Client"

[config: Target = 00aa]# bind 00aa 0 1000
[config: Target = 00aa]# bind 00ab 0 1001

device:


attach
Attach mesh node to bluetooth-meshd daemon
Mesh app registered: /org/bluez/mesh/node3df8492249f1476491a1e4e1d051a5f7
Update Model Config 1000
Bindings: [0]
Update Model Config 1001
Bindings: [0]

dest
Enter 4-digit hex destination address:
00aa
Destination address: 00aa
client-menu
*** ON/OFF CLIENT MENU ***
on
Set state: 1
OnOffClient send command
Message Received on Element 00, src= 00ab, dst=00aa
State is ON
Message Received on Element 01, src= 00aa, dst=00ab
OnOffClient process message len = 3
Got state ON from 00aa
off
Set state: 0
OnOffClient send command
Message Received on Element 00, src= 00ab, dst=00aa
State is OFF
Message Received on Element 01, src= 00aa, dst=00ab
OnOffClient process message len = 3
Got state OFF from 00aa
get-state
OnOffClient send command
Message Received on Element 00, src= 00ab, dst=00aa
Get state
Message Received on Element 01, src= 00aa, dst=00ab
OnOffClient process message len = 3
Got state OFF from 00aa
@dreamlayers
Copy link

Thank you! Using this I was also able to turn my Sylvania A19 T-C-MD84F bulb on and off. I was having a lot of trouble provisioning them before, and ended up getting /data/user/0/com.ledvance.smartplus/files/Network_*.meshdata from my phone, so I can use the network that Sylvania's app already created. I used https://github.com/NickstaDB/SerializationDumper/releases/tag/1.13 to extract keys and the device address. Configuring the network to work with that was somewhat complicated. But then I simply started with the test-mesh join step here, and after following these instructions I could simply set the Sylvania bulb as the target and control it.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment