Hallo, beim Suchen nach zusätzlichen Sensoren für meine Wii und das "Spiel" EA Active Sports 2 bin ich bei dem Buchhändler der Wahl auf das "EA SPORTS Active 2 - Accessory Pack " gestoßen. Da das ganze nur 6,97 Euro kostet, habe ich gleich eins zum Ausschlachten mitbestellt. In den Arm- und Beinsensoren sind vermutlich je ein Beschleunigungssensor (vom footprint vermute ich mal einen ADXL346 - 3*3mm, je 5 und 3 pins) und ein Bluetooth-Transceiver sowie je ein 2 kByte EEPROM verbaut. Dazu gibt es noch einen USB-Stick mit BT-Transceiver und 2kByte EEPROM, der an die Wii angesteckt wird. Die verbondeten µCs/ ICs geben wahrscheinlich nicht allzuviel her. Beim USB Stick könnte man den Controller evtl. trotzdem nutzen. In den nächsten Tagen werde ich mir mal die Signale anschauen. Das ganze könnte ja eine sehr günstige Alternative für die Bauteilbeschaffung sein ;) Wer mitsuchen will, kann ja mal auf den Fotos schauen, ob ihm etwas bekannt vorkommt. Sportliche Grüße, Markus
Bist du dir sicher, dass es sich dabei um Bluetooth-Module handelt? Oder sind es "nur" normale Funkmodule?
Das ist bestimmt kein Bluetooth. Sieht aus wie die Platinen in den Sendern von Baumarkt-Funksteckdosen. Jörg
Wenn du ganz neugiereig bist steck halt ma den Stick (zu sicherheit über nen hub) an nen PC und kuk was sich da zeigt, wenns USB is dann erkennt man vlt. da protokoll oder so (und wenn nich stirbt im worst case der hub (2€))....
Ich hatte irgendwo gelesen es sei Bluetooth. Aber das kann man ja nachmessen (Frequenz). Funk auf 2.4GHz wäre ja eher ungewöhnlich. Markus
Kannst du einen Link posten, wo man diese bekommen kann ?
Hier: http://www.amazon.de/EA-SPORTS-Active-Accessory-Pack/dp/B0048KZ68O die für die XBOX sind nochmal 1,50 billiger.
Korrektur: Bei der Xbox Version sind wohl die Beschleunigungssensoren nicht dabei.
Ich habe den USB-Stick mal an den PC angeschlossen. Er meldet sich als USB-HID device mit der Vendor ID (VID) 21A4 und der Product ID (PID) AC40 an. Auf den übliche verdächtigen Frequenzen (433/ 868 MHz-Band) konnte ich nichts feststellen. Evtl. sind die Bursts aber so kurz, dass ich sie mit meinen beschränkten Mitteln nicht erfassen kann. Meine Annahme mit dem Bluetooth kommt von der Wii Remote, die per Bluetooth mit Hilfe eines Broadcom-Chips mit der Wii Konsole kommuniziert. Evtl. hat man aber tatsächlich für die Active Sports Sensoren billige Funkmodule gewählt. Das wäre natürlich schade. Markus
Ich habe mich zunächst einmal an die Spannungsversorgung gemacht. In die Sensoren kommen zwei AAA-Zellen. Da die meisten µCs und Peripherie mit min. 3.3 Volt betrieben werden, war also ein Aufwärtsregler (boost converter) zu erwarten. Und genau das macht auch der "331G1" - er wandelt die Spannung der beiden Zellen zu 3.3 Volt herauf. Die Polyswitch schützt vor Verpolung. Markus edit: Bei der Spule muss es natürlich 47 µH heißen.
Den Antennen nach sind das 2,4 Ghz funkmodule. Protokol FSK? Könnten aber auch RFM70 ähnliche Module sein.
USB Vendor ID 21a4 scheint Electronic Arts zu sein: https://usb-ids.gowdy.us/read/UD/21a4 Product ID AC40 habe ich nicht gefunden, EA hat nur AC27 in der Liste als 'SPORTS Active 2 Wireless Controller for PS3'
Hi Markus, ja, das ist noch mehr. Im Arm-Sensor ist ein ARM verbaut (STM32F100C4). Ist zwar nur ein kleiner mit 16k Flash und 37 I/O, aber immerhin. Grüße.
In einem Lowest-Effort-Ansatz wollte ich mal probieren, ob sich die Sensoren ohne Modifikation als Eingabegeräte am PC nutzen lassen. Der Dongle wird als HID-Device erkannt und gibt auch ohne Polling zyklisch ein 62 Byte langes Datagramm aus (unten in hex, vermutlich die Usage Page). Leider warten die Sensoren nach Einschalten auf eine Zuweisung der Playernummer aus der EA-Sports-Applikation. Ohne Eingabe verharren sie mit blinkenden Playernummer-LEDs in inaktivem Zustand. Im lsusb-Dump im Anhang sieht man zur Rückmeldung vom PC an den Dongle einen HID-Output definiert. Meint ihr, es lässt sich aus der vom Dongle propagierten HID Usage Information oder aber durch Reverse-Engineering mit der EA-Sports-Anwendung herausfinden, wie die Sensoren vom PC aktiviert und als analoge HID-Eingabegeräte nutzbar gemacht werden können? 1000 8010 8080 8080 8080 8080 8080 8080 8080 8080 8080 8080 8080 8080 8080 0000 1010 8080 8080 8080 8080 8080 8080 8080 8080 8080 8080 8080 8080 8080 0080 USB HID Specs: http://www.usb.org/developers/hidpage/ Linux HID API: http://libhid.alioth.debian.org/doc/
Mit welchem Programm hast Du denn den Dongle ausgewertet? Markus
Ausgewertet habe ich noch nichts, nur dargestellt, wie sich der Dongle dem Linux Kernel gegenüber präsentiert. sudo lsusb -d21a4:ac40 -vvv sudo cat /dev/hidraw2 | hexdump -e '31/2 "%04x " "\n"'
Markus U. schrieb: > Die verbondeten µCs/ ICs geben wahrscheinlich nicht allzuviel her. Beim > USB Stick könnte man den Controller evtl. trotzdem nutzen. Beim USB-Stick scheint es den gebondeten Chip ja auch als 28-Pin IC zu geben. Kannst Du mal durchpiepsen, an welche Pins der Quarz, das EEPROM sowie VCC und GND angeschlossen sind? Vielleicht kann man so den Controllertyp rausfinden.
Von der lsusb Ausgabe sieht es meinem USB Flightstick schon recht ähnlich.Und diese Felder sehen verdammt danach aus, als würden dort 3 analoge Kanäle übertragen:
1 | Item(Main ): Input, data= [ 0x02 ] 2 |
2 | Data Variable Absolute No_Wrap Linear |
3 | Preferred_State No_Null_Position Non_Volatile Bitfield |
4 | Item(Global): Report Count, data= [ 0x02 ] 2 |
5 | Item(Local ): Usage, data= [ 0x21 0x40 ] 16417 |
6 | (null) |
7 | Item(Main ): Feature, data= [ 0x02 ] 2 |
8 | Data Variable Absolute No_Wrap Linear |
9 | Preferred_State No_Null_Position Non_Volatile Bitfield |
10 | Item(Local ): Usage, data= [ 0x21 0x41 ] 16673 |
11 | (null) |
12 | Item(Main ): Output, data= [ 0x02 ] 2 |
13 | Data Variable Absolute No_Wrap Linear |
14 | Preferred_State No_Null_Position Non_Volatile Bitfield |
15 | Item(Main ): End Collection, data=none |
Ich hab dann in '/proc/bus/input/devices' nachgeschaut und gesehen, das sich der 'js0' Handler für meinen Joystick verantwortlich fühlt:
1 | I: Bus=0003 Vendor=07b5 Product=0317 Version=0110 |
2 | N: Name="Mega World USB Game Controllers" |
3 | P: Phys=usb-0000:00:08.0-1/input0 |
4 | S: Sysfs=/devices/pci0000:00/0000:00:08.0/usb2/2-1/2-1:1.0/input/input9 |
5 | U: Uniq= |
6 | H: Handlers=event8 js0 |
7 | B: EV=1b |
8 | B: KEY=ff 0 0 0 0 0 0 0 0 0 |
9 | B: ABS=30027 |
10 | B: MSC=10 |
Ein 'hd -c /dev/input/js0' erzeugt nun bei jeder Stick Betätigung einen Datenstring auf dem Terminal.
Ich habe mir als nächstes das RF-Modul vorgenommen und versucht das Pinout zu bestimmen. Vielleicht kommt ja jemandem das Muster bekannt vor. Die Verbindungen zum µC sind alle mit einem Kondensator gepuffert, ebenso die Verbindungen zu GND. Vcc ist über einen Tantal-SMD-Kondensator (J476) an GND und über eine Diode an Vout vom boost converter 331G1 (also Vcc RF-Modul = 3V3) angeschlossen. Die Beschriftung "Vcc Batt." auf dem Foto ist daher falsch. Sorry. Der Quarz des RF-Moduls ist mit "S16.000" beschriftet. @Matthias und @frickleur: Ich kenne mich mit USB leider zu wenig aus, um eure Ergebnisse zu deuten. @M.G.: Ich werde den USB-Stick in den nächsten Tagen mal durchmessen. @Michael L.: Komisch, dass die den µC auf der Top-Platine nicht verbondet haben. Evtl. sind die anderen Controller ja identisch? Ich bin gerade dabei das Pinout bzw. die Verbindungen zu den anderen Bauteilen vom µC durchzumessen. Ergebnisse demnächst. Liebe Grüße, Markus
Bei den Beschleunigungssensoren könnte es sich auch um LIS331HH handeln.
Warnung an jene, die den USB-Dongle näher untersuchen wollen: Beim Versuch in den HID-Output zu schreiben kann man sich die Firmware oder Konfiguration zerstören. Ich habe den HID Report Descriptor so interpretiert, dass ein Feld von 31 8bit-Inputs, zwei 8bit Features und zwei 8bit Outputs vorliegen. Daraufhin habe ich aus dem libhid-Beispielcode ein Programm geschrieben, das das Input-Feld auslesen sollte. Dabei habe ich festgestellt, dass nur 8 Bytes gelesen werden können, der Report Descriptor Path dabei ignoriert wird und nach dem ersten Lesezugriff mit hid_get_input_report() nur noch Datenmüll zurückgeliefert wird. In einem Gegentest habe ich das selbe Programm an einer Maus ausprobiert, dort funktioniert es einwandfrei, ich vermute also, dass nicht libhid das Problem ist. Um nun zu versuchen, den Sensoren eine Playernummer zuzuweisen und damit eventuell die Übertragung der Accelerometerwerte zu beginnen, habe ich versucht Bytepaare in den Output zu schreiben. Ich nahm an, dass es sich hier um zwei Konfigurationsbytes oder allenfalls ein einfaches Command-Value-Protokoll handelt. Nachdem mir zuerst (wohl durch Zufall) eine Zuweisung der Playernummer 2 gelungen ist, war dann aber nach einigen weiteren Schreibversuchen mit verschiedenen Werten plötzlich die USB-Seriennummer gelöscht, beim Lesen des Input-Feldes erscheinen nur noch Einsen und es ist keine Zuweisung einer Playernummer mehr möglich. USB- und HID-Support sind aber noch vorhanden. Ich nehme an, Teile der Firmware oder Konfiguration wurden gebügelt. Schade.
Markus U. schrieb: > Komisch, dass die den µC auf der Top-Platine nicht > verbondet haben. Evtl. sind die anderen Controller ja identisch? Glaube ich nicht, denn der ARM hat 48 Pins, die auf der Hauptplatine aber nur 44 Pins.
Ich habe jetzt den uC (28 Pins) auf dem USB-Dongle mal durchgepiepst. Vielleicht kommt das Pinout ja jemandem bekannt vor und erkennt einen Controller. Pin 3, 5, 6, 7 und 8 vom RF-Modul sind per Spannungsteiler (2 R zu je 2k) an die entsprechenden Ports am µC angeschlossen (level shifting?). Pin 4 und 6 vom RF-Modul sind über einen R 4k7 an der Basis von einem SMD-NPN Transistor (J3Y = MMS8050) an den µC-Pins angeschlossen. Pin 8 vom RF-Modul ist sowohl über einen Spannungsteiler als auch per SMD-Transistor wie Pin 4 und 6 angebunden. Der Quarz vom Controller taktet mit 6 MHz. Das EEPROM FT24C02A hat alle Adressleitungen auf GND. WP ist ebenfalls auf GND. SDA ist auf Pin 12, SCL auf Pin 13 vom µC. Als nächstes mache ich mich an das Pinout vom RF-Modul. Vielleicht hat ja schon jemand aufgrund der Anbindung an den µC (Spannungsteiler/ Transistor) Ideen, welche Art von Pins am RF-Modul angesteuert werden könnten. Das EEPROM und die USB-Buchse sind auf dem Bild bereits ausgelötet. Markus
Bei dem vorherigen Bild fehlten noch Pinbelegungen, daher jetzt noch einmal das richtige Pinout. 2, 3, 5, 6, 7, 8 RF per Spannungsteiler (2k/ 2k) vom µC 4, 8, 9 per 4k7 an NPN Basis in Richtung µC Ich hoffe, jetzt ist es richtig. Markus
Könntest du den USB-Stick nochmal anstecken (wahrscheinlich musst du die 4 Pins des USB-Steckers nochmal anlöten), aber ohne das EEPROM ? Mit welcher VID / PID meldet er sich ?
Ohne EEPROM passiert gar nichts (unter WIN XP). Mit EEPROM meldet er sich wie vorher an. Da werde ich wohl morgen mal das EEPROM auslesen müssen ;) Liebe Grüße, Markus
Wie jetzt "leer"? Markus
Heute das Pinout vom RF-Modul am USB-Dongle sowie die hoffentlich endgültige Fassung des Controller-Pinouts am USB-Dongle (Pin 7 und 8 waren vertauscht). Markus
Hat jemand eine Idee, wie man an die Daten vom RF-Modul kommt? Ich komme da im Augenblick nicht weiter... Markus
Dazu habe ich dir leider nicht helfen. Und bei Preisen um 25€ ist das Ausschlachten der Sensoren wohl nicht mehr sooo interessant. Grüße.
Das ist natürlich bedauerlich, wenn die jetzt mit 28 Euro verkauft werden... Schade. Markus
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.