Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Dekoder sygnału HDMI ze zwykłego splitera

satanistik 15 Mar 2015 09:09 6054 4
  • Dekoder sygnału HDMI ze zwykłego splitera

    Autor projektu budując system "Ambilight" do swojego zestawu wideo napotkał problem kodowania sygnału HDMI, kodowanie to uniemożliwiało pozyskanie z sygnału informacji o kolorach wybranych obszarów i system działał jedynie na niektórych sygnałach. Jedyną drogą do rozwiązania tego problemu wydawał się zakup licencji do kodowania HDCP, która uprawnia do zakupu układu ADV7611 z wbudowanymi odpowiednimi kluczami. Niestety nie jest to tanie i przekracza budżetowe ramy tego projektu.

    Na szczęście w komentarzach pod artykułem na Hackaday.com, wiele osób sugerowało rozwiązanie polegające na wyłączeniu szyfrowania sygnału wyjściowego w tanich rozdzielaczach HDMI. Metoda działa na urządzeniach opartych o układ firmy Explore Semiconductor, taki jak EP9132. W układzie występuje jeszcze mikro kontroler komunikujący się z EP9132 przez magistralę I2C. Przeróbka miała by polegać na zablokowaniu pracy tego mikro-kontrolera po przez wymuszenie resetu, trybu bootloadera lub odcięcie go od magistrali I2C.

    Sposób wprawdzie działa ale nie jest tak różowo jak się wydaje - wraz z kodowaniem znikają też wszystkie dodatkowe funkcje, takie jak zdalne włączanie, przełączanie wejść czy sterowanie głośnością odtwarzacza z poziomu TV.



    Po analizie noty katalogowej układu autor natrafił na ciekawy bit 0 pod adresem 0x0F TX_ENC_ON dla którego 1 - włącza kodowanie strumienia wyjściowego/0 - wyłącza. Powstał więc pomysł aby monitorować monitorowania transmisji i w momencie zapisu do tego rejestru, wymuszenia stanu 0 na odpowiednim bicie. Wybór padł na mikro-kontroler attiny9 który pomimo posiadania tylko 3 pinów I/O powinien wystarczyć.

    Po uruchomieniu, okazało się że przeróbka nie działa, próba zmiany stanu bitu przez układ powodowała wykrycie przez transmitujący uC kolizji.(przypomnijmy mechanizm arbitrażu w transmisji I2C zakłada ze ten z uC pracujących jako master, przejmuje kontrolę, który pierwszy wystawi 0 w miejscu gdzie 2 podaje 1 - magistrala jest podciągana do +, układy mają wyjścia OC (OD).)

    Po nieudanej próbie autor powrócił do noty aplikacyjnej gdzie znalazł kolejny ciekawy bit - bit4 w rejestrze 0x07 RX_ENC_ON 1 - sygnał odbierany jest kodowany/0 - nie jest. Nasłuch magistrali pod kątem dostępu do tego rejestru pokazał że uC bardzo często sprawdza jego stan, wystarczyło więc zmodyfikować wartość tego bitu - podczas odczytu układ slave nie wykrywa kolizji (magistrala I2C nie dopuszcza pracy wielu układów slave z tym samym adresem),po takim zabiegu mikro-kontroler nie wykryje szyfrowanej transmisji.

    Po wprowadzeniu zmian układ zadziałał - kodowania nie było a wszystkie utracone funkcje powróciły. Problemem okazał się tylko program który na kontrolerze z 8Mhz zegarem nie wyrabiał się i pojawiały się spóźnione maskowania. Problem polegał na tym że zmiana sygnału z niskiego na wysoki w czasie gdy poziom sygnału zegarowego był wysoki była interpretowana jako sygnał START na magistrali I2C. Wymagało to drobnych poprawek jednak ostatecznie udało się to rozwiązać dodatkowym warunkiem badającym stan linii clk.

    Na stronie autora można znaleźć listę spliterów które są podatne na takie przeróbki oraz doczytać więcej szczegółów. Dostępny jest również wsad do kontrolera attiny9. (Należy tu pamiętać że nie jest on obsługiwany przez proste programatory SPI).

    ŹródłoLink

    Cool? Ranking DIY
    Can you write similar article? Send message to me and you will get SD card 64GB.
    About Author
    satanistik
    Level 27  
    Offline 
    Has specialization in: realizacja nietypowych projektów z dziedziny elekt
    satanistik wrote 1796 posts with rating 627, helped 59 times. Live in city Lublin. Been with us since 2005 year.
  • #3
    satanistik
    Level 27  
    Może i tak ale jakoś ten edytor elektrody kiepsko działa - tab trzeba robić ze spacji a entery dawałem ale poznikały. Htmla miałem w gimnazjum ale zapomniałem niestety ;-). Próbowałem dać spacje ale nie działa.
  • #4
    CMS
    Administrator of HydePark
    Piękny przypadek "prostej" i skutecznej inżynierii wstecznej. Mała rzecz, a cieszy, już w połowie artykułu wiedziałem gdzie, a właściwie u kogo, zastosować taki "trick", żeby tuner zobaczył projektor podłączony przez konwerter HDMI -> VGA.

    Pozdrawiam.
    CMS
  • #5
    damdam

    Level 34  
    satanistik wrote:
    (przypomnijmy mechanizm abordażu w transmisji I2C zakłada ze ten z uC pracujących jako master, przejmuje kontrolę, który pierwszy wystawi 0 w miejscu gdzie 2 podaje 1 - magistrala jest podciągana do +, układy mają wyjścia OC (OD).)


    Abordażu ? :) Myślę że koledze chodziło o Arbitraż.