Den internen IC einer Computermaus neu programmieren?

Ich habe eine Maus mit einem internen IC: SPCP168A , nachdem ich darüber gelesen hatte, entdeckte ich, dass sie speziell für die Mausfunktionalität entwickelt und programmiert wurde. Ich interessiere mich dafür, das Gerät neu zu programmieren, um seine "Kamera" (160 Bilder / s) verwenden zu können. Meine Fragen sind: Kann ich es umprogrammieren, oder ist es ein OTP? Hat jemand etwas ähnliches gemacht?

Ich habe Artikel gesehen, in denen ein hobbybasierter Ansatz zum Hacken solcher Geräte beschrieben wird, aber sie haben nicht mit dem SoC herumgespielt ...
Die Maus sendet uart- oder ps/2-Daten mit Informationen über ihre relative Bewegung, es ist einfach, dieses Signal an anderer Stelle zu verwenden. Was ich nicht tun werde, ist, den Frame dazu zu bringen, ihn mit einem anderen Algorithmus zu verarbeiten. (Es gibt einen anderen Sensor / IC, der das tut, dh mehrere Bilder pro Sekunde aufnimmt, aber ich hatte gehofft, diesen wiederzuverwenden, und es scheint auch eine interessante Herausforderung zu sein (wenn es natürlich möglich ist))
Vielleicht interessant: hackaday.com/2017/07/29/…

Antworten (4)

Die Spezifikationen für diesen speziellen Chip (SPCP168A) zeigen keinen expliziten seriellen/SPI-Port. Außerdem gibt es in der Blogosphäre keinen Hinweis darauf, dass dieser spezielle Chip irgendwelche Firmware-Update-Optionen vor Ort hat. Es ist also sehr wahrscheinlich, dass es von einem Masken-ROM läuft.

Es gibt jedoch andere optische Mäuse auf dem Markt, die auf der original patentierten Avago-Technologie basieren. Der Hauptchip ADNS-2051 hat eine Schnittstelle zu einer MCU, sowohl einige serielle als auch "Quadraturausgänge". Es gibt einige Hack-Beispiele, die diesen Chip als 16x16-Videomatrix mit Arduino verwenden.

Ich bin mir nicht einmal sicher, ob die MCU in diesem IC überhaupt programmierbaren Speicher hat – vielleicht ein paar Bytes, um ein benutzerdefiniertes USB-Gerät und eine Anbieter-ID festzulegen, aber das war es wahrscheinlich. (Rest wäre ROM)

Ich bin mir ziemlich sicher, dass es speziell so konzipiert ist, dass die relative Bewegung direkt aus der Kamerabeobachtung mit Hardware berechnet wird. Das ist sehr einfach in Hardware zu entwerfen (und in MCU-Software schwieriger ausreichend schnell zu machen).

Ich fürchte, das ist nicht der IC, den Sie suchen.

Aber keine Sorge, es gibt etwas teurere Mäuse, die mit übergroßen MCUs ausgestattet sind, um den Sensor an USB anzuschließen und komplexere Funktionen zu implementieren, und wenn ich nach Neuprogrammierbarkeit suchen würde, dann dort. Außerdem gab es bereits Leute, die gezeigt haben, dass sie bösartige Software auf einer Gamer-Maus ausführen können.

Um die Herstellungskosten so gering wie möglich zu halten, kann der speziell entworfene Chip ein 100%iges Zustandsmaschinendesign in Hardware sein. Selbst wenn es eine interne MCU mit Firmware gab, ist es eine gute Möglichkeit, dass sie im maskierten ROM gespeichert ist.

Lesen Sie das verlinkte Datenblatt. Es heißt ausdrücklich, dass es eine MCU gibt. (Ja, ich weiß, dass das Datenblatt nicht verlinkt war, bis Pipe bearbeitet wurde)
@ThePhoton Ich würde immer noch davon ausgehen, dass Michael Recht hat, dass sich die Firmware fast ausschließlich im ROM befindet - wirklich keine Verwendung für Flash in einem massenproduzierten, kostengünstigsten SoC für einen Zweck.

Ich habe das schon einmal für ein Schulrobotikprojekt gemacht. Ziel war es, die Positionsinformationen der Maus als Positionssensor für einen Roboter zu verwenden.

Das habe ich gefunden:

1) Alle Mäuse, die ich verwendet habe, hatten ASICS (und ich wette, dass alle von ihnen tun)

2) Der ASIC, der Informationen hatte, war eine chinesische Maus und hatte ein Datenblatt (anstatt zu versuchen, ein Datenblatt für eine bestimmte Maus zu finden, durchsuchte ich verschiedene Mäuse nach einer, für die ich ein Datenblatt finden konnte)

3) Die Maus, für die ich ein Datenblatt hatte, hatte zwei Probleme

  • Die von der Maus zurückkommenden Daten waren keine absolute Position, sondern a Δ x Δ j Position, es war laut und nicht nützlich für die absolute Position, aber nützlich für Geschwindigkeit oder Beschleunigung.

  • Nach einigem Reverse Engineering konnte die Maus abgefragt werden, um die Werte der Kamera zu finden. Dies konnte jedoch nur in ~1-Sekunden-Intervallen durchgeführt werden. Nicht sehr nützlich.

"Nach einigem Reverse Engineering konnte die Maus abgefragt werden, um die Werte der Kamera zu finden. Dies konnte jedoch nur in Intervallen von ~1 Sekunde durchgeführt werden. Nicht sehr nützlich." Können Sie erzählen, wie Sie von der relativen Bewegung zu den Kamerawerten gekommen sind?
Die Maus hatte ein Register, um die Pixel der Kamera abzufragen. Aber das Datenblatt hatte eine Beschreibung dieser Register, wo Ihre es nicht tut. Es sieht so aus, als hätte Ihr Maus-Controller die im bereitgestellten Datenblatt aufgeführten Register nicht. Ich habe mir die Register im Datenblatt angesehen und dann die Treiber angesehen und mit einem in C geschriebenen Programm auf die verschiedenen Register zugegriffen.
Sie hatten also im Grunde eine Möglichkeit, eine Schnittstelle mit der Schaltung (SPI, I²C) herzustellen?
Ich kann mich nicht erinnern, ob wir die vorhandene Hardware verwendet haben oder ob wir einen Konverter verwenden mussten. Ich glaube, ich habe eine Maus gefunden, in die bereits ein FCI-zu-SPI-Konverter eingebaut war.