> 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-wince-dhcp.md).

# Upgrading WinCE Controllers using DHCP

Upgrade a Windows CE Controller 6000 using DHCP addressing.

When Controllers are brought online using **DHCP**, they get issued a **temporary IP** to communicate to the Command Centre Server but **do not cache information**. The server cannot send down configuration changes due to major changes breaking compatibility in **v8.40**.

This creates the need to keep **DIP Switch 2 ON** until the Controller has been upgraded to match the Command Centre version.

***

## DIP Switch differences - WinCE vs Linux

> ⚠️ **Critical DIP Switch difference:**

| Controller OS                 | Required DIP Switches for DHCP |
| ----------------------------- | ------------------------------ |
| **WinCE OS** (v8.10 or older) | DIP Switch **2 AND 3** ON      |
| **Linux OS** (v8.20 or later) | DIP Switch **2 only** ON       |

Therefore, **DIP Switch 3 must be turned OFF** when the **"Dip Switch 3 must be OFF"** alarm is generated after Controller 6000 is upgraded to v8.10. **If you do not turn OFF DS3, the Controller cannot be upgraded beyond v8.10.**

***

## Process flow

The general process for getting a WinCE Controller upgraded to the latest release version using DHCP:

![DHCP upgrade process flow diagram](https://328339335-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F6bM8WhlBE9BYizPWJaPN%2Fuploads%2Fgit-blob-766ffd5a47451e20dfd4738eae7ad5dee7312918%2FSECHUB-C6000-WINCEDHCP-01-process-flow.png?alt=media)

1. Confirm the DHCP server is reachable from the Controller's subnet.
2. Set DIP Switch 2 (and DIP Switch 3 if WinCE) ON.
3. Power on the controller. It will request a DHCP-issued IP.
4. The controller connects to the server using the temporary IP.
5. Command Centre upgrades the Controller through the WinCE to v8.10 to Linux (or target) upgrade path.
6. After the Controller is upgraded to v8.10 with a Linux migration target, **turn DIP Switch 3 OFF** when the alarm fires.
7. The upgrade continues. DIP Switch 2 remains ON for IP assignment until the final restart.

For the full sequence including BootP and Default IP alternatives, see [Upgrading WinCE to Linux](/knowledge-hub/products/cc-hardware/controllers/controller-6000/configure/controller-6000-upgrading-wince-to-linux.md).

***

🔗 **Related**

* [Upgrading WinCE to Linux](/knowledge-hub/products/cc-hardware/controllers/controller-6000/configure/controller-6000-upgrading-wince-to-linux.md). The consolidated migration page.
* [Upgrading WinCE Controllers using BootP](/knowledge-hub/products/cc-hardware/controllers/controller-6000/configure/controller-6000-upgrading-wince-bootp.md). The BootP alternative.
* [Upgrading WinCE Controllers using Default IP](/knowledge-hub/products/cc-hardware/controllers/controller-6000/configure/controller-6000-upgrading-wince-default-ip.md). The Default IP alternative.


---

# 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-wince-dhcp.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.
