RaspberryPi KMS HDMI Output Graphics Driver
Kolofon
2020-2023 Raspberry Pi Ltd (biyen Raspberry Pi (Trading) Ltd.) Dokumentasi iki dilisensi miturut lisensi Creative Commons Attribution-NoDerivatives 4.0 International (CC BY-ND 4.0). tanggal mbangun: 2023-02-10 versi mbangun: githash: c65fe9c-clean
Kabar Penafian Legal
DATA TEKNIKAL lan reliabilitas kanggo PRODUK RASPBERRY PI (kalebu lembar data) sing diowahi saka wektu kanggo wektu ("SUMBER DAYA") DISEDIAKAN BY RASPBERRY PI LTD ("RPL") "AS IS" LAN JAMINAN EXPRESS UTAWA TERSIRAT, ora kalebu, TO, JAMINAN sing diwenehake kanggo MERCHANTABILITY lan FITNESS FOR A TUJUAN PARTICULAR DISCLAIMED. TO THE MAXIMUM EXTENTED BY APLIKASI LAW IN NO AVENT RPL BE LIABLE FOR ANY LANGSUNG, LANGSUNG, INCIDENTAL, KHUSUS, EXEMPLARY, UTAWA KONSEQUENTIAL RUSAK (kalebu, nanging ora winates kanggo, pengadaan barang-barang pengganti, DATA PENGGANTIAN; , Utawa bathi; UTAWA GANGGUAN BISNIS) Nanging njalari lan ing sembarang teori tanggung jawab, apa ing kontrak, TANGGUNG JAWAB KETAT, UTAWA TORT (kalebu teledor utawa liya-liyane) njedhul ing sembarang cara metu saka nggunakake sumber sumber daya, KARUSAKAN KITU. RPL nduweni hak kanggo nggawe dandan, dandan, koreksi utawa modifikasi liyane menyang RESOURCES utawa produk sing diterangake ing sawayah-wayah lan tanpa kabar luwih lanjut. SUMBER DAYA ditujokake kanggo pangguna sing trampil kanthi tingkat pengetahuan desain sing cocog. Pangguna mung tanggung jawab kanggo milih lan nggunakake RESOURCES lan aplikasi apa wae saka produk sing diterangake ing. Pangguna setuju kanggo menehi ganti rugi lan njaga RPL ora mbebayani tumrap kabeh tanggung jawab, biaya, kerusakan utawa kerugian liyane amarga nggunakake RESOURCES.RPL menehi ijin pangguna kanggo nggunakake RESOURCES mung bebarengan karo produk Raspberry Pi. Kabeh nggunakake RESOURCES liyane dilarang. Ora ana lisensi sing diwenehake marang RPL liyane utawa hak properti intelektual pihak katelu liyane. KEGIATAN RISIKO Dhuwur. Produk Raspberry Pi ora dirancang, diprodhuksi utawa dituju kanggo digunakake ing lingkungan sing mbebayani sing mbutuhake kinerja sing ora aman, kayata ing operasi fasilitas nuklir, navigasi pesawat utawa sistem komunikasi, kontrol lalu lintas udhara, sistem senjata utawa aplikasi sing penting kanggo safety (kalebu dhukungan urip). sistem lan piranti medis liyane), sing kegagalan produk bisa nyebabake pati, ciloko pribadi utawa karusakan fisik utawa lingkungan sing abot ("Kegiatan Berisiko Tinggi"). RPL khusus mbatalake sembarang babar pisan nyata utawa diwenehake saka fitness kanggo High Risk Activities lan ora tanggung jawab kanggo nggunakake utawa inklusi produk Raspberry Pi ing High Risk Kegiatan. Produk Raspberry Pi diwenehake miturut Ketentuan Standar RPL. Penyediaan RPL saka RESOURCES ora nggedhekake utawa ngowahi Ketentuan Standar RPL kalebu nanging ora diwatesi karo penafian lan jaminan sing ditulis ing.
Riwayat versi dokumen
Lingkup dokumen
Dokumen iki ditrapake kanggo produk Raspberry Pi ing ngisor iki
Pambuka
Kanthi introduksi driver grafis KMS (Kernel Mode Setting), Raspberry Pi Ltd wis ngalih saka kontrol perangkat kukuh lawas saka sistem output video lan menyang sistem grafis sumber sing luwih mbukak. Nanging, iki wis teka karo tantangan dhewe. Dokumen iki ditujokake kanggo mbantu masalah sing bisa kedadeyan nalika pindhah menyang sistem anyar. Whitepaper iki nganggep yen Raspberry Pi nglakokake Raspberry Pi OS, lan kanthi lengkap karo perangkat kukuh lan kernel paling anyar.
Terminologi
DRM: Direct Rendering Manager, subsistem kernel Linux sing digunakake kanggo komunikasi karo unit pangolahan grafis (GPU). Digunakake bebarengan karo FKMS lan KMS.
DVI: A leluhur kanggo HDMI, nanging tanpa kemampuan audio. Kabel lan adaptor HDMI menyang DVI kasedhiya kanggo nyambungake piranti Raspberry Pi menyang tampilan sing dilengkapi DVI.
EDID: Data Identifikasi Tampilan Lengkap. Format metadata kanggo piranti tampilan kanggo nggambarake kemampuane menyang sumber video. Struktur data EDID kalebu jeneng pabrikan lan nomer seri, jinis produk, ukuran tampilan fisik, lan wektu sing didhukung dening tampilan, bebarengan karo sawetara data sing kurang migunani. Sawetara tampilan bisa duwe blok EDID sing rusak, sing bisa nyebabake masalah yen cacat kasebut ora ditangani dening sistem tampilan.
FKMS (vc4-fkms-v3d): Setelan Mode Kernel Palsu. Nalika perangkat kukuh isih ngontrol hardware tingkat rendah (kanggo example, port High-Definition Multimedia Interface (HDMI), Tampilan Serial Interface (DSI), etc), perpustakaan Linux standar digunakake ing kernel dhewe. FKMS digunakake minangka standar ing Buster, nanging saiki ora digunakake kanggo KMS ing Bullseye.
HDMI: High-Definition Multimedia Interface minangka antarmuka audio/video eksklusif kanggo ngirim data video sing ora dikompres, lan data audio digital sing dikompres utawa ora dikompres.
HPD: Hotplug ndeteksi. Kabel fisik sing ditegesake dening piranti tampilan sing disambungake kanggo nuduhake ana.
KMS: Setelan Mode Kernel; weruh https://www.kernel.org/doc/html/latest/gpu/drm-kms.html kanggo rincian liyane. Ing Raspberry Pi, vc4-kms-v3d minangka pembalap sing ngetrapake KMS, lan asring diarani "pembalap KMS". Tumpukan grafis warisan: Tumpukan grafis sakabehe dileksanakake ing blob firmware VideoCore sing kapapar dening driver framebuffer Linux. Tumpukan grafis warisan wis digunakake ing mayoritas piranti Raspberry Pi Ltd nganti saiki; saiki mboko sithik diganti dening (F)KMS/DRM.
Sistem HDMI lan driver grafis
Piranti Raspberry Pi nggunakake standar HDMI, sing umum banget ing monitor LCD lan televisi modern, kanggo output video. Raspberry Pi 3 (kalebu Raspberry Pi 3B+) lan piranti sadurunge duwe port HDMI siji, sing bisa ngasilake 1920 × 1200 @60Hz nggunakake konektor HDMI ukuran lengkap. Raspberry Pi 4 duwe rong port HDMI mikro, lan bisa ngasilake output 4K ing loro port kasebut. Gumantung ing persiyapan, port HDMI 0 ing Raspberry Pi 4 bisa nganti 4kp60, nanging nalika nggunakake rong piranti output 4K sampeyan diwatesi mung p30 ing piranti kasebut. Tumpukan piranti lunak grafis, preduli saka versi, tanggung jawab kanggo interogasi piranti HDMI sing dipasang kanggo properti, lan nyetel sistem HDMI kanthi tepat. Legacy lan FKMS tumpukan loro-lorone nggunakake perangkat kukuh ing prosesor grafis VideoCore kanggo mriksa ngarsane HDMI lan properti. Ing kontras, KMS nggunakake open source, implementasine sisih ARM. Iki tegese basis kode kanggo rong sistem kasebut beda banget, lan ing sawetara kahanan iki bisa nyebabake prilaku sing beda ing antarane loro pendekatan kasebut. Piranti HDMI lan DVI ngenali dhewe menyang piranti sumber nggunakake potongan metadata sing diarani blok EDID. Iki diwaca dening piranti sumber saka piranti tampilan liwat sambungan I2C, lan iki tanggung transparent kanggo pangguna pungkasan minangka rampung dening tumpukan grafis. Blok EDID ngemot akeh informasi, nanging utamane digunakake kanggo nemtokake resolusi sing didhukung tampilan, supaya Raspberry Pi bisa disetel kanggo ngasilake resolusi sing cocog.
Carane HDMI ditangani nalika booting
Nalika pisanan powered ing, Raspberry Pi liwat sawetara stages, dikenal minangka boot stages:
- Pisanan-stage, bootloader basis ROM miwiti munggah VideoCore GPU.
- Kapindho-stage bootloader (iki bootcode.bin ing kertu SD ing piranti sadurunge Raspberry Pi 4, lan ing SPI EEPROM ing Raspberry Pi 4):
- Ing Raspberry Pi 4, detik-stage bootloader bakal miwiti munggah sistem HDMI, interogasi tampilan kanggo mode bisa, banjur nyetel tampilan jumbuh. Ing titik iki tampilan digunakake kanggo nyedhiyani data diagnostik dhasar.
- Tampilan diagnostik bootloader (07 Des 2022 lan sabanjure) bakal nampilake status tampilan apa wae sing dipasang (apa Hotplug Detect (HPD) ana, lan apa blok EDID wis pulih saka tampilan).
- Firmware VideoCore (start.elf) dimuat lan mbukak. Iki bakal njupuk alih kontrol sistem HDMI, maca blok EDID saka sembarang layar ditempelake, lan nuduhake layar pelangi ing tampilan kasebut.
- Kernel Linux boot
- Sajrone boot kernel, KMS bakal njupuk alih kontrol sistem HDMI saka perangkat kukuh. Sawise maneh pemblokiran EDID diwaca saka sembarang tampilan ditempelake, lan informasi iki digunakake kanggo nyiyapake console Linux lan desktop.
Kemungkinan masalah lan gejala
Gejala kegagalan sing paling umum dialami nalika pindhah menyang KMS yaiku boot sing wiwitane apik, kanthi layar bootloader banjur layar pelangi katon, banjur sawise sawetara detik tampilan dadi ireng lan ora urip maneh. Titik ing tampilan dadi ireng nyatane titik nalika proses booting kernel nalika driver KMS njupuk alih tampilan saka perangkat kukuh. Raspberry Pi saiki mlaku ing kabeh babagan kajaba kanggo output HDMI, dadi yen SSH diaktifake, sampeyan kudu bisa mlebu menyang piranti kanthi rute kasebut. LED akses kertu SD ijo biasane bakal kedhip sok-sok. Sampeyan uga bisa sing ora weruh output HDMI ing kabeh; ora ana tampilan bootloader, lan ora ana layar pelangi. Iki biasane bisa disebabake kesalahan hardware.
Diagnosa kesalahan
Ora ana output HDMI ing kabeh
Bisa uga piranti kasebut durung boot, nanging iki ana ing njaba wewenang kertas putih iki. Kanthi nganggep yen prilaku sing diamati minangka masalah tampilan, kekurangan output HDMI sajrone proses booting biasane amarga kesalahan hardware. Ana sawetara opsi sing bisa ditindakake:
- Kabel HDMI rusak
- Coba kabel anyar. Sawetara kabel, utamane sing murah banget, bisa uga ora ngemot kabeh jalur komunikasi sing dibutuhake (contone, hotplug) supaya Raspberry Pi bisa ndeteksi tampilan kasebut.
- Port HDMI sing rusak ing Raspberry Pi
- Yen sampeyan nggunakake Raspberry Pi 4, coba port HDMI liyane.
- Port HDMI sing rusak ing monitor
- Kadhangkala port HDMI ing monitor utawa TV bisa rusak. Coba port liyane yen piranti duwe.
- Arang banget, piranti tampilan mung bisa nyedhiyakake data EDID nalika diuripake, utawa nalika port sing bener dipilih. Kanggo mriksa, priksa manawa piranti urip lan port input sing bener wis dipilih.
- Piranti tampilan ora negesake hotplug detect line
Output awal, banjur layar dadi ireng
Yen tampilan muncul nanging banjur mati nalika boot kernel Linux, ana sawetara panyebab, lan iki biasane ana gandhengane karo masalah maca EDID saka piranti tampilan. Kaya sing bisa dideleng saka bagean ing ndhuwur sing gegayutan karo urutan boot, EDID diwaca ing sawetara titik sing beda sajrone proses boot, lan saben wacan kasebut ditindakake dening piranti lunak sing beda. Waca pungkasan, nalika KMS njupuk alih, ditindakake kanthi kode kernel Linux hulu sing ora diowahi, lan iki ora nangani format EDID sing rusak uga piranti lunak perangkat kukuh sadurungé. Iki sebabe tampilan bisa mandheg kanthi bener yen KMS njupuk alih. Ana sawetara cara kanggo konfirmasi manawa KMS gagal maca EDID, lan loro yaiku ing ngisor iki.
Priksa layar diagnostik bootloader (mung Raspberry Pi 4)
CATETAN
Diagnosa bootloader mbutuhake bootloader anyar. Sampeyan bisa nganyarke menyang versi paling anyar nggunakake pandhuan iki: https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#updating-the-bootloader Copot kertu SD lan urip maneh Raspberry Pi. Pencet ESC ing layar Instal OS, lan layar diagnostik kudu katon ing piranti tampilan. Mesthine ana garis ing tampilan sing diwiwiti kanthi tampilan: - contoneample:
- tampilan: DISP0: HDMI HPD=1 EDID=ok #2 DISP1: HPD=0 EDID=none #0
Output saka Raspberry Pi 4 iki nuduhake yen sistem ndeteksi tampilan HDMI ing port HDMI 0, deteksi hotplug ditegesake, lan EDID diwaca OK. Ora ana sing ditemokake ing port HDMI 1.
Priksa manawa sistem KMS ndeteksi EDID
Kanggo mriksa iki, sampeyan kudu mlebu menyang piranti Raspberry Pi liwat SSH saka komputer liyane. SSH bisa diaktifake nalika nggawe gambar kertu SD nganggo Raspberry Pi Imager, nggunakake opsi Setelan Lanjut. Ngaktifake SSH ing kertu SD sing wis digambar luwih rumit: sampeyan kudu nggunakake komputer liyane kanggo nambah file jenenge ssh menyang partisi boot. Ganti kertu SD ing Raspberry Pi asli lan daya munggah. Iki kudu ngaktifake SSH, kanthi alamat IP sing diwenehake dening DHCP. Sawise mlebu, ketik ing ngisor iki ing pituduh terminal kanggo nampilake isi EDID sing dideteksi (sampeyan kudu ngganti HDMI-A-1 dadi HDMI-A-2 gumantung ing port HDMI ing Raspberry Pi piranti tampilan disambungake menyang): cat /sys/class/drm/card?-HDMI-A-1/edid Yen ora ana folder sing jenenge kertu?-HDMI-A-1 utawa sing padha, mula ora ana EDID sing bisa diwaca saka tampilan. piranti.
CATETAN
Ing kasus nalika EDID kasil diwaca, ana virtual migunani file ing folder sing padha, disebut mode, kang nalika ditampilake nuduhake kabeh mode bisa EDID claims piranti ndhukung.
Mitigasi
Hotplug ndeteksi Gagal Yen loro perangkat kukuh lan KMS gagal nemokake monitor ditempelake, iku bisa dadi Gagal deteksi hotplug - IE, Raspberry Pi ora ngerti piranti wis kepasang, supaya ora mriksa EDID. Iki bisa uga disebabake kabel sing ala, utawa piranti tampilan sing ora negesake hotplug kanthi bener. Sampeyan bisa meksa hotplug ndeteksi kanthi ngganti baris printah kernel file (cmdline.txt) sing disimpen ing partisi boot saka kertu SD Raspberry Pi OS. Sampeyan bisa nyunting iki file ing sistem liyane, nggunakake editor apa wae sing disenengi. Tambah ing ngisor iki kanggo mburi cmdline.txt file: video=HDMI-A-1:1280×720@60D Yen sampeyan nggunakake port HDMI kapindho, ngganti HDMI-A-1 karo HDMI-A-2. Sampeyan uga bisa nemtokake resolusi lan tingkat pigura sing beda, nanging priksa manawa sampeyan milih sing didhukung piranti tampilan.
CATETAN
Dokumentasi babagan setelan baris perintah kernel kanggo video bisa ditemokake ing kene: https://www.kernel.org/doc/Documentation/fb/modedb.txt
WARNING
Tumpukan grafis lawas ndhukung nggunakake entri config.txt kanggo nyetel hotplug ndeteksi, nanging ing wektu nulis iki ora bisa karo KMS. Bisa uga didhukung ing rilis perangkat kukuh mbesuk. Entri config.txt punika hdmi_force_hotplug, lan sampeyan bisa nemtokake port HDMI tartamtu sing hotplug ditrapake kanggo nggunakake salah siji hdmi_force_hotplug: 0 = 1 utawa hdmi_force_hotplug: 1 = 1. Elinga yen nomenklatur kanggo KMS nuduhake port HDMI minangka 1 lan 2, dene Raspberry Pi nggunakake 0 lan 1.
masalah EDID
Sawetara piranti tampilan ora bisa ngasilake EDID yen dipateni, utawa nalika input AV salah dipilih. Iki bisa dadi masalah nalika Raspberry Pi lan piranti tampilan ing Strip daya padha, lan piranti Raspberry Pi boots luwih cepet saka tampilan. Kanthi piranti kaya iki, sampeyan bisa uga kudu nyedhiyakake EDID kanthi manual. Luwih ora biasa, sawetara piranti tampilan duwe blok EDID sing formate ora apik lan ora bisa diurai dening sistem KMS EDID. Ing kahanan kasebut, bisa uga maca EDID saka piranti kanthi resolusi sing padha lan nggunakake. Ing kasus apa wae, pandhuan ing ngisor iki nemtokake cara maca EDID saka piranti tampilan lan ngatur KMS kanggo nggunakake, tinimbang KMS nyoba interogasi piranti kasebut kanthi langsung.
Nyalin EDID menyang a file
Nggawe a file ngemot metadata EDID saka ngeruk biasane ora layak, lan nggunakake sing wis ana luwih gampang. Umume bisa njupuk EDID saka piranti tampilan lan nyimpen ing kertu SD Raspberry Pi supaya bisa digunakake dening KMS tinimbang njupuk EDID saka piranti tampilan. Pilihan sing paling gampang ing kene yaiku kanggo mesthekake yen piranti tampilan wis aktif lan ing input AV sing bener, lan Raspberry Pi wis miwiti sistem HDMI kanthi bener. Saka terminal, sampeyan saiki bisa nyalin EDID menyang a file kanthi printah ing ngisor iki: sudo cp /sys/class/drm/card?-HDMI-A-1/edid /lib/firmware/myedid.dat Yen sakperangan alesan EDID ora ana, sampeyan bisa boot piranti ing non -Mode KMS sing sukses ing boot menyang desktop utawa console, banjur nyalin EDID sing firmware bakal (muga-muga) kasil diwaca menyang file.
- Boot menyang mode grafis lawas.
- Sunting config.txt ing partisi boot, priksa manawa sampeyan mbukak editor sampeyan nggunakake sudo, lan ganti baris sing ujar dtoverlay = vc4-kms-v3d dadi #dtoverlay = vc4-kms-v3d.
- Urip maneh.
- Konsol desktop utawa login saiki kudu katon.
- Nggunakake terminal, nyalin EDID saka piranti tampilan sing ditempelake menyang a file kanthi printah ing ngisor iki:
- tvservice -d myedid.dat sudo mv myedid.dat /lib/firmware/
Nggunakake a file-based EDID tinimbang interogasi piranti tampilan Sunting /boot/cmdline.txt, nggawe manawa kanggo mbukak editor nggunakake sudo, lan nambah ing ngisor iki kanggo baris printah kernel: drm.edid_firmware=myedid.dat Sampeyan bisa aplikasi EDID menyang a port HDMI tartamtu kaya ing ngisor iki: drm.edid_firmware=HDMI-A-1:myedid.dat Yen perlu, boot maneh menyang mode KMS kanthi nindakake ing ngisor iki:
- Sunting config.txt ing partisi boot, priksa manawa sampeyan mbukak editor nggunakake sudo, lan ganti baris sing ujar #dtoverlay = vc4-kms-v3d dadi dtoverlay = vc4-kms-v3d.
- Urip maneh.
CATETAN
Yen sampeyan nggunakake a file-based EDID, nanging isih duwe masalah karo hotplug, sampeyan bisa meksa deteksi hotplug kanthi nambah ing ngisor iki kanggo baris printah kernel: video = HDMI-A-1: D.
Dokumen / Sumber Daya
![]() |
RaspberryPi KMS HDMI Output Graphics Driver [pdf] Manual pangguna KMS, Driver Grafik Output HDMI, Output HDMI KMS, Driver Grafis, Driver Grafis Output HDMI KMS, Driver |