Identifikace sériového protokolu

Identifikace sériového protokolu
« kdy: 27. 07. 2023, 01:02:46 »
Prosim nepoznate nekdo co je to za protokol? Myslim jako jakou knihovnou ho dekodovat. Posila to elektricky zamek FUHR a vyrobce tvrdi, ze je to super tajne a nikomu nerekne jak s tim komunikovat.

Je to neco co po jednom dratu komunikuje obousmerne, v klidu to ma 12V. Klasicky seriovy port to zrejme neni, je videt ze osciloskop to jako UART dekoduje spatne. Je mozne, ze log. 0/1 je dana sirkou pulsu. Treba to nekdo pozna abych nemusel psat vlastni dekoder.

« Poslední změna: 27. 07. 2023, 07:34:50 od Petr Krčmář »


Don.J

Re:Identifikace sériového protokolu
« Odpověď #1 kdy: 27. 07. 2023, 08:00:49 »
Je k tomu nějaký software?

...pokud výrobce dělá jak je to hrozně tajný, tak je to děravý jak řešeto a i takový bude software. Možná bych začal tam.

Re:Identifikace sériového protokolu
« Odpověď #2 kdy: 27. 07. 2023, 08:38:22 »
Máte možná pravdu, řekl bych, že mi tam nějak nesedí stop-bit pro žádnou obvyklou délku/formát UART znaku.

Takhle na první pohled by to mohlo být třeba 32+32 bitů, dotaz/odpověď ? První hrana dolů by mohla uvozovat "hluchý" start bit, který je vždy v log.0, užitečná data by začínala následujícím bitem.
Toto by snad šlo zpracovat nějakým posuvným registrem, spouštět sestupnou hranou po definované době klidu. Nebo to vzorkovat vyšší rychlostí a dál už zpracovat softwarově.

Neznám Hantek - takže z toho nevyčtu, jak rychlá je časová základna, resp. hodiny toho bitstreamu.

Fyzická vrstva je elektricky co? TTL?

Smuténka by byla, pokud by se tam navíc odehrávalo bitwise ACKování s otevřeným kolektorem proti odporu, něco jako má I2C nebo CAN - ale na snímku nevidím příznaky takového děje (většinou některý bit trochu vyčnívá).

r223

Re:Identifikace sériového protokolu
« Odpověď #3 kdy: 27. 07. 2023, 09:26:39 »
Není to manchester? Podle změn to tak trochu vypadá.
https://en.wikipedia.org/wiki/Manchester_code

Zkusil bych sipohrát se sigrokem.
Také bychzařízení rozebral apodívalse, z čeko to leze,např.naké periferie jsouna pinu procesoru.
« Poslední změna: 27. 07. 2023, 09:30:50 od r223 »

Re:Identifikace sériového protokolu
« Odpověď #4 kdy: 27. 07. 2023, 09:53:20 »
Diky moc za snahu. Ad SW, neni k tomu zadny, oni maji vlastni ekosystem a komunikuji jen v jeho ramci, navenek ty krabicky maji jen releove vystupy.

Co se tyce dotaz/odpoved, ja mam jen jednu stranu, ten zamek. On ma normalne vstupy na odemceni, ty jsou analogove a kdyz jsou aktivovany, tak pres ten digitalni link prijdou pokazde dva stejne znaky. Zamceni probehne automaticky, kdyz zamek vidi magnet v zarubni. Pokazde posle dva znaky, evidetne pro kontrolu, dela to i kdyz na tom I/O neni zadny protikus. Posila v zasade zrejme jen 4 kody, ohlaseni, ze bude odemykat pri aktivaci daneho vstupu, ohlaseni, ze "vidi" protikus v zarubni, ohlaseni ze zacal zamykat a ohlaseni, ze je zaseknuty a zamceni neproslo. Me nejvice zajima to hlaseni ze dvere zustaly odemcene a to paradoxne ani jejich oficialni GW za 300 Euro nedokaze zpristupnit.

Delka jednoho znaku je cca 16ms, delka sirokeho pulsu cca 1ms, uzky bude neco jako 0,6ms. Vypada to, ze siroky puls ma sirokou mezeru a uzky uzkou, takze je otazka co jsou vlastne data. Posledni bit je asi parita, ale ono se to na vzorku 4 kusu hure pozna.

Zkousim se ptat s nadeji, ze to nekdo pozna ;-) protoze si uplne nemyslim, ze to programovali cele od nuly. Spis vytahli nejaky pin a jen to napetove zvedli na tech 12V aby to bylo odolnejsi. Jsou to nemci, takze mohli okopirovat EMS bus, ale ten mi prijde jiny. Nebo pulku CAN busu...

Samozrejme chci zkusit i poslat do zamku ruzne kody jak bude reagovat. Ten HW je moc fajn, jen holt vyrobce nechce resit nejakou podporu nad ramec toho, ze tady mate ridici jednotku, ta ma 10 vystupu/vystupu a kdyz na ne poslete 0V je aktivni funkce A, kdyz 4-24V je aktivni funce B a kdyz my chceme neco rict vam, tak sepnene bezpotencialovy vystup.

V roli prijemce ma zamek umet jen 4 veci, odemkni (ale po zavreni dveri zamkni), odemkni a zustan odemceny - drz zapadku otevrenou (dvere nejdou zabouchnout, jsou trvale otevrene), odemkni a zustan odemceny - zapadku ale vysun (dvere jdou zabouchnout), zamkni.

Elektricky se jedna o trivodicove zapojeni, zem, napajeni a obousmerny datovy spoj, ten je v klidu drzeny na +12V a komunikace ho stahuje k 0V.


RDa

  • *****
  • 2 620
    • Zobrazit profil
    • E-mail
Re:Identifikace sériového protokolu
« Odpověď #5 kdy: 27. 07. 2023, 11:29:39 »
Muze to byt neco jako LIN
https://en.wikipedia.org/wiki/Local_Interconnect_Network

Osobne bych udelal vetsi testovaci sadu (pokud mas moznost vyjet trace digitalne, tak na to pak muzu aplikovat svuj dekoder / LA framework) a zjsitil jak se lisi ty pakety.

Tj pokud ovladas 8 relatek, tak udelej kazdy zvlast (one hot) a pak postupne je zapinej (shift in inverzi z opacneho konce), a pripadne 0..255 kody.

Z tak velke sady lze uz zjistit format paketu i jeho ochrany pak.

Re:Identifikace sériového protokolu
« Odpověď #6 kdy: 27. 07. 2023, 19:05:28 »
Diky za tip, evidetne by na to byl LIN idealni, ale "graficky" vypada jinak, ma ruznou sirku pulsu, ale stejnou sirku znaku. Nepozoruji tam ten "jev" ze dlouhy puls je nasledovan dlouhou mezerou a kratky puls kratkou mezerou.

Nemam tech 8 relatek, protoze (zatim) nechci kupovat tu jejich ridici jednotku a na ebay se zadne pouzite nevali. Ale prepsat ty 4 zpravy co umim zachytit binarne neni problem. Stejne tak dokazu poslat postupne vsechny kombinace znaku a precist si odpovedi. Elektricky to neni problem na ESP32 napasovat. Jde mi jen o to, abych se netrapil s merenim sirky pulsu na ESP32 (coz moc nemim) a pak me nekdo nerekl: "Proc jsi tam neprilinkoval I2C a mel bys prototyp za 15 minut."

RDa

  • *****
  • 2 620
    • Zobrazit profil
    • E-mail
Re:Identifikace sériového protokolu
« Odpověď #7 kdy: 27. 07. 2023, 19:31:52 »
Tak nasdilej alespon ty 4 zpravy ktere zamek posila.

Na tohle fakt nebude hotova hw periferie - kdyz je to po jednom dratu a celkem viditelne to pouziva nejaky druh modulace - ze tam jsou jen siroke/uzke stavy. A to co tam vidim ja je tedy 2x stejne 16-bitove slovo.

Re:Identifikace sériového protokolu
« Odpověď #8 kdy: 27. 07. 2023, 20:43:37 »
Ajo, ta dvě slova jsou identická.
Jako souhlasím, že je podezřelé, že se tam nevyskytují delší sekvence nul nebo jedniček.
Ale nepřipadá mi, že by kladný pulz dvojnásobné šířky byl následován vždy záporným pulzem dvojnásobné šířky (nebo naopak).
Pokud si umanu, že třeba úzký pulz kóduje 1 a široký 0, tak musím pracovat s tím, že některé široké pulzy jsou kladné a některé záporné. Takže každá vzestupná a každá sestupná hrana kóduje bit. V tom případě tam vidím asi 26 bitů v každém z obou slov...
Souhlas: chtělo by to víc příkladů.

RDa

  • *****
  • 2 620
    • Zobrazit profil
    • E-mail
Re:Identifikace sériového protokolu
« Odpověď #9 kdy: 27. 07. 2023, 20:58:10 »
Ajo, ta dvě slova jsou identická.
Jako souhlasím, že je podezřelé, že se tam nevyskytují delší sekvence nul nebo jedniček.
Ale nepřipadá mi, že by kladný pulz dvojnásobné šířky byl následován vždy záporným pulzem dvojnásobné šířky (nebo naopak).
Pokud si umanu, že třeba úzký pulz kóduje 1 a široký 0, tak musím pracovat s tím, že některé široké pulzy jsou kladné a některé záporné. Takže každá vzestupná a každá sestupná hrana kóduje bit. V tom případě tam vidím asi 26 bitů v každém z obou slov...
Souhlas: chtělo by to víc příkladů.

Ne, koukej na to spis takto:
 0 = bez zmeny (jedna siroka)
 1 = se zmenou uprostred (dva uzke)

Proste takove "FM" - se dvemi tony, rekl bych ze je to jedno ze tri "Bi-Phase" kodovani z tohoto obrazku:

https://stackoverflow.com/questions/49030085/manchester-l-biphase-l-implementation-with-finite-state-machines-in-gnu-radio

Re:Identifikace sériového protokolu
« Odpověď #10 kdy: 27. 07. 2023, 21:50:21 »
@RDa jasně :-) Díky za vysvětlivku.
To je tím, že jsem nešel na tu správnou školu.

Re:Identifikace sériového protokolu
« Odpověď #11 kdy: 27. 07. 2023, 23:05:52 »
Tak pro zajemce co jsem nachytal, nakonec je tech stavu trochu vic


Tohle jsem zjistil, ze chodi kazdych 15s, pri zavrenych a zamcenych dverich - 0000 1001 10



Zase kazdych 15s, ale pri otrevrenych dverich - 0000 0100 1001


Kdyz poslu impuls na odemykaci vstup - 0010 0101 000 - tady je divny dlouhy impuls pred koncem


Kdyz jsou dvere zavrene, ale jeste neprobehlo zamknuti - 0000 0100 1010 0


Probiha zamykani dveri - 0001 0100 0001


Zamknuti neprobehlo, zamek narazil na prekazku - 0000 1110 101


Tady jsou pres sebe dva obrazky, klidovy stav a zavrene dvere + klidovy stav a otevrene dvere. Je tam videt, ze otevrene dvere jsou celkove delsi, ale dalsi znak zacina na stejnem case.

Re:Identifikace sériového protokolu
« Odpověď #12 kdy: 27. 07. 2023, 23:34:46 »
Cela bezpecnost je zalozena na tom, ze nikdo nema pristup k tem vodicum. Protoze kdyz ma, tak si pripoji vlastni ridici jednotku a proste odemkne. A nebo posle 12V na spravny drat a odemkne taky. Takze tady nemuze byt o nejake verejne kompromitaci ani rec a znalost toho protokolu nema nejmensi vliv na to jak je dane reseni bezpecne. V EU si muzu delat s tom co jsem si koupil co chci a mluvit o tom muzu kdekoliv.

RDa

  • *****
  • 2 620
    • Zobrazit profil
    • E-mail
Re:Identifikace sériového protokolu
« Odpověď #13 kdy: 28. 07. 2023, 00:08:11 »
Snad jsem nepopletl poradi, ale hlavni body protokolu:
- START BIT + 16 DATA BITS
- BI-PHASE MARK kodovani (0 = bez zmeny, 1= se zmenou veprostred)

Vypada to, ze je to 1ms per bit, a nasel jsem nekoho kdo resil neco podobneho:
https://forum.arduino.cc/t/biphase-data-encoding-rising-falling-edge/685478/16

Zda je to LSB nebo MSB first se nevi.. dekoduji se proste 16-bit magic slova
(viz priloha, delal jsem to stylem papir-tuzka a pak dokreslil zpetne semka, za chyby nerucim - chci jen ukazat princip)


Re:Identifikace sériového protokolu
« Odpověď #14 kdy: 28. 07. 2023, 00:15:09 »
diky diky, v sobotu zkusim jestli to bude davat nejaky smysl.