Dizüstü bilgisayarı askıya aldığımda faremin USB gücünü nasıl kapatabilirim?


19

Faremin LED ışığı uyurken sinirlerime takılıyor. Genellikle akşamları defterimi kapatırım ve Ubuntu aramaları yapar pm-suspend. Her neyse, USB fişi hala güçle çalışıyor. Akıllı telefonumu bile şarj edebilirim. Bu iki nedenden dolayı benim için kötü. Faremi çıkarmam gerekiyor ve dizüstü bilgisayar pil takımı [akku] daha az dayanıyor. Dizüstü bilgisayar askıya alma moduna geçtiğinde USB aygıtımı veya tüm USB aygıtlarını otomatik olarak kapatmanın bir yolu var mı?

Nasıl yapılandırılır?

EDIT: Yorumlarda istendiği gibi, bu bilgileri ekliyorum: Lenovo G550 kullanıyorum.

EDIT: burada istendiği gibi benim lsusb çıktı

Bus 002 Device 019: ID 1058:25a3 Western Digital Technologies, Inc. 
Bus 002 Device 017: ID 1b1a:7001  
Bus 002 Device 009: ID 2109:2812 VIA Labs, Inc. VL812 Hub
Bus 002 Device 008: ID 2109:2812 VIA Labs, Inc. VL812 Hub
Bus 002 Device 003: ID 0402:5608 ALi Corp. 
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 008 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 006 Device 006: ID 046d:c52b Logitech, Inc. Unifying Receiver
Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

EDIT: Bence bu bilgi de cevabı getirir.

root@localhost:/sys/bus/usb/devices# ls -al
insgesamt 0
drwxr-xr-x 2 root root 0 Okt  6 10:56 .
drwxr-xr-x 4 root root 0 Okt  6 10:56 ..
lrwxrwxrwx 1 root root 0 Okt  6 10:56 1-0:1.0 -> ../../../devices/pci0000:00/0000:00:1a.7/usb1/1-0:1.0
lrwxrwxrwx 1 root root 0 Okt  6 10:56 2-0:1.0 -> ../../../devices/pci0000:00/0000:00:1d.7/usb2/2-0:1.0
lrwxrwxrwx 1 root root 0 Okt  6 10:56 2-3 -> ../../../devices/pci0000:00/0000:00:1d.7/usb2/2-3
lrwxrwxrwx 1 root root 0 Okt  6 10:56 2-3:1.0 -> ../../../devices/pci0000:00/0000:00:1d.7/usb2/2-3/2-3:1.0
lrwxrwxrwx 1 root root 0 Okt  6 10:56 2-3:1.1 -> ../../../devices/pci0000:00/0000:00:1d.7/usb2/2-3/2-3:1.1
lrwxrwxrwx 1 root root 0 Okt  6 10:56 2-5 -> ../../../devices/pci0000:00/0000:00:1d.7/usb2/2-5
lrwxrwxrwx 1 root root 0 Okt  6 10:56 2-5.1 -> ../../../devices/pci0000:00/0000:00:1d.7/usb2/2-5/2-5.1
lrwxrwxrwx 1 root root 0 Okt  6 10:56 2-5:1.0 -> ../../../devices/pci0000:00/0000:00:1d.7/usb2/2-5/2-5:1.0
lrwxrwxrwx 1 root root 0 Okt  6 10:56 2-5.1:1.0 -> ../../../devices/pci0000:00/0000:00:1d.7/usb2/2-5/2-5.1/2-5.1:1.0
lrwxrwxrwx 1 root root 0 Okt  6 10:56 2-5.1.2 -> ../../../devices/pci0000:00/0000:00:1d.7/usb2/2-5/2-5.1/2-5.1.2
lrwxrwxrwx 1 root root 0 Okt  6 10:56 2-5.1.2:1.0 -> ../../../devices/pci0000:00/0000:00:1d.7/usb2/2-5/2-5.1/2-5.1.2/2-5.1.2:1.0
lrwxrwxrwx 1 root root 0 Okt  6 10:56 2-5.1.2:1.1 -> ../../../devices/pci0000:00/0000:00:1d.7/usb2/2-5/2-5.1/2-5.1.2/2-5.1.2:1.1
lrwxrwxrwx 1 root root 0 Okt  6 10:56 2-5.2 -> ../../../devices/pci0000:00/0000:00:1d.7/usb2/2-5/2-5.2
lrwxrwxrwx 1 root root 0 Okt  6 10:56 2-5.2:1.0 -> ../../../devices/pci0000:00/0000:00:1d.7/usb2/2-5/2-5.2/2-5.2:1.0
lrwxrwxrwx 1 root root 0 Okt  6 10:56 3-0:1.0 -> ../../../devices/pci0000:00/0000:00:1a.0/usb3/3-0:1.0
lrwxrwxrwx 1 root root 0 Okt  6 10:56 4-0:1.0 -> ../../../devices/pci0000:00/0000:00:1a.1/usb4/4-0:1.0
lrwxrwxrwx 1 root root 0 Okt  6 10:56 5-0:1.0 -> ../../../devices/pci0000:00/0000:00:1a.2/usb5/5-0:1.0
lrwxrwxrwx 1 root root 0 Okt  6 10:56 6-0:1.0 -> ../../../devices/pci0000:00/0000:00:1d.0/usb6/6-0:1.0
lrwxrwxrwx 1 root root 0 Okt  6 10:56 6-1 -> ../../../devices/pci0000:00/0000:00:1d.0/usb6/6-1
lrwxrwxrwx 1 root root 0 Okt  6 10:56 6-1:1.0 -> ../../../devices/pci0000:00/0000:00:1d.0/usb6/6-1/6-1:1.0
lrwxrwxrwx 1 root root 0 Okt  6 10:56 6-1:1.1 -> ../../../devices/pci0000:00/0000:00:1d.0/usb6/6-1/6-1:1.1
lrwxrwxrwx 1 root root 0 Okt  6 10:56 6-1:1.2 -> ../../../devices/pci0000:00/0000:00:1d.0/usb6/6-1/6-1:1.2
lrwxrwxrwx 1 root root 0 Okt  6 10:56 7-0:1.0 -> ../../../devices/pci0000:00/0000:00:1d.1/usb7/7-0:1.0
lrwxrwxrwx 1 root root 0 Okt  6 10:56 8-0:1.0 -> ../../../devices/pci0000:00/0000:00:1d.2/usb8/8-0:1.0
lrwxrwxrwx 1 root root 0 Okt  6 10:56 usb1 -> ../../../devices/pci0000:00/0000:00:1a.7/usb1
lrwxrwxrwx 1 root root 0 Okt  6 10:56 usb2 -> ../../../devices/pci0000:00/0000:00:1d.7/usb2
lrwxrwxrwx 1 root root 0 Okt  6 10:56 usb3 -> ../../../devices/pci0000:00/0000:00:1a.0/usb3
lrwxrwxrwx 1 root root 0 Okt  6 10:56 usb4 -> ../../../devices/pci0000:00/0000:00:1a.1/usb4
lrwxrwxrwx 1 root root 0 Okt  6 10:56 usb5 -> ../../../devices/pci0000:00/0000:00:1a.2/usb5
lrwxrwxrwx 1 root root 0 Okt  6 10:56 usb6 -> ../../../devices/pci0000:00/0000:00:1d.0/usb6
lrwxrwxrwx 1 root root 0 Okt  6 10:56 usb7 -> ../../../devices/pci0000:00/0000:00:1d.1/usb7
lrwxrwxrwx 1 root root 0 Okt  6 10:56 usb8 -> ../../../devices/pci0000:00/0000:00:1d.2/usb8

DÜZENLE:

tokam@localhost:~$ lsusb -t
/:  Bus 08.Port 1: Dev 1, Class=root_hub, Driver=uhci_hcd/2p, 12M
/:  Bus 07.Port 1: Dev 1, Class=root_hub, Driver=uhci_hcd/2p, 12M
/:  Bus 06.Port 1: Dev 1, Class=root_hub, Driver=uhci_hcd/2p, 12M
    |__ Port 1: Dev 2, If 0, Class=Human Interface Device, Driver=usbhid, 12M
    |__ Port 1: Dev 2, If 1, Class=Human Interface Device, Driver=usbhid, 12M
    |__ Port 1: Dev 2, If 2, Class=Human Interface Device, Driver=usbhid, 12M
/:  Bus 05.Port 1: Dev 1, Class=root_hub, Driver=uhci_hcd/2p, 12M
/:  Bus 04.Port 1: Dev 1, Class=root_hub, Driver=uhci_hcd/2p, 12M
/:  Bus 03.Port 1: Dev 1, Class=root_hub, Driver=uhci_hcd/2p, 12M
/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/6p, 480M
    |__ Port 3: Dev 3, If 0, Class=Video, Driver=uvcvideo, 480M
    |__ Port 3: Dev 3, If 1, Class=Video, Driver=uvcvideo, 480M
    |__ Port 5: Dev 51, If 0, Class=Hub, Driver=hub/4p, 480M
        |__ Port 1: Dev 52, If 0, Class=Hub, Driver=hub/4p, 480M
            |__ Port 2: Dev 54, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M
            |__ Port 2: Dev 54, If 1, Class=Human Interface Device, Driver=usbhid, 1.5M
        |__ Port 2: Dev 53, If 0, Class=Mass Storage, Driver=usb-storage, 480M
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/6p, 480M

8
Bu uyku şarjı özelliğinin Ubuntu ile ilgisi olduğunu düşünmüyorum. Windows ve Ubuntu bunu dizüstü bilgisayarımda benim için yapıyor. Bunun yerine, BIOS'ta uyku sırasında USB bağlantı noktalarına giden gücü kapatmak için bir ayar yapılmalıdır.
TheWanderer

1
Emin misiniz? Google bana "usb suspend ubuntu" anahtar kelimesi için bazı bilgiler gösterdi. Ama bunu nasıl doğru yapacağımdan henüz% 100 emin değilim. hamwaves.com/usb.autosuspend/en askubuntu.com/questions/80638/…
tokam

1
Onları devre dışı bırakabilirsiniz, ancak Ubuntu'nun kendisi çalışıyor. Dizüstü bilgisayar bağlantı noktalarını askıya almak için uyumadan önce komut dosyalarını çalıştırmak istiyorsanız, ancak bu seçenek için en azından BIOS ayarlarınızı kontrol etmek daha kolay olacaktır.
TheWanderer

1
BIOS'um maalesef böyle bir seçeneği desteklemiyor.
tokam

1
@tokam, soruyu düzenleyebilir ve dizüstü bilgisayarın markasını ve modelini ekleyebilir misiniz ? Ayrıca burada açıklandığı gibi bir USB güç paylaşım bağlantı noktası olmadığını da onaylayabilir misiniz: dell.com/support/article/ro/ro/robsdt1/SLN155147/EN (yıldırım simgesi)
user.dz

Yanıtlar:


4

OP bağlantıları, takip yorumları ve önerilen cevaplar içeren mevcut engelleme bloğu, ürün kimliğinin statik olduğu, 1b1a:7001ancak Bus ve Cihaz numaralarının değişmeye devam ettiği anlamına gelir.

Çözüm

Dizinde bir komut dosyası (istediğiniz herhangi bir ad) oluşturun ve içine bir komut dosyası /etc/pm/sleep.d/yerleştirin:

#!/bin/bash
ZeroBUS=$(lsusb | grep 1b1a:7001 | cut -c  5-7 )

# Strip leading zeros
BUS=$(echo $ZeroBUS | sed 's/^0*//')

# Build "usbX" usb number
USB=usb$BUS

case $1 in
     suspend|suspend_hybrid|hibernate)
     echo "Powering off: " $USB
        echo $USB | sudo tee /sys/bus/usb/drivers/usb/unbind
        ;;
     resume|thaw)
        # No need to do anything here, kernel unsuspends USB devices
        # Show how to power on for interest sake but since device is
        # powered off the usb number will be blank.
        echo "Powering on: " $USB
        echo $USB | sudo tee /sys/bus/usb/drivers/usb/bind
        ;;
esac

Dosyayı yürütülebilir olarak işaretleyin; sudo chmod +x file_nameburada "dosya_adı" seçtiğiniz addır.

Açıklama

Bu çözüm, benim durumumda telefon, kablosuz fare, kablosuz klavye vb. Anlamına gelen tüm USB hub'ı kapatır. Komut dosyasını terminal isteminden çağırırken sudo şifresinin girilmesi gerekir. Umarım sistemd den çağrıldığında sudo güçleri miras alınır. Kablolu bir farem olmadığı için bunu test edemedim. Bu nedenle sudo güçleri için ek iyileştirme gerekebilir.

BIOS sabit 5V güç kaynağı sağlarken güç fiziksel olarak kesilmez, bunun yerine veri yolundaki cihazların kendilerini kapatmaları söylenir. Benim durumumda kablosuz klavye ve fare çalışmayı durdurdu ve gücü tekrar açmak için dizüstü bilgisayar klavyesine ve dokunmatik yüzeye başvurmak zorunda kaldı.

Komut dosyasını çağırarak ve "askıya al" parametrelerini ileterek bunu manuel olarak test edebilirsiniz. "Özgeçmiş" parametresinin iletilmesi hiçbir şey başaramaz, çünkü cihaz kapalıdır ve tekrar açacak cihaz kimliği yoktur.


Tüm USB bağlantı noktalarını kolay çözüm

Kısa bir süre önce, bilinmeyen bir bağlantı noktasının dizüstü bilgisayarın askıya alınmasını engellediği bir sorunla karşılaştım. Değiştirdiğim bu çözümü (kodda kredi) buldum.

Yetkileri /lib/systemd/system-sleep/custom-xhci_hcdkullanarak dosyayı oluşturun sudove şu kodu ekleyin:

#!/bin/bash

# Original script was using /bin/sh but shellcheck reporting warnings.

# NAME: custom-xhci_hcd
# PATH: /lib/systemd/system-sleep
# CALL: Called from SystemD automatically
# DESC: Suspend broken for USB3.0 as of Oct 25/2018 various kernels all at once

# DATE: Oct 28 2018.

# NOTE: From comment #61 at: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/522998

TMPLIST=/tmp/xhci-dev-list

# Original script was: case "${1}" in hibernate|suspend)

case $1/$2 in
  pre/*)
    echo "$0: Going to $2..."
    echo -n '' > $TMPLIST
          for i in `ls /sys/bus/pci/drivers/xhci_hcd/ | egrep '[0-9a-z]+\:[0-9a-z]+\:.*$'`; do
              # Unbind xhci_hcd for first device XXXX:XX:XX.X:
               echo -n "$i" | tee /sys/bus/pci/drivers/xhci_hcd/unbind
           echo "$i" >> $TMPLIST
          done
        ;;
  post/*)
    echo "$0: Waking up from $2..."
    for i in `cat $TMPLIST`; do
              # Bind xhci_hcd for first device XXXX:XX:XX.X:
              echo -n "$i" | tee /sys/bus/pci/drivers/xhci_hcd/bind
    done
    rm $TMPLIST
        ;;
esac

Dizüstü bilgisayarı dinamik olmayan bir yankı komutuyla gerçekten askıya almadan önce komut dosyasını bir şekilde test edebilir miyim?
tokam

lsusb'de de gösterilen veri yolunu ve aygıtı başarıyla yalıtabiliyordunuz, ancak dizinin mevcut olmadığından, soruda gösterildiği gibi, dizinlerin $ {BUS} - $ {DEVICE} 'dan farklı bir yapısı var ve hangisinin doğru hangisi olduğunu askıya
alıp

Fareyi çıkarıp yeniden taktığım bir test, klasörü tanımamıza yardımcı oldu. Ancak bir sonraki testin çıktısına bakın: Keine Berechtigung şu anlama gelir: izin kökü yok @ localhost: ~ # echo suspend> /sys/bus/usb/devices/2-5.1.2:1.1/power/level -bash: / sys /bus/usb/devices/2-5.1.2:1.1/power/level: Keine Berechtigung
tokam

Farenin dışında bir LED ve altta bir lazer bulunur. Her iki cevabın bir kombinasyonu ile, farenin lazerini kapatabildim, ancak LED'i değil, uyku ortamımı ışıklandırdı. Belki LED'i Çekirdek tarafından kapatamayız? Fare için izole edilmiş bir USB Fişinde test ettim.
tokam

@tokam Bir sürü araştırma ve testten sonra nihayet sistemim üzerinde manuel olarak çalıştım ama test etmek için fareniz yok. Umarım işe yarıyor!
WinEunuuchs2Unix

5

Komutu vererek farenizin veriyolunu ve cihaz numarasını # bulun lsusbSadece takılı olduğunda istediğiniz (takılı ve takılı olmadan) numarasını . Numaraları not edin. Sizin durumunuzda 6 ve 6 gibi görünüyorlar

komutu verin sudo cp /etc/pm/sleep.d/novatel_3g_suspend /etc/pm/sleep.d/mouse_suspend(bunu yapmak zorundayız çünkü geditbulabileceğim süper kullanıcı olarak başlatıldığında artık Farklı Kaydet seçeneği yok.)

gksu gedit /etc/pm/sleep.d/mouse_suspendBus ve Cihaz numaralarını daha önce not ettiğiniz numaralarla eşleşecek şekilde değiştirin komutunu verin . Ortaya çıkan dosyayı kaydedin. Dizüstü bilgisayarınızı askıya aldığınızda yürütülür.

Sizin durumunuzda, BUS = X ve DEVICE = Y parametrelerini söz konusu fareyle eşleşen Bus ve Device numaralarına değiştirmeniz gerekir. Bu, cihazı farklı bir bağlantı noktasına taşıyana kadar çalışır, bu durumda cihazı tekrar bulmanız ve dosyayı buna göre ayarlamanız gerekir.

BUS=X
DEVICE=Y

if [ ! -x /sys/bus/usb/devices/${BUS}-${DEVICE}/power/level ]; then
    exit 0
fi

case $1 in
     suspend|suspend_hybrid|hibernate)
    echo suspend > /sys/bus/usb/devices/${BUS}-${DEVICE}/power/level
        ;;
     resume|thaw)
    # No need to do anything here, kernel unsuspends USB devices
    :
        ;;
esac

Dosyadaki yorumlar (# ile başlayan satırlar) önemsizdir ve güvenle yoksayılabilir.

Not: Bunu masaüstünde Suspend yoluyla test ettim ve reklamı yapıldı. Sahip olduğunuz aynı donanıma erişimim yok ama sistemi güç düğmesi ile sürdürmek zorunda kaldım, bu yüzden bunun sizin için çalışacağından oldukça eminim.

Yorumlara ve sorunun genişlemesine dayalı olarak düzenleme yapın:

Görünüşe göre bu, ilerlemeniz gereken bilgiler: Bus 006 Device 006: ID 046d:c52b Logitech, Inc. Unifying Receiver


Benim içinde geditUbuntu 16.04 bir orada 14.04 yükseltmek vanilya Save asaltında seçenek Filemenüsü. Yapılandırmanızda bir şey olmuş olmalı ??? PS iyi cevap, daha sonra deneyeceğim.
WinEunuuchs2Unix

Ubuntu Mate kullanarak da kaydetme dosyam var.
tokam

@ WinEunuuchs2Unix İlginç. Yeni bir kurulumda var gibi görünmüyor. Belki de bu yeni bir sorunun temelidir ....
Elder Geek

Üzerinde @ElderGeek bir güncelleme Save Ası yazarsanız geditben "Dosya Düzen Görünüm Arama Araçları Belgeler Yardım" nin tüm üst satırda menüyü almak ama yazarsanız gksu geditmenü listesi görünmüyor. HTH.
WinEunuuchs2Unix

1
@tokam aralarından çıkışı ile sorunuzu güncelleştirmek Can lsusb -tve lsusbnormalde bunları gün be gün kullandıkça takılı tüm cihazlar ile. Bu, hub'ı görselleştirmemize ve neyin olmamasına yardımcı olabilir.
WinEunuuchs2Unix
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.