Bluetooth AVRCP Playback Controls in Windows Mobile 6.5

Windows Mobile 6.5 utilized the Bluetooth Audio/Video Remote Control Profile (AVRCP) to translate wireless control signals from external accessories—such as headsets and car stereos—into functional media commands. By operating alongside the Advanced Audio Distribution Profile (A2DP), AVRCP acted as the dedicated signaling channel that mapped remote button presses to the operating system's internal media architecture, allowing users to control playback without interacting directly with the device's touch screen.

The Protocol Stack and AVCTP

AVRCP functionality in Windows Mobile 6.5 relied on the Microsoft Bluetooth stack, specifically using the Audio/Video Control Transport Protocol (AVCTP) as its transport layer. In this architecture, the Windows Mobile device operated primarily in the "Target" (TG) role, while the connected accessory (such as a Bluetooth headset) operated as the "Controller" (CT).

When a user pressed a button on an accessory, the controller sent an AVCTP data frame over a dedicated L2CAP (Logical Link Control and Adaptation Protocol) channel. This frame contained standard Audio/Video Command Response (AV/C) instructions defined by the Bluetooth Special Interest Group (SIG).

Command Translation to System Virtual Keys

Once the Bluetooth radio received an AV/C control frame, the Windows Mobile AVRCP driver (avrcp.dll) parsed the payload. Rather than sending commands directly to a specific application, the driver converted the incoming AV/C pass-through commands into native Windows CE input events.

Specific AV/C operation codes were translated into standard Windows CE virtual key codes:

  • Play: VK_APP_MEDIA_PLAY or VK_MEDIA_PLAY_PAUSE
  • Pause / Stop: VK_APP_MEDIA_PAUSE / VK_APP_MEDIA_STOP
  • Forward (Track Skip): VK_APP_MEDIA_NEXTTRACK
  • Backward (Previous Track): VK_APP_MEDIA_PREVTRACK

These events were pushed to the system's message queue, either as hardware keyboard events via keybd_event or as WM_APPCOMMAND messages broadcast across the system shell.

Media Player Handling and Execution

Applications designed for Windows Mobile 6.5, including Windows Media Player Mobile and third-party media players, monitored the system queue for these specific virtual keys or registered global shell hooks to intercept them. When the active media player detected a matching command, its internal playback engine executed the requested state change—advancing the track, pausing playback, or adjusting internal software volume.

Because Windows Mobile 6.5 implemented an earlier specification (predominantly AVRCP 1.0, with limited 1.3 pass-through capabilities), communication was largely unidirectional. The profile reliably handled basic transport control (Play, Pause, Stop, Skip), but it lacked native support for advanced features introduced in later AVRCP versions, such as passing track metadata (artist, album, song title) or browsing media folders directly from the external controller.