Fernbedienung Reverse engineering & Nachbau

Für Netzteile, NF-/HF-Verstärker, Reparaturen und allgemeine Elektronikprojekte.

Moderatoren: MaxZ, SeriousD, ebastler

Antworten
Nachricht
Autor
Benutzeravatar

Thread-Ersteller
gamerpaddy
Beiträge: 2509
Registriert: Mo 13. Aug 2012, 09:03
Spezialgebiet: Spezialgebiet
Schule/Uni/Arbeit: Schule/Uni/Arbeit
Wohnort: Mannheim
Hat sich bedankt: 31 Mal
Danksagung erhalten: 256 Mal
Kontaktdaten:

Fernbedienung Reverse engineering & Nachbau

#1 Beitrag von gamerpaddy »

Da ich kürzlich was schönes in meine HIFI sammlung bekam, welches nach einer intensiven Reparatur bei der mir McGaiver half auch wieder lief, wollte ich mir nun dazu die passende Fernbedienung kaufen.
Es handelt sich um eine T+A F2000AC für ein P2000AC Vorverstärker.
Bild
Aber siehe da.. Unobtanium, einziger anbieter verlangt 200€ dafür!

Nach kurzer recherche stellte sich heraus dass in dieser ein SDA2208 IC verbaut ist, ziemlicher Altbacken von Siemens aber noch Kaufbar, wenn auch nicht günstig.
https://pdf1.alldatasheet.com/datasheet ... 208-3.html

Nachteil dabei.. es sind keine gängigen RC5 codes, mit Universalfernbedienung wird das also nichts. Über den IR Blaster an meinem Handy konnte ich auch mit keiner Konfiguration das Gerät ansprechen.

Also nagut, ich habe das Datenblatt und der Empfänger.
Dann mach ich mir eben ein Devboard und finde die tasten selbst raus.
Bild

Aber günstig wird das nicht, macht ja kein sinn wenn das projekt am ende so viel kostet wie die Fernbedienung selbst.
Also habe ich mir stattdessen ein Emulator in Arduino geschrieben, der die Pulse nachahmt und ich bequem per Serieller eingabe die Instruktion eintippen kann und sehe, was am Gerät passiert.

Der Code dazu ist folgender:

Code: Alles auswählen

#define LEDPIN 13
#define CLOCK 530

void sendbit(boolean _state){
  boolean _t=true;
  if(!_state){
    digitalWrite(LEDPIN,0);
    delayMicroseconds(240000/CLOCK);
  }
  for(int _i=0;_i<32;_i++){
    digitalWrite(LEDPIN,_t);
    delayMicroseconds(7000/CLOCK);
    _t=!_t;
  }
  if(_state){
    digitalWrite(LEDPIN,0);
    delayMicroseconds(240000/CLOCK);
  }
}


void sendcmd(int _b, boolean _last, byte _typ){
  if(_typ==2){//stop command
    delay(55000/CLOCK);//time interval before end cmd
    //_b=0b000000000
  }
  sendbit(1);// send pause
  delayMicroseconds(1050000/CLOCK);
  sendbit(1);// start bit
  Serial.print("TX:");
  for(int _i=15;_i>=7;_i--){
    Serial.print(bitRead(_b,_i));
    sendbit(bitRead(_b,_i));
  }
  Serial.println();
  digitalWrite(LEDPIN,0);
  if(!_last && _typ==1){ // info cmd
    delay(40000/CLOCK);//time interval between info commands
  }
  if(_typ==0){//start cmd
    delay(10000/CLOCK);//time interval after start cmd
  }
}

void setup() {
  pinMode(LEDPIN,OUTPUT);
  Serial.begin(115200);
  Serial.println("c<number> to set command, enter number from 0-63 to send data");
}

byte instr = 50;// 0-63
byte cmd = 1; // 0-7
boolean iscmd = false;
byte i=0;
boolean validinfo=false;
String str;

     
void loop() {
  if(Serial.available()>0){
    byte data=Serial.read();
    if(data != 0xa){
      if(data!='c'&&!iscmd&data>=48&&data<=57){
        validinfo=true;
        if(i<2){
          str +=(char)data;
          i=i+1;
        }
      }
      if(iscmd){
        str=(char)data;
        cmd=(byte)str.toInt();
        str="";
        //Serial.println(cmd);
        if(cmd>7){
          //Serial.println("cmd over 7, limit to 0-7");
          cmd=7;
        }
        validinfo=false;
        iscmd=false;
      }
      if(data=='c'){
        iscmd=true;
        Serial.print("Set CMD to ");
        Serial.println(cmd);
      }      
    }
    if(data == 0xa && validinfo){
      if(i>0&&i<=2){
        instr=str.toInt();
        if(instr>63){
          Serial.println("instr over 63, limiting..");
          instr=63;
        }
        str = "";
        unsigned int b2 = 0;
        unsigned int b = 0;
        for(byte _i = 0;_i<16;_i++){
          if(bitRead(instr,_i)){bitSet(b,15-_i);}
        }
        for(byte _i = 0;_i<15;_i++){
          if(bitRead(cmd,_i)){bitSet(b2,15-_i);}
        }
        b2 = b2>>6;
        b = b | b2;
        Serial.print("Sending instr "); Serial.print(instr); Serial.print(" cmd: "); Serial.println(cmd);
        Serial.print("BIN:"); Serial.println(b>>7,BIN);
        sendcmd(0b1111111111000000,0,0);
        sendcmd(b,1,1);
        sendcmd(0b1111111111000000,1,2);
        
        i=0;
      }else{
        Serial.println("enter value from 0 to 63");
        i = 0;
      }
    }
    
  }
  /* int b = instr<<3;
     b = b | (cmd);
     //bytes, last, type
     sendcmd(b,1,0);//start
     sendcmd(b,1,1);//info repeat if kept pressed
     sendcmd(b,1,2);//stop
  */

}
Nach ein bisschen Logicanalyzer hin und her, passten die Sigale auch zu dem, was im datenblatt stand.
Bild
zu erkennen, das Pre-signal, ein interval von 5x dem signal, der start bit sowie die 9 datenbits.
da ich auch nicht weiß, welcher Resonator verwendet wurde, habe ich eine variable bzw. define gemacht wo man die khz angeben kann. 500 scheint perfekt zu passen. 450 geht schon nicht mehr.
Bild
jeder bit wird mit 16 zyklen moduliert
Bild

lediglich den letzten datensatz habe ich weggelassen da er manchmal doppelte den empfang registrierte aber mit 2 sätzen klappts auch. das datenblatt vom sda2208 schreibt start, info und stop datensatz, aber nicht was in start und stop stehen soll. hab einfach den eigentlichen datensatz da reingepackt, funktionierte also was solls.


Als IR Sender habe ich eine kaputte fernbedienung geschlachtet, da ich keine IR Leds zur hand hatte.
Bild

Nachdem ich geprüft habe, dass die Daten auch von einem IR Empfänger wie diesem
Bild

empfangen wurden, ging es an das trial and error... was die ganze nachte dauerte.

Eintippen, beobachten, aufschreiben.
ich konnte aber leider nur die Befehle erkennen, die für mein Gerät bestimmt waren. Die Befehle für den Tuner und CD player konnte ich jetzt nicht herausfinden.

Also los. Instruktion 40, tone-control bass left.
und zack, funtzt
Bild

dabei war es egal ob ich über command 1 2 oder 3 sende. nur 4 bis 7 ging nicht.
Bild

Code: Alles auswählen

COMMAND 1 2 or 3

instr							rs232-response
	matrix 
		command 				

0	1A	VOL-
1 	1B	VOL+
2 	1C	TREB.R
3	1D	TREB.L
4	1E	BASS.R
5	1F	BASS.L
6 	1G	BAL. R
7 	1H	BAL. L
8	2A	
9	2B	
10	2C	
11	2D	
12	2E	TONE
13 	2F	LOUDNESS
14	2G	SPK.A
15	2H	SPK.B
16	3A	4
17	3B	
18	3C	
19	3D	
20	3E	
22	3F	
21	3G	
23	3H	1
24	4A	2
25	4B	PROG
26	4C	3
27	4D	
28	4E	PRE TOG
29	4F	OFF
30	4G	STORE
31	4H	USER
32	5A	STBY
33	5B	
34	5C	8
35	5D	7
36	5E	5
37	5F	
38	5G	
39	5H	9
40	6A	
41	6B	
43	6C	DAT
42	6D	TAPE
44	6E	
45	6F	
46	6G	MM
47	6H	AUX
48	7A	0
49	7B	CD
50	7C	
51	7D	
52	7E	REC SRC
54	7F	
53	7G	
55	7H	6
56	8A	
57	8B	MC
58	8C	TUNER
59	8D	
60	8E	IN SRC
61	8F	
62	8G	
63	8H	
Bei Serial kommt aus dem eingebauten Serialport der hex-wert rausgeschossen sobald man die taste drückt. ich kenne deren protokoll nicht welche für das AudioCon system benutzt wird.

Das war das ergebniss:
Bild
Nur die aufteilung der tasten finde ich etwas komisch, ich hätte die nach der gitter matrix im Datenblatt angeordnet und die Firmware auf dem gerät entsprechend danach angepasst...
Bild


einige tasten fehlen, besonders die pfeiltasten sind ärgerlich weil diese für die Menu navigation benötigt werden.
Nagut, mein Gerät hat noch eine alte firmware ohne die Menüfunktion unter PROG 00, daher benötige ich diese nicht. und CD Spieler sowie Tuner sind altbacken und können mir fern bleiben.
Ich lege aber die fehlenden tasten als lötbuchsen auf die platine falls ich die restlichen tasten doch noch rausfinde.


Die Nächsten schritte sind eine Platine zu machen mit den Knöpfen die ich benötig und ein sda2208 IC bestellen.


Das kommt dann alles in ein 3d gedrucktes gehäuse.

bilder kommen dann noch^^

EDIT: tabellen/bilder/code aktualisiert^^ da warn fehler drinn
Zuletzt geändert von gamerpaddy am Mo 15. Feb 2021, 15:13, insgesamt 2-mal geändert.
:wurst:

Benutzeravatar

Thread-Ersteller
gamerpaddy
Beiträge: 2509
Registriert: Mo 13. Aug 2012, 09:03
Spezialgebiet: Spezialgebiet
Schule/Uni/Arbeit: Schule/Uni/Arbeit
Wohnort: Mannheim
Hat sich bedankt: 31 Mal
Danksagung erhalten: 256 Mal
Kontaktdaten:

Re: Fernbedienung Reverse engineering & Nachbau

#2 Beitrag von gamerpaddy »

So, pcb ist fertig und auf den ersten blick fehlerfrei.
die anordnung gefällt mir auch so. wird bestellt und ausprobiert!
Bild
:wurst:

Benutzeravatar

Paul
Admin
Beiträge: 3471
Registriert: So 7. Aug 2005, 14:34
Schule/Uni/Arbeit: HW/SW-Entwickler
Wohnort: Braunschweig
Hat sich bedankt: 533 Mal
Danksagung erhalten: 170 Mal
Kontaktdaten:

Re: Fernbedienung Reverse engineering & Nachbau

#3 Beitrag von Paul »

Moin paddy,

sehr geile Sache! Einfach mal die Fernbedienungs-Codes gebruteforced. :mrgreen: So gefällt mir das.

Gruß!
- Paul
“With great power come great heat sinks.”
paulwilhelm.de -- mosfetkiller.de

Benutzeravatar

Thread-Ersteller
gamerpaddy
Beiträge: 2509
Registriert: Mo 13. Aug 2012, 09:03
Spezialgebiet: Spezialgebiet
Schule/Uni/Arbeit: Schule/Uni/Arbeit
Wohnort: Mannheim
Hat sich bedankt: 31 Mal
Danksagung erhalten: 256 Mal
Kontaktdaten:

Re: Fernbedienung Reverse engineering & Nachbau

#4 Beitrag von gamerpaddy »

fail, hab doch den emulator falsch geschrieben^^ der geht die bits von rechts nach links durch, nicht von links nach rechts..
demnach is auch die platine der fernbedienung die heute kam total falsch... :D

Bild

was zb. 100111 hätte sein sollen, war 111001...
joa neues layout, neue platine... ´
Zuletzt geändert von gamerpaddy am Mo 15. Feb 2021, 15:13, insgesamt 1-mal geändert.
:wurst:

Benutzeravatar

VDX
Beiträge: 1238
Registriert: Fr 13. Jul 2018, 18:23
Spezialgebiet: Laser und Mikro-/Nanotechnik
Hat sich bedankt: 1 Mal
Danksagung erhalten: 160 Mal

Re: Fernbedienung Reverse engineering & Nachbau

#5 Beitrag von VDX »

... geht Umschreiben? - ist doch sowieso nur eine Bitreihe, die du in einer Schleife wahlweise von Hinten oder von Vorne aufdröseln kannst?

Viktor
Aufruf zum Projekt "Müll-freie Meere" - https://reprap.org/forum/list.php?426 -- Facebook-Gruppe - https://www.facebook.com/groups/383822522290730
Call for the project "garbage-free seas" - https://reprap.org/forum/list.php?425

Benutzeravatar

Thread-Ersteller
gamerpaddy
Beiträge: 2509
Registriert: Mo 13. Aug 2012, 09:03
Spezialgebiet: Spezialgebiet
Schule/Uni/Arbeit: Schule/Uni/Arbeit
Wohnort: Mannheim
Hat sich bedankt: 31 Mal
Danksagung erhalten: 256 Mal
Kontaktdaten:

Re: Fernbedienung Reverse engineering & Nachbau

#6 Beitrag von gamerpaddy »

Ja, den emulator umschreiben ginge. aber die pcb neu routen müsste ich sowieso, hatte nicht nur den fehler drinn.
Hab schon die neue revision bestellt^^

ich hätte womöglich die reihenfolge von A-H und 1-8 umdrehen können, wäre aber ein riesen gefummel.
:wurst:

Benutzeravatar

SeriousD
Beiträge: 426
Registriert: Mi 26. Aug 2009, 22:16
Spezialgebiet: Handwerkliche Improvisationen
Wohnort: Kiel
Hat sich bedankt: 19 Mal
Danksagung erhalten: 41 Mal

Re: Fernbedienung Reverse engineering & Nachbau

#7 Beitrag von SeriousD »

Moin,

Protipp:
Für solche Fälle eine Look up table zwischen Input und Output packen.
Macht die Sache 1000 mal einfacher und flexibler, wartungsfreundlicher und beugt zumindest solchen Zuordnungsfehler durch Struktur vor.

Was hattest Du denn noch für Fehler?

Grüße
SeriousD
Hey Sigma, ist noch Lambda? - Ja aber das Phi ist noch Rho.

Benutzeravatar

Thread-Ersteller
gamerpaddy
Beiträge: 2509
Registriert: Mo 13. Aug 2012, 09:03
Spezialgebiet: Spezialgebiet
Schule/Uni/Arbeit: Schule/Uni/Arbeit
Wohnort: Mannheim
Hat sich bedankt: 31 Mal
Danksagung erhalten: 256 Mal
Kontaktdaten:

Re: Fernbedienung Reverse engineering & Nachbau

#8 Beitrag von gamerpaddy »

EDIT: bilder/code und tabelle im Hauptbeitrag aktualisiert. passt nun alles wieder und funktionierte im test.

Im datenblatt wurde erwähnt, die versorgungsleitung der LED's (weil da bis zu 1A fließen können) so zu legen, dass strom nicht die Keypad eingaben stört.
Fiel mir erst nach dem bestellen auf dass ich VCC zum IC von der LED abgriff, nicht vom Elko.
Ein paar footprints noch vergrößert für die tatsächliche bauteilgröße.
und jede taste neu verkabelt / zugeordnet.

Ich hatte oben rechts ja ein Port mit 1-8 A-H wo ich mit einem Jumperkabel ausprobieren konnte welche Instruktion was macht.
Das teil war im prinzip das Devboard welches ich zuerst vermeiden wollte, jetzt kommt hoffentlich das richtige board bei raus :D

Im datenblatt ist auch nicht klar was Start und Stop beinhalten sollte.. (edit.. es ist befehlt 511, 0b1111111111) hatte im emulator den gleichen befehl einfach mehrfach gesendet.

Einfach neu verkabeln ginge nicht.
1-8 A bis H ist die Reihe/Spalte. Was vorher instruktion 100111 (8B) war, ist nun 111001 (5H), einfach den IC neu verdrahten würde nicht funktionieren.
:wurst:

Benutzeravatar

Thread-Ersteller
gamerpaddy
Beiträge: 2509
Registriert: Mo 13. Aug 2012, 09:03
Spezialgebiet: Spezialgebiet
Schule/Uni/Arbeit: Schule/Uni/Arbeit
Wohnort: Mannheim
Hat sich bedankt: 31 Mal
Danksagung erhalten: 256 Mal
Kontaktdaten:

Re: Fernbedienung Reverse engineering & Nachbau

#9 Beitrag von gamerpaddy »

So, fertig.
der 500khz resonator ist etwas knapp, mit einem neuen ging es nicht mehr, erst mit dem von der alten platine. hab ein 455 und 485 bestellt, die sollten besser passen.
läuft aber! deckel drauf und gut is
IMG_20210301_122315.jpg
:D
gehäuse drucken ging nich so gut, text unmöglich und hält auch naja.
habs auf knopf-einsätze geändert und mit einem papierlabel beschriftet, alles in tape gewickelt und gut ist. so bleibt da teil jetzt und da wird nix drann geändert! :trollface:

Bild
Bild
:wurst:

Benutzeravatar

Mofi
Beiträge: 3934
Registriert: Mo 19. Apr 2010, 20:39
Spezialgebiet: Müllverwertung und rumgammeln, Pilze.
Schule/Uni/Arbeit: Universaldilletant
Wohnort: Bremen
Hat sich bedankt: 151 Mal
Danksagung erhalten: 186 Mal
Kontaktdaten:

Re: Fernbedienung Reverse engineering & Nachbau

#10 Beitrag von Mofi »

Sag mal, dein Tag hat auch mehr als 24h...

Bin immer wieder erstaunt, was du so alles auf die Beine stellst...

So ein sauberer Aufbau und dann die schäbige Tüte umzu :tztz:
Oh ja. So fängt es an. Aber der Weg von einem legitimen Verdacht zu blindem Verfolgungswahn ist weitaus kürzer als wir denken.
Ich bin zutiefst besorgt über das, was hier geschieht.
Jean-Luc Picard 2367

Benutzeravatar

Thread-Ersteller
gamerpaddy
Beiträge: 2509
Registriert: Mo 13. Aug 2012, 09:03
Spezialgebiet: Spezialgebiet
Schule/Uni/Arbeit: Schule/Uni/Arbeit
Wohnort: Mannheim
Hat sich bedankt: 31 Mal
Danksagung erhalten: 256 Mal
Kontaktdaten:

Re: Fernbedienung Reverse engineering & Nachbau

#11 Beitrag von gamerpaddy »

Das projekt war wohl auch für die katz :D
es stellt sich raus, das Gerät reagiert auch auf meine TV fernbedienung und schaltet sich ständig an/aus... Macht also ein nutzen der fernbedienung unmöglich..
aber das macht es erst nachdem man die eigenbau fernbedienung einmal benutzt hat. ziemlich miese software. ich frage den hersteller mal ob es eine neuere gibt, müsste die dann nur auf ein eprom bekommen.

mit dem 485khz reso ging es dann ohne aussetzer... bringt aber nix. schade.
da hätte ich auch gleich ein konverter bauen können den man auf das loch vom empfänger steckt und eine bekannte fernbedienung einfach in deren format übersetzt
:wurst:


HolgerT
Beiträge: 1
Registriert: Mo 5. Apr 2021, 19:42

Re: Fernbedienung Reverse engineering & Nachbau

#12 Beitrag von HolgerT »

Hallo, möglicherweise sendest du kein korrektes ENDe-Kommando und deshalb reagiert das Gerät auf die andere Fernbedienung. Hier ein Link, der dir weiterhelfen könnte: https://www.ta-hifi.de/wp-content/uploa ... mmands.pdf. Darin ist der komplette Protokollaufbau von T+A beschrieben. Hatte mir vor vielen Jahren geholfen, eine T+A Fernbedienung zu emulieren.
Gruß
Holger

Benutzeravatar

Thread-Ersteller
gamerpaddy
Beiträge: 2509
Registriert: Mo 13. Aug 2012, 09:03
Spezialgebiet: Spezialgebiet
Schule/Uni/Arbeit: Schule/Uni/Arbeit
Wohnort: Mannheim
Hat sich bedankt: 31 Mal
Danksagung erhalten: 256 Mal
Kontaktdaten:

Re: Fernbedienung Reverse engineering & Nachbau

#13 Beitrag von gamerpaddy »

Hallo
Danke für die infos.
Jedoch nutze ich in der version die probleme macht den originalen SDA2208-3 chip welcher auch so in der F2000AC verbaut ist, am End-kommando kann ich nichts ändern. nur den CMD code auf byte G,H und I umstellen.
Die Codes sehen auf dem Logikanalyzer auch alle korrekt aus, keine glitches. Timings stimmen.


Ich hatte T+A angeschrieben ob es eine neuere Firmware für mein P2000AC gibt, da dieser wohl einer der ersten war, noch mit V1.0. Aber für die Seriennummer gibt es keine neuere wurde mir gesagt. (Es fehlt zb. das Menü unter PROG 00)
ich habe die code zu funktion tabelle bekommen. Im prinzip das gleiche wie bei der PDF von deinem Link, nur weniger detailiert. Bei der wurde wohl das SDA2208-3 Datenblatt mit der Codetabelle kombiniert.
:wurst:

Antworten