Level door lock?

I can’t help to wonder if it has something to do with the level lock updating its firmware recently. I saw a message saying updating homekit sdk. (as I mentioned above)

How did you get it to even be seen ? I have two BLE Proxies and its been a week and they havent seen the lock

Will support for matter that is rumored or maybe it’s not a rumor help make this more functional?

I think the lock times out after a while - Try taking the battery out and putting it back in and see if it discovers it there.

I do not not understand how to pair this lock with HASS. Can someone be specific? It seems like there are many methods but none of them work? With all the people that pay for NabuCasa I feel as though a 3 year old lock request should be working just fine.

I’ve just gotten a Level Bolt and managed to get it paired in Home Assistant. The lock needs to be paired over bluetooth which means you need a bluetooth dongle on your HA server. Presently, it does not pair using a bluetooth proxy with esphome.

Here are the steps that I followed:

  1. Install a supported bluetooth USB dongle on your homeassistant server. If you have any esphome bluetooth proxies, unplug them for now.
  2. Make sure your Level lock is not paired over HomeKit to an iOS device. If it is, follow the instructions for the lock to reset it. Pulling the battery is not sufficient. You need to press the reset button for 8-10 seconds.
  3. In Home Assistant, install the HomeKit Controller by going to Devices and Services => Add Integration => Apple => HomeKit Controller
  4. The HomeKit controller should detect your Level lock as a new device which can be paired. You can pair it using the pairing code included in the box. I typed in the code with the dashes (eg. XXX-XX-XXX).
  5. After it is paired, it should be added as a device and allow you to lock/unlock.
  6. You can now plugin your bluetooth proxies again and they should work to expand the range of the lock.

Hope this helps others in the same boat.


Sorry for dense question…with a Bluetooth dongle on my HAAS server I do NOT need a home kit hub or anything HomeKit hardware device? About to pull trigger on level but need to confirm it’ll work with my HA setup without adding another hub somewhere.

Yes, that’s right. I’m also using an esphome bluetooth proxy to expand the range. However, even with the proxy, in some cases, it can take ~10s for the lock to respond. I tend to see this if the lock has not been locked/unlocked for a while.

If you installed the proxy before 2022.12.x make sure that you are using the esp-idf framework and have reflashed with a serial cable at least once or first connections are expected to be slow

1 Like

Thanks, I did try that but I’m still seeing that connections can be slow at times. Any thoughts on how to investigate this further?

For the #2 requirement, it sounds like adding the level lock to home assistant would prevent additional functionality such as key cards access with the touch edition? I use them quite extensively and suspect I would lose that functionality because the lock cannot simultaneously pair with home assistant and the level app? Can anyone confirm?

I can confirm that I have my level lock paired to HA and use key cards which are NFC tags with no issues.

Has there been a resolution to the “Failed to set up” on the integrations page with the following error

Logger: homeassistant.config_entries
Source: components/homekit_controller/connection.py:244
First occurred: 7:47:08 PM (1 occurrences)
Last logged: 7:47:08 PM

Error setting up entry D2462EJ1 for homekit_controller
Traceback (most recent call last):
File “/usr/src/homeassistant/homeassistant/config_entries.py”, line 383, in async_setup
result = await component.async_setup_entry(hass, self)
File “/usr/src/homeassistant/homeassistant/components/homekit_controller/init.py”, line 42, in async_setup_entry
await conn.async_setup()
File “/usr/src/homeassistant/homeassistant/components/homekit_controller/connection.py”, line 244, in async_setup
await self.pairing.async_populate_accessories_state(
File “/usr/local/lib/python3.10/site-packages/aiohomekit/controller/ble/pairing.py”, line 1059, in async_populate_accessories_state
await self._async_populate_accessories_state(force_update, attempts)
File “/usr/local/lib/python3.10/site-packages/aiohomekit/controller/ble/pairing.py”, line 189, in _async_operation_lock_wrap
return await func(self, *args, **kwargs)
File “/usr/local/lib/python3.10/site-packages/bleak_retry_connector/init.py”, line 447, in _async_wrap_bluetooth_connection_error_retry
return await func(*args, **kwargs)
File “/usr/local/lib/python3.10/site-packages/aiohomekit/controller/ble/pairing.py”, line 205, in _async_disconnect_on_missing_services_wrap
return await func(self, *args, **kwargs)
File “/usr/local/lib/python3.10/site-packages/aiohomekit/controller/ble/pairing.py”, line 1072, in _async_populate_accessories_state
await self._populate_accessories_and_characteristics(force_update, attempts)
File “/usr/local/lib/python3.10/site-packages/aiohomekit/controller/ble/pairing.py”, line 1135, in _populate_accessories_and_characteristics
accessories = await self._async_fetch_gatt_database()
File “/usr/local/lib/python3.10/site-packages/aiohomekit/controller/ble/pairing.py”, line 884, in _async_fetch_gatt_database
hap_char.perms = decoded[“perms”]
KeyError: ‘perms’

To confirm if I’m understanding this correctly, this is not the native Level Lock functionality right? You’ve effectively setup an alternative solution using NFC tags to unlock/lock. I’d prefer to utilize the native functionality as I already have the cards handed out. This is a good alternative though (which requires a phone) and I will have to keep it in mind.

I am only using level cards and a key chain card all made by level.

I found a Level lock “Touch Edition” at a “bin liquidation” type store for cheap so decided to see if I could get it working with HA. I followed @mals instructions above and got it paired and working reliably. Below are some observations that may help someone else.

  • Requires Bluetooth BLE interface and “Apple HomeKit Server” integration
  • Purchased a “ZEXMTE Long Range USB Bluetooth Adapter for PC USB Bluetooth Dongle” from
    Amazon, seems to work fine.
  • RF Interference is an issue, keep radio as far from Wifi and Zigbee radios as possible.
  • Check HA log for : “Failed to connect:… Interference/range” warnings
  • I used a 10’ USB extension cable and still had to fiddle with the position.
  • Pairing took awhile but finally worked reliably, the ‘pair code’ is on the lock (XXX-XX-XXX)
  • Apparently the lock can’t be connected to the phone app AND pair with HA? (lock must be factory
    reset (hold little button for 10s) to connect with another device). This means that some of the “touch” features of the lock are just unusable. I’d love to know I’m wrong here!
  • When registering the Level app a password recovery code is sent (mine showed up in my Gmail ‘
    Promotions’ folder). This code is the ONLY way to reset a password.
  • If not installed in a door, it seems like the lock bolt must be perfectly level to work properly, otherwise it gets stuck in “locking” state and beeps, eventually showing a state of ‘jammed’.
  • A def delay before lock actually changes state most times. I wrote an Appdaemon script to toggle the lock and track the time of state changes.
    * Total toggles: 44, min: 0s, max: 22s, avg: 9s, missed:0
  • Forget about Level phone support, I never got a human and they just don’t respond with call-backs or to messages. Email seemed to get the only response.

I hope this helps!


Hmm, when I set mine up a few weeks ago, I didn’t have a problem adding it to the Level app and then adding it to HA.

But setting one up now and kept getting a bluez error when adding to HA. Sure enough, deleting it in the Level app before adding it to HA made it go through. Maybe something they (Level) changed in a recent firmware update.

Thanks for the heads up!

its almost like you knew my next question on every bullet - very informative Thank You!

1 Like

I’m thinking of buying a level lock and have read through the thread (thanks for contributing everyone!) but I can’t get a sense of what functionality is available with the Homekit server approach.

What does the level lock offer through Home assistant when it is paired through Homekit server? Is it just an open/close device? Does it report state? How do NFC keys work? Does the optional keypad work, can you set PINs, schedules etc?


Installed my lock for first time and the HomeKit controller was automatically detected. When I try “configure” it hangs initializing the wizard and eventually errors with an unknown error.

Got this in the logs…

Failed to cancel connection (/org/bluez/hci0/dev_C1_C5_79_FC_D6_1A):

Anyone else come across this?