2013-03-01 128 views
11

當我試圖用我的iphone應用程序連接藍牙LE。它給CoreBluetooth [錯誤] XPC連接中斷,重置。 爲什麼呢?CoreBluetooth [錯誤] XPC連接中斷,重置

+1

請加上例外 – 2013-03-01 02:17:25

+0

我面臨這個問題太對我的Mac Mini @ 10.9更多詳細資料(適用於Mac的應用程序,我用<IOBluetooth/IOBluetooth.h>而不是<CoreBluetooth/CoreBluetooth.h>,其他一切都是一樣的)。我注意到,如果我通過Wi-Fi同時傳輸一些數據,則不會發生此問題。 500 kbit/sec足以擺脫這個問題。 一旦我停止通過Wi-Fi傳輸數據,問題就會再次發生。我懷疑問題的根源在於時間問題,即CoreBluetooth堆棧中的某些事情發生得比已經耗盡的速度快,因此問題在於。 – Sergey 2013-11-04 17:40:42

+0

我在運行10.9 Mavericks(Apple Bluetooth Software Version 4.2.0f6 12982)的2012年末Mac mini(Broadcom芯片組:20702B0固件版本:v78 c8621)上遇到此問題。 CBCentralManager獲得XPC連接中斷,然後在連接到外設後總是在500ms後重置自身。嘗試@謝爾蓋使用nc通過wifi傳輸數據的技巧似乎沒有幫助。另一方面,我也沒有在運行小牛的2011年中期的Mac Mini(Broadcom芯片組:20702A3固件版本:v131 c5495)上遇到這個問題。 – yonran 2013-12-05 20:54:59

回答

2

也適用於我 - 特別是當我停止CM掃描並重新啓動時啓動CBCentralManager(CM)掃描 - 通常會解決此問題。 恐怕這是CoreBluetooth實施中的一個bug

+1

大家請繼續向Apple報告。我們需要讓他們解決這些問題。我也有同樣的錯誤,而且完全不能接受。 – 2013-04-04 21:32:30

+0

這裏同樣的問題。在Macbook PRO Retina 15上運行10.9.2。 – valvoline 2014-03-25 21:18:34

3

「CoreBluetooth [ERROR] XPC連接中斷,重置」意味着blued藍牙守護進程已經崩潰。您可以通過打開控制檯並查看系統日誌和DiagnosticReports來查看更多詳細信息。

在我的情況下,似乎藍色內的異常發生,因爲SerialNumber是零的地方。我沒有解決方法,並已將其報告給bugreport.apple.com(錯誤16075785)。

實際導致異常的方法是確定性的,但因計算機而異。在一臺帶內置藍牙4.0芯片的電腦上,撥打-[CBPeripheral discoverCharacteristics:forService:]即可。在另一臺計算機與藍牙4.0 USB接口,它是調用-[CBPeripheral writeValue:forCharacteristic:type:]-[CBPeripheral setNotifyValue:forCharacteristic:]

'NSInvalidArgumentException', reason: '*** setObjectForKey: object cannot be nil (key: SerialNumber)' 
    *** First throw call stack: 
    (
     0 CoreFoundation      0x00007fff91b1141c __exceptionPreprocess + 172 
     1 libobjc.A.dylib      0x00007fff9231de75 objc_exception_throw + 43 
     2 CoreFoundation      0x00007fff91a0c62e -[__NSDictionaryM setObject:forKey:] + 1102 
     3 blued        0x0000000103d5d422 blued + 336930 
     4 blued        0x0000000103d4b115 blued + 262421 
     5 IOBluetooth       0x00007fff97354093 -[IOBluetoothL2CAPChannel processIncomingData:] + 576 
     6 IOBluetooth       0x00007fff97353e3c -[IOBluetoothL2CAPChannel handleMachMessage:] + 45 
     7 Foundation       0x00007fff94d98e35 __NSFireMachPort + 94 
     8 CoreFoundation      0x00007fff91a42d04 __CFMachPortPerform + 388 
     9 CoreFoundation      0x00007fff91a42b69 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 41 

編輯2014年2月27日:我特別崩潰發生,因爲該設備GATT表包含特性2A25無效的非UTF8值«服務器180A«設備信息»中的「序列號字符串」,藍色守護進程正在創建一個NSString *並將其放入一個NSMutableDictionary中。暫時的解決辦法是讓的setObject:forKey:內通過跳轉到最近的RET命令發藍永遠不會失敗:

sudo /Applications/Xcode.app/Contents/Developer/usr/bin/lldb <<PID of blued>> 
breakpoint set --fullname "-[__NSDictionaryM setObject:forKey:]" --condition "$rdx == 0" 
breakpoint command add 1 
register write pc `$pc+967` 
continue 
DONE 
+0

只需添加到此即可。如果您在開發期間在OSX中遇到了錯誤的GATT表,請通過重新啓動計算機來重置它。我花了兩個小時試圖弄清楚爲什麼我在嘗試重新啓動之前無法發現任何服務。重新啓動解決了它。通過禁用適配器並重新啓用它(這將清除GATT緩存),可以在iOS上清除不良的GATT表。 – 2014-03-26 13:36:24

+2

@SandyChapman,對於一些不正確的GATT條目,重新啓動是不夠的。請參閱[藍色緩存ATT值,以及如何清除緩存?](http://stackoverflow.com/questions/22028998/does-blued-cache-att-values-and-how-to-clear-the-cache )手動刪除它。 – yonran 2014-03-26 16:03:52

+0

你是如何獲得堆棧跟蹤的?我在iOS上運行,所有我得到的是日誌 – 2015-08-09 22:40:33

0

添加到CBPeripheralManager服務時我得到這個崩潰。結果發現我的方法中有一個令人討厭的錯字(沒有編譯器錯誤或警告)來獲取某些特徵ID。所以有幾個特徵是用無符號ID創建的。我得到的只是iOS 7.1.1下的日誌中的這個錯誤,當查看我的設備日誌時發現了BTServer崩潰報告。我的設備與iOS 8.1.2沒有登錄到控制檯,所以它可能會更糟糕,找到問題。

0

意外發現此錯誤的另一個原因:USB集線器和連接不良或電源不良導致我的調試環境損壞。意思是它確實報告錯誤不規則。

更多關於我的Odyssee:通常我直接連接生成機器,但是當我遇到這個問題時,它通過我的顯示器的USB集線器連接。我重新啓動了Xcode,重新啓動了構建器,但沒有成功。有趣的事實:相同的設置現在工作正常3天,但在週五(今天)連接到調試器是不情願的。

希望這個提示是不是一次性的奇蹟;-)