I was first thinking that this may be caused by the update I pushed, but this was already last Wednesday. Do you have the auto update timer set?
Indeed, Roon and the extension manager have to be started separately.
Running it as a service is what I am focusing on at the moment. For Windows a basic installer should take care of this, currently a first version is being tested by a few community members. For Linux I start off with a systemd service file and a helper script, distribution packages may follow at a later point in time.
Of course you can also do the service stuff yourself. I can provide you a Linux script or Windows batch file which you then have to start as a service.
I have the updates set to update at 2am. It might be I did not use since your last update I just cant remember. I have set it to run as a service now so see how it gets on.
I don’t know how well start.js behaves when you run it as a service (if that is what you do). It has some self restart behavior that is better moved to service control. Let me know if you run into issues and I will provide a better solution.
Thanks, Jan. Looks like I had an old version running. Cleaned up and reinstalled and now everything is working with all extensions showing.
Simply fantastic, this has taken Roon to another level for me. Even though its in a beta and unsupported form right now you and the other extension dev have done a fantastic job of defining the environment well enough to make it easy for non dev like me.
I really really need to set up a Roon endpoint in the bedroom now for alarm clock duties!
This works a treat…not the most WAF friendly but with a bit of coaxing mine can deal with it for now or she just tells me make it sleep in 40 mins please and I oblige ️
Thanks to Jan and a good deal of PM’s back and forward the last few days we have got my setup installed … with some tweaking to be detailed but looking good for sure.
I think I will Jan take it from here on how he sees the installer changes needed but its definitely getting to a point where non geeks can perhaps get this running pretty soon I think.
I did a fresh install of the Extension Manager using the Windows installer a few days ago, and also used it to set up @Mike_Plugge 's Web Controller. All was working well.
This morning I open up the Extensions page, and found that the Web Controller had vanished, and the Extension Manager had a “Pair” button (which I don’t ever remember seeing). I clicked the Pair button, which changed to the “Settings” button, and then used that to re-install the Web Controller.
Now I’m back to where I was yesterday, but is there any way to gather more detail on what caused the change in state?
Has anything changed related to your core or do you have multiple cores running? The pair button normally appears if a previously paired core is not online and another one is.
The Web Controller was no longer detected as installed? That’s strange.
Errors in the Extension Manager itself are logged to %AppData%\RoonExtensions\roon-extension-manager.log, is there anything in this log? (you can open the file by pasting the full name in the Windows search field.)
Ah, there is another core running in the network, and when I rebooted ROCK a day or two ago, it must have caused the appearance of the Pair button. That explains that.
The Web Controller was no longer detected as installed? That’s strange
I’ve seen it complain that it needed to be re-enabled - perhaps this is also a symptom of having more than one core present and running?
Errors in the Extension Manager itself are logged to %AppData%\RoonExtensions\roon-extension-manager.log, is there anything in this log?
It’s over 1MB in size, so there’s quite a bit in there… Should I be looking for anything in particular? Mostly it seems to be of the form:
Error: spawn C:\Program Files\nodejs\node.exe ENOENT
at exports._errnoException (util.js:1018:11)
at Process.ChildProcess._handle.onexit (internal/child_process.js:193:32)
at onErrorNT (internal/child_process.js:367:16)
at _combinedTickCallback (internal/process/next_tick.js:80:11)
at process._tickCallback (internal/process/next_tick.js:104:9)
events.js:160
throw er; // Unhandled 'error' event
^
Error: spawn C:\Program Files\nodejs\node.exe ENOENT
at exports._errnoException (util.js:1018:11)
at Process.ChildProcess._handle.onexit (internal/child_process.js:193:32)
at onErrorNT (internal/child_process.js:367:16)
at _combinedTickCallback (internal/process/next_tick.js:80:11)
at process._tickCallback (internal/process/next_tick.js:104:9)
^CC:\Users\gcoup\AppData\Roaming\RoonExtensions\node_modules\roon-extension-manager\node_modules\node-roon-api\lib.js:399
var logging = msg.headers["Logging"];
^
TypeError: Cannot read property 'Logging' of undefined
at Transport.transport.onmessage.msg [as onmessage] (C:\Users\gcoup\AppData\Roaming\RoonExtensions\node_modules\roon-extension-manager\node_modules\node-roon-api\lib.js:399:34)
at WebSocket.Transport.ws.onmessage (C:\Users\gcoup\AppData\Roaming\RoonExtensions\node_modules\roon-extension-manager\node_modules\node-roon-api\transport-websocket.js:30:14)
at WebSocket.onMessage (C:\Users\gcoup\AppData\Roaming\RoonExtensions\node_modules\roon-extension-manager\node_modules\ws\lib\WebSocket.js:442:14)
at emitTwo (events.js:106:13)
at WebSocket.emit (events.js:191:7)
at Receiver.onbinary (C:\Users\gcoup\AppData\Roaming\RoonExtensions\node_modules\roon-extension-manager\node_modules\ws\lib\WebSocket.js:848:10)
at C:\Users\gcoup\AppData\Roaming\RoonExtensions\node_modules\roon-extension-manager\node_modules\ws\lib\Receiver.js:628:18
at Receiver.applyExtensions (C:\Users\gcoup\AppData\Roaming\RoonExtensions\node_modules\roon-extension-manager\node_modules\ws\lib\Receiver.js:371:5)
at C:\Users\gcoup\AppData\Roaming\RoonExtensions\node_modules\roon-extension-manager\node_modules\ws\lib\Receiver.js:604:14
at Receiver.flush (C:\Users\gcoup\AppData\Roaming\RoonExtensions\node_modules\roon-extension-manager\node_modules\ws\lib\Receiver.js:347:3)
^CC:\Users\gcoup\AppData\Roaming\RoonExtensions\node_modules\roon-extension-manager\node_modules\node-roon-api\lib.js:399
var logging = msg.headers["Logging"];
^
I don’t see how that can happen. To the extent that I have a theory, it’s something like “you have a lib.js from one version of the api library and a transport-websocket.js from another”, which seems very unlikely.
@Geoff_Coupe, could I get the whole log file, even though it’s 1MB? I can PM upload instructions if you need them.
We now have a theory as to how/why this happens. I will look into a fix. The only thing I don’t understand is why we don’t see a log message complaining about something like “reached end of buffer” or “malformed message”.
Hi @seagull,
Your issue has similarities with the one Geoff had, so I would like to follow up the discussion here (also not to hijack the Web Controller thread).
Looks like the Harmony extension got corrupted. Can you try the following to recover from this?
Type services in the Windows search bar and open the Services application
Select the Roon Extension Manager in the list and stop it
Delete the extension manager log file, it has become big
Type cmd in the Windows search bar and open the Command Prompt application
Update the harmony extension: npm update -g roon-extension-harmony
Check if the update is successful, it should print a hierarchy of node modules
Start the extension manager service again
Please supply me with the newly created log file if it still doesn’t work.
I’m investigating how the system can get into this state, it might be triggered by a core that goes down…