How I’ve migrated from XUbuntu 22.04 LTS to 24.04 LTS

Table of Contents

How I upgrade my workstation

My personal workstation is always on the latest XUbuntu LTS available. LTS stands for Long Term Support and offers a five year support. This is perfect for a workstation that should always be functional.

I never use the upgrade procedure to go from one LTS to the next one. In the past, I’ve experienced way to many problems with legacy configuration leftovers that were silently breaking something.

Since XUbuntu 20.04 LTS I now perform fresh install and rely on chezmoi to deploy my tools and configuration.

XUbuntu 24.04: What bothered me in my first 24 work hours

The Tap touchpad to click was not working

I’m now quite used to tap my laptop touchpad to click.

On the two laptop workstations I’ve installed in XUbuntu 24.04 LTS the default touchpad behavior was doing nothing on tap.

This is easily fixable using the Mouse and Touchpad settings.

Search for 'touchpad' in the XFCE menu Search for 'touchpad' in the XFCE menu

I just had to select my touchpad in the Device list:

Select 'touchpad' in device list Select 'touchpad' in device list

go to the Touchpad tab menu and enable the Tap touchpad to click setting:

Enable the 'Tap touchpad to click' setting Enable the 'Tap touchpad to click' setting

NetworkManager IPv4 Duplicate Address Detection enabled by default

Xubuntu 24.04 ships network-manager 1.46.0-1ubuntu2 by default.

According to NetworkManager CHANGELOG, v1.46 enables IPv4 DAD (Duplicate Address Detection) by default.

What is IPv4 DAD ?

IPv4 Address Conflict Detection is defined in RFC 5227 and well described in Fedora Enable IPv4 Address Conflict Detection blog post:

A common source of networking issues is the presence of duplicate IPv4 addresses in the same physical network. Such problems are quite common, and at the same time hard to diagnose for users.

To the rescue comes RFC 5227 (“IPv4 Address Conflict Detection”) which provides a mechanism to detect address conflicts. A host implementing Address Conflict Detection (from now on “ACD”) sends ARP probes for each IP address it wants to use; if another host replies, the address is already in use and can’t be configured on the interface.

At first glance, this looks like a very good feature and it should protect me from human mistakes in my network configuration.

Why was I bothered by IPv4 DAD ?

To understand why IPv4 DAD had bothered me, I should detail how I’m used to work with my laptop.

At work, we do have one and only one IP address for our workstation. This address will be attributed by the DHCPv4 server for the wired connection and the WiFi connection.

I do want to seamlessly transition from my RJ-45 connection to my WiFi connection and do not want to loose any connection when I switch from one connection to the other.

I’m used to have both my wired connection and WiFi connection alive at the same time. When I’m connected using RJ-45, I want my data to use my wired connection.

To achieve this, I’m using route metrics to prefer a network path over another one.

IP route metrics

On the example above, connection enx00216725a1a0 will be preferred over connection wlo1 since it has a lower metric / cost.

I only have one IP address for both my wired and WiFi connection.

This is where IPv4 DAD kicks in with error messages when I’m plugging my RJ-45 connection:

Apr 29 11:09:41 fqdn.example.org NetworkManager[5141]: <info>  [1714381781.4493] device (enxc03abac33552): Activation: (ethernet) Stage 2 of 5 (Device Configure) successful.
Apr 29 11:09:41 fqdn.example.org NetworkManager[5141]: <info>  [1714381781.4501] device (enxc03abac33552): state change: config -> ip-config (reason 'none', sys-iface-state: 'managed')
Apr 29 11:09:41 fqdn.example.org NetworkManager[5141]: <info>  [1714381781.4505] dhcp4 (enxc03abac33552): activation: beginning transaction (timeout in 45 seconds)
Apr 29 11:09:41 fqdn.example.org NetworkManager[5141]: <info>  [1714381781.4547] dhcp4 (enxc03abac33552): state changed new lease, address=134.158.231.47, acd pending
Apr 29 11:09:41 fqdn.example.org NetworkManager[5141]: <warn>  [1714381781.4577] device (enxc03abac33552): IP address 192.168.1.100 cannot be configured because it is already in use in the network by host A1:7F:EB:75:AA:62
Apr 29 11:09:41 fqdn.example.org NetworkManager[5141]: <info>  [1714381781.4725] dhcp4 (enxc03abac33552): state changed new lease, address=192.168.1.100, acd conflict

The important message is acd conflict. acd stands for Address Conflict Detection.

It rightfully detects that another host is holding my IPv4 address: my workstation.

acd is a very nice feature to have. But in my particular situation, this is expected situation that my other network card already has the IPv4 address.

How to disable acd ?

NetworkManager developers already have implemented a simple option to disable acd for a connection.

All I had to do is modify the ipv4.dad-timeout for both my wired and WiFi connection.

It was set to -1 by default. Which means to use the default behavior which is to perform acd.

I had to set it to 0 to disable acd for my connections:

❯ nmcli connection modify $CONNECTION_NAME ipv4.dad-timeout 0
❯ nmcli connection show $CONNECTION_NAME |grep dad
ipv4.dad-timeout:                       0 (off)

where $CONNECTION_NAME should be replaced by your connection name.