USB: Unterschied zwischen den Versionen

Aus Ethersex_Wiki
Wechseln zu: Navigation, Suche
(USB bzw. Software USB)
(USB Keyboard (HID))
 
(14 dazwischenliegende Versionen von 6 Benutzern werden nicht angezeigt)
Zeile 3: Zeile 3:
 
Ja richtig, ein Software USB Stack ist implementiert.  
 
Ja richtig, ein Software USB Stack ist implementiert.  
  
Wen man in zb. ein avr-net-io (vfs abgeschaltet fuer platz bedarf)
+
Wen man in z.B. ein AVR-Net-IO
 
  [*] USB (Softwarestack) Support  --->  
 
  [*] USB (Softwarestack) Support  --->  
 
  [*] USBnet  --->             
 
  [*] USBnet  --->             
aktiviert hat dan meckert make das die pins nicht definiert sind.
+
benutzt, dann meckert "make" das die Pins für USB nicht definiert sind.
 +
Das kann man einfach beheben mit "./scripts/add-hardware" siehe
  
 
  ./scripts/add-hardware neuerprofilname
 
  ./scripts/add-hardware neuerprofilname
ausfuehren.
 
  
Die pins sind schon definiert sehe weiter [[Ethersex_Hardware_hinzufügen]]
+
Sind die Pins definiert siehe [[Ethersex_Hardware_hinzufügen]]
  
Dan lauft es durch
+
Dann lauft "make" durch.
  
 
=== Anschlußbelegung ===
 
=== Anschlußbelegung ===
Zeile 19: Zeile 19:
  
 
=== usbnet ===
 
=== usbnet ===
 +
 
Wie wird usbnet gestartet?
 
Wie wird usbnet gestartet?
 +
 +
Hierfür wird die libusb-dev benötigt
  
 
Im ethersex Repository Unterverzeichnis contrib/usb_net liegen die benötigten Dateien um das nötige Netzwerkdevice zu kompilieren und zu starten.
 
Im ethersex Repository Unterverzeichnis contrib/usb_net liegen die benötigten Dateien um das nötige Netzwerkdevice zu kompilieren und zu starten.
 
 
  # cd contrib/usb_net
 
  # cd contrib/usb_net
 
  # make
 
  # make
Zeile 30: Zeile 32:
 
Schliesst man dann ein ethersex USB Device an, erscheint folgende Zeile in der Kommandozeile:
 
Schliesst man dann ein ethersex USB Device an, erscheint folgende Zeile in der Kommandozeile:
 
  gefunden! devnr: 1 16C0 - 05DC
 
  gefunden! devnr: 1 16C0 - 05DC
 +
 +
Das Programm usb_net nun im hintergrund weiter laufen lassen.
 +
 +
Danach noch
 +
route add -host 192.168.8.1 usb0
 +
 +
und das Gerät sollte pingbar sein.
  
 
Das dafür benutzte interface heißt "usb0" und stellt eine point-to-point Verbindung mit der Hardware her.
 
Das dafür benutzte interface heißt "usb0" und stellt eine point-to-point Verbindung mit der Hardware her.
Zeile 42: Zeile 51:
 
           RX bytes:36 (36.0 B)  TX bytes:0 (0.0 B)
 
           RX bytes:36 (36.0 B)  TX bytes:0 (0.0 B)
  
 +
usb_net optionen :
 +
 +
Usage: ./usb_net [OPTIONEN]
 +
-h --help      Print this help and exit
 +
-a --address  adds of the interface in the form 192.168.8.1/24
 +
-d --device    usb id (e.g. 16c005dc)
 +
-m --mtu      set mtu
 +
-u --up        call this command, when the interface is up
 +
 +
=== USB HID (Human Interface Device) ===
 +
 +
Wird ethersex mit USB HID kompiliert und entsprechende Hardware ist vorhanden und angeschlossen, meldet sich ethersex als HID (Human Interface Device) beim Host-Rechner an und kann automatisch von den Treibern des Betriebsystems angesprochen werden.
 +
 +
==== USB Keyboard ====
 +
 +
Aus der Sicht vom Host-Rechner, wird eine weitere Tastatur erkannt, die nun Daten an den Host senden kann.
 +
 +
Momentan gibt es folgende Features:
 +
* '''sequence''': Beispielanwendung die alle 2 Sekunden ein Zeichen des Alphabets ausgibt. Dann wird das nächste Zeichen ausgewählt und nach 2 Sekunden gesendet. Bei 'z' angekommen wird geht es wieder mit 'a' los.
 +
* '''static''': Ein gegebener String wird regelmäßig ausgesendet.
 +
* '''ECMD''': per [[ECMD]] eingegebene Strings werden ausgegeben
 +
 +
Getestet mit:
 +
* Linux debian 5.0
 +
* Windows XP
 +
* OS X
 +
 +
Mögliche Projekte wären:
 +
* PS/2-Keybaord nach USB Umsetzer
 +
* Eigene Tastatur Devices (z.B. eine 6-Finger Tastatur für Innigo Montoja's Erzfeind)
 +
* 1-Finger Tastatur, die nur STR-ALT-ENTF sendet
 +
* Gamer Tastatur mit besser erreichbaren Tasten
 +
* Netzwerk- oder Funk-Tastatur/Eingabegerät mit Verschlüsselter Übertragung der Daten
 +
 +
==== USB Maus ====
 +
 +
Ein neues Mouse Device, mit dem man via [[ECMD]] die Mauseingaben simulieren kann.
 +
 +
Momentan veränderbare Werte:
 +
* Buttons für Mouseklicks
 +
* Delta X für Änderungen an der Maus X Position
 +
* Delta Y für Änderungen an der Maus Y Position
 +
 +
=== ECMD via USB ===
 +
 +
Über USB können die ECMD Befehle direkt gesendet werden. Die entsprechende Anwendung '''ecmd_usb''' kann man sich folgendermaßen selbst erstellen:
 +
 +
cd contrib/ecmd_usb/
 +
make
 +
 +
Typischerweise muss man das Programm dann mit root-rechten starten:
 +
sudo ./ecmd_usb
 +
 +
Ausgabe sollte dann sein:
 +
gefunden! devnr: 1 16C0 - 05DC
 +
 +
...nun sollte man ecmd's absetzten können
 +
 +
=== Geschwindigkeit ===
 +
Das Verarbeiten von USB rein in Software fordert seinen Geschwindigkeits-Tribut. Eine ausführlicher Vergleich verschiedener Anbindungsvarianten ist unter [[ECMD Geschwindigkeit]] zu finden.
  
 
=== Beispiel ===
 
=== Beispiel ===
Zeile 49: Zeile 118:
 
[[Category:Ethersex]]
 
[[Category:Ethersex]]
 
[[Category:Network]]
 
[[Category:Network]]
 +
[[Category:USB]]

Aktuelle Version vom 23. April 2010, 10:25 Uhr

USB bzw. Software USB

Ja richtig, ein Software USB Stack ist implementiert.

Wen man in z.B. ein AVR-Net-IO

[*] USB (Softwarestack) Support  ---> 
[*] USBnet  --->             

benutzt, dann meckert "make" das die Pins für USB nicht definiert sind. Das kann man einfach beheben mit "./scripts/add-hardware" siehe

./scripts/add-hardware neuerprofilname

Sind die Pins definiert siehe Ethersex_Hardware_hinzufügen

Dann lauft "make" durch.

Anschlußbelegung

Usb-schematic.png

usbnet

Wie wird usbnet gestartet?

Hierfür wird die libusb-dev benötigt

Im ethersex Repository Unterverzeichnis contrib/usb_net liegen die benötigten Dateien um das nötige Netzwerkdevice zu kompilieren und zu starten.

# cd contrib/usb_net
# make
# su -c ./usb_net
Kein passendes USB Device gefunden

Schliesst man dann ein ethersex USB Device an, erscheint folgende Zeile in der Kommandozeile:

gefunden! devnr: 1 16C0 - 05DC

Das Programm usb_net nun im hintergrund weiter laufen lassen.

Danach noch

route add -host 192.168.8.1 usb0

und das Gerät sollte pingbar sein.

Das dafür benutzte interface heißt "usb0" und stellt eine point-to-point Verbindung mit der Hardware her.

Beispiel vom usbnet interface:

usb0      Link encap:UNSPEC  Hardware Adresse 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  
          inet Adresse:192.168.8.1  P-z-P:192.168.8.1  Maske:255.255.255.0
          UP PUNKTZUPUNKT RUNNING NOARP MULTICAST  MTU:192  Metrik:1
          RX packets:2 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          Kollisionen:0 Sendewarteschlangenlänge:500 
          RX bytes:36 (36.0 B)  TX bytes:0 (0.0 B)

usb_net optionen :

Usage: ./usb_net [OPTIONEN]

-h --help      Print this help and exit
-a --address   adds of the interface in the form 192.168.8.1/24
-d --device    usb id (e.g. 16c005dc) 
-m --mtu       set mtu
-u --up        call this command, when the interface is up

USB HID (Human Interface Device)

Wird ethersex mit USB HID kompiliert und entsprechende Hardware ist vorhanden und angeschlossen, meldet sich ethersex als HID (Human Interface Device) beim Host-Rechner an und kann automatisch von den Treibern des Betriebsystems angesprochen werden.

USB Keyboard

Aus der Sicht vom Host-Rechner, wird eine weitere Tastatur erkannt, die nun Daten an den Host senden kann.

Momentan gibt es folgende Features:

  • sequence: Beispielanwendung die alle 2 Sekunden ein Zeichen des Alphabets ausgibt. Dann wird das nächste Zeichen ausgewählt und nach 2 Sekunden gesendet. Bei 'z' angekommen wird geht es wieder mit 'a' los.
  • static: Ein gegebener String wird regelmäßig ausgesendet.
  • ECMD: per ECMD eingegebene Strings werden ausgegeben

Getestet mit:

  • Linux debian 5.0
  • Windows XP
  • OS X

Mögliche Projekte wären:

  • PS/2-Keybaord nach USB Umsetzer
  • Eigene Tastatur Devices (z.B. eine 6-Finger Tastatur für Innigo Montoja's Erzfeind)
  • 1-Finger Tastatur, die nur STR-ALT-ENTF sendet
  • Gamer Tastatur mit besser erreichbaren Tasten
  • Netzwerk- oder Funk-Tastatur/Eingabegerät mit Verschlüsselter Übertragung der Daten

USB Maus

Ein neues Mouse Device, mit dem man via ECMD die Mauseingaben simulieren kann.

Momentan veränderbare Werte:

  • Buttons für Mouseklicks
  • Delta X für Änderungen an der Maus X Position
  • Delta Y für Änderungen an der Maus Y Position

ECMD via USB

Über USB können die ECMD Befehle direkt gesendet werden. Die entsprechende Anwendung ecmd_usb kann man sich folgendermaßen selbst erstellen:

cd contrib/ecmd_usb/
make

Typischerweise muss man das Programm dann mit root-rechten starten:

sudo ./ecmd_usb

Ausgabe sollte dann sein:

gefunden! devnr: 1 16C0 - 05DC

...nun sollte man ecmd's absetzten können

Geschwindigkeit

Das Verarbeiten von USB rein in Software fordert seinen Geschwindigkeits-Tribut. Eine ausführlicher Vergleich verschiedener Anbindungsvarianten ist unter ECMD Geschwindigkeit zu finden.

Beispiel

Anbei mal ein kleines Beispiel des Aufbaus, hier mal zusammen mit einem ZBus-IC Usb2zbus-i2c.jpg