## Configure the robot

### IP adresses

Your robot must be accessible via the network from your PC. You must therefore set consistent IP addresses and have the same subnet mask.

To change the IP address in Polyscope, go to the menu at the top right / Settings / System / Network.

### Enable services

For each protocol you intend to use (RTDE, Dashboard, Primary, ...), it is necessary to activate it in the settings for security reasons.

Go to the menu at the top right / Settings / Security / Services.

![enable remote protocols](/universal-robots/enable-remote.png)

### Inbound connection

In the menu at the top right / Settings / Security / General, you should not have any restrictions on incoming connections, at least none that prevent access to the TCP ports of the protocols used by the SDK.

![inbound connection](/universal-robots/inbound-connection.png)

### Remote mode

To enable command sending (Dashboard command, script sending via Primary Interface, RTDE writing), you must switch to remote mode using the icon at the top right of Polyscope.

To activate this button, you must enable remote mode in the settings.

![switch remote](/universal-robots/switch-remote.png)

![Enable remote control](/universal-robots/enable-remote-control.png)

### Firewall and antivirus

It is common for your PC's antivirus and firewall protections to restrict connections to these protocols specific to Universal Robots. If the connection fails, you can temporarily disable your protections to test the connection, if possible.

You can then add the exception to your firewall configuration. The TCP ports used are described in the `Services` menu of the Polyscope security settings.

## Connect

After creating an instance `UR` of your cobot, you need to call the Connect method to initiate communication with the robot.

This method takes as parameter a `ConnectParameters` object which describes the functionalities to be activated and the parameters of each feature.

The `Connect()` method can throw a `InvalidLicenseException` if your trial period is over or if your license key is invalid.

Please refer to the specific page for each protocol to understand the parameters.

**C# : Connect**
```csharp
﻿using UnderAutomation.UniversalRobots;
using UnderAutomation.UniversalRobots.Rtde;

public class Connect
{
  static void Main(string[] args)
  {
    // Create a new robot instance
    var robot = new UR();

    // Create parameters and enable all services you need
    var parameters = new ConnectParameters("192.168.0.1");

    // Enable Primary Interface
    parameters.PrimaryInterface.Enable = true;

    // Select exchanged data
    parameters.Rtde.Enable = true;
    parameters.Rtde.Frequency = 500; // Hz
    parameters.Rtde.InputSetup.Add(RtdeInputData.InputDoubleRegisters, 42);
    parameters.Rtde.InputSetup.Add(RtdeInputData.StandardAnalogOutput0);
    parameters.Rtde.OutputSetup.Add(RtdeOutputData.ActualTcpPose);
    parameters.Rtde.OutputSetup.Add(RtdeOutputData.ActualTcpSpeed);
    parameters.Rtde.OutputSetup.Add(RtdeOutputData.ActualTcpForce);
    parameters.Rtde.OutputSetup.Add(RtdeOutputData.ActualCurrent);
    parameters.Rtde.OutputSetup.Add(RtdeOutputData.InputIntRegisters, 0);

    // Enable Dashboard commands
    parameters.Dashboard.Enable = true;

    // XML-RPC server on port 50000
    parameters.XmlRpc.Enable = true;
    parameters.XmlRpc.Port = 50000;

    // Socket server on port 50001
    parameters.SocketCommunication.Enable = true;
    parameters.SocketCommunication.Port = 50001;

    // Enable SSH commands and files
    parameters.Ssh.EnableSsh = true;
    parameters.Ssh.EnableSftp = true;
    parameters.Ssh.Username = "ur";
    parameters.Ssh.Password = "easybot";

    // Connect to the robot
    robot.Connect(parameters);

    //...

    // Work with library

    //...

    robot.Disconnect();
  }
}
```

**Members of ConnectParameters**
```csharp
public class ConnectParameters {
    public ConnectParameters()

    public ConnectParameters(string ip)

    public DashboardConnectParameters Dashboard { get; set; }

    public string IP { get; set; }

    public InterpreterModeConnectParameters InterpreterMode { get; set; }

    public bool PingBeforeConnecting { get; set; }

    public PrimaryInterfaceConnectParameters PrimaryInterface { get; set; }

    public RtdeConnectParameters Rtde { get; set; }

    public SocketCommunicationConnectParameters SocketCommunication { get; set; }

    public SshConnectParameters Ssh { get; set; }

    public XmlRpcConnectParameters XmlRpc { get; set; }
}
```

## Disconnect

The `Disconnect()` method stops all services.

## Try it with the Windows example

Visit the [Download page](/universal-robots/download) to get the latest desktop example.

![](/universal-robots/WinformsScreenshots/Connect.jpg)