Mam dwa urządzenia, które stale przesyłają dane przez ttyUSB0 i ttyUSB1. Mam skrypty php, które używają tych danych. Problem, na który wpadam, polega na tym, że czasami kanał po prostu się zawiesza. Najlepszym sposobem, jaki widziałem, aby to naprawić, jest odłączenie płyty BUB od komputera i podłączenie jej ponownie. Szukam jednak sposobu na zautomatyzowanie tej akcji. Czy istnieje sposób, aby powiedzieć linuxowi, aby zasadniczo wysunął płytę BUB, a następnie jakoś ją podniósł?
12
Odpowiedzi:
Mam ten sam problem co ty, ale w innym kontekście (otwieram konsolę szeregową na Linux-ie). Łącze szeregowe czasami przestaje odpowiadać i muszę fizycznie odłączyć konwerter szeregowy USB.
Poniższe wydaje się rozwiązać mój problem, ale nie zawsze.
Znajdź sterownik powiązany z urządzeniem ttyUSBx.
Możesz zobaczyć, że
/dev/ttyUSB
używausbserial
. Teraz wykop trochę dalej:W moim przypadku mój konwerter USB na szeregowy to Prolific PL2303. Jeśli masz adapter FTDI, myślę, że powinieneś zobaczyć
ftdi_sio
zamiastpl2303
.Zwolnij sterownik
Załaduj ponownie sterownik
Uruchom ponownie komunikację szeregową
źródło
Dzięki odpowiedzi sdive ciągle otrzymywałem komunikat „FATAL: Moduł usbserial jest w użyciu”.
W końcu rozwiązałem problem z kilkoma wskazówkami z odpowiedzi LiLo tutaj: /ubuntu//a/661/379851
Ale zamiast używać jakiegoś kodu C, napisałem odpowiednik Pythona, który również znajduje przedmiotową magistralę i urządzenie:
Po prostu zapisz to jako reset_usb.py lub coś, a następnie uruchom w następujący sposób:
Gdzie nazwa_kierowcy jest wyjściem
W moim przypadku był to cp210x, więc uruchamiam go w następujący sposób:
źródło
Oto moja odpowiedź na moduł
ftdi_sio
. Kroki są dostosowane z powyższej odpowiedzi i linku z komentarza w pierwotnym pytaniu.Nie udało mi się usunąć modułu:
Więc używam następującej sztuczki:
Który rzeczywiście został zweryfikowany przez:
Następnie łatwo było usunąć moduł:
A potem po prostu:
Nie jest jasne, dlaczego ftdi_sio jest w tak złym stanie, może nadal jest błędem, jak w:
Ale wygląda na to, że jądro 4.9.20 nadal zawiera zły
ftdi_sio
moduł.źródło