Skip to content

Basic AACP framing info #14

@vulpes2

Description

@vulpes2

Apple has renamed the protocol to AACP, still don't know what it stands for, maybe Apple Audio Configuration Protocol? Either way, here's the basic framing info for the AACP messages.

An AACP packet has a u16 type field, a u16 service ID field, and a payload. The service ID is always 4 after the connection has been established, other service IDs have not been observed so far.

There are five packet types:

  • 0: Connect, payload: u16 major, u16 minor, u64 features
  • 1: Connection Response, payload: u16 status, u16 major, u16 minor, u64 features
  • 2: Disconnect, payload: u16 status
  • 3: Disconnection Response, no payload
  • 4: Message, payload: u16 opcode, payload

Payload for the AACP message packet varies depends on the opcode, they are either fixed size or will have a size field somewhere. For example, opcode 0x9 is a configuration message with a fixed payload of 5 bytes. The first byte is the configuration type, and the following 4 bytes are the values. Not all settings use all the 4 bytes, most will leave the unused bytes as 0x00.

More docs will follow in a few weeks, I just don't have time to write them yet. Handoff seems to be iCloud related and probably beyond my capabilities to figure out, most of my efforts so far have been centered around parsing all the AACP messages I can capture.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions