WOL trên Qualcomm Atheros QCA8171 trên Linux không hoạt động


2

Tôi chỉ đơn giản là không thể làm cho thức tỉnh hoạt động trên máy của mình. Tôi mới sử dụng Linux nên có lẽ tôi đang thiếu một cái gì đó. Dưới cấu hình của tôi. Bất kỳ đầu vào được đánh giá rất cao. Cảm ơn bạn.

Cấu hình CTNH của tôi:

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

Cấu hình hệ thống của tôi:

$ 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

Thông tin bổ sung vào ngày 22 tháng 1 năm 2016 sau @ MariusMatutiae đầu vào tuyệt vời:

Tôi đã nhận được mới nhất Hạt nhân 3.19.8 và chỉ được trình điều khiển Atheros alx (tôi đã có thể làm điều đó sau khi làm theo những hướng dẫn này ):

$ 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

Trình điều khiển alx trên kernel đó có cài đặt WOL trở lại (điểm khác biệt duy nhất tôi nhận thấy là thiếu khóa chữ ký trên ổ đĩa - so sánh đầu ra của 'modinfo alx' ở trên và bên dưới), nhưng không gặp may nữa! !! Tôi vẫn không thể làm cho WOL hoạt động trên máy của mình. Tôi đã kiểm tra và kiểm tra lại mọi thứ trong thiết lập BIOS của mình. Tôi thậm chí có thể đánh thức nó bằng cách sử dụng bàn phím USB, nhưng không thông qua 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

Thông tin bổ sung vào ngày 30 tháng 1 năm 2016

Vẫn không có may mắn. Tôi đã có thể thiết lập chức năng WoWlan, nhưng không có cách nào Linux của tôi có thể thức dậy từ chế độ tắt nguồn, ngủ đông hoặc tạm dừng. Tôi đã thử đánh thức nó qua bộ định tuyến và các máy tính khác trong mạng LAN của tôi.

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

Người giúp tôi làm việc đó sẽ nhận được một gói 250g cà phê Brazil ngon nhất :)


Wake on LAN được xử lý bởi firmware chứ không phải hệ điều hành.
a CVn

Cảm ơn Michael, nhưng đó không thực sự là câu hỏi của tôi. Bạn có bất cứ đề nghị để làm cho nó hoạt động?
Italo Nesi

Đầu ra của ethtool eth0, hiện nay?
MariusMatutiae

Xin chào Marius, cảm ơn bạn một lần nữa. Nó vẫn giống như trên. Tôi đã làm một số thay đổi khác nhưng chưa có may mắn. Những gì tôi đã làm là cài đặt kernel đầy đủ 3.19.8, nhưng sau khi vui vẻ với ổ đĩa đồ họa của tôi và một số ứng dụng không hoạt động, tôi chuyển về 3.19.0. Tôi đoán Linux Mint 17.3 đi kèm với 3.19.0 vì một lý do. Giải thưởng cà phê Brazil vẫn còn;)
Italo Nesi

Câu trả lời:


5

Cuối cùng một số tiến bộ, nhưng vẫn chưa đủ. Như tôi đang ở trên kernel "3.19.0-32-generic" Tôi đã tải xuống mã nguồn cho ổ đĩa alx từ kernel.org, chỉnh sửa các tệp để áp dụng bản vá ( bấm vào đây để vá ) như được tư vấn rất nhiều bởi @MariusMatutiae, sau đó biên dịch và thay thế trình điều khiển với bản mới được vá. Bây giờ tôi cuối cùng cũng có thể thấy "Hỗ trợ Wake-on: pg" trong đầu ra của lệnh ethtool, nhưng tôi không thể đánh thức máy (tắt máy, ngủ đông, tạm dừng). Đã thử với bộ định tuyến của tôi (cả chức năng aiCloud và thức dậy trên bộ định tuyến của bộ định tuyến) và etherwake từ một hộp linux khác. Tôi sẽ tiếp tục đào, bây giờ hãy xem bên dưới những gì tôi đã làm. Một điều nữa là sau khi khởi động trình điều khiển alx sẽ không tải nên tôi đã tạo một tập lệnh trên RC.local để tải nó lên. Tôi có lẽ đang làm điều đó theo cách tồi tệ nhất có thể, nhưng tôi sẽ đến đó.

Tải xuống kernel (cùng loại tôi đang sử dụng)

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

Giải nén các tệp trình điều khiển alx

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

Chuyển đến thư mục có mã nguồn

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

QUAN TRỌNG : Ở đây cần phải chỉnh sửa các tệp mã nguồn alx theo https://ormszilla.kernel.org/attachment.cgi?id=156751&action=diff

Biên dịch

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

Xóa trình điều khiển alx (nếu bạn ở xa / ssh, kết nối của bạn sẽ bị hủy và sẽ cần phải đăng nhập trực tiếp vào máy)

sudo rmmod alx

Chèn lại trình điều khiển alx

sudo insmod alx.ko

Xóa và sao chép tệp 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

Trong thời điểm này, nếu bạn thử "ethtool -s eth0 wol pg" thì nó sẽ hoạt động, tuy nhiên điều đó sẽ không kéo dài cho đến khi bạn khởi động lại. Vì vậy, tôi đã phải thêm đoạn sau vào tệp /etc/rc.local của mình (vui lòng lưu ý tệp được tạo 'alx.ko' Tôi đã chuyển nó sang /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

1
Tôi đoán đêm qua tôi đã quá mệt mỏi. Trên đây là mẹo! Tôi có thể đánh thức máy dậy sau Powerdown và Hibernate. Với Suspend không hoạt động, nhưng tôi hài lòng với kết quả cuối cùng.
Italo Nesi

Nếu tôi có thể nâng bạn lên nhiều lần, tôi sẽ làm thế. Điều này làm việc cho e2200 quá.
harveyslash
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.