RaspberryPi KMS HDMI Eliga Grafika Ŝoforo

Kolofono
2020-2023 Raspberry Pi Ltd (antaŭe Raspberry Pi (Trading) Ltd.) Ĉi tiu dokumentaro estas disponebla laŭ permesilo Krea Komunaĵo Atribuite-NeDerivatoj 4.0 Internacia (CC BY-ND 4.0). konstrua dato: 2023-02-10 konstrua versio: githash: c65fe9c-clean
Leĝa Malgarantio Avizo
TEKNIKAJ KAJ FIDEBLECO-DATUMO PRI RASPBERRY PI-PRODUTOJ (INKLUDE DATUMONOJ) KIAL MODIFIKITAJ DE TEMPO AL TEMPO ("RIMEDOJ") ESTAS PROVIZITA DE RASPBERRY PI LTD ("RPL") "KIAL ESTAS" KAJ IUJ ESPRITA AŬ IMPLITA GARANTIOJ, INKLUDE, SED NE LIMIGITA. AL, LA IMPLITAJ GARANTIOJ DE KOMERKABLECO KAJ TAŬGECO POR APARTA CELO ESTAS RIKAZITAJ. ĜIS LA MAKMUME PERMESITA DE APLIKA LEĜO EN NENIAJ OKAĜO RPL RESPONDAS PRI IUJ REKTA, NEREKTA, EKZENDA, SPECIALA, EKZEMPLA AŬ KONSEKVAJ damaĝoj (INKLUDE, SED NE LIMIGITE AL, AKIRADO DE ANSTAŬOJ VAROJ, PERDO DE DATUMOJ; , AŬ PROFITOJ; AŬ KOMERCO INTERRUPTO) TAMEN KaŭZITA KAJ ĈU IUJ TEORIO DE RESPONVO, ĈU KONTRALE, STRIKA RESPONVO, AŬ kulpigo (INkluzive de neglektemo aŭ alie) ekestiĝanta iel ajn el la UZADO DE LA RESPONDEBLECO, Eĉ DE LA RIMEDOCO. DE TIA damaĝo. RPL rezervas la rajton fari ajnajn plibonigojn, plibonigojn, korektojn aŭ ajnajn aliajn modifojn al la RIMEDOJ aŭ ajnaj produktoj priskribitaj en ili en ajna momento kaj sen plia avizo. La RESURSOJ estas destinitaj por spertaj uzantoj kun taŭgaj niveloj de kono pri dezajno. Uzantoj respondecas nur pri sia elekto kaj uzo de la RIMEDOJ kaj ajna apliko de la produktoj priskribitaj en ili. Uzanto konsentas kompensi kaj senkulpigi RPL kontraŭ ĉiuj kompensdevoj, kostoj, damaĝoj aŭ aliaj perdoj estiĝantaj pro ilia uzo de la RESOURCES. RPL donas al uzantoj permeson uzi la RESOURCES nur kune kun la Raspberry Pi-produktoj. Ĉia alia uzo de la RESURSOJ estas malpermesita. Neniu permesilo estas koncedita al iu ajn alia RPL aŭ alia triapartia intelekta proprieta rajto. ALTA RISKAJ ACTIVADOJ. Raspberry Pi-produktoj ne estas desegnitaj, fabrikitaj aŭ destinitaj por uzo en danĝeraj medioj postulantaj malsukcesan sekuran agadon, kiel ekzemple en funkciado de nukleaj instalaĵoj, aviadilnavigacio aŭ komunikadsistemoj, aertrafika kontrolo, armilsistemoj aŭ sekurec-kritikaj aplikoj (inkluzive de vivsubteno). sistemoj kaj aliaj medicinaj aparatoj), en kiuj la malsukceso de la produktoj povus kaŭzi rekte morton, personan vundon aŭ severan fizikan aŭ median damaĝon ("Altaj Riskaj Agadoj"). RPL specife rifuzas ajnan eksplicitan aŭ implican garantion de taŭgeco por Altriskaj Aktivecoj kaj akceptas neniun respondecon por uzo aŭ inkludoj de Raspberry Pi-produktoj en Altriskaj Aktivecoj. Raspberry Pi-produktoj estas provizitaj sub la Normaj Kondiĉoj de RPL. La dispozicio de RPL pri la RIMEDOJ ne vastigas aŭ alie modifas la Normajn Kondiĉojn de RPL inkluzive sed ne limigitaj al la malgarantioj kaj garantioj esprimitaj en ili.
Dokumentversiohistorio

Amplekso de dokumento
Ĉi tiu dokumento validas por la sekvaj produktoj de Raspberry Pi

Enkonduko
Kun la enkonduko de la grafika ŝoforo KMS (Kernel Mode Setting), Raspberry Pi Ltd malproksimiĝas de hereda firmvara kontrolo de la videoprodukta sistemo kaj al pli malfermfonta grafika sistemo. Tamen, ĉi tio venis kun sia propra aro de defioj. Ĉi tiu dokumento celas helpi pri iuj problemoj, kiuj povus aperi dum moviĝado al la nova sistemo. Ĉi tiu blankpapero supozas, ke Raspberry Pi funkcias Raspberry Pi OS, kaj estas plene ĝisdatigita kun la plej novaj firmvaro kaj kernoj.
Terminologio
DRM: Direct Rendering Manager, subsistemo de la Linukso-kerno kutimis komuniki kun grafikaj pretigaj unuoj (GPUoj). Uzite en partnereco kun FKMS kaj KMS.
DVI: Antaŭulo al HDMI, sed sen la aŭdaj kapabloj. HDMI al DVI-kabloj kaj adaptiloj disponeblas por konekti aparaton Raspberry Pi al DVI-ekipita ekrano.
EDID: Plilongigitaj Vidigaj Identigaj Datumoj. Metadatuma formato por ekranaj aparatoj por priskribi iliajn kapablojn al videofonto. La EDID-datumstrukturo inkluzivas fabrikistan nomon kaj serian numeron, produktan tipon, fizikan ekrangrandecon kaj la tempojn subtenatajn de la ekrano, kune kun kelkaj malpli utilaj datumoj. Kelkaj ekranoj povas havi misajn EDID-blokojn, kiuj povas kaŭzi problemojn se tiuj difektoj ne estas pritraktitaj per la ekransistemo.
FKMS (vc4-fkms-v3d): Agordo de Falsa Kerna Reĝimo. Dum la firmvaro ankoraŭ kontrolas la malaltnivelan aparataron (ekzample, la High-Definition Multimedia Interface (HDMI) havenoj, la Display Serial Interface (DSI), ktp), normaj Linukso-bibliotekoj estas uzitaj en la kerno mem. FKMS estas uzata defaŭlte en Buster, sed nun estas malrekomendita favore al KMS en Bullseye.
HDMI: High-Definition Multimedia Interface estas proprieta aŭd-/video-interfaco por transdoni nekunpremitajn videajn datumojn, kaj kunpremitajn aŭ nekunpremitajn ciferecajn aŭdajn datumojn.
HPD: Hotplug detekti. Fizika drato, kiu estas asertita de konektita ekranaparato por montri, ke ĝi ĉeestas.
KMS: Agordo de Kerna Reĝimo; vidu https://www.kernel.org/doc/html/latest/gpu/drm-kms.html por pliaj detaloj. Sur Raspberry Pi, vc4-kms-v3d estas ŝoforo kiu efektivigas KMS, kaj ofte estas referita kiel "la KMS-ŝoforo". Heredaĵa grafikstako: grafikstako tute efektivigita en la VideoCore-firmvaroblobo elmontrita per Linukso-frambuffer-ŝoforo. La hereda grafika stako estis uzata en la plimulto de Raspberry Pi Ltd-aparatoj ĝis antaŭ nelonge; ĝi nun estas iom post iom anstataŭigita per (F)KMS/DRM.
La HDMI-sistemo kaj la grafikaj peliloj
Raspberry Pi-aparatoj uzas la HDMI-normon, kiu estas tre ofta en modernaj LCD-ekranoj kaj televidiloj, por videoproduktado. Raspberry Pi 3 (inkluzive de Raspberry Pi 3B+) kaj pli fruaj aparatoj havas ununuran HDMI-havenon, kiu kapablas je 1920 × 1200 @60Hz eligo per plenmezura HDMI-konektilo. Raspberry Pi 4 havas du mikro-HDMI-havenojn, kaj kapablas je 4K-eligo sur ambaŭ havenoj. Depende de agordo, la haveno HDMI 0 sur Raspberry Pi 4 kapablas ĝis 4kp60, sed kiam vi uzas du 4K-eligaĵojn, vi estas limigita al p30 ĉe ambaŭ aparatoj. La grafika programaro, sendepende de versio, respondecas pri pridemandado de alkroĉitaj HDMI-aparatoj pri iliaj propraĵoj, kaj agordi la HDMI-sistemon taŭge. Heredaĵo kaj FKMS-stakoj ambaŭ uzas firmvaron en la grafika procesoro VideoCore por kontroli la ĉeeston kaj ecojn de HDMI. Kontraŭe, KMS uzas tute malfermitan fonton, ARM-flanka efektivigo. Ĉi tio signifas, ke la kodbazoj por la du sistemoj estas tute malsamaj, kaj en kelkaj cirkonstancoj tio povas rezultigi malsaman konduton inter la du aliroj. HDMI kaj DVI-aparatoj identigas sin al la fontaparato uzante pecon de metadatenoj nomita EDID-bloko. Ĉi tio estas legata de la fonta aparato de la ekrana aparato per konekto I2C, kaj ĉi tio estas tute travidebla al la finuzanto kiel ĝi estas farita de la grafika stako. La EDID-bloko enhavas multajn informojn, sed ĝi estas ĉefe uzata por specifi kiujn rezoluciojn subtenas la ekrano, do Raspberry Pi povas esti agordita por eligi taŭgan rezolucion.
Kiel HDMI estas traktita dum lanĉado
Kiam unue ŝaltita, Raspberry Pi trapasas kelkajn stages, konata kiel boto stages:
- La unua-stage, ROM-bazita ekŝargilo startas la VideoCore GPU.
- Duaj-stage ekŝargilo (ĉi tio estas bootcode.bin sur la SD-karto ĉe aparatoj antaŭ Raspberry Pi 4, kaj en SPI EEPROM sur Raspberry Pi 4):
- Sur Raspberry Pi 4, la dua-stagLa ekŝargilo ekfunkciigos la HDMI-sistemon, pridemandas la ekranon pri eblaj reĝimoj, tiam agordos la ekranon taŭge. Je ĉi tiu punkto la ekrano estas uzata por provizi bazajn diagnozajn datumojn.
- La diagnoza ekrano de ekŝargilo (de la 07-a de decembro 2022) montros la staton de iuj kunigitaj ekranoj (ĉu Hotplug Detect (HPD) ĉeestas, kaj ĉu EDID-bloko estis reakirita de la ekrano).
- La VideoCore-firmvaro (start.elf) estas ŝarĝita kaj rulita. Ĉi tio transprenos la kontrolon de la HDMI-sistemo, legos la EDID-blokon de iuj kunigitaj ekranoj kaj montros la ĉielarkan ekranon sur tiuj ekranoj.
- La Linukso-kerno ekfunkciigas
- Dum kerna lanĉo, KMS transprenos la kontrolon de la HDMI-sistemo de la firmvaro. Denove la EDID-bloko estas legita de iuj kunaj ekranoj, kaj ĉi tiu informo estas uzata por agordi la Linuksan konzolon kaj labortablon.
Eblaj problemoj kaj simptomoj
La plej ofta malsukcesa simptomo travivita dum moviĝado al KMS estas komence bona ekŝargo, kun la ekŝargilo-ekrano kaj poste la ĉielarka ekrano ekaperas, sekvita post kelkaj sekundoj de la ekrano iĝas nigra kaj ne revenas. La punkto ĉe kiu la ekrano iĝas nigra estas fakte la punkto dum la kerna startprocezo kiam la KMS-ŝoforo transprenas prizorgi la ekranon de la firmvaro. La Raspberry Pi nuntempe funkcias en ĉiuj aspektoj krom la HDMI-eligo, do se SSH estas ebligita tiam vi devus povi ensaluti al la aparato per tiu vojo. La verda SD-karta aliro LED kutime flagras foje. Ankaŭ eblas, ke vi tute ne vidos HDMI-eligon; neniu ekrano de ekŝargilo, kaj neniu ĉielarka ekrano. Ĉi tio kutime povas esti atribuita al aparatara misfunkciado.
Diagnozado de la misfunkciado
Tute neniu HDMI-eliro
Eblas, ke la aparato tute ne ekŝaltis, sed ĉi tio estas ekster la mandato de ĉi tiu blanka libro. Supozante, ke la observita konduto estas ekrana problemo, la manko de HDMI-eligo dum iu ajn parto de la ekfunkciigo estas kutime pro aparatara misfunkciado. Estas kelkaj eblaj opcioj:
- Misa HDMI-kablo
- Provu novan kablon. Iuj kabloj, precipe tre malmultekostaj, eble ne enhavas ĉiujn postulatajn komunikajn liniojn (ekz. varmkonektilon) por ke Raspberry Pi sukcese detektu la ekranon.
- Misa HDMI-haveno sur Raspberry Pi
- Se vi uzas Raspberry Pi 4, provu la alian HDMI-havenon.
- Misa HDMI-haveno sur la ekrano
- Kelkfoje la HDMI-haveno sur ekrano aŭ televido povas eluziĝi. Provu alian havenon se la aparato havas tian.
- Malofte, ekrana aparato povas nur provizi EDID-datenojn kiam ĝi estas ŝaltita, aŭ kiam la ĝusta haveno estas elektita. Por kontroli, certigu, ke la aparato estas ŝaltita kaj ke la ĝusta eniga haveno estas elektita.
- Vidiga aparato ne asertante la varmŝtopilon detekti linion
Komenca eligo, tiam ekrano nigras
Se la ekrano aperas sed poste malŝaltas dum Linukso-kerna lanĉo, ekzistas kelkaj eblaj kaŭzoj, kaj ĉi tiuj kutime rilatas al problemo leganta la EDID de la ekrana aparato. Kiel videblas el la supra sekcio pri la lanĉa sekvenco, la EDID estas legita ĉe kelkaj malsamaj punktoj dum la ekfunkciigo, kaj ĉiu el ĉi tiuj legadoj estas farita per malsama programaro. La fina legado, kiam KMS transprenas, estas farita per neŝanĝita kontraŭflua Linukso-kernkodo, kaj tio ne pritraktas misajn EDID-formatojn same kiel la pli fruan firmvarsoftvaron. Jen kial la ekrano povas ĉesi funkcii ĝuste post kiam KMS transprenas. Estas multaj manieroj konfirmi ĉu KMS malsukcesas legi la EDID, kaj du el ĉi tiuj estas kiel sekvas.
Kontrolu la diagnozan ekranon de ekŝargilo (nur Raspberry Pi 4)
NOTO
La diagnozoj de ekŝargilo postulas lastatempan ekŝargilon. Vi povas ĝisdatigi al la plej nova versio uzante ĉi tiujn instrukciojn: https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#updating-the-bootloader Forigu la SD-karton kaj rekomencu la Raspberry Pi. Premu ESC sur la ekrano Instalu OS, kaj la diagnoza ekrano devus aperi sur la ekrana aparato. Devus esti linio sur la ekrano, kiu komenciĝas per ekrano: — ekzample:
- montriĝo: DISP0: HDMI HPD=1 EDID=ok #2 DISP1: HPD=0 EDID=neniu #0
Ĉi tiu eligo de Raspberry Pi 4 montras, ke la sistemo detektis HDMI-ekranon sur HDMI-haveno 0, la varmŝtopilo detektas estas asertita, kaj la EDID estis legita en ordo. Nenio estis trovita sur HDMI-haveno 1.
Kontrolu ĉu la KMS-sistemo detektis EDID
Por kontroli ĉi tion, vi devos ensaluti al la aparato Raspberry Pi per SSH de malsama komputilo. SSH povas esti ebligita dum kreado de bildo de SD-karto kun Raspberry Pi Imager, uzante la Altnivelajn Agordojn. Ebligi SSH sur SD-karto kiu jam estis bildigita estas iom pli komplika: vi devos uzi alian komputilon por aldoni file nomita ssh al la ekdisko. Anstataŭigu la SD-karton en la originala Raspberry Pi kaj ŝaltu ĝin. Ĉi tio devus ebligi SSH, kun IP-adreso asignita de DHCP. Post kiam ensalutinte, tajpu la jenon ĉe la terminala prompto por montri la enhavon de iu ajn EDID detektita (vi eble bezonos ŝanĝi HDMI-A-1 al HDMI-A-2 depende de kiu HDMI-haveno sur la Raspberry Pi la ekrana aparato estas konektita). al): cat /sys/class/drm/card?-HDMI-A-1/edid Se ne estas dosierujoj nomitaj card?-HDMI-A-1 aŭ simila, tiam verŝajne neniu EDID povus esti legita de la ekrano aparato.
NOTO
En la kazo kie la EDID estas legita sukcese, ekzistas utila virtuala file en la sama dosierujo, nomitaj reĝimoj, kiu kiam montrata montras ĉiujn eblajn reĝimojn, la EDID asertas, ke la aparato subtenas.
Mildigoj
Hotplug detektas fiaskon Se kaj la firmvaro kaj KMS malsukcesas trovi alkroĉitan monitoron, ĝi povus esti varmŝtopilo-detekta fiasko - t.e., la Raspberry Pi ne scias ke aparato estis enŝovita, do ĝi ne kontrolas por EDID. Ĉi tio povus esti kaŭzita de malbona kablo aŭ ekrana aparato kiu ne asertas varmkonekton ĝuste. Vi povas devigi detekton de varmŝtopilo ŝanĝante la komandlinion de la kerno file (cmdline.txt) kiu estas konservita en la ekfunkciigo de Raspberry Pi OS SD-karto. Vi povas redakti ĉi tion file en alia sistemo, uzante kian ajn redaktilon vi preferas. Aldonu la jenon al la fino de la cmdline.txt file: video=HDMI-A-1:1280×720@60D Se vi uzas la duan HDMI-havenon, anstataŭigu HDMI-A-1 per HDMI-A-2. Vi ankaŭ povas specifi malsaman rezolucion kaj framfrekvencon, sed certigu, ke vi elektas tiujn, kiujn la ekrana aparato subtenas.
NOTO
Dokumentaro pri la kernaj komandliniaj agordoj por video troviĝas ĉi tie: https://www.kernel.org/doc/Documentation/fb/modedb.txt
AVERTO
Pli malnovaj grafikaj stakoj subtenis la uzon de config.txt-eniro por agordi hotplug-detekton, sed dum la skribado tio ne funkcias kun KMS. Ĝi povas esti subtenata en estontaj firmware-eldonoj. La eniro config.txt estas hdmi_force_hotplug, kaj vi povas specifi la specifan HDMI-havenon al kiu aplikas la hotplug uzante ĉu hdmi_force_hotplug:0=1 aŭ hdmi_force_hotplug:1=1. Notu, ke la nomenklaturo por KMS rilatas al la HDMI-havenoj 1 kaj 2, dum Raspberry Pi uzas 0 kaj 1.
EDID-problemoj
Malplimulto de ekranaj aparatoj estas nekapablaj resendi EDID se ili estas malŝaltitaj, aŭ kiam la malĝusta AV-enigo estas elektita. Ĉi tio povas esti problemo kiam la Raspberry Pi kaj la ekranaj aparatoj estas sur la sama elektra strio, kaj la Raspberry Pi-aparato ekfunkciigas pli rapide ol la ekrano. Kun aparatoj kiel ĉi tio, vi eble bezonos provizi EDID permane. Eĉ pli nekutime, kelkaj ekranaparatoj havas EDID-blokojn kiuj estas malbone formatitaj kaj ne povas esti analizitaj per la KMS EDID-sistemo. En ĉi tiuj cirkonstancoj, eble eblas legi EDID de aparato kun simila rezolucio kaj uzi tion. En ambaŭ kazoj, la sekvaj instrukcioj fiksas kiel legi EDID de ekrana aparato kaj agordi KMS por uzi ĝin, anstataŭ ke KMS provu pridemandi la aparaton rekte.
Kopiante EDID al a file
Kreante a file enhavi EDID-metadatenojn de nulo ne estas kutime farebla, kaj uzi ekzistantan estas multe pli facila. Ĝenerale eblas akiri EDID de ekrana aparato kaj stoki ĝin sur la SD-karto de la Raspberry Pi por ke ĝi estu uzata de KMS anstataŭ ricevi EDID de la ekrana aparato. La plej facila opcio ĉi tie estas certigi, ke la ekrana aparato funkcias kaj sur la ĝusta AV-enigo, kaj ke la Raspberry Pi ĝuste ekfunkciigis la HDMI-sistemon. De la terminalo, vi nun povas kopii la EDID al a file kun la jena komando: sudo cp /sys/class/drm/card?-HDMI-A-1/edid /lib/firmware/myedid.dat Se ial la EDID ne ĉeestas, vi povas lanĉi la aparaton en ne; -KMS-reĝimo, kiu sukcesas lanĉi al la labortablo aŭ konzolo, tiam kopiu la EDID kiun la firmvaro (espereble) sukcese legos al file.
- Lanĉu al hereda grafika reĝimo.
- Redaktu config.txt en la ekfunkciigo, certigante ruli vian redaktilon per sudo, kaj ŝanĝu la linion kiu diras dtoverlay=vc4-kms-v3d al #dtoverlay=vc4-kms-v3d.
- Rekomencu.
- La labortablo aŭ ensaluta konzolo nun devus aperi.
- Uzante la terminalon, kopiu la EDID de la ligita ekrana aparato al a file kun la sekva komando:
- tvservice -d myedid.dat sudo mv myedid.dat /lib/firmware/
Uzante a file-bazita EDID anstataŭ pridemandi la ekranan aparaton Redaktu /boot/cmdline.txt, certigante ruli vian redaktilon per sudo, kaj aldonu la jenon al la kerna komandlinio: drm.edid_firmware=myedid.dat Vi povas apliki la EDID al iu. specifa HDMI-haveno jene: drm.edid_firmware=HDMI-A-1:myedid.dat Se necese, rekomencu en KMS-reĝimon farante la jenon:
- Redaktu config.txt en ekfunkciigo, certigante ruli vian redaktilon per sudo, kaj ŝanĝu la linion kiu diras #dtoverlay=vc4-kms-v3d al dtoverlay=vc4-kms-v3d.
- Rekomencu.
NOTO
Se vi uzas a file-bazita EDID, sed ankoraŭ havas problemojn kun varmŝtopilo, vi povas devigi varmkonektilon aldonante la jenon al la kerna komandlinio: video=HDMI-A-1:D.
Dokumentoj/Rimedoj
![]() |
RaspberryPi KMS HDMI Eliga Grafika Ŝoforo [pdf] Uzanto-manlibro KMS, HDMI-Eliga Grafika pelilo, KMS HDMI-Eligo, Grafika pelilo, KMS HDMI-Eliga Grafika pelilo, Ŝoforo |





