LAN Edge Driver discovery never creates a device, even with a known-working third-party driver

Hi all,

I’m stuck on an Edge driver issue and have run out of ideas after extensive troubleshooting. Hoping someone here has seen this before.

The problem

No matter which LAN-type Edge driver I try to install and scan for, “Scan nearby” in the app always results in “Couldn’t find device” and no new device ever appears — not in the app, and not in smartthings devices (CLI/API).

What I’ve tried (all failed to create any device)

  1. My own custom driver (lg-thinq-test) — a minimal driver whose discovery handler unconditionally calls try_create_device(). Verified the code against the official docs and against a real, published, working LAN driver (Todd Austin’s Edge-ONVIF-Driver) field-by-field. No structural differences found.
  2. A rewritten version of the same driver, following the exact pattern (including lifecycle_handlers, should_continue loop, cosock.socket.sleep) used in that known-working reference driver.
  3. A completely new test driver with a brand-new packageKey, deployed to a brand-new channel I created myself (to rule out any channel-specific corruption).
  4. A third-party driver that is not mine (“LG ThinQ Bridge” from a public channel by another developer, which reportedly works for other users) — scanned with this driver installed, and it also created zero new devices.

What I’ve already ruled out

  • Driver packaging (edge:drivers:package) succeeds with no errors.
  • Driver is confirmed installed on the hub (edge:drivers:installed).
  • Hub is confirmed enrolled in all relevant channels (edge:channels:enrollments).
  • Device profile has valid categories and capabilities.
  • Soft hub reboot via the app — no change.

Setup

  • Hub: SmartThings Hub (physical, not Aeotec/other), labeled “스마트 홈 허브”
  • Multiple channels tested: my own channel, a second brand-new channel I created, and a third-party public channel
  • Multiple drivers tested: 3 different custom drivers + 1 known-working third-party driver
  • CLI: @smartthings/cli, driver packaging and install all report success

My current hypothesis

Since even a third-party driver that reportedly works for other users fails to create a device on this specific hub, I suspect the issue is not in any driver’s code, but something at the hub or account level that’s blocking or silently failing device creation during LAN discovery — possibly a stuck/corrupted discovery state on the hub itself.

Question

Has anyone run into a hub that silently fails to create devices during “Scan nearby” for any LAN driver, regardless of which driver or channel is used? Is there a way to get more visibility into why try_create_device is failing (or why discovery may not even be reaching the driver) beyond edge:drivers:logcat? Any known hub-side reset/fix for this, short of a full hub reset?

Thanks in advance for any pointers.

Paste the config.yml here.

name: "Test Driver ABC"
packageKey: "test-driver-abc-999"
permissions:
  lan: {}
local capabilities = require "st.capabilities"
local Driver = require "st.driver"
local log = require "log"

local function device_added(driver, device)
    log.info("===== DEVICE ADDED: " .. device.id)
end

local function device_init(driver, device)
    log.info("===== DEVICE INIT: " .. device.id)
end

local function handle_discovery(driver, opts, should_continue)
    log.info("===== DISCOVERY STARTED =====")
    local unique_id = "lg-thinq-bridge-" .. tostring(os.time())
    local create_device_msg = {
        type = "LAN",
        device_network_id = unique_id,
        label = "LG ThinQ Bridge",
        profile = "lg-thinq-main",
        manufacturer = "SmartThingsCommunity",
        model = "ThinQ",
        vendor_provided_label = "LG ThinQ Bridge"
    }

    assert(
        driver:try_create_device(create_device_msg),
        "failed to create device record"
    )

    local cosock = require "cosock"
    cosock.socket.sleep(3)
    log.info("===== DISCOVERY FINISHED =====")
end

local lg_driver = Driver("test-driver-abc-999", {
    discovery = handle_discovery,
    lifecycle_handlers = {
        added = device_added,
        init = device_init,
    }
})

log.info("===== DRIVER STARTED =====")
lg_driver:run()

Correct:

name: "Test Driver ABC"
packageKey: "test-driver-abc-999"
permissions:
  lan: {}
  discovery: {}

Example driver:

Another example:

By the way: the driver package must have a profile (lg-thinq-main.yaml in your case) in the profiles directory. Don’t know if this is checked when the driver is packaged. Mentioning just in case.

000.061.00006 That’s my Hub version.
Is this okay?

and..

Response:  {
    "requestId": "6a6c4fbc00000000ad65df7e2a6823d0",
    "error": {
        "code": "BadRequestError",
        "message": "Permissions have been modified",
        "details": []
    }
}

Use a completely fresh packageKey in your config.yml.

By the way: the hub firmware version doesn’t matter, because others - like me - have successfully developed LAN drivers on every firmware.