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_PLAYorVK_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.