XMR Reboot command not working, on cloud and internal

We had the reboot command working perfectly on our first test of xibo, which was hosted on the cloud.

We then progressed to hosting internally using docker (can’t remember the version but i think it was 1.8.3) and reboot didn’t work.

We then asked the question on here some time ago and was told to make sure XMR port 9505 is open which it is and is having data through it. We have also switched firewalls in the time that we’ve been trying to get this working.

Forgot to mention we are now on newest version of everything.

Today we tried again using the cloud and still the android box wont reboot.

We’re all out of ideas, last time you said XMR is working if you can get an instant screenshot. Which we can’t.

Any help would be appreciated, we really need this to work.

What you’ve written is correct. XMR is used for the reboot process too, so if your screenshots don’t come back straight away then it’s unlikely that XMR is working properly.

The Cloud setup should have XMR working correctly. The Players will need to be able to connect to port 9505 outbound, so perhaps something in your location is blocking that going through the firewall?

You can telnet to XMR to test connectivity.

telnet myxiboserver.domain.com 9505

image

You’ll see something like that if connection is possible. If it just hangs and times out, then something is blocking your access to XMR.

If the connection is possible, then next reset your XMR configuration for each Player. Edit the Display, and on the last tab, tick the box to reset XMR configuration. Then save.

Now wait for the Player to re-register with the CMS. Once it does, try screenshot again.

If that works, then your reboot command should work (providing your Display Profile has the correct command to reboot your Android device defined in it of course)

Thank you I will play around.

Right telnet to our internal xibo failed so that’s one of the errors (don’t know why it fails through internal but hey ho).

Telnet to your cloud came up with this (which i think is what you said it should if it’s working).

Reconfigured XMR and still nothing.

I’ve connected to that CMS and the Player is definitely responding to XMR.

When I request a screenshot, it comes back straight away.

You have no reboot command defined in the Display Settings profile, so running a reboot command won’t do anything.

You need to enter the correct command in the “Command” box there (which is in Display Settings → Android → Edit)

Most recent Android boxes will want one of the following:

svc power reboot
am start -a android.intent.action.ACTION_REQUEST_REBOOT
setprop sys.powerctl reboot
reboot

Once you’ve completed that, save, then go over to the Displays page, run “Collect Now” to ensure the Player gets the updated command definition, and then it should respond to a reboot.

Be sure to leave “Validation” empty. You don’t require it for a reboot.

Thank you for that feel very silly about that one.

But do you have any idea why its not working on our docker installs?

If you can’t connect to XMR with telnet, then I’d suggest there’s a firewall blocking access, or you’re running XMR on a different port.

What does docker ps show on your host machine?

i’m going to check now but just for some info we’re running through an nginx reverse proxy

That won’t affect XMR. XMR can’t be run through an HTTP reverse proxy server, as it isn’t using the HTTP protocol. You need to expose the port it’s listening on directly to the Players.

okay cool, here is what docker ps returned.

right just ran telnet direct to the ip and it done exactly what it should

then it lost connection

I don’t know how long it will remain connected without you sending traffic.

It sounds like you just need to enter your IP in the XMR Address setting on the CMS settings page then

eg tcp://10.10.10.10:9505

rather than the address of your reverse proxy. Again, the Player will need to collect and pickup that change before it will connect to the new address.

We already use the direct IP to try and fix this issue and it still didn’t work.

Well we know XMR itself is working as intended because you can telnet to it. Is there a firewall between you and the XMR service somewhere? Perhaps that’s cutting you off.

Again, you’ll need to reconfigure XMR on the Display record to be sure that the Player and CMS keys are in sync.

okay i did forget to reconfigure ill try that quick

OK. Once you’ve reconfigured, you need to allow time for the Player to collect from the CMS before anything will work.

Was this a fresh Docker install, or one you’ve converted? If you converted it, did you set the correct XMR address in the database per the guide?

That worked, thank you for that. Us not understanding xibo enough I think.

Basic rule of thumb. If you disconnect a Player from a CMS and reconnect it, or reinstall the Player, then you need to reconfigure XMR to be sure that’s working properly.

The Player generates a key when it is first configured, and it sends the public portion of that to the CMS, which remembers it. If you then cause that key to be changed on the Player side, the key the CMS has no longer matches, which means the Player can no longer decrypt those messages from the CMS.

Re configuring XMR causes the CMS to forget the old saved key so it can accept a new one from the Player.