RaspberryPi-LOGO

Driver Grafis Keluaran HDMI RaspberryPi KMS

RaspberryPi-KMS-HDMI-Output-Grafis-Driver-PRODACT-IMG

Tanda penerbit

2020-2023 Raspberry Pi Ltd (sebelumnya Raspberry Pi (Trading) Ltd.) Dokumentasi ini dilisensikan dengan lisensi Creative Commons Attribution-NoDerivatives 4.0 International (CC BY-ND 4.0). tanggal pembuatan: 2023-02-10 versi pembuatan: githash: c65fe9c-clean

Pemberitahuan Penafian Hukum

DATA TEKNIS DAN KEANDALAN UNTUK PRODUK RASPBERRY PI (TERMASUK LEMBAR DATA) SEBAGAIMANA DIUBAH DARI WAKTU KE WAKTU (“SUMBERDAYA”) YANG DISEDIAKAN OLEH RASPBERRY PI LTD (“RPL”) “SEBAGAIMANA ADANYA” DAN SETIAP GARANSI TERSURAT MAUPUN TERSIRAT, TERMASUK, NAMUN TIDAK TERBATAS UNTUK, JAMINAN TERSIRAT TENTANG DAGANG DAN KESESUAIAN UNTUK TUJUAN TERTENTU DITOLAK. SEJAUH YANG DIIZINKAN OLEH HUKUM YANG BERLAKU DALAM KEADAAN APA PUN, RPL TIDAK BERTANGGUNG JAWAB ATAS KERUSAKAN LANGSUNG, TIDAK LANGSUNG, INSIDENTAL, KHUSUS, CONTOH, ATAU KONSEKUENSIAL (TERMASUK, NAMUN TIDAK TERBATAS PADA, PENGADAAN BARANG ATAU LAYANAN PENGGANTI; KEHILANGAN PENGGUNAAN, DATA , ATAU KEUNTUNGAN; ATAU GANGGUAN BISNIS) NAMUN PENYEBABNYA DAN BERDASARKAN TEORI TANGGUNG JAWAB APA PUN, BAIK DALAM KONTRAK, TANGGUNG JAWAB SANGAT, ATAU KERUGIAN (TERMASUK KELALAIAN ATAU LAINNYA) YANG TIMBUL DALAM CARA APAPUN DARI PENGGUNAAN SUMBER DAYA, BAHKAN JIKA DIBERITAHU TENTANG KEMUNGKINANNYA KERUSAKAN TERSEBUT. RPL berhak untuk melakukan peningkatan, peningkatan, koreksi, atau modifikasi apa pun pada SUMBERDAYA atau produk apa pun yang dijelaskan di dalamnya kapan saja dan tanpa pemberitahuan lebih lanjut. SUMBERDAYA dimaksudkan untuk pengguna terampil dengan tingkat pengetahuan desain yang sesuai. Pengguna sepenuhnya bertanggung jawab atas pemilihan dan penggunaan SUMBER DAYA dan aplikasi apa pun dari produk yang dijelaskan di dalamnya. Pengguna setuju untuk mengganti kerugian dan menganggap RPL tidak berbahaya terhadap semua kewajiban, biaya, kerusakan, atau kerugian lain yang timbul dari penggunaan RESOURCES. RPL memberikan izin kepada pengguna untuk menggunakan RESOURCES semata-mata sehubungan dengan produk Raspberry Pi. Semua penggunaan SUMBER DAYA lainnya dilarang. Tidak ada lisensi yang diberikan kepada RPL lain atau hak kekayaan intelektual pihak ketiga lainnya. AKTIVITAS RISIKO TINGGI. Produk Raspberry Pi tidak dirancang, diproduksi, atau dimaksudkan untuk digunakan di lingkungan berbahaya yang memerlukan kinerja gagal aman, seperti pengoperasian fasilitas nuklir, sistem navigasi atau komunikasi pesawat, kontrol lalu lintas udara, sistem senjata, atau aplikasi kritis keselamatan (termasuk dukungan hidup sistem dan perangkat medis lainnya), di mana kegagalan produk dapat menyebabkan kematian, cedera pribadi, atau kerusakan fisik atau lingkungan yang parah (“Aktivitas Berisiko Tinggi”). RPL secara khusus menafikan jaminan kesesuaian tersurat maupun tersirat untuk Aktivitas Berisiko Tinggi dan tidak bertanggung jawab atas penggunaan atau penyertaan produk Raspberry Pi dalam Aktivitas Berisiko Tinggi. Produk Raspberry Pi disediakan sesuai dengan Ketentuan Standar RPL. Ketentuan RPL tentang SUMBER DAYA tidak memperluas atau memodifikasi Ketentuan Standar RPL termasuk namun tidak terbatas pada penafian dan jaminan yang dinyatakan di dalamnya.

Riwayat versi dokumen

RaspberryPi-KMS-HDMI-Output-Grafis-Driver-FIG-1

Lingkup dokumen

Dokumen ini berlaku untuk produk Raspberry Pi berikut

RaspberryPi-KMS-HDMI-Output-Grafis-Driver-FIG-2

Perkenalan

Dengan diperkenalkannya driver grafis KMS (Kernel Mode Setting), Raspberry Pi Ltd beralih dari kontrol firmware lama dari sistem output video dan menuju sistem grafis yang lebih open source. Namun, ini datang dengan serangkaian tantangannya sendiri. Dokumen ini dimaksudkan untuk membantu masalah apa pun yang mungkin muncul saat pindah ke sistem baru. Whitepaper ini mengasumsikan bahwa Raspberry Pi menjalankan OS Raspberry Pi, dan sepenuhnya diperbarui dengan firmware dan kernel terbaru.

Terminologi

DRM: Direct Rendering Manager, subsistem dari kernel Linux yang digunakan untuk berkomunikasi dengan graphics processing unit (GPU). Digunakan dalam kemitraan dengan FKMS dan KMS.
DVI: Pendahulu HDMI, tetapi tanpa kemampuan audio. Kabel dan adaptor HDMI ke DVI tersedia untuk menyambungkan perangkat Raspberry Pi ke layar yang dilengkapi DVI.
EDID: Data Identifikasi Tampilan yang Diperluas. Format metadata untuk perangkat tampilan untuk menjelaskan kemampuannya ke sumber video. Struktur data EDID mencakup nama pabrikan dan nomor seri, tipe produk, ukuran tampilan fisik, dan pengaturan waktu yang didukung oleh tampilan, beserta beberapa data yang kurang berguna. Beberapa tampilan dapat memiliki blok EDID yang rusak, yang dapat menyebabkan masalah jika cacat tersebut tidak ditangani oleh sistem tampilan.
FKMS (vc4-fkms-v3d): Pengaturan Mode Kernel Palsu. Sementara firmware masih mengontrol perangkat keras tingkat rendah (misample, port High-Definition Multimedia Interface (HDMI), Display Serial Interface (DSI), dll), pustaka Linux standar digunakan dalam kernel itu sendiri. FKMS digunakan secara default di Buster, tetapi sekarang tidak digunakan lagi karena KMS di Bullseye.
HDMI: Antarmuka Multimedia Definisi Tinggi adalah antarmuka audio/video berpemilik untuk mentransmisikan data video yang tidak terkompresi, dan data audio digital terkompresi atau tidak terkompresi.
HPD: Deteksi hotplug. Kabel fisik yang ditegaskan oleh perangkat tampilan yang terhubung untuk menunjukkan keberadaannya.
KMS: Pengaturan Mode Kernel; melihat https://www.kernel.org/doc/html/latest/gpu/drm-kms.html untuk lebih jelasnya. Di Raspberry Pi, vc4-kms-v3d adalah driver yang mengimplementasikan KMS, dan sering disebut sebagai “driver KMS”. Tumpukan grafik lama: Tumpukan grafik yang sepenuhnya diimplementasikan dalam gumpalan firmware VideoCore yang diekspos oleh driver framebuffer Linux. Tumpukan grafik lama telah digunakan di sebagian besar perangkat Raspberry Pi Ltd hingga saat ini; sekarang secara bertahap digantikan oleh (F)KMS/DRM.

Sistem HDMI dan driver grafis

Perangkat Raspberry Pi menggunakan standar HDMI, yang sangat umum pada monitor LCD dan televisi modern, untuk keluaran video. Raspberry Pi 3 (termasuk Raspberry Pi 3B+) dan perangkat sebelumnya memiliki satu port HDMI, yang mampu menghasilkan output 1920 × 1200 @60Hz menggunakan konektor HDMI ukuran penuh. Raspberry Pi 4 memiliki dua port micro HDMI, dan mampu menghasilkan output 4K pada kedua port tersebut. Bergantung pada penyetelan, port HDMI 0 pada Raspberry Pi 4 mampu hingga 4kp60, tetapi saat menggunakan dua perangkat keluaran 4K, Anda dibatasi hingga p30 di kedua perangkat. Tumpukan perangkat lunak grafis, terlepas dari versinya, bertanggung jawab untuk menginterogasi perangkat HDMI yang terpasang untuk mengetahui propertinya, dan menyiapkan sistem HDMI dengan tepat. Tumpukan Legacy dan FKMS keduanya menggunakan firmware di prosesor grafis VideoCore untuk memeriksa keberadaan dan properti HDMI. Sebaliknya, KMS menggunakan implementasi sisi ARM yang sepenuhnya open source. Ini berarti basis kode untuk kedua sistem sama sekali berbeda, dan dalam beberapa keadaan hal ini dapat menghasilkan perilaku yang berbeda antara kedua pendekatan tersebut. Perangkat HDMI dan DVI mengidentifikasi dirinya ke perangkat sumber menggunakan sepotong metadata yang disebut blok EDID. Ini dibaca oleh perangkat sumber dari perangkat tampilan melalui koneksi I2C, dan ini sepenuhnya transparan bagi pengguna akhir seperti yang dilakukan oleh tumpukan grafis. Blok EDID berisi banyak informasi, tetapi terutama digunakan untuk menentukan resolusi mana yang didukung tampilan, sehingga Raspberry Pi dapat diatur untuk menghasilkan resolusi yang sesuai.

Bagaimana HDMI ditangani selama booting

Saat pertama kali dinyalakan, Raspberry Pi melewati beberapa detiktages, dikenal sebagai boot stagadalah:

  1. Yang pertamatage, bootloader berbasis ROM memulai GPU VideoCore.
  2. Detiktage bootloader (ini bootcode.bin di kartu SD di perangkat sebelum Raspberry Pi 4, dan di SPI EEPROM di Raspberry Pi 4):
    1. Di Raspberry Pi 4, yang keduatage bootloader akan memulai sistem HDMI, menginterogasi tampilan untuk kemungkinan mode, lalu mengatur tampilan dengan tepat. Pada titik ini tampilan digunakan untuk menyediakan data diagnostik dasar.
    2. Tampilan diagnostik bootloader (07 Des 2022 dan seterusnya) akan menampilkan status setiap tampilan yang terpasang (apakah Deteksi Hotplug (HPD) ada, dan apakah blok EDID dipulihkan dari tampilan).
  3. Firmware VideoCore (start.elf) dimuat dan dijalankan. Ini akan mengambil alih kendali sistem HDMI, membaca blok EDID dari tampilan yang terpasang, dan menampilkan layar pelangi pada tampilan tersebut.
  4. Kernel Linux melakukan booting
    1. Selama boot kernel, KMS akan mengambil alih kendali sistem HDMI dari firmware. Sekali lagi blok EDID dibaca dari tampilan yang terpasang, dan informasi ini digunakan untuk menyiapkan konsol dan desktop Linux.

Kemungkinan masalah dan gejala

Gejala kegagalan paling umum yang dialami saat pindah ke KMS adalah boot yang awalnya bagus, dengan layar bootloader dan kemudian layar pelangi muncul, diikuti setelah beberapa detik tampilan menjadi hitam dan tidak menyala kembali. Titik di mana tampilan menjadi hitam sebenarnya adalah titik selama proses booting kernel ketika driver KMS mengambil alih menjalankan tampilan dari firmware. Raspberry Pi saat ini berjalan dalam segala hal kecuali untuk keluaran HDMI, jadi jika SSH diaktifkan maka Anda seharusnya dapat masuk ke perangkat melalui rute tersebut. LED akses kartu SD hijau biasanya akan berkedip sesekali. Mungkin juga Anda tidak akan melihat keluaran HDMI sama sekali; tidak ada tampilan bootloader, dan tidak ada layar pelangi. Ini biasanya dapat dikaitkan dengan kesalahan perangkat keras.

Mendiagnosis kesalahan

Tidak ada keluaran HDMI sama sekali
Mungkin saja perangkat belum melakukan booting sama sekali, tetapi ini di luar wewenang kertas putih ini. Dengan asumsi bahwa perilaku yang diamati adalah masalah tampilan, kurangnya keluaran HDMI selama bagian mana pun dari proses booting biasanya disebabkan oleh kesalahan perangkat keras. Ada sejumlah opsi yang memungkinkan:

  • Kabel HDMI rusak
  • Coba kabel baru. Beberapa kabel, terutama yang sangat murah, mungkin tidak berisi semua jalur komunikasi yang diperlukan (mis. hotplug) agar Raspberry Pi berhasil mendeteksi tampilan.
  • Port HDMI rusak pada Raspberry Pi
  • Jika Anda menggunakan Raspberry Pi 4, coba port HDMI lainnya.
  • Port HDMI rusak pada monitor
  • Terkadang port HDMI di monitor atau TV bisa aus. Coba port lain jika perangkat memilikinya.
  • Jarang, perangkat tampilan hanya menyediakan data EDID saat dihidupkan, atau saat port yang benar dipilih. Untuk memeriksa, pastikan perangkat aktif dan port input yang benar telah dipilih.
  • Perangkat tampilan tidak menegaskan garis deteksi hotplug

Keluaran awal, lalu layar menjadi hitam
Jika tampilan muncul tetapi kemudian mati selama boot kernel Linux, ada beberapa kemungkinan penyebab, dan ini biasanya terkait dengan masalah membaca EDID dari perangkat tampilan. Seperti yang dapat dilihat dari bagian di atas yang membahas urutan boot, EDID dibaca di beberapa titik berbeda selama proses boot, dan masing-masing pembacaan ini dilakukan oleh perangkat lunak yang berbeda. Pembacaan terakhir, saat KMS mengambil alih, dilakukan oleh kode kernel Linux hulu yang tidak diubah, dan ini tidak menangani format EDID yang rusak serta perangkat lunak firmware sebelumnya. Inilah mengapa tampilan dapat berhenti berfungsi dengan benar begitu KMS mengambil alih. Ada beberapa cara untuk memastikan apakah KMS gagal membaca EDID, dan dua di antaranya adalah sebagai berikut.
Periksa layar diagnostik bootloader (Raspberry Pi 4 saja)

CATATAN
Diagnostik bootloader memerlukan bootloader terbaru. Anda dapat memutakhirkan ke versi terbaru menggunakan petunjuk ini: https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#updating-the-bootloader Keluarkan kartu SD dan reboot Raspberry Pi. Tekan ESC pada layar Instal OS, dan layar diagnostik akan muncul di perangkat layar. Harus ada garis pada tampilan yang dimulai dengan tampilan: — misalnyaampsaya:

  • menampilkan: DISP0: HDMI HPD=1 EDID=ok #2 DISP1: HPD=0 EDID=tidak ada #0

Output dari Raspberry Pi 4 ini menunjukkan bahwa sistem mendeteksi tampilan HDMI pada port HDMI 0, deteksi hotplug dinyatakan, dan EDID terbaca OK. Tidak ada yang ditemukan di port HDMI 1.

Periksa apakah sistem KMS mendeteksi EDID
Untuk memeriksanya, Anda harus masuk ke perangkat Raspberry Pi melalui SSH dari komputer lain. SSH dapat diaktifkan saat membuat gambar kartu SD dengan Raspberry Pi Imager, menggunakan opsi Pengaturan Lanjutan. Mengaktifkan SSH pada kartu SD yang telah dicitrakan sedikit lebih rumit: Anda harus menggunakan komputer lain untuk menambahkan file bernama ssh ke partisi boot. Ganti kartu SD di Raspberry Pi asli dan nyalakan. Ini harus mengaktifkan SSH, dengan alamat IP yang dialokasikan oleh DHCP. Setelah masuk, ketik berikut ini di terminal prompt untuk menampilkan konten EDID apa pun yang terdeteksi (Anda mungkin perlu mengubah HDMI-A-1 ke HDMI-A-2 tergantung pada port HDMI mana pada Raspberry Pi perangkat layar terhubung ke): cat /sys/class/drm/card?-HDMI-A-1/edid Jika tidak ada folder bernama card?-HDMI-A-1 atau serupa, maka kemungkinan tidak ada EDID yang dapat dibaca dari tampilan perangkat.

CATATAN
Jika EDID berhasil dibaca, ada virtual yang berguna file dalam folder yang sama, disebut mode, yang ketika ditampilkan menampilkan semua kemungkinan mode yang diklaim EDID didukung oleh perangkat.

Mitigasi

Kegagalan deteksi hotplug Jika firmware dan KMS gagal menemukan monitor yang terpasang, ini bisa menjadi kegagalan deteksi hotplug — yaitu, Raspberry Pi tidak mengetahui perangkat telah dicolokkan, sehingga tidak memeriksa EDID. Hal ini dapat disebabkan oleh kabel yang buruk, atau perangkat tampilan yang tidak menampilkan hotplug dengan benar. Anda dapat memaksa deteksi hotplug dengan mengubah baris perintah kernel file (cmdline.txt) yang disimpan di partisi boot kartu SD Raspberry Pi OS. Anda dapat mengedit ini file di sistem lain, menggunakan editor apa pun yang Anda inginkan. Tambahkan baris berikut di akhir cmdline.txt file: video=HDMI-A-1:1280×720@60D Jika Anda menggunakan port HDMI kedua, ganti HDMI-A-1 dengan HDMI-A-2. Anda juga dapat menentukan resolusi dan frekuensi gambar yang berbeda, tetapi pastikan Anda memilih yang didukung oleh perangkat layar.

CATATAN
Dokumentasi tentang pengaturan baris perintah kernel untuk video dapat ditemukan di sini: https://www.kernel.org/doc/Documentation/fb/modedb.txt

PERINGATAN
Tumpukan grafik lama mendukung penggunaan entri config.txt untuk mengatur deteksi hotplug, tetapi pada saat penulisan ini tidak berfungsi dengan KMS. Ini mungkin didukung dalam rilis firmware mendatang. Entri config.txt adalah hdmi_force_hotplug, dan Anda dapat menentukan port HDMI spesifik yang digunakan hotplug menggunakan hdmi_force_hotplug:0=1 atau hdmi_force_hotplug:1=1. Perhatikan bahwa nomenklatur untuk KMS mengacu pada port HDMI sebagai 1 dan 2, sedangkan Raspberry Pi menggunakan 0 dan 1.

masalah EDID
Sebagian kecil perangkat tampilan tidak mampu mengembalikan EDID jika dimatikan, atau ketika input AV yang salah dipilih. Ini bisa menjadi masalah ketika Raspberry Pi dan perangkat tampilan berada pada soket ekstensi yang sama, dan perangkat Raspberry Pi melakukan booting lebih cepat daripada tampilan. Dengan perangkat seperti ini, Anda mungkin perlu menyediakan EDID secara manual. Yang lebih luar biasa lagi, beberapa perangkat tampilan memiliki blok EDID yang diformat dengan buruk dan tidak dapat diuraikan oleh sistem KMS EDID. Dalam keadaan ini, dimungkinkan untuk membaca EDID dari perangkat dengan resolusi serupa dan menggunakannya. Dalam kedua kasus tersebut, petunjuk berikut menetapkan cara membaca EDID dari perangkat tampilan dan mengonfigurasi KMS untuk menggunakannya, alih-alih KMS mencoba menginterogasi perangkat secara langsung.

Menyalin EDID ke a file
Membuat file berisi metadata EDID dari awal biasanya tidak layak, dan menggunakan yang sudah ada jauh lebih mudah. Secara umum dimungkinkan untuk mendapatkan EDID dari perangkat layar dan menyimpannya di kartu SD Raspberry Pi sehingga dapat digunakan oleh KMS daripada mendapatkan EDID dari perangkat layar. Opsi termudah di sini adalah memastikan bahwa perangkat tampilan aktif dan berjalan dan pada input AV yang benar, dan Raspberry Pi telah memulai sistem HDMI dengan benar. Dari terminal, Anda sekarang dapat menyalin EDID ke a file dengan perintah berikut: sudo cp /sys/class/drm/card?-HDMI-A-1/edid /lib/firmware/myedid.dat Jika karena alasan tertentu EDID tidak ada, Anda dapat mem-boot perangkat di non -KMS mode yang berhasil booting ke desktop atau console, lalu copy EDID yang (semoga) firmware berhasil dibaca ke file.

  1. Boot ke mode grafik lawas.
    1. Edit config.txt di partisi boot, pastikan untuk menjalankan editor Anda menggunakan sudo, dan ubah baris yang bertuliskan dtoverlay=vc4-kms-v3d menjadi #dtoverlay=vc4-kms-v3d.
    2. Menyalakan ulang.
  2. Desktop atau konsol masuk sekarang akan muncul.
    1. Menggunakan terminal, salin EDID dari perangkat tampilan yang terpasang ke a file dengan perintah berikut:
  • layanan tv -d myedid.dat sudo mv myedid.dat /lib/firmware/

Menggunakan file-based EDID alih-alih menginterogasi perangkat tampilan Edit /boot/cmdline.txt, pastikan untuk menjalankan editor Anda menggunakan sudo, dan tambahkan perintah berikut ke baris perintah kernel: drm.edid_firmware=myedid.dat Anda dapat menerapkan EDID ke port HDMI tertentu sebagai berikut: drm.edid_firmware=HDMI-A-1:myedid.dat Jika perlu, boot kembali ke mode KMS dengan melakukan hal berikut:

  1. Edit config.txt di partisi boot, pastikan untuk menjalankan editor Anda menggunakan sudo, dan ubah baris yang berbunyi #dtoverlay=vc4-kms-v3d menjadi dtoverlay=vc4-kms-v3d.
  2. Menyalakan ulang.

CATATAN
Jika Anda menggunakan file-berbasis EDID, tetapi masih memiliki masalah dengan hotplug, Anda dapat memaksa deteksi hotplug dengan menambahkan perintah berikut ke baris perintah kernel: video=HDMI-A-1:D.

Dokumen / Sumber Daya

Driver Grafis Keluaran HDMI RaspberryPi KMS [Bahasa Indonesia:] Panduan Pengguna
KMS, Driver Grafik Output HDMI, Output HDMI KMS, Driver Grafik, Driver Grafik Output HDMI KMS, Driver

Referensi

Tinggalkan komentar

Alamat email Anda tidak akan dipublikasikan. Bidang yang wajib diisi ditandai *