Ich streiche mal ein paar Zeilen:
Configuration Descriptor:
Interface Descriptor:
bInterfaceNumber 0
bInterfaceClass 2 Communications
bInterfaceSubClass 2 Abstract (modem)
bInterfaceProtocol 1 AT-commands (v.25ter)
Endpoint Descriptor:
bEndpointAddress 0x82 EP 2 IN
wMaxPacketSize 0x0008 1x 8 bytes
Interface Descriptor:
bInterfaceNumber 1
bInterfaceClass 10 CDC Data
Endpoint Descriptor:
bEndpointAddress 0x03 EP 3 OUT
wMaxPacketSize 0x0040 1x 64 bytes
Endpoint Descriptor:
bEndpointAddress 0x81 EP 1 IN
wMaxPacketSize 0x0040 1x 64 bytes
> > Mit `cat /dev/ttyACM0` bekomme ich dann tatsächlich kontinuierlich kleine Datenpakete hingeworfen. Immer nur irgendwelcher Binärmüll, etwa alle 250 ms, immer zwei Bytes auf einmal (was ich verwirrend finde, weil ja die maximale Paketgröße laut Interface-Deskriptor 8 Bit beträgt):
>
> Wie kommst Du auf 8 Bit? lsusb sagt, dass der Endpoint 2 (IN) vom Interface 0 maximal 8 Bytes (64 Bits) verträgt, die beiden Endpoints vom Interface 1 jeweils maximal 64 Bytes (512 Bits).
Argh, richtig. Bytes, nichts Bits. Ich war nach der ganzen Lektüre an dem Abend wohl schon etwas weich in der Birne. ;-)
> Interface 1 entspricht in etwa den RxD- und TxD-Leitungen einer RS232-Schnittstelle, entsprechend wird cat /dev/ttyACM0 dessen Endpoint 1 (IN) ansprechen.
Soweit ich verstanden habe, sollte der OUT-Endpoint bei Geräten, die USB CDC/ACM implementieren, aber genauso über `echo <irgendein AT-Kommando> > /dev/ttyACM0` mit Daten bestückt werden können. Nur passiert in diesem Fall bei mir gar nichts.
> Hast Du schon usb\_modeswitch probiert?
Nein, das kannte ich gar nicht. Sieht zwar auf den ersten Blick nicht so aus, als hätte das mit meinem Problem zu tun (ich will ja gar nicht mit einem anderen Interface des Geräts kommunizieren, sondern nur über den OUT-Endpoint des momentanen), aber ich probiere das vorsichtshalber trotzdem mal aus.