> For the complete documentation index, see [llms.txt](https://help.security.gallagher.com/knowledge-hub/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://help.security.gallagher.com/knowledge-hub/products/cc-hardware/controllers/controller-6000/configure/controller-6000-upgrading-downgrading-defaulting-compatibility.md).

# Upgrade, downgrade, default, and check compatibility

Manage Controller 6000 firmware upgrades, downgrades, defaulting, and version compatibility.

The C6000 has had a long and varied life over its current life span. This page collects the most-asked Technical Support questions.

***

## Upgrading the 6000 Controller

> ⚠️ **Version floor:** If the controller is running **v6.10 or lower** firmware, it cannot be brought onto a v8.20 or higher system. It will first need to be upgraded to **v7.10.413 or higher** (v7.10+).

### Can you load later versions of firmware into Command Centre (higher than the version of Command Centre)?

**No.** Command Centre will not allow signed packages to be added to the database that are higher than the version of Command Centre.

### "I have a lot of 6000 controllers on my site running WinCE; I am upgrading to v8.20 (Linux) or higher. What should I do to prepare?"

1. Ensure that the controllers have **DIP Switch 2 OFF** before upgrading the controllers.
2. Contact **Technical Support** with an **FTSupport tool** run from the server with Admin Privileges. This assists Tech Support in identifying controllers that may have issues with upgrading.
3. Look in the alarm messages of the server for **"I2C Bus not responding"** messages. These controllers should be **replaced before upgrading**. Controllers with these issues have been known to cause problems during upgrades.

See [I2C Bus Not Responding](/knowledge-hub/products/cc-hardware/controllers/controller-6000/troubleshoot/controller-6000-i2c-bus-not-responding.md).

***

## Downgrading the 6000 Controller

| From firmware               | Downgrade allowed?                                                 |
| --------------------------- | ------------------------------------------------------------------ |
| **v8.10 or lower (WinCE)**  | Yes. Can be downgraded to any version of WinCE firmware.           |
| **v8.20 or higher (Linux)** | **Cannot** be field downgraded to v8.10 (WinCE) or lower firmware. |

***

## Defaulting the 6000 Controller (DIP Switch 2+8 procedure)

| Firmware running                    | Behaviour after DIP Switch 2+8 procedure                                                                            |
| ----------------------------------- | ------------------------------------------------------------------------------------------------------------------- |
| v7.10.413 to v8.10 firmware (WinCE) | Controller comes back up running **v7.10.413 firmware**                                                             |
| v8.20 (Linux) or higher firmware    | Controller comes back up at the **same version of firmware**, but **completely blank** (no previous events or logs) |

> ⚠️ See also the v8.50+ network compatibility issue documented in [DIP Switch 8 Recovery](/knowledge-hub/products/cc-hardware/controllers/controller-6000/troubleshoot/controller-6000-dip-switch-8-recovery.md). A v8.90 controller can downgrade to v8.40 firmware on DIP Switch 8 and lose the v8.50+ outbound-only connection model.

***

## Compatibility - server / controller version pairing

> ⚠️ **A 6000 running v8.50 and above cannot be connected to a Command Centre server running v8.40 or below.** It **must** be downgraded on a v8.50 or higher Command Centre system. The DIP Switch 2+8 procedure will **not** change the firmware version on the controller.

***

## FAQ - repeated common questions

### Why does the Controller upgrade to v8.10 before migrating to Linux OS?

Factory Controllers go through a **two-step migration process**. First, they get upgraded to v8.10 Controller software where they download necessary files for Linux migration.

### Why do I have to revalidate the certificate after a Controller restarts following the use of DIP Switch 2?

When DIP Switch 2 is ON, the Controller drops its configuration which includes the **pinned certificate**. When the Controller connects to the server after restart, the certificate will not match the server, causing the Controller to remain offline and generate an **'Authentication of \[Controller] failed - invalid certificate'** alarm in Command Centre. A **Revalidate certificate** override is required to bring the Controller online after restart with DIP Switch 2 ON.

See [Revalidate Certificate](/knowledge-hub/products/cc-hardware/controllers/controller-6000/configure/controller-6000-revalidate-certificate.md).

### Why do Controllers restart after a time zone change?

Time Zone changes do not dynamically update in all Linux OS driver modules, thereby requiring a Controller restart to take effect across the entire system.

***

🔗 **Related**

* [Upgrading WinCE to Linux](/knowledge-hub/products/cc-hardware/controllers/controller-6000/configure/controller-6000-upgrading-wince-to-linux.md). The migration procedure and its three methods.
* [DIP Switch 8 Recovery](/knowledge-hub/products/cc-hardware/controllers/controller-6000/troubleshoot/controller-6000-dip-switch-8-recovery.md). The defaulting procedure in detail.
* [I2C Bus Not Responding](/knowledge-hub/products/cc-hardware/controllers/controller-6000/troubleshoot/controller-6000-i2c-bus-not-responding.md). A pre-upgrade check.


---

# 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://help.security.gallagher.com/knowledge-hub/products/cc-hardware/controllers/controller-6000/configure/controller-6000-upgrading-downgrading-defaulting-compatibility.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.
