alx-wol-dkms module failing to wake laptop

Hi all, I have an Asus N56VZ laptop running Manjaro 5.2.11 with an Atheros AR8161 LAN card affected by the alx broken WoL bug.

For a few years I've been using an USB3/GE dongle but today I needed an extra USB port so I decided to try the built-in GE again and installed the alx-wol-dkms package from the AUR to get WoL working, it was updated recently to work with kernel 5.x

Unfortunately WoL still doesn't work. The modules are installed but I'm not sure if they are being used. I tried to run sudo mkinitcpio -p linux52 but no change.

[ser@lt ~]$ dkms status
alx-wol, 5, 4.19.69-1-MANJARO, x86_64: installed
alx-wol, 5, 5.2.11-1-MANJARO, x86_64: installed
[ser@lt ~]$ modinfo -n alx
/lib/modules/5.2.11-1-MANJARO/updates/alx.ko.xz
[ser@lt ~]$ 

Though ethtool can configure WoL and I thought that with the unpatched driver that shouldn't be possible, still WoL isn't working.

[ser@lt ~]$ sudo ethtool enp4s0 | grep Wake
	Supports Wake-on: pg
	Wake-on: d
[ser@lt ~]$ sudo ethtool -s enp4s0 wol g
[ser@lt ~]$ sudo ethtool enp4s0 | grep Wake
	Supports Wake-on: pg
	Wake-on: g
[ser@lt ~]$

It'd be great if someone who is using this patched driver or is familiar with dkms could help me solve the problem.

For years - literally - I have been wondering - what is the purpose of WOL.

I admit that a sys-admin using a network based system management tool may have a use for WOL but for any ordinary user - what it the benefit or purpose of said technology?

I use it to wake up my machine through a VPN when I'm away to then VNC to it from where I am, it's really useful to me.

what's the outpit of lsmod | grep alx?

[ser@lt ~]$ lsmod | grep alx
alx                    57344  0
mdio                   16384  1 alx
[ser@lt ~]$ 

Thanks. That means the module is loaded, so will be used if possible.

If this is the command you are using with ethtool to enable wol then it will have zero effect because ethtool's changes are wiped on shutdown.

The only possibility to make an ethtool command persistent is to write a systemd startup service using the ethtool command. Sometimes it works, sometimes it doesn't.

Thank you for the input. Then maybe the problem is with the patch though on the bug page comments it was confirmed working with 5.2.11

Thanks for the reply. Yes I know that ethtool will be reset on startup, I used it because with an unpatched driver running, the command should be failing. See the below from the bug description:

Using the alx driver on my AR8161, setting Wake-on-LAN is no longer working.
$ sudo ethtool -s enp6s0 wol g
Cannot get current wake-on-lan settings: Operation not supported
not setting wol

I have no idea if this is pertinent to your issue, but you may want to read this:

You may also want to test alternate firmware and kernels to see if those affect the wol capabilities.

WoL is working with the USB/GE dongle so it isn't a Manjaro issue but a problem with this specific card and its driver/patch.

To enable g wol and let it stick I was using the Manjaro network connections GUI, but I can try a systemd startup service using this example https://www.linuxunit.com/add-systemd-service-to-start-wake-on-lan/

I think you could still test the link I posted if you are going to write a service anyways. It is nothing to add or comment out the exec line. I have read the link you posted before and it seems like a good option to test.

Yep, I'll give it a try, though using the Manjaro GUI the g wol config is sticking. I've also tried kernel 4.19 and wol isn't working on it either.

I would go back further and test at least kernel 4.14 or even 4.9. For older hardware older kernels can sometimes work better.

Here is another WOL service I turned up on the forum.

Create the service:

/etc/systemd/system/net-down\@.service

Contents:

[Unit]
Description=Turns net interface off

[Service]
Type=oneshot
RemainAfterExit=true
ExecStop=/usr/bin/ip link set %i down

[Install]
WantedBy=multi-user.target

I'm the author of the thread @tbg cited. I solved it by adding the following to the file /etc/modprobe.d/r8169_blacklist.conf

blacklist r8169
options r8168 s5wol=1

And reboot. Hope it helps.

So I tried the systemd startup service and no change, my tests show that what is configured on the Manjaro network connections GUI overrides it anyways so it isn't needed on Manjaro.

Using older kernels shouldn't be needed as the driver and the patch are confirmed working up to the current 5.2 as per the bug comments, besides I'd go back to the USB/GE dongle rather than using an older kernel so I won't try that.

I think it's something specific to this patch that doesn't play well on Manjaro but I have no idea what it could be. Hopefully someone who is using it on Manjaro will see the thread.

Really WOL support for these cards should be added back to the mainline kernel. According to the Arch wiki the patch "both restores WOL support and fixes the underlying bug" so there's no reason not to restore the functionality in the kernel as it's been asked many times by users on the bug's history.

Thank you for the input. I think in this case it shouldn't be needed because ethtool is showing the card as WOL capable so it looks like it's enabled.

In my case ethtool was showing the card as WOL capable too, and even the magic package was activated (it showed WOL method as "g")

Thanks for the info, I've just tried the blacklist solution but no change.

That option is specific to the r8168 module so, it will be ineffective on the alx driver. You can try a parameter that is specific to the alx driver if you want.


Try adding the GRUB kernel boot parameter "alx.enable_wol=1" to /etc/default/grub:

sudo cp /etc/default/grub /etc/default/grub.bak && sudo sed '/^GRUB_CMDLINE_LINUX_DEFAULT=/s/"$/ alx.enable_wol=1"/g' -i /etc/default/grub

After adding the boot parameter, run:

sudo update-grub 

Then reboot.


You can easilly revert the changes:

sudo cp /etc/default/grub.bak /etc/default/grub

Forum kindly sponsored by Bytemark