External Control node stays yellow in PolyScope X (ROS2 connected, RViz working)

Hi everyone,

I’m trying to use External Control with a UR7e on PolyScope X, but I’m stuck with the node always staying yellow and cannot press “Play”.

Here is my setup:

  • Robot: UR7e

  • PolyScope X

  • External Control URCap installed(1.1.0)

  • ROS2 driver running on my PC

What I have confirmed:

  • Robot and PC can ping each other

  • ROS2 driver is running

  • Port 50002 is listening (0.0.0.0:50002)

  • RViz can visualize the robot and follows real robot motion

  • External Control IP is set to my PC IP (192.168.56.1:50002)

Issue:

  • External Control node stays yellow

  • “Play” button is disabled

Has anyone encountered this issue with PolyScope X?
Could this be a URCap compatibility problem?

Thanks!

Hi, did you try pressing the “Update program” button? That’s what makes the program node fetch the Script code from the ROS machine. After that, the node should become valid and you should be able to play your program.

Hi @zhengyutao ,

Any updates on this issue? I have been having the exact same problem and have been unable to resolve it. I have tried clicking update program but that didn’t work either.

In general, this can have the following reason:

  • The ROS driver isn’t running-> Start the driver
  • The ROS driver is started in headless mode (In that case, the server providing the program isn’t running)-> Do not pass headless_mode:=true at startup
  • The IP address is configured incorrectly-> Setup the correct IP address of the ROS machine in the application screen
  • The script server isn’t reachable because either of
    • A firewall is preventing access to port 50002-> Add a firewall rule for port 50002 (and 50001, 50003, 50004 while you’re at it)
    • The driver is running behind a NAT ( e.g. in a container such as Docker, VirtualBox, WSL2, etc) and therefore, its 50002 port isn’t available.-> Add a port forwarding for ports 50001-50004 or-> Forward the host network device to the container

Debugging this should be possible by logging into the robot controller and looking at the logs from the ExternalControl URCap:

root@ur-20245599999:~# docker logs -f universal-robots_external-control_external-control-backend
...
2026-07-14 08:07:47,581 - __main__ - INFO - Received request for port 50002 and robot IP 192.168.178.67
2026-07-14 08:07:47,581 - __main__ - INFO - Connecting to robot at 192.168.178.67:50002
2026-07-14 08:07:47,584 - __main__ - ERROR - Error connecting to robot at 192.168.178.67:50002: Connectivity problem with 192.168.178.67:50002: [Errno 111] Connection refused
2026-07-14 08:07:47,591 - werkzeug - INFO - 172.18.0.1 - - [14/Jul/2026 08:07:47] "GET /50002/192.168.178.67 HTTP/1.0" 200 -

In that example I didn’t have the driver running, thus my host system gives a “connection refused”, since nothing is running on that port.

For the ssh login you will need to enable it in the settings and for the administrator password, see Password - Admin