Ist es möglich, unter Linux das Abziehen und erneute Anschließen eines USB-Geräts zu simulieren/zu erzwingen/vorzutäuschen?

Ist es möglich, unter Linux das Abziehen und erneute Anschließen eines USB-Geräts zu simulieren/zu erzwingen/vorzutäuschen?

Ich bin auf ein seltsames Problem gestoßen. Ich habe einen Bitcoin-USB-Miner, Bitfury, und verwende CGMiner zum Minen.

Wenn ich die Anwendung als Root starte, wird das USB-Gerät nicht automatisch erkannt. CGMiner erkennt den Stick erst, wenn er erneut eingesteckt wird (es erkennt ein Hotplug-Ereignis und funktioniert dann wie vorgesehen).

Ich möchte einen Headless-Miniserver einrichten und möchte daher nicht bei jedem Neustart des Servers aufstehen und das Gerät aus- und wieder einstecken, da ich dazu zu faul bin und es ziemlich schwierig ist, wenn ich nicht physisch zu Hause bin.

Ist es also möglich, das USB-System auszuschalten und neu zu starten? Oder gibt es eine bessere Möglichkeit, dies zu tun?

Derzeit verwende ich Fedora 20 auf einem HP t5730-Terminal, aber das Problem ist bei Raspbian auf Raspberry PI aufgetreten, daher glaube ich nicht, dass es am Betriebssystem liegt. Vielleicht liegt es am Gerät selbst oder an CGMiners Fehler, aber ich konnte bisher nichts zu diesem Thema finden.

Antwort1

Entladen Sie Ihre USB-HCI-Kernelmodule (alles *hci_hcd und *usb*) und laden Sie sie neu. Dies ist die einzige zuverlässige Möglichkeit, die Stromversorgung der USB-Anschlüsse tatsächlich zu unterbrechen.

Es gibt andere, weniger drastische Methoden, um dasselbe zu erreichen, aber je nach Fehler Ihres Geräts gibt es keine Garantie, dass sie funktionieren.

Antwort2

Diese AntwortEinzelheiten zur Verwendung des usbresetDienstprogramms. Geben Sie eine positive Bewertung ab, wenn dies hilfreich ist.

So ziehe ich den Stecker aus meinem USB-WLAN-Dongle, der oft hängt, und stecke ihn dann wieder ein. Bevor ich dieses Skript gefunden habe, musste ich ihn physisch ausstecken und dann wieder einstecken, damit er zurückgesetzt wird.

$ usbreset
Usage:
  usbreset PPPP:VVVV - reset by product and vendor id
  usbreset BBB/DDD   - reset by bus and device number
  usbreset "Product" - reset by product name

Devices:
  Number 001/003  ID 046d:080a  
  Number 003/002  ID 045e:07a5  Microsoft® 2.4GHz Transceiver v9.0
  Number 001/002  ID 0cf3:9271  USB2.0 WLAN

$ sudo usbreset 0cf3:9271
Resetting USB2.0 WLAN ... ok

Wie Sie sehen, führe ich das Skript einmal ohne Argumente aus, um zu sehen, welche Geräte angeschlossen sind. Dann führe ich es erneut mit sudo und der Produkt-/Hersteller-ID (die bei Neustarts konsistent ist) aus, um das Gerät virtuell zu trennen und wieder anzuschließen.

verwandte Informationen