Como posso ligar e desligar um dispositivo USB no Raspberry Pi?

7

Meu pen drive Netgear WiFi (usando o driver ath9k_htc) no meu Raspberry Pi periodicamente entra em um estado ruim que resulta em erros de leitura USB no dmesg. Este estado não pode ser corrigido por uma reinicialização do sistema, mas requer um ciclo completo de energia do dispositivo USB, seja desconectando-o e conectando o pen drive USB novamente, ou desligando e ligando o computador inteiro.

Eu li que é possível programar a energia de forma programática para um dispositivo USB usando um hub USB. Então eu tentei isso com o meu interior 4 portas USB 2.0 Hub baseado nas informações nesta postagem:

link

Mas as luzes do pen drive USB permanecem acesas mesmo após a emissão do comando abaixo, embora isso faça com que o dispositivo wlan0 desapareça. Eu tentei em um Belkin 4-Port Hub com os mesmos resultados. Alguém tem alguma ideia?

echo '1-1.2.3' | tee /sys/bus/usb/drivers/usb/unbind

Detalhes das minhas conexões USB:

pi@fpi-16 ~ $ sudo lsusb -t
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=dwc_otg/1p, 480M
    |__ Port 1: Dev 2, If 0, Class=hub, Driver=hub/3p, 480M
        |__ Port 1: Dev 3, If 0, Class=vend., Driver=smsc95xx, 480M
        |__ Port 2: Dev 4, If 0, Class=hub, Driver=hub/4p, 480M
            |__ Port 1: Dev 5, If 0, Class=vend., Driver=rt2800usb, 480M
            |__ Port 3: Dev 6, If 0, Class=vend., Driver=ath9k_htc, 480M
    
por David Young 26.12.2012 / 16:11

3 respostas

1

Se o seu driver host USB for compilado como um módulo do kernel, você pode tentar descarregá-lo e recarregá-lo. Isso geralmente também deve desligar totalmente o USB (eu fiz isso em outros dispositivos com hardware USB com defeito que precisam ser redefinidos eletricamente, não especificamente no Rasperry Pi que eu não sinto muito). Então verifique se você o vê como um módulo (lsmod) ou como um módulo e depois no rmmod dele (e todas as dependências eventualmente) e recarregue-o novamente, ele deve fazer o truque.

    
por 04.12.2013 / 16:38
0

Veja um aplicativo que pode fazer exatamente o que você precisa: link

Para instruções de instalação e uso, consulte o arquivo README.md.

Pode ser preciso um pouco de tentativa e erro para descobrir qual hub e porta correspondem a cada porta USB, o que parece variar dependendo do modelo do Raspberry Pi.

O ciclo de energia pode ser alcançado em um único comando enviando um comando p 0 (desligado) seguido por um p 1 (ligado).

    
por 22.06.2018 / 00:03
0

Pré-requisito: Faça o download e compile o usbreset no link Compile com gcc -o usbreset usbreset.c . O GCC já deveria estar no seu pi de framboesa. Então chmod +x usbreset

Se você tiver apenas um dispositivo usb, poderá redefinir esse dispositivo e funcionar. Se você tiver muitos dispositivos usb, redefina o hub usb.

Para encontrar os ids dos dispositivos usb, execute lsusb. Você deveria ver algo como: Barramento 001 Dispositivo 009: ID 152d: 0578 JMicron Technology Corp. / JMicron USA Technology Corp. Barramento 001 Dispositivo 008: ID 1f75: 0621 Innostor Technology Corporation Barramento 001 Dispositivo 007: ID 0424: ec00 Padrão Microsystems Corp. Adaptador Fast Ethernet SMSC9512 / 9514 Barramento 001 Dispositivo 002: ID 0424: 9514 Padrão Microsystems Corp. SMC9514 Hub Barramento 001 Dispositivo 001: ID 1d6b: 0002 hub raiz do Linux Foundation 2.0

O hub sobre o qual estou escrevendo é o Hub SMC9514.

Crie um arquivo sh:

#!/bin/bash

USBNAME=0424:9514 #Put here the usb ID
LSUSB=$(lsusb | grep --ignore-case $USBNAME)
FOLD="/dev/bus/usb/"$(echo $LSUSB | cut --delimiter=' ' --fields='2')"/"$(echo $LSUSB | cut --delimiter=' ' --fields='4' | tr --delete ":")
echo $LSUSB
echo $FOLD

sudo ./usbreset $FOLD; #The path where you have the usbreset executable

E execute-o na inicialização: bash usbreset.sh

Você deve bash usbreset.sh antes de montar qualquer dispositivo usb que já funcione. Meu Pi, por exemplo, tem um SSD fixo permanente e dois discos rígidos alimentados por uma placa de relés. Eu devo executar o comando reset antes de montar o SSD, caso contrário ele não funcionará.

Também deve funcionar para o seu dispositivo.

Espero que ajude.

    
por 24.03.2019 / 07:37

Tags