-3

我最近在我的联想 Y50 系统上安装了 hackintosh Yosemite,并使用提供的 kext 来完成大部分工作。虽然 elan 智能板(触摸板)不工作。我想开发 kexts 或任何其他需要让它自己工作的软件。我无法在网上找到 elan smartpad 的硬件规格。谁能帮我找到它。另外,阅读规范后我的下一步应该是什么。欢迎有编写 kexts 或设备驱动程序经验的人提出任何建议。

谢谢你。

Elan Smartpad 网页

4

1 回答 1

1

这有很多部分。取决于您已经知道/拥有的经验,以及您愿意投入多少时间和毅力,当然还有硬件本身的尴尬,至于是否值得...

  1. 确定硬件接口的类型。它很可能是一个 USB HID 设备,但如果不是,它会做更多的工作,因为您需要将设备发送的消息以一种或另一种方式转换为 HID 报告。最简单的查找方法是从 Apple 的开发者网站或开源 IOJones 下载硬件 IO 工具,然后在服务树中查找设备。您可能会发现它连接到 USB 总线,但一个关键问题是它已经匹配了哪些驱动程序。IOHID* 是一个好兆头。IOHIDPointing 是一个更好的标志。请注意,它的默认配置可能不是唯一的一种,如果有多种设备配置,则默认一种可能不是功能最全的一种。(如果没有响铃,请阅读 USB 设备配置。)

  2. 如果它不报告为 HID 设备,则需要详细了解其硬件接口。如果有一个开源 Linux 或 BSD 驱动程序,您可能可以从该源中解决它并将其转换为 OSX 的 IOKit kext。并不简单,如果这是您的第一个驱动程序,预计这会花费您相当长的时间。我建议先尝试编写用户空间 USB 驱动程序,然后在对收到的消息感到满意时将其移植到内核。如果没有 OSS 驱动程序,请对 Windows 进行逆向工程。最简单的方法是在 VM 中安装 Windows,将 USB 设备传递到 VM,在其中加载驱动程序,并在主机上记录所有 USB 流量。然后煞费苦心地弄清楚这一切意味着什么。处理完消息后,您可能需要将它们转换为 HID 报告,连同一个报告描述符,告诉操作系统它们是如何格式化的。您需要将其作为 HID 设备发布到操作系统。检查 IOHIDFamily 源以获取详细信息,并使用鼠标左右作为工作参考。

  3. 一旦你有了 HID 描述符,问题是 OSX 是否可以按原样解释它们。如果您的设备已经显示为 HID,则 OSX 没有将报告描述符正确解释为指向设备,或者它无法理解生成的报告。您需要修改报告描述符,或者将描述符和每个报告都修改为对 OSX 有意义的内容。最好的方法可能是查看类似设备的报告描述符(例如 Apple 自己的触控板)并尝试将您的设备变成类似的形式。另一个有用的技术是通过 IOHIDFamily 源进行跟踪以找出问题所在。为 OSX 修改 HID 报告描述符(但不是报告)以理解它们的驱动程序示例如下:https://github.com/pmj/QemuUSBTablet-OSX/blob/master/QemuUSBTablet/PJQemuUSBTabletDriver.cpp

根据您对这类事情的经验水平,其中可能有相当多的内容最初并没有多大意义。如果您对这些主题还不是很熟悉,请阅读 USB、HID、xnu 内核、kext 开发等。从好的方面来说,这可能不是最难开始的驱动程序项目。祝你好运!

于 2015-07-21T08:18:47.727 回答