VBOX Sport Serial (RS232) Protocol

Updated on Mar 4, 2026

$VBSPT$_nnnniiii_stttaaaaoooovvhheeezzxxyybbmmmmffffddcc

The $VBSPT$ and commas are in ASCII, the rest is in binary

The four bytes of the nnnn field indicate the presence of standard channels in the data stream.

The four bytes of the iiii field indicate the presence of extended channels in the data stream.

  1. If only ‘sats’ and ‘speed’ are present the corresponding bit masks 0x00000001 and 0x00000010 would equate to the nnnn field equaling 0x00000011.
  2. If ‘sats’, ‘time’, ‘latitude’, ‘longitude’, ‘speed’, ‘heading’, ‘height’, ‘vertical velocity’, ‘lat.acc.’ and ‘long.acc.’ are present then the nnnn field would equal 0x000003FF.
  1. If only ‘battery time to empty’ is present the iiii field would equal 0x00000001.
  2. If ‘battery time to empty’, ‘media capacity’, ‘media free space’ and ‘HDOP’ are all present, the iiii field would equal 0x00000071.

Note: Some bit flags are not used, while others are not available in production units.

At the time of writing the default channels are:

  • Standard channels 0x000003FF
    Satellites, time, latitude, longitude, speed, heading, height, vertical speed, longitudinal acceleration and lateral acceleration.
     
  • Extended channels 0x00000071
    Battery time to empty, media capacity, media free space, HDOP.

At the time of writing the default channels are:

  • Standard channels 0x000000FF
    Satellites, time, latitude, longitude, speed, heading, height, vertical speed.
     
  • Extended channels 0x00000000
    None.

Note that for clarity, the fields are colour coded: 

  • The meta-data fields are Green.
  • The standard channel fields are Blue.
  • The extended channel fields are Purple.
  • Any unsupported channels are uncoloured.
Code in default message formatBytesDescriptionBit mask
$VBSPT$7Header
$VBSPT$
,1Comma
nnnn4Standard Channel Flags
0x000003FF
iiii4Extended Channel Flags
0x00000071
,1Comma
s1SatellitesBits 0-6 are number of satellites usedBit 7 is set if the VBOX SPORT is using DGPS0x00000001
ttt3Time
Number of 10 ms ticks since midnight UTC
0x00000002
aaaa4Latitude(minutes * 100_000)Positive = North, Negative = South0x00000004
oooo4Longitude(minutes * 100_000)Positive = West, Negative = East0x00000008
vv2Speed
Velocity in knots * 100
0x00000010
hh2Heading
Degrees from true north * 100
0x00000020
eee3HeightAltitude in metres WGS84 * 100True signed 24 bit number0x00000040
zz2Vertical Speed
Vertical speed in m/s
0x00000080
xx2Long acc (GPS)
Longitudinal acceleration in g * 100
0x00000100
yy2Lat acc (GPS)
Lateral acceleration in g * 100
0x00000200
4Brake distance0x00000400
4Distance
In m * 128000
0x00000800
4Internal analogue 10x00001000
4Internal analogue 20x00002000
4Internal analogue 30x00004000
4Internal analogue 40x00008000
1Glonass sats0x00010000
1GPS sats0x00020000
2Yaw 0 value0x00040000
2Yaw 0 LatAcc0x00080000
2Yaw 0 Status0x00100000
2Yaw 1 value0x00200000
2Yaw 1 LatAcc0x00400000
2Yaw 1 Status0x00800000
4Velocity quality0x01000000
4Temperature
In degrees C * 100
0x02000000
2Buffer size0x04000000
3Media Free Space
(0xEF7FF – ((percent_free / 100) * 0xEF7FF))
0x08000000
4Event time 10x10000000
2Event time 20x20000000
2Internal voltage0x40000000
2Battery voltage
In mV
0x80000000
bb2Battery time to empty
In minutes. TTE field from gas gauge. A value of 0xFFFF is shown if the battery is not discharging.
0x00000001
2Battery time to full
In minutes. TTF field from gas gauge. A value of 0xFFFF is shown if the battery is not charging
0x00000002
2Battery charge when full
In mAh. FCC field from gas gauge
0x00000004
2Battery current charge
As a percentage of charge when full. RM field from gas gauge
0x00000008
mmmm4Media capacity
In kb
0x00000010
ffff4Media free space
In kb
0x00000020
dd2HDOP
Value * 100
0x00000040
cc2Checksum
CRC of message, See Note 1*

*Note 1

CRC Calculation example:

s[n] is a string containing the message

Polynomial:= 4129 (0x1021)

CRC:=0;

for Loop:=1 to Length(s) do

begin

Temp:=s[Loop];

CRC:= CRC xor (integer(Temp) * 256);

CRC:= CRC mod 65536;

for i:=7 downto 0 do

begin

if ( (CRC and 32768)=32768) then

begin

CRC:= CRC *2 ;

CRC:= CRC xor Polynomial;

end

else

begin

CRC:= CRC *2 ;

end;

CRC:=CRC mod 65536;

end;

end;

result:=CRC;

"I am only receiving a message containing '$VBSPT' from the VBOX Sport"

Please interpret the data as binary to resolve this issue. “$VBSPT” is a header and is in ASCII whilst the rest of the data is binary. Please see the section entitled: ‘Default message format’ at the top of this document for further information.