Existe uma maneira de desligar um dispositivo USB usando o software?

9

Existe uma maneira de eu poder desligar completamente um dispositivo USB (específico) usando software de uma máquina Linux?

Eu quero usar isso para desligar (para que o LED esteja desligado) um pendrive (único).

Você conhece algum método para conseguir isso? Por exemplo. usando / sys / bus / usb ou algo parecido?

    
por Daniel Jour 23.12.2011 / 19:57

2 respostas

7

Se a sua máquina executa o kernel antigo, você pode emitir echo suspend > /sys/bus/usb/devices/X-X/power/level para forçar a suspensão do dispositivo.

No entanto, desde 2.6.32 isso não é mais possível:

We can categorize power management events in two broad classes: external and internal. External events are those triggered by some agent outside the USB stack: system suspend/resume (triggered by userspace), manual dynamic resume (also triggered by userspace), and remote wakeup (triggered by the device). Internal events are those triggered within the USB stack: autosuspend and autoresume. Note that all dynamic suspend events are internal; external agents are not allowed to issue dynamic suspends.

power/control

    This file contains one of two words: "on" or "auto".
    You can write those words to the file to change the
    device's setting.

    "on" means that the device should be resumed and
    autosuspend is not allowed.  (Of course, system
    suspends are still allowed.)

    "auto" is the normal state in which the kernel is
    allowed to autosuspend and autoresume the device.

    (In kernels up to 2.6.32, you could also specify
    "suspend", meaning that the device should remain
    suspended and autoresume was not allowed.  This
    setting is no longer supported.

(de link )

Eu acho que a melhor coisa que você pode fazer é desvincular dispositivo do driver , então não haveria nenhuma atividade nele e configure o dispositivo para que seja suspenso automaticamente o mais rápido possível ( echo auto > /sys/bus/usb/devices/X-X/power/control && echo 0 > /sys/bus/usb/devices/X-X/power/autosuspend_delay_ms ).

No entanto, até onde eu sei as especificações USB , mesmo que você suspenda o dispositivo, algum poder na porta permanecerá, por isso, pode ser impossível desabilitar o led se ele for alimentado pelo esquema 'dumb' (isto é, conectado diretamente aos pinos + 5V e GND).

    
por 24.12.2011 / 11:24
3

O uso do comando ejetar deve funcionar.

Execute eject /dev/<devicename> e ele deve ser desativado.

    
por 23.12.2011 / 20:02