Compartir a través de


Restablecimiento y recuperación de radio Bluetooth

El restablecimiento y la recuperación de radio Bluetooth son una tecnología en Windows 10, versión 1803 y posteriores que presenta un sólido mecanismo de restablecimiento y recuperación para radios Bluetooth. Este mecanismo permite que las radios Bluetooth se recuperen de errores de hardware que provocan un mal funcionamiento, pérdida de conectividad o falta de respuesta a los comandos operativos. El objetivo es recuperar automáticamente la radio, lo que hace que la experiencia del usuario sea perfecta y reduzca la probabilidad de requerir un reinicio del sistema.

El restablecimiento y la recuperación de radio Bluetooth se pueden implementar con o sin dependencias de firmware. Los asociados de hardware pueden ampliar los mecanismos de restablecimiento basados en software disponibles en todos los equipos Windows con mecanismos de restablecimiento de nivel de dispositivo o firmware compatibles para aumentar la probabilidad de recuperación correcta.

Importante

Este tema es para desarrolladores. Si eres un cliente que experimenta problemas de Bluetooth, consulta Corregir problemas de Bluetooth en Windows 10.

Escenarios de restablecimiento y recuperación de Bluetooth

Hay tres amplias categorías de problemas en los que se inician el restablecimiento y la recuperación:

  • Errores de enumeración de bus: la radio produce un error en la enumeración o vuelve a enumerar por el bus subyacente (normalmente USB o UART), como se indica en un estado visible con errores (bang amarillo) en Administrador de dispositivos, lo que podría ser sintomático de errores de hardware subyacentes.

  • Errores de enumeración del controlador: la radio Bluetooth se encuentra en estado de error después de la enumeración correcta por el bus subyacente. Este estado de error suele producirse al compilar la pila de controladores para la radio. Por ejemplo, cuando se instala un filtro o controlador de función en el nodo del dispositivo de radio Bluetooth. Los errores pueden producirse si un controlador encuentra un error durante una o varias operaciones de inicio y, como resultado, notifica un error de PnP. Un ejemplo de esta operación podría ser una descarga de firmware en el dispositivo.

  • Errores de no enumeración: el dispositivo no está en estado de error, pero no funciona según lo determinado por la pila de controladores. Estos errores están fuera de la ruta de enumeración y podrían ser errores críticos para el transporte o errores específicos del dispositivo, como un error de firmware catastrófico. En estos casos se usan los siguientes mecanismos de restablecimiento y recuperación de Bluetooth.

Mecanismos de restablecimiento y recuperación

Aunque hay diferentes enfoques para recuperarse de un estado de error, Bluetooth usa un mecanismo de recuperación basado en ACPI estandarizado para intentar restaurar la radio a un estado de trabajo.

GUID_DEVICE_RESET_INTERFACE_STANDARD define dos niveles de restablecimiento. Los mecanismos de restablecimiento solo funcionan para dispositivos internos, por lo que no se admiten radios Bluetooth conectables externamente como dongles. Los mecanismos de restablecimiento requieren compatibilidad con Windows (normalmente por la pila del controlador de funciones) y el firmware subyacente (normalmente en el BIOS ACPI) para realizar realmente el restablecimiento. El mecanismo de restablecimiento real es específico del sistema.

Restablecer nivel Implementación
Restablecimiento de dispositivos de nivel de función (FLDR) La operación de restablecimiento está restringida a un dispositivo específico y no es visible para otros dispositivos. No hay ninguna nueva enumeración. Los controladores de función deben asumir que el hardware devuelto a su estado original después de la operación. El estado intermedio no se conserva.
Restablecimiento de dispositivos de nivel de plataforma (PLDR) La operación de restablecimiento afecta a un dispositivo específico y a todos los demás dispositivos conectados a él a través de la misma línea de restablecimiento o riel de alimentación. La operación de restablecimiento hace que el dispositivo se notifique como que falta en el bus y se vuelva a enumerar. Este tipo de restablecimiento tiene el mayor impacto en el sistema, ya que todos los dispositivos que comparten el recurso vuelven a su estado original.
  • Para admitir FLDR, debe haber un método __RST definido dentro del ámbito del dispositivo como se detalla en firmware ACPI: Restablecimiento en el nivel de función.

  • Para admitir PLDR , debe haber un método __RST or__PR3 definido en el ámbito del dispositivo como se detalla en firmware ACPI: Restablecimiento del nivel de plataforma. Si se usa un método PR3 , ACPI usa el mecanismo de ciclo de energía D3Cold para restablecer. El mecanismo de ciclo de energía D3Cold emula la eliminación de energía del dispositivo y, a continuación, la restauración. Si otros dispositivos comparten el mismo raíl de alimentación, también se restablecen. Si an__RST método se define y hace referencia a él mediante _PRR (PowerResource), se verán afectados todos los dispositivos que usan powerResource.

    • Puesto que PLDR solo funciona para dispositivos internos, debe declararse como tal en ACPI. En el caso de los dispositivos USB, para especificar un puerto interno (no visible para el usuario) y que se pueda conectar a un dispositivo integrado, establezca la CPU. Byte portIsConnectable para 0xFF y the__PLD. UserVisible bit a 0.

    • Si se usa el mecanismo _PR3 (D3Cold) para PLDR, asegúrese de que los escenarios como SystemWake y DeviceWake sigan funcionando. Nominalmente, esto significa que hay recursos de energía adecuados definidos para D2, e.g._PR2. La tabla siguiente es una guía útil:

Estado de energía Recurso ACPI Comportamiento
D2 _PR2 Cualquier potencia o reloj necesario para la funcionalidad reducida definida por la clase de este estado.
D3 Frecuente (obligatorio) _PR2 Los mismos recursos que el siguiente estado superior que se admite (D2, D1 o D0).
D3Cold _PR3 Solo la alimentación o los relojes necesarios para que el dispositivo aparezca en su bus y responda a un comando específico del bus.