Muse communicates over Bluetooth 2.1+EDR and adds it's own structured data on top of it. This is called the Muse Communication Protocol or MCP. For the purposes of this documentation, we use the term "client" to refer to the device communicating with the Muse. You can think of communication between a client and a Muse as a serial connection. In programming language terms you can think of two binary data streams: one is to Muse (write), the other is from Muse (read). Protocol VersionCurrent protocol version is 2, and this documentation only covers version 2. Protocol version 2 is supported on all firmware 6.6.2 and up(all shipped hardware has firmware 7.0.11 or higher).To allow for incompatible changes in the communication protocol between Muse and client, the protocol is versioned. The protocol version is negotiated with the version handshake on establishing the communication. See the 'v' command for details in "Serial Commands". To allow for maximum freedom in improving the protocol only the 'h' and the 'v' command are guaranteed to be stable. This allows a communication partner to always stop the communication and attempt to negotiate a protocol version. Between protocol versions, anything can be changed including the serial commands(including their outputs) and the data streaming protocol. An up-to-date firmware will always support the latest protocol version and most likely at least one older protocol version, to allow for backwards compatibility and migration time. In general the protocol is very stable there are no plans for any big changes. If a change is needed, we will usually incorporate multiple unrelated changes to reduce the number of different protocol versions and have a longer lifespan of a protocol version. Operation modesThere are two main modes of operation:
Moving between the two operation modes is done by issuing start and halt data serial commands. Muse powers-on in configure mode. The general flow in an app is:
|