RaspberryPi KMS HDMI izvades grafikas draiveris
Kolofons
2020–2023 Raspberry Pi Ltd (iepriekš Raspberry Pi (Trading) Ltd.) Šī dokumentācija ir licencēta saskaņā ar Creative Commons Attribution-NoDerivatives 4.0 International (CC BY-ND 4.0) licenci. būvēšanas datums: 2023-02-10 būvēšanas versija: githash: c65fe9c-clean
Juridisks atrunas paziņojums
RASPBERRY PI PRODUKTU TEHNISKOS UN UZTICAMĪBAS DATU (TOStarp DATU LAPAS), KĀ LAIK pa laikam IZMAIŅAS (“RESURSI”), TIEK SNIEDZ RASPBERRY PI LTD (“RPL”) “KĀDI IR” UN JEBKĀDU TIEŠU, NAV IEROBEŽOTU NEIEROBEŽOTU. TIEK NETIEŠĀS GARANTIJĀS PAR TIRDZNIECĪBU UN PIEMĒROTĪBU KONKRĒTAM MĒRĶIEM TIEK ATTIECAS. LĪDZ MAKSIMĀLĀ APJOMĀ, KAS ATĻAUTA AR PIEMĒROJAMO LIKUMIEM, RPL NEKĀDĀ GADĪJUMĀ NEATBILD PAR JEBKĀDIEM TIEŠIEM, NETIEŠIEM, NEJAUŠIEM, ĪPAŠIEM, PIEMĒRAS VAI IZSEKOTIEM ZAUDĒJUMIEM (IESKAITOT, BET NEIEROBEŽOTĀS PAKALPOJUMA IZMANTOŠANAS DATIEM; , VAI PEĻŅA; VAI UZŅĒMĒJDARBĪBAS PĀRTRAUKŠANA) TOMĒR IZRAISĪTA UN JEBKĀDA ATBILDĪBAS TEORIJA VAI LĪGUMĀ, STRĪGA ATBILDĪBA VAI DEKLĀCIJA (IESKAITOT NELAUDZĪBU VAI CITĀDI), KAS RAIDĀS JEBKĀDĀ VEIDĀ NEIZMANTOJĀM. PAR ŠĀDIEM BOJĀJUMIEM. RPL patur tiesības jebkurā laikā un bez turpmāka brīdinājuma veikt jebkādus uzlabojumus, uzlabojumus, labojumus vai jebkādas citas modifikācijas RESURSIEM vai jebkuriem tajos aprakstītajiem produktiem. RESURSI ir paredzēti kvalificētiem lietotājiem ar atbilstošu dizaina zināšanu līmeni. Lietotāji ir pilnībā atbildīgi par savu izvēli un RESURSU izmantošanu un jebkuru tajos aprakstīto produktu pielietojumu. Lietotājs piekrīt atlīdzināt un aizsargāt RPL pret visām saistībām, izmaksām, bojājumiem vai citiem zaudējumiem, kas rodas, izmantojot RESOURCES. RPL piešķir lietotājiem atļauju izmantot RESURSU tikai kopā ar Raspberry Pi produktiem. Jebkāda cita RESURSU izmantošana ir aizliegta. Licence netiek piešķirta nevienai citai RPL vai citām trešās puses intelektuālā īpašuma tiesībām. AUGSTA RISKA DARBĪBAS. Raspberry Pi produkti nav izstrādāti, ražoti vai paredzēti izmantošanai bīstamās vidēs, kurās nepieciešama atteices droša darbība, piemēram, kodoliekārtu darbībā, gaisa kuģu navigācijas vai sakaru sistēmās, gaisa satiksmes kontrolē, ieroču sistēmās vai drošībai kritiskos lietojumos (tostarp dzīvības uzturēšanai). sistēmas un citas medicīniskās ierīces), kurās produktu atteice var izraisīt tiešu nāvi, miesas bojājumus vai smagus fiziskus vai vides bojājumus (“Augsta riska darbības”). RPL īpaši atsakās no jebkādas tiešas vai netiešas garantijas par piemērotību augsta riska darbībām un neuzņemas nekādu atbildību par Raspberry Pi produktu izmantošanu vai iekļaušanu augsta riska darbībās. Raspberry Pi produkti tiek nodrošināti saskaņā ar RPL standarta noteikumiem. RPL nodrošinātie RESURSI nepaplašina vai citādi nemaina RPL standarta noteikumus, tostarp, bet ne tikai, tajos paustās atrunas un garantijas.
Dokumenta versiju vēsture
Dokumenta apjoms
Šis dokuments attiecas uz šādiem Raspberry Pi produktiem
Ievads
Ieviešot KMS (Kernel Mode Setting) grafikas draiveri, Raspberry Pi Ltd pāriet no mantotās programmaparatūras kontroles video izvades sistēmā un uz atvērtāka koda grafikas sistēmu. Tomēr tas ir nācis ar savu izaicinājumu kopumu. Šis dokuments ir paredzēts, lai palīdzētu atrisināt visas problēmas, kas varētu rasties, pārejot uz jauno sistēmu. Šajā dokumentā ir pieņemts, ka Raspberry Pi darbojas operētājsistēma Raspberry Pi, un tajā ir pilnībā atjaunināta jaunākā programmaparatūra un kodoli.
Terminoloģija
DRM: Direct Rendering Manager, Linux kodola apakšsistēma, ko izmanto saziņai ar grafikas apstrādes vienībām (GPU). Izmantots sadarbībā ar FKMS un KMS.
DVI: HDMI priekštecis, taču bez audio iespējām. Ir pieejami HDMI–DVI kabeļi un adapteri, lai savienotu Raspberry Pi ierīci ar displeju, kas aprīkots ar DVI.
EDID: Paplašināti displeja identifikācijas dati. Metadatu formāts displeja ierīcēm, lai aprakstītu to iespējas video avotam. EDID datu struktūrā ir iekļauts ražotāja nosaukums un sērijas numurs, produkta veids, fiziskā displeja izmērs un displeja atbalstītie laiki, kā arī daži mazāk noderīgi dati. Dažiem displejiem var būt bojāti EDID bloki, kas var radīt problēmas, ja displeja sistēma šos defektus neapstrādā.
FKMS (vc4-fkms-v3d): Viltus kodola režīma iestatījums. Kamēr programmaparatūra joprojām kontrolē zema līmeņa aparatūru (piemēram,ample, augstas izšķirtspējas multivides interfeisa (HDMI) porti, displeja seriālā saskarne (DSI) utt.), standarta Linux bibliotēkas tiek izmantotas pašā kodolā. FKMS tiek izmantots pēc noklusējuma pakalpojumā Buster, taču tagad tas ir novecojis par labu KMS pakalpojumā Bullseye.
HDMI: Augstas izšķirtspējas multivides interfeiss ir patentēts audio/video interfeiss nesaspiestu video datu un saspiestu vai nesaspiestu digitālo audio datu pārsūtīšanai.
HPD: Karstās spraudņa noteikšana. Fizisks vads, kas tiek apstiprināts ar pievienoto displeja ierīci, lai parādītu tā esamību.
KMS: Kodola režīma iestatīšana; skat https://www.kernel.org/doc/html/latest/gpu/drm-kms.html lai iegūtu sīkāku informāciju. Programmā Raspberry Pi vc4-kms-v3d ir draiveris, kas ievieš KMS, un to bieži dēvē par “KMS draiveri”. Mantotā grafikas steks: grafikas steks, kas pilnībā ieviests VideoCore programmaparatūras lāse, ko atklāj Linux kadru bufera draiveris. Mantotais grafikas steks vēl nesen tika izmantots lielākajā daļā Raspberry Pi Ltd ierīču; tagad to pakāpeniski aizstāj ar (F)KMS/DRM.
HDMI sistēma un grafikas draiveri
Raspberry Pi ierīces video izvadei izmanto HDMI standartu, kas ir ļoti izplatīts mūsdienu LCD monitoros un televizoros. Raspberry Pi 3 (tostarp Raspberry Pi 3B+) un vecākām ierīcēm ir viens HDMI ports, kas spēj nodrošināt 1920 × 1200 @60Hz izvadi, izmantojot pilna izmēra HDMI savienotāju. Raspberry Pi 4 ir divi mikro HDMI porti, un tas spēj nodrošināt 4K izvadi abos portos. Atkarībā no iestatīšanas Raspberry Pi 0 HDMI 4 ports spēj nodrošināt līdz pat 4kp60, taču, izmantojot divas 4K izvades ierīces, abās ierīcēs ir ierobežots līdz p30. Grafikas programmatūras kaudze neatkarīgi no versijas ir atbildīga par pievienoto HDMI ierīču īpašību nopratināšanu un atbilstošu HDMI sistēmas iestatīšanu. Gan mantotie, gan FKMS skursteņi izmanto programmaparatūru VideoCore grafikas procesorā, lai pārbaudītu HDMI klātbūtni un īpašības. Turpretim KMS izmanto pilnībā atvērtā koda ARM puses ieviešanu. Tas nozīmē, ka abu sistēmu kodu bāzes ir pilnīgi atšķirīgas, un dažos gadījumos tas var izraisīt atšķirīgu rīcību starp abām pieejām. HDMI un DVI ierīces identificē sevi avota ierīcē, izmantojot metadatu gabalu, ko sauc par EDID bloku. To nolasa avota ierīce no displeja ierīces, izmantojot I2C savienojumu, un galalietotājam tas ir pilnībā pārredzams, jo to dara grafikas steks. EDID blokā ir daudz informācijas, taču to galvenokārt izmanto, lai norādītu, kuras izšķirtspējas displejs atbalsta, tāpēc Raspberry Pi var iestatīt, lai izvadītu atbilstošu izšķirtspēju.
Kā sāknēšanas laikā tiek apstrādāts HDMI
Pirmo reizi ieslēdzot, Raspberry Pi iziet vairākas stages, kas pazīstams kā boot stages:
- Pirmie-stage, uz ROM balstīta sāknēšanas programma palaiž VideoCore GPU.
- Second-stage sāknēšanas ielādētājs (tas ir bootcode.bin SD kartē ierīcēs pirms Raspberry Pi 4 un SPI EEPROM Raspberry Pi 4):
- Raspberry Pi 4 otrās stagSāknēšanas ielādētājs sāks HDMI sistēmu, pārbaudīs displeja iespējamos režīmus un pēc tam atbilstoši iestatīs displeju. Šajā brīdī displejs tiek izmantots, lai nodrošinātu pamata diagnostikas datus.
- Sāknēšanas ielādētāja diagnostikas displejs (no 07. gada 2022. decembra un turpmāk) parādīs visu pievienoto displeju statusu (vai ir Hotplug Detect (HPD) un vai no displeja ir atkopts EDID bloks).
- VideoCore programmaparatūra (start.elf) tiek ielādēta un palaists. Tas pārņems kontroli pār HDMI sistēmu, nolasīs EDID bloku no visiem pievienotajiem displejiem un parādīs varavīksnes ekrānu šajos displejos.
- Linux kodola sāknēšana
- Kodola sāknēšanas laikā KMS pārņems HDMI sistēmas vadību no programmaparatūras. Vēlreiz EDID bloks tiek nolasīts no visiem pievienotajiem displejiem, un šī informācija tiek izmantota, lai iestatītu Linux konsoli un darbvirsmu.
Iespējamās problēmas un simptomi
Visbiežāk sastopamais kļūmes simptoms, kas rodas, pārejot uz KMS, ir sākotnēji laba sāknēšana, kad tiek parādīts sāknēšanas ielādes ekrāns un pēc tam varavīksnes ekrāns, kam pēc dažām sekundēm ekrāns kļūst melns un vairs neieslēdzas. Punkts, kurā displejs kļūst melns, patiesībā ir punkts kodola sāknēšanas procesā, kad KMS draiveris pārņem displeja darbību no programmaparatūras. Raspberry Pi pašlaik darbojas visos aspektos, izņemot HDMI izvadi, tādēļ, ja ir iespējots SSH, jums vajadzētu būt iespējai pieteikties ierīcē pa šo maršrutu. Zaļā SD kartes piekļuves gaismas diode parasti laiku pa laikam mirgo. Ir arī iespējams, ka jūs vispār neredzēsit HDMI izvadi; nav sāknēšanas ielādes displeja un varavīksnes ekrāna. Parasti to var saistīt ar aparatūras kļūdu.
Kļūmes diagnostika
Nav HDMI izejas vispār
Iespējams, ierīce vispār nav sāknēta, taču tas neietilpst šīs baltās grāmatas kompetencē. Pieņemot, ka novērotā darbība ir displeja problēma, HDMI izvades trūkums jebkurā sāknēšanas procesa daļā parasti ir aparatūras kļūmes dēļ. Ir vairākas iespējamās iespējas:
- Bojāts HDMI kabelis
- Izmēģiniet jaunu kabeli. Dažos kabeļos, īpaši ļoti lētajos, var nebūt visas nepieciešamās sakaru līnijas (piem., hotplug), lai Raspberry Pi varētu veiksmīgi noteikt displeju.
- Bojāts Raspberry Pi HDMI ports
- Ja izmantojat Raspberry Pi 4, izmēģiniet citu HDMI portu.
- Bojāts HDMI ports monitorā
- Dažreiz monitora vai televizora HDMI ports var nolietoties. Izmēģiniet citu portu, ja ierīcei tāds ir.
- Retos gadījumos displeja ierīce var nodrošināt EDID datus tikai tad, kad tā ir ieslēgta vai ir atlasīts pareizais ports. Lai pārbaudītu, pārliecinieties, vai ierīce ir ieslēgta un ir atlasīts pareizais ievades ports.
- Displeja ierīce nenodrošina karstās spraudņa noteikšanas līniju
Sākotnējā izvade, pēc tam ekrāns kļūst melns
Ja displejs parādās, bet pēc tam izslēdzas Linux kodola sāknēšanas laikā, ir vairāki iespējamie cēloņi, un tie parasti ir saistīti ar problēmu, kas saistīta ar EDID nolasīšanu no displeja ierīces. Kā redzams iepriekš sadaļā par sāknēšanas secību, EDID sāknēšanas procesa laikā tiek nolasīts vairākos dažādos punktos, un katru no šiem nolasījumiem veic cita programmatūra. Galīgo nolasīšanu, kad KMS pārņem, veic nemainīgs augšupējais Linux kodola kods, un tas neapstrādā bojātos EDID formātus, kā arī iepriekšējo programmaparatūras programmatūru. Tāpēc displejs var pārstāt darboties pareizi, tiklīdz KMS pārņems. Ir vairāki veidi, kā pārbaudīt, vai KMS neizdodas nolasīt EDID, un divi no tiem ir šādi.
Pārbaudiet sāknēšanas ielādētāja diagnostikas ekrānu (tikai Raspberry Pi 4)
PIEZĪME
Sāknēšanas ielādētāja diagnostikai ir nepieciešams jauns sāknēšanas ielādētājs. Varat jaunināt uz jaunāko versiju, izmantojot šos norādījumus: https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#updating-the-bootloader Izņemiet SD karti un restartējiet Raspberry Pi. OS instalēšanas ekrānā nospiediet ESC, un displeja ierīcē vajadzētu parādīties diagnostikas ekrānam. Displejā ir jābūt līnijai, kas sākas ar displeju: — piemēramample:
- displejs: DISP0: HDMI HPD=1 EDID=ok #2 DISP1: HPD=0 EDID=nav #0
Šī Raspberry Pi 4 izvade parāda, ka sistēma ir konstatējusi HDMI displeju HDMI portā 0, tiek aktivizēts karstās spraudņa noteikšanas funkcija un EDID tika nolasīts labi. HDMI portā 1 nekas netika atrasts.
Pārbaudiet, vai KMS sistēma ir konstatējusi EDID
Lai to pārbaudītu, jums būs jāpiesakās Raspberry Pi ierīcē, izmantojot SSH no cita datora. SSH var iespējot, veidojot SD kartes attēlu ar Raspberry Pi Imager, izmantojot papildu iestatījumu opcijas. SSH iespējošana SD kartē, kas jau ir attēlota, ir nedaudz sarežģītāka: jums būs jāizmanto cits dators, lai pievienotu file nosauca sāknēšanas nodalījumu ssh. Nomainiet SD karti oriģinālajā Raspberry Pi un ieslēdziet to. Tam vajadzētu iespējot SSH ar DHCP piešķirto IP adresi. Kad esat pieteicies, termināļa uzvednē ierakstiet tālāk norādīto, lai parādītu jebkura konstatētā EDID saturu (iespējams, būs jāmaina HDMI-A-1 uz HDMI-A-2 atkarībā no tā, kurš Raspberry Pi HDMI ports ir pievienots displeja ierīcei to): cat /sys/class/drm/card?-HDMI-A-1/edid Ja nav mapju ar nosaukumu karte?-HDMI-A-1 vai līdzīgas, tad, visticamāk, no displeja nevar nolasīt EDID. ierīci.
PIEZĪME
Gadījumā, ja EDID ir veiksmīgi nolasīts, ir noderīgs virtuāls file tajā pašā mapē, ko sauc par režīmiem, kurā tiek parādīti visi iespējamie režīmi, kurus ierīce atbalsta EDID.
Mīkstinājumi
Hotplug noteikšanas kļūme Ja gan programmaparatūrai, gan KMS neizdodas atrast pievienoto monitoru, tā varētu būt karstās spraudņa noteikšanas kļūme, ti, Raspberry Pi nezina, ka ierīce ir pievienota, tāpēc tā nepārbauda EDID. To var izraisīt slikts kabelis vai displeja ierīce, kas pareizi nenodrošina karsto kontaktdakšu. Hotplug noteikšanu var piespiest, mainot kodola komandrindu file (cmdline.txt), kas tiek saglabāts Raspberry Pi OS SD kartes sāknēšanas nodalījumā. Varat to rediģēt file citā sistēmā, izmantojot jebkuru vēlamo redaktoru. Faila cmdline.txt beigās pievienojiet tālāk norādīto file: video=HDMI-A-1:1280×720@60D Ja izmantojat otro HDMI portu, nomainiet HDMI-A-1 ar HDMI-A-2. Varat arī norādīt citu izšķirtspēju un kadru ātrumu, taču noteikti izvēlieties tos, ko atbalsta displeja ierīce.
PIEZĪME
Dokumentāciju par kodola komandrindas iestatījumiem video var atrast šeit: https://www.kernel.org/doc/Documentation/fb/modedb.txt
BRĪDINĀJUMS
Vecāki grafikas skursteņi atbalstīja ieraksta config.txt izmantošanu, lai iestatītu karstās spraudņa noteikšanu, taču rakstīšanas laikā tas nedarbojās ar KMS. To var atbalstīt turpmākajos programmaparatūras laidienos. Config.txt ieraksts ir hdmi_force_hotplug, un varat norādīt konkrēto HDMI portu, uz kuru attiecas hotplug, izmantojot hdmi_force_hotplug:0=1 vai hdmi_force_hotplug:1=1. Ņemiet vērā, ka KMS nomenklatūra attiecas uz HDMI portiem kā 1 un 2, savukārt Raspberry Pi izmanto 0 un 1.
EDID problēmas
Mazākā daļa displeja ierīču nespēj atgriezt EDID, ja tās ir izslēgtas vai ir atlasīta nepareiza AV ieeja. Tā var rasties, ja Raspberry Pi un displeja ierīces atrodas vienā barošanas blokā un Raspberry Pi ierīce tiek palaists ātrāk nekā displejs. Izmantojot šādas ierīces, iespējams, būs manuāli jānorāda EDID. Vēl neparastāk ir tas, ka dažām displeja ierīcēm ir EDID bloki, kas ir slikti formatēti un kurus nevar parsēt KMS EDID sistēma. Šādos apstākļos var būt iespējams nolasīt EDID no ierīces ar līdzīgu izšķirtspēju un izmantot to. Jebkurā gadījumā tālāk sniegtajās instrukcijās ir norādīts, kā no displeja ierīces nolasīt EDID un konfigurēt KMS tā lietošanai, nevis KMS mēģināt tieši nopratināt ierīci.
EDID kopēšana uz a file
Izveidojot a file EDID metadatu saturs no jauna parasti nav iespējams, un esošu metadatu izmantošana ir daudz vienkāršāka. Parasti ir iespējams iegūt EDID no displeja ierīces un saglabāt to Raspberry Pi SD kartē, lai to varētu izmantot KMS, nevis iegūt EDID no displeja ierīces. Vienkāršākā iespēja šeit ir nodrošināt, ka displeja ierīce ir ieslēgta un darbojas, un tajā ir pareiza AV ieeja un ka Raspberry Pi ir pareizi palaists HDMI sistēma. No termināļa tagad varat kopēt EDID uz a file ar šādu komandu: sudo cp /sys/class/drm/card?-HDMI-A-1/edid /lib/firmware/myedid.dat Ja kāda iemesla dēļ EDID nav, varat palaist ierīci citā -KMS režīms, kuram izdodas palaist uz darbvirsmas vai konsole, pēc tam nokopējiet EDID, kuru programmaparatūra (cerams) veiksmīgi nolasīs file.
- Sāknēšana mantotā grafikas režīmā.
- Sāknēšanas nodalījumā rediģējiet failu config.txt, noteikti palaidiet redaktoru, izmantojot sudo, un mainiet rindiņu dtoverlay=vc4-kms-v3d uz #dtoverlay=vc4-kms-v3d.
- Reboot.
- Tagad vajadzētu parādīties darbvirsmai vai pieteikšanās konsolei.
- Izmantojot termināli, kopējiet EDID no pievienotās displeja ierīces uz a file ar šādu komandu:
- tvservice -d myedid.dat sudo mv myedid.dat /lib/firmware/
Izmantojot a fileEDID, nevis iztaujāt displeja ierīci Rediģējiet /boot/cmdline.txt, noteikti palaidiet redaktoru, izmantojot sudo, un pievienojiet kodola komandrindai: drm.edid_firmware=myedid.dat Varat lietot EDID konkrēts HDMI ports: drm.edid_firmware=HDMI-A-1:myedid.dat Ja nepieciešams, sāknējiet atpakaļ KMS režīmā, rīkojoties šādi:
- Sāknēšanas nodalījumā rediģējiet failu config.txt, noteikti palaidiet redaktoru, izmantojot sudo, un mainiet rindiņu, kurā teikts #dtoverlay=vc4-kms-v3d, uz dtoverlay=vc4-kms-v3d.
- Reboot.
PIEZĪME
Ja lietojat a fileEDID, bet joprojām ir problēmas ar karsto spraudni, varat piespiest hotplug noteikšanu, pievienojot kodola komandrindai: video=HDMI-A-1:D.
Dokumenti / Resursi
![]() |
RaspberryPi KMS HDMI izvades grafikas draiveris [pdfLietotāja rokasgrāmata KMS, HDMI izvades grafikas draiveris, KMS HDMI izeja, grafikas draiveris, KMS HDMI izvades grafikas draiveris, draiveris |