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().
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?
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.
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)
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):