Moin Moin!
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). Interface 1 entspricht in etwa den RxD- und TxD-Leitungen einer RS232-Schnittstelle, entsprechend wird cat /dev/ttyACM0 dessen Endpoint 1 (IN) ansprechen. Das Interface 0 entspricht den Handshake-Leitungen, das erreichst Du nur per ioctl (z.B. mit setserial).
Hast Du schon usb\_modeswitch probiert?
Wenn im Gerät ein AVR-Controller (ATmega, ATtiny) steckt, mach Dich mal auf die Suche nach USB-Bootloadern für AVR-Controller. Die verhalten sich gerne wie ein AVR-Programmer, bis man sie mit einer "magischen" Sequenz ausschaltet. Manche Bootloader werden auch nur dann als USB-Gerät aktiv, wenn sie von der Hardware per Jumper o.ä. dazu gebracht werden. (Bei einem Gamepad wäre ein sinnvoller Weg, beim Anschließen eine nicht versehentlich drückbare Kombination von Buttons zu drücken - oder auch nur einen der vielen Buttons.) Und nicht zuletzt dient der Bootloader auch als Panik-Funktion für das Hauptprogramm. Wenn das Hauptprogramm gar nicht mehr starten will, schlägt irgendwann ein Hardware-Watchdog zu und übergibt die Kontrolle wieder an den Bootloader, so dass man ein beschädigtes Hauptprogramm ohne Hardware-Programmer neu flashen kann.
Für Microchips PIC-Controller gilt sinngemäß das selbe.
Alexander
--
Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so".