RaspberryPi KMS HDMI izlazni grafički drajver
Kolofon
2020-2023 Raspberry Pi Ltd (ranije Raspberry Pi (Trading) Ltd.) Ova dokumentacija je licencirana pod licencom Creative Commons Attribution-NoDerivatives 4.0 International (CC BY-ND 4.0). build-date: 2023-02-10 build-version: githash: c65fe9c-clean
Pravna obavijest o odricanju od odgovornosti
TEHNIČKE PODATKE I POUZDANOST ZA PROIZVODE RASPBERRY PI (UKLJUČUJUĆI LISTE PODATAKA) KOJE SE S VREMENA NA VREME MODIFIKUJU (“RESURSI”) OBEZBEĐUJE RASPBERRY PI LTD (“RPL”) “KAKO JESU” I BILO KOJI IZRIČITO, NJ. DA SE IMPLICIRANE GARANCIJE O PRODAJNOSTI I PRIKLADNOSTI ZA ODREĐENU NAMJENU ODRIČE. U MAKSIMALNOJ MERI KOJI JE DOZVOLJENO VAŽEĆIM ZAKONOM NI U KOJEM SLUČAJU RPL NEĆE BITI ODGOVORAN ZA BILO KAKVE DIREKTNE, INDIREKTNE, SLUČAJNE, POSEBNE, PRIMJERNE ILI POSLJEDIČNE ŠTETE (UKLJUČUJUĆI, KOJI SE ODGOVARAJU, ALI G. GUBITAK KORIŠĆENJA, PODATAKA , ILI DOBITAKA; ILI PREKIDA POSLOVANJA) KOJI BI BILO UZROK I NA BILO KOJOJ TEORIJI ODGOVORNOSTI, BILO U UGOVORU, STROGOJ ODGOVORNOSTI ILI DELATNOM DELU (UKLJUČUJUĆI NEMAR ILI NA DRUGI NAČIN) KOJI NASTANE NA BILO KOJI NAČIN BILO KOJI IZ NJEGA ILITY TAKVE ŠTETE. RPL zadržava pravo da izvrši bilo kakva poboljšanja, poboljšanja, ispravke ili bilo koje druge modifikacije RESURSA ili bilo kojih proizvoda opisanih u njima u bilo koje vrijeme i bez daljnje najave. RESURSI su namijenjeni kvalifikovanim korisnicima sa odgovarajućim nivoima znanja o dizajnu. Korisnici su isključivo odgovorni za svoj odabir i korištenje RESURSA i svaku primjenu proizvoda opisanih u njima. Korisnik se slaže da će obeštetiti i držati RPL bezopasnim od svih obaveza, troškova, šteta ili drugih gubitaka koji proizlaze iz njihovog korištenja RESOURCES.RPL daje korisnicima dozvolu da koriste RESURSE isključivo u vezi sa Raspberry Pi proizvodima. Svaka druga upotreba RESURSA je zabranjena. Ne daje se licenca bilo kojem drugom RPL-u ili drugom pravu intelektualne svojine treće strane. AKTIVNOSTI VISOKOG RIZIKA. Raspberry Pi proizvodi nisu dizajnirani, proizvedeni ili namijenjeni za upotrebu u opasnim okruženjima koja zahtijevaju sigurne performanse, kao što su rad nuklearnih postrojenja, navigacijski ili komunikacijski sistemi aviona, kontrola zračnog prometa, sistemi oružja ili sigurnosno kritične aplikacije (uključujući održavanje života sistemi i drugi medicinski uređaji), kod kojih bi kvar proizvoda mogao direktno dovesti do smrti, ozljeda ili teške fizičke ili ekološke štete („Aktivnosti visokog rizika“). RPL se izričito odriče bilo kakve eksplicitne ili implicirane garancije o prikladnosti za aktivnosti visokog rizika i ne prihvata nikakvu odgovornost za upotrebu ili uključivanje Raspberry Pi proizvoda u visokorizične aktivnosti. Raspberry Pi proizvodi su podložni standardnim uslovima RPL-a. RPL-ova odredba RESURSA ne proširuje niti na drugi način mijenja RPL-ove Standardne uslove uključujući, ali ne ograničavajući se na odricanja odgovornosti i garancije izražene u njima.
Istorija verzija dokumenta
Obim dokumenta
Ovaj dokument se odnosi na sledeće Raspberry Pi proizvode
Uvod
Sa uvođenjem grafičkog drajvera KMS (Kernel Mode Setting), Raspberry Pi Ltd se udaljava od zastarjele kontrole firmvera za video izlazni sistem i ka grafičkom sistemu otvorenog koda. Međutim, ovo je dovelo sa svojim skupom izazova. Ovaj dokument ima za cilj da pomogne u rješavanju problema koji se mogu pojaviti prilikom prelaska na novi sistem. Ova bela knjiga pretpostavlja da Raspberry Pi koristi Raspberry Pi OS i da je u potpunosti ažuriran sa najnovijim firmverom i kernelima.
Terminologija
DRM: Direct Rendering Manager, podsistem Linux kernela koji se koristi za komunikaciju sa grafičkim procesorskim jedinicama (GPU). Koristi se u saradnji sa FKMS i KMS.
DVI: Prethodnik HDMI, ali bez audio mogućnosti. HDMI na DVI kablovi i adapteri su dostupni za povezivanje Raspberry Pi uređaja na ekran opremljen DVI.
EDID: Identifikacijski podaci proširenog prikaza. Format metapodataka za uređaje za prikaz koji opisuju svoje mogućnosti video izvoru. Struktura podataka EDID uključuje naziv proizvođača i serijski broj, tip proizvoda, fizičku veličinu ekrana i vremena koje ekran podržava, zajedno s nekim manje korisnim podacima. Neki displeji mogu imati neispravne EDID blokove, što može uzrokovati probleme ako te defekte ne rješava sistem prikaza.
FKMS (vc4-fkms-v3d): Lažna postavka načina rada kernela. Dok firmver još uvijek kontrolira hardver niskog nivoa (nprampU samom kernelu koriste se portovi High-Definition Multimedia Interface (HDMI), Display Serial Interface (DSI), itd.), standardne Linux biblioteke. FKMS se podrazumevano koristi u Busteru, ali je sada zastareo u korist KMS-a u Bullseye.
HDMI: Multimedijalni interfejs visoke definicije je vlasnički audio/video interfejs za prenos nekomprimovanih video podataka i komprimovanih ili nekomprimiranih digitalnih audio podataka.
HPD: Hotplug detekcija. Prisutna je fizička žica koja je potvrđena od strane povezanog uređaja za prikaz da bi je prikazala.
KMS: Podešavanje kernel moda; vidi https://www.kernel.org/doc/html/latest/gpu/drm-kms.html za više detalja. Na Raspberry Pi-ju, vc4-kms-v3d je drajver koji implementira KMS i često se naziva “KMS drajver”. Naslijeđeni grafički stog: Grafički stog u potpunosti implementiran u VideoCore firmver blob izložen Linux drajveru okvira bafera. Naslijeđeni grafički stek se do nedavno koristio u većini Raspberry Pi Ltd uređaja; sada se postepeno zamjenjuje (F)KMS/DRM.
HDMI sistem i grafički drajveri
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 raniji uređaji imaju jedan HDMI port, koji je sposoban za izlaz od 1920 × 1200 @60Hz pomoću HDMI konektora pune veličine. Raspberry Pi 4 ima dva mikro HDMI porta i sposoban je za 4K izlaz na oba porta. U zavisnosti od podešavanja, HDMI 0 port na Raspberry Pi 4 je sposoban za do 4kp60, ali kada koristite dva 4K izlazna uređaja ograničeni ste na p30 na oba uređaja. Grafički softverski stog, bez obzira na verziju, odgovoran je za ispitivanje njihovih svojstava priključenih HDMI uređaja i odgovarajuće podešavanje HDMI sistema. Naslijeđeni i FKMS stekovi koriste firmver u VideoCore grafičkom procesoru za provjeru prisutnosti i svojstava HDMI-ja. Nasuprot tome, KMS koristi potpuno otvoreni kod, implementaciju na strani ARM-a. To znači da su osnove koda za dva sistema potpuno različite, au nekim okolnostima to može rezultirati različitim ponašanjem između dva pristupa. HDMI i DVI uređaji se identifikuju sa izvornim uređajem koristeći komad metapodataka koji se naziva EDID blok. Ovo čita izvorni uređaj sa uređaja za prikaz preko I2C veze, i to je potpuno transparentno za krajnjeg korisnika jer to radi grafički stog. EDID blok sadrži mnogo informacija, ali se prvenstveno koristi za određivanje koje rezolucije ekran podržava, tako da se Raspberry Pi može podesiti da daje odgovarajuću rezoluciju.
Kako se postupa sa HDMI-om tokom pokretanja
Kada se prvi put uključi, Raspberry Pi prolazi kroz nekoliko stages, poznat kao boot stages:
- Prvi-stage, ROM-bazirani bootloader pokreće VideoCore GPU.
- Second-stage bootloader (ovo je bootcode.bin na SD kartici na uređajima prije Raspberry Pi 4, iu SPI EEPROM-u na Raspberry Pi 4):
- Na Raspberry Pi 4, second-stagBootloader će pokrenuti HDMI sistem, ispitati ekran za moguće modove, a zatim će podesiti ekran na odgovarajući način. U ovom trenutku ekran se koristi za pružanje osnovnih dijagnostičkih podataka.
- Dijagnostički displej pokretača (od 07. decembra 2022. nadalje) će prikazati status svih priključenih ekrana (da li je prisutan Hotplug Detect (HPD) i da li je EDID blok vraćen sa ekrana).
- VideoCore firmver (start.elf) je učitan i pokrenut. Ovo će preuzeti kontrolu nad HDMI sistemom, čitati EDID blok sa svih priključenih displeja i prikazati dugini ekran na tim ekranima.
- Linux kernel se pokreće
- Tokom pokretanja kernela, KMS će preuzeti kontrolu nad HDMI sistemom iz firmvera. Još jednom se EDID blok čita sa bilo kojeg priključenog ekrana, a ove informacije se koriste za postavljanje Linux konzole i radne površine.
Mogući problemi i simptomi
Najčešći simptom kvara koji se javlja prilikom prelaska na KMS je u početku dobro pokretanje, sa ekranom pokretača, a zatim se pojavljuje dugini ekran, nakon čega nakon nekoliko sekundi ekran postaje crn i više se ne uključuje. Tačka u kojoj ekran postaje crn je u stvari tačka tokom procesa pokretanja kernela kada KMS drajver preuzima pokretanje ekrana iz firmvera. Raspberry Pi trenutno radi u svim aspektima osim na HDMI izlazu, tako da ako je SSH omogućen, trebali biste se moći prijaviti na uređaj tom rutom. Zelena LED dioda za pristup SD kartici obično povremeno treperi. Takođe je moguće da nećete videti nikakav HDMI izlaz; nema displeja bootloadera, i nema ekrana duge boje. Ovo se obično može pripisati hardverskoj grešci.
Dijagnostikovanje kvara
Uopšte nema HDMI izlaza
Moguće je da se uređaj uopće nije pokrenuo, ali to je izvan djelokruga ovog bijelog papira. Pod pretpostavkom da je uočeno ponašanje problem sa ekranom, nedostatak HDMI izlaza tokom bilo kog dela procesa pokretanja obično je posledica hardverske greške. Postoji nekoliko mogućih opcija:
- Neispravan HDMI kabl
- Probajte novi kabl. Neki kablovi, posebno oni veoma jeftini, možda ne sadrže sve potrebne komunikacione linije (npr. hotplug) da Raspberry Pi uspešno detektuje ekran.
- Neispravan HDMI port na Raspberry Pi
- Ako koristite Raspberry Pi 4, isprobajte drugi HDMI port.
- Neispravan HDMI port na monitoru
- Ponekad se HDMI port na monitoru ili TV-u može istrošiti. Pokušajte s drugim portom ako ga uređaj ima.
- U rijetkim slučajevima, uređaj za prikaz može pružiti EDID podatke samo kada je uključen ili kada je odabran ispravan port. Da biste provjerili, uvjerite se da je uređaj uključen i da je odabran ispravan ulazni port.
- Uređaj za prikaz ne potvrđuje liniju za otkrivanje vrućeg priključka
Početni izlaz, zatim ekran postaje crn
Ako se ekran pojavi, ali se zatim ugasi tokom pokretanja Linux kernela, postoji niz mogućih uzroka, a oni su obično povezani s problemom čitanja EDID-a sa uređaja za prikaz. Kao što se može vidjeti iz gornjeg odjeljka koji se bavi redoslijedom pokretanja, EDID se čita u više različitih tačaka tokom procesa pokretanja, a svako od ovih čitanja se vrši pomoću drugog softvera. Završno čitanje, kada KMS preuzme vlast, obavlja nepromijenjeni uzvodni Linux kernel kod, i to ne obrađuje neispravne EDID formate kao raniji softver firmvera. Ovo je razlog zašto ekran može prestati da radi ispravno kada KMS preuzme. Postoji nekoliko načina da potvrdite da li KMS ne uspijeva pročitati EDID, a dva od njih su sljedeća.
Provjerite dijagnostički ekran bootloadera (samo Raspberry Pi 4)
NAPOMENA
Dijagnostika pokretačkog programa zahtijeva noviji bootloader. Možete nadograditi na najnoviju verziju koristeći ove upute: https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#updating-the-bootloader Uklonite SD karticu i ponovo pokrenite Raspberry Pi. Pritisnite ESC na ekranu Instaliraj OS i dijagnostički ekran bi se trebao pojaviti na uređaju za prikaz. Na displeju treba da postoji linija koja počinje sa displej: — nprample:
- prikaz: DISP0: HDMI HPD=1 EDID=ok #2 DISP1: HPD=0 EDID=nema #0
Ovaj izlaz iz Raspberry Pi 4 pokazuje da je sistem detektovao HDMI ekran na HDMI portu 0, otkrivanje hotplug-a je potvrđeno i EDID je pročitan OK. Ništa nije pronađeno na HDMI portu 1.
Provjerite je li KMS sistem otkrio EDID
Da biste to provjerili, morat ćete se prijaviti na Raspberry Pi uređaj preko SSH-a sa drugog računara. SSH se može omogućiti kada kreirate sliku SD kartice pomoću Raspberry Pi Imager-a, koristeći opcije naprednih postavki. Omogućavanje SSH-a na SD kartici koja je već snimljena je malo složenije: morat ćete koristiti drugi računar da dodate file pod nazivom ssh na particiju za pokretanje. Zamijenite SD karticu u originalni Raspberry Pi i uključite je. Ovo bi trebalo da omogući SSH, sa IP adresom koju dodeljuje DHCP. Jednom kada se prijavite, upišite sljedeće na terminalsku promptu da prikažete sadržaj bilo kojeg otkrivenog EDID-a (možda ćete morati promijeniti HDMI-A-1 u HDMI-A-2 ovisno o tome koji HDMI priključak na Raspberry Pi je uređaj za prikaz povezan do): cat /sys/class/drm/card?-HDMI-A-1/edid Ako nema foldera pod nazivom card?-HDMI-A-1 ili slično, onda je vjerovatno da se EDID ne može pročitati sa ekrana uređaj.
NAPOMENA
U slučaju kada je EDID uspješno pročitan, postoji korisna virtualna file u istom folderu, koji se zove režimi, koji kada se prikaže prikazuje sve moguće režime za koje EDID tvrdi da uređaj podržava.
Ublažavanja
Greška u otkrivanju Hotplug-a Ako i firmver i KMS ne uspiju pronaći priključeni monitor, to može biti greška u otkrivanju hotplug-a - tj. Raspberry Pi ne zna da je uređaj priključen, tako da ne provjerava EDID. Ovo može biti uzrokovano lošim kablom ili uređajem za prikaz koji ne postavlja ispravno hotplug. Možete prisilno otkriti hotplug promjenom komandne linije kernela file (cmdline.txt) koji je pohranjen na particiji za pokretanje Raspberry Pi OS SD kartice. Možete urediti ovo file na drugom sistemu, koristeći bilo koji uređivač koji želite. Dodajte sljedeće na kraj cmdline.txt file: video=HDMI-A-1:1280×720@60D Ako koristite drugi HDMI port, zamenite HDMI-A-1 sa HDMI-A-2. Također možete odrediti drugačiju rezoluciju i brzinu kadrova, ali pazite da odaberete one koje uređaj za prikaz podržava.
NAPOMENA
Dokumentaciju o postavkama komandne linije kernela za video možete pronaći ovdje: https://www.kernel.org/doc/Documentation/fb/modedb.txt
UPOZORENJE
Stariji grafički stekovi podržavali su upotrebu unosa config.txt za postavljanje otkrivanja hotplug-a, ali u vrijeme pisanja ovo ne radi sa KMS-om. Možda će biti podržan u budućim izdanjima firmvera. Unos config.txt je hdmi_force_hotplug, a možete odrediti određeni HDMI port na koji se hotplug primjenjuje koristeći bilo hdmi_force_hotplug:0=1 ili hdmi_force_hotplug:1=1. Imajte na umu da se nomenklatura za KMS odnosi na HDMI portove kao 1 i 2, dok Raspberry Pi koristi 0 i 1.
EDID problemi
Manji broj uređaja za prikaz nije u stanju da vrati EDID ako su isključeni ili kada je odabran pogrešan AV ulaz. Ovo može biti problem kada su Raspberry Pi i uređaji za prikaz na istom razvodniku, a Raspberry Pi uređaj se pokreće brže od ekrana. 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 mogu ih raščlaniti KMS EDID sistem. U ovim okolnostima, možda je moguće pročitati EDID sa uređaja sa sličnom rezolucijom i koristiti ga. U oba slučaja, sljedeće upute navode kako čitati EDID sa uređaja za prikaz i konfigurirati KMS da ga koristi, umjesto da KMS pokušava direktno ispitati uređaj.
Kopiranje EDID-a u a file
Kreiranje a file sadržavanje EDID metapodataka od nule obično nije izvodljivo, a korištenje postojećeg je mnogo lakše. Općenito je moguće dobiti EDID sa uređaja za prikaz i pohraniti ga na Raspberry Pi SD karticu tako da ga KMS može koristiti umjesto da dobije EDID sa uređaja za prikaz. Najjednostavnija opcija ovdje je osigurati da je uređaj za prikaz uključen i da radi i na ispravnom AV ulazu i da je Raspberry Pi ispravno pokrenuo HDMI sistem. Sa terminala sada možete kopirati EDID u a file sa 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 uspije da se pokrene na radnu površinu ili konzolu, zatim kopirajte EDID koji će firmver (nadamo se) uspješno pročitati na file.
- Pokrenite u zastareli grafički način.
- Uredite config.txt u boot particiji, vodeći računa da pokrenete uređivač koristeći sudo, i promijenite red koji kaže dtoverlay=vc4-kms-v3d u #dtoverlay=vc4-kms-v3d.
- Ponovo pokreni.
- Radna površina ili konzola za prijavu bi se sada trebala pojaviti.
- Koristeći terminal, kopirajte EDID sa priključenog uređaja za prikaz na a file sa sljedećom komandom:
- tvservice -d myedid.dat sudo mv myedid.dat /lib/firmware/
Koristeći a file-bazirani EDID umjesto ispitivanja uređaja za prikaz Uredite /boot/cmdline.txt, vodeći računa da pokrenete uređivač koristeći sudo, i dodajte sljedeće u komandnu liniju kernela: drm.edid_firmware=myedid.dat Možete primijeniti EDID na specifični HDMI port na sledeći način: drm.edid_firmware=HDMI-A-1:myedid.dat Ako je potrebno, pokrenite sistem ponovo u KMS režim tako što ćete uraditi sledeće:
- Uredite config.txt u boot particiji, vodeći računa da pokrenete uređivač koristeći sudo, i promijenite red koji kaže #dtoverlay=vc4-kms-v3d u dtoverlay=vc4-kms-v3d.
- Ponovo pokreni.
NAPOMENA
Ako koristite a file-based EDID, ali i dalje imate problema sa hotplug-om, možete forsirati otkrivanje hotplug-a dodavanjem sljedećeg u komandnu liniju kernela: video=HDMI-A-1:D.
Dokumenti / Resursi
![]() |
RaspberryPi KMS HDMI izlazni grafički drajver [pdf] Korisnički priručnik KMS, HDMI izlaz grafički drajver, KMS HDMI izlaz, grafički drajver, KMS HDMI izlaz grafički drajver, drajver |