Alex: Hardware-Hack

Beitrag lesen

Ich kann das Gerät über USB mit meinem Rechner verbinden und kriege in besagtem Modus unter anderem diese Informationen von lsusb:

Configuration Descriptor:
[...]
    MaxPower              100mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           1
      bInterfaceClass         2 Communications
      bInterfaceSubClass      2 Abstract (modem)
      bInterfaceProtocol      1 AT-commands (v.25ter)
[...]


>   
> Gratuliere, Du hast Dein Gamepad zu einem Modem umfunktioniert. ;-)  
  
Hehe, genau. Nur momentan ein ziemlich nutzloser, weil er nicht mit mir reden will. Oder nicht zuhört. Ich weiß noch nicht so genau.  
  
  

> > Offenbar gibt es 2 Interfaces, nämlich ACM (Abstract Control Model) und CDC Data. Wenn ich dmesg befrage, was sich mit dem Umschalten in diesen seltsamen Modus getan hat, kriege ich das hier als Antwort:  
> >   
> > [ 8298.229790] usb 6-2: USB disconnect, address 23  
> > [ 8298.860035] usb 6-2: new full speed USB device using ohci\_hcd and address 24  
> > [ 8299.033656] usb 6-2: configuration #1 chosen from 1 choice  
> > [ 8299.034803] cdc\_acm 6-2:1.0: This device cannot do calls on its own. It is not a modem.  
>   
> ^-- Die Meldung würde ich mal im Kernel-Source suchen. Mich würde echt interessieren, wie Linux auf diese Idee kommt.  
  
Die letzte Zeile meinst Du? Findest Du in [cdc-acm.c](https://github.com/torvalds/linux/blob/master/drivers/usb/class/cdc-acm.c), wenn Dir das was sagt.  
  
Ich habe das so interpretiert, daß es eben nicht als \*echter\* Modem gehandelt wird, weil das Gerät ja (wegen der grundlegenden Funktionsweise von USB) selber keine Kommunikation starten kann, sondern immer nur auf Polling vom Host reagiert. Das sollte aber prinzipiell kein Grund sein, nicht zu funktionieren, falls Du auf sowas hinaus wolltest.  
  
  

> Ich hab so den Verdacht, dass das ein Interface zu einem Firmware-Updater ist. Oder vielleicht auch nur ein gut versteckters Debugger-Interface, was nur dem Entwickler der Software auf dem Microcontroller hilft.  
  
Das ist auch meine Vermutung. Oder eher: meine Hoffnung. ;-) Umso schöner wäre es, tatsächlich mit diesem "Modem" kommunizieren zu können.  
  
Hast Du irgendwelche Erfahrungen mit USB CDC/ACM?  
  
Ich bin ziemlich erschlagen von den Informationen, die ich zu diesem Schlagwort im Netz finde. Das allermeiste scheint davon auszugehen, daß dem Leser schon völlig klar ist, wie alles im Detail funktioniert und er nur gerne irgendwelche speziellen Probleme in Treibern o. ä. lösen möchte. Ansonsten bin ich immer noch dabei, den entsprechenden, hundertzwanzigseitigen Teil des USB-Standards durchzuackern, in der Hoffnung, daraus zumindest mal die grundlegende Funktionsweise rekonstruieren zu können.  
  
Was mich z. B. irritiert, ist der Umstand, daß das Control Interface vom Gerät zum Host geht (ein USB Interrupt IN-Endpoint) und nicht in die andere Richtung ...  
  
  
Beste Grüße  
  
Alex