- 积分
- 105
- 最后登录
- 2022-1-20
- 精华
- 1
- 阅读权限
- 20
- 主题
- 6
- UID
- 4863912
- 帖子
- 25
- PB币
- 802
- 威望
- 15
- 贡献
- 0
- 技术
- 18
- 活跃
- 191
- UID
- 4863912
- 帖子
- 25
- PB币
- 802
- 贡献
- 0
- 技术
- 18
- 活跃
- 191
|
63F
发表于 2022-1-13 11:00:07
IP属地美国
|只看该作者
非常感谢大家的支持!
首先,本人在这里解释一下驱动的使用方式。AppleBluetooth是IntelBluetoothFamily的父组织,所以只要打开github.com/AppleBluetooth就可以看到所有需要资源所在处。下载1.0.0版OpenFirmwareManager,1.0.1版IOBluetoothFixup,以及最新版IntelBluetoothFamily后把他们拖入OC/Kexts即可。一定要注意加载顺序,详见IntelBluetoothFamily的readme。
目前我是不考虑缩减驱动数量的。OpenFirmwareManager是一个固件管理API,跟蓝牙并没有直接关联(i.e. 比如如果我写了一个wifi驱动,也需要固件上传/存储/压缩功能,就可以依赖这个驱动),存在目的是缩减代码量以及对功能进行模块化。IOBluetoothFixup则是一个lilu plugin,因此不太好和Family进行合并。同时,如果我未来开发了高通/螃蟹的蓝牙驱动,都需要使用它来对苹果IOBluetoothFamily进行一些patch。此外,区分IntelBluetoothFamily和各种Transport是因为他们的功能完全不同。Transport是数据传输层,并不提供具体蓝牙服务,而Family(HostController)则对HCI command等功能进行支持。由于我是继承的苹果架构,Family和Transport也从技术角度上必须分开,不然没法加载。一代修好之后我会对驱动进行改名,这样就可以直接把transports作为Family的plugin了,更方便使用。(顺便吐槽一下oc设置驱动名长度上限的奇葩规定)
另外必须得声明一下,这个驱动是永远不会支持macOS 12的,因为苹果完全重写了蓝牙栈,并且是用户层的,还把符号全部strip了,所以根本无法继承或反编译出头文件。关于12的蓝牙兼容性问题我还在跟zxystd,bat.bat等大佬讨论。
AirDrop其实跟蓝牙没有直接关联哦,用AirDrop需要实现awdl协议,不过这个问题我后面可能会研究。
最后,再次感谢大家的支持! |
-
3
查看全部评分
-
|