Overlaylayout and other API calls



I’m developing an application which connects to the Xibo API. I’m able to use the overlayLayout call, and the overlaylayout is show, however the duration variable has no effect on duration, and if I remove it completely from the call, the player responds with an error: ‘Player action connection failed. E = Duration not provided’ (duration is optional according to the API documentation).
The duration also is nowhere near the duration set for the selected layout in the CMS. The layouts duration is set to 10 seconds, but the overlay sits on the screen for 60 seconds (collect interval time). I attempted to hack this by using the revertToSchedule call, but this also doesn’t work.

On revertToSchedule call the API returns 204 and informs that the call was succesful and that the command was sent to the correct player, but nothing happens. This also is the result with the changeLayout call.

Here’s error message I found from the players (player version: 1.8.10) log which received the commands:

ScheduleManagerThread|25/02/2019 10.37.56|Error|ScheduleManager
 - Run|Exception in Run: Collection was modified; enumeration operation
 may not execute.

The os is Windows. I also tested this with player version 1.8.12 and the error persists. The CMS in use is also version 1.8.12. The CMS was recently updated but the problem was already in the version 1.8.11. I also tried reconfiguring XMR and reinstalling the player after removing all files associated with it, but the same errors occured. What could be the cause of this? I assume that the error is somewhere on the player since the API returns no error, but the log does. Also many other API requests do work without troubles.
Should these API calls work? If not is there some place where I can see which features are implemented and which aren’t?


Yes, changeLayout, revertToSchedule and overlayLayout all do work, all of them require XMR to be correctly configured and working and the date/time to be correctly set.
As those are player actions, they rely on the XMR to push messages to the player.

for changeLayout, the downloadRequired is important parameter, if it’s set to 0 and player does not have that layout downloaded yet, then it will not show it.

It’s also important that all these actions operate on displayGroupId not displayId
ie it can be sent to actual display group that you created or to individual display, as each display has display specific displayGroupId as well.


Thanks for the quick response.

I’ll check all the things you mentioned.


The CMS was installed with docker, and the XMR public address is to my knowledge correctly set: tcp://example.com:9505
Is there some other settings which could be incorrect for the XMR?
Date and time are both in the player and CMS set accurately (both are sychronized to local time). Is there some other time related settings I should check?
Should the changeLayout action change the layout immediately? Changelayout also doesn’t care about the duration variable. It starts after arbitrary time and plays the layout for 30-60s.
I use displayGroupId in the calls and it should be correct since the players are able to receive the calls and execute them partly.
This doesn’t seem to be a common problem, so the error most certainly is in some part of the installation or the configuration. I also tested the player in a completely different pc-setup. It made no difference.


If anyone faces the same issue it was due to time settings as is evident from the errors in duration and timing. In my case the player pc was for some reason 1 minute out of sync. Changing the time according to the CMS time solved some of the problems. Not everything is working though. The duration’s still aren’t completely accurate. 3 seconds is more like 5, probably because the time isn’t the same to a second, but at least it works. Option for playing content from when the player receives the message to where it is when the duration is added to its time would be nice.