Thức dậy sau khi tạm ngưng bằng bàn phím hoặc chuột USB không dây (đối với mọi Linux Distro)


18

Tôi đã tìm kiếm hàng giờ, có thể nhiều hơn, cho một giải pháp và tôi chỉ tìm thấy nó. Tôi muốn chia sẻ nó với mọi người. Bằng cách này, bạn sẽ dễ dàng giải quyết vấn đề này để tìm ra giải pháp nhanh hơn. Vì vậy, giống như tiêu đề nói, dưới đây là giải pháp.

Câu trả lời:


26

đánh trong thiết bị đầu cuối:

grep . /sys/bus/usb/devices/*/power/wakeup

Kết quả, đối với tôi, là phát hiện ra rằng tất cả usb đã bị vô hiệu hóa. Vì vậy, bây giờ, gõ:

1.

sudo su

bây giờ chúng ta có quyền riêng tư gốc.

2.Tôi có 8 cổng usb ( bạn làm điều đó với số cổng USB bạn có ), vì vậy:

echo enabled > /sys/bus/usb/devices/usb1/power/wakeup
echo enabled > /sys/bus/usb/devices/usb2/power/wakeup
echo enabled > /sys/bus/usb/devices/usb3/power/wakeup
echo enabled > /sys/bus/usb/devices/usb4/power/wakeup
echo enabled > /sys/bus/usb/devices/usb5/power/wakeup
echo enabled > /sys/bus/usb/devices/usb6/power/wakeup
echo enabled > /sys/bus/usb/devices/usb7/power/wakeup
echo enabled > /sys/bus/usb/devices/usb8/power/wakeup

Đi trước và kiểm tra nó. Bây giờ bạn có thể thức dậy từ bất kỳ bàn phím và chuột usb không dây hoặc có dây.

Vì vậy, lý do chúng ta phải kích hoạt tất cả chúng, là vì trong bước tiếp theo, chúng ta sẽ viết điều này trong RC.local để thực thi lệnh sau mỗi lần khởi động lại và sau khi khởi động lại một số distro linux (có thể là tất cả) thay đổi các cổng usb. Chúng tôi không phải lo lắng về bất cứ điều gì sai bằng cách kích hoạt tất cả chúng, vì linux đang tạm dừng hoặc ngủ đông, nó không thể sử dụng wifi để tải xuống bất cứ thứ gì, vì vậy nó sẽ không thức dậy nếu chúng tôi không cố tình thức dậy .

Bước tiếp theo:

3.

sudo nano /etc/rc.local

và chúng tôi dán mọi thứ từ bước 2. vào đó (trước khi thoát 0 tất nhiên).

Đó là nó. Từ giờ chúng ta có thể sử dụng usb và chuột không dây để thức dậy sau khi bị đình chỉ.

Tôi hy vọng nó hoạt động cho tất cả các bạn. Hướng dẫn này được thực hiện sau khi thử nghiệm tất cả các giải pháp có thể khác trên internet.


6
Nếu bạn muốn tìm ra thiết bị nào, bạn có thể xem /sys/bus/usb/devices/<device id>/productmô tả văn bản.
ntc2

Tôi đã bật tất cả các thiết bị trong " grep . /sys/bus/usb/devices/*/power/wakeup" nhưng vẫn không hoạt động. Có lẽ đó là do bàn phím và chuột được kết nối gián tiếp - không dây với một dongle nằm trên màn hình? Màn hình được kết nối qua USB với máy tính xách tay.
AlikElzin-kilaka

1
như @ ntc2 đã nói, hãy sử dụng điều này để xem mô tả của từng người: grep . /sys/bus/usb/devices/*/productđã giúp tôi tìm ra những gì tôi đang xem
Ben Yitzhaki

Nếu điều này vẫn không hoạt động, hãy đảm bảo thiết bị của bạn (bàn phím / chuột) vẫn có nguồn khi PC ở chế độ ngủ. Nếu không có đèn LED trên thiết bị của bạn, bạn có thể sử dụng màn hình nguồn USB (có thể tìm thấy chúng khoảng 10 đô la trực tuyến) để kiểm tra nguồn trên cổng USB.
J Smith

Phần thường trực của câu hỏi này không còn hoạt động với ít nhất là Ubuntu 18.04. Việc bổ sung ( Askubfox.com/a/874701/516072 ) cho câu trả lời này được cung cấp bởi pavlos-theodorou đã giúp cho phần vĩnh viễn trong Ubuntu 18.04
Laurens

10

Ngoài hướng dẫn của tôi ở trên, tôi muốn thêm thông tin này, vì gần đây tôi phát hiện ra rằng một số thiết bị usb không dây sau khi thức dậy, chúng quay trở lại để vô hiệu hóa. Tôi nhắc lại, chỉ một số thiết bị usb làm điều đó, không phải tất cả. Đó là lý do tại sao tôi không thêm hướng dẫn nhỏ này vào hướng dẫn của mình.

Vì vậy, bạn đã làm như tôi đã hướng dẫn ở trên và máy tính của bạn thức dậy thành công, nhưng sau đó trong ngày đột nhiên nó không thức dậy nữa.

Giải pháp:

Mở một thiết bị đầu cuối và làm:

lsusb

Tại thông tin id thiết bị bàn phím của bạn, 4 chữ số đầu tiên là id nhà cung cấp và 4 chữ số tiếp theo là id sản phẩm (xem ảnh chụp màn hình) nhập mô tả hình ảnh ở đây

Tiếp theo làm:

sudo nano /etc/udev/rules.d/10-wakeup.rules

Trong đó "thức dậy" nhập tên tập lệnh bạn muốn. Số 10 là ưu tiên trong trường hợp bạn có nhiều quy tắc udev khác, số 'quy tắc' càng thấp sẽ được thực thi trước các quy tắc khác.

Sao chép dán này và thay thế id nhà cung cấp và id sản phẩm bằng id nhà cung cấp bàn phím không dây và id sản phẩm của bạn.

ACTION=="add", SUBSYSTEM=="usb", ATTRS{idVendor}=="062a", ATTRS{idProduct}=="4101" RUN+="/bin/sh -c 'echo enabled > /sys/bus/usb/devices/usb8/power/wakeup'"

* usb8 đối với tôi là bàn phím không dây của tôi (bạn cũng có thể thấy trong ảnh chụp màn hình (Bus 008)), hãy thay thế nó bằng bàn phím của riêng bạn.

Ctrl+ Ođể lưu, Ctrl+ Xđể thoát và khởi động lại.


4
Tốt hơn để kết hợp điều này vào câu trả lời đầu tiên của bạn.
ntc2

1
chúng là 2 thứ khác nhau câu hỏi thứ nhất là câu trả lời cho vấn đề thức dậy. cái thứ hai giống như "Cách tạo quy tắc để thực thi không khởi động" và nó chỉ là "phụ" vì không phải ai cũng biết cách làm điều đó và không có hướng dẫn nghiệp dư đơn giản nào cho việc đó.
Pavlos Theodorou

2

Câu trả lời của Pavlos Theodorou rất hữu ích. Tôi muốn nói thêm rằng bạn có thể tìm thấy các thiết bị usb mà bạn chuột / bàn phím được kết nối với lúc khởi động-up bằng đường ống dmesg qua grep một vài lần, sau đó egrep một lần, và cuối cùng là sử dụng đuôi để chắc chắn rằng nó là gần đây nhất nhập cảnh.

Sử dụng phương pháp này, bạn không phải bật Wake trên TẤT CẢ các cổng usb.

Tôi đặt đoạn mã sau vào tệp /etc/rc.local và nó tìm thấy máy thu logitech của tôi mỗi lần, ngay cả khi được chuyển từ cổng usb này sang cổng khác. Chỉ cần thay thế tên của bạn bàn phím hoặc chuột từ dmesg thay cho "Logitech K270"

KB="$(dmesg | grep "Logitech K270 as" | grep -o -P "usb.{0,5}" | egrep -o ".{0,3}$" | tail -1)"
echo enabled > /sys/bus/usb/devices/${KB}/power/wakeup

Điều này hoạt động khi khởi động, nhưng dường như không chạy khi bị đình chỉ, vì vậy tôi đã phải đặt một tập lệnh trong / lib / systemd / system-ngủ /. Tạo nó, đặt nó là có thể thực hiện được trên toàn cầu và đặt cho nó một tên bắt đầu bằng một số có hai chữ số trong khoảng từ 00 đến 99. Kịch bản của tôi như sau, một lần nữa thay thế bàn phím / chuột của bạn từ dmesg:

#!/bin/sh

# Action script to enable wake after suspend by keyboard or mouse

if [ $1 = post ]
    then
    KB="$(dmesg | grep "Logitech K270 as" | grep -o -P "usb.{0,5}" | egrep -o ".{0,3}$" | tail -1)"
    echo enabled > /sys/bus/usb/devices/${KB}/power/wakeup
fi

if [ $1 = pre ]
    then
    KB="$(dmesg | grep "Logitech K270 as" | grep -o -P "usb.{0,5}" | egrep -o ".{0,3}$" | tail -1)"
    echo enabled > /sys/bus/usb/devices/${KB}/power/wakeup
fi

Đối với một số lý do tôi không thể giải thích, các 'bài' ngủ nếu tuyên bố chỉ hoạt động mỗi đánh thức ... nhưng 'trước' ngủ khác nếu tuyên bố dường như làm việc mọi lúc.


1

Không có câu trả lời nào được đề cập ở trên giúp tôi. Đó là lý do tại sao tôi đăng bài ở đây.

Kích hoạt / vô hiệu hóa đánh thức từ việc đình chỉ thiết bị USB

Đã thử nghiệm trong KDE neon 5.16.2, dựa trên Ubuntu 18.04 nhưng sẽ hoạt động trong mọi phân phối.


1. Hiển thị danh sách các thiết bị USB để xác định thiết bị bạn muốn bật / tắt:

grep . /sys/bus/usb/devices/*/product

bạn nên có được một cái gì đó như thế này:

/ sys / bus / usb / thiết bị / 3-3 / sản phẩm: Chuột quang
/sys/bus/usb/devices/3-4.3/product:802.11n Bộ điều hợp mạng WLAN
/sys/bus/usb/devices/3-4.4/product:USB Người nhận
/sys/bus/usb/devices/3-4/product:USB2.0 Hub
/sys/bus/usb/devices/4-4/product:USB3.0 Hub
/ sys / bus / usb / thiết bị / usb1 / sản phẩm: Bộ điều khiển máy chủ EHCI
/ sys / bus / usb / thiết bị / usb2 / sản phẩm: Bộ điều khiển máy chủ EHCI
/ sys / bus / usb / thiết bị / usb3 / sản phẩm: Bộ điều khiển máy chủ xHCI
/ sys / bus / usb / thiết bị / usb4 / sản phẩm: Bộ điều khiển máy chủ xHCI


2. Kiểm tra trạng thái đánh thức của tất cả các thiết bị USB:

grep. / sys / bus / usb / thiết bị / * / power / Wakeup

kết quả sẽ giống như thế này:

/ sys / bus / usb / thiết bị / 1-1 / power / Wakeup: bị vô hiệu hóa
/ sys / bus / usb / thiết bị / 2-1 / power / Wakeup: bị vô hiệu hóa
/ sys / bus / usb / thiết bị / 3-11 / power / Wakeup: bị vô hiệu hóa
/ sys / bus / usb / thiết bị / 3-3 / power / Wakeup: đã bật
/sys/bus/usb/devices/3-4.4/power/wakeup:disables
/ sys / bus / usb / thiết bị / 3-4 / power / Wakeup: bị vô hiệu hóa
/ sys / bus / usb / thiết bị / 4-4 / power / Wakeup: bị vô hiệu hóa
/ sys / bus / usb / thiết bị / usb1 / power / Wakeup: bị vô hiệu hóa
/ sys / bus / usb / thiết bị / usb2 / power / Wakeup: bị vô hiệu hóa
/ sys / bus / usb / thiết bị / usb3 / power / Wakeup: bị vô hiệu hóa
/ sys / bus / usb / thiết bị / usb4 / power / Wakeup: bị vô hiệu hóa

Trong trường hợp của tôi, thức dậy chỉ được kích hoạt cho thiết bị USB 3-3, theo danh sách trước đó, là "Chuột quang dây".

Tôi muốn kích hoạt đánh thức từ chỉ đình chỉ cho bàn phím không dây và vô hiệu hóa nó cho phần còn lại. Bộ thu USB bàn phím được kết nối với HUB và tương ứng với 3-4.4 trong danh sách trước đó ("Bộ thu USB").


3. Tạo một kịch bản thực hiện công việc:

Để có quyền root:

sudo su

Sau đó, chúng tôi tạo tệp cho tập lệnh (tệp có thể được gọi là "usbwakeup" hoặc bất kỳ mô tả nào bạn muốn):

nano /etc/init.d/usbwakeup 

Nội dung của tập tin. Chỉ cần điều chỉnh nó theo nhu cầu của bạn bằng cách thay đổi phần "HÀNH ĐỘNG SCRIPT" (Tôi thích thêm nhận xét vào tập lệnh để biết họ thực sự làm gì nếu tôi mở lại chúng vào một ngày nào đó):

#! / thùng / bash
#
########################
# THÔNG TIN CHUNG #
########################
#
# - Tập lệnh này cho phép / vô hiệu hóa đánh thức khỏi việc đình chỉ # cho các thiết bị USB.
#
# - Kịch bản cần quyền thực thi.
#
# - Để tập lệnh này được thực thi khi hệ thống khởi động, phải có
# một liên kết tượng trưng đến nó trong /etc/rc3.d/ với ưu tiên S01
# (ví dụ: /etc/rc3.d/S01usbwakeup)
#
#############################
# CÁC QUY TẮC SỬ DỤNG LIÊN QUAN #
#############################
#
# - Xác định thiết bị USB:
# grep. / sys / bus / usb / thiết bị / * / sản phẩm
#
# - Kiểm tra trạng thái "đánh thức hệ thống treo" của thiết bị USB:
# grep. / sys / bus / usb / thiết bị / * / power / Wakeup
#
#
###################
# HÀNH ĐỘNG SCRIPT #
###################
#
# Vô hiệu hóa đánh thức từ đình chỉ cho chuột quang
vô hiệu hóa tiếng vang> / sys / bus / usb / thiết bị / 3-3 / power / Wakeup
#
# Cho phép thức dậy sau khi treo bàn phím không dây
rằng tôi đã kết nối với USB 3.0 HUB trong cổng USB nr.4
kích hoạt tiếng vang> /sys/bus/usb/devices/3-4.4/power/wakeup


4. Cấp cho nó quyền thực thi:

chmod +x /etc/init.d/usbwakeup


5. Tạo một liên kết tượng trưng trong /etc/rc3.d/ để nó bắt đầu khởi động:

sudo ln -s /etc/init.d/usbwakeup /etc/rc3.d/S01usbwakeup


Bằng cách khởi động lại hệ thống, mọi thứ sẽ hoạt động như được chỉ định trong tập lệnh. Các thay đổi sẽ được duy trì vì chúng sẽ được thực hiện với mỗi lần khởi động hệ thống.

Các nguồn tư vấn (ngoài bài này):

https://ubuntuforums.org/showthread.php?t=2388336

https://www.thomasmonaco.com/prevent-usb-devices-waking-ubfox-s ngủ /

/unix/83748/the-rc0-d-rc1-d-directories-in-etc


Tôi vừa tìm thấy và bài viết thú vị trong đó giải thích cách tạo GUI đơn giản cho cùng mục đích. Tôi chưa thử nghiệm nhưng có lẽ nó có thể giúp ai đó cố gắng làm cho nó trở nên đồ họa và chỉ với một cú nhấp chuột để bật / tắt: bernaerts-nicolas.fr/linux/74-ub Ubuntu
Juan Gómez Carrillo
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.