Forum: Mikrocontroller und Digitale Elektronik USB-Kommunikation per Bluetooth


von Walter L. (wallew)


Lesenswert?

Hallo liebe Forenmitglieder,

könnt Ihr mir sagen, ob folgende Idee technisch realisierbar ist:

Ist es möglich alle gängigen Peripheriegeräte wie USB-Tastatur oder 
USB-Maus, die an sich kabelgebunden sind, per Bluetooth mit dem Computer 
kommunizieren zu lassen? D.h. Man schließt das Gerät nicht direkt an den 
PC, sondern an einen Bluetoothsender, der gleichzeitig die 
Stromversorgung für dieses Gerät liefert.
Der Sender schickt dann ganz stur die Signale an den Empfänger, der am 
USB-Port des PCs angeschlossen ist.

Der PC soll denken, die Tastatur (o.ä.) sei direkt per Kabel 
angeschlossen. Und die Tastatur soll auch denken, sie sei direkt am PC 
angeschlossen. Laptops haben zwar meistens bereits einen 
Bluetoothempfänger eingebaut, aber ich denke, dass dann auch spezielle 
Software erforderlich ist, die sozusagen einen virtuellen USB-Anschluss 
kreiert, an dem die Tastatur sozusagen angeschlossen ist.

Wie aufwändig ist es, sowas selbst zu basteln? Es gibt ja bereits im 
hauseigenen Wiki einen einfachen Schaltplan für ein Bluetoothmodul.

Ist es wirklich so einfach wie ich es mir vorstelle? Sobald die Tastatur 
mit Strom versorgt wird, und man auf die Tasten haut, lassen sich dann 
einfach die Signale abzwacken?

Mit freundlichen Grüßen
WL

von Sven B. (scummos)


Lesenswert?

Meines Erachtens ist das prinzipiell denkbar, aber nicht einfach.

So gut wie alle USB-Implementierungen sind ja in Hardware und sowas wie 
ein Endpoint wird vom USB-Controller gehandhabt. Sich da irgendwo 
dazwischenzusetzen und das per Bluetooth rauszuschicken und dann auf der 
anderen Seite wieder zusammenzusetzen ... hm. Denkbar, aber das wird 
bestimmt ein frustrierendes und aufwändiges Projekt. Du musst das auf 
einer relativ hohen Protokollebene tun, einfach das physikalische Layer 
vom USB über Bluetooth routen wird nicht gehen, ich denke schon vom 
Timing her nicht und auch wegen ein paar anderen Dingen die das so 
macht. Und das wird bestimmt aufwendig.
Ich würde mir lieber eine andere Lösung überlegen für das Problem was du 
hast.

Anders sieht es vielleicht aus, wenn du dich auf eine bestimmte 
Geräteklasse beschränkst, zum Beispiel Tastaturen. Sowas würde ich ganz 
normal als USB Client betreiben, die gedrückten Tasten über Bluetooth 
weiterleiten und mich dann auf der anderen Seite als Tastatur ausgeben. 
Immer noch ein gewisser Aufwand, aber scheint mir einen machbaren Umfang 
für ein Bastelprojekt zu haben.

: Bearbeitet durch User
von Walter L. (wallew)


Lesenswert?

Wieso stelle ich es mir so einfach vor? Bzw. wo ist der Haken an der 
Sache?

Jetzt wo Du von "Zusammensetzen" sprachst, fällt mir natürlich ein Punkt 
auf: Die Signale enthalten ja nicht instantan die volle Information, 
sondern ich muss warten, bis das Zeug gänzlich ankommt. Aber der einzige 
Unterschied zwischen Bluetoothübertragung und Kabel ist ja die 
Störanfälligkeit, oder?

Ich meine, das Zusammensetzen ist ja nicht mein Problem. Das macht der 
USBTreiber des Geräts, den ich vorher kabelgebunden auf dem PC 
installiert hab.

von Walter L. (wallew)


Lesenswert?

Ja, also die Geräteklasse, auf die ich mich beschränken will sind reine 
Eingabegeräte: Tastatur, Maus, Grafiktablett, etc.

von Sven B. (scummos)


Lesenswert?

Naja, du kannst ja mal ganz vorne anfangen in der Kommunikation. Das USB 
hat zwei differentielle Datenleitungen, D+ und D-. Je nach dem, ob D+ 
oder D- vom Device High gezogen wird, ist das Gerät im Low- oder 
Full-Speed-Modus. Für High-Speed wird ein ganz merkwürdiger 
Initialisierungs-Pattern gesendet, und irgendwelche Serienwiderstände in 
die Leitungen geschaltet ... das physikalische Layer ist einfach nicht 
so aufgebaut, dass du einfach Nullen und Eisen rauslesen und über das 
Bluetooth schicken kannst, und auf der anderen Seite wieder auf die 
Leitungen schreiben. Das ginge bei SPI, aber nicht bei USB. Das USB 
macht einige Dinge die sich darauf verlassen dass da tatsächlich ein 
Kabel ist, was die Datenleitungen darstellt, mit höchstens einer 
bestimmten Länge etc.
Ich denke schon wegen des strikten Timings von USB könntest du nicht 
schnell genug reagieren wenn du das so umsetzen wolltest.

Es kann sein dass du irgendein Subset von Features wählen kannst, sodass 
das Ganze irgendwie machbar ist ("Low-Speed Geräte mit nur Control / 
Interrupt Endpoints"). Das kann ich nicht abschätzen. Einfach wird es 
jedenfalls nicht.

Es gibt drahtlose USB-Hubs, vielleicht kaufst du einfach sowas? Da hat 
schon jemand ordentlich gelitten um das umzusetzen ;)

In jedem Fall erscheint es mir aussichtslos (einfach aus Gefühl, ich 
kann dir nicht genau sagen woran es als erstes scheitern würde) zu 
versuchen die Datenübertragung stumpf weiterzuleiten. Du müsstest schon 
einen einigermaßen intelligenten Empfänger haben, der das angeschlossene 
Gerät sozusagen emuliert, also einigermaßen versteht was da abgeht in 
der Kommunikation (welche Endpoints gibt es, welche Deskriptoren haben 
die, etc.). Dann könnte der Empfänger die eigenlichen Daten die über die 
Endpoints gesendet werden an den Host weiterleiten, und andersrum. Bei 
diesem Konzept hättest du quasi Device <-> Host-Controller 
<------[Bluetooth]------> Device-Emulator <-> Host-Controller.

: Bearbeitet durch User
von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Wenn Du Dich mit den verwendeten Protokollen gut auskennst, besteht 
tatsächlich eine Chance -- sowohl USB als auch BT kennen eine 
Geräteklasse namens HID. Also müsste der BT-Sender ein USB-Host sein, 
der USB-HID-Geräte ansprechen kann, die interessanten HID-Daten 
extrahieren und in passende BT-HID-Informationen übersetzen, die 
wiederum zum BT-Gegenstück gesendet werden.

Zu klären ist allerdings, ob ein BT-Gerät auch mehrere HID-Geräte 
gleichzeitig nachbilden kann (das ist nötig, wenn gleichzeitig Maus und 
Tastatur betrieben werden sollen). Geht das nicht, ist für jedes 
einzelne USB-Gerät ein entsprechender BT-"Sende-Adapter" erforderlich.

Bei Mäusen vermag ich den Sinn des ganzen nicht so recht 
nachzuvollziehen; BT-Mäuse (die native BT-Geräte sind) kann man ab ca. 
12 EUR bekommen, sie sind also nur unwesentlich teurer als Funkmäuse mit 
proprietärem Protokoll und Prömpel für USB.


Sobald aber etwas anderes als simple Standardgeräte wie Mäuse und 
Tastaturen ins Spiel kommt --wie z.B. ein Graphiktablett--, dürfte die 
Angelegenheit deutlich komplizierter aussehen. Gibt es eine 
BT-Geräteklasse für Graphiktabletts? Gibt es überhaupt von irgendeinem 
Hersteller BT-Graphiktabletts?

Wenn nein, bedeutet das, die erforderliche Treiberunterstützung auf 
PC-Seite nachzubilden.

Denn was nicht möglich ist, ist ein transparentes "Tunneln" der 
USB-Daten durch BT, um eine Art "virtuelle USB-Schnittstelle" zu 
erhalten; BT ist dafür schlicht und einfach zu langsam und hat zu große 
Verzögerungszeiten.

von TheBug (Gast)


Lesenswert?

Ganz kurz: Das ist so saumäßig kompliziert, dass es nicht ansatzweise 
lohnt

von Little B. (lil-b)


Lesenswert?

Stichwort "Wireless USB"

Drahtloses USB gibts, aber nicht über Bluetooth.

von TheBug (Gast)


Lesenswert?

Wireless USB ist praktisch tot. Dazu mussten aber auch die Geräte direkt 
wireless sein, oder es war ein entsprechender Hub notwendig.

von Evgin T. (spongebob2000)


Lesenswert?

Grüßen,

ist schon bissl her aber ich suche aktuell das gleiche und wollte mal 
fragen ob bei dir was rausgekommen ist?

von Johannes M. (johannesm)


Lesenswert?

Man könnte z.B. einen MAX3421E als USB Host IC nehmen und diesen mit 
einem ESP32 verbinden.
Der ESP32 kann dann ein Bluetooth Keyboard nachbilden, z.B. 
https://gist.github.com/manuelbl/66f059effc8a7be148adb1f104666467

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.