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.