---
title: 'Tutorial: Upgrade the OpenVPN DCO Module'
canonical: https://openvpn.net/as-docs/v3/tutorials/tutorial--upgrade-openvpn-dco/
product: Access Server Docs
description: Upgrade the OpenVPN DCO module on Access Server. Learn when upgrades are automatic, how to update manually, and how to reload DCO without rebooting.
keywords: data channel
---

# Tutorial: Upgrade the OpenVPN DCO Module

## Overview

This tutorial shows you how to upgrade the OpenVPN Data Channel Offload (DCO) module installed on your Access Server.

In Access Server 3.x, DCO is enabled by default.

- If you install or upgrade Access Server using the [installation script](https://openvpn.net/as-docs/v3/install-script.md) (`install.sh`), the DCO module is installed and enabled automatically.
- If you install or upgrade Access Server using your system package manager (`apt`, `yum`, etc.), the DCO module may not be installed and may need to be installed manually.

## Prerequisites

- Access Server with OpenVPN DCO enabled.
- Root access to the server console.

## Step 1: Upgrade DCO (if needed)

How you upgrade DCO depends on how you installed or upgraded Access Server.

### If you used the installation script (recommended)

If you installed or upgraded Access Server using the [installation script](https://openvpn.net/as-docs/v3/install-script.md), **you don't need to install DCO manually**.

The correct DCO module is installed automatically.

Skip to [Tutorial: Upgrade the OpenVPN DCO Module](https://openvpn.net/as-docs/v3/tutorials/tutorial--upgrade-openvpn-dco.md).

### If you used your system package manager

If you installed or upgraded Access Server using your system package manager (`apt`, `yum`, etc.), you need to install the DCO module manually.

Continue with the steps below.

### Upgrade DCO on Ubuntu or Debian

1. Connect to the console and get root privileges.
2. Update the system:

   ```
   apt update
   apt upgrade
   ```
3. Install or update the DCO module:
   - For Access Server 3.2.0 or newer:

     ```
     apt install ovpn-dkms
     ```
   - For Access Server 3.1.0 or earlier:

     ```
     # No additional package required
     ```

#### Upgrade DCO on Red Hat Enterprise Linux

1. Connect to the console and get root privileges.
2. Update the system:

   ```
   yum update
   ```
3. Install or update the DCO module:
   - For Access Server 3.2.0 or newer:

     ```
     yum install kmod-ovpn
     ```
   - For Access Server 3.1.0 or earlier:

     ```
     # No additional package required
     ```

> **Note**
>
> If you're running RHEL 9.8 with Access Server 3.1.x or older, upgrade the `ovpn-dco` package to v0.2.20260526 or newer. The previous package version fails to build on RHEL 9.8 due to a kernel compatibility issue. RHEL 8 and 10 users aren't affected.
>
> Run the following command to update:
>
> ```
> yum update ovpn-dco-dkms
> ```
>
> After updating, continue to Step 2 to reload the module.

## Step 2: Apply the updated module

After upgrading, you need to load the updated DCO module.

### Option A: Reboot (recommended)

1. Reboot your system:

   ```
   reboot
   ```

### Option B: Reload the module without rebooting

> **Note**
>
> Use this option if you can't reboot your server.

- For Access Server 3.2.0 or newer:

  ```
  systemctl stop openvpnas
  modprobe -r ovpn
  modprobe ovpn
  systemctl start openvpnas
  ```
- For Access Server 3.1.0 or earlier:

  ```
  systemctl stop openvpnas
  modprobe -r ovpn_dco_v2
  modprobe ovpn_dco_v2
  systemctl start openvpnas
  ```

## Step 3: Verify DCO is active

After the upgrade, confirm that DCO is active.

### From the Admin Web UI

1. Sign in to the Admin Web UI.
2. Click **Status**.
3. On the **Overview** tab, locate **Server Details**.
4. Confirm that DCO is shown as enabled. Result:
   - ✅ **Pass:** DCO is shown as enabled → no further action needed.
   - ❌ **Fail:** DCO is not enabled → return to Step 1 or review troubleshooting.
5. Click **VPN Server**.
   - The **Network Settings** tab is displayed.
6. Click the **Data Channel Offload** tab.
   - The DCO status displays with additional details.

### From the CLI

You can also confirm DCO availability and usage from the command line.

1. Connect to the console and get root privileges.
2. Check DCO availability:

   ```
   sacli support | grep 'ovpn-dco availability'
   ```

   - Example output for Access Server 3.2.0 or newer:

     ```
     ovpn-dco availability: True, ovpn version: ovpn-net-next/main-7.x
     ```
   - Example output for Access Server 3.1.0 or earlier:

     ```
     ovpn-dco availability: True, ovpn-dco version 0.2.x
     ```
3. Verify that DCO is actively in use by the OpenVPN daemon:

   ```
   ip -details link show
   ```
4. Look for:
   - **3.2.0 or newer:** `ovpn`
   - **3.1.0 or earlier:** `ovpn-dco`

   > **Tip**
   >
   > If DCO is available but not active, it may not be enabled or loaded correctly.
5. Check DKMS module status:

   ```
   dkms status
   ```

   - Example output for 3.2.0 or newer:

     ```
     ovpn/7.x.x, <kernel>, x86_64: installed
     ```
   - Example output for 3.1.0 or earlier:

     ```
     ovpn-dco/0.2.x, <kernel>, x86_64: installed
     ```
6. Check module details:
   - For 3.2.0 or newer, run:

     ```
     modinfo ovpn
     ```
   - For 3.1.0 or earlier, run:

     ```
     modinfo ovpn-dco-v2
     ```
   - Result:
7. Review the outputs from the commands above and use them to determine whether DCO is active:
   - **✅ Pass:**
     - `ovpn-dco availability: True`
     - The correct module appears (`ovpn` for 3.2.0+, or `ovpn-dco` for earlier versions).
     - The DKMS module shows as installed.
   - ❌ **Fail:**
     - Availability is `False`
     - The DCO module is missing or not loaded.
     - No DCO interface appears in the output.

---

Prev: [Tutorial: Install, Verify, and Troubleshoot OpenVPN DCO in Access Server](https://openvpn.net/as-docs/v3/tutorials/tutorial--turn-on-openvpn-dco.md)
Next: [Clustering, Failover, and Smart Routing](https://openvpn.net/as-docs/v3/tutorials/clustering-failover-and-smart-routing.md)
Index: https://openvpn.net/as-docs/llms.txt
