蓝牙适配器和 iOS 模拟器
Posted
技术标签:
【中文标题】蓝牙适配器和 iOS 模拟器【英文标题】:Bluetooth Dongle and iOS Simulator 【发布时间】:2012-11-02 20:56:20 【问题描述】:我已按照 Apple 技术说明中的说明购买了 IOGEAR GBU521 蓝牙加密狗:
http://developer.apple.com/library/ios/#technotes/tn2295/_index.html
我还按照说明对其进行了配置,我正在尝试让温度传感器演示工作,但设置下的蓝牙似乎永远不会打开(继续旋转)。查看控制台,这是我看到的:
2012-11-02 4:17:08.114 PM Preferences[862]:BTM:设置可发现状态已启用 2012-11-02 4:17:08.114 PM 首选项[862]:BTM:设置可连接启用 2012-11-02 4:17:08.115 PM 首选项[862]:BTM:启用设备扫描 2012-11-02 4:17:08.115 PM 首选项 [862]:BTM:无法开始扫描,错误 111
有什么想法吗?我见过有人问过这个问题,但有没有人采用这种方法?
最好的,
【问题讨论】:
【参考方案1】:扔掉 IOGEAR 并拿起 Cirago BTA8000。
除了 Cirago BTA8000 和 MediaLink 4.0 适配器之外,我还购买了您提到的 IOGEAR。事实证明,尽管我的 MacBook 内置了完全相同的芯片,但基于 Broadcom 芯片的任何东西都不起作用,这意味着 MediaLink 和 IOGEAR 不起作用。我的 Cirago 货物今天早上刚到,iOS 模拟器中的蓝牙滑块在不到一秒的时间内就弹到了“ON”。
如果您想进行实验,我很想知道其他非博通芯片是否也可以工作。
【讨论】:
这似乎是目前的结论。我选择购买带有 BT 4.0 的 iPod Touch。无论如何,我需要得到一个。不过谢谢! @blued Hey Cirago BTA800 将作为独立的加密狗工作..?我的意思是我想在 iphone 应用程序中通过蓝牙搜索设备并想在他们的列表中发现 Cirago 名称?有没有可能..?【参考方案2】:我刚从亚马逊买了一个 GBU521 来升级我的 MacBook8,3 中的 BT
我遇到了同样的问题,它没有显示出来。阅读您引用的同一篇文章(TN2295)我做了一个sudo nvram bluetoothHostControllerSwitchBehavior="always"
,它告诉系统如果插入了蓝牙控制器,则始终切换到蓝牙控制器。
default
选项:
当连接新的 HCI 时,如果新模块不是 Apple 模块,内置驱动程序只会断开与内置 HCI 的连接并连接到外部 HCI。
我推测由于供应商 ID 匹配 (0xa5c
),它没有切换到新的加密狗。将其设置为always
会导致 OSX 始终切换到新的 BT 适配器。 TN2295 中的以下声明证实了这一点:
打开系统信息应用程序以验证系统蓝牙驱动程序是否与内置蓝牙主机控制器接口 (HCI) 匹配。对于硬件->蓝牙设置,确认供应商 ID 为“0x5AC”。
nvram
更新后重新启动,我能够重新配对我的所有设备而没有发生任何问题。
但是由于TN2295 中的以下声明,这对于 iOS BT LE 开发不起作用:
如果系统蓝牙控制器与蓝牙 LE USB 适配器匹配,则 iOS 模拟器将无法使用外部蓝牙控制器进行蓝牙 LE 服务。
【讨论】:
【参考方案3】:实际上,您可以在此处找到 BroadcomBluetoothHostControllerUSBTransport.kext
中的 Info.plist
修改:
/System/Library/Extensions/IOBluetoothFamily.kext/Contents/PlugIns/BroadcomBluetoothHostControllerUSBTransport.kext/Contents/Info.plist...
只需复制另一个 Broadcom 字典并对其进行修改或使用以下添加到 Info.plist
。您需要以管理员身份执行此操作(即复制原始文件后,sudo nano
或 vi
此文件)。
<key>Add an appropriate name here</key>
<dict>
<key>CFBundleIdentifier</key>
<string>com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport</string>
<key>IOClass</key>
<string>BroadcomBluetoothHostControllerUSBTransport</string>
<key>IOProviderClass</key>
<string>IOUSBDevice</string>
<key>idProduct</key>
<integer>8680</integer>
<key>idVendor</key>
<integer>2652</integer>
</dict>
编辑后可能需要重新启动。在 2012 MacBook Pro 上执行此操作,运行 XCode,它允许访问 iOS 模拟器中的蓝牙加密狗!
我希望这会有所帮助!
【讨论】:
以上是关于蓝牙适配器和 iOS 模拟器的主要内容,如果未能解决你的问题,请参考以下文章