środa, 7 października 2020

Ponowna inicjacja urzadzeń Usb w Linuxie

Czasami zdarzy się wam, że myszka usb się zawiesi lub modem usb 3G przestanie odpowiadać? I co wtedy? Wcale nie trzeba resetować systemu i restartować komputera.Urządzenia usb mają szczególną cechę w systemie. Mogą być "na gorąco" podłączane do magistrali czy kontrolera. Oznacza to, że system musi mieć możliwość ponownego skanowania wszystkich urzadzeń podłączonych do magistrali. Operacja taka może odbywać się podczas startu systemu ale także podczas jego normalnej pracy. W skrócie: urządzenie musi zostać wykryte i na podstawie identyfikatora dostawcy i produktu system dobiera odpowiedni sterownik. Jak wiecie, sterownik pośredniczy między systemem a urządzeniami, aby się wzajemnie "dogadywały".

Do dzieła!
Wykorzystamy tu zaletę, że w systemie Linux każde urządzenie jest plikiem. A co można robić z plikami? Można je tworzyć, można usuwać, można z nich czytać i do nich zapisywać!
Te pliki znajdują się w folderze /sys/bus/usb/devices/*

Najpierw skorzystamy z metody prostszej, czyli zainicjujemy (zresetujemy) wszystkie urządzenia usb widoczne w systemie. Utworzymy plik resetusb.sh z następującym kodem:

#!/bin/bash
echo "Ponowna inicjacja urządzeń usb"
for urz in /sys/bus/usb/devices/*; do
echo "resetuje $urz"
echo 0 > "$urz/authorized"
echo 1 > "$urz/authorized"
done


0 to wyłączanie urządzenia, 1 to włączanie. Następnie nadajemy atrybut wykonywalności skryptu
chmod u+x resetusb.sh
i możemy już uruchomić skrypt:
sudo ./resetusb.sh

Po uruchomieniu wszystkie urządzenia usb zgasną, np. mysz, po czym wstaną samoczynnie, niektóre pikając przy tym.

0 komentarzy:

Prześlij komentarz

Podziel się swoimi myślami.Spam nie będzie tolerowany.