Elektroda.pl
Elektroda.pl
X
Tektronix
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Raspberry Pi ustawienia HDMI.

12 Mar 2016 13:28 3558 1
  • Redaktor
    Odkąd pojawiło się HDMI, zwykle ułatwiało połączenie urządzeń A/V pozwalając na uzyskanie dobrej jakości i użycia mniejszej ilości kabli i wtyczek.
    W kolejnych wersjach kabel HDMI pozwalał także na łączność Fast Ethernet.

    HDMI zwykle traktowałem jako połączenie "PnP", tym czasem w przypadku Raspberry Pi byłem zaskoczony ilością możliwych ustawień HDMI.

    Korzystacie w praktyce z zaawansowanych ustawień HDMI w RPi?

    Przeglądając:
    https://www.raspberrypi.org/documentation/configuration/config-txt.md
    natrafiłem na dość rozbudowany opis możliwych ustawień w:
    /boot/config.txt

    O ile dla wyjścia kompozytowego wygląda to dość prosto:
    sdtv_mode=0 (NTSC), sdtv_mode=2 (PAL)
    sdtv_aspect=1 (4:3), sdtv_aspect=2 (14:9), sdtv_aspect=3 (16:9)

    To dla HDMI mnogość możliwych ustawień robi wrażenie...

    Kombinacja hdmi_group i hdmi_mode pozwala na ustalenie trybu pracy HDMI,
    hdmi_group=0 - autokonfiguracja z wykorzystaniem danych EDID odczytanych z monitora
    hdmi_group=1 - CEA (Consumer Electronics Association, typowe dla TV)
    hdmi_group=2 - DMT (Display Monitor Timings, typowe dla monitorów).

    hdmi_mode w przypadku CEA:
    Spoiler:

    hdmi_moderesolutionfrequencynotes
    1VGA (640x480)
    2480p60Hz
    3480p60Hz16:9 aspect ratio
    4720p60Hz
    51080i60Hz
    6480i60Hz
    7480i60Hz16:9 aspect ratio
    8240p60Hz
    9240p60Hz16:9 aspect ratio
    10480i60Hzpixel quadrupling
    11480i60Hzpixel quadrupling, 16:9 aspect ratio
    12240p60Hzpixel quadrupling
    13240p60Hzpixel quadrupling, 16:9 aspect ratio
    14480p60Hzpixel doubling
    15480p60Hzpixel doubling, 16:9 aspect ratio
    161080p60Hz
    17576p50Hz
    18576p50Hz16:9 aspect ratio
    19720p50Hz
    201080i50Hz
    21576i50Hz
    22576i50Hz16:9 aspect ratio
    23288p50Hz
    24288p50Hz16:9 aspect ratio
    25576i50Hzpixel quadrupling
    26576i50Hzpixel quadrupling, 16:9 aspect ratio
    27288p50Hzpixel quadrupling
    28288p50Hzpixel quadrupling, 16:9 aspect ratio
    29576p50Hzpixel doubling
    30576p50Hzpixel doubling, 16:9 aspect ratio
    311080p50Hz
    321080p24Hz
    331080p25Hz
    341080p30Hz
    35480p60Hzpixel quadrupling
    36480p60Hzpixel quadrupling, 16:9 aspect ratio
    37576p50Hzpixel quadrupling
    38576p50Hzpixel quadrupling, 16:9 aspect ratio
    391080i50Hzreduced blanking
    401080i100Hz
    41720p100Hz
    42576p100Hz
    43576p100Hz16:9 aspect ratio
    44576i100Hz
    45576i100Hz16:9 aspect ratio
    461080i120Hz
    47720p120Hz
    48480p120Hz
    49480p120Hz16:9 aspect ratio
    50480i120Hz
    51480i120Hz16:9 aspect ratio
    52576p200Hz
    53576p200Hz16:9 aspect ratio
    54576i200Hz
    55576i200Hz16:9 aspect ratio
    56480p240Hz
    57480p240Hz16:9 aspect ratio
    58480i240Hz
    59480i240Hz16:9 aspect ratio


    hdmi_mode w przypadku DMT:
    Spoiler:
    hdmi_moderesolutionfrequencynotes
    1640x35085Hz
    2640x40085Hz
    3720x40085Hz
    4640x48060Hz
    5640x48072Hz
    6640x48075Hz
    7640x48085Hz
    8800x60056Hz
    9800x60060Hz
    10800x60072Hz
    11800x60075Hz
    12800x60085Hz
    13800x600120Hz
    14848x48060Hz
    151024x76843Hzincompatible with the Raspberry Pi
    161024x76860Hz
    171024x76870Hz
    181024x76875Hz
    191024x76885Hz
    201024x768120Hz
    211152x86475Hz
    221280x768reduced blanking
    231280x76860Hz
    241280x76875Hz
    251280x76885Hz
    261280x768120Hzreduced blanking
    271280x800reduced blanking
    281280x80060Hz
    291280x80075Hz
    301280x80085Hz
    311280x800120Hzreduced blanking
    321280x96060Hz
    331280x96085Hz
    341280x960120Hzreduced blanking
    351280x102460Hz
    361280x102475Hz
    371280x102485Hz
    381280x1024120Hzreduced blanking
    391360x76860Hz
    401360x768120Hzreduced blanking
    411400x1050reduced blanking
    421400x105060Hz
    431400x105075Hz
    441400x105085Hz
    451400x1050120Hzreduced blanking
    461440x900reduced blanking
    471440x90060Hz
    481440x90075Hz
    491440x90085Hz
    501440x900120Hzreduced blanking
    511600x120060Hz
    521600x120065Hz
    531600x120070Hz
    541600x120075Hz
    551600x120085Hz
    561600x1200120Hzreduced blanking
    571680x1050reduced blanking
    581680x105060Hz
    591680x105075Hz
    601680x105085Hz
    611680x1050120Hzreduced blanking
    621792x134460Hz
    631792x134475Hz
    641792x1344120Hzreduced blanking
    651856x139260Hz
    661856x139275Hz
    671856x1392120Hzreduced blanking
    681920x1200reduced blanking
    691920x120060Hz
    701920x120075Hz
    711920x120085Hz
    721920x1200120Hzreduced blanking
    731920x144060Hz
    741920x144075Hz
    751920x1440120Hzreduced blanking
    762560x1600reduced blanking
    772560x160060Hz
    782560x160075Hz
    792560x160085Hz
    802560x1600120Hzreduced blanking
    811366x76860Hz
    821920x108060Hz1080p
    831600x900reduced blanking
    842048x1152reduced blanking
    851280x72060Hz720p
    861366x768reduced blanking


    Ustawień jest dużo więcej, są też pewne ułatwienia,
    np. ustawienie HDMI_SAFE powoduje wybranie najbardziej kompatybilnego trybu co odpowiada poniższym ustawieniom:
    hdmi_force_hotplug=1
    hdmi_ignore_edid=0xa5000080
    config_hdmi_boost=4
    hdmi_group=2
    hdmi_mode=4
    disable_overscan=0
    overscan_left=24
    overscan_right=24
    overscan_top=24
    overscan_bottom=24

    hdmi_force_hotplug - ustawienie pozwala na generowanie sygnału HDMI, nawet gdy monitor nie został wykryty
    hdmi_ignore_hotplug - wyjście kompozytowego wideo będzie użyte nawet gdy monitor HDMI zostanie wykryty
    Ustawienia overscan pozwalają na konfigurację "czarnej ramki" wokół obrazu, czyli pomijania określonej liczby pikseli na wybranych krawędziach monitora.

    hdmi_drive - pozwala na wybór pracy HDMI (z dźwiękiem) lub DVI (bez dźwięku)
    1-DVI
    2-HDMI

    config_hdmi_boost - pozwala na dopasowanie siły sygnału w liniach HDMI,
    domyślnie 0, maksymalnie 7, można wypróbować 4 jeżeli mamy problemy z zakłóceniami HDMI.

    Sposób postępowania z opornym wyświetlaczem:
    1. Ustawiamy wyjście na VGA 60Hz (hdmi_group=1 i hdmi_mode=1)

    2. próbujemy odczytać listę wspieranych trybów CEA:
    /opt/vc/bin/tvservice -m CEA

    3. próbujemy odczytać listę wspieranych trybów DMT:
    /opt/vc/bin/tvservice -m DMT

    4. odczytujemy aktualny stan
    /opt/vc/bin/tvservice -s

    5. możemy ściągnąć więcej szczegółowych informacji o naszym monitorze
    /opt/vc/bin/tvservice -d edid.dat; /opt/vc/bin/edidparser edid.dat


    Możemy mieć nawet wpływ na sposób kodowania kolorów pikseli:
    hdmi_pixel_encodingresult
    0default (RGB limited for CEA, RGB full for DMT)
    1RGB limited (16-235)
    2RGB full (0-255)
    3YCbCr limited (16-235)
    4YCbCr full (0-255)


    Z bardziej praktycznych ustawień możemy obracać wyświetlany obraz:
    display_rotateresult
    0no rotation
    1rotate 90 degrees clockwise
    2rotate 180 degrees clockwise
    3rotate 270 degrees clockwise
    0x10000horizontal flip
    0x20000vertical flip


    Mocnym zaskoczeniem było dla mnie config_hdmi_boost,
    mimo że korzystałem z interfejsu HDMI w bardzo wielu scenariuszach,
    nie wiedziałem że standard zakłada możliwość dopasowania poziomu sygnału na cyfrowej magistrali różnicowej.

    Czy w praktyce korzystacie z ręcznej konfiguracji HDMI na RPi,
    czy też działa to automatycznie podobnie jak w pozostałym sprzęcie A/V, natomiast możliwości zaawansowanej konfiguracji pozostają dla celów eksperymentalnych/badawczych np. w ramach "pracy dyplomowej/badawczej"...
  • Tektronix
  • Pomocny post
    Poziom 33  
    Prawdopodobnie większość układów do obsługi HDMI (obecnie najczęściej jest to blok zintegrowany w SoC) jest tak elastyczna, ale w przypadku Raspberry Pi mamy do tego dostęp. Pamiętajmy, że obecnie większość "ciekawych" układów nie ma dostępnych pełnych dokumentacji, a nawet więksi klienci (producenci), zamiast źródeł dostają tylko skompilowane binarki (blob) i instrukcje, jak je wykorzystać.
    TechEkspert napisał:

    Ustawienia overscan pozwalają na konfigurację "czarnej ramki" wokół obrazu, czyli pomijania określonej liczby pikseli na wybranych krawędziach monitora.

    Ta opcja jest dla mnie średnio zrozumiała, a często jest aktywna domyślnie.
    Wiadomo przecież, że ekrany najlepiej wyświetlają obraz w swojej natywnej rozdzielczości, a overscan powoduje nie obcinanie, a skalowanie obrazu. Dlatego też nie rozumiem większości producentów TV, dlaczego w większości "standardowych" formatów ekranu obraz nie jest domyślenie 1:1. Niektóre TV mają do wyboru opcje "nieskalowany", "1:1", "Piksel w Piksel"; "Full" po wybraniu której przy wyłączonym overscanie w RPi obraz jest idealni na całej powierzchni ekranu. Problem polega na tym, że większość domyślnych ustawień formatów obrazu w TV obcina trochę obrazu i wtedy zamiast ustawić odpowiedni format w TV aktywuje się opcję overscan w RPi. W monitorach tego problemu nie ma. W przypadku CRT zastosowanie overscanu jest zrozumiałe, ale w przypadku LCD, nie bardzo.

    TechEkspert napisał:

    Mocnym zaskoczeniem było dla mnie config_hdmi_boost.


    Ogólnie powinno się stosować poziomy sygnałów nie wyższe niż potrzebne. Ma to znaczenie w urządzeniach mobilnych, ale tez chodzi o kompatybilność elektromagnetyczną.
    W TV LCD czasami w menu serwisowym znajdują się opcję do regulacji poziomy sygnału oraz stromości zboczy w magistrali LVDS (z płyty głównej do ekranu) też ma to związek z EMC.