Thank you very much for the library that should save many of us lots of money on subscription costs for the devices we've already purchased.
Unfortunately, atm it doesn't work for me for BespokeAI Washer/Dryer.
I'm connected to the same VLAN/subnet as Home Assistant & Samsung appliances. There are no firewall rules, and mobile app works.
Appliances work fine with the mobile app.
Everything below is for my washer.
$ wget https://raw.githubusercontent.com/QuiteYellow/SmartThings-Local/refs/heads/main/setup_cert.py
--2026-08-01 16:58:50-- https://raw.githubusercontent.com/QuiteYellow/SmartThings-Local/refs/heads/main/setup_cert.py
Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 185.199.110.133, 185.199.109.133, 185.199.111.133, ...
Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|185.199.110.133|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 20512 (20K) [text/plain]
Saving to: ‘setup_cert.py’
setup_cert.py 100%[===================================================================================================================>] 20.03K --.-KB/s in 0.004s
2026-08-01 16:58:50 (5.13 MB/s) - ‘setup_cert.py’ saved [20512/20512]
$ python setup_cert.py
============================================================
Phase 1: AC14K_M signing materials
============================================================
Fetching AC14K_M bundle...
AC14K_M cert: certs/.bundle/ac14k_m.pem
AC14K_M key: certs/.bundle/ac14k_m.key
chain: 4 certs (cert_1.pem, cert_2.pem, cert_3.pem, cert_4.pem)
cert/key modulus pair OK
============================================================
Phase 2: identify peer UUID
============================================================
Fetching from connect-v2.samsungiotcloud.com:443...
Extracted UUID: ab0b0ac4-aae9-4958-a04d-8ec36fe1b2f9
Saved server leaf cert to certs/samsung_cloud_leaf.pem
============================================================
Phase 3: mint client cert with UUID ab0b0ac4-aae9-4958-a04d-8ec36fe1b2f9
============================================================
key: certs/client.key
leaf: certs/client.pem
fullchain: certs/client_fullchain.pem
Subject: OU=uuid:ab0b0ac4-aae9-4958-a04d-8ec36fe1b2f9, CN=urn:uuid:ab0b0ac4-aae9-4958-a04d-8ec36fe1b2f9, O=Samsung Electronics, C=KR
============================================================
Done. Output dir: /Users/max/Downloads/certs
============================================================
$ python -m venv venv
$ source venv/bin/activate
$ pip install smartthings-local
$ sudo nmap -Pn -sU -p 49152-49160 "192.168.4.27"
Starting Nmap 7.99 ( https://nmap.org ) at 2026-08-01 16:09 +0200
Nmap scan report for Samsung-Washer.iot (192.168.4.27)
Host is up (0.51s latency).
PORT STATE SERVICE
49152/udp closed unknown
49153/udp open|filtered unknown
49154/udp open unknown
49155/udp closed unknown
49156/udp closed unknown
49157/udp closed unknown
49158/udp closed unknown
49159/udp closed unknown
49160/udp closed unknown
MAC Address: [REDACTED] (SJI Industry Company)
Nmap done: 1 IP address (1 host up) scanned in 5.58 seconds
$ python coap_sec_probe.py 192.168.4.27
=== Plain CoAP security probe of <target-ip>:5683 (no DTLS, no cert) ===
-> /oic/res (resource + sec-flag enumeration) (plain CoAP GET /oic/res to <target-ip>:5683)
<- mid=0x4001 tok=01 type=ACK code=2.05 1024B [MATCH]
strings: ['bdix$<uuid-redacted>elinks', 'dhrefm/oic/sec/doxmbrt', 'joic.r.doxmbif', 'ooic.if.baselineap', 'csec', 'dport', 'rx.org.iotivity.tls', 'dhrefn/oic/sec/pstatbrt', 'koic.r.pstatbif', 'ooic.if.baselineap', 'csec', 'dport', 'rx.org.iotivity.tls', 'dhreff/oic/dbrt', 'hoic.wk.dloic.d.washerbif', 'ooic.if.baselinehoic.if.rap', 'csec', 'rx.org.iotivity.tcp', 'dhreff/oic/pbrt', 'hoic.wk.pbif', 'ooic.if.baselinehoic.if.rap', 'csec', 'rx.org.iotivity.tcp', 'dhrefq/multidevice/vs/0brt', 'x.com.samsung.da.multidevicebif', 'ooic.if.baselinehoic.if.aap', 'csec', 'rx.org.iotivity.tcp', 'dhrefs/file/transfer/vs/0brt', 'x.com.samsung.file.transferbif', 'ooic.if.baselinehoic.if.aap', 'csec', 'rx.org.iotivity.tcp', 'dhrefo/file/list/vs/0brt', 'wx.com.samsung.file.listbif', 'ooic.if.baselinehoic.if.sap', 'csec', 'rx.org.iotivity.tcp', 'dhrefp/hass/state/vs/0brt', 'x.com.samsung.da.hass.statebif', 'ooic.if.baselinehoic.if.aap', 'csec', 'rx.org.iotivity.tcp', 'dhrefr/hass/command/vs/0brt', 'x.com.samsung.da.hass.commandbif', 'ooic.if.baselinehoic.if.aap', 'csec', 'rx.org.iotivity.tcp']
-> /oic/sec/doxm (owner + UUID; often world-readable) (plain CoAP GET /oic/sec/doxm to <target-ip>:5683)
<- mid=0x4002 tok=02 type=ACK code=2.05 215B [MATCH]
{'oxms': [65282], 'oxmsel': 0, 'sct': 8, 'owned': False, 'deviceuuid': '<uuid-redacted>', 'devowneruuid': '<uuid-redacted>', 'rowneruuid': '<uuid-redacted>', 'rt': ['oic.r.doxm'], 'if': ['oic.if.baseline']}
-> /oic/sec/pstat (provisioning/onboarding state) (plain CoAP GET /oic/sec/pstat to <target-ip>:5683)
<- mid=0x4003 tok=03 type=ACK code=2.05 157B [MATCH]
{'isop': False, 'cm': 2, 'tm': 10, 'om': 4, 'sm': 4, 'deviceuuid': '<uuid-redacted>', 'rowneruuid': '<uuid-redacted>', 'rt': ['oic.r.pstat'], 'if': ['oic.if.baseline']}
$ python test.py
Traceback (most recent call last):
File "/Users/max/Downloads/test.py", line 9, in <module>
sess.connect()
~~~~~~~~~~~~^^
File "/Users/max/Downloads/venv/lib/python3.14/site-packages/smartthings_local/protocol/dtls_session.py", line 243, in connect
raise TimeoutError(
f"DTLS handshake timeout to {self.host}:{self.port}")
TimeoutError: DTLS handshake timeout to 192.168.4.27:49154
$ python test.py
Traceback (most recent call last):
File "/Users/max/Downloads/venv/lib/python3.14/site-packages/smartthings_local/protocol/dtls_session.py", line 220, in connect
conn.do_handshake()
~~~~~~~~~~~~~~~~~^^
File "/Users/max/Downloads/venv/lib/python3.14/site-packages/OpenSSL/SSL.py", line 2487, in do_handshake
self._raise_ssl_error(self._ssl, result)
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^
File "/Users/max/Downloads/venv/lib/python3.14/site-packages/OpenSSL/SSL.py", line 2090, in _raise_ssl_error
_openssl_assert(
~~~~~~~~~~~~~~~^
reason == _lib.SSL_R_UNEXPECTED_EOF_WHILE_READING
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "/Users/max/Downloads/venv/lib/python3.14/site-packages/OpenSSL/_util.py", line 73, in openssl_assert
exception_from_error_queue(error)
~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^
File "/Users/max/Downloads/venv/lib/python3.14/site-packages/OpenSSL/_util.py", line 59, in exception_from_error_queue
raise exception_type(errors)
OpenSSL.SSL.Error: [('SSL routines', '', 'tls alert handshake failure')]
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/Users/max/Downloads/test.py", line 9, in <module>
sess.connect()
~~~~~~~~~~~~^^
File "/Users/max/Downloads/venv/lib/python3.14/site-packages/smartthings_local/protocol/dtls_session.py", line 226, in connect
raise ConnectionError(f"DTLS handshake error: {e}") from e
ConnectionError: DTLS handshake error: [('SSL routines', '', 'tls alert handshake failure')]
Thank you very much for the library that should save many of us lots of money on subscription costs for the devices we've already purchased.
Unfortunately, atm it doesn't work for me for BespokeAI Washer/Dryer.
Model numbers:
WW11BB534DAWS6DV90BB5245AWS6Are there any troubleshooting tips you can share?
I've tried
coap_sec_probe.pyfrom Newer Samsung firmware uses standard OCF ports (5683/5684) + non-AC14K_M trust anchor #16 (if smart control was on, the icon on the appliance was blinking when the script was running)I'm connected to the same VLAN/subnet as Home Assistant & Samsung appliances. There are no firewall rules, and mobile app works.
Appliances work fine with the mobile app.
Everything below is for my washer.
The script: