RaspberryPi-LOGO

RaspberryPi KMS HDMI kimeneti grafikus illesztőprogram

RaspberryPi-KMS-HDMI-Output-Graphics-Driver-PRODACT-IMG

Záradék

2020-2023 Raspberry Pi Ltd (korábban Raspberry Pi (Trading) Ltd.) Ez a dokumentáció a Creative Commons Nevezd meg! - NoDerivatives 4.0 International (CC BY-ND 4.0) licence alatt áll. építési dátum: 2023-02-10 építési verzió: githash: c65fe9c-clean

Jogi nyilatkozat

A RASPBERRY PI TERMÉKEKRE VONATKOZÓ MŰSZAKI ÉS MEGBÍZHATÓSÁGI ADATOKAT (AZ ADATLAPOKAT IS BELEÉRTVE), MINT IDŐRŐL MÓDOSÍTOTTAK („FORRÁSOK”) A RASPBERRY PI LTD („RPL”) „AHOGY VAN”, ÉS BÁRMILYEN KIFEJEZETT, KIFEJEZETT, KIFEJEZETT VAGY KIVÉTELEZETT NEM SZÁLLÍTJA. AZ ELADHATÓSÁGRA ÉS AZ EGY CÉLRA VALÓ ALKALMASSÁGRA VONATKOZÓ VÉLEMEZTETI GARANCIÁT VISSZA TAGADJA. AZ ALKALMAZANDÓ JOGSZABÁLYOK ÁLTAL ENGEDÉLYEZETT MAXIMÁLIS MÉRTÉKÉIG az RPL SEMMILYEN ESETBEN NEM VÁLLAL FELELŐSSÉGET SEMMILYEN KÖZVETLEN, KÖZVETETT, VÉLETLEN, KÜLÖNLEGES, PÉLDA VAGY KÖVETKEZMÉNYES KÁROKÉRT (BEÉLETETETT A SZOLGÁLTATÁS FELHASZNÁLÁSÁNAK ADATAI VAGY KORLÁTOZOTT , VAGY NYERESÉG; VAGY ÜZLETI SZAKADÁS) AKÁRMÉL OKOZTA, AKÁR BÁRMILYEN FELELŐSSÉGELMÉLETRE VONATKOZÓAN, AKÁR SZERZŐDÉSBŐL, SZIGORÚ FELELŐSSÉGBEN VAGY JOGSEMÉRETSÉGBEN (BEÉLETETETETTan A HASZNÁLATBÓL VAGY EGYÉBEN), HA A HASZNÁLATBÓL BÁRMILYEN MÓDON KERÜL. ILYEN KÁROKRÓL. Az RPL fenntartja a jogot, hogy bármikor és további értesítés nélkül bármilyen fejlesztést, fejlesztést, javítást vagy bármilyen más módosítást végrehajtson az ERŐFORRÁSOK vagy az azokban leírt termékeken. A FORRÁSOK megfelelő szintű tervezési ismeretekkel rendelkező, képzett felhasználóknak szólnak. A felhasználók kizárólagos felelősséget vállalnak a FORRÁSOK kiválasztásáért és használatáért, valamint az azokban leírt termékek bármely alkalmazásáért. A felhasználó vállalja, hogy kártalanítja és mentesíti az RPL-t minden felelősséggel, költséggel, kárral vagy egyéb veszteséggel szemben, amely a RESOURCES használatából ered. Az RPL engedélyt ad a felhasználóknak arra, hogy az ERŐFORRÁSOKAT kizárólag a Raspberry Pi termékekkel együtt használják fel. A FORRÁSOK minden egyéb felhasználása tilos. Nem adunk engedélyt semmilyen más RPL-re vagy más harmadik fél szellemi tulajdonjogára. MAGAS KOCKÁZATOS TEVÉKENYSÉGEK. A Raspberry Pi termékeket nem tervezték, gyártják vagy nem olyan veszélyes környezetben történő használatra tervezték, amelyek meghibásodásmentes működést igényelnek, például nukleáris létesítmények, repülőgép-navigációs vagy kommunikációs rendszerek, légiforgalmi irányítás, fegyverrendszerek vagy biztonságkritikus alkalmazások (beleértve az életfenntartást is) rendszerek és egyéb orvosi eszközök), amelyekben a termékek meghibásodása közvetlenül halálhoz, személyi sérüléshez vagy súlyos fizikai vagy környezeti károsodáshoz vezethet („Nagy kockázatú tevékenységek”). Az RPL kifejezetten elhárít minden kifejezett vagy hallgatólagos garanciát a magas kockázatú tevékenységekre való alkalmasságra vonatkozóan, és nem vállal felelősséget a Raspberry Pi termékek magas kockázatú tevékenységekben való használatáért vagy beillesztéséért. A Raspberry Pi termékek az RPL szabványos feltételeinek hatálya alá tartoznak. Az ERŐFORRÁSOK RPL általi biztosítása nem bővíti vagy más módon nem módosítja az RPL Általános Feltételeit, beleértve, de nem kizárólagosan a bennük kifejezett felelősség- és garanciákat.

Dokumentum verzióelőzmények

RaspberryPi-KMS-HDMI-Output-Graphics-Driver-1. ÁBRA

A dokumentum hatálya

Ez a dokumentum a következő Raspberry Pi termékekre vonatkozik

RaspberryPi-KMS-HDMI-Output-Graphics-Driver-2. ÁBRA

Bevezetés

A KMS (Kernel Mode Setting) grafikus illesztőprogram bevezetésével a Raspberry Pi Ltd eltávolodik a videó kimeneti rendszer régi firmware-vezérlésétől, és egy nyíltabb forráskódú grafikus rendszer felé halad. Ez azonban meghozta a maga kihívásait. Ennek a dokumentumnak az a célja, hogy segítséget nyújtson az új rendszerre való átállás során felmerülő problémák megoldásában. Ez a tanulmány feltételezi, hogy a Raspberry Pi Raspberry Pi OS-t futtat, és teljes mértékben naprakész a legújabb firmware-rel és kernelekkel.

Terminológia

DRM-ek: A Direct Rendering Manager, a Linux kernel egy alrendszere, amely a grafikus feldolgozó egységekkel (GPU-kkal) kommunikál. Az FKMS-szel és a KMS-szel együttműködve használatos.
DVI: A HDMI elődje, de audioképességek nélkül. HDMI–DVI kábelek és adapterek állnak rendelkezésre a Raspberry Pi eszközök és a DVI-vel felszerelt kijelzők csatlakoztatásához.
EDID: Kibővített megjelenítési azonosító adatok. A megjelenítőeszközök metaadat-formátuma képességeik leírására a videoforrás számára. Az EDID adatstruktúra tartalmazza a gyártó nevét és sorozatszámát, a termék típusát, a fizikai kijelző méretét és a kijelző által támogatott időzítéseket, valamint néhány kevésbé hasznos adatot. Egyes kijelzők hibás EDID blokkokkal rendelkezhetnek, ami problémákat okozhat, ha ezeket a hibákat nem kezeli a kijelzőrendszer.
FKMS (vc4-fkms-v3d): Hamis kernel mód beállítása. Amíg a firmware továbbra is vezérli az alacsony szintű hardvert (plample, a High-Definition Multimedia Interface (HDMI) portokat, a Display Serial Interface (DSI) stb. portokat, a szabványos Linux könyvtárakat magában a kernelben használják. A Buster alapértelmezés szerint az FKMS-t használja, de a Bullseye KMS-je helyett elavult.
HDMI: A High-Definition Multimedia Interface egy szabadalmaztatott audio/video interfész tömörítetlen videoadatok és tömörített vagy tömörítetlen digitális audio adatok továbbítására.
HPD: Hotplug észlelése. Fizikai vezeték, amelyet egy csatlakoztatott megjelenítőeszköz jelez annak meglétére.
KMS: Kernel mód beállítása; lát https://www.kernel.org/doc/html/latest/gpu/drm-kms.html további részletekért. A Raspberry Pi-n a vc4-kms-v3d olyan illesztőprogram, amely KMS-t valósít meg, és gyakran „KMS-illesztőprogramnak” is nevezik. Hagyományos grafikus verem: Teljesen a VideoCore firmware-blobban megvalósított grafikus verem, amelyet egy Linux framebuffer-illesztőprogram tesz közzé. Az örökölt grafikus verem a legtöbb Raspberry Pi Ltd-ben a közelmúltig használatos volt; most fokozatosan felváltja az (F)KMS/DRM.

A HDMI rendszer és a grafikus illesztőprogramok

A Raspberry Pi eszközök a modern LCD monitorokon és televíziókon igen elterjedt HDMI szabványt használják a videokimenetre. A Raspberry Pi 3 (beleértve a Raspberry Pi 3B+-t is) és a korábbi eszközök egyetlen HDMI-porttal rendelkeznek, amely 1920 × 1200 @60Hz-es kimenetre képes teljes méretű HDMI-csatlakozó segítségével. A Raspberry Pi 4 két micro HDMI porttal rendelkezik, és mindkét porton 4K kimenetre képes. A beállítástól függően a Raspberry Pi 0 HDMI 4 portja akár 4kp60-ra is képes, de két 4K kimeneti eszköz használata esetén mindkét eszközön a p30-ra korlátozódik. A grafikus szoftververem, verziótól függetlenül, felelős a csatlakoztatott HDMI-eszközök tulajdonságainak lekérdezéséért és a HDMI-rendszer megfelelő beállításáért. A régebbi és az FKMS-verem egyaránt firmware-t használ a VideoCore grafikus processzorban a HDMI jelenlétének és tulajdonságainak ellenőrzéséhez. Ezzel szemben a KMS teljesen nyílt forráskódú, ARM-oldali megvalósítást használ. Ez azt jelenti, hogy a két rendszer kódbázisa teljesen eltérő, és bizonyos körülmények között ez eltérő viselkedést eredményezhet a két megközelítés között. A HDMI és DVI eszközök egy EDID blokknak nevezett metaadat segítségével azonosítják magukat a forráseszközzel. Ezt a forráseszköz olvassa be a megjelenítő eszközről I2C kapcsolaton keresztül, és ez teljesen átlátható a végfelhasználó számára, mivel ezt a grafikus verem teszi. Az EDID blokk nagyon sok információt tartalmaz, de elsősorban annak megadására szolgál, hogy a kijelző milyen felbontásokat támogat, így a Raspberry Pi beállítható a megfelelő felbontás kiadására.

Hogyan kezelik a HDMI-t a rendszerindítás során

Az első bekapcsoláskor a Raspberry Pi számos s-en megy keresztültages, boot s néven ismerttages:

  1. Az első-stage, a ROM-alapú rendszerbetöltő elindítja a VideoCore GPU-t.
  2. Second-stage bootloader (ez a bootcode.bin az SD-kártyán a Raspberry Pi 4 előtti eszközökön, és az SPI EEPROM-ban Raspberry Pi 4 esetén):
    1. A Raspberry Pi 4-en a második-stagA rendszerbetöltő elindítja a HDMI rendszert, lekérdezi a kijelzőt a lehetséges módokról, majd megfelelően beállítja a kijelzőt. Ezen a ponton a kijelző az alapvető diagnosztikai adatok megjelenítésére szolgál.
    2. A rendszerbetöltő diagnosztikai kijelzője (07. december 2022-től) megjeleníti a csatlakoztatott kijelzők állapotát (hogy van-e Hotplug Detect (HPD), és hogy sikerült-e helyreállítani EDID blokkot a kijelzőről).
  3. A VideoCore firmware (start.elf) betöltődik és fut. Ez átveszi a HDMI-rendszer irányítását, beolvassa az EDID blokkot a csatlakoztatott kijelzőkről, és megjeleníti a szivárványképernyőt ezeken a kijelzőkön.
  4. A Linux kernel elindul
    1. A kernel indításakor a KMS átveszi a HDMI-rendszer irányítását a firmware-től. Ismét az EDID blokkot olvassa be a csatlakoztatott képernyőkről, és ez az információ a Linux konzol és az asztal beállítására szolgál.

Lehetséges problémák és tünetek

A KMS-re való átálláskor tapasztalt leggyakoribb hibatünet a kezdetben jó rendszerindítás, amikor megjelenik a rendszerbetöltő képernyő, majd a szivárvány képernyő, majd néhány másodperc múlva a kijelző elsötétül, és nem kapcsol be újra. Az a pont, ahol a kijelző elsötétül, valójában az a pont a kernel indítási folyamata során, amikor a KMS-illesztőprogram átveszi a kijelző futtatását a firmware-től. A Raspberry Pi jelenleg minden tekintetben fut, kivéve a HDMI-kimenetet, tehát ha az SSH engedélyezve van, akkor ezen az útvonalon be kell tudni jelentkezni az eszközre. A zöld SD-kártya hozzáférési LED általában időnként villog. Az is lehetséges, hogy egyáltalán nem fog látni HDMI-kimenetet; nincs bootloader kijelző és nincs szivárvány képernyő. Ez általában hardverhibának tudható be.

A hiba diagnosztizálása

HDMI kimenet egyáltalán nincs
Lehetséges, hogy az eszköz egyáltalán nem indult el, de ez kívül esik ennek a fehér könyvnek a hatáskörén. Feltételezve, hogy a megfigyelt viselkedés megjelenítési probléma, a HDMI-kimenet hiánya a rendszerindítási folyamat bármely szakaszában általában hardverhiba miatt következik be. Számos lehetőség van:

  • Hibás HDMI kábel
  • Próbáljon ki egy új kábelt. Egyes kábelek, különösen a nagyon olcsók, nem tartalmazzák az összes szükséges kommunikációs vonalat (pl. hotplug), hogy a Raspberry Pi sikeresen észlelje a kijelzőt.
  • Hibás HDMI-port a Raspberry Pi-n
  • Ha Raspberry Pi 4-et használ, próbálja ki a másik HDMI-portot.
  • Hibás HDMI port a monitoron
  • Néha a monitor vagy a TV HDMI-portja elhasználódhat. Próbálkozzon másik porttal, ha az eszköz rendelkezik ilyennel.
  • Ritkán előfordulhat, hogy a megjelenítőeszköz csak bekapcsolt állapotban vagy a megfelelő port kiválasztásakor szolgáltat EDID adatokat. Az ellenőrzéshez győződjön meg arról, hogy az eszköz be van kapcsolva, és a megfelelő bemeneti portot választotta.
  • A kijelzőeszköz nem érvényesíti a hotplug észlelési vonalat

Kezdeti kimenet, majd a képernyő elsötétül
Ha a kijelző megjelenik, de aztán kialszik a Linux kernel indításakor, annak számos lehetséges oka lehet, és ezek általában az EDID megjelenítőeszközről történő olvasásával kapcsolatos problémákkal kapcsolatosak. Amint az a fenti, a rendszerindítási szekvenciával foglalkozó részből látható, az EDID-t a rendszerindítási folyamat során számos különböző ponton olvassa be, és mindegyik olvasást más-más szoftver végzi. Az utolsó olvasást, amikor a KMS átveszi az irányítást, változatlan upstream Linux kernelkód hajtja végre, és ez nem kezeli a hibás EDID formátumokat, valamint a korábbi firmware szoftvert. Ez az oka annak, hogy a kijelző nem működik megfelelően, ha a KMS átveszi az irányítást. Számos módja van annak ellenőrzésére, hogy a KMS nem olvassa-e be az EDID-t, ezek közül kettő a következő.
Ellenőrizze a rendszerbetöltő diagnosztikai képernyőjét (csak Raspberry Pi 4 esetén)

JEGYZET
A rendszerbetöltő diagnosztikához friss rendszerbetöltőre van szükség. Az alábbi utasítások segítségével frissíthet a legújabb verzióra: https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#updating-the-bootloader Távolítsa el az SD-kártyát, és indítsa újra a Raspberry Pi-t. Nyomja meg az ESC gombot az OS telepítése képernyőn, és a diagnosztikai képernyőnek meg kell jelennie a megjelenítőeszközön. A kijelzőn legyen egy sor, amely a kijelzővel kezdődik: — plample:

  • kijelző: DISP0: HDMI HPD=1 EDID=ok #2 DISP1: HPD=0 EDID=nincs #0

A Raspberry Pi 4 kimenete azt mutatja, hogy a rendszer HDMI-kijelzőt észlelt a 0-s HDMI-porton, a hotplug-észlelés érvényesül, és az EDID-t rendben olvasta. Semmi sem található az 1-es HDMI-porton.

Ellenőrizze, hogy a KMS rendszer észlelt-e EDID-t
Ennek ellenőrzéséhez be kell jelentkeznie a Raspberry Pi eszközre SSH-n keresztül egy másik számítógépről. Az SSH engedélyezhető, amikor SD-kártyás képet hoz létre a Raspberry Pi Imager segítségével, a Speciális beállítások segítségével. Az SSH engedélyezése egy olyan SD-kártyán, amelyen már leképezett, kissé bonyolultabb: egy másik számítógépet kell használnia file ssh néven a rendszerindító partícióhoz. Cserélje ki az SD-kártyát az eredeti Raspberry Pi-be, és kapcsolja be. Ennek engedélyeznie kell az SSH-t a DHCP által kiosztott IP-címmel. Miután bejelentkezett, írja be a következőt a terminál parancssorába az észlelt EDID tartalmának megjelenítéséhez (lehet, hogy a HDMI-A-1-et HDMI-A-2-re kell cserélnie, attól függően, hogy a Raspberry Pi melyik HDMI-portjához csatlakozik a megjelenítőeszköz to): cat /sys/class/drm/card?-HDMI-A-1/edid Ha nincsenek kártya?-HDMI-A-1 vagy hasonló nevű mappák, akkor valószínű, hogy az EDID nem olvasható ki a kijelzőről eszköz.

JEGYZET
Abban az esetben, ha az EDID sikeresen beolvasásra kerül, van egy hasznos virtuális file ugyanabban a mappában, az úgynevezett módokban, amely megjelenítésekor az eszköz által támogatott EDID által igényelt összes lehetséges módot mutatja.

Enyhítések

Hotplug észlelési hiba Ha a firmware és a KMS sem találja a csatlakoztatott monitort, akkor az hotplug-észlelési hiba lehet – azaz a Raspberry Pi nem tudja, hogy egy eszköz csatlakoztatva van-e, ezért nem ellenőrzi az EDID-t. Ezt egy rossz kábel vagy egy olyan megjelenítőeszköz okozhatja, amely nem megfelelően csatlakoztatja a hotplug-ot. A hotplug észlelését a kernel parancssorának módosításával kényszerítheti ki file (cmdline.txt), amely a Raspberry Pi OS SD-kártya rendszerindító partíciójában van tárolva. Ezt szerkesztheti file egy másik rendszeren, a kívánt szerkesztő használatával. Adja hozzá a következőt a cmdline.txt fájl végéhez file: video=HDMI-A-1:1280×720@60D Ha a második HDMI-portot használja, cserélje ki a HDMI-A-1-et HDMI-A-2-re. Megadhat más felbontást és képsebességet is, de ügyeljen arra, hogy olyanokat válasszon, amelyeket a megjelenítő eszköz támogat.

JEGYZET
A kernel videóhoz tartozó parancssori beállításainak dokumentációja itt található: https://www.kernel.org/doc/Documentation/fb/modedb.txt

FIGYELMEZTETÉS
A régebbi grafikus veremek támogatták a config.txt bejegyzés használatát a hotplug észlelésének beállításához, de a cikk írásakor ez nem működött a KMS-sel. A jövőbeni firmware-kiadások támogathatják. A config.txt bejegyzés a hdmi_force_hotplug, és a hdmi_force_hotplug:0=1 vagy a hdmi_force_hotplug:1=1 használatával megadhatja azt a HDMI-portot, amelyre a hotplug vonatkozik. Vegye figyelembe, hogy a KMS nómenklatúrája a HDMI-portokra 1-es és 2-esként hivatkozik, míg a Raspberry Pi 0-t és 1-et használ.

EDID problémák
A megjelenítő eszközök egy része nem képes EDID-t visszaadni, ha ki vannak kapcsolva, vagy ha rossz AV bemenet van kiválasztva. Ez akkor lehet probléma, ha a Raspberry Pi és a megjelenítő eszközök ugyanazon a tápegységen vannak, és a Raspberry Pi eszköz gyorsabban indul, mint a kijelző. Az ehhez hasonló eszközök esetén előfordulhat, hogy manuálisan kell megadnia az EDID-t. Még ennél is szokatlanabb, hogy egyes megjelenítő eszközök rosszul formázott EDID-blokkokkal rendelkeznek, és a KMS EDID rendszer nem tudja elemezni őket. Ilyen körülmények között lehetséges egy EDID kiolvasása egy hasonló felbontású eszközről, és azt használja. Mindkét esetben a következő utasítások bemutatják, hogyan kell kiolvasni az EDID-t egy megjelenítőeszközről, és beállítani a KMS-t a használatára ahelyett, hogy a KMS közvetlenül próbálja lekérdezni az eszközt.

EDID másolása a file
Létrehozása a file Az EDID-metaadatokat a semmiből való tárolása általában nem kivitelezhető, a meglévők használata pedig sokkal egyszerűbb. Általában lehetséges egy EDID beszerzése egy megjelenítőeszközről, és azt a Raspberry Pi SD-kártyáján tárolhatja, így a KMS használhatja ahelyett, hogy EDID-t kapna a megjelenítőeszközről. A legegyszerűbb lehetőség annak ellenőrzése, hogy a megjelenítőeszköz be van kapcsolva, és a megfelelő AV-bemeneten van-e, és hogy a Raspberry Pi megfelelően elindította-e a HDMI-rendszert. A terminálról most átmásolhatja az EDID-t a file a következő paranccsal: sudo cp /sys/class/drm/card?-HDMI-A-1/edid /lib/firmware/myedid.dat Ha valamilyen oknál fogva az EDID nincs jelen, akkor elindíthatja az eszközt egy nem -KMS mód, amely sikeresen elindul az asztalon vagy a konzolon, majd másolja az EDID-t, amelyet a firmware (remélhetőleg) sikeresen beolvas egy file.

  1. Indítsa el a régi grafikus módot.
    1. Szerkessze a config.txt fájlt a rendszerindító partíción, ügyelve arra, hogy a szerkesztőt sudo használatával futtassa, és módosítsa a dtoverlay=vc4-kms-v3d sort #dtoverlay=vc4-kms-v3d-re.
    2. Indítsa újra.
  2. Meg kell jelennie az asztalnak vagy a bejelentkezési konzolnak.
    1. A terminál használatával másolja át az EDID-t a csatlakoztatott megjelenítőeszközről a file a következő paranccsal:
  • tvservice -d myedid.dat sudo mv myedid.dat /lib/firmware/

Segítségével a file-alapú EDID a megjelenítőeszköz lekérdezése helyett Szerkessze a /boot/cmdline.txt fájlt, ügyelve arra, hogy a szerkesztőt a sudo használatával futtassa, és adja hozzá a következőket a kernel parancssorához: drm.edid_firmware=myedid.dat Alkalmazhatja az EDID-t egy adott HDMI-portot az alábbiak szerint: drm.edid_firmware=HDMI-A-1:myedid.dat Ha szükséges, indítsa újra a KMS módot a következőképpen:

  1. Szerkessze a config.txt fájlt a rendszerindító partíción, ügyelve arra, hogy a szerkesztőt sudo használatával futtassa, és módosítsa a #dtoverlay=vc4-kms-v3d sort a dtoverlay=vc4-kms-v3d értékre.
  2. Indítsa újra.

JEGYZET
Ha használ a file-alapú EDID, de továbbra is problémái vannak a hotplug-gal, a hotplug észlelését kényszerítheti a következő hozzáadásával a kernel parancssorába: video=HDMI-A-1:D.

Dokumentumok / Források

RaspberryPi KMS HDMI kimeneti grafikus illesztőprogram [pdf] Felhasználói kézikönyv
KMS, HDMI kimeneti grafikus illesztőprogram, KMS HDMI kimenet, grafikus illesztőprogram, KMS HDMI kimeneti grafikus illesztőprogram, illesztőprogram

Hivatkozások

Hagyj megjegyzést

E-mail címét nem tesszük közzé. A kötelező mezők meg vannak jelölve *