M Series Receiver Communication
Overview
This development documentation outlines the use of the Keiser Triple Redundant Receiver (Receiver) which is a USB based device capable of receiving broadcast data from hundreds of M Series equipment pieces. This device is primarily intended for use with computers and in scenarios where more than 30 pieces of equipment are being used simultaneously.
For an overview of the M Series Bluetooth Smart communication protocol, please review the M Series Direct documentation.
Device Overview
The Receiver is a hardware device specifically designed to facilitate communication with large numbers of M Series equipment pieces. The device utilizes three separate antennae, each tuned to one of the three broadcast frequencies for Bluetooth Smart advertisements. This ensures that if a broadcast is lost on one frequency, it still has an opportunity of being received on one of the remaining two frequencies. The received broadcasts are then combined into a single reception record and pushed onto a queue for transmission through the USB interface.
Basic Operation
The Receiver is powered through the USB port and requires no configuration to operate. Upon being plugged in to a computer, the Receiver will automatically power on and begin the enumeration process with the host computer. Once enumerated, the receiver will begin sending data and will ignore all future commands and requests.
Operation Modes
The Receiver has two modes of operation depending on if broadcasts are being received or not. When no broadcasts are detected, the receiver will be in Standby mode and will be transmit device status values and debug information. Once a broadcast is received, the receiver will switch into Active mode and will begin sending broadcast data. The receiver will stay in Active mode until all broadcasts have ceased and the transmission queue is empty, at which point it will revert to Standby mode.
Data Transmission
The Receiver data transmitted over the USB interface will be a continuous stream of ASCII encoded data which will either be accessed as a virtual COM device stream or through USB Endpoint BulkTransfer polling (depending on platform requirements). Each transmission packet is appended with control character signaling the separation of packets. Segments within the packet are separated with a blank space character.
Standby Mode Transmissions
Standby mode transmissions are identified with a leading segment value between 300
and 304
. These transmissions include a status check from each of the four processors on the Receiver's PCB. These values have little use outside of debugging and should be used only to determining device operation mode and to check device connectivity.
The one value of note is the segment following the 300
segment which is the master controller version number (ex: v1.02
). This value will always be increased by a whole major version (ex: v1.02 -> v2.00
) with the introduction of breaking features. As such, this value should be observed at least once during the initialization process to ensure that the correct parser is in use.
Active Mode Transmissions
Active mode transmissions are identified with a leading segment value between 0
and 200
. Each transmission packet is a full M Series equipment broadcast record.
Broadcast Packet Data Structure
Each broadcast packet is a merger of the broadcasts received across all three antennae and provides signaling for common issues such as duplicate Equipment IDs and weak signal reception.
Broadcast Packet
4 54 55 59 F f47e5bf9d16b 6.31 0 1019 1599 1312 77 1:06 14 12 Mi
For ease of referencing segment in this document we will separate each segment by the blank space character into a segment array starting at index 0.
Index | Attribute | Value |
---|---|---|
0 | Equipment ID | 4 |
1 | RSSI Channel 37 | 54 |
2 | RSSI Channel 38 | 55 |
3 | RSSI Channel 39 | 59 |
4 | Duplication Flag | F |
5 | UUID | f47e5bf9d16b |
6 | Equipment Version | 6.31 |
7 | Data Type | 0 |
8 | Cadence | 1019 |
9 | Heart Rate | 1599 |
10 | Power | 1312 |
11 | Caloric Burn | 77 |
12 | Duration | 1:06 |
13 | Gear | 14 |
14 | Distance | 12 |
15 | Units | Mi |
Data Attributes
Equipment ID
The equipment ID contains the ordinal integer assigned to the equipment. This integer is only unique within the collision domain of the equipment (typically a room or facility). This integer will always be between 0
and 200
and is the primary method of identifying the equipment.
Best Practice
Ignore data from equipment transmitting as equipment ID 0
. This is the default equipment ID, so ignoring these values prevents issues in facilities which have not assigned ID's to all equipment within a collision domain and provides a uniform method for opting-out instructors.
RSSI Channels
The RSSI (received signal strength indicator) is in indication of the strength of the signal received for each of the three channels. The RSSI value is a negative number represented as an absolute number. A value closer to 0
is an indication of a stronger signal. A value of 0
, however, indicates that no signal was received on that channel.
Duplication Flag
The duplication character flag indications whether an equipment ID collision has occurred, meaning that two pieces of equipment are using the same equipment ID. A value of F
means no collisions have occurred. A value of T
indicates another piece of equipment is using the same equipment ID.
UUID
The UUID string is a value which is universally unique among all Keiser equipment. This value will not change unless the equipment's console hardware is replaced.
Equipment Version
The equipment version string is a Semantic Versioning value with major and minor version segments. This value is useful in determining the machines capabilities for parsing. (See Revision History)
Data Type
The data type integer contains information regarding the interval and whether data transmitted is real time (real time mode) or review values (review mode).
A data type value of 0
, or 128
to 227
indicates that the data being received is real time. A data type value 255
, or 1
to 99
indicates the data being received are review values.
The data type values 0
and 255
correspond to the main interval values (both real time and review accordingly). The data type values 1
to 99
correspond to the review values for intervals 1
to 99
. The data type values 128
to 227
correspond to the real time values for 1
to 99
offset by 127
.
Data Type | Interval | Mode |
---|---|---|
0 | Main | Real Time |
1-99 | 1-99 | Review |
128-227 | 1-99 | Real Time |
255 | Main | Review |
Cadence
The cadence value corresponds to the equipment's cadence in rotations per minute with decimal precision transmitted as one order of magnitude larger (x10
). The example segment value of 1019
converts to a cadence value of 101.9
. In review mode this value will correspond to the average cadence for that interval.
Heart Rate
The heart rate value contains the heart rate detected by the equipment's 5kHz receiver when the user is wearing a compatible heart rate monitoring device. The value corresponds to the measured heart rate in beats per minute with decimal precision transmitted as one order of magnitude larger (x10
). If no heart rate monitor is detected, a 0
value will be transmitted. The example segment value of 1599
would be converted to a heart rate value of 159.9
. In review mode this value will correspond to the average heart rate for that interval.
Power
The power value corresponds to the equipment's power value in watts with decimal precision transmitted as one order of magnitude larger (x10
). The example segment value of 1312
would be converted to a power value of 131.2
. In review mode this value will correspond to the average power for that interval.
Caloric Burn
The caloric burn value corresponds to the approximated caloric burn value determined using the measured energy output of the user assuming an average caloric burn efficiency plus an average basil metabolic rate. This method is independent of age or weight. This value is an accumulated value for the current interval and is the same for real time and review modes.
Duration
The duration value is a string representing the duration of the current interval as two segments separated by a colon (:
). The first segment represents the total number of minutes and the second segment represents the number of seconds offset from the previous minute. The example segment value of 1:06
converts to a duration value of 1 Minute, 6 Seconds
. This value is an accumulated value for the current interval and is the same for real time and review modes.
Gear
The gear value is an integer corresponding to the current gear as displayed on the equipment console, ranging from 1
to 24
. This value will continue transmitting 24
during braking while the equipment console will show 88
. This value is non-representative during the review mode and should be ignored. Equipment prior to version 6.21
will not transmit a gear value so this value will be 0
and should be ignored. (See Revision History)
Distance
The distance value corresponds to the calculated distance for the current interval in units dependent upon the Units segment with decimal precision transmitted as one order of magnitude larger (x10
). The example segment value of 14
coverts to a distance value of 1.4
. This value is an accumulated value for the current interval and is the same for real time and review mode.
Units
The units value dictates the distance value units as either Miles (Mi
) or Kilometers (Km
). This value is set on the equipment during the initial setup stage and will not change during a session.
Platforms
Windows
On Windows 8 and newer PCs the receiver will be identified as a virtual COM device and the appropriate drivers will be installed and configured without user intervention. The device is typically ready for use within a few minutes of being plugged into a computer.
To test that the device is connected and configured correctly, use the type
command on the corresponding virtual COM port.
type com3: >> data.log
Device will automatically enumerate and attach to the kernel as a serial device, available only via COM port access. For WebUSB or similar APIs which do not support serial interfaces, the USB device will not be available and interfacing will require the replacement of the CDC drivers with WinUSB or libusb drivers using a tool like Zadig or via a driver override through a signed INF file.
Mac & Linux
On Mac and Linux the device will automatically enumerate but will most likely not have a virtual COM driver associated. For these platforms it is highly recommended to use the libusb drivers as they come pre-installed and will work just as effectively as virtual COM drivers.
Revision History
Versions | Changes |
---|---|
6.00 - 6.20 | - |
6.21 - 6.22 | Addition of Gear attribute to broadcast. |
6.23 - 6.29 | Reduced broadcast interval from 2000 ms to 1937.5 ms . |
6.30 - 6.31 | Reduced broadcast interval from 1937.5 ms to 354.375 ms . |
6.32+ | Reduced broadcast interval from 354.375 ms to 318.75 ms . |
Code Examples
Name | Description |
---|---|
TypeScript M Series Receiver Parser | M Series Receiver parser written in TypeScript. |
TypeScript M Series Receiver Node Serial Port Driver | M Series Receiver Node Serial Port driver written in TypeScript. |
TypeScript M Series Receiver Node USB Driver | M Series Receiver Node USB driver written in TypeScript. |
TypeScript M Series Receiver Web USB Driver | M Series Receiver Web USB driver written in TypeScript. |
WinUSB Override INF File | Override file for using WinUSB drivers in-place of Usbser drivers for M Series Receiver. |
Development Tools
Name | Description |
---|---|
M Series Development Board | Development kit that perfectly replicates M Series electronics without full equipment. |
M Series Documentation
Name | Description |
---|---|
M3i Bike ID Settings PDF | Describes procedure for setting equipment distance to either miles or kilometers, and changing the equipment identification number. |
M3i Bike ID Settings Video | Video tutorials instructing how to set the equipment distance units and equipment identification number. |
All Equipment Manuals | All the manuals, parts diagrams, and tutorials for Keiser equipment. |
Agreements and Guidelines
Using any of the APIs outlined in these documents make you subject to the following agreements. Please read all documents in their entirety as they govern your use of the APIs.