0

I've built a Bluetooth LE HID device which is a combined keyboard, mouse, and consumer device. All OS's can connect to it fine...except Windows 8.1, on all hardware. It connects and pairs, but then appears to fail perhaps when parsing the HID descriptor (I'm guessing here). It then displays 'Driver Error' and disconnects from the device.

Only the keyboard appears in Printers and Devices with a warning. In properties it states there is a 'PnP error'.

I enabled Driver Verifier, so when I connect now I get a BSOD driver_verifier_iomanager_violation

Doing a analysis of the memory dump I get:

*******************************************************************************
*                                                                             *
*                        Bugcheck Analysis                                    *
*                                                                             *
*******************************************************************************

DRIVER_VERIFIER_IOMANAGER_VIOLATION (c9)
The IO manager has caught a misbehaving driver.
Arguments:
Arg1: 000000000000024c, A driver has returned STATUS_PENDING but did not mark the IRP pending via a
    call to IoMarkIrpPending.
Arg2: fffff8040090aa50, The address in the driver's code where the error was detected.
Arg3: ffffcf819e230bd0, IRP address.
Arg4: 0000000000000103, Status code.

Debugging Details:
------------------


BUGCHECK_STR:  0xc9_24c

DRIVER_VERIFIER_IO_VIOLATION_TYPE:  24c

FAULTING_IP: 
nt!ViGenericInternalDeviceControl+0
fffff804`0090aa50 4c8b05b117c8ff  mov     r8,qword ptr [nt!pXdvIRP_MJ_INTERNAL_DEVICE_CONTROL (fffff804`0058c208)]

FOLLOWUP_IP: 
BTHUSB!BthUsb_AsynchCallUsbd+5b
fffff801`0ffdd65f 8bd8            mov     ebx,eax

IRP_ADDRESS: ffffcf819e230bd0

DEFAULT_BUCKET_ID:  WIN8_DRIVER_FAULT

PROCESS_NAME:  System

CURRENT_IRQL:  2

ANALYSIS_VERSION: 6.3.9600.17237 (debuggers(dbg).140716-0327) amd64fre

LAST_CONTROL_TRANSFER:  from fffff804008fa6b0 to fffff804003c5aa0

STACK_TEXT:  
ffffd000`e24836a8 fffff804`008fa6b0 : 00000000`000000c9 00000000`0000024c fffff804`0090aa50 ffffcf81`9e230bd0 : nt!KeBugCheckEx
ffffd000`e24836b0 fffff804`008fd171 : fffff804`008ed470 fffff804`0090aa50 ffffcf81`9e230bd0 00000000`00000103 : nt!VerifierBugCheckIfAppropriate+0x3c
ffffd000`e24836f0 fffff804`008f3bd2 : ffffe001`165f3f40 ffffd000`e2483850 ffffe001`166b0b30 00000000`00000000 : nt!ViErrorFinishReport+0x10d
ffffd000`e2483750 fffff804`008f9bd5 : 00000000`00000000 fffff804`0090aec9 ffffe001`165f3f40 00000000`00020000 : nt!IovpCallDriver2+0x33e
ffffd000`e2483b20 fffff804`008ee928 : ffffcf81`9e230bd0 00000000`00000002 ffffcf81`9e230bd0 00000000`00000000 : nt!VfAfterCallDriver+0x289
ffffd000`e2483bb0 fffff804`0090aec9 : ffffcf81`9e230bd0 ffffe001`15303410 00000000`00000002 ffffe001`165f3f40 : nt!IovCallDriver+0x3e4
ffffd000`e2483c00 fffff804`008ee911 : ffffe001`15303560 ffffcf81`9e230bd0 fffff804`00395bd8 fffff804`0034fa7c : nt!ViFilterDispatchGeneric+0xd1
ffffd000`e2483c40 fffff801`0f806989 : ffffcf81`9e230bd0 fffff801`0ffdd65f fffff804`00395bd8 ffffe001`15dadde0 : nt!IovCallDriver+0x3cd
ffffd000`e2483c90 fffff801`0ffdd65f : ffffcf81`93704f00 ffffcf81`8374ab98 ffffcf81`844eaed0 ffffcf81`8374ab98 : VerifierExt!IofCallDriver_internal_wrapper+0x71
ffffd000`e2483cd0 fffff801`0ffdb9f8 : ffffcf81`93704f00 ffffcf81`844eaed0 ffffcf81`844eaed0 ffffcf81`8374aaa0 : BTHUSB!BthUsb_AsynchCallUsbd+0x5b
ffffd000`e2483d10 fffff801`0ffdbc48 : ffffcf81`93704f00 ffffd000`e2483dd0 ffffcf81`844eaed0 ffffcf81`844eaed0 : BTHUSB!BthUsb_SendTransferUrb+0xe8
ffffd000`e2483d50 fffff801`0ffdaf65 : ffffcf81`8f214fb8 ffffcf81`8374aaa0 ffffcf81`8f214fb8 ffffcf81`8374aaa0 : BTHUSB!BthUsb_WriteAclData+0x234
ffffd000`e2483e00 fffff801`12ca338b : ffffcf81`8f214fb8 ffffd000`e2483f40 ffffcf81`8d1e0ba0 ffffcf81`91184480 : BTHUSB!BthUsb_HciWrite+0xc1
ffffd000`e2483e40 fffff801`12ca3a3c : ffffcf81`91184480 ffffcf81`91184480 00000000`00000000 ffffcf81`8d1e0ba0 : bthport!HCI_SendNextAclWrite+0x943
ffffd000`e2483ff0 fffff801`12ca3cb6 : ffffcf81`9c702ed0 ffffcf81`8897af80 ffffcf81`91184480 00000000`0000001b : bthport!HCI_QueueOrStartAclWrBip+0x15c
ffffd000`e2484070 fffff801`12cf1b8d : ffffcf81`9322cc10 ffffcf81`8d1e0c30 ffffcf81`9c702ed0 ffffd000`e2484140 : bthport!HCI_WriteAclData+0x16e
ffffd000`e24840f0 fffff801`12ce2db5 : ffffcf81`9c702fbc 00000000`c0000225 ffffd000`e24841e9 00000000`00000000 : bthport!L2CapInt_SendFixedCIDData+0xf1
ffffd000`e2484140 fffff801`12ce2381 : ffffcf81`9322cc10 ffffcf81`9322cc10 fffff801`12d0e660 fffff801`12ce2278 : bthport!L2capCon_ProcessPostConnect+0x131
ffffd000`e2484250 fffff801`12cad868 : 00000000`00000000 ffffcf81`8d1e0c30 ffffcf81`9322cc28 ffffcf81`9322cc00 : bthport!L2CapCon_HciConnectCallback+0x109
ffffd000`e2484300 fffff801`12cb3c7d : 00000000`00000000 00000007`8033ec0c ffffcf81`8d1e0ba0 00000000`00000000 : bthport!HCI_CxnCallClientCallback+0xb0
ffffd000`e2484380 fffff801`12ce3069 : ffffcf81`00000000 00000007`8033ec0c ffffcf81`91184480 ffffcf81`9322cc10 : bthport!HCI_CreateConnection+0x2f5
ffffd000`e2484420 fffff801`12ce66f6 : 00000000`00000000 ffffcf81`97ea0d58 ffffcf81`9322cc10 fffff801`12d0e660 : bthport!L2capCon_CreateHciConnection+0xb5
ffffd000`e24844a0 fffff801`12ce6c54 : ffffcf81`96570a20 ffffcf81`9322cc10 ffffcf81`96570a20 ffffd000`e24845b8 : bthport!L2CapCon_ProcessNextSignalRequest+0x1a6
ffffd000`e2484560 fffff801`12c941ce : ffffe001`15311db0 ffffd000`e2484680 ffffcf81`97ea0d58 00000000`00000020 : bthport!L2CapInt_HandleSignalRequest+0x158
ffffd000`e2484600 fffff801`12c9299c : ffffe001`00000078 ffffe001`171cf301 ffffe001`15311c60 ffffe001`15311c60 : bthport!BthDispatchBrb+0xcda
ffffd000`e24846c0 fffff801`12c928bb : ffffcf81`96570a20 ffffe001`171cf310 00000000`00000000 00000000`00000103 : bthport!BthHandleInternalControl+0xdc
ffffd000`e2484720 fffff801`0f80d572 : ffffe001`15311c01 ffffe001`15311c60 ffffd000`e24847b0 fffff801`12c9279c : bthport!BthDispatchInternalControl+0x11f
ffffd000`e2484780 fffff804`008ee911 : ffffcf81`96570a20 00000000`00000002 ffffe001`16155f10 ffffcf81`8a348f00 : VerifierExt!xdv_IRP_MJ_INTERNAL_DEVICE_CONTROL_wrapper+0xfe
ffffd000`e24847e0 fffff804`0090aec9 : ffffcf81`96570a20 ffffe001`200fa4d0 00000000`00000002 ffffe001`15064510 : nt!IovCallDriver+0x3cd
ffffd000`e2484830 fffff804`008ee911 : ffffe001`200fa620 ffffcf81`96570a20 fffff804`00395bd8 ffffe001`15033310 : nt!ViFilterDispatchGeneric+0xd1
ffffd000`e2484870 fffff801`0f806989 : ffffcf81`96570a20 fffff801`0fabd056 fffff804`00395bd8 ffffe001`154f7f40 : nt!IovCallDriver+0x3cd
ffffd000`e24848c0 fffff801`0fabd056 : 00000000`00000005 ffffd000`e2484948 ffffcf81`97ea0d58 ffffcf81`97ea0d58 : VerifierExt!IofCallDriver_internal_wrapper+0x71
ffffd000`e2484900 fffff801`12dba9b0 : ffffcf81`97fb8fc0 ffffcf81`9013ae60 ffffcf81`8b3dae70 00000000`0041400b : Wdf01000!imp_WdfRequestSend+0x156
ffffd000`e2484960 fffff801`12dbb1f1 : ffffcf81`97ea0d58 0000307e`7952b0a8 0000307e`6fec5198 ffffe001`15033310 : BthLEEnum!BthLEEnumSendBrbAsync+0x118
ffffd000`e2484a00 fffff801`12dbbc92 : 00000000`00000000 ffffd000`e2484ab1 00000000`00000017 ffffcf81`9013af70 : BthLEEnum!BthLEEnumSendFixedCIDData+0xd5
ffffd000`e2484a40 fffff801`0fadbd00 : ffffcf81`7f678e00 00000000`00000000 ffffcf81`7f678e00 00000000`00000002 : BthLEEnum!BthLEEnumRootDeviceInternalIoControl+0x2c6
ffffd000`e2484b10 fffff801`0fab7d80 : fffff801`0fb2c300 ffffcf81`9013ae60 ffffcf81`7f678c20 0000307e`6fec5198 : Wdf01000!FxIoQueueIoInternalDeviceControl::Invoke+0x4c
ffffd000`e2484b50 fffff801`0fab7123 : 00000000`00000200 fffff801`0fb2c100 ffffcf81`94d1ef02 ffffd000`e2484d40 : Wdf01000!FxIoQueue::DispatchRequestToDriver+0x570
ffffd000`e2484c20 fffff801`0faefc60 : ffffcf81`7f678c20 00000000`00000000 00000000`00000000 00000000`00000001 : Wdf01000!FxIoQueue::DispatchEvents+0x363
ffffd000`e2484ce0 fffff801`0faef94e : ffffcf81`9544ac00 ffffcf81`9544ac20 ffffd000`e2484d70 ffffcf81`9013af90 : Wdf01000!FxIoQueue::QueueRequestFromForward+0x1ec
ffffd000`e2484d40 fffff801`0fb4486b : 00000000`00000000 ffffcf81`9013ae60 ffffcf81`9013ae60 fffff801`0facfbd0 : Wdf01000!FxIoQueue::ForwardRequestWorker+0xee
ffffd000`e2484db0 fffff801`0fb20976 : 0000307e`809873d8 ffffd000`e2484e40 ffffcf81`7f678c20 00000000`00000041 : Wdf01000!FxIoQueue::ForwardRequestToParent+0xeb
ffffd000`e2484de0 fffff801`12dc16fa : 00000000`00000000 0000307e`710e1518 ffffe001`15030000 ffffcf81`9706ef00 : Wdf01000!imp_WdfRequestForwardToParentDeviceIoQueue+0x1ae
ffffd000`e2484e70 fffff801`0fadbd00 : ffffcf81`9544ae00 0000307e`6fec5198 0000307e`6fec5198 00000000`00000017 : BthLEEnum!BthLEEnumDevicePdoIoInternalDeviceControl+0x5aa
ffffd000`e2484f10 fffff801`0fab7d80 : fffff801`0fb2c300 ffffcf81`9013ae60 ffffcf81`9544ac20 0000307e`6fec5198 : Wdf01000!FxIoQueueIoInternalDeviceControl::Invoke+0x4c
ffffd000`e2484f50 fffff801`0fab7123 : 00000000`00000200 fffff801`0fb2c100 ffffcf81`9750cf02 ffffd000`e2485150 : Wdf01000!FxIoQueue::DispatchRequestToDriver+0x570
ffffd000`e2485020 fffff801`0fac3279 : ffffcf81`9544ac20 ffffcf81`9013ae00 00000000`00000000 ffffd000`e24851c9 : Wdf01000!FxIoQueue::DispatchEvents+0x363
ffffd000`e24850e0 fffff801`0fabbd93 : ffffcf81`96570a00 ffffcf81`9013ae60 ffffcf81`96570a20 ffffcf81`96570a20 : Wdf01000!FxIoQueue::QueueRequest+0x8d
ffffd000`e2485150 fffff801`0f80d572 : 00000000`00020000 ffffd000`e2485200 ffffcf81`8ef1eae0 fffff801`0fabb240 : Wdf01000!FxDevice::DispatchWithLock+0xb51
ffffd000`e2485230 fffff804`008ee911 : ffffcf81`96570a20 00000000`00000002 ffffe001`169ae960 ffffe001`15413880 : VerifierExt!xdv_IRP_MJ_INTERNAL_DEVICE_CONTROL_wrapper+0xfe
ffffd000`e2485290 fffff804`0090aec9 : ffffcf81`96570a20 ffffe001`161af040 00000000`00000002 ffffe001`160d36e0 : nt!IovCallDriver+0x3cd
ffffd000`e24852e0 fffff804`008ee911 : ffffe001`161af190 ffffcf81`96570a20 fffff804`00395bd8 ffffd000`e2485401 : nt!ViFilterDispatchGeneric+0xd1
ffffd000`e2485320 fffff801`0f806989 : ffffcf81`96570a20 fffff801`0fabc711 fffff804`00395bd8 ffffe001`14c8a320 : nt!IovCallDriver+0x3cd
ffffd000`e2485370 fffff801`0fabc711 : ffffd000`e24855f0 ffffd000`e2485449 ffffcf81`901d6e70 ffffd000`e2485449 : VerifierExt!IofCallDriver_internal_wrapper+0x71
ffffd000`e24853b0 fffff801`0fada89c : 00000000`00000000 ffffd000`e2485500 00000000`00000001 00000000`00000000 : Wdf01000!FxIoTarget::SubmitSync+0x191
ffffd000`e24854b0 fffff801`0fb32f48 : fffff801`12dd0000 ffffcf81`901d6e70 ffffcf81`9706efe0 fffff804`008efece : Wdf01000!FxIoTargetSendIoctl+0x1e4
ffffd000`e2485760 fffff801`12ddd63e : 02680284`028402a0 ffffd000`e2485830 00000000`00000280 00000000`00000000 : Wdf01000!imp_WdfIoTargetSendInternalIoctlSynchronously+0x48
ffffd000`e24857c0 fffff801`12de327c : 00000000`00000000 00000000`00000000 ffffd000`e24858e8 fffff801`12dd4f10 : BthLEEnum!BthLEEnumDeviceFdoSendAttDataSync+0x11a
ffffd000`e2485850 fffff801`12de2fe0 : 00000000`00000000 ffffe001`14745310 00000000`00000007 00000000`0000ffff : BthLEEnum!BthLEAttSendPduOneWayInternal+0x160
ffffd000`e24858b0 fffff801`12de1e3e : ffffd000`e2485a90 ffffd000`e24859a9 00000000`0000ffff 00000000`00000000 : BthLEEnum!BthLEAttSendPduTwoWay+0xa8
ffffd000`e2485920 fffff801`12de5415 : 00000000`00000000 00000000`00000000 ffffd000`e2485b00 00000000`00000000 : BthLEEnum!BthLEAttReadByGroupType+0x146
ffffd000`e2485a00 fffff801`12de48b1 : ffffe001`14745310 ffffe001`00000000 00000000`00000000 ffffd000`e2485c08 : BthLEEnum!BthLEGattGetServicesInternal+0x231
ffffd000`e2485b70 fffff801`12ddc49d : 00000000`00000000 00000000`00000000 00000000`00000000 ffffe001`00000000 : BthLEEnum!BthLEGattThoroughRun+0x17d
ffffd000`e2485c00 fffff801`0facb242 : ffffcf81`7f61ea50 ffffd000`e2485db0 fffff801`0fb58ba0 00000000`00000000 : BthLEEnum!BthLEEnumDeviceFdoD0Entry+0x21d
ffffd000`e2485c50 fffff801`0fac7268 : 00000000`00000000 ffffd000`e2485db0 fffff801`0fb58c80 00000000`00000000 : Wdf01000!FxPkgPnp::PowerD0Starting+0x32
ffffd000`e2485cb0 fffff801`0fac765a : ffffcf81`7f61ea50 fffff801`0fb589c0 ffffcf81`7f61ea50 fffff801`0fb589c0 : Wdf01000!FxPkgPnp::PowerEnterNewState+0x138
ffffd000`e2485e00 fffff801`0fac73df : 00000000`00000000 ffffd000`e2485ef0 ffffcf81`7f61ec50 00000000`00000504 : Wdf01000!FxPkgPnp::PowerProcessEventInner+0xc6
ffffd000`e2485e80 fffff801`0facb062 : 00000000`00000000 ffffcf81`7f61ea50 00000000`00000501 ffffd000`e24860b0 : Wdf01000!FxPkgPnp::PowerProcessEvent+0xef
ffffd000`e2485f20 fffff801`0fac6c74 : ffffcf81`7f61ea50 ffffd000`e2485fc0 00000000`00000500 fffff804`0034f920 : Wdf01000!FxPkgPnp::NotPowerPolOwnerStarting+0xe
ffffd000`e2485f50 fffff801`0fac7069 : ffffcf81`7f61ea50 00000000`00000001 ffffcf81`7f61ea50 00000000`00000001 : Wdf01000!FxPkgPnp::NotPowerPolicyOwnerEnterNewState+0xf4
ffffd000`e2485fe0 fffff801`0fac6dd8 : 00000000`00000000 ffffd000`e24860d0 ffffcf81`7f61ed28 00000000`00000000 : Wdf01000!FxPkgPnp::PowerPolicyProcessEventInner+0x1df
ffffd000`e2486060 fffff801`0facd022 : 00000000`00000000 ffffe001`16877040 00000000`00000000 00000000`00000000 : Wdf01000!FxPkgPnp::PowerPolicyProcessEvent+0x10c
ffffd000`e2486100 fffff801`0fac5942 : 00000000`00000101 00000000`00000108 00000000`00000108 fffff804`0034f920 : Wdf01000!FxPkgPnp::PnpEventHardwareAvailable+0x9e
ffffd000`e2486140 fffff801`0fac5a5a : ffffcf81`7f61ea50 ffffcf81`7f61eb00 ffffcf81`7f61ea50 ffffcf81`7f61eb00 : Wdf01000!FxPkgPnp::PnpEnterNewState+0x102
ffffd000`e24861d0 fffff801`0fac5bc4 : 00000000`00000000 ffffd000`e24862c0 ffffcf81`7f61eb80 00000000`00000000 : Wdf01000!FxPkgPnp::PnpProcessEventInner+0xc2


STACK_COMMAND:  kb

SYMBOL_STACK_INDEX:  9

SYMBOL_NAME:  BTHUSB!BthUsb_AsynchCallUsbd+5b

FOLLOWUP_NAME:  MachineOwner

MODULE_NAME: BTHUSB

IMAGE_NAME:  BTHUSB.sys

DEBUG_FLR_IMAGE_TIMESTAMP:  545054f8

BUCKET_ID_FUNC_OFFSET:  5b

FAILURE_BUCKET_ID:  0xc9_24c_VRF_BTHUSB!BthUsb_AsynchCallUsbd

BUCKET_ID:  0xc9_24c_VRF_BTHUSB!BthUsb_AsynchCallUsbd

ANALYSIS_SOURCE:  KM

FAILURE_ID_HASH_STRING:  km:0xc9_24c_vrf_bthusb!bthusb_asynchcallusbd

FAILURE_ID_HASH:  {dedf9404-a46e-32ea-628e-5dcde5ffdf19}

Followup: MachineOwner

Where do I go from here?

  • So it works on Windows 8 but not Windows 8.1? If that's the case you will have to debug the device driver source code further to see where exactly its failing at. – Ramhound Apr 3 '15 at 11:44
  • I didn't make the driver...as far as I'm aware BTHUSB.sys is a MS driver. – Nick Apr 3 '15 at 13:00
  • So should I report the problem to MS? What's the best way to do that? I'm new to anything Windows related – Nick Apr 3 '15 at 13:09
  • No; Its likely the fault of the device itself at this point. – Ramhound Apr 3 '15 at 13:16
  • Ok, so how can I figure out what the problem is? – Nick Apr 3 '15 at 13:27

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.