我有一大堆代码使用POSIX API与设备进行通信,该设备本质上是一个cp210x USB转串口设备。
代码确实有效,但我必须安装内核扩展才能实现。现在,我不想安装kext。该设备的工程师已经为其设备使用了非标准供应商ID和产品ID,因此适当的驱动程序并未发现它可以正常工作。因此,我必须编辑kext的Info.plist,或者制作我自己的"无代码" kext,但无论哪种方式我都必须签署一个内核扩展,这似乎是一个痛苦的屁股(我记得这是一个巨大的考验只是为了获得正确的证书签署一个应用程序!)
所以基本上,我能够让它工作,但只有在全局关闭kext签名检查之后,这不是我想做的事情。
现在,我有另一块代码,它使用IOKit查询USB设备以查找与给定供应商ID和产品ID匹配的设备,并显示一系列有关它的属性。
有什么方法可以使用IOKit,打开到USB转串口设备的串口连接,而无需安装kext? (也许这个芯片足够通用,已经有一种正确的方法可以在OSX中实现它?USB-to-serial并不是一项全新的技术。)
答案 0 :(得分:2)
因此,如果我理解正确,您是否希望从用户空间向USB串行内核驱动程序添加IOKit kext特性?我不知道这样做的方法。
据我所知,您的选择是:
您一直在使用的无代码kext。对于小牛队和优胜美地队,你确实需要签署kext。实际签名很简单(使用Xcode很简单),但您需要从Apple获得正确的签名证书。 This is the form for it - 您需要成为付费的Mac开发者计划,并准备等待长达6周。
完全从用户空间访问设备。 You can do this via IOKit directly,或者您可以使用开源包装库,例如libusb。 然后您需要通过USB协议实际驱动串口转USB设备。也许你可以找到它的现有用户空间驱动程序;我找不到一个。但无论如何,您无法通过POSIX接口访问设备,因为所有内容都将存在于用户空间流程中。