Linux에서 Qualcomm Atheros QCA8171의 WOL이 작동하지 않음

난 그냥 내 컴퓨터에서 작동하도록 LAN을 깨울 수 없습니다. 저는 Linux를 처음 사용하므로 뭔가 빠진 것 같습니다. 내 설정 아래. 모든 의견을 높이 평가합니다. 감사합니다.

내 HW 구성 :

AsRock FM2A88X-ITX+
AMD A10-7800
Running Linux Mint 17.3 64bits

BIOS configured for wake-on-lan:
    Boot From Onboard LAN: Enabled
    PCIE Device Power On: Enabled

내 시스템 설정 :

$ uname -a
Linux home-server 3.19.0-32-generic #37~14.04.1-Ubuntu SMP Thu Oct 22 09:41:40 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux


$ lspci -nnk | grep -i net -A2
01:00.0 Network controller [0280]: Qualcomm Atheros AR9462 Wireless Network
Adapter [168c:0034] (rev 01)
        Subsystem: AzureWave Device [1a3b:2110]
        Kernel driver in use: ath9k
        03:00.0 Ethernet controller [0200]: Qualcomm Atheros QCA8171 Gigabit Ethernet [1969:10a1] (rev 10)
        Subsystem: ASRock Incorporation Device [1849:10a1]
        Kernel driver in use: alx


$ modinfo alx
filename:       /lib/modules/3.19.0-32-generic/kernel/drivers/net/ethernet/atheros/alx/alx.ko
license:        GPL
description:    Qualcomm Atheros(R) AR816x/AR817x PCI-E Ethernet Network Driver
author:         Qualcomm Corporation, <nic-devel@qualcomm.com>
author:         Johannes Berg <johannes@sipsolutions.net>
srcversion:     1917D292620190CB7319BDE
alias:          pci:v00001969d000010A0sv*sd*bc*sc*i*
alias:          pci:v00001969d000010A1sv*sd*bc*sc*i*
alias:          pci:v00001969d00001090sv*sd*bc*sc*i*
alias:          pci:v00001969d0000E091sv*sd*bc*sc*i*
alias:          pci:v00001969d00001091sv*sd*bc*sc*i*
depends:        mdio
intree:         Y
vermagic:       3.19.0-32-generic SMP mod_unload modversions
signer:         Magrathea: Glacier signing key
sig_key:        0C:8B:EF:E0:C1:E2:89:E4:D8:99:09:26:11:7A:DA:3B:DF:EB:41:9C
sig_hashalgo:   sha512


$ sudo ethtool eth0
    Settings for eth0:
    Supported ports: [ TP ]
    Supported link modes:   10baseT/Half 10baseT/Full
                            100baseT/Half 100baseT/Full
                            1000baseT/Full
    Supported pause frame use: Symmetric Receive-only
    Supports auto-negotiation: Yes
    Advertised link modes:  10baseT/Half 10baseT/Full
                            100baseT/Half 100baseT/Full
                            1000baseT/Full
    Advertised pause frame use: Symmetric
    Advertised auto-negotiation: Yes
    Speed: 1000Mb/s
    Duplex: Full
    Port: Twisted Pair
    PHYAD: 0
    Transceiver: internal
    Auto-negotiation: on
    MDI-X: Unknown
    Current message level: 0x000060e4 (24804)
                           link ifup rx_err tx_err hw wol
    Link detected: yes


$ cat /proc/acpi/wakeup
Device  S-state   Status   Sysfs node
PB21      S4    *disabled
PB22      S4    *disabled
PB31      S4    *disabled  pci:0000:00:03.1
PB32      S4    *disabled
PB33      S4    *disabled
PB34      S4    *disabled
SBAZ      S4    *disabled  pci:0000:00:14.2
ECIR      S4    *disabled
PS2K      S4    *disabled
PS2M      S4    *disabled
P0PC      S4    *disabled  pci:0000:00:14.4
OHC1      S4    *enabled   pci:0000:00:12.0
EHC1      S4    *enabled   pci:0000:00:12.2
OHC2      S4    *enabled   pci:0000:00:13.0
EHC2      S4    *enabled   pci:0000:00:13.2
OHC3      S4    *disabled
EHC3      S4    *disabled
OHC4      S4    *enabled   pci:0000:00:14.5
XHC0      S4    *enabled   pci:0000:00:10.0
XHC1      S4    *enabled   pci:0000:00:10.1
PE20      S4    *disabled  pci:0000:00:15.0
PE21      S4    *disabled
PE22      S4    *disabled
PE23      S4    *disabled


$ ifconfig
eth0      Link encap:Ethernet  HWaddr ------HAVE_DELETED_THAT_MYSELF-----
          inet addr:192.168.1.98  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::d250:99ff:fe85:92e/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:17749 errors:0 dropped:0 overruns:0 frame:0
          TX packets:10035 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:22733189 (22.7 MB)  TX bytes:846896 (846.8 KB)
          Interrupt:16


$ cat /etc/network/interfaces
# interfaces(5) file used by ifup(8) and ifdown(8)
auto lo
iface lo inet loopback


$ sudo ethtool -s eth0 wol g
Cannot get current wake-on-lan settings: Operation not supported
  not setting wol

@ MariusMatutiae 훌륭한 입력 후 2016 년 1 월 22 일에 대한 추가 정보 :

최신 3.19.8 커널을 얻었고 Atheros alx 드라이버 만 tar로 만들었습니다 ( 이 지침에 따라 수행 할 수있었습니다 ).

$ tar xf linux-3.19.8.tar.xz linux-3.19.8/drivers/net/ethernet/atheros/alx
$ cd linux-3.19.8/drivers/net/ethernet/atheros/alx
$ make -C /lib/modules/`uname -r`/build M=`pwd` modules
$ sudo cp /lib/modules/3.19.0-32-generic/kernel/drivers/net/ethernet/atheros/alx/alx.ko /lib/modules/3.19.0-32-generic/kernel/drivers/net/ethernet/atheros/alx/alx.ko.old
$ sudo cp alx.ko /lib/modules/3.19.0-32-generic/kernel/drivers/net/ethernet/atheros/alx/alx.ko
$ sudo reboot

해당 커널의 alx 드라이버에는 WOL 설정이 있습니다 (드라이브에 서명 키가 없다는 것이 유일한 차이점입니다-위의 ‘modinfo alx’의 출력과 아래의 것을 비교하십시오). !! 여전히 내 컴퓨터에서 WOL을 작동시킬 수 없습니다. BIOS 설정에서 모든 내용을 확인하고 다시 확인했습니다. USB 키보드를 사용하여 깨울 수도 있지만 WOL을 통해서는 깨울 수 없습니다.

$ sudo modinfo alx
filename:       /lib/modules/3.19.0-32-generic/kernel/drivers/net/ethernet/atheros/alx/alx.ko
license:        GPL
description:    Qualcomm Atheros(R) AR816x/AR817x PCI-E Ethernet Network     Driver
author:         Qualcomm Corporation, <nic-devel@qualcomm.com>
author:         Johannes Berg <johannes@sipsolutions.net>
srcversion:     1917D292620190CB7319BDE
alias:          pci:v00001969d000010A0sv*sd*bc*sc*i*
alias:          pci:v00001969d000010A1sv*sd*bc*sc*i*
alias:          pci:v00001969d00001090sv*sd*bc*sc*i*
alias:          pci:v00001969d0000E091sv*sd*bc*sc*i*
alias:          pci:v00001969d00001091sv*sd*bc*sc*i*
depends:        mdio
vermagic:       3.19.0-32-generic SMP mod_unload modversions

2016 년 1 월 30 일에 대한 추가 정보

아직 운이 없다. WoWLAN 기능을 설정할 수 있었지만 Linux가 전원 끄기, 최대 절전 모드 또는 일시 중단 모드에서 깨어날 수는 없었습니다. LAN에있는 라우터와 다른 컴퓨터를 통해 깨우려고했습니다.

$ sudo iw phy0 wowlan enable magic-packet
$ sudo iw phy0 wowlan show
  WoWLAN is enabled:
   * wake up on magic packet

내가 일을하게하는 데 도움이되는 것은 최고의 브라질 커피 250g 팩을 얻을 것입니다 🙂



답변

마침내 약간의 진전이 있었지만 여전히 충분하지 않습니다. 커널 “3.19.0-32-generic”에있는 동안 kernel.org에서 alx 드라이브의 소스 코드를 다운로드하고 파일을 편집하여 패치를 적용했습니다 (패치 에 대해서는 여기를 클릭하십시오)) @MariusMatutiae의 조언에 따라 드라이버를 컴파일하고 패치 한 새로운 드라이버로 교체했습니다. 이제 ethtool 명령의 출력에서 ​​”Wake-on : pg 지원”을 볼 수 있지만 시스템을 종료 할 수는 없습니다 (종료, 최대 절전 모드, 일시 중단). 내 라우터 (iCloud 기능 및 라우터의 기본 LAN에서 깨우기)로 시도하고 다른 Linux 상자에서 etherwake합니다. 계속 파고 보겠습니다. 이제 내가 한 일을 아래에서보십시오. 또 다른 것은 부팅 후 alx 드라이버가로드되지 않으므로 rc.local에 스크립트를 작성하여로드한다는 것입니다. 나는 아마 최악의 방법으로 그것을하고 있지만, 나는 거기에 갈 것이다.

커널 다운로드 (현재 사용중인 것과 동일)

cd ~/Downloads
wget https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.19.tar.gz

alx 드라이버 파일 만 압축 해제

tar xf linux-3.19.tar.gz linux-3.19/drivers/net/ethernet/atheros/alx

소스 코드가있는 폴더로 이동

cd linux-3.19/drivers/net/ethernet/atheros/alx

중요 : https://bugzilla.kernel.org/attachment.cgi?id=156751&action=diff에 따라 alx 소스 코드 파일을 편집해야합니다.

엮다

sudo make -C /lib/modules/$(uname -r)/build M=$(pwd) modules
sudo make -C /lib/modules/$(uname -r)/build M=$(pwd) modules_install

alx 드라이버를 제거하십시오 (원격 / ssh 인 경우 연결이 끊어지고 시스템에 직접 로그인해야합니다)

sudo rmmod alx

alx 드라이버를 다시 삽입하십시오

sudo insmod alx.ko

alx.ko 파일 삭제 및 복사

sudo cp /lib/modules/$(uname -r)/kernel/drivers/net/ethernet/atheros/alx/alx.ko /lib/modules/$(uname -r)/kernel/drivers/net/ethernet/atheros/alx/alx.ko.good
sudo rm /lib/modules/$(uname -r)/kernel/drivers/net/ethernet/atheros/alx/alx.ko
sudo cp alx.ko /lib/modules/$(uname -r)/kernel/drivers/net/ethernet/atheros/alx/alx.ko

이 시점에서 “ethtool -s eth0 wol pg”를 시도하면 작동하지만 다시 부팅 할 때까지 지속되지는 않습니다. 따라서 /etc/rc.local 파일에 다음을 추가해야했습니다 ( ‘alx.ko’파일을 /Drivers/alx.ko로 옮겼습니다).

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
#
exec 2> /tmp/rc.local.log
exec 1>&2
set -x
####################################################
# Enable WOL on eth0 at start-up
rmmod alx
insmod /Drivers/alx.ko
rm /lib/modules/$(uname -r)/kernel/drivers/net/ethernet/atheros/alx/alx.ko
cp /Drivers/alx.ko /lib/modules/$(uname -r)/kernel/drivers/net/ethernet/atheros/alx/alx.ko
ethtool -s eth0 wol pg
iw phy0 wowlan enable magic-packet
# End
####################################################

exit 0


답변