Is in remote control Dashboard Server command returns a value fixed at controller boot, does not reflect later Local/Remote switches

Hi everyone,

I’m developing a URCap (Swing Toolbar contribution) that reads the robot’s
Local/Remote Control status via the Dashboard Server and uses it to drive
a digital output.

Environment:

  • PolyScope: 5.25.2 (e-Series)
  • URCap API: 1.18.0
  • Tested both in URSim and on a real robot

Issue:
The is in remote control command seems to return a value that is fixed
at the moment the controller boots, and does not update afterward even
when I switch between Local and Remote Control from the top-right button
on screen.

Example: if the robot boots while in Remote Control, is in remote control keeps returning true forever, even after switching to Local
Control. If it boots in Local Control, it keeps returning false forever,
even after switching to Remote Control.

What I’ve tried:

  1. Reusing a single persistent TCP connection to port 29999, sending the
    command periodically → stuck at the boot-time value.
  2. Opening a brand-new TCP connection for every single query (connect,
    read banner, send command, read response, disconnect) → same
    symptom (though in this case it seemed to just default to false
    regardless of the boot-time state).

Since two very different connection strategies produced the same kind
of “stuck” behavior, I don’t think this is an issue in my client code,
but I’d like to confirm.

Relevant code (Java, called once per second):

private Boolean queryIsInRemoteControl() throws IOException {
    Socket socket = new Socket();
    try {
        socket.connect(new InetSocketAddress("localhost", 29999), 3000);
        socket.setSoTimeout(3000);
        BufferedReader reader = new BufferedReader(
            new InputStreamReader(socket.getInputStream(), StandardCharsets.UTF_8));
        OutputStream writer = socket.getOutputStream();
        reader.readLine(); // discard banner
        writer.write("is in remote control\n".getBytes(StandardCharsets.UTF_8));
        writer.flush();
        String response = reader.readLine();
        return "true".equalsIgnoreCase(response.trim());
    } finally {
        socket.close();
    }
}

Question:
Is this expected behavior for is in remote control on PolyScope 5.25.2?
Is there a different/updated command or interface (Dashboard, Primary,
RTDE, etc.) that correctly reflects real-time Local/Remote status? Any
guidance would be appreciated.

Thanks!

test-1.0-SNAPSHOT.urcap (15.0 KB)

I just tried on my 5.25.1 URSim and it responded with the expected answer (false when in local/automatic, true when in remote-control).

I tried it on one of my 5.25.2 real robots and it returned ‘true’; however it is in use and I didn’t want to take it out of remote control just now. I know I have seen it return false in the past when it was not in remote control, though that wasn’t with 5.25.2.

Have you tried making these queries direct from another PC rather than from within the URCap? Or even just from the SSH console of the robot? And have you tried adding more logging to your code to see what text response is actually coming back and being compared (sanity check)?