Windows电脑中通过蓝牙拨打电话
技术预研-总结(四、百瑞互联BRLink)
上一篇章中,我们讲到淘宝花了10块钱买了一个CSR芯片的USB Bluetooth Dongle,后来淘宝卖家给发来了一个Win7的安装包,就是这个团队输出的。此安装包做的还是不错的,至少一个安装包在XP、Win7、Win8、Win10、Win11都能够正常的安装和使用,在呼叫过程中收听到的音质也很清晰无异常(音质较上一篇的千月存在“啵啵”杂音要好,我怀疑手上这款USB Dongle硬件就是这家做的,但是没有证据)
百瑞互联BRLink官网:百瑞互联 Barrot
安装包下载地址:链接:https://pan.baidu.com/s/1jsik4nTpxyYFyJ9BJ8U3qA 提取码:3ba8
(详情可参考下述路径描述:深圳泓泰鼎业电子有限公司 我也是百度搜的)
安装包安装后的驱动,在设备管理器中的展示如下图1所示:
图1 - 百瑞互联BRLink的蓝牙驱动程序
安装完成后,手动进入电脑目录【C:\Windows\System32\DriverStore\FileRepository】,可以看到新安装了一堆的驱动,如下图2所示:
图2 - 百瑞互联BRLink安装的所有驱动程序
使用上次购买的CSR芯片的USB Bluetooth Dongle(设备的VID为0x0A12 PID为0x0001)插入电脑后,运行BRLink提供的应用进行扫描、手机绑定、呼叫、A2DP音乐等均能正常使用。但由于BRLink本身并未提供SDK,所以需求预研很难进行。
我们采用逆向工程的思路(仅做科研分析,不做商业性的逆向破解,而且不提倡这样做),使用Dependency Walker,将任务管理器中的BRLinkTray.exe文件拖入后查看依赖项,发现它依赖iBridgeSDK.dll,并且右侧的内置函数区域,也能找到【Btsdk_Init()】【Btsdk_Done()】等函数,如下图3所示:
图3 - 百瑞互联BRLinkTray.exe依赖项及iBridgeSDK.dll内部函数一览
因此,我们使用上一篇章中,为了千月Bluesoleil而编写的Demo【BtForm_new】,将其内部的【BtSDK.cs】文件,代码中所有的[DllImport("BsSDK.dll")] 均改为[DllImport("iBridgeSDK.dll")] 修改完毕后,编译运行。发现果然正常可用。^V^,能说什么呢(个人初步怀疑:这两个软件之间,应该有某种不为人知的相互关系)。
示例Demo的下载地址如下所示,下载后需自行修改BtSDK.cs,感兴趣的读者可自行下载进行对比。
下载地址为:百度网盘 请输入提取码 提取码:qk2e
验证了一下,发现安装的应用和依据SDK编写的Demo均正常可用,使用我们预先安装的虚拟声卡,并将虚拟声卡名称“CABLE-A”和“CABLE-B”,通过【Btsdk_HFAP_SetWaveInDevice】和【Btsdk_HFAP_SetWaveOutDevice】传入SDK内之后,发起电话呼叫时,确实有声音从虚拟声卡中播出。我们使用【audiorepeater.exe】将虚拟声卡的声音重定向到扬声器后,可清晰的听到蓝牙SCO语音确实能够正常的获取到了声音。(但是绑定手机时,电脑弹框获取Link_Key或Pin码的能力还是无法直接从SDK获得)
图4 - 百瑞互联BRLink SDK的示例程序呼叫时的效果
写到这里,有一个好消息和一个坏消息。好消息是百瑞互联BRLink支持从XP到Win11的全系列Windows操作系统,并且似乎是免费使用的。坏消息是打电话时只有上行有声音,下行声音无法发送到目标手机。(截至到2022年4月25日时,可下载的BRLINK_V_1.1.0.34版本仍旧如此)。
所以,对于本次预研而言,百瑞互联BRLink的方案,其实也没什么卵用。(没声音的打电话有什么用?),还是得预研其它方案来代替。