RaspberryPi-โลโก้

RaspberryPi KMS ไดรเวอร์กราฟิกเอาท์พุต HDMI

RaspberryPi-KMS-HDMI-เอาต์พุต-ไดรเวอร์กราฟิก-PRODACT-IMG

โคโลฟอน

2020-2023 Raspberry Pi Ltd (เดิมชื่อ Raspberry Pi (Trading) Ltd.) เอกสารนี้ได้รับอนุญาตภายใต้ใบอนุญาต Creative Commons Attribution-NoDerivatives 4.0 International (CC BY-ND 4.0) วันที่สร้าง: 2023-02-10 รุ่นบิลด์: githash: c65fe9c-clean

ประกาศข้อจำกัดความรับผิดชอบทางกฎหมาย

ข้อมูลทางเทคนิคและความน่าเชื่อถือสำหรับผลิตภัณฑ์ RASPBERRY PI (รวมถึงเอกสารข้อมูล) ตามที่ได้รับการแก้ไขเป็นครั้งคราว (“แหล่งข้อมูล”) ได้รับการจัดหาโดย RASPBERRY PI LTD (“RPL”) “ตามสภาพที่เป็น” และการรับประกันโดยชัดแจ้งหรือโดยนัย รวมถึงแต่ไม่จำกัดเพียง ถึง การรับประกันโดยนัยของความสามารถเชิงพาณิชย์และความเหมาะสมสำหรับวัตถุประสงค์เฉพาะจะถูกปฏิเสธ ในขอบเขตสูงสุดที่อนุญาตโดยกฎหมายที่บังคับใช้ ไม่ว่าในกรณีใดก็ตาม RPL จะไม่รับผิดต่อความเสียหายโดยตรง โดยอ้อม โดยบังเอิญ พิเศษ ที่เป็นแบบอย่าง หรือเป็นผลสืบเนื่อง (รวมถึงแต่ไม่จำกัดเฉพาะ การจัดหาสินค้าหรือบริการทดแทน การสูญเสียการใช้งาน ข้อมูล หรือผลกำไร หรือการหยุดชะงักทางธุรกิจ) ไม่ว่าจะเกิดขึ้นและตามทฤษฎีความรับผิดใด ๆ ไม่ว่าในสัญญา ความรับผิดที่เข้มงวด หรือการละเมิด (รวมถึงความประมาทเลินเล่อหรืออย่างอื่น) ที่เกิดขึ้นในลักษณะใด ๆ จากการใช้ทรัพยากร แม้ว่าจะได้รับคำแนะนำถึงความเป็นไปได้ก็ตาม ของความเสียหายดังกล่าว RPL ขอสงวนสิทธิ์ในการปรับปรุง ปรับปรุง แก้ไข หรือแก้ไขทรัพยากรหรือผลิตภัณฑ์ใดๆ ที่อธิบายไว้ในแหล่งข้อมูลเหล่านี้ได้ตลอดเวลาโดยไม่ต้องแจ้งให้ทราบล่วงหน้า ทรัพยากรมีไว้สำหรับผู้ใช้ที่มีทักษะและมีความรู้ด้านการออกแบบในระดับที่เหมาะสม ผู้ใช้จะต้องรับผิดชอบแต่เพียงผู้เดียวในการเลือกและใช้ทรัพยากรและการใช้งานผลิตภัณฑ์ใดๆ ที่อธิบายไว้ในนั้น ผู้ใช้ตกลงที่จะชดใช้ค่าเสียหายและปกป้อง RPL ต่อความรับผิด ต้นทุน ความเสียหาย หรือการสูญเสียอื่น ๆ ทั้งหมดที่เกิดขึ้นจากการใช้ทรัพยากร RPL ให้สิทธิ์ผู้ใช้ในการใช้ทรัพยากรร่วมกับผลิตภัณฑ์ Raspberry Pi แต่เพียงผู้เดียว ห้ามใช้ทรัพยากรในลักษณะอื่นทั้งหมด ไม่มีการมอบใบอนุญาตให้กับ RPL อื่น ๆ หรือสิทธิ์ในทรัพย์สินทางปัญญาของบุคคลที่สามอื่น ๆ กิจกรรมที่มีความเสี่ยงสูง ผลิตภัณฑ์ Raspberry Pi ไม่ได้รับการออกแบบ ผลิต หรือมีจุดประสงค์เพื่อใช้ในสภาพแวดล้อมที่เป็นอันตรายซึ่งต้องมีการทำงานที่ไม่ปลอดภัย เช่น ในการใช้งานโรงงานนิวเคลียร์ ระบบนำทางหรือสื่อสารของเครื่องบิน การควบคุมการจราจรทางอากาศ ระบบอาวุธ หรือการใช้งานที่มีความสำคัญต่อความปลอดภัย (รวมถึงการช่วยชีวิต) ระบบและอุปกรณ์ทางการแพทย์อื่นๆ) ซึ่งความล้มเหลวของผลิตภัณฑ์อาจนำไปสู่การเสียชีวิต การบาดเจ็บส่วนบุคคล หรือความเสียหายทางกายภาพหรือสิ่งแวดล้อมอย่างรุนแรง (“กิจกรรมที่มีความเสี่ยงสูง”) RPL ปฏิเสธการรับประกันโดยชัดแจ้งหรือโดยนัยเกี่ยวกับความเหมาะสมสำหรับกิจกรรมที่มีความเสี่ยงสูง และไม่รับผิดชอบต่อการใช้หรือการรวมผลิตภัณฑ์ Raspberry Pi ไว้ในกิจกรรมที่มีความเสี่ยงสูง ผลิตภัณฑ์ Raspberry Pi จัดหาให้ภายใต้ข้อกำหนดมาตรฐานของ RPL ข้อกำหนดทรัพยากรของ RPL ไม่ได้ขยายหรือแก้ไขข้อกำหนดมาตรฐานของ RPL รวมถึงแต่ไม่จำกัดเพียงการปฏิเสธความรับผิดชอบและการรับประกันที่แสดงในข้อกำหนดเหล่านี้

ประวัติเวอร์ชันเอกสาร

RaspberryPi-KMS-HDMI-เอาต์พุต-ไดรเวอร์กราฟิก-FIG-1

ขอบเขตของเอกสาร

เอกสารนี้ใช้กับผลิตภัณฑ์ Raspberry Pi ต่อไปนี้

RaspberryPi-KMS-HDMI-เอาต์พุต-ไดรเวอร์กราฟิก-FIG-2

การแนะนำ

ด้วยการเปิดตัวไดรเวอร์กราฟิก KMS (การตั้งค่าโหมดเคอร์เนล) ทำให้ Raspberry Pi Ltd ย้ายจากการควบคุมเฟิร์มแวร์แบบเดิมของระบบเอาต์พุตวิดีโอ ไปสู่ระบบกราฟิกแบบโอเพ่นซอร์สมากขึ้น อย่างไรก็ตาม สิ่งนี้มาพร้อมกับความท้าทายในตัวมันเอง เอกสารนี้มีจุดมุ่งหมายเพื่อช่วยแก้ไขปัญหาใดๆ ที่อาจเกิดขึ้นเมื่อย้ายไปยังระบบใหม่ เอกสารไวท์เปเปอร์นี้อนุมานว่า Raspberry Pi กำลังใช้งาน Raspberry Pi OS และอัปเดตเฟิร์มแวร์และเคอร์เนลล่าสุดโดยสมบูรณ์

คำศัพท์

ดีอาร์เอ็ม: Direct Rendering Manager ซึ่งเป็นระบบย่อยของเคอร์เนล Linux ที่ใช้ในการสื่อสารกับหน่วยประมวลผลกราฟิก (GPU) ใช้ร่วมกับ FKMS และ KMS
ดีวีไอ : รุ่นก่อนของ HDMI แต่ไม่มีความสามารถด้านเสียง สายเคเบิลและอะแดปเตอร์ HDMI เป็น DVI มีไว้สำหรับเชื่อมต่ออุปกรณ์ Raspberry Pi กับจอแสดงผลที่ติดตั้ง DVI
แก้ไข: ข้อมูลการระบุจอแสดงผลแบบขยาย รูปแบบข้อมูลเมตาสำหรับอุปกรณ์แสดงผลเพื่ออธิบายความสามารถในแหล่งวิดีโอ โครงสร้างข้อมูล EDID ประกอบด้วยชื่อผู้ผลิตและหมายเลขซีเรียล ประเภทผลิตภัณฑ์ ขนาดจอแสดงผลจริง และเวลาที่รองรับโดยจอแสดงผล พร้อมด้วยข้อมูลที่เป็นประโยชน์น้อยกว่า จอแสดงผลบางจออาจมีบล็อก EDID ที่มีข้อบกพร่อง ซึ่งอาจทำให้เกิดปัญหาได้หากระบบจอแสดงผลไม่จัดการข้อบกพร่องเหล่านั้น
เอฟเคเอ็มเอส (vc4-fkms-v3d): การตั้งค่าโหมดเคอร์เนลปลอม ในขณะที่เฟิร์มแวร์ยังคงควบคุมฮาร์ดแวร์ระดับต่ำ (เช่นampไฟล์, พอร์ต High-Definition Multimedia Interface (HDMI), Display Serial Interface (DSI) ฯลฯ), ไลบรารี Linux มาตรฐานถูกใช้ในเคอร์เนลเอง FKMS ถูกใช้เป็นค่าเริ่มต้นใน Buster แต่ตอนนี้เลิกใช้แล้วเพื่อสนับสนุน KMS ใน Bullseye
ช่องต่อ HDMI: อินเทอร์เฟซมัลติมีเดียความละเอียดสูงเป็นอินเทอร์เฟซเสียง/วิดีโอที่เป็นกรรมสิทธิ์สำหรับการส่งข้อมูลวิดีโอที่ไม่มีการบีบอัด และข้อมูลเสียงดิจิทัลที่ถูกบีบอัดหรือไม่บีบอัด
HPD: ตรวจจับฮอตปลั๊ก สายทางกายภาพที่เชื่อมต่อโดยอุปกรณ์แสดงผลที่เชื่อมต่อเพื่อแสดงว่ามีสายอยู่
กม.: การตั้งค่าโหมดเคอร์เนล; ดู https://www.kernel.org/doc/html/latest/gpu/drm-kms.html สำหรับรายละเอียดเพิ่มเติม บน Raspberry Pi vc4-kms-v3d เป็นไดรเวอร์ที่ใช้ KMS และมักเรียกกันว่า "ไดรเวอร์ KMS" กราฟิกสแต็กแบบเดิม: กราฟิกสแต็กที่ใช้งานทั้งหมดในเฟิร์มแวร์ Blob ของ VideoCore ที่เปิดเผยโดยไดรเวอร์ Linux framebuffer กราฟิกสแต็กแบบเดิมถูกนำมาใช้ในอุปกรณ์ Raspberry Pi Ltd ส่วนใหญ่จนกระทั่งเมื่อไม่นานมานี้ ขณะนี้จะค่อยๆ ถูกแทนที่ด้วย (F)KMS/DRM

ระบบ HDMI และไดรเวอร์กราฟิก

อุปกรณ์ Raspberry Pi ใช้มาตรฐาน HDMI ซึ่งพบได้ทั่วไปในจอภาพ LCD และโทรทัศน์สมัยใหม่สำหรับเอาต์พุตวิดีโอ Raspberry Pi 3 (รวมถึง Raspberry Pi 3B+) และอุปกรณ์รุ่นก่อนหน้ามีพอร์ต HDMI เดียว ซึ่งสามารถเอาต์พุต 1920 × 1200 @60Hz โดยใช้ขั้วต่อ HDMI ขนาดเต็ม Raspberry Pi 4 มีพอร์ต micro HDMI สองพอร์ต และสามารถเอาต์พุต 4K บนทั้งสองพอร์ตได้ พอร์ต HDMI 0 บน Raspberry Pi 4 สามารถรองรับได้ถึง 4kp60 ขึ้นอยู่กับการตั้งค่า แต่เมื่อใช้อุปกรณ์เอาท์พุต 4K สองตัว คุณจะถูกจำกัดไว้ที่ p30 บนอุปกรณ์ทั้งสอง กลุ่มซอฟต์แวร์กราฟิกโดยไม่คำนึงถึงเวอร์ชัน มีหน้าที่รับผิดชอบในการตรวจสอบคุณสมบัติของอุปกรณ์ HDMI ที่เชื่อมต่อ และการตั้งค่าระบบ HDMI อย่างเหมาะสม ทั้ง Legacy และ FKMS สแต็คใช้เฟิร์มแวร์ในโปรเซสเซอร์กราฟิก VideoCore เพื่อตรวจสอบสถานะและคุณสมบัติของ HDMI ในทางตรงกันข้าม KMS ใช้โอเพ่นซอร์สทั้งหมด การใช้งานฝั่ง ARM ซึ่งหมายความว่าฐานโค้ดสำหรับทั้งสองระบบมีความแตกต่างกันโดยสิ้นเชิง และในบางกรณีอาจส่งผลให้เกิดพฤติกรรมที่แตกต่างกันระหว่างทั้งสองแนวทาง อุปกรณ์ HDMI และ DVI ระบุตัวเองว่าเป็นอุปกรณ์ต้นทางโดยใช้ข้อมูลเมตาที่เรียกว่าบล็อก EDID ข้อมูลนี้จะถูกอ่านโดยอุปกรณ์ต้นทางจากอุปกรณ์แสดงผลผ่านการเชื่อมต่อ I2C และสิ่งนี้จะโปร่งใสสำหรับผู้ใช้ปลายทางโดยสิ้นเชิง เนื่องจากทำโดยสแต็กกราฟิก บล็อก EDID มีข้อมูลจำนวนมาก แต่ส่วนใหญ่จะใช้เพื่อระบุความละเอียดที่จอแสดงผลรองรับ ดังนั้น Raspberry Pi จึงสามารถตั้งค่าให้เอาต์พุตมีความละเอียดที่เหมาะสมได้

วิธีจัดการ HDMI ระหว่างการบูท

เมื่อเปิดเครื่องครั้งแรก Raspberry Pi จะผ่านไปหลายวินาทีtages เรียกว่า boot stagใช่:

  1. ครั้งแรกtage, bootloader ที่ใช้ ROM จะเริ่มทำงาน VideoCore GPU
  2. วินาทีtage bootloader (นี่คือ bootcode.bin บนการ์ด SD บนอุปกรณ์ก่อน Raspberry Pi 4 และใน SPI EEPROM บน Raspberry Pi 4):
    1. บน Raspberry Pi 4 วินาทีtage bootloader จะเริ่มระบบ HDMI สอบถามจอแสดงผลสำหรับโหมดที่เป็นไปได้ จากนั้นตั้งค่าจอแสดงผลอย่างเหมาะสม ณ จุดนี้ จอแสดงผลจะใช้เพื่อให้ข้อมูลการวินิจฉัยพื้นฐาน
    2. จอแสดงผลวินิจฉัย bootloader (07 ธันวาคม 2022 เป็นต้นไป) จะแสดงสถานะของจอแสดงผลใดๆ ที่เชื่อมต่ออยู่ (ไม่ว่าจะมี Hotplug Detect (HPD) หรือไม่ และจะมีการกู้คืนบล็อก EDID จากจอแสดงผลหรือไม่
  3. โหลดและรันเฟิร์มแวร์ VideoCore (start.elf) แล้ว ซึ่งจะเข้าควบคุมระบบ HDMI อ่านบล็อก EDID จากจอแสดงผลที่เชื่อมต่อ และแสดงหน้าจอสีรุ้งบนจอแสดงผลเหล่านั้น
  4. เคอร์เนล Linux บูท
    1. ในระหว่างการบูตเคอร์เนล KMS จะเข้าควบคุมระบบ HDMI จากเฟิร์มแวร์ เป็นอีกครั้งที่บล็อก EDID จะถูกอ่านจากจอแสดงผลที่แนบมา และข้อมูลนี้ใช้เพื่อตั้งค่าคอนโซล Linux และเดสก์ท็อป

ปัญหาและอาการที่อาจเกิดขึ้น

อาการความล้มเหลวที่พบบ่อยที่สุดที่เกิดขึ้นเมื่อเปลี่ยนไปใช้ KMS คือการบูตที่ดีในตอนแรก โดยมีหน้าจอบูตโหลดเดอร์และหน้าจอสีรุ้งปรากฏขึ้น ตามมาหลังจากนั้นไม่กี่วินาทีโดยจอแสดงผลเป็นสีดำและไม่เปิดขึ้นมาอีก จุดที่จอแสดงผลดับลงนั้นแท้จริงแล้วคือจุดระหว่างกระบวนการบูทเคอร์เนลเมื่อไดรเวอร์ KMS เข้ามาควบคุมการรันจอแสดงผลจากเฟิร์มแวร์ ขณะนี้ Raspberry Pi กำลังทำงานทุกประการยกเว้นเอาต์พุต HDMI ดังนั้นหากเปิดใช้งาน SSH คุณจะสามารถเข้าสู่ระบบอุปกรณ์ตามเส้นทางนั้นได้ ไฟ LED เข้าถึงการ์ด SD สีเขียวมักจะกะพริบเป็นครั้งคราว อาจเป็นไปได้ที่คุณจะไม่เห็นเอาต์พุต HDMI เลย ไม่มีจอแสดงผล bootloader และไม่มีหน้าจอสีรุ้ง ซึ่งมักจะเกิดจากความผิดพลาดของฮาร์ดแวร์

การวินิจฉัยความผิด

ไม่มีเอาต์พุต HDMI เลย
อาจเป็นไปได้ว่าอุปกรณ์ไม่ได้บู๊ตเลย แต่นี่อยู่นอกเหนือขอบเขตของเอกสารไวท์เปเปอร์นี้ สมมติว่าลักษณะการทำงานที่สังเกตได้คือปัญหาการแสดงผล การขาดเอาต์พุต HDMI ในระหว่างส่วนใดส่วนหนึ่งของกระบวนการบูตมักเกิดจากความผิดพลาดของฮาร์ดแวร์ มีหลายตัวเลือกที่เป็นไปได้:

  • สาย HDMI ชำรุด
  • ลองสายเคเบิลใหม่ สายเคเบิลบางเส้น โดยเฉพาะสายราคาถูกมาก อาจไม่มีสายสื่อสารที่จำเป็นทั้งหมด (เช่น ปลั๊กไฟ) เพื่อให้ Raspberry Pi ตรวจจับจอแสดงผลได้สำเร็จ
  • พอร์ต HDMI ชำรุดบน Raspberry Pi
  • หากคุณใช้ Raspberry Pi 4 ให้ลองใช้พอร์ต HDMI อื่น
  • พอร์ต HDMI บนจอภาพชำรุด
  • บางครั้งพอร์ต HDMI บนจอภาพหรือทีวีอาจเสื่อมสภาพได้ ลองใช้พอร์ตอื่นหากอุปกรณ์มี
  • ไม่ค่อยมีอุปกรณ์แสดงผลอาจให้ข้อมูล EDID เมื่อเปิดเครื่องหรือเมื่อเลือกพอร์ตที่ถูกต้องเท่านั้น หากต้องการตรวจสอบ ตรวจสอบให้แน่ใจว่าอุปกรณ์เปิดอยู่และเลือกพอร์ตอินพุตที่ถูกต้อง
  • อุปกรณ์แสดงผลไม่ยืนยันสายตรวจจับฮอตปลั๊ก

เอาต์พุตเริ่มต้น จากนั้นหน้าจอดับลง
หากจอแสดงผลปรากฏขึ้นแต่ดับลงระหว่างการบูตเคอร์เนล Linux มีสาเหตุที่เป็นไปได้หลายประการ และโดยทั่วไปจะเกี่ยวข้องกับปัญหาในการอ่าน EDID จากอุปกรณ์แสดงผล ดังที่เห็นได้จากหัวข้อด้านบนที่เกี่ยวข้องกับลำดับการบูต EDID จะถูกอ่านที่จุดต่างๆ มากมายในระหว่างขั้นตอนการบู๊ต และการอ่านแต่ละครั้งจะดำเนินการโดยใช้ซอฟต์แวร์ที่แตกต่างกัน การอ่านครั้งสุดท้ายเมื่อ KMS เข้ามาแทนที่จะดำเนินการโดยโค้ดเคอร์เนลอัพสตรีม Linux ที่ไม่มีการเปลี่ยนแปลง และไม่รองรับรูปแบบ EDID ที่มีข้อบกพร่องตลอดจนซอฟต์แวร์เฟิร์มแวร์รุ่นก่อนหน้า นี่คือสาเหตุที่จอแสดงผลสามารถหยุดทำงานได้อย่างถูกต้องเมื่อ KMS เข้ามาแทนที่ มีหลายวิธีในการยืนยันว่า KMS ล้มเหลวในการอ่าน EDID และสองวิธีดังต่อไปนี้
ตรวจสอบหน้าจอวินิจฉัย bootloader (Raspberry Pi 4 เท่านั้น)

บันทึก
การวินิจฉัย Bootloader ต้องใช้ Bootloader ล่าสุด คุณสามารถอัปเกรดเป็นเวอร์ชันล่าสุดได้โดยใช้คำแนะนำเหล่านี้: https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#updating-the-bootloader ถอดการ์ด SD ออกแล้วรีบูท Raspberry Pi กด ESC บนหน้าจอติดตั้ง OS และหน้าจอการวินิจฉัยควรปรากฏบนอุปกรณ์แสดงผล ควรมีบรรทัดบนจอแสดงผลที่ขึ้นต้นด้วย display: — เช่นampเลอ:

  • แสดง: DISP0: HDMI HPD=1 EDID=ตกลง #2 DISP1: HPD=0 EDID=ไม่มี #0

เอาต์พุตจาก Raspberry Pi 4 นี้แสดงให้เห็นว่าระบบตรวจพบจอแสดงผล HDMI บนพอร์ต HDMI 0 การตรวจจับฮอตปลั๊กถูกยืนยัน และ EDID อ่านได้ตามปกติ ไม่พบสิ่งใดบนพอร์ต HDMI 1

ตรวจสอบว่าระบบ KMS ตรวจพบ EDID หรือไม่
ในการตรวจสอบสิ่งนี้ คุณจะต้องเข้าสู่ระบบอุปกรณ์ Raspberry Pi ผ่าน SSH จากคอมพิวเตอร์เครื่องอื่น สามารถเปิดใช้งาน SSH ได้เมื่อสร้างอิมเมจการ์ด SD ด้วย Raspberry Pi Imager โดยใช้ตัวเลือกการตั้งค่าขั้นสูง การเปิดใช้งาน SSH บนการ์ด SD ที่ถูกถ่ายภาพไว้แล้วนั้นซับซ้อนกว่าเล็กน้อย: คุณจะต้องใช้คอมพิวเตอร์เครื่องอื่นเพื่อเพิ่ม file ชื่อ ssh ไปยังพาร์ติชันสำหรับบูต เปลี่ยนการ์ด SD ใน Raspberry Pi ดั้งเดิมแล้วเปิดเครื่อง สิ่งนี้ควรเปิดใช้งาน SSH โดยมีที่อยู่ IP จัดสรรโดย DHCP เมื่อเข้าสู่ระบบแล้ว ให้พิมพ์ข้อความต่อไปนี้ที่พรอมต์เทอร์มินัลเพื่อแสดงเนื้อหาของ EDID ใด ๆ ที่ตรวจพบ (คุณอาจต้องเปลี่ยน HDMI-A-1 เป็น HDMI-A-2 ขึ้นอยู่กับพอร์ต HDMI บน Raspberry Pi ที่อุปกรณ์แสดงผลเชื่อมต่ออยู่ ถึง): cat /sys/class/drm/card?-HDMI-A-1/edid หากไม่มีโฟลเดอร์ชื่อ card?-HDMI-A-1 หรือที่คล้ายกัน มีแนวโน้มว่าจะไม่สามารถอ่าน EDID จากจอแสดงผลได้ อุปกรณ์.

บันทึก
ในกรณีที่อ่าน EDID ได้สำเร็จ จะมีประโยชน์เสมือน file ในโฟลเดอร์เดียวกันที่เรียกว่าโหมด ซึ่งเมื่อแสดงขึ้นจะแสดงโหมดที่เป็นไปได้ทั้งหมดที่ EDID อ้างว่าอุปกรณ์รองรับ

การบรรเทาผลกระทบ

การตรวจจับ Hotplug ล้มเหลว หากทั้งเฟิร์มแวร์และ KMS ไม่พบจอภาพที่ต่ออยู่ อาจเป็นความล้มเหลวในการตรวจจับ Hotplug กล่าวคือ Raspberry Pi ไม่ทราบว่าอุปกรณ์เสียบปลั๊กอยู่ ดังนั้นจึงไม่ได้ตรวจสอบ EDID ปัญหานี้อาจเกิดจากสายเคเบิลที่ไม่ดี หรืออุปกรณ์แสดงผลที่เสียบฮอตปลั๊กไม่ถูกต้อง คุณสามารถบังคับการตรวจจับฮอตปลั๊กได้โดยการเปลี่ยนบรรทัดคำสั่งเคอร์เนล file (cmdline.txt) ที่ถูกจัดเก็บไว้ในพาร์ติชันสำหรับบูตของการ์ด SD Raspberry Pi OS คุณสามารถแก้ไขได้ file บนระบบอื่น โดยใช้โปรแกรมแก้ไขใดก็ได้ที่คุณต้องการ เพิ่มสิ่งต่อไปนี้ที่ส่วนท้ายของ cmdline.txt file: video=HDMI-A-1:1280×720@60D หากคุณใช้พอร์ต HDMI ที่สอง ให้เปลี่ยน HDMI-A-1 เป็น HDMI-A-2 คุณยังสามารถระบุความละเอียดและอัตราเฟรมอื่นได้ แต่ต้องแน่ใจว่าคุณเลือกความละเอียดและอัตราเฟรมที่อุปกรณ์แสดงผลรองรับ

บันทึก
คุณสามารถดูเอกสารเกี่ยวกับการตั้งค่าบรรทัดคำสั่งเคอร์เนลสำหรับวิดีโอได้ที่นี่: https://www.kernel.org/doc/Documentation/fb/modedb.txt

คำเตือน
กราฟิกสแต็กรุ่นเก่ารองรับการใช้รายการ config.txt เพื่อตั้งค่าการตรวจจับ hotplug แต่ในขณะที่เขียนสิ่งนี้จะใช้ไม่ได้กับ KMS อาจได้รับการสนับสนุนในการเปิดตัวเฟิร์มแวร์ในอนาคต รายการ config.txt คือ hdmi_force_hotplug และคุณสามารถระบุพอร์ต HDMI เฉพาะที่ hotplug ใช้โดยใช้ hdmi_force_hotplug:0=1 หรือ hdmi_force_hotplug:1=1 โปรดทราบว่าระบบการตั้งชื่อสำหรับ KMS หมายถึงพอร์ต HDMI เป็น 1 และ 2 ในขณะที่ Raspberry Pi ใช้ 0 และ 1

ปัญหา EDID
อุปกรณ์แสดงผลส่วนน้อยไม่สามารถส่งคืน EDID ได้หากปิดอยู่ หรือเมื่อเลือกอินพุต AV ไม่ถูกต้อง นี่อาจเป็นปัญหาได้เมื่อ Raspberry Pi และอุปกรณ์แสดงผลอยู่บนปลั๊กพ่วงเดียวกัน และอุปกรณ์ Raspberry Pi บูตเร็วกว่าจอแสดงผล สำหรับอุปกรณ์ประเภทนี้ คุณอาจต้องจัดเตรียม EDID ด้วยตนเอง ที่แปลกกว่านั้นคือ อุปกรณ์แสดงผลบางตัวมีบล็อก EDID ที่มีรูปแบบไม่ดีและไม่สามารถแยกวิเคราะห์โดยระบบ KMS EDID ได้ ในสถานการณ์เหล่านี้ อาจเป็นไปได้ที่จะอ่าน EDID จากอุปกรณ์ที่มีความละเอียดใกล้เคียงกันและนำไปใช้ได้ ไม่ว่าในกรณีใด คำแนะนำต่อไปนี้จะกำหนดวิธีการอ่าน EDID จากอุปกรณ์แสดงผลและกำหนดค่า KMS เพื่อใช้งาน แทนที่จะให้ KMS พยายามซักถามอุปกรณ์โดยตรง

การคัดลอก EDID ไปยังไฟล์ file
การสร้าง file โดยปกติแล้วการเก็บข้อมูลเมตา EDID ตั้งแต่เริ่มต้นไม่สามารถทำได้ และการใช้ข้อมูลที่มีอยู่จะง่ายกว่ามาก โดยทั่วไปเป็นไปได้ที่จะรับ EDID จากอุปกรณ์แสดงผลและจัดเก็บไว้ในการ์ด SD ของ Raspberry Pi เพื่อให้ KMS สามารถนำไปใช้แทนการรับ EDID จากอุปกรณ์แสดงผล ตัวเลือกที่ง่ายที่สุดที่นี่คือการตรวจสอบให้แน่ใจว่าอุปกรณ์แสดงผลทำงานและอยู่ในอินพุต AV ที่ถูกต้อง และ Raspberry Pi ได้เริ่มต้นระบบ HDMI อย่างถูกต้อง จากเทอร์มินัล ตอนนี้คุณสามารถคัดลอก EDID ไปยัง a file ด้วยคำสั่งต่อไปนี้: sudo cp /sys/class/drm/card?-HDMI-A-1/edid /lib/firmware/myedid.dat หากไม่มี EDID ด้วยเหตุผลบางประการ คุณสามารถบูตอุปกรณ์ในอุปกรณ์ที่ไม่ใช่ -โหมด KMS ที่สามารถบู๊ตไปยังเดสก์ท็อปหรือคอนโซลได้สำเร็จ จากนั้นคัดลอก EDID ที่เฟิร์มแวร์จะ (หวังว่า) อ่านได้สำเร็จ file.

  1. บูตเข้าสู่โหมดกราฟิกแบบเดิม
    1. แก้ไข config.txt ในพาร์ติชั่นสำหรับบูต ตรวจสอบให้แน่ใจว่าได้รันโปรแกรมแก้ไขของคุณโดยใช้ sudo และเปลี่ยนบรรทัดที่ระบุว่า dtoverlay=vc4-kms-v3d เป็น #dtoverlay=vc4-kms-v3d
    2. รีบูต
  2. เดสก์ท็อปหรือคอนโซลการเข้าสู่ระบบควรปรากฏขึ้น
    1. ใช้เทอร์มินัลเพื่อคัดลอก EDID จากอุปกรณ์แสดงผลที่เชื่อมต่อไปยัง file โดยใช้คำสั่งต่อไปนี้:
  • tvservice -d myedid.dat sudo mv myedid.dat /lib/firmware/

การใช้ file-based EDID แทนที่จะซักถามอุปกรณ์แสดงผล แก้ไข /boot/cmdline.txt ตรวจสอบให้แน่ใจว่าได้รันโปรแกรมแก้ไขของคุณโดยใช้ sudo และเพิ่มสิ่งต่อไปนี้ลงในบรรทัดคำสั่งเคอร์เนล: drm.edid_firmware=myedid.dat คุณสามารถใช้ EDID กับ พอร์ต HDMI เฉพาะดังต่อไปนี้: drm.edid_firmware=HDMI-A-1:myedid.dat หากจำเป็น ให้บูตกลับเข้าสู่โหมด KMS โดยดำเนินการดังต่อไปนี้:

  1. แก้ไข config.txt ในพาร์ติชั่นบูท ตรวจสอบให้แน่ใจว่าได้รันโปรแกรมแก้ไขของคุณโดยใช้ sudo และเปลี่ยนบรรทัดที่ระบุว่า #dtoverlay=vc4-kms-v3d เป็น dtoverlay=vc4-kms-v3d
  2. รีบูต

บันทึก
หากคุณใช้ file-based EDID แต่ยังคงมีปัญหากับ hotplug คุณสามารถบังคับใช้การตรวจจับ hotplug ได้โดยเพิ่มสิ่งต่อไปนี้ลงในบรรทัดคำสั่งเคอร์เนล: video=HDMI-A-1:D

เอกสาร / แหล่งข้อมูล

RaspberryPi KMS ไดรเวอร์กราฟิกเอาท์พุต HDMI [พีดีเอฟ] คู่มือการใช้งาน
KMS, ไดรเวอร์กราฟิกเอาต์พุต HDMI, เอาต์พุต KMS HDMI, ไดรเวอร์กราฟิก, ไดรเวอร์กราฟิกเอาต์พุต KMS HDMI, ไดรเวอร์

อ้างอิง

ฝากความคิดเห็น

ที่อยู่อีเมลของคุณจะไม่ถูกเผยแพร่ ช่องที่ต้องกรอกข้อมูลมีเครื่องหมาย *