Update to improve Bluetooth driver diagnosis in Windows 8.1

Summary
This update improves Bluetooth driver diagnosis by exposing more information in the Bluetooth driver.
More information
Important Do not install a language pack after you install this update. If you do, the language-specific changes in the update will not be applied, and you will have to reinstall the update. For more information, see Add language packs to Windows.

Method 1: Windows Update

This update is provided as an Optional update on Windows Update. For more information on how to run Windows Update, see How to get an update through Windows Update.

Method 2: Microsoft Download Center

The following files are available for download from the Microsoft Download Center:The following updates are available for download from the Microsoft Download Center:


For more information about how to download Microsoft support files, click the following article number to view the article in the Microsoft Knowledge Base:
119591 How to obtain Microsoft support files from online services
Microsoft scanned this file for viruses. Microsoft used the most current virus-detection software that was available on the date that the file was posted. The file is stored on security-enhanced servers that help prevent any unauthorized changes to the file.

How to capture and analyze Bluetooth ETW traces

This section describes how to capture and analyze Bluetooth traces for the following drivers:
  • bthport
  • hidbth
  • btha2dp
The size of the Event Tracing for Windows (ETW) logs and the parsed output file are typically quite large, especially for bthport and btha2dp. Although complete traces are necessary to analyze the scenario in detail, for specific drivers, you can enable only those drivers.

How to capture Bluetooth ETW traces

To capture Bluetooth event traces without installing any additional software after a restart, follow these steps:
  1. Open an elevated Command Prompt window. For example, right-click Start, and then click Command Prompt (Admin).
  2. Set up the scenario of interest.
  3. Start a capture session by pasting the following sequence of commands into the Command Prompt window.

    Note Press Enter after each command.

    mkdir %USERPROFILE%\desktop\Bluetooth_Traceslogman create trace -n BthTrace -o %USERPROFILE%\desktop\Bluetooth_Traces\bth_ETW_trace.etl -nb 128 640 -bs 128logman update trace -n BthTrace -p Microsoft-Windows-BTH-BTHPORT @REM -- these are traces for bthhid --logman update trace -n BthTrace -p "{5794AE18-A6E8-4348-A3FB-0EB1C0AD14B0}" @REM -- these are traces for btha2dp --logman update trace -n BthTrace -p "{DDB6DA39-08A7-4579-8D0C-68011146E205}"logman start -n BthTrace
  4. Perform the action that you want to capture. Keep the Command Prompt window open.
  5. Stop the capture session when you are finished by pasting the following sequence of commands into the Command Prompt window.

    Note Press Enter after each command.
    logman stop -n BthTracelogman delete -n BthTrace

How to parse Bluetooth ETW traces

Bluetooth events are logged in the %USERPROFILE%\desktop\Bluetooth_Traces\bth_ETW_trace.etl file. The events can be parsed by using the Tracerpt.exe utility that's installed with Windows.

Run the following command:

tracerpt bth_ETW_trace.etl –o bth_ETW_report.xml

This command generates the full XML report for the ETW events that have been logged. The events resemble those in the following examples.

Bthport events

<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
<System>
<Provider Name="Microsoft-Windows-BTH-BTHPORT" Guid="{8a1f9517-3a8c-4a9e
-a018-4f17a200f277}" />
<EventID>175</EventID>
<Version>0</Version>
<Level>4</Level>
<Task>0</Task>
<Opcode>0</Opcode>
<Keywords>0x8000000000000000</Keywords>
<TimeCreated SystemTime="2015-02-19T11:18:49.778841500Z" />
<Correlation ActivityID="{00000000-0000-0000-0000-000000000000}" />
<Execution ProcessID="4" ThreadID="584" ProcessorID="2" KernelTime="135"
UserTime="0" />
<Channel>Microsoft-Windows-BTH-BTHPORT/HCI</Channel>
<Computer />
</System>
<EventData>
<Data Name="SentStatus">1</Data>
<Data Name="CommandPacketsAllowed">1</Data>
<Data Name="AclWriteCredits">2382947841</Data>
<Data Name="Event_Code">0xE</Data>
<Data Name="Event_Total_Length">4</Data>
<Data Name="Num_HCI_Command_Packets">1</Data>
<Data Name="Command_Opcode">3096</Data>
<Data Name="Status">0x0</Data>
</EventData>
<RenderingInfo Culture="en-US">
<Level>Information </Level>
<Opcode>Info </Opcode>
<Message>HCI_CX_EVT_GENERIC </Message>
<Channel>Microsoft-Windows-BTH-BTHPORT/HCI</Channel>
</RenderingInfo>
</Event>



HidBth and BthA2DP events
HidBth events are identified with the {5794ae18-a6e8-4348-a3fb-0eb1c0ad14b0} provider GUID, and BthA2DP events are identified with the {DDB6DA39-08A7-4579-8D0C-68011146E205} provider GUID. The events can be better decoded by using event information, as in the following example:

<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
<System>
<Provider Guid="{5794ae18-a6e8-4348-a3fb-0eb1c0ad14b0}" />
<EventID>6</EventID>
<Version>0</Version>
<Level>4</Level>
<Task>5</Task>
<Opcode>0</Opcode>
<Keywords>0x8000800000000000</Keywords>
<TimeCreated SystemTime="2015-02-19T11:18:50.735956400Z" />
<Correlation ActivityID="{00000000-0000-0000-0000-000000000000}" />
<Execution ProcessID="0" ThreadID="0" ProcessorID="0" KernelTime="4276530" UserTime="0" />
<Channel />
<Computer />
</System>
<BinaryEventData>03010000</BinaryEventData>
</Event>



BthHid events
The event information for BthHid resembles the following:

<event
channel="Microsoft-Windows-BTH-HidBth/Operational"
keywords="HIDBTH_OPERATIONAL "
level="win:Informational"
message="$(string.Microsoft-Windows-BTH-HidBth.event.0.message)"
opcode="win:Start"
symbol="_LoadHidBthDriver"
task="BthHidDriverLoadUnloadTask"
template="st_BthHidDrv_SetErrorCode"
value="1"
version="0"
/>
<event
channel="Microsoft-Windows-BTH-HidBth/Operational"
keywords="HIDBTH_OPERATIONAL "
level="win:Informational"
message="$(string.Microsoft-Windows-BTH-HidBth.event.1.message)"
opcode="win:Stop"
symbol="_UnloadHidBthDriver"
task="BthHidDriverLoadUnloadTask"
value="2"
version="0"
/>
<event
channel="Microsoft-Windows-BTH-HidBth/Operational"
keywords="HIDBTH_OPERATIONAL "
level="win:Informational"
message="$(string.Microsoft-Windows-BTH-HidBth.event.2.message)"
opcode="win:Info"
symbol="_HidBthGetDeviceDescriptor"
task="HidBthGetDeviceDescriptorTask"
template="st_BthHidDrv_SetErrorCode"
value="3"
version="0"
/>
<event
channel="Microsoft-Windows-BTH-HidBth/Operational"
keywords="HIDBTH_OPERATIONAL "
level="win:Informational"
message="$(string.Microsoft-Windows-BTH-HidBth.event.3.message)"
opcode="win:Info"
symbol="_HidBthGetReportDescriptor"
task="HidBthGetReportDescriptorTask"
template="st_BthHidDrv_SetErrorCode"
value="4"
version="0"
/>
<event
channel="Microsoft-Windows-BTH-HidBth/Operational"
keywords="HIDBTH_OPERATIONAL "
level="win:Informational"
message="$(string.Microsoft-Windows-BTH-HidBth.event.4.message)"
opcode="win:Info"
symbol="_HidBthGetPhysicalDescriptor"
task="HidBthGetPhysicalDescriptorTask"
template="st_BthHidDrv_SetErrorCode"
value="5"
version="0"
/>
<event
channel="Microsoft-Windows-BTH-HidBth/Operational"
keywords="HIDBTH_OPERATIONAL "
level="win:Informational"
message="$(string.Microsoft-Windows-BTH-HidBth.event.5.message)"
opcode="win:Info"
symbol="_HidBthReadReport"
task="HidBthReadReportTask"
template="st_BthHidDrv_SetErrorCode"
value="6"
version="0"
/>
<event
channel="Microsoft-Windows-BTH-HidBth/Operational"
keywords="HIDBTH_OPERATIONAL "
level="win:Informational"
message="$(string.Microsoft-Windows-BTH-HidBth.event.6.message)"
opcode="win:Info"
symbol="_HidBthWriteReport"
task="HidBthWriteReportTask"
template="st_BthHidDrv_SetErrorCode"
value="7"
version="0"
/>
<event
channel="Microsoft-Windows-BTH-HidBth/Operational"
keywords="HIDBTH_OPERATIONAL "
level="win:Informational"
message="$(string.Microsoft-Windows-BTH-HidBth.event.7.message)"
opcode="win:Info"
symbol="_HidBthGetDeviceAttributes"
task="HidBthGetDeviceAttributesTask"
template="st_BthHidDrv_SetErrorCode"
value="8"
version="0"
/>
<event
channel="Microsoft-Windows-BTH-HidBth/Operational"
keywords="HIDBTH_OPERATIONAL "
level="win:Informational"
message="$(string.Microsoft-Windows-BTH-HidBth.event.8.message)"
opcode="win:Info"
symbol="_HidBthGetStringOrIndexedString"
task="HidBthGetStringOrIndexedStringTask"
template="st_BthHidDrv_SetErrorCode"
value="9"
version="0"
/>
<event
channel="Microsoft-Windows-BTH-HidBth/Operational"
keywords="HIDBTH_OPERATIONAL "
level="win:Informational"
message="$(string.Microsoft-Windows-BTH-HidBth.event.9.message)"
opcode="win:Info"
symbol="_HidBthUnknownIoctl"
task="HidBthUnknownIoctlTask"
template="st_BthHidDrv_SetErrorCode"
value="10"
version="0"
/>
<event
channel="Microsoft-Windows-BTH-HidBth/Operational"
keywords="HIDBTH_OPERATIONAL "
level="win:Informational"
message="$(string.Microsoft-Windows-BTH-HidBth.event.11.message)"
opcode="win:Info"
symbol="_HidBthReadCompletionEvt"
task="HidBthReadCompletionTask"
template="st_BthHidDrv_SetErrorCode"
value="11"
version="0"
/>
<event
channel="Microsoft-Windows-BTH-HidBth/Operational"
keywords="HIDBTH_OPERATIONAL "
level="win:Informational"
message="$(string.Microsoft-Windows-BTH-HidBth.event.12.message)"
opcode="win:Info"
symbol="_HidBthWriteCompletionEvt"
task="HidBthWriteCompletionTask"
template="st_BthHidDrv_SetErrorCode"
value="12"
version="0"
/>
<event
channel="Microsoft-Windows-BTH-HidBth/Operational"
keywords="HIDBTH_OPERATIONAL "
level="win:Informational"
message="$(string.Microsoft-Windows-BTH-HidBth.event.13.message)"
opcode="win:Info"
symbol="_HidBthGetSetFeatureOrGetSetReport"
task="HidBthGetSetFeatureOrGetSetReportTask"
template="st_BthHidDrv_SetErrorCode"
value="13"
version="0"
/>



BthA2DP events
The event information for BthA2DP resembles the following:

<event
channel="Microsoft-Windows-BTH-AudioClassDriver/Operational"
keywords="_BTHAudClassDrv_KEYWORD "
level="win:Informational"
message="$(string.eventPinSetDeviceStateStart)"
opcode="win:Start"
symbol="_PinSetDeviceStateStart"
task="PinSetDeviceState"
template="st_BthAudioClassDriver_PinSetDeviceStateStart"
value="1"
version="0"
/>
<event
channel="Microsoft-Windows-BTH-AudioClassDriver/Operational"
keywords="_BTHAudClassDrv_KEYWORD "
level="win:Informational"
message="$(string.eventPinSetDeviceStateStop)"
opcode="win:Stop"
symbol="_PinSetDeviceStateStop"
task="PinSetDeviceState"
value="2"
version="0"
/>
<event
channel="Microsoft-Windows-BTH-AudioClassDriver/Operational"
keywords="_BTHAudClassDrv_KEYWORD "
level="win:Informational"
message="$(string.eventPinProcess)"
opcode="win:Info"
symbol="_PinProcess"
task="PinProcess"
template="st_BthAudioClassDriver_PinProcess"
value="3"
version="0"
/>
<event
channel="Microsoft-Windows-BTH-AudioClassDriver/Operational"
keywords="_BTHAudClassDrv_KEYWORD "
level="win:Verbose"
message="$(string.eventPcmPinSetTimerStart)"
opcode="win:Start"
symbol="_SetTimerStart"
task="SetTimer"
template="st_BthAudioClassDriver_SetTimerStart"
value="4"
version="0"
/>
<event
channel="Microsoft-Windows-BTH-AudioClassDriver/Operational"
keywords="_BTHAudClassDrv_KEYWORD "
level="win:Verbose"
message="$(string.eventPcmPinSetTimerStop)"
opcode="win:Stop"
symbol="_SetTimerStop"
task="SetTimer"
template="st_BthAudioClassDriver_SetTimerStop"
value="5"
version="0"
/>
<event
channel="Microsoft-Windows-BTH-AudioClassDriver/Operational"
keywords="_BTHAudClassDrv_KEYWORD "
level="win:Verbose"
message="$(string.eventPcmPinTimer)"
opcode="win:Info"
symbol="_Timer"
task="Timer"
value="6"
version="0"
/>
<event
channel="Microsoft-Windows-BTH-AudioClassDriver/Operational"
keywords="_BTHAudClassDrv_KEYWORD "
level="win:Informational"
message="$(string.eventPcmPinTimerWorkStart)"
opcode="win:Start"
symbol="_TimerWorkStart"
task="TimerWork"
template="st_BthAudioClassDriver_TimerWorkStart"
value="7"
version="0"
/>
<event
channel="Microsoft-Windows-BTH-AudioClassDriver/Operational"
keywords="_BTHAudClassDrv_KEYWORD "
level="win:Informational"
message="$(string.eventPcmPinTimerWorkStop)"
opcode="win:Stop"
symbol="_TimerWorkStop"
task="TimerWork"
value="8"
version="0"
/>
<event
channel="Microsoft-Windows-BTH-AudioClassDriver/Operational"
keywords="_BTHAudClassDrv_KEYWORD "
level="win:Informational"
message="$(string.eventPcmPinBytesCompletedCallbackStart)"
opcode="win:Start"
symbol="_BytesCompletedCallbackStart"
task="PcmPinBytesCompletedCallback"
template="st_BthAudioClassDriver_BytesCompletedCallbackStart"
value="9"
version="0"
/>
<event
channel="Microsoft-Windows-BTH-AudioClassDriver/Operational"
keywords="_BTHAudClassDrv_KEYWORD "
level="win:Informational"
message="$(string.eventPcmPinBytesCompletedCallbackStop)"
opcode="win:Stop"
symbol="_BytesCompletedCallbackStop"
task="PcmPinBytesCompletedCallback"
value="10"
version="0"
/>
<event
channel="Microsoft-Windows-BTH-AudioClassDriver/Operational"
keywords="_BTHAudClassDrv_KEYWORD "
level="win:Informational"
message="$(string.eventStreamPointerDelete)"
opcode="win:Info"
symbol="_StreamPointerDelete"
task="StreamPointerDelete"
template="st_BthAudioClassDriver_StreamPointerDelete"
value="11"
version="0"
/>
<event
channel="Microsoft-Windows-BTH-AudioClassDriver/Operational"
keywords="_BTHAudClassDrv_KEYWORD "
level="win:Error"
message="$(string.eventL2capOverflowStart)"
opcode="win:Start"
symbol="_L2capOverflowStart"
task="L2capOverflow"
value="12"
version="0"
/>
<event
channel="Microsoft-Windows-BTH-AudioClassDriver/Operational"
keywords="_BTHAudClassDrv_KEYWORD "
level="win:Error"
message="$(string.eventL2capOverflowStop)"
opcode="win:Stop"
symbol="_L2capOverflowStop"
task="L2capOverflow"
value="13"
version="0"
/>
<event
channel="Microsoft-Windows-BTH-AudioClassDriver/Operational"
keywords="_BTHAudClassDrv_KEYWORD "
level="win:Error"
message="$(string.eventStreamPointerDrop)"
opcode="win:Info"
symbol="_StreamPointerDrop"
task="StreamPointerDrop"
template="st_BthAudioClassDriver_StreamPointerDrop"
value="14"
version="0"
/>
<event
channel="Microsoft-Windows-BTH-AudioClassDriver/Operational"
keywords="_BTHAudClassDrv_KEYWORD "
level="win:Informational"
message="$(string.eventSetStreamingState)"
opcode="win:Info"
symbol="_SetStreamingState"
task="SetStreamingState"
template="st_BthAudioClassDriver_SetStateByName"
value="15"
version="0"
/>
<event
channel="Microsoft-Windows-BTH-AudioClassDriver/Operational"
keywords="_BTHAudClassDrv_KEYWORD "
level="win:Informational"
message="$(string.Microsoft-Windows-BTH-AudioClassDriver.event.16.message)"
opcode="win:Start"
symbol="_LoadBthA2dpDriver"
task="BthA2dpDriverLoadUnload"
value="16"
version="0"
/>
<event
channel="Microsoft-Windows-BTH-AudioClassDriver/Operational"
keywords="_BTHAudClassDrv_KEYWORD "
level="win:Informational"
message="$(string.Microsoft-Windows-BTH-AudioClassDriver.event.17.message)"
opcode="win:Stop"
symbol="_UnloadBthA2dpDriver"
task="BthA2dpDriverLoadUnload"
value="17"
version="0"
/>
<event
channel="Microsoft-Windows-BTH-AudioClassDriver/Operational"
keywords="_BTHAudClassDrv_KEYWORD "
level="win:Informational"
message="$(string.Microsoft-Windows-BTH-AudioClassDriver.event.18.message)"
opcode="win:Info"
symbol="_MethodAttemptConnect"
task="MethodAttemptConnectDisconnect"
template="st_BthAudioClassDriver_SetErrorCode"
value="18"
version="0"
/>
<event
channel="Microsoft-Windows-BTH-AudioClassDriver/Operational"
level="win:Informational"
message="$(string.Microsoft-Windows-BTH-AudioClassDriver.event.19.message)"
opcode="win:Info"
symbol="_MethodAttemptDisconnect"
task="MethodAttemptConnectDisconnect"
template="st_BthAudioClassDriver_SetErrorCode"
value="19"
version="0"
/>
<event
channel="Microsoft-Windows-BTH-AudioClassDriver/Operational"
keywords="_BTHAudClassDrv_KEYWORD "
level="win:Informational"
message="$(string.Microsoft-Windows-BTH-AudioClassDriver.event.20.message)"
opcode="win:Info"
symbol="_MethodAllowStreaming"
task="MethodAllowBlockStreaming"
template="st_BthAudioClassDriver_SetErrorCode"
value="20"
version="0"
/>
<event
channel="Microsoft-Windows-BTH-AudioClassDriver/Operational"
keywords="_BTHAudClassDrv_KEYWORD "
level="win:Informational"
message="$(string.Microsoft-Windows-BTH-AudioClassDriver.event.21.message)"
opcode="win:Info"
symbol="_MethodBlockStreaming"
task="MethodAllowBlockStreaming"
template="st_BthAudioClassDriver_SetErrorCode"
value="21"
version="0"
/>


References
Learn about the terminology that Microsoft uses to describe software updates.
Properties

Article ID: 3029606 - Last Review: 07/14/2015 18:14:00 - Revision: 3.0

Windows 8.1, Windows 8.1 Enterprise, Windows 8.1 Pro

  • kbqfe kbfix kbexpertiseinter kbsurveynew kbbug atdownload KB3029606
Feedback