RaspberryPi KMS HDMI izlazni grafički upravljački program
Znak štampara
2020-2023 Raspberry Pi Ltd (bivši Raspberry Pi (Trading) Ltd.) Ova je dokumentacija licencirana licencom Creative Commons Attribution-NoDerivatives 4.0 International (CC BY-ND 4.0). datum izrade: 2023-02-10 verzija izrade: githash: c65fe9c-clean
Pravna obavijest o odricanju od odgovornosti
TEHNIČKE PODATKE I PODATKE O POUZDANOSTI ZA RASPBERRY PI PROIZVODE (UKLJUČUJUĆI PODATKOVNE TABLICE) POVREMENO MODIFICIRANE (“RESURSI”) PRUŽA RASPBERRY PI LTD (“RPL”) “KAKVI JESU” I SVA IZRIČITA ILI PODRAZUMEVANA JAMSTVA, UKLJUČUJUĆI, ALI NE OGRANIČENO TO, IMPLICIRANA JAMSTVA O PRODAJI I PRIKLADNOSTI ZA ODREĐENU NAMJENU SE ODRICU. U MAKSIMALNOJ MJERI DOPUŠTENOJ PRIMJENJIVIM ZAKONOM, RPL NI U KOJEM SLUČAJU NEĆE BITI ODGOVORAN ZA BILO KAKVU IZRAVNU, NEIZRAVNU, SLUČAJNU, POSEBNU, EKZEMPLARNU ILI POSLJEDIČNU ŠTETU (UKLJUČUJUĆI, ALI NE OGRANIČENO NA, NABAVU ZAMJENSKE ROBE ILI SE USLUGE; GUBITAK KORIŠTENJA, PODATAKA , ILI DOBITI; ILI PREKIDA U POSLOVANJU) KAKO BILO UZROKOVANO I NA BILO KOJOJ TEORIJI ODGOVORNOSTI, BILO U UGOVORU, STRIKTNOJ ODGOVORNOSTI ILI DELIKTU (UKLJUČUJUĆI NEMAR ILI NA DRUGI NAČIN) KOJI NA BILO KOJI NAČIN PROIZILAZE KORIŠTENJEM RESURSA, ČAK I AKO JE UPOZORENO O MOGUĆNOSTI. ITY TAKVE ŠTETE. RPL pridržava pravo na bilo kakva poboljšanja, poboljšanja, ispravke ili bilo koje druge izmjene RESURSA ili bilo kojih proizvoda opisanih u njima u bilo koje vrijeme i bez daljnje obavijesti. RESURSI su namijenjeni vještim korisnicima s odgovarajućom razinom znanja o dizajnu. Korisnici su isključivo odgovorni za svoj odabir i korištenje RESURSA i svaku primjenu proizvoda opisanih u njima. Korisnik je suglasan nadoknaditi štetu i osloboditi RPL od svih obveza, troškova, šteta ili drugih gubitaka koji proizlaze iz njihove upotrebe RESURSA. RPL korisnicima daje dopuštenje za korištenje RESURSA isključivo u kombinaciji s Raspberry Pi proizvodima. Sva druga uporaba RESURSA je zabranjena. Ne dodjeljuje se licenca za bilo koji drugi RPL ili druga prava intelektualnog vlasništva treće strane. VISOKO RIZIČNE AKTIVNOSTI. Proizvodi Raspberry Pi nisu dizajnirani, proizvedeni niti namijenjeni za upotrebu u opasnim okruženjima koja zahtijevaju sigurnosne performanse, kao što je rad nuklearnih postrojenja, zrakoplovnih navigacijskih ili komunikacijskih sustava, kontrola zračnog prometa, sustavi naoružanja ili aplikacije kritične za sigurnost (uključujući održavanje života sustavi i drugi medicinski uređaji), kod kojih kvar proizvoda može dovesti izravno do smrti, osobne ozljede ili ozbiljne fizičke ili ekološke štete ("Aktivnosti visokog rizika"). RPL se izričito odriče bilo kakvog izričitog ili implicitnog jamstva prikladnosti za visokorizične aktivnosti i ne prihvaća nikakvu odgovornost za korištenje ili uključivanje Raspberry Pi proizvoda u visokorizične aktivnosti. Raspberry Pi proizvodi podliježu Standardnim uvjetima RPL-a. RPL-ovo pružanje RESURSA ne proširuje niti na drugi način modificira RPL-ove Standardne uvjete uključujući, ali ne ograničavajući se na odricanje od odgovornosti i jamstva izražena u njima.
Povijest verzija dokumenta
Opseg dokumenta
Ovaj se dokument odnosi na sljedeće Raspberry Pi proizvode
Uvod
S uvođenjem KMS (Kernel Mode Setting) grafičkog upravljačkog programa, Raspberry Pi Ltd odmiče se od naslijeđene kontrole firmvera videoizlaznog sustava prema grafičkom sustavu otvorenog koda. Međutim, to je došlo sa svojim nizom izazova. Ovaj je dokument namijenjen pomoći kod svih problema koji bi se mogli pojaviti prilikom prelaska na novi sustav. Ova bijela knjiga pretpostavlja da Raspberry Pi koristi Raspberry Pi OS i da je u potpunosti ažuriran s najnovijim firmwareom i kernelima.
Terminologija
DRM-ovi: Direct Rendering Manager, podsustav Linux kernela koji se koristi za komunikaciju s jedinicama za obradu grafike (GPU). Koristi se u suradnji s FKMS i KMS.
DVI: Prethodnik HDMI-ja, ali bez audio mogućnosti. Dostupni su HDMI na DVI kabeli i adapteri za povezivanje Raspberry Pi uređaja sa zaslonom opremljenim DVI-jem.
EDID: Identifikacijski podaci proširenog prikaza. Format metapodataka za uređaje za prikaz koji opisuju njihove mogućnosti video izvoru. Struktura EDID podataka uključuje naziv proizvođača i serijski broj, vrstu proizvoda, fizičku veličinu zaslona i vremena podržana na zaslonu, zajedno s nekim manje korisnim podacima. Neki zasloni mogu imati neispravne EDID blokove, što može uzrokovati probleme ako sustav zaslona ne postupa s tim nedostacima.
FKMS (vc4-fkms-v3d): Lažna postavka kernel moda. Iako firmver i dalje kontrolira hardver niske razine (nprample, priključci za multimedijsko sučelje visoke razlučivosti (HDMI), serijsko sučelje za prikaz (DSI), itd.), standardne Linux biblioteke koriste se u samoj jezgri. FKMS se prema zadanim postavkama koristi u Busteru, ali je sada zastario u korist KMS-a u Bullseyeu.
HDMI: High-Definition Multimedia Interface je vlasničko audio/video sučelje za prijenos nekomprimiranih video podataka i komprimiranih ili nekomprimiranih digitalnih audio podataka.
HPD: Hotplug otkrivanje. Fizička žica koju povezani uređaj za prikaz potvrđuje da je prisutna.
KMS: Postavka načina rada jezgre; vidjeti https://www.kernel.org/doc/html/latest/gpu/drm-kms.html za više detalja. Na Raspberry Piju, vc4-kms-v3d je upravljački program koji implementira KMS i često se naziva "KMS upravljački program". Naslijeđeni grafički stog: Grafički stog koji je u potpunosti implementiran u VideoCore firmware blob koji je izložen Linux međuspremniku okvira. Naslijeđeni grafički skup donedavno se koristio u većini uređaja Raspberry Pi Ltd; sada ga postupno zamjenjuje (F)KMS/DRM.
HDMI sustav i upravljački programi za grafiku
Raspberry Pi uređaji koriste HDMI standard, koji je vrlo čest na modernim LCD monitorima i televizorima, za video izlaz. Raspberry Pi 3 (uključujući Raspberry Pi 3B+) i stariji uređaji imaju jedan HDMI priključak, koji je sposoban za 1920 × 1200 @60Hz izlaz koristeći HDMI konektor pune veličine. Raspberry Pi 4 ima dva mikro HDMI priključka i sposoban je za 4K izlaz na oba priključka. Ovisno o postavkama, HDMI 0 priključak na Raspberry Pi 4 može emitirati do 4kp60, ali kada koristite dva 4K izlazna uređaja ograničeni ste na p30 na oba uređaja. Stog grafičkog softvera, bez obzira na verziju, odgovoran je za ispitivanje priključenih HDMI uređaja u pogledu njihovih svojstava i odgovarajuće postavljanje HDMI sustava. Legacy i FKMS skupovi koriste firmware u VideoCore grafičkom procesoru za provjeru prisutnosti i svojstava HDMI-ja. Nasuprot tome, KMS koristi implementaciju na strani ARM-a potpuno otvorenog koda. To znači da su baze koda za dva sustava potpuno različite, au nekim okolnostima to može rezultirati različitim ponašanjem između dva pristupa. HDMI i DVI uređaji identificiraju se izvornom uređaju pomoću dijela metapodataka koji se zove EDID blok. Izvorni uređaj to očitava s uređaja za prikaz preko I2C veze, a to je krajnjem korisniku potpuno transparentno jer to radi grafički stog. EDID blok sadrži mnogo informacija, ali prvenstveno se koristi za određivanje razlučivosti koje zaslon podržava, tako da se Raspberry Pi može postaviti za izlaz odgovarajuće rezolucije.
Kako se postupa s HDMI-jem tijekom pokretanja
Kada se prvi put uključi, Raspberry Pi prolazi kroz nekoliko stages, poznat kao boot stages:
- Prvi-stage, pokretački program temeljen na ROM-u pokreće VideoCore GPU.
- Drugi-stage bootloader (ovo je bootcode.bin na SD kartici na uređajima prije Raspberry Pi 4, i u SPI EEPROM na Raspberry Pi 4):
- Na Raspberry Pi 4, drugi-stagBootloader će pokrenuti HDMI sustav, ispitati zaslon za moguće načine rada, zatim postaviti zaslon na odgovarajući način. U ovom trenutku zaslon se koristi za pružanje osnovnih dijagnostičkih podataka.
- Dijagnostički zaslon bootloadera (od 07. prosinca 2022. nadalje) prikazat će status svih priključenih zaslona (je li prisutan Hotplug Detect (HPD) i je li EDID blok vraćen sa zaslona).
- VideoCore firmware (start.elf) se učitava i pokreće. Ovo će preuzeti kontrolu nad HDMI sustavom, očitati EDID blok sa svih priključenih zaslona i prikazati dugin zaslon na tim zaslonima.
- Linux kernel se pokreće
- Tijekom pokretanja kernela, KMS će preuzeti kontrolu nad HDMI sustavom iz firmvera. Još jednom se EDID blok čita sa svih priključenih zaslona, a te se informacije koriste za postavljanje Linux konzole i radne površine.
Mogući problemi i simptomi
Najčešći simptom neuspjeha koji se javlja pri prelasku na KMS je početno dobro pokretanje, sa zaslonom programa za podizanje sustava, a zatim se pojavljuje ekran u obliku duge, nakon čega nakon nekoliko sekundi zaslon postaje crn i više se ne uključuje. Točka u kojoj zaslon postaje crn zapravo je točka tijekom procesa dizanja kernela kada KMS upravljački program preuzima upravljanje zaslonom iz firmvera. Raspberry Pi trenutno radi u svim aspektima osim za HDMI izlaz, pa ako je SSH omogućen, trebali biste se moći prijaviti na uređaj tim putem. Zeleni LED za pristup SD kartici obično će povremeno treperiti. Također je moguće da uopće nećete vidjeti HDMI izlaz; nema prikaza bootloadera i nema zaslona u duginim bojama. To se obično može pripisati kvaru hardvera.
Dijagnosticiranje kvara
Uopće nema HDMI izlaza
Moguće je da se uređaj uopće nije pokrenuo, ali to je izvan nadležnosti ove bijele knjige. Pod pretpostavkom da je uočeno ponašanje problem sa zaslonom, nedostatak HDMI izlaza tijekom bilo kojeg dijela procesa dizanja obično je posljedica hardverske greške. Postoji nekoliko mogućih opcija:
- Neispravan HDMI kabel
- Pokušajte s novim kabelom. Neki kabeli, osobito vrlo jeftini, možda neće sadržavati sve potrebne komunikacijske linije (npr. hotplug) za Raspberry Pi za uspješno otkrivanje zaslona.
- Neispravan HDMI priključak na Raspberry Pi
- Ako koristite Raspberry Pi 4, pokušajte s drugim HDMI priključkom.
- Neispravan HDMI priključak na monitoru
- Ponekad se HDMI priključak na monitoru ili TV-u može istrošiti. Pokušajte s drugim priključkom ako ga uređaj ima.
- Rijetko, uređaj za prikaz može pružiti EDID podatke samo kada je uključen ili kada je odabran ispravan priključak. Za provjeru provjerite je li uređaj uključen i je li odabran ispravan ulazni priključak.
- Uređaj za prikaz ne potvrđuje liniju otkrivanja hotpluga
Početni izlaz, zatim zaslon postaje crn
Ako se zaslon pojavi, ali se zatim ugasi tijekom pokretanja Linux kernela, postoji niz mogućih uzroka, a oni su obično povezani s problemom čitanja EDID-a s uređaja za prikaz. Kao što se može vidjeti iz gornjeg odjeljka koji se bavi redoslijedom pokretanja, EDID se čita u nekoliko različitih točaka tijekom procesa pokretanja, a svako od ovih čitanja obavlja različiti dio softvera. Završno čitanje, kada KMS preuzme, provodi nepromijenjeni uzvodni kod Linux kernela, a on ne obrađuje neispravne EDID formate tako dobro kao raniji firmware softver. Zbog toga zaslon može prestati ispravno raditi kada KMS preuzme kontrolu. Postoji nekoliko načina da potvrdite da KMS ne uspijeva pročitati EDID, a dva od njih su sljedeća.
Provjerite dijagnostički zaslon bootloadera (samo Raspberry Pi 4)
BILJEŠKA
Dijagnostika pokretačkog programa zahtijeva noviji pokretački program. Možete nadograditi na najnoviju verziju pomoću ovih uputa: https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#updating-the-bootloader Izvadite SD karticu i ponovno pokrenite Raspberry Pi. Pritisnite ESC na zaslonu za instaliranje OS-a i dijagnostički zaslon bi se trebao pojaviti na uređaju za prikaz. Na zaslonu bi trebao postojati redak koji počinje s display: — nprampono:
- prikaz: DISP0: HDMI HPD=1 EDID=ok #2 DISP1: HPD=0 EDID=ništa #0
Ovaj izlaz s Raspberry Pi 4 pokazuje da je sustav detektirao HDMI zaslon na HDMI priključku 0, potvrđeno je otkrivanje hotpluga i EDID je očitan u redu. Ništa nije pronađeno na HDMI priključku 1.
Provjerite je li KMS sustav otkrio EDID
Da biste to provjerili, morat ćete se prijaviti na Raspberry Pi uređaj preko SSH-a s drugog računala. SSH se može omogućiti prilikom stvaranja slike SD kartice s Raspberry Pi Imager, korištenjem opcija naprednih postavki. Omogućavanje SSH-a na SD kartici koja je već snimljena malo je kompliciranije: morat ćete koristiti drugo računalo za dodavanje file pod nazivom ssh na boot particiju. Zamijenite SD karticu u originalnom Raspberry Pi i uključite ga. Ovo bi trebalo omogućiti SSH, s IP adresom koju dodjeljuje DHCP. Nakon što se prijavite, upišite sljedeće u odzivnik terminala za prikaz sadržaja bilo kojeg otkrivenog EDID-a (možda ćete morati promijeniti HDMI-A-1 u HDMI-A-2 ovisno o tome na koji je HDMI priključak na Raspberry Pi uređaju za prikaz spojen do): cat /sys/class/drm/card?-HDMI-A-1/edid Ako nema mapa pod nazivom card?-HDMI-A-1 ili slično, tada se vjerojatno ne može pročitati EDID sa zaslona uređaj.
BILJEŠKA
U slučaju da je EDID uspješno očitan, postoji korisna virtualna file u istoj mapi, koja se zove modovi, koja kada se prikaže prikazuje sve moguće načine za koje EDID tvrdi da ih uređaj podržava.
Ublažavanja
Hotplug detekcija neuspjeha Ako ni firmware ni KMS ne uspiju pronaći priključeni monitor, to bi mogla biti greška hotplug detekcije — tj. Raspberry Pi ne zna da je uređaj priključen, pa ne provjerava EDID. To može biti uzrokovano lošim kabelom ili uređajem za prikaz koji ne postavlja ispravno hotplug. Možete prisilno otkriti hotplug izmjenom naredbenog retka jezgre file (cmdline.txt) koji je pohranjen na particiji za pokretanje Raspberry Pi OS SD kartice. Možete urediti ovo file na drugom sustavu, koristeći uređivač koji želite. Dodajte sljedeće na kraj cmdline.txt file: video=HDMI-A-1:1280×720@60D Ako koristite drugi HDMI priključak, zamijenite HDMI-A-1 s HDMI-A-2. Također možete odrediti drugu razlučivost i broj sličica u sekundi, ali svakako odaberite one koje uređaj za prikaz podržava.
BILJEŠKA
Dokumentaciju o postavkama naredbenog retka jezgre za video možete pronaći ovdje: https://www.kernel.org/doc/Documentation/fb/modedb.txt
UPOZORENJE
Stariji grafički skupovi podržavali su upotrebu unosa config.txt za postavljanje otkrivanja hotpluga, ali u vrijeme pisanja to ne radi s KMS-om. Možda će biti podržan u budućim izdanjima firmvera. Unos u config.txt je hdmi_force_hotplug, a možete navesti određeni HDMI priključak na koji se hotplug primjenjuje pomoću hdmi_force_hotplug:0=1 ili hdmi_force_hotplug:1=1. Imajte na umu da se nomenklatura za KMS odnosi na HDMI priključke kao 1 i 2, dok Raspberry Pi koristi 0 i 1.
EDID problemi
Manji dio uređaja za prikaz ne može vratiti EDID ako su isključeni ili kada je odabran pogrešan AV ulaz. To može biti problem kada su Raspberry Pi i zaslonski uređaji na istoj razvodnici, a Raspberry Pi uređaj pokreće se brže od zaslona. Kod ovakvih uređaja možda ćete morati ručno unijeti EDID. Što je još neobičnije, neki uređaji za prikaz imaju EDID blokove koji su loše formatirani i ne može ih analizirati KMS EDID sustav. U tim okolnostima, možda je moguće pročitati EDID s uređaja slične rezolucije i koristiti ga. U svakom slučaju, sljedeće upute navode kako pročitati EDID s uređaja za prikaz i konfigurirati KMS da ga koristi, umjesto da KMS pokušava izravno ispitati uređaj.
Kopiranje EDID-a u a file
Stvaranje a file sadržavanje EDID metapodataka od nule obično nije izvedivo, a korištenje postojećeg mnogo je lakše. Općenito je moguće dobiti EDID s uređaja za prikaz i pohraniti ga na SD karticu Raspberry Pija tako da ga KMS može koristiti umjesto dobivanja EDID-a s uređaja za prikaz. Najlakša opcija ovdje je osigurati da je uređaj za prikaz pokrenut i radi i na ispravnom AV ulazu, te da je Raspberry Pi ispravno pokrenuo HDMI sustav. S terminala sada možete kopirati EDID u a file sljedećom naredbom: sudo cp /sys/class/drm/card?-HDMI-A-1/edid /lib/firmware/myedid.dat Ako iz nekog razloga EDID nije prisutan, možete pokrenuti uređaj u ne - KMS način rada koji se uspije pokrenuti na radnoj površini ili konzoli, zatim kopirajte EDID koji će firmware (nadamo se) uspješno pročitati na file.
- Pokrenite stari grafički način rada.
- Uredite config.txt na particiji za pokretanje, pazeći da pokrenete uređivač koristeći sudo i promijenite redak koji kaže dtoverlay=vc4-kms-v3d u #dtoverlay=vc4-kms-v3d.
- Ponovno pokretanje.
- Sada bi se trebala pojaviti radna površina ili konzola za prijavu.
- Pomoću terminala kopirajte EDID s priključenog uređaja za prikaz na a file sa sljedećom naredbom:
- tvservice -d myedid.dat sudo mv myedid.dat /lib/firmware/
Korištenje a file-based EDID umjesto ispitivanja uređaja za prikaz Uredite /boot/cmdline.txt, pazeći da pokrenete uređivač koristeći sudo i dodajte sljedeće u naredbeni redak kernela: drm.edid_firmware=myedid.dat Možete primijeniti EDID na određeni HDMI priključak na sljedeći način: drm.edid_firmware=HDMI-A-1:myedid.dat Ako je potrebno, ponovno pokrenite KMS način rada na sljedeći način:
- Uredite config.txt na particiji za pokretanje, pazeći da pokrenete uređivač koristeći sudo i promijenite redak koji kaže #dtoverlay=vc4-kms-v3d u dtoverlay=vc4-kms-v3d.
- Ponovno pokretanje.
BILJEŠKA
Ako koristite a file-temeljen EDID, ali i dalje imate problema s hotplugom, možete prisiliti otkrivanje hotpluga dodavanjem sljedećeg u naredbeni redak kernela: video=HDMI-A-1:D.
Dokumenti / Resursi
![]() |
RaspberryPi KMS HDMI izlazni grafički upravljački program [pdf] Korisnički priručnik KMS, HDMI izlazni grafički upravljački program, KMS HDMI izlazni grafički upravljački program, KMS HDMI izlazni grafički upravljački program, upravljački program |