Como evitar o desligamento de determinados dispositivos USB quando uma máquina é suspensa

8

Gostaria de manter o fornecimento de energia para uma unidade alimentada por USB quando o sistema entra em modo de suspensão (AKA S3 ou "suspender para RAM").

Normalmente, a energia é cortada enquanto a máquina está suspensa, o que faz com que ela seja desmontada e, em seguida, remontada quando o sistema é retomado. Isso não é muito bom, especialmente se a unidade suportar o gerenciamento de energia.

Embora eu pudesse executá-lo em uma fonte de alimentação separada, eu preferiria evitar alocar mais fiação para algo que possa, pelo menos em teoria, ser feito com meu hardware existente.

Como posso determinar se é possível fazer isso com o meu sistema, e como posso providenciar para que um determinado dispositivo USB, ou seja, este gabinete, seja sempre tratado dessa maneira?

Estou executando o Ubuntu 10.10.

atualização

Descoberto este tópico do ubuntuforums que sugere usar acpitool -w para determinar o nível de ativação disponível para o Controlador USB.

Executar isso no meu sistema mostra S1 para os controladores USB:

$ acpitool -w
   Device   S-state   Status   Sysfs node
  ---------------------------------------
  1. LID      S3    *enabled   
  2. PBTN     S4    *enabled   
  3. PCI0     S3    *disabled  no-bus:pci0000:00
  4. USB0     S1    *disabled  pci:0000:00:1d.0
  5. USB1     S1    *disabled  pci:0000:00:1d.1
  6. USB2     S1    *disabled  pci:0000:00:1d.2
  7. USB3     S1    *disabled  pci:0000:00:1d.7
  8. MODM     S3    *disabled  
  9. PCIE     S4    *disabled  pci:0000:00:1e.0

O que parece estar me dizendo que o recurso de ativação só pode ser ativado para USB no estado S1.

Não sei ao certo como isso é útil, pois fornecer potência total e permitir o despertar podem ser preocupações ortogonais. Pode ser que ativar o wake-up apenas forneça energia baixa, portanto, pode haver uma maneira diferente de ativar a energia total.

Se ligar o despertador equivale a fornecer potência total, parece que posso fazer o que eu quero, colocando uma placa USB no slot de expansão (eu acho que é o que PCIE é?). Embora eu pense que gostaria de saber um pouco mais sobre isso antes de tentar escavar uma placa USB2.

    
por intuited 04.01.2011 / 09:01

2 respostas

3

Ativar o despertador em um barramento não equivale a fornecer potência total ao barramento durante a suspensão. Significa apenas que o sistema irá escutar o sinal de despertar nas linhas que correspondem a esse dispositivo. A energia em espera é fornecida pelo barramento apropriado, mas essa energia é muito menor que a potência total para operação normal. A adição de uma placa PCI / PCIe USB pode ou não permitir o despertar USB, mas definitivamente não fornecerá potência total às portas USB enquanto a máquina estiver no S3. Em vez disso, fornecerá apenas o suficiente para manter o chipset funcionando, cerca de 200mA @ 3.3V do que eu entendo de esta página da Intel sobre seus adaptadores de rede.

Eu acho que este é um recurso que será específico para uma placa-mãe e controlável apenas através do BIOS. Eu tenho uma placa-mãe Thinkpad e Gigabyte que permite alimentar dispositivos USB enquanto a máquina não está acordada, e em ambos os casos é uma configuração na BIOS, em vez de algo que você pode alterar enquanto o sistema é totalmente inicializado. Pensando nisso, pode haver uma maneira de o Thinkpad configurar isso durante a execução, mas os Thinkpads são conhecidos por ter extensões ACPI especiais para gerenciar as opções de energia. Independentemente disso, para ambos os sistemas é uma proposta de tudo ou nada - não há opção para configuração por porta ou por dispositivo. Tenho certeza de que o poder total do USB em suspensão é algo que não é padrão nos PCs e, como tal, não há uma maneira portátil de verificar se ele está disponível.

Embora seja um hardware extra, acho que a solução mais simples e universal é usar apenas um hub ativado.

    
por 06.05.2011 / 01:21
2

O kernel tem suporte para o recurso de economia de energia USB 2.0

Para desativá-lo depois de ter iniciado, você pode tentar

echo 1 > / sys / bus / usb / devices / seu dispositivo USB / power / autosuspend

echo "on" > / sys / bus / usb / devices / seu dispositivo USB / power / level

Para mais detalhes, consulte este link

    
por 30.04.2011 / 04:17