1
วิธีการใช้ไดรเวอร์เคอร์เนล Linux อินเตอร์เฟส bind / unbind สำหรับอุปกรณ์ USB-HID
พื้นหลังแรก ฉันกำลังพัฒนาไดรเวอร์สำหรับอุปกรณ์แผงเกม Logitech มันเป็นคีย์บอร์ดที่มีหน้าจออยู่ ไดรเวอร์ทำงานได้เป็นอย่างดี แต่โดยค่าเริ่มต้นอุปกรณ์จะถูกจัดการโดย HID เพื่อป้องกันไม่ให้ HID ทำการยึดอุปกรณ์ก่อนไดร์เวอร์ฉันสามารถขึ้นบัญชีดำใน hid-core.c ใช้งานได้ แต่ไม่ใช่ทางออกที่ดีที่สุดเนื่องจากฉันทำงานกับคนหลายคนและเราทุกคนต้องทำการปะโมดูล HID ของเราซึ่งกำลังเป็นที่น่าเบื่อโดยเฉพาะอย่างยิ่งมันมักเกี่ยวข้องกับการสร้าง initramfs ขึ้นมาใหม่ ฉันได้วิจัยบางอย่างเกี่ยวกับปัญหานี้และผมพบว่าโพสต์รายชื่อผู้รับจดหมายซึ่งท้ายที่สุดก็พาฉันไปที่บทความนี้ใน LWN สิ่งนี้อธิบายกลไกสำหรับการผูกอุปกรณ์กับไดรเวอร์เฉพาะตอนรันไทม์ ดูเหมือนว่าสิ่งที่ฉันต้องการ ดังนั้นฉันจึงพยายาม ฉันสามารถปลดคีย์บอร์ดจาก HID ได้ สิ่งนี้ได้ผลและเป็นไปตามที่คาดไว้ฉันไม่สามารถพิมพ์ได้อีกต่อไป แต่เมื่อฉันพยายามที่จะผูกไว้กับไดรเวอร์ของเราฉันได้รับ "ข้อผิดพลาด: ไม่มีอุปกรณ์ดังกล่าว" และการดำเนินการล้มเหลว ดังนั้นคำถามของฉันคือฉันจะใช้การดำเนินการเคอร์เนลผูก / unbind เพื่อทำซ้ำสิ่งที่เกิดขึ้นเมื่อคุณขึ้นบัญชีดำอุปกรณ์ HID ใน hid-core และจัดหาไดรเวอร์ของคุณเอง? - นั่นคือ - เพื่อแทนที่ความต้องการในการแก้ไข hid-core.c ตลอดเวลาหรือไม่ แหล่งที่มาของไดรเวอร์ของเราอยู่ที่นี่: https://github.com/ali1234/lg4l