Title photo
frugal technology, simple living and guerrilla large-appliance repair
Mon, 28 Sep 2015

Working on my networking issue after suspend/resume in Fedora 22

Briefly, for no good reason, my networking on the HP Pavilion g6 2210-us is broken after suspend/resume in Fedora 22.

It's not broken on live Fedora 22 and Xubuntu 15.04 images. It wasn't broken a week ago in the Fedora 22 system I've been upgrading since I started it with F18 in 2012.

I should probably just reinstall. And I probably will. Xubuntu on a new drive. Soon.

But until then, I need networking to return after a suspend/resume.

I've tried lots of things. Nothing has really worked. Closest is Wake-On-Lan issue with Realtek r8169: immediate resume after suspend from the Ubuntu Forums.

That script doesn't work.

But it did give me the idea to just run the modprobe lines:

$ sudo modprobe -r r8169
$ sudo modprobe r8169

That works. The network comes back (both wired and wireless, even though this only addresses the wired Ethernet network).

The script in /etc/pm/sleep.d seems to do nothing.

But running this script, which I titled jump_start, does work:

#! /bin/bash

modprobe -r r8169
modprobe r8169

exit 0

As a workaround, I created a launcher in Xfce, hooked it up to this two-line Bash script, and made an exception for it with visudo so I could run it from the launcher.

Now I resume the laptop, click my "jumpstart the network" icon in the panel, and I'm ready to go.

It's less than automatic, but for now it works.

I have no idea why this happened, but since every new live system I try suspends and resumes with no problems at all, this hack will keep me going until I build my new Linux system on a new hard drive. (This is a "production" laptop, and I want to avoid the anxiety of having to rebuild and configure it under pressure, so I'm opting for a new hard drive that will be a single-boot Linux system.)

Update: I may be putting my scripts in the wrong place for automatic execution in a Systemd environment. Fedora users suggest /usr/lib/systemd/system-sleep/

This is the script I put in /usr/lib/systemd/system-sleep/:

#!/bin/sh

case "$1" in
    hibernate|suspend)
   systemctl stop NetworkManager.service
        modprobe -r r8169
        ;;
    thaw|resume) 
        modprobe r8169
  systemctl start NetworkManager.service

        ;;
esac

I'm not convinced that any of this (other than running my jump_start script with the two modprobe lines) is working.

Further update: A day later, I've been using WiFi only, and the network has been available after suspend/resume with no trouble. Not sure why.

Further further update: It's spotty. I'm taking the script out of /usr/lib/systemd/system-sleep/ -- I don't think it's doing a damn thing. I still need my local script sometimes to jump-start the network.

Oct. 10 update: Things seem a lot better. I'm not 100 percent sure the problem has been solved. Maybe 80 percent.