Fórum Ubuntu CZ/SK
Ubuntu pro osobní počítače => Hardware => Téma založeno: Fargotronic 10 Června 2013, 09:19:02
-
Ahoj,
Mám notebook již v trochu rozpadajícím stavu. Takže ventilátor je napojený do USB (konektor na základní desce je mrtvý). Takže bych potřeboval poradit s jednou věcí. Mám nastavené, že počítač automaticky usne po hodině neaktivity. Chtěl bych se tedy zeptat, jestli se nějakým způsobem dá udělat, že by se s uspáním počítače automaticky vypnulo napájení USB a zároveň by naběhlo s probuzením počítače.
Kdyby náhodou šlo, že by se pouštěl proud do jednoho USB podle teploty PC (něco jako je regulace ventilátoru na základní desce) tak by to bylo super, ale spokojím se s tím automatickým vypínáním při uspání PC.
Jde totiž o to, že většinou usnu při filmu a poté mi až do rána počítač "hučí". :/
Děkuji mockrát
-
Tak si ho dej na vypínač ;D
Nebo...
http://stackoverflow.com/questions/4702216/controlling-a-usb-power-supply-on-off-with-linux (http://stackoverflow.com/questions/4702216/controlling-a-usb-power-supply-on-off-with-linux)
-
Děkuji za rychlou reakci, ale z uvedeného odkazu nejsem vůbec chytřejší. :/
Vím, je to pěkná prasárna mít takto zapojený ventilátor, ale nějak PC chladit musím. :D :D :D
-
Pokud je to tedy klasický PC tak ho připoj přímo na zdroj, na 5V čili červený+ a černý- ;)
-
vypínání USB jsem kdysi řešil tak si to přečti
http://forum.ubuntu.cz/index.php?topic=64913.msg463134#msg463134 (http://forum.ubuntu.cz/index.php?topic=64913.msg463134#msg463134) pak se ptej ;D
-
Bohužel se jedná o notebook. ;)
Tak se snažím postupovat podle tvého návodu, ale mám menší problém. :-) Toto jsou výpisy:
Zapojený pouze ventilátor (notebook má dvě USB)
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 003 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 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Připojená i optická myš
Bus 003 Device 002: ID 093a:2510 Pixart Imaging, Inc. Optical Mouse
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 003 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 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Takže jsem se dále dočetl, že je využíváno tedy pouze napájení a USB se tedy nemá jak identifikovat. Takže pokud bych chtěl vypnout všechny USB, tak příkaz bude vypadat takto?
#!/bin/bash
. /usr/lib/pm-utils/functions
case "$1" in
hibernate|suspend)
echo suspend >/sys/bus/usb/devices/1-0:1.0/power/level
echo suspend >/sys/bus/usb/devices/1-8/power/level
echo suspend >/sys/bus/usb/devices/1-8.1/power/level
echo suspend >/sys/bus/usb/devices/1-8.1.1/power/level
echo suspend >/sys/bus/usb/devices/1-8.1.1:1.0/power/level
echo suspend >/sys/bus/usb/devices/1-8.1.2/power/level
echo suspend >/sys/bus/usb/devices/1-8.1.2:1.0/power/level
echo suspend >/sys/bus/usb/devices/1-8.1.3/power/level
echo suspend >/sys/bus/usb/devices/1-8.1.3:1.0/power/level
echo suspend >/sys/bus/usb/devices/1-8.1.3:1.1/power/level
echo suspend >/sys/bus/usb/devices/1-8.1.3:1.2/power/level
echo suspend >/sys/bus/usb/devices/1-8.1.3:1.3/power/level
echo suspend >/sys/bus/usb/devices/1-8.1:1.0/power/level
echo suspend >/sys/bus/usb/devices/1-8.3/power/level
echo suspend >/sys/bus/usb/devices/1-8.3:1.0/power/level
echo suspend >/sys/bus/usb/devices/1-8:1.0/power/level
echo suspend >/sys/bus/usb/devices/2-0:1.0/power/level
echo suspend >/sys/bus/usb/devices/usb1/power/level
echo suspend >/sys/bus/usb/devices/usb2/power/level
;;
thaw|resume)
echo auto >/sys/bus/usb/devices/1-0:1.0/power/level
echo auto >/sys/bus/usb/devices/1-8/power/level
echo auto >/sys/bus/usb/devices/1-8.1/power/level
echo auto >/sys/bus/usb/devices/1-8.1.1/power/level
echo auto >/sys/bus/usb/devices/1-8.1.1:1.0/power/level
echo auto >/sys/bus/usb/devices/1-8.1.2/power/level
echo auto >/sys/bus/usb/devices/1-8.1.2:1.0/power/level
echo auto >/sys/bus/usb/devices/1-8.1.3/power/level
echo auto >/sys/bus/usb/devices/1-8.1.3:1.0/power/level
echo auto >/sys/bus/usb/devices/1-8.1.3:1.1/power/level
echo auto >/sys/bus/usb/devices/1-8.1.3:1.2/power/level
echo auto >/sys/bus/usb/devices/1-8.1.3:1.3/power/level
echo auto >/sys/bus/usb/devices/1-8.1:1.0/power/level
echo auto >/sys/bus/usb/devices/1-8.3/power/level
echo auto >/sys/bus/usb/devices/1-8.3:1.0/power/level
echo auto >/sys/bus/usb/devices/1-8:1.0/power/level
echo auto >/sys/bus/usb/devices/2-0:1.0/power/level
echo auto >/sys/bus/usb/devices/usb1/power/level
echo auto >/sys/bus/usb/devices/usb2/power/level
;;
*)
;;
esac
exit
Když výpis /sys/bus/usb/devices/ je:
usb1 usb3 usb5 usb7 2-0:1.0 3-1 4-0:1.0 6-0:1.0
usb2 usb4 usb6 1-0:1.0 3-0:1.0 3-1:1.0 5-0:1.0 7-0:1.0
A ještě jsem z toho nějak nepochopil, kam a pod jakým názvem ten script uložit?
-
myš máš v
Bus 003 Device 002: ID 093a:2510 Pixart Imaging, Inc. Optical Mouse
tudíž přichází v úvahu umístnění 3-0:1.0 3-1:1.0
Správné umístnění si ověř cd /sys/bus/usb/devices a následně cat 3-0/busnum
cat 3-1/busnum
cat 3-0/devnum
cat 3-1/devnum Správné umístnění ti dá výstup busnum 3 a devnum 2
USB vypneš potom takhle echo suspend > /sys/bus/usb/devices/3-x/power/level Za to "x" si dosadíš buď "0" nebo "1" Script se umístní do etc/pm/sleep.d
kde musí mít specifický název (hlavní je číslo, které přidělí prioritu) a přesnou vnitřní strukturu. Takže by pak vypadal asi takhle #!/bin/sh
case "$1" in
hibernate|suspend)
echo suspend > /sys/bus/usb/devices/3-x/power/level &
;;
resume|thaw)
;;
*)
exit 0
;;
esac Jeho název si dej třeba 00_vyp_usb.sh
a nezapomeň mu dát spustitelný příznak.
-
Děkuji, opět jsem o kousek pokročil. :-)
Pomocí příkazů:
cat 3-0/busnum
cat 3-1/busnum
cat 3-0/devnum
cat 3-1/devnum
Jsem zjistil, že se jedná o 3-1. Vytvořil jsem tedy script 00_vyp_usb.sh:
#!/bin/sh
case "$1" in
hibernate|suspend)
echo suspend > /sys/bus/usb/devices/3-1/power/level &
;;
resume|thaw)
;;
*)
exit 0
;;
esac
A uložil do svého domovského adresáře. Poté pomocí terminálu a příkazu sudo mv přesunul do adresáře etc/pm/sleep.d poté otevřel vlastnosti a povolil spuštění scriptu jako programu (doufám, že to je ten spustitelný příznak).
Ale chtěl jsem tedy vyzkoušet vypnutí USB pomocí příkazu
echo suspend > /sys/bus/usb/devices/3-1/power/level
Ale příkaz (i v případě, že se pokouším jako sudo) je mi vráceno, že operace byla zamítnuta. :/
-
já to nyní netestoval, jen jsem vycházel z toho původního. Co ti to provede, když se přihlásíš
sudo -i a následně to zkusíš? echo suspend > /sys/bus/usb/devices/3-1/power/level Pokud by to nešlo tak vyzkoušej tohle echo -n "3-1" > /sys/bus/usb/drivers/usb/unbind to by mělo určitě shodit napájení. Ale obávám se, že se ti po probuzení samo nenahodí, to budeš muset provést takhle echo -n "3-1" > /sys/bus/usb/drivers/usb/bind takže výsledný script bude takhle
#!/bin/sh
case "$1" in
hibernate|suspend)
echo -n "3-1" > /sys/bus/usb/drivers/usb/unbind &
;;
resume|thaw)
echo -n "3-1" > /sys/bus/usb/drivers/usb/bind &
;;
*)
exit 0
;;
esacale snad ten suspend pojede, nevím proč by to měnili ;)
-
Tak jsem to vyzkoušel. Příkaz:
echo suspend > /sys/bus/usb/devices/3-1/power/level
Vrátí:
-bash: echo: chyba zápisu: Nepřípustný argument
Příkaz:
echo -n "3-1" > /sys/bus/usb/drivers/usb/unbind
Ten chybu nevrací. Ale udělá něco co jsem nechtěl. USB do kterého je zapojený ventilátor pořád běží (ventilátor stále hučí :D) a do druhého USB (zde je zapojená optická myš) napájení také stále jde (myš svítí) ale přeruší se přenos dat (myš přestane reagovat na pohyb).
-
Tak jsem to vyzkoušel. Příkaz:
echo suspend > /sys/bus/usb/devices/3-1/power/level
Zkusil bych tam dát uvozovky kolem suspendu.
Pokud nepůjde, můžeš zkusit:
echo suspend | sudo tee /sys/bus/usb/devices/3-1/power/level
-
tak jsem prošel co šlo a pravděpodobně by mohlo fungovat
echo "0" > "/sys/bus/usb/devices/3-1/power/autosuspend"
echo "auto" > "/sys/bus/usb/devices/3-1/power/level" první vypne druhý zapne
-
Tak jsem vyzkoušel oba:
root@Fargotronic-NTB:~# echo "0" > "/sys/bus/usb/devices/3-1/power/autosuspend"
Nestalo se vůbec nic.
root@Fargotronic-NTB:~# echo suspend | sudo tee /sys/bus/usb/devices/3-1/power/level
suspend
tee: /sys/bus/usb/devices/3-1/power/level: Nepřípustný argument
-
co jsem vygooglil tak od jádra 2.6 to nefunguje
https://bbs.archlinux.org/viewtopic.php?id=95659 (https://bbs.archlinux.org/viewtopic.php?id=95659)
nicmáně nějaká funkční řešení se uvádějí
-
Takže ten finální script bude vypadat takto?
#!/bin/sh
case "$1" in
hibernate|suspend)
echo "0" > "/sys/bus/usb/devices/$port/power/autosuspend"
;;
resume|thaw)
;;
*)
exit 0
;;
esac
-
Ano, ale jen do jádra 2.6. Potom se měnili parametry.
-
A jak to tedy má být teď na jádru novějším než 2.6?