Personal channel LAN Edge driver produces zero log output on hub firmware 0.61.6

Hi all,

I’ve been trying to deploy a custom LAN Edge driver (Modbus TCP for a SolarEdge inverter) and have hit a wall where the driver is completely silent — no log output at all, even a top-level log.info before driver:run().

Environment:

  • Hub: SmartThings v3, firmware 0.61.6
  • CLI: @smartthings/cli 1.10.6, Node 22
  • Channel: Personal channel (private, created via CLI)

What works:

  • Driver uploads and installs successfully via CLI
  • Driver appears in /drivers local hub API endpoint with "status": "installed"
  • Hub scans correctly — LED blinks, Sonos/Philips Hue/UniFi Protect all log activity during scan
  • Third-party public channel driver (Pattetech Solar Inverter) installs and creates devices successfully via Scan nearby

What doesn’t work:

  • Our driver produces absolutely zero log output during scan or at any other time
  • Not even log.info("loading...") at the top level of init.lua appears
  • Tried: new packageKey, reduced lua_libs_api (9, 14), removed search-parameters.yml, web invite enrollment, hub reboot, power cycle
  • Two different driver IDs both exhibit the same behaviour

Minimal init.lua that still produces nothing:

lua

local Driver = require "st.driver"
local log = require "log"
log.info("SE TEST DRIVER LOADED")
local driver = Driver("se-modbus-v2", {
  discovery = function(d, _, sc)
    log.info("SE TEST DISCOVERY")
    while sc() do
      d:try_create_device({type="LAN",device_network_id="se-test-01",label="SE Test",profile="se-test",manufacturer="Test",model="Test"})
      require("cosock").socket.sleep(3)
    end
  end,
})
driver:run()

Question: Is there a known issue with personal channel drivers not starting on firmware 0.61? This looks similar to the issue reported in this 2022 thread which was fixed server-side. Has it regressed?

Any help appreciated.

Update: Stripped driver to absolute minimum — 3-line config.yml (name, packageKey, permissions only), single-capability profile (switch), 15-line init.lua with top-level log.info. Hub downloads new versions (archive_hash changes on each deploy confirmed via local API). Still zero log output. Other drivers (Sonos, Philips Hue, UniFi Protect) all log normally during scan. Hub firmware 0.61.6

The config.yml is more important. Should contain this:

permissions:
  lan: {}
  discovery: {}

Here you are creating devices in a loop - not a good idea…

while sc() do
  d:try_create_device(...)
  require("cosock").socket.sleep(3)
end

Try something like this - more complete, but still minimal:

local Driver = require "st.driver"
local log = require "log"

log.warn("SE TEST MODULE LOADED")

local function discovery_handler(driver, options, should_continue)
  log.warn("SE TEST DISCOVERY RECEIVED")

  if not should_continue() then
    log.warn("Discovery already cancelled")
    return
  end

  local metadata = {
    type = "LAN",
    device_network_id = "se-test-01",
    label = "SE Test",
    profile = "se-test",
    manufacturer = "Test",
    model = "Test",
  }

  local ok, err = driver:try_create_device(metadata)
  log.warn(string.format(
    "try_create_device returned: ok=%s err=%s",
    tostring(ok),
    tostring(err)
  ))
end

local driver = Driver("se-modbus-v2", {
  discovery = discovery_handler,
})

log.warn("SE TEST CALLING driver:run()")
driver:run()

But if the config.yml doesn’t look like above, the driver isn’t launched anyway.

Here’s an example of a complete LAN driver:

Implemented the config.yml and driver pattern exactly as suggested — permissions: lan: {} discovery: {}, unconditional try_create_device on discovery (no loop-with-sleep), log.warn at every stage. New driver ID to avoid the “permissions modified” error. Still zero log output — not even the top-level log.warn("SE TEST MODULE LOADED") before the driver object is even constructed.

Also tried: hub reboot, fresh PAT token, verified hub is scanning (LED blinks, archive_hash confirmed updating via local /drivers API), enrolled in 0.62.x beta (still pending rollout to my hub as of this post)

Can you also share the profile

Hi, @Ben_Manfield
You won’t get the 62 firmware version that is in the Beta group because you enrolled after the release started. We can add you manually but I don’t think that’ll make a difference.

I believe that something must be preventing the execution of your driver, so, to test the behavior, I suggest you download this Samples repository where you can find the “Hello World” driver:

Just add the lan: {} permission and it should run successfully once you publish it, install it and hit scan nearby.
Just in case you haven’t seen this before, this single command can help run the three steps (package, publish, and install the driver):

smartthings edge:drivers:package /path-to-driver --channel=channelId --hub=hubId

SOLVED: [ST Edge Driver] SolarEdge PV Inverter - Devices & Integrations / Connected Things - SmartThings Community