RaspberryPi KMS HDMI Output Graphics Driver

Kolophon
2020-2023 Raspberry Pi Ltd (kanhi Raspberry Pi (Trading) Ltd.) Kini nga dokumentasyon lisensyado ubos sa Creative Commons Attribution-NoDerivatives 4.0 International (CC BY-ND 4.0) nga lisensya. petsa sa pagtukod: 2023-02-10 pagtukod-bersyon: githash: c65fe9c-limpyo
Legal nga Disclaimer Notice
TEKNIKAL UG KASALIG NGA DATA PARA SA MGA PRODUKTO SA RASPBERRY PI (KASULOD SA MGA DATASHEETS) AS NGA GIusab GIKAN SA PANAHON SA PANAHON (“RESOURCES”) GIHATAG SA RASPBERRY PI LTD (“RPL”) “AS IS” UG BISAN UNSANG GIPASABOT O GIPAHIBALO NGA WARRANTY, DILI LIMITADO, SA, ANG GIPAHIBALO NGA MGA WARRANTY SA KALIGTASAN UG KAAYOHAN PARA SA USA KA PARTIKULAR NGA KATUYOAN GISAYAG. HANGTOD SA LABING KASABOT NGA GITUGOT SA MAHIMONG BALAOD SA WALAY HITABO NGA ANG RPL MAHIMONG TUBAG ALANG SA BISAN UNSANG DIREKTO, INDIREKTO, INSIDENTAL, ESPESYAL, EKSEMPLARY, O HINUNGDANONG MGA KADOT (API, APAN DILI LIMITADO SA, PAGPANGHILI SA SUBSTITUTE NGA MGA SERBISYO, DILI LIMITADO; , O GANTOS; O BUSINESS INTERRUPTION) BISAN UNSAY HINUNGDAN UG SA BISAN UNSANG TEORYA SA LIABILIDAD, BISAN SA KONTRATA, ESTRIKTO NGA LIABILIDAD, O TORT (KASULOD ANG PAGPASAYD O UBAN PA) NGA NAGTUBO SA BISAN UNSANG PAAGI GAWAS SA PAGGAMIT SA MGA RESOURCES, SA MAONG KAdaut. Ang RPL adunay katungod sa paghimo sa bisan unsang mga pagpauswag, pagpaayo, pagkorihir o bisan unsang uban pang mga pagbag-o sa mga RESOURCES o bisan unsang mga produkto nga gihulagway niini bisan unsang oras ug wala’y dugang nga pahibalo. Ang mga RESOURCES gituyo alang sa mga hanas nga tiggamit nga adunay angay nga lebel sa kahibalo sa disenyo. Ang mga tiggamit mao lamang ang responsable sa ilang pagpili ug paggamit sa mga RESOURCES ug bisan unsang aplikasyon sa mga produkto nga gihulagway niini. Miuyon ang user nga bayran ug huptan nga dili makadaot ang RPL batok sa tanang utang, gasto, danyos o uban pang kapildihan nga mitumaw gikan sa ilang paggamit sa RESOURCES. Ang RPL naghatag ug pagtugot sa mga tiggamit sa paggamit sa RESOURCES dungan sa mga produkto sa Raspberry Pi. Gidili ang tanang ubang paggamit sa RESOURCES. Wala’y lisensya nga gihatag sa bisan unsang ubang RPL o uban pang ikatulo nga partido nga katungod sa intelektwal nga kabtangan. HIGH RISK NGA KALIHOKAN. Ang mga produkto sa Raspberry Pi wala gidesinyo, gigama o gituyo alang sa paggamit sa peligroso nga mga palibot nga nanginahanglan mapakyas nga luwas nga performance, sama sa operasyon sa mga pasilidad sa nukleyar, nabigasyon sa ayroplano o sistema sa komunikasyon, kontrol sa trapiko sa kahanginan, mga sistema sa armas o mga aplikasyon nga kritikal sa kaluwasan (lakip ang suporta sa kinabuhi. sistema ug uban pang medikal nga mga himan), diin ang kapakyasan sa mga produkto mahimong direktang mosangpot sa kamatayon, personal nga kadaot o grabeng kadaot sa pisikal o kinaiyahan (“High Risk Activities”). Ang RPL espesipikong nagsalikway sa bisan unsang dayag o gipasabot nga garantiya sa kaangayan alang sa Taas nga Risk nga Kalihokan ug wala modawat og tulubagon sa paggamit o paglakip sa mga produkto sa Raspberry Pi sa Taas nga Risk nga Kalihokan. Ang mga produkto sa Raspberry Pi gihatag ubos sa RPL's Standard Terms. Ang probisyon sa RPL sa RESOURCES wala magpalapad o mag-usab sa Standard Terms sa RPL lakip na apan dili limitado sa mga disclaimer ug warranty nga gipahayag niini.
Kasaysayan sa bersyon sa dokumento

Sakop sa dokumento
Kini nga dokumento magamit sa mosunod nga mga produkto sa Raspberry Pi

Pasiuna
Uban sa pagpaila sa KMS (Kernel Mode Setting) graphics driver, ang Raspberry Pi Ltd nagpalayo gikan sa legacy firmware control sa video output system ug padulong sa mas open source graphics system. Bisan pa, kini adunay kaugalingon nga hugpong sa mga hagit. Kini nga dokumento gituyo aron makatabang sa bisan unsang mga isyu nga mahimong motumaw kung mobalhin sa bag-ong sistema. Kini nga whitepaper nagtuo nga ang Raspberry Pi nagpadagan sa Raspberry Pi OS, ug hingpit nga napapanahon sa pinakabag-o nga firmware ug mga kernels.
Terminolohiya
DRM: Direct Rendering Manager, usa ka subsystem sa Linux kernel nga gigamit sa pagpakigsulti sa mga graphics processing units (GPUs). Gigamit sa pakigtambayayong sa FKMS ug KMS.
DVI: Usa ka gisundan sa HDMI, apan wala ang mga kapabilidad sa audio. Ang HDMI ngadto sa DVI nga mga kable ug mga adapter anaa aron makonektar ang usa ka Raspberry Pi device ngadto sa usa ka DVI-equipped display.
EDID: Gipadako nga Data sa Pag-ila sa Pagpakita. Usa ka format sa metadata alang sa mga aparato sa pagpakita aron ihulagway ang ilang mga kapabilidad sa usa ka gigikanan sa video. Ang istruktura sa datos sa EDID naglakip sa ngalan sa tiggama ug serial number, tipo sa produkto, gidak-on sa pisikal nga pagpakita, ug ang mga timing nga gisuportahan sa display, uban ang pipila nga dili kaayo mapuslanon nga datos. Ang ubang mga display mahimong adunay mga depekto nga EDID blocks, nga mahimong hinungdan sa mga problema kung ang mga depekto dili madumala sa display system.
FKMS (vc4-fkms-v3d): Peke nga Kernel Mode Setting. Samtang ang firmware nagkontrol gihapon sa ubos nga lebel nga hardware (alang sa example, ang High-Definition Multimedia Interface (HDMI) nga mga pantalan, ang Display Serial Interface (DSI), etc), ang standard nga mga librarya sa Linux gigamit sa kernel mismo. Ang FKMS gigamit nga default sa Buster, apan karon wala na gigamit pabor sa KMS sa Bullseye.
HDMI: Ang High-Definition Multimedia Interface kay usa ka proprietary audio/video interface para sa pagpasa sa wala ma-compress nga video data, ug compressed o uncompressed digital audio data.
HPD: Namatikdan ang hotplug. Usa ka pisikal nga wire nga gipahayag sa usa ka konektado nga aparato sa pagpakita aron ipakita nga kini naa.
KMS: Pag-set sa Kernel Mode; tan-awa https://www.kernel.org/doc/html/latest/gpu/drm-kms.html para sa dugang detalye. Sa Raspberry Pi, ang vc4-kms-v3d usa ka drayber nga nagpatuman sa KMS, ug sagad gitawag nga "ang driver sa KMS". Legacy graphics stack: Usa ka graphics stack nga hingpit nga gipatuman sa VideoCore firmware blob nga gibutyag sa usa ka driver sa Linux framebuffer. Ang legacy graphics stack gigamit sa kadaghanan sa Raspberry Pi Ltd nga mga himan hangtod karon; kini karon inanay nga gipulihan sa (F)KMS/DRM.
Ang HDMI nga sistema ug ang mga drayber sa graphic
Ang Raspberry Pi nga mga himan naggamit sa HDMI standard, nga komon kaayo sa modernong LCD monitor ug telebisyon, alang sa video output. Ang Raspberry Pi 3 (lakip ang Raspberry Pi 3B+) ug ang naunang mga device adunay usa ka HDMI port, nga makahimo sa 1920 × 1200 @60Hz output gamit ang usa ka full-size nga HDMI connector. Ang Raspberry Pi 4 adunay duha ka micro HDMI port, ug makahimo sa 4K output sa duha ka port. Depende sa pag-setup, ang HDMI 0 port sa Raspberry Pi 4 adunay katakus hangtod sa 4kp60, apan kung mogamit duha ka 4K output nga aparato limitado ka sa p30 sa parehas nga mga aparato. Ang graphic software stack, bisan unsa pa ang bersyon, responsable sa pagsukitsukit sa gilakip nga mga aparato sa HDMI alang sa ilang mga kabtangan, ug pag-set up sa HDMI system sa hustong paagi. Ang legacy ug FKMS stacks parehong naggamit sa firmware sa VideoCore graphics processor aron masusi ang presensya ug mga kabtangan sa HDMI. Sa kasukwahi, ang KMS naggamit sa usa ka bug-os nga open source, ARM-side nga pagpatuman. Kini nagpasabot nga ang mga base sa kodigo alang sa duha ka mga sistema hingpit nga lahi, ug sa pipila ka mga kahimtang kini mahimong moresulta sa lain-laing kinaiya tali sa duha ka mga pamaagi. Ang mga aparato sa HDMI ug DVI nagpaila sa ilang kaugalingon sa gigikanan nga aparato gamit ang usa ka piraso sa metadata nga gitawag nga EDID block. Gibasa kini sa source device gikan sa display device pinaagi sa koneksyon sa I2C, ug kini bug-os nga transparent sa end user kay gihimo kini sa graphics stack. Ang EDID block naglangkob sa daghang kasayuran, apan kini gigamit sa panguna aron mahibal-an kung unsang mga resolusyon ang gisuportahan sa display, mao nga ang Raspberry Pi mahimong ma-set up aron ma-output ang usa ka angay nga resolusyon.
Giunsa ang pagdumala sa HDMI sa panahon sa pag-boot
Kung una nga gipaandar, ang Raspberry Pi moagi sa daghang mga stages, nailhan nga boot stages:
- Ang unang-stage, ang bootloader nga nakabase sa ROM nagsugod sa VideoCore GPU.
- Ikaduha-stage bootloader (kini mao ang bootcode.bin sa SD card sa mga device sa wala pa ang Raspberry Pi 4, ug sa SPI EEPROM sa Raspberry Pi 4):
- Sa Raspberry Pi 4, ang ikaduha-stage bootloader magsugod sa HDMI system, interogasyon sa display alang sa posible nga mga mode, unya i-set up ang display sa tukma. Niini nga punto ang display gigamit sa paghatag og batakang diagnostic data.
- Ang bootloader diagnostic display (07 Dis 2022 pataas) magpakita sa status sa bisan unsang gilakip nga mga display (kon ang Hotplug Detect (HPD) anaa, ug kung ang EDID block nakuha gikan sa display).
- Ang VideoCore firmware (start.elf) gikarga ug gipadagan. Kini ang mopuli sa kontrol sa HDMI system, basaha ang EDID block gikan sa bisan unsang gilakip nga mga display, ug ipakita ang rainbow screen sa mga display.
- Ang Linux kernel boots
- Atol sa kernel boot, ang KMS ang mopuli sa kontrol sa HDMI system gikan sa firmware. Sa makausa pa ang EDID block gibasa gikan sa bisan unsang gilakip nga mga display, ug kini nga impormasyon gigamit sa pag-set up sa Linux console ug desktop.
Posibleng mga problema ug sintomas
Ang labing kasagarang sintomas sa kapakyasan nga nasinati sa dihang mobalhin sa KMS mao ang una nga maayong boot, nga ang bootloader screen ug dayon ang rainbow screen nga makita, gisundan human sa pipila ka segundo sa display nga itom ug dili na mobalik. Ang punto diin ang display nahimong itom sa pagkatinuod mao ang punto sa panahon sa kernel booting nga proseso sa dihang ang KMS driver maoy mopuli sa pagpadagan sa display gikan sa firmware. Ang Raspberry Pi sa pagkakaron nagdagan sa tanang bahin gawas sa HDMI output, mao nga kung ang SSH ma-enable nan kinahanglan nga maka-log in ka sa device pinaagi sa maong rota. Ang green SD card access LED kasagarang mokidlap usahay. Posible usab nga dili nimo makita ang output sa HDMI; walay bootloader display, ug walay rainbow screen. Kasagaran kini mahimong hinungdan sa usa ka sayup sa hardware.
Pag-diagnose sa sayup
Walay HDMI output sa tanan
Posible nga ang aparato wala pa nag-boot, apan kini sa gawas sa pagtugot niining puti nga papel. Sa paghunahuna nga ang naobserbahan nga pamatasan usa ka problema sa pagpakita, ang kakulang sa output sa HDMI sa bisan unsang bahin sa proseso sa pag-boot kasagaran tungod sa usa ka sayup sa hardware. Adunay daghang posible nga mga kapilian:
- Depekto nga HDMI cable
- Sulayi ang usa ka bag-ong cable. Ang ubang mga kable, ilabina nga barato kaayo, mahimong wala maglangkob sa tanang gikinahanglang linya sa komunikasyon (eg hotplug) para sa Raspberry Pi nga malampusong makamatikod sa display.
- Depekto nga HDMI port sa Raspberry Pi
- Kung naggamit ka og Raspberry Pi 4, sulayi ang laing HDMI port.
- Depekto nga HDMI port sa monitor
- Usahay ang HDMI port sa monitor o TV mahimong mahurot. Sulayi ang lain nga pantalan kung ang aparato adunay usa.
- Panagsa ra, ang usa ka aparato sa pagpakita mahimo ra maghatag data sa EDID kung gi-on, o kung gipili ang husto nga pantalan. Aron masusi, siguroha nga ang aparato naka-on ug ang husto nga input port gipili.
- Ipakita ang device nga wala magpahayag sa hotplug detect line
Inisyal nga output, unya ang screen moitom
Kung ang display moabut apan unya mawala sa panahon sa Linux kernel boot, adunay daghang posible nga mga hinungdan, ug kini kasagaran nga may kalabutan sa usa ka problema sa pagbasa sa EDID gikan sa display device. Sama sa makita gikan sa seksyon sa ibabaw nga naghisgot sa pagkasunod-sunod sa boot, ang EDID gibasa sa daghang lainlaing mga punto sa panahon sa proseso sa boot, ug ang matag usa niini nga mga pagbasa gihimo sa lainlaing piraso sa software. Ang katapusan nga pagbasa, kung ang KMS ang mopuli, gihimo pinaagi sa wala mausab nga upstream nga Linux kernel code, ug kini wala magdumala sa mga depekto nga format sa EDID ingon man ang naunang firmware software. Mao kini ang hinungdan nga ang display mahimong mohunong sa pagtrabaho sa husto sa higayon nga ang KMS mopuli. Adunay daghang mga paagi aron makumpirma kung ang KMS napakyas sa pagbasa sa EDID, ug ang duha niini mao ang mosunod.
Susiha ang bootloader diagnostic screen (Raspberry Pi 4 lamang)
NOTA
Ang mga diagnostic sa bootloader nanginahanglan usa ka bag-o nga bootloader. Mahimo kang mag-upgrade sa pinakabag-o nga bersyon gamit kini nga mga instruksyon: https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#updating-the-bootloader Kuhaa ang SD card ug i-reboot ang Raspberry Pi. Pindota ang ESC sa Install OS screen, ug ang diagnostic screen kinahanglang makita sa display device. Kinahanglan adunay usa ka linya sa display nga magsugod sa display: — alang sa example:
- display: DISP0: HDMI HPD=1 EDID=ok #2 DISP1: HPD=0 EDID=walay #0
Kini nga output gikan sa usa ka Raspberry Pi 4 nagpakita nga ang sistema nakamatikod sa usa ka HDMI display sa HDMI port 0, ang hotplug detect gipahayag, ug ang EDID gibasa OK. Walay nakit-an sa HDMI port 1.
Susiha kung ang sistema sa KMS nakamatikod ug EDID
Aron masusi kini kinahanglan nimo nga mag-log in sa Raspberry Pi device sa SSH gikan sa laing computer. Mahimong ma-enable ang SSH kung maghimo usa ka imahe sa SD card nga adunay Raspberry Pi Imager, gamit ang mga kapilian sa Advanced Settings. Ang pagpagana sa SSH sa usa ka SD card nga na-imagen na kay mas komplikado: kinahanglan nimo nga mogamit og laing computer aron makadugang og file ginganlan og ssh sa boot partition. Ilisan ang SD card sa orihinal nga Raspberry Pi ug i-power kini. Kini kinahanglan nga makahimo sa SSH, nga adunay IP address nga gigahin sa DHCP. Kung naka-log in, i-type ang mosunod sa terminal prompt aron ipakita ang mga sulod sa bisan unsang EDID nga nakit-an (mahimo nimong usbon ang HDMI-A-1 ngadto sa HDMI-A-2 depende kung asa nga HDMI port sa Raspberry Pi ang display device konektado sa): cat /sys/class/drm/card?-HDMI-A-1/edid Kung walay folder nga ginganlan og card?-HDMI-A-1 o susama, nan lagmit nga walay EDID nga mabasa gikan sa display kahimanan.
NOTA
Sa kaso diin ang EDID malampuson nga gibasa, adunay usa ka mapuslanon nga virtual file sa parehas nga folder, gitawag nga mga mode, nga kung gipakita nagpakita ang tanan nga posible nga mga mode nga giangkon sa EDID nga gisuportahan sa aparato.
Mga pagpaminus
Ang Hotplug detection failure Kung ang firmware ug KMS mapakyas sa pagpangita sa gilakip nga monitor, kini mahimong usa ka hotplug detection failure — ie, ang Raspberry Pi wala mahibalo nga ang usa ka device nasaksak na, mao nga wala kini magsusi sa EDID. Mahimo kini tungod sa usa ka dili maayo nga kable, o usa ka aparato sa pagpakita nga wala ipahayag ang hotplug sa husto. Mahimo nimong pugson ang usa ka hotplug detect pinaagi sa pag-usab sa kernel command line file (cmdline.txt) nga gitipigan sa boot partition sa Raspberry Pi OS SD card. Mahimo nimong usbon kini file sa laing sistema, gamit ang bisan unsang editor nga gusto nimo. Idugang ang mosunod sa katapusan sa cmdline.txt file: video=HDMI-A-1:1280×720@60D Kon ikaw naggamit sa ikaduhang HDMI port, ilisan ang HDMI-A-1 sa HDMI-A-2. Mahimo usab nimong itakda ang lahi nga resolusyon ug rate sa frame, apan siguroha nga imong pilion ang mga gisuportahan sa display device.
NOTA
Ang dokumentasyon sa mga setting sa kernel command line alang sa video makita dinhi: https://www.kernel.org/doc/Documentation/fb/modedb.txt
WARNING
Ang mas karaan nga mga graphic stack nagsuporta sa paggamit sa usa ka config.txt entry aron itakda ang hotplug detect, apan sa panahon sa pagsulat dili kini magamit sa KMS. Mahimong suportahan kini sa umaabot nga pagpagawas sa firmware. Ang config.txt entry kay hdmi_force_hotplug, ug mahimo nimong ipiho ang piho nga HDMI port nga magamit sa hotplug gamit ang hdmi_force_hotplug:0=1 o hdmi_force_hotplug:1=1. Timan-i nga ang nomenclature alang sa KMS nagtumong sa HDMI ports isip 1 ug 2, samtang ang Raspberry Pi naggamit sa 0 ug 1.
Mga problema sa EDID
Ang usa ka minoriya sa mga aparato sa pagpakita dili makahimo sa pagbalik sa usa ka EDID kung kini gipalong, o kung gipili ang sayup nga input sa AV. Mahimo kini nga isyu kung ang Raspberry Pi ug ang mga aparato sa pagpakita naa sa parehas nga gilis sa gahum, ug ang aparato sa Raspberry Pi mas paspas kaysa sa display. Uban sa mga himan nga sama niini, kinahanglan nimo nga maghatag usa ka EDID nga mano-mano. Labaw pa sa talagsaon, ang ubang mga display device adunay EDID blocks nga dili maayo ang pagkaporma ug dili ma-parse sa KMS EDID system. Niini nga mga kahimtang, mahimong posible nga basahon ang usa ka EDID gikan sa usa ka aparato nga adunay parehas nga resolusyon ug gamiton kana. Sa bisan hain nga kaso, ang mosunod nga mga instruksyon naglatid kon unsaon pagbasa ang EDID gikan sa display device ug i-configure ang KMS nga gamiton kini, imbes nga KMS nga mosulay sa pagsukitsukit sa device direkta.
Pagkopya sa EDID sa a file
Paghimo a file nga adunay sulod nga EDID metadata gikan sa sinugdan dili kasagaran mahimo, ug ang paggamit sa usa nga anaa na mas sayon. Sa kasagaran posible nga makakuha og EDID gikan sa display device ug tipigan kini sa Raspberry Pi's SD card aron kini magamit sa KMS imbes nga makakuha og EDID gikan sa display device. Ang labing sayon nga kapilian dinhi mao ang pagsiguro nga ang display device anaa ug nagdagan ug sa husto nga AV input, ug nga ang Raspberry Pi nagsugod sa HDMI nga sistema sa husto. Gikan sa terminal, mahimo nimong kopyahon ang EDID sa a file uban sa mosunod nga sugo: sudo cp /sys/class/drm/card?-HDMI-A-1/edid /lib/firmware/myedid.dat Kung sa usa ka rason wala ang EDID, mahimo nimong i-boot ang device sa non -KMS mode nga molampos sa pag-boot sa desktop o console, unya kopyaha ang EDID nga ang firmware (hinaot) malampuson nga mabasa sa usa ka file.
- Pag-boot sa legacy graphics mode.
- I-edit ang config.txt sa boot partition, pagsiguro nga modagan ang imong editor gamit ang sudo, ug usba ang linya nga nag-ingon nga dtoverlay=vc4-kms-v3d ngadto sa #dtoverlay=vc4-kms-v3d.
- Pag-reboot.
- Ang desktop o login console kinahanglan na nga makita.
- Gamit ang terminal, kopyaha ang EDID gikan sa gilakip nga display device ngadto sa a file uban sa mosunod nga sugo:
- tvservice -d myedid.dat sudo mv myedid.dat /lib/firmware/
Gamit ang a file-based EDID imbes nga usisahon ang display device Edit /boot/cmdline.txt, pagsiguro nga modagan ang imong editor gamit ang sudo, ug idugang ang mosunod sa kernel command line: drm.edid_firmware=myedid.dat Mahimo nimong ipadapat ang EDID sa usa ka espesipikong HDMI port sama sa mosunod: drm.edid_firmware=HDMI-A-1:myedid.dat Kon gikinahanglan, boot balik sa KMS mode pinaagi sa pagbuhat sa mosunod:
- I-edit ang config.txt sa boot partition, pagsiguro nga modagan ang imong editor gamit ang sudo, ug usba ang linya nga nag-ingon #dtoverlay=vc4-kms-v3d ngadto sa dtoverlay=vc4-kms-v3d.
- Pag-reboot.
NOTA
Kung mogamit ka a file-based EDID, apan adunay mga problema sa hotplug, mahimo nimong pugson ang hotplug detection pinaagi sa pagdugang sa mosunod sa kernel command line: video=HDMI-A-1:D.
Mga Dokumento / Mga Kapanguhaan
![]() |
RaspberryPi KMS HDMI Output Graphics Driver [pdf] Manwal sa Gumagamit KMS, HDMI Output Graphics Driver, KMS HDMI Output, Graphics Driver, KMS HDMI Output Graphics Driver, Driver |





