[ISSUE] Conflig flow hangs when performing getUsers on Matter lock (Ultraloq Bolt SE)

Open
#1,579 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
4/5
Estimated time
3-5 days
Newbie friendliness
48/100
Issue type
Bug
Clarity
Mostly clear
Activity status
Active
Tech stack
python
Domain
backend

Research direction

Start at the config flow's slot-occupancy read and trace how Matter getUser responses determine the next slot. Compare that behavior with the native matter.get_lock_users result and inspect the timeout budgets discussed in #1528 and #1536. Done means the flow completes for this lock, creates the config entry and entities, and cannot spin indefinitely.

Written by the indexing model from the issue text.

Description

bug
What happened?

Config flow hangs forever on a Matter lock: slot occupancy read stops after slot 1

Summary

On a Matter lock, the config flow's slot-occupancy read issues exactly one
getUser (userIndex 1), then stalls indefinitely. The flow never advances, no
config entry or entities are created, and nothing is logged — not even with
custom_components.lock_code_manager at debug. There appears to be no deadline
on the operation: it has been spinning for 25+ minutes.

Environment

  • Home Assistant Core 2026.9.2 (HAOS 18.2, frontend 20260826.7)
  • Lock Code Manager 6.0.0 (HACS)
  • Matter Server add-on 1.4.0 (matter.js 0.17.9)
  • Lock: ULTRALOQ Bolt SE, firmware 01.54.0043 (Matter software version 50),
    Matter over Thread via the OpenThread Border Router add-on + SMLIGHT SLZB-06U
  • Lock is healthy: reachable, ~1s event latency, 2-3s command round trips

Steps to reproduce

  1. Fresh install of LCM 6.0.0, no prior config entry.
  2. Add integration -> name + select the Matter lock entity -> Choose Path: YAML.
  3. Paste a block of four users (name + quoted pin + enabled: true).
  4. Flow moves to "Configure users" with the "reading which slots your locks
    already hold" message and a spinner.

Expected

The slot walk reads the lock's occupancy (all slots are free) and the entry is
created with four users.

Actual

One read, then silence. From the Matter Server add-on log:

15:47:36.162 Invoke >> 1.doorLock.getUser with userIndex: 1
15:47:38.036 Invoke << 1.doorLock.getUser userIndex: 1 userName: null
             userStatus: null userType: null credentialRule: null
             credentials: null nextUserIndex: null

No further getUser, setUser or setCredential calls were issued in the
following 25 minutes. config_entries has no lock_code_manager entry and the
entity registry has no lock_code_manager entities.

The lock's user table is empty and readable through HA's own action --
matter.get_lock_users returns {"max_users": 10, "users": []} in about two
seconds, and HA's native Matter "Manage Users" dialog reads and writes the same
table without trouble.

Suspected cause

This lock returns nextUserIndex: null on every getUser response, including
reads issued by HA's native Matter dialog. If the slot walk follows
nextUserIndex to find the next slot to read, it receives null and waits rather
than continuing. Iterating 1..NumberOfTotalUsersSupported (10 on this lock)
would avoid the dependency on an optional field.

Note also that no operation deadline appears to fire -- 25+ minutes with the
flow still open -- despite the budgets described in #1528/#1536.

Secondary notes

  1. Taking the UI path instead of YAML, the flow reaches step code_slot
    server-side (HA returns a valid form: name, pin, enabled, condition, titled
    "User 1 of 2") but the dialog renders only a spinner in one browser profile.
    The YAML path rendered fine in the same session, so this may be a separate
    frontend issue, or may be environmental -- reported here only for context.

  2. Documentation conflict: the num_users step says LCM will read which slots
    the locks already hold, while other guidance says to clear all slots before
    setup. On a write-only provider like Matter it is unclear which applies.

Steps to reproduce the issue

...

Home Assistant Version

2026.9.2

What version of Lock Code Manager are you running?

6.0.0

Lock make and model

Ultraloq Bolt SE

Debug logs (paste)

Debug logs (upload)

No response

Lock Code Manager diagnostics (upload)

No response

Lock integration diagnostics (upload)

No response

Diagnostics (paste)

Browser console logs (paste)

Browser console logs (upload)

No response

Screenshots

No response

Anything else?

No response

Dominant language
Python
Stars
105
Forks
18
Avg merge
8h 53m
Merged PRs (30d)
81

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from raman325/lock_code_manager

All issues in raman325/lock_code_manager

Similar issues

More Python issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.