Take the 2-minute tour ×
Ask Ubuntu is a question and answer site for Ubuntu users and developers. It's 100% free, no registration required.

I've been trying to get WOL to work for weeks on my Ubuntu server 13.04 install but it just doesn't seem to work.

I notice when I suspend the server with "sudo pm-suspend" or via the desktop gui, the NIC card turns off. I.e., there is no blinking lights on the network port. I don't know if that's the issue but in my /var/log/syslog, I also saw that my ethernet was not one of the PCIs that had "system wakeup enabled by ACPI":

    Oct  2 16:46:10 JAMFS1 kernel: [26462.745615] PM: suspend of devices complete after 519.955 msecs
    Oct  2 16:46:10 JAMFS1 kernel: [26462.745743] PM: late suspend of devices complete after 0.126 msecs
    Oct  2 16:46:10 JAMFS1 kernel: [26462.745953] ehci-pci 0000:00:1d.0: System wakeup enabled by ACPI
    Oct  2 16:46:10 JAMFS1 kernel: [26462.761576] ehci-pci 0000:00:1a.0: System wakeup enabled by ACPI
    Oct  2 16:46:10 JAMFS1 kernel: [26462.793491] xhci_hcd 0000:00:14.0: System wakeup enabled by ACPI
    Oct  2 16:46:10 JAMFS1 kernel: [26462.809491] PM: noirq suspend of devices complete after 63.784 msecs
    Oct  2 16:46:10 JAMFS1 kernel: [26462.809695] ACPI: Preparing to enter system sleep state S3
.......
    Oct  2 16:46:10 JAMFS1 kernel: [26463.464575] ACPI: Waking up from system sleep state S3
    Oct  2 16:46:10 JAMFS1 kernel: [26463.510511] xhci_hcd 0000:00:14.0: System wakeup disabled by ACPI
    Oct  2 16:46:10 JAMFS1 kernel: [26463.542498] ehci-pci 0000:00:1a.0: System wakeup disabled by ACPI
    Oct  2 16:46:10 JAMFS1 kernel: [26463.574474] ehci-pci 0000:00:1d.0: System wakeup disabled by ACPI
    Oct  2 16:46:10 JAMFS1 kernel: [26463.590562] PM: noirq resume of devices complete after 125.527 msecs
    Oct  2 16:46:10 JAMFS1 kernel: [26463.590650] PM: early resume of devices complete after 0.071 msecs

But according to "cat /proc/acpi/wakeup" my ethernet card IS supposed be to enabled:

Device  S-state   Status   Sysfs node
USB1      S3    *disabled
RP01      S4    *enabled   pci:0000:00:1c.0
RP03      S4    *enabled   pci:0000:00:1c.2
GLAN      S4    *disabled
EHC1      S4    *enabled   pci:0000:00:1d.0
EHC2      S4    *enabled   pci:0000:00:1a.0
XHC       S4    *enabled   pci:0000:00:14.0
HDEF      S4    *enabled   pci:0000:00:1b.0
PEG0      S4    *disabled
PEGP      S4    *disabled

From my "lspci -tv", you can see that "pci:0000:00:1c.2" is the Atheros ethernet card:

       +-14.0  Intel Corporation Lynx Point USB xHCI Host Controller
       +-16.0  Intel Corporation Lynx Point MEI Controller #1
       +-1a.0  Intel Corporation Lynx Point USB Enhanced Host Controller #2
       +-1b.0  Intel Corporation Lynx Point High Definition Audio Controller
       +-1c.0-[01]--
       +-1c.2-[02]----00.0  Qualcomm Atheros QCA8171 Gigabit Ethernet
       +-1d.0  Intel Corporation Lynx Point USB Enhanced Host Controller #1
       +-1f.0  Intel Corporation Lynx Point LPC Controller

I also set /sys/class/net/p2p1/device/power/wakeup to 'enabled'. As well as ran sudo ethtool -s p2p1 wol g and inserted that into my /etc/rc.local

I have enabled the equivalent wake on LAN/PCI in my ASRock Bios.

ethtool p2p1 (p2p1 is my Qualcomm Atheros QCA8171 Gigabit Ethernet name) shows this:

Supports Wake-on: pg
Wake-on: g

So what do I do?? I followed every guide and suggestion I found. Do you think it's a driver issue? Is there a way to update the Atheros driver? Has anyone been able to wake on lan if the NIC card has no blinking lights? With the system up, I used wireshark and was able to detect the WOL packets sent from my local dd-wrt via the command /usr/sbin/wol -i 192.168.1.254 -v bc:5f:f4:be:38:e4 -p 9. I also was able to receive the packets from a windows machine with a WOL generator. Anyone has any suggestions as I'm just out of ideas.... Thanks in advance for reading.

Lastly, my lspci -vv is as such if that helps anyone:

02:00.0 Ethernet controller: Qualcomm Atheros QCA8171 Gigabit Ethernet (rev 10)
        Subsystem: ASRock Incorporation Device 10a1
        Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
        Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx+
        Latency: 0, Cache Line Size: 64 bytes
        Interrupt: pin A routed to IRQ 18
        Region 0: Memory at f0400000 (64-bit, non-prefetchable) [size=256K]
        Region 2: I/O ports at e000 [size=128]
        Capabilities: [40] Power Management version 3
                Flags: PMEClk- DSI- D1- D2- AuxCurrent=375mA PME(D0+,D1+,D2+,D3hot+,D3cold+)
                Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
        Capabilities: [58] Express (v1) Endpoint, MSI 00
                DevCap: MaxPayload 4096 bytes, PhantFunc 0, Latency L0s unlimited, L1 unlimited
                        ExtTag- AttnBtn+ AttnInd+ PwrInd+ RBE+ FLReset-
                DevCtl: Report errors: Correctable+ Non-Fatal+ Fatal+ Unsupported+
                        RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop-
                        MaxPayload 128 bytes, MaxReadReq 512 bytes
                DevSta: CorrErr- UncorrErr+ FatalErr- UnsuppReq+ AuxPwr+ TransPend-
                LnkCap: Port #0, Speed 2.5GT/s, Width x1, ASPM L0s L1, Latency L0 unlimited, L1 unlimited
                        ClockPM+ Surprise- LLActRep- BwNot-
                LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- Retrain- CommClk+
                        ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
                LnkSta: Speed 2.5GT/s, Width x1, TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
        Capabilities: [c0] MSI: Enable- Count=1/16 Maskable+ 64bit+
                Address: 0000000000000000  Data: 0000
                Masking: 00000000  Pending: 00000000
        Capabilities: [d8] MSI-X: Enable+ Count=16 Masked-
                Vector table: BAR=0 offset=00002000
                PBA: BAR=0 offset=00003000
        Capabilities: [100 v1] Advanced Error Reporting
                UESta:  DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq+ ACSViol-
                UEMsk:  DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
                UESvrt: DLP- SDES+ TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF+ MalfTLP+ ECRC- UnsupReq- ACSViol-
                CESta:  RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr-
                CEMsk:  RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr+
                AERCap: First Error Pointer: 14, GenCap+ CGenEn- ChkCap+ ChkEn-
        Capabilities: [180 v1] Device Serial Number ff-be-38-f4-bc-ef-f4-df
        Kernel driver in use: alx
share|improve this question

1 Answer 1

So, after fiddling some more, I discovered that when I hibernate Ubuntu via

sudo pm-hibernate

the NIC lights stay on and I am able to WOL. However, that is no good for me since I have LVM encryption so it requires entering the passkey onsite and I can't do that via remote-in. On comparison of the hibernation and suspend routines I noticed that on suspend within

/usr/lib/pm-utils/sleep.d/50unload_alx

it has the line:

'modunload alx'

which I found is what is unloading the drivers for the atheros NIC. Commenting it out did the trick and the lights stayed on when I suspend and now I can WOL.

HOWEVER, I discovered the reason for the modunload alx is due to a bug that prevents the machine from suspending properly, hence it was probably added in.

SO, the new situation I am in now is that I am able to WOL from suspend but I can't suspend the machine after the first time. Interestingly enough, hibernation works fine and WOL from hibernation works every time.

I just can't suspend and WOL and repeat over and over again. First suspend works with

sudo pm-suspend

but after that, it does not anymore.

HOWEVER, I found that I can suspend fine through the desktop (and then WOL), which I find strange....

So the new question is (perhaps I should create a new thread):

What is the difference between

sudo pm-suspend

versus suspending through the desktop??

Also, if I do

sudo pm-suspend-hybrid

It suspends and I can also WOL. If I set the timer on the desktop to suspend after XX minutes, it also suspends fine and I can WOL.

So what is the difference between all these routines versus what sudo pm-suspend does??

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.