Alex: Hardware-Hack

Beitrag lesen

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.