Fórum Ubuntu CZ/SK

Ubuntu pro osobní počítače => Hardware => Téma založeno: Fargotronic 10 Června 2013, 09:19:02

Název: Vypnutí napájení USB
Přispěvatel: 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
Název: Re:Vypnutí napájení USB
Přispěvatel: RRRadek Neužil 10 Června 2013, 11:54:23
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)
Název: Re:Vypnutí napájení USB
Přispěvatel: Fargotronic 10 Června 2013, 12:03:32
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
Název: Re:Vypnutí napájení USB
Přispěvatel: RRRadek Neužil 10 Června 2013, 12:11:10
Pokud je to tedy klasický PC tak ho připoj přímo na zdroj, na 5V čili červený+ a černý- ;)
Název: Re:Vypnutí napájení USB
Přispěvatel: Cuore 10 Června 2013, 12:15:46
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
Název: Re:Vypnutí napájení USB
Přispěvatel: Fargotronic 10 Června 2013, 12:45:21
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)
Kód: [Vybrat]
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š
Kód: [Vybrat]
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?
Kód: [Vybrat]
#!/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:
Kód: [Vybrat]
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?
Název: Re:Vypnutí napájení USB
Přispěvatel: Cuore 10 Června 2013, 22:35:24
myš máš v
Citace
Bus 003 Device 002: ID 093a:2510 Pixart Imaging, Inc. Optical Mouse
tudíž přichází v úvahu umístnění
Citace
3-0:1.0  3-1:1.0
Správné umístnění si ověř
Kód: [Vybrat]
cd /sys/bus/usb/devices a následně
Kód: [Vybrat]
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
Citace
busnum 3 a devnum 2

USB vypneš potom takhle
Kód: [Vybrat]
echo suspend > /sys/bus/usb/devices/3-x/power/level Za to "x" si dosadíš buď "0" nebo "1" Script se umístní do
Citace
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
Kód: [Vybrat]
#!/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
Citace
00_vyp_usb.sh
a nezapomeň mu dát spustitelný příznak.
Název: Re:Vypnutí napájení USB
Přispěvatel: Fargotronic 11 Června 2013, 08:08:08
Děkuji, opět jsem o kousek pokročil. :-)

Pomocí příkazů:
Kód: [Vybrat]
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:
Kód: [Vybrat]
#!/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
Kód: [Vybrat]
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. :/
Název: Re:Vypnutí napájení USB
Přispěvatel: Cuore 11 Června 2013, 12:45:18
já to nyní netestoval, jen jsem vycházel z toho původního. Co ti to provede, když se přihlásíš
Kód: [Vybrat]
sudo -i a následně to zkusíš?
Kód: [Vybrat]
echo suspend > /sys/bus/usb/devices/3-1/power/level Pokud by to nešlo tak vyzkoušej tohle
Kód: [Vybrat]
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
Kód: [Vybrat]
echo -n "3-1" > /sys/bus/usb/drivers/usb/bind takže výsledný script bude takhle
Kód: [Vybrat]
#!/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
  ;;
esac
ale snad ten suspend pojede, nevím proč by to měnili  ;)
Název: Re:Vypnutí napájení USB
Přispěvatel: Fargotronic 11 Června 2013, 14:43:01
Tak jsem to vyzkoušel. Příkaz:
Kód: [Vybrat]
echo suspend > /sys/bus/usb/devices/3-1/power/level
Vrátí:
Kód: [Vybrat]
-bash: echo: chyba zápisu: Nepřípustný argument
Příkaz:
Kód: [Vybrat]
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).
Název: Re:Vypnutí napájení USB
Přispěvatel: beer 11 Června 2013, 15:17:44
Tak jsem to vyzkoušel. Příkaz:
Kód: [Vybrat]
echo suspend > /sys/bus/usb/devices/3-1/power/level
Zkusil bych tam dát uvozovky kolem suspendu.

Pokud nepůjde, můžeš zkusit:

Kód: [Vybrat]
echo suspend | sudo tee /sys/bus/usb/devices/3-1/power/level
Název: Re:Vypnutí napájení USB
Přispěvatel: Cuore 11 Června 2013, 15:21:09
tak jsem prošel co šlo a pravděpodobně by mohlo fungovat
Kód: [Vybrat]
echo "0" > "/sys/bus/usb/devices/3-1/power/autosuspend"
echo "auto" > "/sys/bus/usb/devices/3-1/power/level"
první vypne druhý zapne
Název: Re:Vypnutí napájení USB
Přispěvatel: Fargotronic 11 Června 2013, 16:02:24
Tak jsem vyzkoušel oba:
Kód: [Vybrat]
root@Fargotronic-NTB:~# echo "0" > "/sys/bus/usb/devices/3-1/power/autosuspend"
Nestalo se vůbec nic.

Kód: [Vybrat]
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
Název: Re:Vypnutí napájení USB
Přispěvatel: Cuore 11 Června 2013, 20:37:21
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í
Název: Re:Vypnutí napájení USB
Přispěvatel: Fargotronic 11 Června 2013, 21:21:51
Takže ten finální script bude vypadat takto?
Kód: [Vybrat]
#!/bin/sh

case "$1" in
hibernate|suspend)

echo "0" > "/sys/bus/usb/devices/$port/power/autosuspend"
  ;;
resume|thaw)
  ;;
  *)
    exit 0
  ;;
esac
Název: Re:Vypnutí napájení USB
Přispěvatel: Roman Vacho 11 Června 2013, 21:24:20
Ano, ale jen do jádra 2.6. Potom se měnili parametry.
Název: Re:Vypnutí napájení USB
Přispěvatel: Fargotronic 12 Června 2013, 16:00:38
A jak to tedy má být teď na jádru novějším než 2.6?