> For the complete documentation index, see [llms.txt](https://docs.copia.io/docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.copia.io/docs/devicelink/basic/abb-robots.md).

# ABB Robots

## Overview

Copia can back up ABB IRC5 and IRC5P robot controllers over FTP or sFTP.

ABB robot projects use a File List to decide which files on the controller to include and exclude, and which files to leave out of the compare. Copia provides a default File List to get you started:

* **Copia - ABB Robot**
  * Backs up everything in the Start Directory except log files, spreadsheets, PDFs and archives (`.log`, `.csv`, `.pdf`, `.zip`, `.7z`, `.xlsx`).
  * Compares the robot's program and configuration files: `.mod`, `.prg`, `.sys`, `.txt`, `.id` and `.cfg`.
  * Backs up but does not compare files that change on every backup, such as `BackInfo.txt`.

More information about managing default File Lists and creating custom ones is covered in the [File List](/docs/devicelink/sitesandagents/sites/file-lists.md) section.

### Supported controllers

| Controller | Protocol    |
| ---------- | ----------- |
| IRC5       | FTP or sFTP |
| IRC5P      | FTP or sFTP |

Which protocol a controller offers depends on its RobotWare version, its licensed options (for example FTP-1 or FTP-2) and your IT policy. Choose the protocol for each device when you set it up. It is recommended to use sFTP when the controller supports it.

### Agent Requirements

**On the robot controller:**

* FTP or sFTP is turned on.
* You have the username and password of an account that can read the backup folder.

**On the Agent machine:**

* The Agent machine can reach the controller on the network.
* The Agent should be tested to confirm that it can reach the desired files with an FTP or sFTP client, using the same username, password and folder you will enter in Copia.

### Project Configuration

To configure an ABB robot project, you need a repository with a folder to store the robot's backups. Give each robot its own folder, named after the robot or controller.

Click either of the *Add a Project* buttons in the Projects tab.

<figure><img src="https://3704730939-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F4lSQNVI3DZ15V7kjkMCA%2Fuploads%2Fne2KmUwhbSS6N4IXtece%2FWebApp_Projects_FANUC_AddProject.png?alt=media&amp;token=80e5f56f-c026-4621-b3db-5a09d59b4576" alt=""><figcaption></figcaption></figure>

The *Add a new project* configuration dialog will appear which allows you to fully configure the project, devices and job for the project.

<figure><img src="https://3704730939-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F4lSQNVI3DZ15V7kjkMCA%2Fuploads%2FcwaXoFHfSdW3yPKP7gF1%2Fnew_project_flow_a.png?alt=media&amp;token=600d35fd-b785-4180-826b-1d53f4d0b972" alt=""><figcaption></figcaption></figure>

#### Define the Project

Select **ABB Robot** as the *Project Type*, then select an *Agent*. If you have not created an Agent yet, you can assign one later. See the [Agents](/docs/devicelink/sitesandagents/agents.md) section of the documentation.

Press *Save and Continue*.

<figure><img src="https://3704730939-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F4lSQNVI3DZ15V7kjkMCA%2Fuploads%2FRwerPnNku909W3u2ajPt%2FScreenshot%202026-10-21%20at%2012.24.28%E2%80%AFPM.png?alt=media&amp;token=cefdc4b0-bd8a-46f6-829d-e65dbc23e8ab" alt=""><figcaption></figcaption></figure>

Select the *Project Path*: the repository and branch, then an existing folder or a new empty folder for this robot. Press *Save and Continue*.

<figure><img src="https://3704730939-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F4lSQNVI3DZ15V7kjkMCA%2Fuploads%2FZzlfLreJyhGAAh2OWUVD%2FScreenshot%202026-10-21%20at%2012.28.14%E2%80%AFPM.png?alt=media&amp;token=0aca40c4-9e5e-4af6-affe-7c34a36afef3" alt=""><figcaption></figcaption></figure>

The *Project Details* step lets you change the project name and add a description.

Select a **File List**. Start with **Copia - ABB Robot**. If your controller stores files the default list does not cover, or the compare shows changes you do not care about, make a copy of the default list and adjust it. See the [File List](/docs/devicelink/sitesandagents/sites/file-lists.md) section.

Press *Save and Continue*.

<figure><img src="https://3704730939-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F4lSQNVI3DZ15V7kjkMCA%2Fuploads%2FPj21SQn25NgwsL62iqOF%2FScreenshot%202026-10-21%20at%2012.29.18%E2%80%AFPM.png?alt=media&amp;token=b4014865-4c89-48d3-9fe2-e99990102c75" alt=""><figcaption></figcaption></figure>

### Device Configuration

#### Define the Device

Click *Add a Device* and fill in the controller's details. If you have pre-created devices, you can add existing devices instead.

<figure><img src="https://3704730939-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F4lSQNVI3DZ15V7kjkMCA%2Fuploads%2FF66OBr6BabbkWraqupo6%2FScreenshot%202026-10-21%20at%2012.30.27%E2%80%AFPM.png?alt=media&amp;token=dc114845-4df1-4e51-a015-4c876f54aa8b" alt=""><figcaption></figcaption></figure>

| Field              | Required | What to enter                                                                                         |
| ------------------ | -------- | ----------------------------------------------------------------------------------------------------- |
| Device Name        | Yes      | A name you will recognise, usually the robot or controller name, for example `cell4-robot2`.          |
| Description        | No       | Any notes that help your team identify the robot.                                                     |
| Device Username    | No       | An account on the controller that can read the backup folder.                                         |
| Device Password    | No       | That account's password.                                                                              |
| Communication Path | No       | The controller's IP address, for example `192.168.125.1`.                                             |
| Start Directory    | No       | The folder on the controller where the backup should begin. Leave blank to start in the login folder. |
| Protocol           | Yes      | **sFTP** (selected by default) or **FTP**. Choose the one your controller has turned on.              |

Press *Save Device* when complete.

#### Start Directory

By default, Copia begins each backup in the account's login folder on the controller and searches that folder and its subfolders. Use Start Directory to begin in the folder that holds the robot's backup instead. Starting in the right folder also makes each backup faster, because the Agent does not have to search the whole controller.

*Note: If you leave this field blank, the backup will start in the default login folder.*

**Path formatting rules:**

* Always begin the path with `/` and use `/` between folder names (for example `/folder/subfolder`). The leading `/` represents the account's login folder.
* Never include a drive letter such as `C:\` or a controller drive name such as `HOME:`
* Do not use `.` or `..` in your path
* Match the capitalization of the folder names on the controller exactly

**For Example**

If the robot's backup is saved in `BACKUP/Robot2_Latest` under the login folder:

* ✅ Correct: `/BACKUP/Robot2_Latest`
* ❌ Incorrect: `BACKUP/Robot2_Latest` *(the path must begin with `/`)*
* ❌ Incorrect: `/backup/robot2_latest` *(the capitalization must match the controller)*

If the folder does not exist on the controller, the backup fails immediately, and the error message names the folder that could not be found.

{% hint style="info" %}
The Start Directory becomes the top of the backup, so write your [File List](https://claude.ai/docs/devicelink/sitesandagents/sites/file-lists.md) patterns as though the Start Directory were the top of the tree. Do not include the Start Directory folder names in a pattern.
{% endhint %}

### Job Configuration

#### Define the Job

Creating Jobs is similar for all vendor types, and is described in the [Creating Jobs](/docs/devicelink/jobs/creating-jobs.md) section. You can create more than one job for a device if desired.

<figure><img src="https://3704730939-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F4lSQNVI3DZ15V7kjkMCA%2Fuploads%2FvirjaLtKVPvAW5i5g244%2FScreenshot%202026-10-21%20at%2012.35.25%E2%80%AFPM.png?alt=media&amp;token=4f04c533-693e-448b-8aac-e2701b7803a4" alt=""><figcaption></figcaption></figure>

### Submit the Configuration

Once complete, press *Submit Project Setup* to create the Project, Device(s) and Job(s).

<figure><img src="https://3704730939-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F4lSQNVI3DZ15V7kjkMCA%2Fuploads%2FPzJvC2cEFJHq1nLsssrg%2FScreenshot%202026-10-21%20at%2012.35.38%E2%80%AFPM.png?alt=media&amp;token=372e042d-e7f3-4358-807f-20e689d723e5" alt=""><figcaption></figcaption></figure>

### Backup Results

#### What gets saved

Copia saves the files in the Start Directory and its subfolders that the File List includes, in the same folder structure as on the controller.

#### Up to Date or Modified

* **Up to Date:** none of the compared files changed, so Copia keeps the previous version.
* **Modified:** a compared file, such as a `.mod` program module or a `.cfg` configuration file, changed.&#x20;

Files that are backed up but excluded from compare, such as `BackInfo.txt`, are still saved, but a change to them alone does not mark the backup as Modified.

### Troubleshooting ABB Robot Backup Errors

**No Files Were Backed Up**

The backup connected to the controller but found no files to save. Unlike a generic FTP or sFTP project, an empty ABB backup is treated as a failure, because it almost always means the backup is pointed at the wrong place.

**Resolution:**

1. Check the **Start Directory** in the device settings. Make sure it begins with `/`, matches the folder's capitalization, and points at the folder that holds the robot's backup.
2. Check the File List. Patterns must be written as though the Start Directory were the top of the tree.
3. Sign in to the controller with an FTP or sFTP client from the Agent machine, using the same username and password, and confirm you can see the files.
4. Retry the backup.

**Cannot Connect to the Controller**

The Agent could not open a connection to the controller.

**Resolution:**

1. Check the **Communication Path** in the device settings.
2. Check the **Protocol**. If the device is set to sFTP but the controller only offers FTP, or the other way round, the connection fails. Change the protocol to the one the controller has turned on.
3. Check that the controller is reachable. On the Agent machine, open **Command Prompt** and run `ping` with the controller's address.
4. If the controller answers but the connection still fails, a firewall may be blocking it. Ask your network team to allow TCP port 21 (FTP) or 22 (sFTP) from the Agent machine to the controller.
5. Retry the backup.

**Invalid or Missing Protocol**

The device does not have a valid protocol, so the Agent stopped the job. This can happen with devices created without a `protocol` value.

**Resolution:**

1. Open the device settings, choose **FTP** or **sFTP** under **Protocol**, and press *Save Device*.
2. Retry the backup.

#### Sending a Failed Backup to Copia Support

1. In Copia, open the failed job run.
2. Click **Download Debug Files**.
3. Send the file to [Copia Support](https://copia.io/support-requests/) with a link to the job run.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.copia.io/docs/devicelink/basic/abb-robots.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
