최신 대기 상태 플랫폼의 Bluetooth 전원 관리

Bluetooth 무선 디바이스를 사용하면 PC와 입력 디바이스, 오디오 디바이스 또는 기타 Bluetooth에 연결된 사용자 주변 장치 간에 단거리 RF 통신을 수행할 수 있습니다. 최신 대기 상태 PC에서 Bluetooth 라디오용 드라이버는 이 문서에 제시된 지침에 따라 이 디바이스의 전원 상태를 관리해야 합니다.

Bluetooth 라디오

Windows 시스템에서 Bluetooth 무선 디바이스의 전원 상태를 관리하는 방법은 라디오가 연결된 버스에 따라 달라집니다. 최신 대기 전원 모델을 지원하는 하드웨어 플랫폼에서 Windows는 UART 또는 USB(Universal Serial Bus)에 연결된 Bluetooth 라디오를 지원합니다. (이론적으로 Windows 8에 도입된 Bluetooth 전송 버스 드라이버 모델은 모든 기본 통신 버스를 지원합니다. 현재 Microsoft는 UART 또는 USB에 연결되거나 SoC(System on a Chip)에 통합된 Bluetooth 라디오에 대해서만 최신 대기 호환성을 확인합니다.

일반적인 Windows 드라이버 스택과 마찬가지로 Bluetooth 라디오 전원 정책은 단일 PPO(전원 정책 소유자)(구체적으로 BthPort(bthport.sys))에 의해 관리됩니다. BthPort는 해당하는 전송 관련 드라이버(UART 또는 USB)와 함께 작동하여 라디오를 원하는 전원 상태로 적절하게 구동합니다. USB의 경우 USB 호스트 컨트롤러를 통한 USB 선택적 일시 중단을 사용하여 이 작업이 수행됩니다. UART의 경우 공급업체에서 추가적으로 제공하는 전송 버스 드라이버는 시스템별 버스 연결을 통해 BthPort에서 Bluetooth 무선 디바이스로 전송되는 요청을 조정합니다. 하드웨어를 제어하기 위해 드라이버는 대역 내 버스 통신, PEP(전원 엔진 플러그 인)와의 조정 및/또는 GPIO 핀을 통한 대역 외 신호의 조합을 사용합니다.

Bluetooth 무선 디바이스는 일반적으로 여러 저전력 모드를 지원하며, 그 중에는 해당 디바이스만의 모드도 있습니다. Windows Bluetooth 드라이버 스택을 사용하려면 Bluetooth 라디오에서 다음과 같은 세 가지 디바이스 전원 상태를 지원해야 합니다.

  • 활성(D0)
  • 절전 모드(D2)
  • 꺼짐(D3)

Bluetooth 라디오의 디바이스 전원 관리는 모든 시스템 전원 상태에서 일관적인 방식으로 작동해야 합니다. 시스템이 최신 대기 모드로 전환되면 Bluetooth 라디오가 특수 전원 관리 모드로 전환되지 않습니다. 그 대신 Bluetooth 라디오는 BthPort에서 관리하는 유휴 시간 제한에 따라 절전 모드(D2) 상태를 오갑니다. Bluetooth로 연결된 HID 입력 디바이스에서 최신 대기 모드 해제를 지원하기 위해 라디오는 절전 모드(D2) 상태로 유지되고 절전 모드 해제 준비 상태가 됩니다. 페어링된 Bluetooth HID 디바이스만이 최신 대기 중에 시스템을 깨울 수 있습니다. RF 링크를 통해 연결된 디바이스가 없는 경우 Bluetooth 라디오는 절전 모드(D2) 상태에서 소비 전력이 1밀리와트 미만이어야 합니다. 소비 전력은 연결된 디바이스의 수, 해당 디바이스의 종류 및 활동 패턴에 따라 달라질 수 있습니다.

또한 Bluetooth 라디오는 라디오 관리 사용자 인터페이스를 통해 끌 수 있는 기능도 지원해야 합니다. 이 사용자 인터페이스 컨트롤은 Windows에 기본 제공됩니다. 이 사용자 인터페이스를 통해 Bluetooth 라디오를 끄면 라디오는 꺼짐(D3) 전원 상태로 전환되고, 이 상태에서는 소비 전력이 거의 0와트에 근접해야 합니다.

Windows 8 및 Windows 8 RT를 포함한 이전 버전의 Windows는 Bluetooth 디바이스 공급업체가 무선 제어 DLL을 제공해야 합니다. 그러나 Windows 8.1 및 Windows RT 8.1부터는 최신 대기 플랫폼의 모든 Bluetooth 라디오가 Bluetooth Core Specification Version 4.0을 지원해야 합니다. 따라서 공급업체는 더 이상 라디오 켜기/끄기 제어 기능을 구현하기 위한 소프트웨어 DLL을 제공할 필요가 없습니다. 이제 Windows가 이 기능을 처리하며 이러한 DLL이 있어도 무시됩니다.

전원 관리 모드

소프트웨어 관점에서 Bluetooth 라디오는 라디오가 연결된 버스에 관계없이 세 가지 전원 관리 모드를 지원합니다. Windows Bluetooth 드라이버는 세 가지 모드의 정의를 소유하며 이러한 모드로의 전환/해제를 관리합니다. 다음 표에는 세 가지 Bluetooth 라디오 전원 모드에 대해 설명되어 있습니다.

Mode Description 디바이스 전원 상태(Dx) 평균 전력 소모량 활성으로 대기 시간 종료 전환 메커니즘

활성

Bluetooth 라디오가 운영 체제의 애플리케이션을 대신하여 연결된 디바이스와 적극적으로 통신하고 있습니다.

D0

시나리오 및 관련 디바이스에 따라 다릅니다.

해당 없음

해당 없음

절전 모드(주로 사용량이 적은 듀티 사이클 때 유휴 상태)

Bluetooth 라디오가 저전력 상태입니다. 시스템이 원격 Bluetooth 디바이스와 페어링되었지만 둘 사이에 연결이 없습니다. 즉, 디바이스의 연결이 끊어졌습니다. Bluetooth 컨트롤러는 페어링된 디바이스에서 새 데이터가 도착하면 절전 모드 해제 신호를 생성할 수 있어야 합니다(라디오가 통합되지 않은 경우 SoC에 보내야 함).

또는 Bluetooth 라디오에 아무 것도 연결되지 않았습니다.

또는 Bluetooth 라디오의 활성 연결이 유휴 상태(전송/수신되는 데이터가 없음)이고 링크가 현재 스니프 모드에 있습니다.

D2

<= 4밀리와트

< 100밀리초

Windows Bluetooth 드라이버가 D2 전원 IRP를 사용하여 D2 전환을 시작합니다.

Windows Bluetooth 드라이버는 기본 전송 버스 드라이버에서 대기 중인 대기-절전 모드 해제 IRP를 시작합니다. Bluetooth 디바이스가 USB를 통해 연결된 경우 이 상태는 선택적 일시 중단과 동일합니다. (Bluetooth 선택적 일시 중단을 사용하려면 USB 디바이스 설명자에서 디바이스를 원격 절전 모드 해제 가능 및 자체 전원 공급으로 표시해야 합니다.)

꺼짐

Bluetooth 라디오가 완전히 꺼져 있거나(0와트) 라디오 상태가 유지되지 않는 저전력 상태입니다. Bluetooth 라디오는 이 상태에서 SoC에 절전 모드 해제 신호를 생성할 수 없습니다. 또한 Bluetooth 라디오는 무선 신호를 내보내거나 수신할 수 없습니다. 모든 RF 구성 요소가 꺼집니다.

D3

0와트

< 2초

Windows Bluetooth 드라이버가 D3 전원 IRP를 사용하여 D3 전환을 시작합니다.

전송 버스 드라이버 또는 시스템 ACPI 펌웨어가 전원을 제거하거나 GPIO 라인을 전환하여 Bluetooth 라디오 하드웨어를 꺼짐(D3) 상태로 전환할 수 있습니다.

또한 Bluetooth 라디오는 사용자의 요청에 따라 소프트웨어에서 무선 송신기를 끌 수 있는 관련 모드를 지원합니다. Bluetooth 디바이스에 라디오를 사용하도록 설정하면 이 디바이스는 활성(D0) 또는 절전 모드(D2) 상태입니다. 사용자가 Bluetooth 디바이스에 라디오를 사용하지 않도록 설정하면 Windows는 프로토콜 드라이버와 해당 자식을 긴급 제거한 다음, 라디오 디바이스 스택을 끄기(D3) 상태로 전환하여 Bluetooth 작업을 중지합니다.

소프트웨어 전원 관리 메커니즘

Bluetooth 무선 디바이스의 전원 관리는 BthPort가 PPO(전원 정책 소유자)로 시작하는 디바이스 Dx 상태 전환에 의해 구동됩니다. PPO는 디바이스가 활성(D0), 절전 모드(D2) 및 꺼짐(D3) 상태 간에 전환되는 시기를 결정합니다.

라디오에 연결된 디바이스가 없는 경우 Windows는 디바이스를 D2로 전환하고 사용자가 페어링 프로세스를 시작할 때까지 이 상태로 유지합니다. 라디오에 하나 이상의 디바이스가 연결된 경우 Windows Bluetooth 드라이버는 유휴 시간 초과를 사용하여 Bluetooth 라디오를 D0에서 D2로 전환할 시기를 결정합니다. 이 알고리즘은 운영 체제 및 애플리케이션의 Bluetooth 사용 패턴을 사용하여 라디오를 D2 상태로 전환할 시기를 결정합니다. 예를 들어 Bluetooth 라디오에서 아무 활동이 없으면 Bluetooth 키보드에서 마지막 키를 누르고 몇 초 후에 라디오가 D2로 전환됩니다.

Windows Bluetooth 드라이버는 다음 중 한 가지에 대한 응답으로 디바이스를 D0로 전환합니다.

  • 사용자가 페어링 프로세스를 시작합니다.
  • 애플리케이션이 Bluetooth 기능 사용을 요청합니다.
  • Bluetooth 라디오가 연결된 디바이스의 입력에 따라 절전 모드 해제 요청을 생성했습니다.

다른 디바이스와 달리 Bluetooth 라디오는 최신 대기 상태에서도 시스템이 정상적으로 작동하고 디스플레이가 켜져 있을 때와 동일한 전원 관리 패턴을 따릅니다. Bluetooth 라디오는 최신 대기 중에 언제든지 연결된 디바이스에서 입력을 받으면 SoC를 절전 모드에서 해제할 수 있어야 하기 때문입니다. 예를 들어 사용자가 Bluetooth 키보드를 Windows 컴퓨터에 연결한 경우 키보드의 아무 키를 누르면 컴퓨터가 최신 대기 상태에서 해제되고 디스플레이가 켜져야 합니다.

라디오와 연결된 디바이스가 없는 경우 절전 모드(D2) 상태에서 소비 전력이 1밀리와트 미만이 되도록 라디오를 구성해야 합니다.

Bluetooth 라디오가 꺼짐(D3) 상태이면 소비 전력이 거의 0와트에 근접해야 합니다.

드라이버 구현 참고 사항

Bluetooth 라디오가 UART를 통해 연결되거나 SoC 자체에 통합된 경우 Bluetooth 디바이스 공급업체는 전송 버스 드라이버를 구현하여 제공해야 합니다. 전송 버스 드라이버는 다음과 같은 역할을 담당합니다.

  • Windows Bluetooth 드라이버(Bthmini.sys)의 Bluetooth HCI 패킷 요청을 전송 버스를 통해 Bluetooth 라디오로 전송되는 명령으로 변환합니다.
  • Bluetooth 라디오 디바이스를 활성(D0), 절전 모드(D2) 및 꺼짐(D3) 디바이스 전원 상태에 매핑되는 다양한 전원 관리 모드로 전환합니다. 또한 이 드라이버는 전원 관리 이벤트를 처리하는 루틴을 구현합니다.
  • 디바이스에서 입력을 생성할 때 SoC를 절전 모드에서 해제하도록 Bluetooth 라디오를 구성하고, 전원 관리에 사용되는 선택적 GPIO 줄의 상태를 SoC에서 Bluetooth 라디오로 변경합니다.
  • Bluetooth 라디오와 동일한 버스를 공유하는 다른 디바이스(예: FM 송신기 또는 GPS 디바이스)를 열거하고 전원을 관리합니다. 다른 디바이스가 공유 버스에 물리적으로 연결되어 있지만 운영 체제에 노출되지 않는 경우 전송 버스 드라이버는 이러한 디바이스를 완전히 꺼야 합니다.

전송 버스 드라이버 구현에 대한 자세한 내용은 Bluetooth 전원 제어를 위한 전송 버스 드라이버 처리 지침을 참조하세요. 전송 버스 드라이버는 WDF(Windows Driver Framework)를 사용하여 작성해야 합니다. 샘플 드라이버는 Bluetooth 직렬 HCI 버스 드라이버에서 사용할 수 있습니다.

Bluetooth 라디오 전원 관리를 사용하려면 전송 버스 드라이버에서 다음 작업을 수행해야 합니다.

  • 런타임 유휴 전원 관리를 지원하고 활성(D0), 절전 모드(D2) 및 꺼짐(D3) 디바이스 전원 상태에 대한 지원을 표시합니다.
  • Windows Bluetooth 드라이버에 Bluetooth 무선 디바이스가 D2 상태 해제 이벤트 신호로 보낼 수 있다고 알립니다.
  • Bluetooth 무선 디바이스가 SoC에 절전 모드 해제 신호를 보낼 수 있도록/없도록 절전 모드 해제 준비 상태로 만드는/취소하는 기능을 지원합니다. 이 기능을 지원하려면 하나 이상의 GPIO 인터럽트를 처리하고 WDF 내에서 절전 모드 해제 메서드를 실행해야 할 수도 있습니다.
  • 디바이스가 활성(D0), 절전 모드(D2) 및 꺼짐(D3) 상태 간에 전환되면 선택적 GPIO 라인의 상태를 SoC에서 Bluetooth 무선 디바이스로 변경합니다.

Bluetooth 라디오가 SoC 자체에 통합된 경우 전송 버스 드라이버는 Windows 전원 관리 프레임워크에 등록하여 Bluetooth 라디오 전원 상태를 SoC 관련 PEP(전원 엔진 플러그 인)과 통신할 수 있습니다. 이 작업은 WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS 구조체의 IdleTimeoutType 멤버를 SystemManagedIdleTimeout 값으로 설정하여 수행됩니다.

Bluetooth 라디오가 USB를 통해 연결된 경우 기본 제공 Windows USB Bluetooth 드라이버 스택을 사용해야 합니다. 이 스택은 모든 전원 관리 작업을 처리합니다.

라디오 관리

Bluetooth 무선 송신기의 상태는 디바이스 전원 상태에 직접 연결됩니다. 무선 송신기는 라디오가 활성(D0) 또는 절전 모드(D2) 전원 상태일 때 켜져야 합니다. 라디오가 꺼짐(D3) 상태로 전환될 때 무선 송신기를 꺼야 합니다.

사용자가 Bluetooth 라디오를 끄면 Windows는 대기 중인 I/O 작업을 취소하고 프로토콜 드라이버와 해당 자식을 언로드하여 Bluetooth 작업을 종료합니다. 그 후 Windows Bluetooth 드라이버 스택이 컨트롤러에 대해 HCI_Reset 명령을 실행하여 라디오를 기본 상태로 초기화합니다. 기본 상태에서 컨트롤러는 라디오 신호를 전송하거나 수신할 수 없어야 합니다. 마지막으로, 컨트롤러가 꺼짐(D3) 상태로 전환됩니다.

컨트롤러가 꺼짐(D3) 상태로 전환되면 이에 대응하여 전송 버스 드라이버가 디바이스별 방법을 사용하여 Bluetooth 디바이스의 전원을 가장 낮은 전원 상태로 낮추는 합니다. 일반적인 구현 방법은 GPIO 라인의 상태를 SoC에서 Bluetooth 라디오로 변경하여 Bluetooth 모듈에 전원을 공급하지 않는 것입니다. 대체 구현 방법은 ACPI 펌웨어가 _PS0 및 _PS3 제어 메서드를 사용하여 Bluetooth 모듈에서 전원을 제거하도록 요구하는 것입니다.

사용자가 Bluetooth 라디오를 켜면 Windows는 라디오를 활성(D0) 상태로 전환하고 라디오를 다시 초기화한 다음, 자식 프로토콜 드라이버를 다시 열거합니다. 라디오가 활성(D0) 상태로 전환되면 Bluetooth 라디오에 대한 일반 D0 시퀀스의 일부로 필수 GPIO 라인을 전환해야 합니다. ACPI 펌웨어를 사용하여 라디오의 전원을 낮추었으면 _PS0 제어 메서드를 사용하여 전원을 복원해야 합니다.

이 일반 시퀀스의 일부로 전송 버스 드라이버는 Bluetooth 라디오의 ContainerId를 특정 GUID 값 {00000000-0000-000-ffff-ffffffffffffff}로 설정하여 디바이스를 내부적으로 연결된 디바이스로 표시해야 합니다. 이렇게 하면 Windows 라디오 사용자 인터페이스 요소는 전송 버스 드라이버를 통해 노출되는 Bluetooth 라디오가 무선 제어에 적합하지 않은 외부 연결 라디오가 아니라 컴퓨터 내부에 있다는 것을 감지할 수 있습니다.

지원되는 하드웨어 전원 구성

Bluetooth 라디오의 전원 관리 하드웨어 구성은 통신 버스에 따라 달라집니다. 일반적으로 모든 Bluetooth 라디오에는 다음과 같은 하드웨어 전원 관리 기능이 공통적으로 있어야 합니다.

  • 사용자 요청에 대응하여 라디오를 끄는 방법으로 끄기(D3) 상태 지원. 라디오를 끄면 Bluetooth 라디오가 거의 0와트에 가까운 저전력 상태로 전환됩니다.
  • 연결된 디바이스에 대한 연결은 유지되지만 활성 전송이 없는 저전력 절전 모드(D2) 상태로 전환하는 메커니즘
  • 연결된 디바이스에 SoC 데이터가 있고 SoC는 Bluetooth 무선 디바이스가 연결된 버스가 현재 활성 상태가 아닌 저전력 상태일 때 절전 모드 해제 인터럽트를 생성하는 메커니즘

Bluetooth 라디오를 지원하는 각 버스(USB, UART 및 SoC에 통합)는 이전 목록의 세 가지 기본 하드웨어 전원 관리 기능을 모두 지원합니다. 또한 각 Bluetooth 라디오에서 공급업체별 또는 디바이스별 전원 관리 기능을 제공할 수도 있지만 이 항목의 범위를 벗어납니다.

Bluetooth 라디오 공급업체는 하드웨어에서 자율적으로 작동하고 Windows 시스템에 추가적인 공급업체 제공 드라이버 소프트웨어가 필요 없는 방식으로 부가 가치 전원 관리 기능을 구현하는 것이 좋습니다. 또한 Bluetooth 라디오 공급업체는 장치 드라이버 코드 또는 드라이버 .inf 파일 대신 시스템 ACPI 펌웨어로 플랫폼별 차이를 추상화하는 방식으로 드라이버 및 전원 관리 소프트웨어를 구현하는 것이 좋습니다. 이 방법을 사용하면 드라이버 원본, 이진 파일 또는 서명된 설치 패키지의 업데이트를 요구하지 않고도 Bluetooth 디바이스에 대한 하나의 드라이버 패키지를 추가 플랫폼에서 다시 사용할 수 있습니다.

SoC 외부의 UART를 통해 연결된 Bluetooth 라디오

Bluetooth 라디오가 UART를 통해 연결되어 있고 물리적으로 SoC 외부에 있는 경우 Bluetooth 라디오 공급업체는 UART를 통해 동일한 통신 경로를 공유하는 Bluetooth 라디오 및 기타 디바이스 기능(예: FM 라디오)을 노출하는 전송 버스 드라이버를 제공해야 합니다. 또한 버스 드라이버는 Bluetooth 라디오의 전원 소비 및 절전 모드 해제 기능을 제어하는 GPIO 리소스를 관리합니다.

다른 디바이스 클래스와 달리, Bluetooth 전원 및 절전 모드 해제를 제어하는 GPIO 라인은 ACPI 제어 메서드에 의해 추상화되지 않고 전송 버스 드라이버를 통해 직접 관리됩니다. 이 제어 체계는 동일한 UART 포트를 공유하는 Bluetooth 라디오 및 기타 기능을 열거하는 다기능 버스 드라이버 디자인의 결과입니다. 이 디자인에서는 Windows ACPI 드라이버인 Acpi.sys가 Bluetooth 및 FM 라디오용 드라이버 스택에 로드되지 않으므로 디바이스 Dx 상태 전환에 응답하는 방법으로 ACPI 제어 메서드 실행을 사용할 수 없습니다.

Bluetooth 라디오가 SoC의 UART 포트에 연결된 경우 시스템 통합업체는 SoC의 GPIO 컨트롤러에 핀을 사용하여 라디오 전원을 제어해야 합니다. ACPI 펌웨어에서 이 핀은 전송 버스 드라이버 루트 디바이스를 나타내는 디바이스 개체에 GPIO I/O 리소스로 할당되어야 합니다. 라디오가 내부 전원 게이팅을 사용하여 디바이스 끄기를 지원하는 경우 GPIO 핀을 Bluetooth 라디오에 직접 연결할 수 있습니다.

Bluetooth 라디오에서 전원 게이팅을 지원하는 경우 Bluetooth 라디오의 전원을 모든 시스템 전원 레일에 연결할 수 있습니다.

라디오가 GPIO 핀으로 제어되는 내부 전원 게이팅을 지원하지 않는 경우 시스템 통합업체는 전환 가능한 전원 레일에 Bluetooth 라디오를 배치해야 합니다. 그러면 SoC의 GPIO 핀이 전원 전환 하드웨어에 연결됩니다. 이 디자인에서는 ACPI 제어 방법을 사용하여 참조 횟수를 추적하거나 동일한 전원 레일을 공유하는 여러 디바이스의 전원 상태를 집계할 수 없으므로 Bluetooth 라디오를 자체 전환 가능한 전원 레일에 분리해야 합니다.

시스템 통합업체는 SoC의 GPIO 컨트롤러에 추가 핀을 사용하여 Bluetooth 라디오에서 절전 모드 해제 인터럽트를 수신해야 합니다. 이 핀의 인터럽트는 가장 낮은 전원 상태에서 SoC의 절전 모드를 해제할 수 있어야 합니다. 일부 SoC 디자인에서는 GPIO 컨트롤러가 SoC의 전원 상태에 관계없이 항상 이 핀의 인터럽트를 감지할 수 있기 때문에 이러한 핀을 Always-On GPIO 핀이라고 합니다. Always-On 기능은 하드웨어에서 SoC의 특정 GPIO 핀 세트로 제한하거나 펌웨어에서 구성할 수 있습니다. 시스템 통합업체는 SoC 공급업체와 함께 이 디자인을 검토하여 Bluetooth 라디오의 절전 모드를 해제하면 SoC가 가장 깊은 유휴 전원 상태를 종료하도록 해야 합니다. (최신 대기 중에는 항상 시스템이 S0에 있습니다. 최신 대기 시스템은 S3을 지원하지 않습니다.)

전송 버스 드라이버가 열거한 모든 기능이 꺼지고 ACPI가 열거한 전송 버스 디바이스가 D3 상태로 전환되면 Always-On GPIO 핀이 꺼질 수 있습니다. 이 동작은 전송 버스 드라이버가 열거한 모든 디바이스 기능에 대한 라디오를 사용자가 껐을 때 발생합니다.

USB의 Bluetooth 라디오

Bluetooth 라디오가 USB 버스를 통해 SoC 또는 코어 실리콘에 연결되어 있는 경우 USB 버스가 아닌 다른 전원으로 라디오를 구동해야 합니다. USB 사양에서 이러한 라디오는 자체 전원 공급으로 설명되며, 이 기능은 Bluetooth 디바이스의 USB 설명자에 보고되어야 합니다.

마찬가지로, USB 디바이스 하드웨어는 USB 호스트 컨트롤러를 절전 모드에서 해제하기 위해 대역 내 USB 재시작 신호를 생성하는 Bluetooth 라디오의 기능인 원격 절전 모드 해제에 대한 지원을 제공해야 합니다. 원격 절전 모드 해제 기능도 Bluetooth 라디오의 USB 설명자에 보고되어야 합니다.

Bluetooth 라디오는 자체 전원 공급 및 원격 절전 모드 해제 기능을 모두 지원해야 합니다. 그래야만 절전 모드(D2) 상태로 전환하고 선택적 일시 중단을 사용할 수 있습니다.

Bluetooth 라디오가 절전 모드(D2) 상태이고 연결된 디바이스의 데이터를 호스트에 사용할 수 있는 경우 Bluetooth 라디오는 호스트를 절전 모드에서 해제하는 원격 절전 모드 해제 재시작 신호를 생성해야 합니다. 코어 실리콘에 GPIO 라인을 사용하는 대역 외 재시작 신호는 지원되지 않습니다. USB 연결 회로를 포함한 Bluetooth 라디오는 절전 모드(D2) 상태에서 소비 전력이 1밀리와트 미만이어야 합니다.

절전 모드 해제 문제

Bluetooth 라디오는 절전 모드(D2) 상태일 때 절전 모드 해제 인터럽트를 생성할 수 있어야 합니다. SoC가 가장 낮은 전원 상태에 있더라도 절전 모드 해제 인터럽트는 SoC를 켜야 합니다. 다음 표에는 두 Bluetooth 절전 모드 해제 신호 메커니즘이 요약되어 있습니다.

연결 버스 하드웨어 신호 경로 설명 및 메모

UART(공급업체에서 제공하는 운송 버스 드라이버 포함)

Bluetooth 라디오에서 SoC로의 GPIO

라디오는 SoC를 가장 낮은 전원 상태에서 해제할 수 있는 GPIO 핀에 연결되어야 합니다.

USB

선택적 일시 중단에서 대역 내 USB 재시작 신호

대역 외 GPIO 절전 모드 해제는 지원되지 않습니다.

테스트 및 유효성 검사

Bluetooth 디바이스 공급업체는 Bluetooth 라디오 디바이스의 전원 관리 작업을 테스트하고 유효성을 검사하는 것이 좋습니다.

다른 섹션에 설명된 대로 Xperf 도구를 사용하여 활성(D0), 절전 모드(D2) 및 꺼짐(D3) 상태 간의 전환을 쉽게 관찰할 수 있습니다.

Windows에 기본 제공되는 ETW 계측을 사용하여 Bluetooth 드라이버 활동을 모니터링할 수 있습니다. 드라이버 개발자는 ETW(Windows용 이벤트 추적) 계측을 사용하여 드라이버에서 중요한 전원 관리 상태 변경을 노출하고 Xperf 도구 또는 기본 제공되는 Windows 이벤트 뷰어를 사용하여 전원 관리 상태 변경을 관찰하는 것이 좋습니다.

Bluetooth 라디오가 USB를 통해 연결되는 경우 기본 제공되는 Powercfg.exe 유틸리티를 /energy 명령줄 옵션과 함께 사용하여 라디오가 절전 모드(D2) 상태로 전환되고 일시 중단되었는지 확인할 수 있습니다. Powercfg.exe 유틸리티를 사용하려면 다음을 수행합니다.

  • 관리자 권한으로 명령 프롬프트 창을 엽니다.
  • 드라이브의 루트 디렉터리(cd \)로 변경합니다.
  • powercfg.exe /energy 명령을 입력합니다.
  • 기본값인 60초 동안 기다립니다.
  • 다음 스크린샷과 같이 Powercfg.exe 유틸리티가 시스템의 오류 및 경고 조건 수를 출력합니다.
  • 이 도구는 명령 프롬프트 창에 요약 정보를 작성한 후 Energy-report.html 이라는 HTML 파일을 생성합니다. 이 파일을 열고 USB Bluetooth 디바이스에서 오류 또는 경고 조건을 찾습니다. 다음 예제 요약에서는 USB Bluetooth 디바이스가 유휴 상태일 때 절전 모드(D2) 상태로 전환되지 않았다고 보고합니다.

추가적인 타사 Bluetooth 프로필 드라이버 및 애플리케이션을 제공하는 Bluetooth 디바이스 공급업체는 소프트웨어가 긴급 제거를 지원하는지 확인하고 라디오 인프라가 올바른 방법으로 Bluetooth 라디오를 적시에 끌 수 있도록 해야 합니다. 프로필 또는 애플리케이션을 사용하는 동안 이러한 시나리오의 유효성을 검사해야 합니다. 예를 들어 오디오 드라이버의 경우 라디오가 꺼져 있는 동안 Bluetooth 오디오 스트리밍이 있어야 합니다. 그런 다음, 라디오를 다시 켜고 오디오 스트림을 다시 시작하여 여전히 작동하는지 확인합니다.

Bluetooth 전원 관리 검사 목록

시스템 통합업체, Bluetooth 라디오 공급업체 및 SoC 공급업체는 다음 검사 목록을 사용하여 시스템 전원 관리 디자인이 Windows 8 및 Windows 8.1 이상과 호환되는지 확인해야 합니다.

  • 시스템 디자인에서 Bluetooth 라디오의 통신 버스를 결정합니다. Bluetooth 라디오는 UART 또는 USB를 통해 연결됩니다.

  • Bluetooth 라디오는 연결된 디바이스가 없을 때 소비 전력이 1밀리와트 미만인 저전력 절전 모드를 지원해야 합니다.

    절전 모드에서 Bluetooth 라디오의 소비 전력은 현재 존재하는 연결된 디바이스 수에 따라 달라질 수 있지만, 일반적으로 언제나 5밀리와트를 초과하면 안 됩니다.

  • Bluetooth 라디오는 다음과 같은 기본적인 필수 전원 관리 기능을 지원해야 합니다.

    • 사용자가 라디오를 끌 수 있는 방법으로 꺼짐(D3) 상태 지원
    • 연결된 디바이스에 대한 연결은 유지되지만 활성 전송이 없는 저전력 절전 모드(D2) 상태로 전환하는 메커니즘
    • 연결된 디바이스가 데이터를 생성하고 SoC가 저전력 상태일 때 SoC를 절전 모드에서 해제하는 메커니즘
  • Bluetooth 라디오가 USB 버스 이외의 방법(UART 또는 SoC에 통합)으로 연결되는 경우 Bluetooth 라디오 공급업체는 운송 버스 드라이버를 개발해야 합니다. 전송 버스 드라이버는 다음을 수행해야 합니다.

    • Bluetooth 전원 제어를 위한 전송 버스 드라이버 처리 지침에 자세히 설명된 기능 및 요구 사항을 지원합니다.
    • Windows Bluetooth 드라이버(Bthmini.sys)의 Bluetooth 요청을 UART 버스 또는 자체 내부 SoC 버스를 통해 Bluetooth 라디오로 변환합니다.
    • Bluetooth 라디오 디바이스를 활성(D0), 절전 모드(D2) 및 꺼짐(D3) 상태에 매핑되는 다양한 전원 관리 모드로 전환합니다. 또한 드라이버는 디바이스 전원 관리(Dx) IRP를 처리하는 루틴을 구현해야 합니다.
    • 디바이스에서 입력을 생성할 때 SoC를 절전 모드에서 해제하도록 Bluetooth 라디오를 구성하고, 전원 관리를 위해 SoC를 Bluetooth 라디오에 연결하는 선택적 GPIO 라인의 상태를 변경합니다.
    • Bluetooth 라디오에서 공유할 수 있는 다른 디바이스(예: FM 송신기)를 열거합니다.
    • 드라이버 개발에 WDF(Windows Driver Framework)를 사용합니다.
    • Bluetooth 직렬 HCI 버스 드라이버를 기반으로 구현합니다.
  • Bluetooth 라디오가 USB를 통해 연결되는 경우 Bluetooth 라디오 공급업체는 다음을 수행해야 합니다.

    • 라디오에서 선택적 일시 중단을 지원합니다.
    • 라디오의 원격 절전 모드 해제 및 자체 전원 공급 기능을 USB 디바이스 설명자에 설정합니다.
    • 라디오(USB 구성 요소 포함)의 소비 전력이 1밀리와트 미만인지 확인합니다.
  • 연결 버스에 관계없이 Bluetooth 라디오는 내부적으로 연결된 라디오에 대해 다음을 수행해야 합니다.

    • 라디오 전원을 낮추기 위해 라디오로 전송되는 HCI_Reset 명령에 대응하여 모든 RF 구성 요소가 꺼지는지 확인합니다. 라디오가 라디오 신호를 전송하거나 수신할 수 없어야 합니다.
    • 꺼짐(D3) 상태로 설정되면 가장 낮은 전원 모드로 전환됩니다.
  • Bluetooth 라디오가 UART를 통해 연결되는 경우 시스템 통합업체는 SoC를 가장 낮은 전원 상태에서 해제할 수 있는 Bluetooth 라디오의 절전 모드 해제 신호를 SoC의 GPIO 핀에 연결해야 합니다.

    • SoC는 절전 모드 해제 신호를 Always-On으로 미리 구성된 제한적인 GPIO 핀 세트로 라우팅하도록 요구할 수 있습니다.
    • 또는 SoC는 부팅 중에 시스템 펌웨어의 Always-On 핀에 GPIO 핀을 구성하도록 지원할 수 있습니다.
  • 시스템 통합업체는 연결된 디바이스가 없을 때 Bluetooth 라디오가 절전 모드(D2) 상태로 전환되는지 테스트하고 확인해야 합니다.

  • 시스템 통합업체는 연결된 모든 디바이스에 활성 전송이 없을 때 Bluetooth 라디오가 절전 모드(D2) 상태로 전환되는지 테스트하고 확인해야 합니다.

  • 시스템 통합업체는 라디오가 절전 모드(D2) 상태일 때 Bluetooth 라디오가 SoC를 가장 낮은 전원 상태에서 해제할 수 있는지 테스트하고 확인해야 합니다.

  • 시스템 통합업체는 절전 모드(D2) 상태일 때 Bluetooth 라디오가 가짜 절전 모드 해제 신호를 생성하지 않는지 테스트하고 확인해야 합니다.

  • 시스템 통합업체는 프로필 드라이버 및 애플리케이션과 같은 타사 추가 기능 소프트웨어가 Bluetooth 무선 관리와 올바르게 연동하는지 테스트하고 확인해야 합니다. 타사 소프트웨어가 적극적으로 사용 중인 동안(예: 오디오 재생 또는 파일 전송) 라디오가 꺼졌다 켜져야 합니다.