NAV undefined



Power on the device and mount the device somewhere safe.

FlySys varios are very sensitive, so make sure you mount the device on a place where it will move along with the pilot.


  1. Turn off your device.
  2. Turn on your device and hold power button for 5 seconds, you will hear two short beeps indicating calibration mode.
  3. Calibration process:
    • put the device on flat surface and wait for short beep,
    • repeat that for all six axes of the device.
  4. Turn off and on your device to properly save calibration measurement.


Upgrading the device will bring you new features and most importantly bug fixes.
Select bellow proper FlySys Firmware Updater for your OS to upgrade the device.

FlySys Firmware Updater

Platform x64 x86 Link
Linux true - Download
Windows - true Download
Windows true - Download



Purpose of bluetooth communication in this device is to serve the measured data from internal sensors and serves these measurements to connected device such as smart phone.
Second purpose of bluetooth connection is to configure the device's parameters to change the device's behavior.


BluetoothDevice device = mBluetoothAdapter.getRemoteDevice("00:1E:C0:26:C8:97");
device.connectGatt(getApplicationContext(), true, mGattCallback);

// Implements callback methods for GATT events that the app cares about.  For example,
// connection change and services discovered.
private final BluetoothGattCallback mGattCallback = new BluetoothGattCallback() {

    public void onServicesDiscovered(BluetoothGatt gatt, int status) {

        if (status != BluetoothGatt.GATT_SUCCESS) {

        for(BluetoothGattService gattService : gatt.getServices()){

            // Skip if not MLDP Service
            if(!gattService.getUuid().toString().equals(UUID_MLDP_PRIVATE_SERVICE.toString())){ continue; }

            for(BluetoothGattCharacteristic gattCharacteristic : gattCharacteristicService.getCharacteristics()){

                //Get the properties of the characteristic
                final int characteristicProperties = gattCharacteristic.getProperties();

                //See if the characteristic has the Notify property
                if ((characteristicProperties & (BluetoothGattCharacteristic.PROPERTY_NOTIFY)) > 0) {
                    //If so then enable notification in the BluetoothGatt
                    gattCharacteristic.setCharacteristicNotification(characteristic, true);

                //See if the characteristic has the Indicate property
                if ((characteristicProperties & (BluetoothGattCharacteristic.PROPERTY_INDICATE)) > 0) {
                    //If so then enable notification (and indication) in the BluetoothGatt
                    BluetoothGattDescriptor descriptor = gattCharacteristic.getDescriptor(UUID_CHARACTERISTIC_NOTIFICATION_CONFIG);

                //See if the characteristic has the Write (acknowledged) property
                if ((characteristicProperties & (BluetoothGattCharacteristic.PROPERTY_WRITE)) > 0) {
                    //If so then set the write type (write with acknowledge) in the BluetoothGatt

                //See if the characteristic has the Write (unacknowledged) property
                if ((characteristicProperties & (BluetoothGattCharacteristic.PROPERTY_WRITE_NO_RESPONSE)) > 0) {
                    //If so then set the write type (write with no acknowledge) in the BluetoothGatt




    public void onCharacteristicRead(BluetoothGatt gatt, BluetoothGattCharacteristic characteristic, int status) {

        if (status != BluetoothGatt.GATT_SUCCESS) { return; }
        // ...Do something with data


    public void onCharacteristicChanged(BluetoothGatt gatt, BluetoothGattCharacteristic characteristic) {
        // ...Do something with data

Device is using Microchip's BLE RN4020.
For detailed example showing how to connect set the following example RN4020 MLDP

In order to connect to the device simply turn on the device and use mobile application to establish the connection.

Services & Characteristics

Name properties UUID Description
Service service 00035b03-58e6-07dd-021a-08123a000300 Service containing characteristics
Data stream notify, write 00035b03-58e6-07dd-021a-08123a000301 Data received from device is streamed to this characteristic
Data control read, write 00035b03-58e6-07dd-021a-08123a0003ff Data sent to device is streamed to this characteristic
Config descriptor 00035b03-58e6-07dd-021a-00805f9b34fb Descriptor needed to enable notifications

API 1.0 - Beta


Example for data output


Once device is connected, measured data starts streaming automatically.

$FLYSYS;<API verison>;DATA;<pressure>;<temperature>;<velocity>;<battery>


$FLYSYS;<API verison>;<operation>;<values>;...

Operation values default Description
RST - - Reset to default setttings
VOL volume 100 0 - off, 100 - on
RATE rate 200 Data update rate in milliseconds
DUMP - - Dump all settings
BEEPNUM beeps 10 Number of beep stages from 5 - 20
BEEP stage, velocity, frequency, duration, dutycycle - Setting for each beep stage
BEEPCLIMB on_value, off_value 0.3, 0.1
BEEPSINK on_value, off_value 0.5, 0.4
BEEPSET - - Sets the configuration sent by operation BEEPNUM, BEEP
DATASTREAM value 1 0 - stop streaming, 1 - stream

Operation RST

The above command will return ACK or ERR as value

    // Success

    // Error


$FLYSYS;<API verison>;RST