NetworkManager plays a critical role in managing network connectivity on most modern Linux distributions. It automatically connects to both wired and wireless networks while remembering saved SSIDs and connection profiles. However, NetworkManager relies on interaction of multiple layered software components. A failure in any component can collapse overall network connectivity.

This comprehensive troubleshooting guide targets NetworkManager issues on openSUSE systems. It dives into technical details around NetworkManager architecture, explains various failure scenarios, and provides detailed diagnostics steps and remediation actions. Follow through sections sequentially or jump to the relevant parts for your situation.

Understanding NetworkManager Architecture

NetworkManager depends on multiple components functioning correctly:

networkmanager-architecture.png

  • The NetworkManager daemon process running as networkmanagerd handles overall coordination and device control logic.

  • Underlying network device drivers like WiFi firmware and ethernet modules connect to actual hardware.

  • Plugins add capabilities like VPN support to NetworkManager.

  • The nmcli and nmtui utilities facilitate CLI and interactive user configuration.

  • The desktop environment applet enables connecting to networks and basic settings modification.

Issues in any layer can manifest as NetworkManager failures like:

  • Unable to auto-connect on boot
  • Missing manual wired/WiFi connections
  • Connection dropouts or throttled speeds
  • Being stuck in offline mode randomly

So troubleshooting involves checking each component systematically.

Common NetworkManager Failure Modes

These are frequent failure modes before diving into specifics:

  1. Software crash – The NetworkManager daemon crashes repeatedly causing restart failures.
  2. Hardware errors – Network adapters have missing firmware, faulty drivers, or get physically disconnected.
  3. Authentication failures – Incorrect WiFi passwords prompt repeated connect efforts.
  4. IP address conflicts – Static IP collisions with other machines on network.
  5. Firewall issues – Traffic getting blocked due to default openSUSE firewall.
  6. Service conflicts – Running other networking daemons like Networkd in parallel.

With this context, proceed to resolutions.

Step 1 – Verify NetworkManager Service Status

Check status of the NetworkManager systemd unit:

$ systemctl status NetworkManager
● NetworkManager.service - Network Manager
     Loaded: loaded (/usr/lib/systemd/system/NetworkManager.service; enabled; vendor preset: disabled)
     Active: active (running) since Mon 2022-12-26 05:48:34 UTC; 9min ago
       Docs: man:NetworkManager(8)
   Main PID: 452 (networkmanagerd)
     Status: "Processing requests..."
      Tasks: 3 (limit: 2359)
     Memory: 5.5M
     CGroup: /system.slice/NetworkManager.service
             └─452 /usr/sbin/networkmanagerd -n

Dec 26 05:48:34 linux systemd[1]: Starting Network Manager...
Dec 26 05:48:34 linux NetworkManager[452]: <info>  [1672065314.5161] manager: (eth0): new Ethernet device (/org/freedesktop/NetworkManager/Devices/8)
Dec 26 05:48:34 linux kernel: IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
Dec 26 05:48:34 linux NetworkManager[452]: <info>  [1672065314.5252] device (eth0): state change: unmanaged -> unavailable (reason ‘managed‘) [10 20 2]
Dec 26 05:48:34 linux NetworkManager[452]: <info>  [1672065314.5432] device (wlan0): driver ‘ieee80211_crypt_wep‘ does not support 4-addr WPS
Dec 26 05:48:34 linux NetworkManager[452]: <info>  [1672065314.5591] manager: startup complete
Dec 26 05:48:34 linux systemd[1]: Started Network Manager.

The Active: active (running) line indicates NetworkManager service is working correctly. Any other status like inactive (dead) means it failed to load.

Restart NetworkManager if inactive:

$ sudo systemctl restart NetworkManager

Then recheck status until its shown as active.

Step 2 – Look for Errors in Logs

Check NetworkManager‘s journal logs for any errors:

$ journalctl -xe -u NetworkManager
-- Logs begin at Thu 2022-12-01 09:30:04 UTC. --
Dec 26 06:21:01 linux NetworkManager[634]: <info>  [1672067261.2736] manager: (wlan0): new 802.11 WiFi device (/org/freedesktop/NetworkManager/Devices/2)
Dec 26 06:21:01 linux kernel: iwlwifi 0000:00:14.3: Direct firmware load for iwlwifi-QuZ-a0-hr-b0-52.ucode failed with error -2
Dec 26 06:21:01 linux kernel: iwlwifi 0000:00:14.3: Direct firmware load for iwlwifi-QuZ-a0-hr-b0-53.ucode failed with error -2 
Dec 26 06:21:01 linux NetworkManager[634]: <warn>  [1672067261.3287] device (wlan0): failed to find WiFi firmware file: -2
Dec 26 06:21:01 linux NetworkManager[634]: <info>  [1672067261.3289] device (wlan0): state change: unmanaged -> unavailable (reason ‘firmware-missing‘, sys-iface-state: ‘managed‘) [120 30 39]

The "failed to find WiFi firmware" error clearly indicates the WiFi drivers are not functioning correctly.

Dig through logs to uncover such errors related to:

  • Missing firmware files
  • Driver failures
  • Network adapter hardware issues
  • Authentication rejections
  • IP address conflicts
  • API errors

Step 3 – Toggle NetworkManager Device Control

Force NetworkManager to recheck device states:

$ nmcli general hostname

$ sudo nmcli dev set enp0s25 managed no
$ sudo nmcli dev set enp0s25 managed yes

This essentially powers down devices and reinitializes connection. Helps recover from transient glitches.

Step 4 – Flush Existing Connections

Stale connection data can also cause perplexing connection failures:

$ nmcli connection delete Wired\ Connection\ 1

$ nmtui        
# goto Activate Connection > Deactivate interface

$ nmtui
# goto Activate Connection > Activate interface

Flush connections for both wired and wireless. Then retry networking.

Step 5 – Restart Network Adapters

Restarting adapters recovers from device driver crashes:

$ nmcli device disconnect enp0s25
$ nmcli device connect enp0s25

Alternatively bounce hardware power for adapters via hardware switch or Settings applet.

Step 6 – Check for Conflicting Services

In some cases, other networking management services like networkd may conflict:

$ systemctl status networkd
● networkd.service - Network Service
     Loaded: loaded (/usr/lib/systemd/system/systemd-networkd.service; disabled; vendor preset: disabled)
     Active: active (running) since Mon 2022-12-26 06:48:34 UTC; 1h 5min ago
TriggeredBy: ● systemd-networkd.socket
       Docs: man:systemd-networkd.service(8)
             man:systemd-networkd.socket(8)
   Main PID: 477 (systemd-network)
     Status: "Processing requests..."
      Tasks: 1 (limit: 2359)
     Memory: 3.4M
     CGroup: /system.slice/systemd-networkd.service
             └─477 /usr/lib/systemd/systemd-networkd

Dec 26 06:48:34 linux systemd[1]: Starting Network Service...
Dec 26 06:48:34 linux systemd-networkd[477]: Enumeration completed
Dec 26 06:48:34 linux systemd[1]: Started Network Service.
Dec 26 06:48:37 linux systemd-networkd[477]: enp0s25: Gained IPv6LL

Disable conflicting services before NetworkManager troubleshooting:

$ sudo systemctl stop networkd  

$ sudo systemctl disable networkd

Step 7 – Reinstall NetworkManager Packages

As last resort, force reinstallation using Zypper:

$ sudo zypper remove NetworkManager   

$ sudo zypper install NetworkManager

Then reboot and retry network connectivity. This will freshly set up NetworkManager if previous steps failed to resolve the issues.


NetworkManager elegantly handles the chaos of managing wired, WiFi, 3G modems, VPN connections and more. But its integration complexity can cause hard to diagnose connection failures at times. This guide should help analyze and address most commonly faced NetworkManager issues on openSUSE systems. Share your feedback if I missed any other troubleshooting scenarios.

Similar Posts