# Table of Contents - [Getting Started | Cortex API](#getting-started-cortex-api) - [EMOTIV Home | EMOTIV Home](#emotiv-home-emotiv-home) - [Overview of API flow | Cortex API](#overview-of-api-flow-cortex-api) - [getCortexInfo | Cortex API](#getcortexinfo-cortex-api) - [Connecting to the Cortex API | Cortex API](#connecting-to-the-cortex-api-cortex-api) - [Offline support | Cortex API](#offline-support-cortex-api) - [Authentication | Cortex API](#authentication-cortex-api) - [hasAccessRight | Cortex API](#hasaccessright-cortex-api) - [Cortex API | System requirements](#cortex-api-system-requirements) - [Headsets | Cortex API](#headsets-cortex-api) - [getUserLogin | Cortex API](#getuserlogin-cortex-api) - [requestAccess | Cortex API](#requestaccess-cortex-api) - [generateNewToken | Cortex API](#generatenewtoken-cortex-api) - [getUserInformation | Cortex API](#getuserinformation-cortex-api) - [getLicenseInfo | Cortex API](#getlicenseinfo-cortex-api) - [controlDevice | Cortex API](#controldevice-cortex-api) - [authorize | Cortex API](#authorize-cortex-api) - [queryHeadsets | Cortex API](#queryheadsets-cortex-api) - [updateHeadset | Cortex API](#updateheadset-cortex-api) - [Sessions | Cortex API](#sessions-cortex-api) - [updateHeadsetCustomInfo | Cortex API](#updateheadsetcustominfo-cortex-api) - [createSession | Cortex API](#createsession-cortex-api) - [unsubscribe | Cortex API](#unsubscribe-cortex-api) - [Session object | Cortex API](#session-object-cortex-api) - [querySessions | Cortex API](#querysessions-cortex-api) - [updateSession | Cortex API](#updatesession-cortex-api) - [syncWithHeadsetClock | Cortex API](#syncwithheadsetclock-cortex-api) - [Records | Cortex API](#records-cortex-api) - [Insight User Manual | INSIGHT Manual](#insight-user-manual-insight-manual) - [Markers | Cortex API](#markers-cortex-api) - [createRecord | Cortex API](#createrecord-cortex-api) - [Subjects | Cortex API](#subjects-cortex-api) - [Headset object | Cortex API](#headset-object-cortex-api) - [updateRecord | Cortex API](#updaterecord-cortex-api) - [subscribe | Cortex API](#subscribe-cortex-api) - [injectMarker | Cortex API](#injectmarker-cortex-api) - [stopRecord | Cortex API](#stoprecord-cortex-api) - [deleteRecord | Cortex API](#deleterecord-cortex-api) - [Introduction | EmotivBCI Toolbox](#introduction-emotivbci-toolbox) - [getRecordInfos | Cortex API](#getrecordinfos-cortex-api) - [requestToDownloadRecordData | Cortex API](#requesttodownloadrecorddata-cortex-api) - [Readonly profile | Cortex API](#readonly-profile-cortex-api) - [updateMarker | Cortex API](#updatemarker-cortex-api) - [Marker object | Cortex API](#marker-object-cortex-api) - [Record object | Cortex API](#record-object-cortex-api) - [queryProfile | Cortex API](#queryprofile-cortex-api) - [updateSubject | Cortex API](#updatesubject-cortex-api) - [BCI | Cortex API](#bci-cortex-api) - [Subject object | Cortex API](#subject-object-cortex-api) - [deleteSubjects | Cortex API](#deletesubjects-cortex-api) - [configOptOut | Cortex API](#configoptout-cortex-api) - [Data Subscription | Cortex API](#data-subscription-cortex-api) - [queryRecords | Cortex API](#queryrecords-cortex-api) - [getCurrentProfile | Cortex API](#getcurrentprofile-cortex-api) - [getDemographicAttributes | Cortex API](#getdemographicattributes-cortex-api) - [loadGuestProfile | Cortex API](#loadguestprofile-cortex-api) - [Advanced BCI | Cortex API](#advanced-bci-cortex-api) - [createSubject | Cortex API](#createsubject-cortex-api) - [querySubjects | Cortex API](#querysubjects-cortex-api) - [getTrainingTime | Cortex API](#gettrainingtime-cortex-api) - [getTrainedSignatureActions | Cortex API](#gettrainedsignatureactions-cortex-api) - [training | Cortex API](#training-cortex-api) - [mentalCommandGetSkillRating | Cortex API](#mentalcommandgetskillrating-cortex-api) - [setupProfile | Cortex API](#setupprofile-cortex-api) - [cortexaccess tool | Cortex API](#cortexaccess-tool-cortex-api) - [Troubleshooting Guide | Cortex API](#troubleshooting-guide-cortex-api) - [facialExpressionSignatureType | Cortex API](#facialexpressionsignaturetype-cortex-api) - [facialExpressionThreshold | Cortex API](#facialexpressionthreshold-cortex-api) - [mentalCommandTrainingThreshold | Cortex API](#mentalcommandtrainingthreshold-cortex-api) - [exportRecord | Cortex API](#exportrecord-cortex-api) - [getDetectionInfo | Cortex API](#getdetectioninfo-cortex-api) - [MN8 User Manual | MN8 User Manual](#mn8-user-manual-mn8-user-manual) - [mentalCommandActionSensitivity | Cortex API](#mentalcommandactionsensitivity-cortex-api) - [mentalCommandBrainMap | Cortex API](#mentalcommandbrainmap-cortex-api) - [Data sample object | Cortex API](#data-sample-object-cortex-api) - [Warning Objects | Cortex API](#warning-objects-cortex-api) - [mentalCommandActiveAction | Cortex API](#mentalcommandactiveaction-cortex-api) - [Release Notes | Cortex API](#release-notes-cortex-api) - [Error Codes | Cortex API](#error-codes-cortex-api) - [EPOC+ User Manual | EPOC+](#epoc-user-manual-epoc-) - [What is EmotivPRO Analyzer? | EmotivPRO Analyzer](#what-is-emotivpro-analyzer-emotivpro-analyzer) - [Insight 2 | Insight 2 User Manual](#insight-2-insight-2-user-manual) - [Abbreviations | X-trodes User Manual](#abbreviations-x-trodes-user-manual) - [EPOC FLEX User Manual | EPOC Flex User Manual](#epoc-flex-user-manual-epoc-flex-user-manual) - [EPOC X | EPOC X User Manual](#epoc-x-epoc-x-user-manual) - [FLEX | FLEX 2.0 User Manual](#flex-flex-2-0-user-manual) - [Emotiv BrainViz - User Manual | BrainViz](#emotiv-brainviz-user-manual-brainviz) - [What is EMOTIV Launcher? | Emotiv Launcher](#what-is-emotiv-launcher-emotiv-launcher) - [Extender Manual | Extender](#extender-manual-extender) - [What is EmotivPRO Builder? | EmotivPRO Builder](#what-is-emotivpro-builder-emotivpro-builder) - [EmotivPRO | EmotivPRO v3.0](#emotivpro-emotivpro-v3-0) - [EmotivBCI | EmotivBCI](#emotivbci-emotivbci) - [EMOTIV Launcher | System requirements](#emotiv-launcher-system-requirements) - [System requirements and supported platforms | System requirements](#system-requirements-and-supported-platforms-system-requirements) - [Warranties and Copyright | FLEX 2.0 User Manual](#warranties-and-copyright-flex-2-0-user-manual) - [Regulatory Compliance | FLEX 2.0 User Manual](#regulatory-compliance-flex-2-0-user-manual) - [Introduction to FLEX | FLEX 2.0 User Manual](#introduction-to-flex-flex-2-0-user-manual) - [EmotivPRO | System requirements](#emotivpro-system-requirements) - [Warranties and Copyright | MN8 User Manual](#warranties-and-copyright-mn8-user-manual) - [Warranties and Copyright | EPOC X User Manual](#warranties-and-copyright-epoc-x-user-manual) - [Regulatory compliance | Insight 2 User Manual](#regulatory-compliance-insight-2-user-manual) - [Technical Specifications | INSIGHT Manual](#technical-specifications-insight-manual) - [System requirements | Emotiv Launcher](#system-requirements-emotiv-launcher) - [System requirements | EmotivPRO Analyzer](#system-requirements-emotivpro-analyzer) - [System requirements | EmotivPRO Builder](#system-requirements-emotivpro-builder) - [Application Compatibility | FLEX 2.0 User Manual](#application-compatibility-flex-2-0-user-manual) - [EmotivPRO Builder | System requirements](#emotivpro-builder-system-requirements) - [Safety Precautions | INSIGHT Manual](#safety-precautions-insight-manual) - [About | EPOC+](#about-epoc-) - [Introduction | EPOC Flex User Manual](#introduction-epoc-flex-user-manual) - [Technical Specifications | EPOC Flex User Manual](#technical-specifications-epoc-flex-user-manual) - [Introduction | Extender](#introduction-extender) - [Regulatory compliance | EPOC X User Manual](#regulatory-compliance-epoc-x-user-manual) - [Technical Specifications | EPOC+](#technical-specifications-epoc-) - [Regulatory Compliance | MN8 User Manual](#regulatory-compliance-mn8-user-manual) - [Installation | Emotiv Launcher](#installation-emotiv-launcher) - [Integration with EmotivBCI | EmotivBCI Toolbox](#integration-with-emotivbci-emotivbci-toolbox) - [Introduction | BrainViz](#introduction-brainviz) - [Turning your Insight on and off | Insight 2 User Manual](#turning-your-insight-on-and-off-insight-2-user-manual) - [Changing reference sensor location | EPOC X User Manual](#changing-reference-sensor-location-epoc-x-user-manual) - [Important information about using a computer to charge your Insight | Insight 2 User Manual](#important-information-about-using-a-computer-to-charge-your-insight-insight-2-user-manual) - [Gel Sensors | EPOC Flex User Manual](#gel-sensors-epoc-flex-user-manual) - [Fitting the sensor felts | EPOC X User Manual](#fitting-the-sensor-felts-epoc-x-user-manual) - [SD card recording mode | Extender](#sd-card-recording-mode-extender) - [Job Management | EmotivPRO Analyzer](#job-management-emotivpro-analyzer) - [Saline Sensors | EPOC Flex User Manual](#saline-sensors-epoc-flex-user-manual) - [Storage | EPOC+](#storage-epoc-) - [Contact quality map | BrainViz](#contact-quality-map-brainviz) - [Contact quality indicator | BrainViz](#contact-quality-indicator-brainviz) - [Connecting your Insight to a computer using Bluetooth | Insight 2 User Manual](#connecting-your-insight-to-a-computer-using-bluetooth-insight-2-user-manual) - [Performance Metric Reports | EmotivPRO Analyzer](#performance-metric-reports-emotivpro-analyzer) - [Electrode Assembly | EPOC+](#electrode-assembly-epoc-) - [Connecting your EPOC X to a device | EPOC X User Manual](#connecting-your-epoc-x-to-a-device-epoc-x-user-manual) - [Band Power calculation | EmotivPRO Analyzer](#band-power-calculation-emotivpro-analyzer) - [Inserting Sensors | FLEX 2.0 User Manual](#inserting-sensors-flex-2-0-user-manual) - [Connecting your EPOC X using the USB receiver dongle | EPOC X User Manual](#connecting-your-epoc-x-using-the-usb-receiver-dongle-epoc-x-user-manual) - [Reattaching Sensor Frame | EPOC+](#reattaching-sensor-frame-epoc-) - [Pass-through mode | Extender](#pass-through-mode-extender) - [Inserting the Sensors into the Cap | EPOC Flex User Manual](#inserting-the-sensors-into-the-cap-epoc-flex-user-manual) - [Upgrading firmware | Emotiv Launcher](#upgrading-firmware-emotiv-launcher) - [Fitting your Insight | Insight 2 User Manual](#fitting-your-insight-insight-2-user-manual) - [Contact quality map | Emotiv Launcher](#contact-quality-map-emotiv-launcher) - [Software requirements | EmotivPRO Builder](#software-requirements-emotivpro-builder) - [Adjusting Insight to fit your head | Insight 2 User Manual](#adjusting-insight-to-fit-your-head-insight-2-user-manual) - [Specifications & Information | X-trodes User Manual](#specifications-information-x-trodes-user-manual) - [csv outputs | EmotivPRO Analyzer](#csv-outputs-emotivpro-analyzer) - [What are elements? | EmotivPRO Builder](#what-are-elements-emotivpro-builder) - [Fitting FLEX Cap to a Participant | FLEX 2.0 User Manual](#fitting-flex-cap-to-a-participant-flex-2-0-user-manual) - [Positioning the FLEX Controller | FLEX 2.0 User Manual](#positioning-the-flex-controller-flex-2-0-user-manual) - [EMOTIV Applications | EPOC+](#emotiv-applications-epoc-) - [System requirements | EmotivPRO v3.0](#system-requirements-emotivpro-v3-0) - [System Removal | X-trodes User Manual](#system-removal-x-trodes-user-manual) - [Inserting silicon skirts onto Sensors | EPOC Flex User Manual](#inserting-silicon-skirts-onto-sensors-epoc-flex-user-manual) - [Creating a Virtual Brainwear device | Emotiv Launcher](#creating-a-virtual-brainwear-device-emotiv-launcher) - [Placing the Control Box | EPOC Flex User Manual](#placing-the-control-box-epoc-flex-user-manual) - [Channel mapping | X-trodes User Manual](#channel-mapping-x-trodes-user-manual) - [Naming elements | EmotivPRO Builder](#naming-elements-emotivpro-builder) - [USB receiver dongle behaviour | EPOC X User Manual](#usb-receiver-dongle-behaviour-epoc-x-user-manual) - [How to achieve the best contact quality | Insight 2 User Manual](#how-to-achieve-the-best-contact-quality-insight-2-user-manual) - [Connecting your EPOC X using Bluetooth Low Energy | EPOC X User Manual](#connecting-your-epoc-x-using-bluetooth-low-energy-epoc-x-user-manual) - [EmotivPRO Analyzer | System requirements](#emotivpro-analyzer-system-requirements) - [Node descriptions and use | EmotivBCI Toolbox](#node-descriptions-and-use-emotivbci-toolbox) - [Using Training Profiles | EmotivBCI Toolbox](#using-training-profiles-emotivbci-toolbox) - [Create and deploy flows | EmotivBCI Toolbox](#create-and-deploy-flows-emotivbci-toolbox) - [Charging | INSIGHT Manual](#charging-insight-manual) - [Example flows | EmotivBCI Toolbox](#example-flows-emotivbci-toolbox) - [Obtaining Good Contact Quality | INSIGHT Manual](#obtaining-good-contact-quality-insight-manual) - [Connecting MN8 to a Device | MN8 User Manual](#connecting-mn8-to-a-device-mn8-user-manual) - [Band Power Reports | EmotivPRO Analyzer](#band-power-reports-emotivpro-analyzer) - [Individual Band-Power Reports | EmotivPRO Analyzer](#individual-band-power-reports-emotivpro-analyzer) - [Universal USB Receiver (Dongle) | EPOC+](#universal-usb-receiver-dongle-epoc-) - [Updating firmware | Updating firmware](#updating-firmware-updating-firmware) - [EMOTIV App | EMOTIV App](#emotiv-app-emotiv-app) - [Objective-C API for iOS | Cortex Library for Mobile](#objective-c-api-for-ios-cortex-library-for-mobile) - [CortexLib class | Cortex Library for Mobile](#cortexlib-class-cortex-library-for-mobile) - [Java API for Android | Cortex Library for Mobile](#java-api-for-android-cortex-library-for-mobile) - [CortexClient class | Cortex Library for Mobile](#cortexclient-class-cortex-library-for-mobile) - [Create an account | EMOTIV App](#create-an-account-emotiv-app) - [About EMOTIV App | EMOTIV App](#about-emotiv-app-emotiv-app) - [EPOC+/Flex | Updating firmware](#epoc-flex-updating-firmware) - [logout | Cortex Library for Mobile](#logout-cortex-library-for-mobile) - [queryVirtualHeadsets | Cortex Library for Mobile](#queryvirtualheadsets-cortex-library-for-mobile) - [createVirtualHeadset | Cortex Library for Mobile](#createvirtualheadset-cortex-library-for-mobile) - [User manual | EMOTIV App](#user-manual-emotiv-app) - [EPOC+ and EPOC X configurations | EMOTIV App](#epoc-and-epoc-x-configurations-emotiv-app) - [deleteVirtualHeadset | Cortex Library for Mobile](#deletevirtualheadset-cortex-library-for-mobile) - [Bluetooth | Updating firmware](#bluetooth-updating-firmware) - [updateVirtualHeadset | Cortex Library for Mobile](#updatevirtualheadset-cortex-library-for-mobile) - [Cable | Updating firmware](#cable-updating-firmware) - [acceptLicense | Cortex Library for Mobile](#acceptlicense-cortex-library-for-mobile) - [Setting up your EEG device | EMOTIV App](#setting-up-your-eeg-device-emotiv-app) - [Connecting and disconnecting your Virtual Brainwear® device | EMOTIV App](#connecting-and-disconnecting-your-virtual-brainwear-device-emotiv-app) - [Connected headset | EMOTIV App](#connected-headset-emotiv-app) - [Contact quality for Virtual Brainwear ® | EMOTIV App](#contact-quality-for-virtual-brainwear-emotiv-app) - [Release Notes | EMOTIV App](#release-notes-emotiv-app) - [Virtual Brainwear® | EMOTIV App](#virtual-brainwear-emotiv-app) - [Update Apps | EMOTIV App](#update-apps-emotiv-app) - [Account screen | EMOTIV App](#account-screen-emotiv-app) - [Settings | EMOTIV App](#settings-emotiv-app) - [Apps screen | EMOTIV App](#apps-screen-emotiv-app) - [Tools screen | EMOTIV App](#tools-screen-emotiv-app) - [Insight | Updating firmware](#insight-updating-firmware) - [Devices screen | EMOTIV App](#devices-screen-emotiv-app) - [Disconnecting your headset | EMOTIV App](#disconnecting-your-headset-emotiv-app) - [v 2.6.3 | EMOTIV App](#v-2-6-3-emotiv-app) - [Configuring a Virtual Brainwear ® | EMOTIV App](#configuring-a-virtual-brainwear-emotiv-app) - [v2.5 | EMOTIV App](#v2-5-emotiv-app) - [Virtual headset object | Cortex Library for Mobile](#virtual-headset-object-cortex-library-for-mobile) - [EPOC X | Updating firmware](#epoc-x-updating-firmware) - [Creating a new virtual device | EMOTIV App](#creating-a-new-virtual-device-emotiv-app) - [Release Notes | Cortex Library for Mobile](#release-notes-cortex-library-for-mobile) - [triggerVirtualHeadsetEvent | Cortex Library for Mobile](#triggervirtualheadsetevent-cortex-library-for-mobile) - [freeUpRecords | Cortex Library for Mobile](#freeuprecords-cortex-library-for-mobile) - [CortexLib class | Cortex Library for Mobile](#cortexlib-class-cortex-library-for-mobile) - [Forgot password | EMOTIV App](#forgot-password-emotiv-app) - [Licenses | EMOTIV App](#licenses-emotiv-app) - [EmotivLibraryLoader class | Cortex Library for Mobile](#emotivlibraryloader-class-cortex-library-for-mobile) - [v2.3 | EMOTIV App](#v2-3-emotiv-app) - [Virtual Brainwear ® Detections | EMOTIV App](#virtual-brainwear-detections-emotiv-app) - [v2.6.1 | EMOTIV App](#v2-6-1-emotiv-app) - [Logging in | EMOTIV App](#logging-in-emotiv-app) - [Virtual Brainwear® device statuses and configuration | EMOTIV App](#virtual-brainwear-device-statuses-and-configuration-emotiv-app) - [Settings | EMOTIV App](#settings-emotiv-app) - [Getting Started | Cortex Library for Mobile](#getting-started-cortex-library-for-mobile) - [v2.4.1 | EMOTIV App](#v2-4-1-emotiv-app) - [Running the app | EMOTIV App](#running-the-app-emotiv-app) - [Additional JSON methods | Cortex Library for Mobile](#additional-json-methods-cortex-library-for-mobile) - [v2.7 | EMOTIV App](#v2-7-emotiv-app) - [v 2.6 | EMOTIV App](#v-2-6-emotiv-app) - [v2.6.2 | EMOTIV App](#v2-6-2-emotiv-app) - [Closing the app | EMOTIV App](#closing-the-app-emotiv-app) - [Virtual Brainwear ® Simulation | EMOTIV App](#virtual-brainwear-simulation-emotiv-app) - [v2.7.2 | EMOTIV App](#v2-7-2-emotiv-app) - [v 2.2.1 | EMOTIV App](#v-2-2-1-emotiv-app) - [Connecting your headset | EMOTIV App](#connecting-your-headset-emotiv-app) - [Logging out | EMOTIV App](#logging-out-emotiv-app) - [System requirements | EMOTIV App](#system-requirements-emotiv-app) - [EMOTIV Setup Wizard | EMOTIV App](#emotiv-setup-wizard-emotiv-app) - [View device fitting instructions | EMOTIV App](#view-device-fitting-instructions-emotiv-app) - [v2.7.3 | EMOTIV App](#v2-7-3-emotiv-app) - [View contact quality map | EMOTIV App](#view-contact-quality-map-emotiv-app) - [Getting started | EMOTIV App](#getting-started-emotiv-app) - [Installation | EMOTIV App](#installation-emotiv-app) - [Turning your virtual device ON/OFF | EMOTIV App](#turning-your-virtual-device-on-off-emotiv-app) - [CortexClientDelegate protocol | Cortex Library for Mobile](#cortexclientdelegate-protocol-cortex-library-for-mobile) - [CortexClient class | Cortex Library for Mobile](#cortexclient-class-cortex-library-for-mobile) --- # Getting Started | Cortex API This documentation contains guidance for developing applications with EMOTIV Cortex - the core piece of technology at EMOTIV which brings the brain computer interface to consumer. The intended audience is anyone with some programming skills who wants to develop a third party application that interacts with an EMOTIV headset. The Cortex API is built on JSON and WebSockets, making it easy to access from a variety of programming languages and platforms. [](https://emotiv.gitbook.io/cortex-api#system-requirements-and-supported-platforms) System requirements and supported platforms ------------------------------------------------------------------------------------------------------------------------------------- Learn more about [the system requirements and support platforms for Cortex](https://emotiv.gitbook.io/system-requirements/cortex-api) . [](https://emotiv.gitbook.io/cortex-api#supported-headsets) Supported headsets ----------------------------------------------------------------------------------- Currently, Cortex supports the following headsets: Model Firmware Connection EPOC All USB dongle [EPOC+](https://www.emotiv.com/epoc/) All USB dongle, BLE 4.0 [EPOC X](https://www.emotiv.com/epoc-x/) All USB dongle, BLE 4.0 Bluetooth® 5.0 will be available with upcoming software and firmware updates [EPOC Flex](https://www.emotiv.com/epoc-flex/) All USB dongle, BLE 4.0 Insight All USB dongle, BLE 4.0 [Insight 2.0](https://www.emotiv.com/insight/) All BLE 4.0 [MN8](https://www.emotiv.com/workplace-wellness-safety-and-productivity-mn8/) All BLE 4.0 [Flex](https://emotiv.gitbook.io/flex-2.0-user-manual/) All nRF dongle with BLE 5, BLE 5.x **USB dongle** refers to the USB receiver that comes with EPOC+. If you need an additional receiver, you can purchase it from the EMOTIV [store](https://www.emotiv.com/product/emotiv-usb-receiver-universal-model/) . Currently, it is not possible to use a Flex or a MN8 headset with Cortex on Linux Ubuntu and Cortex on Raspberry Pi. [](https://emotiv.gitbook.io/cortex-api#prerequisites) Prerequisites ------------------------------------------------------------------------- ### [](https://emotiv.gitbook.io/cortex-api#create-an-emotivid) Create an EmotivID As with other EMOTIV services, you are required to have an EmotivID account. You can create an ID on [www.emotiv.com](https://www.emotiv.com/) . ### [](https://emotiv.gitbook.io/cortex-api#license) License If you’re ready to start developing with EMOTIV’s Cortex SDK, one of your first steps is registering your Cortex App ID. Whether you’re working with consumer devices like the Insight or MN8, or exploring options with professional-grade hardware such as the EPOC X or EPOC Flex, this guide will walk you through how to get started with consumer devices. #### [](https://emotiv.gitbook.io/cortex-api#understanding-cortex-api-access-levels) **Understanding Cortex API Access Levels** EMOTIV’s Cortex SDK supports multiple EEG and behavioral data streams. These are grouped into Basic (BCI API) and Premium categories: **Basic (BCI API) Includes:** * Mental Commands API * Facial Expression API * Frequency Band API * Motion Data API * Low-resolution Performance Metrics (0.1 Hz) **Premium API Includes:** * Raw EEG API * High-resolution Performance Metrics (2 Hz) Consumer devices (Insight, MN8) will allow access to all data streams through our Developer SDK and API. You can register here to get started: [https://www.emotiv.com/pages/developer](https://www.emotiv.com/pages/developer) . Professional devices (EPOC X and EPOC Flex) include free access to the Basic BCI API. To access the Premium API, however, a premium Developer API license is required. If you don't have a valid Developer API license, please submit your SDK application [here](https://www.emotiv.com/pages/cortex-sdk-application-form) and specify the level of data stream you wish to access with your professional device. Our support team will then guide you on the appropriate licensing option to get started. ### [](https://emotiv.gitbook.io/cortex-api#create-a-cortex-app) Create a Cortex App To learn how to register your Cortex App ID and begin development, please refer to [this guide](https://www.emotiv.com/tools/knowledge-base/cortex-sdk-api/how-to-register-your-app-id-with-cortex-sdk-for-development) . [](https://emotiv.gitbook.io/cortex-api#the-cortex-examples) The Cortex Examples ------------------------------------------------------------------------------------- To help you getting started with your application, EMOTIV provides basic examples in various programming languages. There are open source and hosted by Github at [https://github.com/Emotiv/cortex-v2-example](https://github.com/Emotiv/cortex-v2-example) If you have difficulty with the Cortex API, you can also [open an issue](https://github.com/Emotiv/cortex-v2-example/issues) on this Github repository. [](https://emotiv.gitbook.io/cortex-api#next-step) Next Step ----------------------------------------------------------------- If you are upgrading your application from Cortex 1.x to Cortex 2.x, then please be aware that the Cortex API has significantly changed. Please read the [release notes](https://emotiv.gitbook.io/cortex-api/release-notes#changes-from-cortex-1-x-to-cortex-v-2-0) for details. If you are new to the Cortex API, then please start with [Connecting to the Cortex API](https://emotiv.gitbook.io/cortex-api/connecting-to-the-cortex-api) . [NextConnecting to the Cortex API](https://emotiv.gitbook.io/cortex-api/connecting-to-the-cortex-api) Last updated 2 days ago --- # EMOTIV Home | EMOTIV Home **End Of Life** Support for the previous generation EMOTIV SDK Community Edition version 3.5, and EMOTIV Cortex v1.x, has reached the end of life on **31st December 2020**. Developers have to migrate their applications to work with our new Emotiv Cortex V2, which is described in this [document](https://emotiv.gitbook.io/cortex-api/) and can be downloaded from our website at [https://www.emotiv.com/developer/](https://www.emotiv.com/developer/) . ### [](https://emotiv.gitbook.io/emotiv-home#hardware) HARDWARE * [EPOC+](https://emotiv.gitbook.io/epoc-user-manual/) * [Insight](https://emotiv.gitbook.io/insight-manual/) * [Insight 2](https://emotiv.gitbook.io/insight-2-user-manual/) * [EPOC Flex 1.0](https://emotiv.gitbook.io/epoc-flex-user-manual/) * [EPOC Flex 2.0](https://emotiv.gitbook.io/flex-2.0-user-manual/) * [MN8](https://emotiv.gitbook.io/mn8-user-manual/) * [EPOC X](https://emotiv.gitbook.io/epoc-x-user-manual/) * [Extender](https://emotiv.gitbook.io/extender-manual/) * [X-trodes](https://emotiv.gitbook.io/x-trodes-user-manual/) ### [](https://emotiv.gitbook.io/emotiv-home#software) SOFTWARE * [EMOTIV Launcher](https://emotiv.gitbook.io/emotiv-launcher/) * [EmotivPRO](https://emotiv.gitbook.io/emotivpro-v3/) * [EmotivPRO Builder](https://emotiv.gitbook.io/emotivpro-builder/) * [EmotivPRO Analyzer](https://emotiv.gitbook.io/emotivpro-analyzer/) * [EmotivBCI](https://emotiv.gitbook.io/emotivbci/) * [BrainViz](https://emotiv.gitbook.io/emotiv-brainviz/) * [Node-RED Toolbox](https://emotiv.gitbook.io/emotivbci-node-red-toolbox/) ### [](https://emotiv.gitbook.io/emotiv-home#api) API * [C​ortex API](https://emotiv.gitbook.io/cortex-api/) Last updated 1 year ago --- # Overview of API flow | Cortex API There are a few steps to prepare before you can get the data streaming out from Cortex web socket server: 1. First you have to login to the EMOTIV Launcher with your [EmotivID](https://emotiv.gitbook.io/cortex-api#create-an-emotivid) . 2. Make sure that you are using the correct application ID, client ID and client secret that you generated from the Account dashboard on Emotiv website in your application ([see here](https://emotiv.gitbook.io/cortex-api#create-a-cortex-app) ). 3. Call the [requestAccess](https://emotiv.gitbook.io/cortex-api/authentication/requestaccess) API from your app to Cortex, and accept via the EMOTIV Launcher. 4. After access is granted, connect your EMOTIV brainwear headset via the USB dongle or Bluetooth. 5. Call the [controlDevice](https://emotiv.gitbook.io/cortex-api/headset/controldevice) API with "refresh" command to start the headset scanning. 6. Call the [queryHeadsets](https://emotiv.gitbook.io/cortex-api/headset/queryheadsets) API to list the available headsets. 7. Call the [controlDevice](https://emotiv.gitbook.io/cortex-api/headset/controldevice) API with "connect" command to connect to the desire headset. 8. Call the [authorize](https://emotiv.gitbook.io/cortex-api/authentication/authorize) API to get a Cortex token for subsequence requests. 9. Call the [createSession](https://emotiv.gitbook.io/cortex-api/session/createsession) API to open up a new session and be ready for BCI data streaming. ![](https://emotiv.gitbook.io/cortex-api/~gitbook/image?url=https%3A%2F%2F2332755068-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LVaLrV9hH1eJbn-6OTd%252F-M8QqtwkSmhYUMPOQJgh%252F-M8R5tEmDnp-tghr3nhZ%252Fcortex-starting.jpg%3Falt%3Dmedia%26token%3Dde2d5a6a-7c78-4eef-9888-d11a298cd61c&width=768&dpr=4&quality=100&sign=6858a410&sv=2) [PreviousgetCortexInfo](https://emotiv.gitbook.io/cortex-api/connecting-to-the-cortex-api/getcortexinfo) [NextOffline support](https://emotiv.gitbook.io/cortex-api/overview-of-api-flow/offline-support) Last updated 8 days ago --- # getCortexInfo | Cortex API This method returns information about the Cortex service, like its version and build number. [](https://emotiv.gitbook.io/cortex-api/connecting-to-the-cortex-api/getcortexinfo#parameters) Parameters -------------------------------------------------------------------------------------------------------------- This method has no parameter. [](https://emotiv.gitbook.io/cortex-api/connecting-to-the-cortex-api/getcortexinfo#result) Result ------------------------------------------------------------------------------------------------------ The result is an object with these fields: Name Type Description buildDate `string (date time)` The date and time the Cortex binary was built buildNumber `string` The internal build number version `string` The version of Cortex. It should have the format **"2.y.z"** [](https://emotiv.gitbook.io/cortex-api/connecting-to-the-cortex-api/getcortexinfo#example) Example -------------------------------------------------------------------------------------------------------- Request [](https://emotiv.gitbook.io/cortex-api/connecting-to-the-cortex-api/getcortexinfo#tab-request) Response [](https://emotiv.gitbook.io/cortex-api/connecting-to-the-cortex-api/getcortexinfo#tab-response) Copy { "id": 1, "jsonrpc": "2.0", "method": "getCortexInfo" } Copy { "id": 1, "jsonrpc": "2.0", "result": { "buildDate":"2019-05-29T14:09:19", "buildNumber":"25cf08bd", "version":"2.0.0" } } [PreviousConnecting to the Cortex API](https://emotiv.gitbook.io/cortex-api/connecting-to-the-cortex-api) [NextOverview of API flow](https://emotiv.gitbook.io/cortex-api/overview-of-api-flow) Last updated 5 years ago --- # Connecting to the Cortex API | Cortex API On Windows and MacOS, the Cortex service is a background process that communicates with the EMOTIV headsets and the EMOTIV cloud. It is also a [WebSocket](https://en.wikipedia.org/wiki/WebSocket) server that uses the [JSON-RPC](https://www.jsonrpc.org/specification) protocol. [](https://emotiv.gitbook.io/cortex-api/connecting-to-the-cortex-api#websocket) WebSocket ---------------------------------------------------------------------------------------------- Communicate with the Cortex API using the [WebSocket Secure](https://en.wikipedia.org/wiki/WebSocket) protocol. Create a **WebSocket client** and connect to **localhost** on the port **6868**, using the **wss** protocol. Any WebSocket client should work in any programming language. You can even use a web browser plugin or an [online client](https://www.websocket.org/echo.html) . Please note that Cortex only supports the WebSocket Secure (wss) protocol. It doesn't support the plain WebSocket (ws) protocol without encryption. To try the Cortex API, open a secure WebSocket connection to **wss://localhost:6868** and send the message `**{"id":1,"jsonrpc":"2.0","method":"getCortexInfo"}**` [](https://emotiv.gitbook.io/cortex-api/connecting-to-the-cortex-api#cortex-security-certificate) Cortex security certificate ---------------------------------------------------------------------------------------------------------------------------------- The Cortex web socket server uses a self-signed certificate. When you install Emotiv softwares, the installer has already installed the Emotiv Root CA file and ask the system to trust it, so most of the time, your application don't need to configure anything else. However, for some programming languagues or for remote connections to Pi, you must configure a custom Certificate Authorities (CA) to trust Cortex websocket connection. For example, on Android, you must configure the application like [`this`](https://github.com/Emotiv/cortex-v2-example/tree/mobile-example/mobile#android-1) or if you use python, you can configure the application like [this](https://github.com/Emotiv/cortex-v2-example/blob/master/python/cortex.py#L108) . Here is [the link to the Emotiv Root CA file](https://github.com/Emotiv/cortex-v2-example/blob/master/certificates/rootCA.pem) . [](https://emotiv.gitbook.io/cortex-api/connecting-to-the-cortex-api#remote-connections) Remote connections ---------------------------------------------------------------------------------------------------------------- Since 2.7.1 release, we support remote connections to Cortex running on Raspberry Pi device. It requires some steps: * Grant the permissions to a desktop machine before an app on that machine can connect to the Cortex web socket server on Raspberry Pi device, using [cortexaccess](https://emotiv.gitbook.io/cortex-api/cortexaccess-tool) tool. * Connect using the IP address: * Only applied if the IP address of your Raspberry Pi device is in the below range: * 10.\[0-1\].\[0-2\].\[0-255\] * 172.\[16-17\].\[0-2\].\[0-255\] * 192.168.\[0-5\].\[0-255\] * Create a **WebSocket client** and connect to`` on the port **6868**, using the **wss** protocol. * Connect using the DNS name: * Can be applied for any value of IP address of your Raspberry Pi device. * Add this line into the _host_ file of the desktop machine:` emotiv-cortex.remote` * Create a **WebSocket client** and connect to **emotiv-cortex.remote** on the port **6868**, using the **wss** protocol. Please note that websocket server on Raspberry Pi accepts only 1 remote connection at a time (not counting the remote connection from EMOTIVApp). [](https://emotiv.gitbook.io/cortex-api/connecting-to-the-cortex-api#json-rpc) JSON-RPC -------------------------------------------------------------------------------------------- After you have successfully opened the WebSocket connection, communicate with Cortex using the [JSON-RPC 2.0](https://www.jsonrpc.org/specification) protocol. Call **methods**, with or without **parameters**, and Cortex sends back a **result** or an **error**. Call an API method by sending a JSON object with these fields: Name Type Required Description jsonrpc `string` yes Must be "2.0" method `string` yes The name of the API method you want to call params `object` no The parameters of the method, if it has any id `number or string` no The id of this request. Cortex will include this id into the response message, so you can can match the response with the request The response from Cortex is a JSON object with these fields: Name Type Description jsonrpc `string` Is always "2.0" result `any` If the method is successful, contains the result of the method. The type depends on the method error `object` If the method failed, contains an error code and an error message id `number or string` The id you included in the request Here is a simple fictional example: Request [](https://emotiv.gitbook.io/cortex-api/connecting-to-the-cortex-api#tab-request) Response [](https://emotiv.gitbook.io/cortex-api/connecting-to-the-cortex-api#tab-response) Copy { "id": 1, "jsonrpc": "2.0", "method": "area", "params": { "width": 6, "length": 7 } } Copy { "id": 1, "jsonrpc": "2.0", "result": 42 } Please read the [JSON-RPC 2.0 specification](https://www.jsonrpc.org/specification) for details. [](https://emotiv.gitbook.io/cortex-api/connecting-to-the-cortex-api#test-api-request-and-response) Test API request and response -------------------------------------------------------------------------------------------------------------------------------------- You can try with the most simple API of Cortex: [getCortexInfo](https://emotiv.gitbook.io/cortex-api/connecting-to-the-cortex-api/getcortexinfo) . [](https://emotiv.gitbook.io/cortex-api/connecting-to-the-cortex-api#next-step) Next step ---------------------------------------------------------------------------------------------- The rest of this documentation will show you what methods are available, what parameters they take, and how to use these methods. But first, you should start with the [overview of the API flow](https://emotiv.gitbook.io/cortex-api/overview-of-api-flow) . [PreviousGetting Started](https://emotiv.gitbook.io/cortex-api) [NextgetCortexInfo](https://emotiv.gitbook.io/cortex-api/connecting-to-the-cortex-api/getcortexinfo) Last updated 8 days ago --- # Offline support | Cortex API Once the app [authenticates](https://emotiv.gitbook.io/cortex-api/authentication/authorize) with the Cortex successfully, it can use the Cortex token to stay offline while working with Cortex for a period of time (see soft limit, hard limit below). Here is the recommended flow to work offline with Cortex: **Step 1:** Follow [this API flow](https://emotiv.gitbook.io/cortex-api/overview-of-api-flow) to get Cortex token the first time. This flow requires the Internet connection. A Cortex token will be available for 48 hours. **Step 2:** When the Cortex token is expired, call [generateNewToken](https://emotiv.gitbook.io/cortex-api/authentication/generatenewtoken) API to generate another token. This API doesn't require the Internet connection. **Step 3**: Check soft limit, hard limit of the current license via [getLicenseInfo](https://emotiv.gitbook.io/cortex-api/authentication/getlicenseinfo) API and warn the users to be online. In the license information, there are 2 fields "softLimitTime" and "hardLimitTime". ### [](https://emotiv.gitbook.io/cortex-api/overview-of-api-flow/offline-support#softlimittime) softLimitTime This is the reasonable time to warn users that the app will not be able to use offline soon. The app can still work offline until **hardLimitTime**. ### [](https://emotiv.gitbook.io/cortex-api/overview-of-api-flow/offline-support#hardlimittime) hardLimitTime This is the time that the app will be no longer to use offline. The app must call [authorize](https://emotiv.gitbook.io/cortex-api/authentication/authorize) API with the Internet connection to be able to continue working with Cortex. The **softLimitTime** will be at least 1 month later from the time the app calls [authorize](https://emotiv.gitbook.io/cortex-api/authentication/authorize) API. The **hardLimitTime** is 7 days after **softLimitTime**. [PreviousOverview of API flow](https://emotiv.gitbook.io/cortex-api/overview-of-api-flow) [NextAuthentication](https://emotiv.gitbook.io/cortex-api/authentication) Last updated 8 days ago --- # Authentication | Cortex API After your application is successfully [connected](https://emotiv.gitbook.io/cortex-api/connecting-to-the-cortex-api) to the Cortex service, you must go through the authentication procedure. First, you should call [getUserLogin](https://emotiv.gitbook.io/cortex-api/authentication/getuserlogin) to check if the user has already logged in though [EMOTIV Launcher](https://emotiv.gitbook.io/emotiv-launcher/) . Then, you must call [requestAccess](https://emotiv.gitbook.io/cortex-api/authentication/requestaccess) to ask the user to approve your application. Finally, call [authorize](https://emotiv.gitbook.io/cortex-api/authentication/authorize) to generate a Cortex token or you can reuse a token that you previously got from this method, if it is not expired. [PreviousOffline support](https://emotiv.gitbook.io/cortex-api/overview-of-api-flow/offline-support) [NextgetUserLogin](https://emotiv.gitbook.io/cortex-api/authentication/getuserlogin) Last updated 8 days ago --- # hasAccessRight | Cortex API Check if your application has been granted access rights or not in [EMOTIV Launcher](https://emotiv.gitbook.io/emotiv-launcher/) . Any application that connects to Cortex must request approval from the user through [EMOTIV Launcher](https://emotiv.gitbook.io/emotiv-launcher/) . See [requestAccess](https://emotiv.gitbook.io/cortex-api/authentication/requestaccess) for details. [](https://emotiv.gitbook.io/cortex-api/authentication/hasaccessright#parameters) Parameters ------------------------------------------------------------------------------------------------- Name Type Required Description clientId `string` yes The client id of your Cortex application clientSecret `string` yes The client secret of your Cortex application [](https://emotiv.gitbook.io/cortex-api/authentication/hasaccessright#result) Result ----------------------------------------------------------------------------------------- The result is an object containing a boolean value "accessGranted" and a message. Name Type Description accessGranted `boolean` True, if the user has already approved your application False, if the user declined your application, or didn't approve it yet message `string` If **accessGranted** is false, then your application should call [requestAccess](https://emotiv.gitbook.io/cortex-api/authentication/requestaccess) If **accessGranted** is true, then no action is required [](https://emotiv.gitbook.io/cortex-api/authentication/hasaccessright#examples) Examples --------------------------------------------------------------------------------------------- Request [](https://emotiv.gitbook.io/cortex-api/authentication/hasaccessright#tab-request) Response [](https://emotiv.gitbook.io/cortex-api/authentication/hasaccessright#tab-response) Copy { "id": 1, "jsonrpc": "2.0", "method": "hasAccessRight", "params": { "clientId": "xxx", "clientSecret": "xxx" } } Copy { "id": 1, "jsonrpc": "2.0", "result": { "accessGranted":true, "message":"The User has granted access right to this application." } } [PreviousrequestAccess](https://emotiv.gitbook.io/cortex-api/authentication/requestaccess) [Nextauthorize](https://emotiv.gitbook.io/cortex-api/authentication/authorize) Last updated 3 years ago --- # Cortex API | System requirements [](https://emotiv.gitbook.io/system-requirements/cortex-api#system-requirements) System requirements --------------------------------------------------------------------------------------------------------- ### [](https://emotiv.gitbook.io/system-requirements/cortex-api#windows) Windows The Windows version of Cortex is build for Intel's x86-64 processors. It cannot run on a 32-bit Windows. Cortex is supported on Windows 8, Windows 10 and Windows 11. Cortex is not supported on Windows 7. Microsoft [ended the support](https://www.microsoft.com/en-us/microsoft-365/windows/end-of-windows-7-support) for Windows 7 in January 2020. #### [](https://emotiv.gitbook.io/system-requirements/cortex-api#support-for-windows-8) Support for Windows 8 Cortex 2.7 is the last version of Cortex to be compatible with Windows 8. Starting with version 3.0, Cortex is compatible with Windows 10 only. However, EMOTIV will still support customers who are using Cortex 2.7 on Windows 8. ### [](https://emotiv.gitbook.io/system-requirements/cortex-api#macos) macOS The macOS version of Cortex is build for Intel's x86-64 processors. However, it is possible to run Cortex on an Apple M1 computer, using the [Rosetta](https://support.apple.com/en-us/HT211861) translation environment provided by Apple. Please make sure you are using Cortex version 2.6.3 or above. ### [](https://emotiv.gitbook.io/system-requirements/cortex-api#linux-ubuntu) Linux Ubuntu The Linux Ubuntu version is currently in Beta. To connect an EMOTIV headset with Bluetooth, you must install and configure the [bluez service](https://ubuntu.com/core/docs/bluez/install-configure/install) . The software [Emotiv PRO](https://www.emotiv.com/emotivpro/) and [Emotiv BCI](https://www.emotiv.com/emotiv-bci/) are not available yet. You cannot login with Facebook. MN8 and Flex are not supported on Ubuntu at the moment. ### [](https://emotiv.gitbook.io/system-requirements/cortex-api#android-and-ios) Android and iOS The iOS and Android versions are currently in Beta. They are only available upon request to the [EMOTIV customer service](https://www.emotiv.com/contact-support/) . The software [Emotiv PRO](https://www.emotiv.com/emotivpro/) and [Emotiv BCI](https://www.emotiv.com/emotiv-bci/) are not available. ### [](https://emotiv.gitbook.io/system-requirements/cortex-api#raspberry-pi) Raspberry Pi The Raspberry Pi version is currently in Beta. To connect an EMOTIV headset with Bluetooth, you must install and configure the [bluez service](https://ubuntu.com/core/docs/bluez/install-configure/install) on Raspberry Pi device. The Bluetooth connection is sometime unstable. If you cannot connect your headset with Bluetooth, then you may have to restart the bluez service, and then restart the Cortex service. Please note that Raspberry Pi allows only one connected headset at a time, you must switch off the current connected headset to be able to connect to a new headset. From version 2.7.1, EMOTIV App from desktop can remotely connect to Cortex running on Raspberry Pi device. From version 3.4.2, EMOTIV Launcher is available on Raspberry Pi device. The software [Emotiv PRO](https://www.emotiv.com/emotivpro/) and [Emotiv BCI](https://www.emotiv.com/emotiv-bci/) are not available for Raspberry Pi device. At present, MN8 and Flex version 2.0 are not compatible and not supported with Raspberry Pi. Our supported version for Raspberry Pi development is the Raspberry Pi model 4B running Raspberry Pi OS Debian version 11. We highly recommend utilizing and developing Cortex on this specific Raspberry Pi version for optimal performance. Please note that our support does not cover any issues arising from not using this recommended Raspberry Pi version. [](https://emotiv.gitbook.io/system-requirements/cortex-api#supported-platforms) Supported platforms --------------------------------------------------------------------------------------------------------- Currently, Cortex is supported on the following platforms: * Windows 10 (64-bit) v1809+ and Windows 11 * macOS 11 or above * Linux Ubuntu 22.04 or above (Beta release, 64-bit only) * iOS 14 or above (Beta release) * Android 8.0 Nougat (API level 24) or above (Beta release) * Raspberry Pi OS - Debian version 11 (Beta release, 32-bit) on Raspberry Pi model 4B You can download the latest version of Cortex on the EMOTIV [website](https://www.emotiv.com/products/emotiv-launcher#download) . [PreviousSystem requirements and supported platforms](https://emotiv.gitbook.io/system-requirements) [NextEMOTIV Launcher](https://emotiv.gitbook.io/system-requirements/launcher) Last updated 1 year ago --- # Headsets | Cortex API After you finish the [authentication](https://emotiv.gitbook.io/cortex-api/authentication) process, your application should start headset scanning to search for EMOTIV headsets, using the method [controlDevice](https://emotiv.gitbook.io/cortex-api/headset/controldevice) with "refresh" command, then use the method [queryHeadsets](https://emotiv.gitbook.io/cortex-api/headset/queryheadsets) to get the discovered headsets. If the headset is not connected to Cortex yet, then you must call [controlDevice](https://emotiv.gitbook.io/cortex-api/headset/controldevice) with "connect" command. See also [Headset object](https://emotiv.gitbook.io/cortex-api/headset/headset-object) for details. [PreviousgetLicenseInfo](https://emotiv.gitbook.io/cortex-api/authentication/getlicenseinfo) [NextcontrolDevice](https://emotiv.gitbook.io/cortex-api/headset/controldevice) Last updated 1 year ago --- # getUserLogin | Cortex API Get the current logged in user. There is no login or logout API in Cortex. Instead, users are required to login through the [EMOTIV Launcher](https://emotiv.gitbook.io/emotiv-launcher/) . [](https://emotiv.gitbook.io/cortex-api/authentication/getuserlogin#parameters) Parameters ----------------------------------------------------------------------------------------------- This method has no parameter. [](https://emotiv.gitbook.io/cortex-api/authentication/getuserlogin#result) Result --------------------------------------------------------------------------------------- The result is an array of objects, each object describes a logged in user. If no user is logged in, then the result is an empty array. Please note that currently, Cortex is a single user system. Only one user can login at a time, so the result contains at most one object. The user object includes these fields: Name Type Description username `string` The EmotivID of the user currentOSUId `string` The id of the current OS account currentOSUsername `string` The user name for currentOSUId loggedInOSUId `string` The id of the OS account used to login in EMOTIV Launcher loggedInOSUsername `string` The user name for loggedInOSUId lastLoginTime `string (ISO datetime)` When this user logged in for the last time. _This field was added in Cortex 2.3.0_ If currentOSUId is equal to loggedInOSUId, then the user is already logged in and can work with Cortex. If currentOSUId is different from loggedInOSUId, then a user is logged into Cortex, but from a different OS account. So the user of the current OS account cannot work with Cortex, and must check EMOTIV Launcher. [](https://emotiv.gitbook.io/cortex-api/authentication/getuserlogin#examples) Examples ------------------------------------------------------------------------------------------- ### [](https://emotiv.gitbook.io/cortex-api/authentication/getuserlogin#no-user-is-logged-in) No user is logged in Request [](https://emotiv.gitbook.io/cortex-api/authentication/getuserlogin#tab-request) Response [](https://emotiv.gitbook.io/cortex-api/authentication/getuserlogin#tab-response) Copy { "id": 1, "jsonrpc": "2.0", "method": "getUserLogin" } Copy { "id": 1, "jsonrpc": "2.0", "result": [] } ### [](https://emotiv.gitbook.io/cortex-api/authentication/getuserlogin#a-user-is-logged-in-from-the-current-os-account) A user is logged in from the current OS account Request [](https://emotiv.gitbook.io/cortex-api/authentication/getuserlogin#tab-request-1) Response [](https://emotiv.gitbook.io/cortex-api/authentication/getuserlogin#tab-response-1) Copy { "id": 1, "jsonrpc": "2.0", "method": "getUserLogin" } Copy { "id": 1, "jsonrpc": "2.0", "result": [{\ "currentOSUId":"501",\ "currentOSUsername":"jsnow",\ "lastLoginTime": "2019-11-28T12:09:17.300+07:00",\ "loggedInOSUId":"501",\ "loggedInOSUsername":"jsnow",\ "username":"jon.snow"\ }] } ### [](https://emotiv.gitbook.io/cortex-api/authentication/getuserlogin#a-user-is-logged-in-from-another-os-account) A user is logged in from another OS account The application is connected to Cortex that belongs to the OS account `501/jsnow`. But someone has already logged in to Cortex from OS account `502/astark` with the EmotivID `aria.stark`. So, the application cannot work with Cortex. Request [](https://emotiv.gitbook.io/cortex-api/authentication/getuserlogin#tab-request-2) Response [](https://emotiv.gitbook.io/cortex-api/authentication/getuserlogin#tab-response-2) Copy { "id": 1, "jsonrpc": "2.0", "method": "getUserLogin" } Copy { "id": 1, "jsonrpc": "2.0", "result": [{\ "currentOSUId":"501",\ "currentOSUsername":"jsnow",\ "lastLoginTime": "2019-11-28T12:09:17.300+07:00",\ "loggedInOSUId":"502",\ "loggedInOSUsername":"astark",\ "username":"aria.stark"\ }] } [PreviousAuthentication](https://emotiv.gitbook.io/cortex-api/authentication) [NextrequestAccess](https://emotiv.gitbook.io/cortex-api/authentication/requestaccess) Last updated 3 years ago --- # requestAccess | Cortex API Request user approval for the current application through [EMOTIV Launcher](https://emotiv.gitbook.io/emotiv-launcher/) . When your application calls this method for the first time, EMOTIV Launcher displays a message to approve your application. You can call this API many times, but EMOTIV Launcher will prompt the user only once. If the user has already approved your application, then this API does nothing. Almost all the methods of the API require that your application was approved in EMOTIV Launcher. These methods will return an error if your application wasn't approved. Any application that connects to Cortex must call this API to request approval from the user through [EMOTIV Launcher](https://emotiv.gitbook.io/emotiv-launcher/) . Most of the methods of the API will fail if the user didn't approve your application. [](https://emotiv.gitbook.io/cortex-api/authentication/requestaccess#parameters) Parameters ------------------------------------------------------------------------------------------------ Name Type Required Description clientId `string` yes The client id of your Cortex application clientSecret `string` yes The client secret of your Cortex application [](https://emotiv.gitbook.io/cortex-api/authentication/requestaccess#result) Result ---------------------------------------------------------------------------------------- The result is an object containing a boolean value "accessGranted" and a message. Name Type Description accessGranted `boolean` True, if the user has already approved your application False, if the user declined your application, or didn't approve it yet message `string` If **accessGranted** is false, then your application should ask the user to check EMOTIV Launcher and approve your application. Then you should wait for a while and call this API again. If **accessGranted** is true, then no action is required. [](https://emotiv.gitbook.io/cortex-api/authentication/requestaccess#examples) Examples -------------------------------------------------------------------------------------------- ### [](https://emotiv.gitbook.io/cortex-api/authentication/requestaccess#application-was-already-approved) Application was already approved Request [](https://emotiv.gitbook.io/cortex-api/authentication/requestaccess#tab-request) Response [](https://emotiv.gitbook.io/cortex-api/authentication/requestaccess#tab-response) Copy { "id": 1, "jsonrpc": "2.0", "method": "requestAccess", "params": { "clientId": "xxx", "clientSecret": "xxx" } } Copy { "id": 1, "jsonrpc": "2.0", "result": { "accessGranted":true, "message":"The User has granted access right to this application." } } ### [](https://emotiv.gitbook.io/cortex-api/authentication/requestaccess#application-is-not-approved-yet-or-declined) Application is not approved yet, or declined Request [](https://emotiv.gitbook.io/cortex-api/authentication/requestaccess#tab-request-1) Response [](https://emotiv.gitbook.io/cortex-api/authentication/requestaccess#tab-response-1) Copy { "id": 1, "jsonrpc": "2.0", "method": "requestAccess", "params": { "clientId": "xxx", "clientSecret": "xxx" } } Copy { "id": 1, "jsonrpc": "2.0", "result": { "accessGranted":false, "message":"The User has not granted access right to this application. Please use Emotiv App to proceed." } } [PreviousgetUserLogin](https://emotiv.gitbook.io/cortex-api/authentication/getuserlogin) [NexthasAccessRight](https://emotiv.gitbook.io/cortex-api/authentication/hasaccessright) Last updated 3 years ago --- # generateNewToken | Cortex API This method uses a Cortex token to generate a new Cortex token. You can use this method to extend the expiration date of a token. See [authorize](https://emotiv.gitbook.io/cortex-api/authentication/authorize) for details. [](https://emotiv.gitbook.io/cortex-api/authentication/generatenewtoken#parameters) Parameters --------------------------------------------------------------------------------------------------- Name Type Required Description cortexToken `string` yes A token returned by [authorize](https://emotiv.gitbook.io/cortex-api/authentication/authorize) clientId `string` yes The client id of your Cortex application clientSecret `string` yes The client secret of your Cortex application [](https://emotiv.gitbook.io/cortex-api/authentication/generatenewtoken#result) Result ------------------------------------------------------------------------------------------- The result is an object containing a field **cortexToken**. Name Type Description cortexToken `string` The new Cortex token of the user [](https://emotiv.gitbook.io/cortex-api/authentication/generatenewtoken#example) Example --------------------------------------------------------------------------------------------- Request [](https://emotiv.gitbook.io/cortex-api/authentication/generatenewtoken#tab-request) Response [](https://emotiv.gitbook.io/cortex-api/authentication/generatenewtoken#tab-response) Copy { "id": 1, "jsonrpc": "2.0", "method": "generateNewToken", "params": { "cortexToken": "xxx", "clientId": "...", "clientSecret": "..." } } Copy { "id": 1, "jsonrpc": "2.0", "result": { "cortexToken": "yyy" } } [Previousauthorize](https://emotiv.gitbook.io/cortex-api/authentication/authorize) [NextgetUserInformation](https://emotiv.gitbook.io/cortex-api/authentication/getuserinformation) Last updated 5 years ago --- # getUserInformation | Cortex API This method returns basic information about the current user. [](https://emotiv.gitbook.io/cortex-api/authentication/getuserinformation#parameters) Parameters ----------------------------------------------------------------------------------------------------- Name Type Required Description cortexToken `string` yes A token returned by [authorize](https://emotiv.gitbook.io/cortex-api/authentication/authorize) [](https://emotiv.gitbook.io/cortex-api/authentication/getuserinformation#result) Result --------------------------------------------------------------------------------------------- The result is an object containing basic information about the user. Name Type Description username `string` The EmotivID of the user firstName `string` The first name of the user lastName `string` The last name of the user licenseAgreement `object` An object that contain information about the EULA agreement [](https://emotiv.gitbook.io/cortex-api/authentication/getuserinformation#examples) Examples ------------------------------------------------------------------------------------------------- Request [](https://emotiv.gitbook.io/cortex-api/authentication/getuserinformation#tab-request) Response [](https://emotiv.gitbook.io/cortex-api/authentication/getuserinformation#tab-response) Copy { "id": 1, "jsonrpc": "2.0", "method": "getUserInformation", "params": { "cortexToken": "xxx" } } Copy { "id": 1, "jsonrpc": "2.0", "result": { "username": "jon.snow", "firstName": "Jon", "lastName": "Snow", "licenseAgreement": { "accepted": true, "licenseUrl": "https://..." } } } [PreviousgenerateNewToken](https://emotiv.gitbook.io/cortex-api/authentication/generatenewtoken) [NextgetLicenseInfo](https://emotiv.gitbook.io/cortex-api/authentication/getlicenseinfo) Last updated 5 years ago --- # getLicenseInfo | Cortex API This method returns information about the license currently used by your application. [](https://emotiv.gitbook.io/cortex-api/authentication/getlicenseinfo#parameters) Parameters ------------------------------------------------------------------------------------------------- Name Type Required Description cortexToken `string` yes A token returned by [authorize](https://emotiv.gitbook.io/cortex-api/authentication/authorize) [](https://emotiv.gitbook.io/cortex-api/authentication/getlicenseinfo#result) Result ----------------------------------------------------------------------------------------- The result is an object containing a **license** object and the **isOnline** flag. Name Type Description license `object` An object containing all the information about the current license isOnline `boolean` True, if Cortex was able to get the license information from the EMOTIV cloud False, if Cortex got the license information for its local cache [](https://emotiv.gitbook.io/cortex-api/authentication/getlicenseinfo#example) Example ------------------------------------------------------------------------------------------- Request [](https://emotiv.gitbook.io/cortex-api/authentication/getlicenseinfo#tab-request) Response [](https://emotiv.gitbook.io/cortex-api/authentication/getlicenseinfo#tab-response) Copy { "id": 1, "jsonrpc": "2.0", "method": "getLicenseInfo", "params": { "cortexToken": "xxx" } } Copy { "id": 1, "jsonrpc": "2.0", "result": { "isOnline":true, "license":{ "applications":["com.emotiv.emotivpro"], "billingFrom":"2018-08-23T07:00:00.000+07:00", "billingTo":"2019-09-23T07:00:00.000+07:00", "deviceInfo":{ "deviceLimit":15, "devicesPerSeat":3, "sessionLimit":{"day":null,"month":null,"year":null} }, "expired":false, "extenderLimit":30, "hardLimitTime":"2019-07-01T06:59:59.999+07:00", "isCommercial":false, "licenseId":"xxx", "licenseName":"PRO license", "localQuota":0, "maxDebit":null, "scopes":["eeg","pm"], "seatCount":5, "sessionCount":0, "softLimitTime":"2019-06-24T06:59:59.999+07:00", "totalDebit":0, "totalRegisteredDevices":1, "validFrom":"2018-08-23T07:00:00.000+07:00", "validTo":"2019-09-24T06:59:59.999+07:00" } } } [PreviousgetUserInformation](https://emotiv.gitbook.io/cortex-api/authentication/getuserinformation) [NextHeadsets](https://emotiv.gitbook.io/cortex-api/headset) Last updated 5 years ago --- # controlDevice | Cortex API This method is to connect or disconnect a headset. It can also refresh the list of available Bluetooth headsets returned by [queryHeadsets](https://emotiv.gitbook.io/cortex-api/headset/queryheadsets) . Please note that connecting and disconnecting a headset can take a few seconds. Before you call [createSession](https://emotiv.gitbook.io/cortex-api/session/createsession) on a headset, make sure that Cortex is connected to this headset. You can use [queryHeadsets](https://emotiv.gitbook.io/cortex-api/headset/queryheadsets) to check the connection status of the headset. This method is not available on iOS. On iOS the user must connect and disconnect the headset in EMOTIV App. [](https://emotiv.gitbook.io/cortex-api/headset/controldevice#parameters) Parameters ----------------------------------------------------------------------------------------- Name Type Required Description command `string` yes The command must be "connect", "disconnect" or "refresh". headset `string` no The id of the headset that you want to connect or disconnect. The headset id is returned by [queryHeadsets](https://emotiv.gitbook.io/cortex-api/headset/queryheadsets) . If the command is "refresh", then you should omit this parameter. mappings `object` no The EEG sensor mapping of the EPOC Flex headset that you want to connect. If the command is not "connect", or if the headset is not an EPOC Flex, then you should omit this parameter. connectionType `string` no If the command is "connect" or "disconnect" then this parameter can be "dongle", "bluetooth" or "usb cable", or you can omit it. If the command is "refresh" then you should omit this parameter. _This parameter was added in Cortex 2.2.1_ ### [](https://emotiv.gitbook.io/cortex-api/headset/controldevice#headset-scanning-flow) Headset Scanning Flow The app must call controlDevice with **"refresh"** command to start headset scanning. The timeout of scanning is around 20s. When the scanning finishes, Cortex will send a [warning with code 142](https://emotiv.gitbook.io/cortex-api/warning-objects) to the app. When received this warning, if the app still want to scan for headsets, simply call controlDevice with "refresh" command again. Please note that headset scanning can affect to data stream quality if headset scanning is running at the same time with data stream subscription, so we recommend app developers to design the app so that we only run headset scanning when necessary. ### [](https://emotiv.gitbook.io/cortex-api/headset/controldevice#epoc-flex-mapping) EPOC Flex mapping The **mappings** parameter is only to connect an EPOC Flex headset. Use this parameter to tell Cortex how you setup the EEG sensors of your EPOC Flex headset. The keys for this object must be chosen from this list: "CMS", "DRL", "LA", "LB", "LC", "LD", "LE", "LF", "LG", "LH", "LJ", "LK", "LL", "LM", "LN", "LO", "LP", "LQ", "RA", "RB", "RC", "RD", "RE", "RF", "RG", "RH", "RJ", "RK", "RL", "RM", "RN", "RO", "RP", "RQ". The keys "CMS" and "DRL" are required. The values are sensor locations from the international 10-20 system: "Cz", "FCz", "Fz", "Afz", "Fpz", "Fp1", "AF3", "AF7", "F9", "F7", "F5", "F3", "F1", "FC1", "C1", "C3", "FC3", "FC5", "FT7", "FT9", "T7", "C5", "TP9", "TP7", "CP5", "CP3", "CP1", "P1", "P3", "P5", "P7", "P9", "PO9", "PO7", "PO3", "O1", "O9", "CPz", "Pz", "POz", "Oz", "Iz", "O10", "O2", "PO4", "PO8", "PO10", "P10", "P8", "P6", "P4", "P2", "CP2", "CP4", "CP6", "TP8", "TP10", "C6", "T8", "FT10", "FT8", "FC6", "FC4", "C4", "C2", "FC2", "F2", "F4", "F6", "F8", "F10", "AF8", "AF4", "Fp2". ### [](https://emotiv.gitbook.io/cortex-api/headset/controldevice#connection-type) Connection Type You can use this parameter together with the **command** "connect", to force Cortex to use the specified connection type. For example, an EPOC+ headset can be connected by dongle or by Bluetooth. If both connections are available on your computer then you may want to set **connectionType** to "dongle" so you don't accidentally connect the headset with Bluetooth. [](https://emotiv.gitbook.io/cortex-api/headset/controldevice#result) Result --------------------------------------------------------------------------------- The result is an object containing these fields: Name Type Description command `string` The command that you set in the request message `string` A success message When the command is "connect", then the result of this method just tells you that the connection is in progress. You must wait for a warning object with [code 104](https://emotiv.gitbook.io/cortex-api/warning-objects#104-headset-connected) to know that the connection is successful. If the connection fails then you will receive a warning with [code 100, 101, 102 or 113](https://emotiv.gitbook.io/cortex-api/warning-objects#100-101-102-113-failed-to-connect-to-a-headset) . Another way to check if the headset is connected or not is to call [queryHeadsets](https://emotiv.gitbook.io/cortex-api/headset/queryheadsets) and then check the status of the headset. [](https://emotiv.gitbook.io/cortex-api/headset/controldevice#examples) Examples ------------------------------------------------------------------------------------- ### [](https://emotiv.gitbook.io/cortex-api/headset/controldevice#refresh-the-list-of-headsets) Refresh the list of headsets Use the **refresh** command to start searching for new Bluetooth headsets. Request [](https://emotiv.gitbook.io/cortex-api/headset/controldevice#tab-request) Response [](https://emotiv.gitbook.io/cortex-api/headset/controldevice#tab-response) Copy { "id": 1, "jsonrpc": "2.0", "method": "controlDevice", "params": { "command": "refresh" } } Copy { "id": 1, "jsonrpc": "2.0", "result": { "command": "refresh", "message": "..." } } Then you will receive a [warning with code 142](https://emotiv.gitbook.io/cortex-api/warning-objects) when scanning is finished. Copy { "jsonrpc": "2.0", "warning": { "code": 142, "message": { "behavior": "Headset discovering complete." } } } ### [](https://emotiv.gitbook.io/cortex-api/headset/controldevice#connect-an-insight-headset) Connect an Insight headset Request [](https://emotiv.gitbook.io/cortex-api/headset/controldevice#tab-request-1) Response [](https://emotiv.gitbook.io/cortex-api/headset/controldevice#tab-response-1) Copy { "id": 1, "jsonrpc": "2.0", "method": "controlDevice", "params": { "command": "connect", "headset": "INSIGHT-12341234" } } Copy { "id": 1, "jsonrpc": "2.0", "result": { "command": "connect", "message": "Start connecting to headset INSIGHT-12341234" } } Then you will receive a warning with code 104 if the connection is successful: Copy { "jsonrpc": "2.0", "warning": { "code": 104, "message": { "headsetId": "INSIGHT-12341234", "behavior": "The headset is connected" } } } ### [](https://emotiv.gitbook.io/cortex-api/headset/controldevice#connect-an-epoc-flex-headset) Connect an Epoc Flex headset Request [](https://emotiv.gitbook.io/cortex-api/headset/controldevice#tab-request-2) Response [](https://emotiv.gitbook.io/cortex-api/headset/controldevice#tab-response-2) Copy { "id": 1, "jsonrpc": "2.0", "method": "controlDevice", "params": { "command": "connect", "headset": "EPOCFLEX-12341234", "mappings": { "CMS": "F3", "DRL": "F5", "LA": "AF3", "LB": "AF7", "RA": "P8" } } } Copy { "id": 1, "jsonrpc": "2.0", "result": { "command": "connect", "message": "..." } } ### [](https://emotiv.gitbook.io/cortex-api/headset/controldevice#disconnect-a-headset) Disconnect a headset Request [](https://emotiv.gitbook.io/cortex-api/headset/controldevice#tab-request-3) Response [](https://emotiv.gitbook.io/cortex-api/headset/controldevice#tab-response-3) Copy { "id": 1, "jsonrpc": "2.0", "method": "controlDevice", "params": { "command": "disconnect", "headset": "EPOCFLEX-12341234" } } Copy { "id": 1, "jsonrpc": "2.0", "result": { "command": "disconnect", "message": "..." } } [PreviousHeadsets](https://emotiv.gitbook.io/cortex-api/headset) [NextqueryHeadsets](https://emotiv.gitbook.io/cortex-api/headset/queryheadsets) Last updated 1 year ago --- # authorize | Cortex API This method is to generate a Cortex access token. Most of the methods of the Cortex API require this token as a parameter. Application can specify the license key and the amount of sessions to be debited from the license and use them locally. ### [](https://emotiv.gitbook.io/cortex-api/authentication/authorize#cortex-token) Cortex token The token is linked to your application. It cannot be used with another application. The token is also linked to the EmotivID of the current user. It cannot be used with another EmotivID. So if the user logs out in [EMOTIV Launcher](https://emotiv.gitbook.io/emotiv-launcher/) , and then logs in with another EmotivID, your application must call this API again to get a new token. Your application can save the Cortex token and reuse it later, within 2 days. Note that it is the responsibility of the application to secure the token. The Cortex token must remain secret. Do NOT share it. It is your responsibility to keep it secure. Once having Cortex token, the app can [work offline with Cortex](https://emotiv.gitbook.io/cortex-api/overview-of-api-flow/offline-support) . ### [](https://emotiv.gitbook.io/cortex-api/authentication/authorize#eula-not-accepted-warning) EULA not accepted warning If the user has not accepted the EULA, then a warning message will be included in the response as well. The user must accept the EULA through EMOTIV Launcher. Before you call this method, the user must approve your application in [EMOTIV Launcher](https://emotiv.gitbook.io/emotiv-launcher/) . See [requestAccess](https://emotiv.gitbook.io/cortex-api/authentication/requestaccess) for details. [](https://emotiv.gitbook.io/cortex-api/authentication/authorize#parameters) Parameters -------------------------------------------------------------------------------------------- Name Type Required Description clientId `string` yes The client id of your Cortex application. clientSecret `string` yes The client secret of your Cortex application. license `string` no A license id. In most cases, you don't need to specify the license id. Cortex will find the appropriate license based on the client id. debit `number` no Number of sessions to debit from the license, so that it can be spent locally without having to authorize again. You need to debit the license only if you want to [activate a session](https://emotiv.gitbook.io/cortex-api/session#session-activation) . The default value is zero. [](https://emotiv.gitbook.io/cortex-api/authentication/authorize#result) Result ------------------------------------------------------------------------------------ The result is an object containing a field **cortexToken**. It may also include a field **warning**, if the user didn't accept the EULA. Name Type Description cortexToken `string` The Cortex token of the user warning `object` Contains a message and the URL to accept the EULA [](https://emotiv.gitbook.io/cortex-api/authentication/authorize#examples) Examples ---------------------------------------------------------------------------------------- Request [](https://emotiv.gitbook.io/cortex-api/authentication/authorize#tab-request) Response [](https://emotiv.gitbook.io/cortex-api/authentication/authorize#tab-response) Copy { "id": 1, "jsonrpc": "2.0", "method": "authorize", "params": { "clientId": "xxx", "clientSecret": "xxx" } } Copy { "id": 1, "jsonrpc": "2.0", "result": { "cortexToken":"xxx", "warning": { "code": 6, "message": "...", "licenseUrl": "https://..." } } } [PrevioushasAccessRight](https://emotiv.gitbook.io/cortex-api/authentication/hasaccessright) [NextgenerateNewToken](https://emotiv.gitbook.io/cortex-api/authentication/generatenewtoken) Last updated 8 days ago --- # queryHeadsets | Cortex API Shows details of any headsets connected to the device via USB dongle, USB cable, or Bluetooth. You can query a specific headset by its id, or you can specify a wildcard for partial matching. [](https://emotiv.gitbook.io/cortex-api/headset/queryheadsets#parameters) Parameters ----------------------------------------------------------------------------------------- Name Type Required Description id `string` No A headset id or a wildcard includeFlexMappings `boolean` No Set this parameter to **true** to include the mapping of each EPOC FLEX headset in the result [headset object](https://emotiv.gitbook.io/cortex-api/headset/headset-object) . For the parameter **id**, you can use these wildcards: Wildcard Filter INSIGHT-\* All Insight headsets EPOC-\* All Epoc headsets EPOCPLUS-\* All Epoc Plus headsets [](https://emotiv.gitbook.io/cortex-api/headset/queryheadsets#result) Result --------------------------------------------------------------------------------- The result is an array of [headset objects](https://emotiv.gitbook.io/cortex-api/headset/headset-object) , or an empty array if no headset matches the request. [](https://emotiv.gitbook.io/cortex-api/headset/queryheadsets#examples) Examples ------------------------------------------------------------------------------------- ### [](https://emotiv.gitbook.io/cortex-api/headset/queryheadsets#query-all-the-headsets) Query all the headsets Request [](https://emotiv.gitbook.io/cortex-api/headset/queryheadsets#tab-request) Response [](https://emotiv.gitbook.io/cortex-api/headset/queryheadsets#tab-response) Copy { "id": 1, "jsonrpc": "2.0", "method": "queryHeadsets" } Copy { "id": 1, "jsonrpc": "2.0", "result": [\ {\ "connectedBy": "dongle",\ "customName": "",\ "dongle": "6ff",\ "firmware": "625",\ "id": "EPOCPLUS-3B9AXXXX",\ "motionSensors": [\ "GYROX",\ "GYROY",\ "GYROZ",\ "ACCX",\ "ACCY",\ "ACCZ",\ "MAGX",\ "MAGY",\ "MAGZ"\ ],\ "sensors": [\ "AF3",\ "F7",\ "F3",\ "FC5",\ "T7",\ "P7",\ "O1",\ "O2",\ "P8",\ "T8",\ "FC6",\ "F4",\ "F8",\ "AF4"\ ],\ "settings": {\ "eegRate": 256,\ "eegRes": 16,\ "memsRate": 64,\ "memsRes": 16,\ "mode": "EPOCPLUS"\ },\ "status": "connected"\ }\ ] } If no headset matches your request, then the result is an empty array. Request [](https://emotiv.gitbook.io/cortex-api/headset/queryheadsets#tab-request-1) Response [](https://emotiv.gitbook.io/cortex-api/headset/queryheadsets#tab-response-1) Copy { "id": 1, "jsonrpc": "2.0", "method": "queryHeadsets" } Copy { "id": 1, "jsonrpc": "2.0", "result": [] } ### [](https://emotiv.gitbook.io/cortex-api/headset/queryheadsets#query-a-headset-by-its-id) Query a headset by its id Request [](https://emotiv.gitbook.io/cortex-api/headset/queryheadsets#tab-request-2) Response [](https://emotiv.gitbook.io/cortex-api/headset/queryheadsets#tab-response-2) Copy { "id": 1, "jsonrpc": "2.0", "method": "queryHeadsets", "params": { "id": "EPOCPLUS-3B9AXXXX" } } Copy { "id": 1, "jsonrpc": "2.0", "result": [\ {\ "connectedBy": "dongle",\ "customName": "",\ "dongle": "6ff",\ "firmware": "625",\ "id": "EPOCPLUS-3B9AXXXX",\ "motionSensors": [\ "GYROX",\ "GYROY",\ "GYROZ",\ "ACCX",\ "ACCY",\ "ACCZ",\ "MAGX",\ "MAGY",\ "MAGZ"\ ],\ "sensors": [\ "AF3",\ "F7",\ "F3",\ "FC5",\ "T7",\ "P7",\ "O1",\ "O2",\ "P8",\ "T8",\ "FC6",\ "F4",\ "F8",\ "AF4"\ ],\ "settings": {\ "eegRate": 256,\ "eegRes": 16,\ "memsRate": 64,\ "memsRes": 16,\ "mode": "EPOCPLUS"\ },\ "status": "connected"\ }\ ] } ### [](https://emotiv.gitbook.io/cortex-api/headset/queryheadsets#query-all-the-insight-headsets) Query all the Insight headsets Request [](https://emotiv.gitbook.io/cortex-api/headset/queryheadsets#tab-request-3) Response [](https://emotiv.gitbook.io/cortex-api/headset/queryheadsets#tab-response-3) Copy { "id": 1, "jsonrpc": "2.0", "method": "queryHeadsets", "params": { "id": "INSIGHT-*" } } Copy { "id": 1, "jsonrpc": "2.0", "result": [\ {\ "id": "INSIGHT-AAAA0000",\ "status": "connected",\ "connectedBy": "dongle",\ "customName": "",\ "dongle": "6ff",\ "firmware": "930",\ "headbandPosition": null,\ "motionSensors": [\ "Q0",\ "Q1",\ "Q2",\ "Q3",\ "ACCX",\ "ACCY",\ "ACCZ",\ "MAGX",\ "MAGY",\ "MAGZ"\ ],\ "sensors": [\ "AF3",\ "T7",\ "Pz",\ "T8",\ "AF4"\ ],\ "settings": {\ "eegRate": 128,\ "eegRes": 14,\ "memsRate": 64,\ "memsRes": 14,\ "mode": "INSIGHT"\ }\ }\ ] } [PreviouscontrolDevice](https://emotiv.gitbook.io/cortex-api/headset/controldevice) [NextupdateHeadset](https://emotiv.gitbook.io/cortex-api/headset/updateheadset) Last updated 1 year ago --- # updateHeadset | Cortex API This method lets you change the settings of an EPOC+ or EPOC X headset. You can configure the EEG sample rate, EEG resolution, motion data sample rate, and motion data resolution. You can check the current settings of a headset using the method [queryHeadsets](https://emotiv.gitbook.io/cortex-api/headset/queryheadsets) . This method is for EPOC+ and EPOC X headsets only. There are no configuration settings for other EMOTIV headsets. Please note that updating the configuration of a headset can take a few seconds. The user must connect the headset to the computer by using a USB cable before calling this method. You can't configure the headset through a wireless connection. You can use [queryHeadsets](https://emotiv.gitbook.io/cortex-api/headset/queryheadsets) to check how the headset is connected. [](https://emotiv.gitbook.io/cortex-api/headset/updateheadset#parameters) Parameters ----------------------------------------------------------------------------------------- Name Type Required Description cortexToken `string` yes A token returned by [authorize](https://emotiv.gitbook.io/cortex-api/authentication/authorize) . headset `string` yes A headset id returned by [queryHeadsets](https://emotiv.gitbook.io/cortex-api/headset/queryheadsets) . setting `object` yes An object containing the setting to apply. See below. The **setting** parameter must be an object with these fields: Name Type Required Description mode `string` yes Must be "EPOC" or "EPOCPLUS". In "EPOC" mode, the EEG resolution is 14 bits. In "EPOCPLUS" mode, the EEG and motion resolutions are 16 bits. eegRate `number` yes The EEG sample rate, in hertz. If the mode is "EPOC", then the EEG rate must be 128. If the mode is "EPOCPLUS", then the EEG rate can be 128 or 256. memsRate `number` yes The motion sample rate, in hertz. If the mode is "EPOC", then the motion rate must be 0. If the mode is "EPOCPLUS", then the motion rate can be 0, 32, 64 or 128. A motion rate of zero means that the motion sensors are disabled. [](https://emotiv.gitbook.io/cortex-api/headset/updateheadset#result) Result --------------------------------------------------------------------------------- The result is an object containing these fields: Name Type Description headsetId `string` The headset id you set in the parameters. message `string` A success message. In Cortex 2.3.0 and earlier, you just need to check the result of the method. If the method doesn't return any error, then it means that the update is successful. However, since Cortex 2.4.0, the result of the method just tells you that the update is in progress. You must wait for a warning object with [code 110 or 111](https://emotiv.gitbook.io/cortex-api/warning-objects#110-headset-update-successful) to know if the update is successful or not. If your configuration is not compatible with a Bluetooth connection then you will receive a warning with [code 112](https://emotiv.gitbook.io/cortex-api/warning-objects#112-headset-configuration-cannot-work-with-bluetooth) . Your configuration will work fine with a USB dongle. To use the headset with a Bluetooth connection, you must set the EEG rate to 128Hz and disable the motion sensors. [](https://emotiv.gitbook.io/cortex-api/headset/updateheadset#examples) Examples ------------------------------------------------------------------------------------- Set the EEG rate to 256 hertz (16 bits) and the motion rate to 64 hertz (16bits) Request [](https://emotiv.gitbook.io/cortex-api/headset/updateheadset#tab-request) Response [](https://emotiv.gitbook.io/cortex-api/headset/updateheadset#tab-response) Copy { "id": 1, "jsonrpc": "2.0", "method": "updateHeadset", "params": { "cortexToken": "xxx", "headsetId": "EPOCPLUS-3B9AXXXX", "setting": { "mode": "EPOCPLUS", "eegRate": 256, "memsRate": 64 } } } Copy { "id": 1, "jsonrpc": "2.0", "result": { "headsetId": "EPOCPLUS-3B9AXXXX", "message": "..." } } Set the EPOC+ headset in EPOC mode, EEG rate at 128 hertz (14 bits) and disable the motion sensors. Request [](https://emotiv.gitbook.io/cortex-api/headset/updateheadset#tab-request-1) Response [](https://emotiv.gitbook.io/cortex-api/headset/updateheadset#tab-response-1) Copy { "id": 1, "jsonrpc": "2.0", "method": "updateHeadset", "params": { "cortexToken": "xxx", "headsetId": "EPOCPLUS-3B9AXXXX", "setting": { "mode": "EPOC", "eegRate": 128, "memsRate": 0 } } } Copy { "id": 1, "jsonrpc": "2.0", "result": { "headsetId": "EPOCPLUS-3B9AXXXX", "message": "..." } } [PreviousqueryHeadsets](https://emotiv.gitbook.io/cortex-api/headset/queryheadsets) [NextupdateHeadsetCustomInfo](https://emotiv.gitbook.io/cortex-api/headset/updateheadsetcustominfo) Last updated 5 years ago --- # Sessions | Cortex API A session is an object that makes the link between your application and an EMOTIV headset. When the user wants to work with a headset, your application should create a session first. Then you can: * subscribe to the [data stream](https://emotiv.gitbook.io/cortex-api/data-subscription) of the headset * create a [record](https://emotiv.gitbook.io/cortex-api/records) and add [markers](https://emotiv.gitbook.io/cortex-api/markers) * use [BCI](https://emotiv.gitbook.io/cortex-api/bci) Your application can open only one session at a time with a given headset. But it can open multiple sessions with multiple headsets. [](https://emotiv.gitbook.io/cortex-api/session#session-lifetime) Session lifetime --------------------------------------------------------------------------------------- A session is created by [createSession](https://emotiv.gitbook.io/cortex-api/session/createsession) and closed by [updateSession](https://emotiv.gitbook.io/cortex-api/session/updatesession) . A session is linked to an application. All the sessions of an application are automatically closed when the application is disconnected from the Cortex service. A session is also closed if the headset is disconnected. A session is a **temporary in-memory object**, it is not persistent. After a session is closed, it is destroyed by Cortex. If you want to create a persistent object, please [create a record](https://emotiv.gitbook.io/cortex-api/records/createrecord) inside your session. See [Records](https://emotiv.gitbook.io/cortex-api/records) for details. [](https://emotiv.gitbook.io/cortex-api/session#session-activation) Session activation ------------------------------------------------------------------------------------------- When you create a session, you can activate it or leave as is. If the session is not activated, then it doesn't use the license of the user. You cannot subscribe to the EEG stream and you are limited to the low resolution performance metrics. You can neither create a [record](https://emotiv.gitbook.io/cortex-api/records) nor [markers](https://emotiv.gitbook.io/cortex-api/markers) . If the session is activated, then it uses the license of the user. Depending on the license scope of the license, you can subscribe to the EEG stream or high resolution performance metrics. If the license has a session quota, then this session will be debited from this quota. Use [querySessions](https://emotiv.gitbook.io/cortex-api/session/querysessions) and check the field **status** to know if a session was activated or not. [PreviousHeadset object](https://emotiv.gitbook.io/cortex-api/headset/headset-object) [NextcreateSession](https://emotiv.gitbook.io/cortex-api/session/createsession) Last updated 5 years ago --- # updateHeadsetCustomInfo | Cortex API This method lets you set the headband position of an EPOC X headset. The headband position is important to interpret the motion data coming from the headset. The motion sensor is located in the headband. So Cortex uses the headband position to know the orientation of the motion sensor. When you [start a record](https://emotiv.gitbook.io/cortex-api/records/createrecord) Cortex saves the current headband position into the record. So you should set the position before starting the record. _This method was added in Cortex 2.4_ [](https://emotiv.gitbook.io/cortex-api/headset/updateheadsetcustominfo#parameters) Parameters --------------------------------------------------------------------------------------------------- Name Type Required Description cortexToken `string` yes A token returned by [authorize](https://emotiv.gitbook.io/cortex-api/authentication/authorize) . headsetId `string` yes A headset id returned by [queryHeadsets](https://emotiv.gitbook.io/cortex-api/headset/queryheadsets) . headbandPosition `string` yes Must be "back" or "top". [](https://emotiv.gitbook.io/cortex-api/headset/updateheadsetcustominfo#result) Result ------------------------------------------------------------------------------------------- The result is an object containing these fields: Name Type Description headsetId `string` The headset id used in the request. customName `string` The custom name of the headset. headbandPosition `string` The position of the headband. Can be "back" or "top". [](https://emotiv.gitbook.io/cortex-api/headset/updateheadsetcustominfo#examples) Examples ----------------------------------------------------------------------------------------------- Request [](https://emotiv.gitbook.io/cortex-api/headset/updateheadsetcustominfo#tab-request) Response [](https://emotiv.gitbook.io/cortex-api/headset/updateheadsetcustominfo#tab-response) Copy { "id": 1, "jsonrpc": "2.0", "method": "updateHeadsetCustomInfo", "params": { "cortexToken": "xxx", "headbandPosition": "top", "headsetId": "EPOCX-12345678" } } Copy { "id": 1, "jsonrpc": "2.0", "result": { "customName": "Epoc 1", "headbandPosition": "top", "headsetId": "EPOCX-12345678", "message": "Update headset customized information successfully." } } [PreviousupdateHeadset](https://emotiv.gitbook.io/cortex-api/headset/updateheadset) [NextsyncWithHeadsetClock](https://emotiv.gitbook.io/cortex-api/headset/syncwithheadsetclock) Last updated 9 days ago --- # createSession | Cortex API This method is to open a session with an EMOTIV headset. To open a session with a headset, the status of the headset must be "connected". If the status is "discovered", then you must call [controlDevice](https://emotiv.gitbook.io/cortex-api/headset/controldevice) to connect the headset. You cannot open a session with a headset connected by a USB cable. You can use [queryHeadsets](https://emotiv.gitbook.io/cortex-api/headset/queryheadsets) to check the status and connection type of the headset. You can use [updateSession](https://emotiv.gitbook.io/cortex-api/session/updatesession) to activate or close a session. See [Sessions](https://emotiv.gitbook.io/cortex-api/session) for details. Make sure the headset has the status "connected" before you call this method. Use [queryHeadsets](https://emotiv.gitbook.io/cortex-api/headset/queryheadsets) to check the status of the headset. [](https://emotiv.gitbook.io/cortex-api/session/createsession#parameters) Parameters ----------------------------------------------------------------------------------------- Name Type Required Description cortexToken `string` yes A token returned by [authorize](https://emotiv.gitbook.io/cortex-api/authentication/authorize) . status `string` yes Must be "open" or "active". headset `string` no A headset id returned by [queryHeadsets](https://emotiv.gitbook.io/cortex-api/headset/queryheadsets) . If you omit this parameter, then Cortex will use the first connected headset. If the status is "open", then the session won't be activated. You can activate the session later by calling [updateSession](https://emotiv.gitbook.io/cortex-api/session/updatesession) . [](https://emotiv.gitbook.io/cortex-api/session/createsession#result) Result --------------------------------------------------------------------------------- The result is a [session object](https://emotiv.gitbook.io/cortex-api/session/session-object) representing the created session. [](https://emotiv.gitbook.io/cortex-api/session/createsession#examples) Examples ------------------------------------------------------------------------------------- Open a session. Request [](https://emotiv.gitbook.io/cortex-api/session/createsession#tab-request) Response [](https://emotiv.gitbook.io/cortex-api/session/createsession#tab-response) Copy { "id": 1, "jsonrpc": "2.0", "method": "createSession", "params": { "cortexToken": "xxx", "headset": "EPOCPLUS-3B9AXXX", "status": "open" } } Copy { "id": 1, "jsonrpc": "2.0", "result": { "appId": "com.jon.snow.winterfell-app", "headset": { "connectedBy": "dongle", "customName": "", "dongle": "6ff", "firmware": "625", "id": "EPOCPLUS-3B9AXXXX", "motionSensors": [\ "GYROX",\ "GYROY",\ "GYROZ",\ "ACCX",\ "ACCY",\ "ACCZ",\ "MAGX",\ "MAGY",\ "MAGZ"\ ], "sensors": [\ "AF3",\ "F7",\ "F3",\ "FC5",\ "T7",\ "P7",\ "O1",\ "O2",\ "P8",\ "T8",\ "FC6",\ "F4",\ "F8",\ "AF4"\ ], "settings": { "eegRate": 256, "eegRes": 16, "memsRate": 64, "memsRes": 16, "mode": "EPOCPLUS" }, "status": "connected" }, "id": "8bfc26de-754b-4c1f-9771-acfd1a7da02c", "license": "", "owner": "jon.snow", "recordIds": [], "recording": false, "started": "2019-05-29T14:18:45.108+07:00", "status": "opened", "stopped": "", "streams": [] } } Open a session and activate it. Request [](https://emotiv.gitbook.io/cortex-api/session/createsession#tab-request-1) Response [](https://emotiv.gitbook.io/cortex-api/session/createsession#tab-response-1) Copy { "id": 1, "jsonrpc": "2.0", "method": "createSession", "params": { "cortexToken": "xxx", "headset": "EPOCPLUS-3B9AXXX", "status": "active" } } Copy { "id": 1, "jsonrpc": "2.0", "result": { } } [PreviousSessions](https://emotiv.gitbook.io/cortex-api/session) [NextupdateSession](https://emotiv.gitbook.io/cortex-api/session/updatesession) Last updated 6 years ago --- # unsubscribe | Cortex API This method is to cancel a subscription that was previously created by the [subscribe](https://emotiv.gitbook.io/cortex-api/data-subscription/subscribe) method. [](https://emotiv.gitbook.io/cortex-api/data-subscription/unsubscribe#parameters) Parameters ------------------------------------------------------------------------------------------------- Name Type Required Description cortexToken `string` yes A token returned by [authorize](https://emotiv.gitbook.io/cortex-api/authentication/authorize) . session `string` yes A session id returned by [createSession](https://emotiv.gitbook.io/cortex-api/session/createsession) . streams `array of strings` yes The data streams you want to unsubscribe to. The parameter **streams** must contain one or more values, chosen from this list: "eeg", "mot", "dev", "pow", "met", "com", "fac", "sys". See [Data Subscription](https://emotiv.gitbook.io/cortex-api/data-subscription) for details. [](https://emotiv.gitbook.io/cortex-api/data-subscription/unsubscribe#result) Result ----------------------------------------------------------------------------------------- The result is an object that includes these fields: Name Type Description success `array of objects` For each stream you successfully unsubscribed to, this array contains an object with the name of the stream. failure `array of objects` For each stream you failed to unsubscribed to, this array contains an object that describes the error. In case of success, you get an object with these fields: Name Type Description streamName `string` The name of the stream. In case of failure, you get an object with these fields: Name Type Description streamName `string` The name of the stream. code `number` The error code. message `string` The error message. [](https://emotiv.gitbook.io/cortex-api/data-subscription/unsubscribe#examples) Examples --------------------------------------------------------------------------------------------- Unsubscribe successfully from the performance metrics and motion streams. Request [](https://emotiv.gitbook.io/cortex-api/data-subscription/unsubscribe#tab-request) Response [](https://emotiv.gitbook.io/cortex-api/data-subscription/unsubscribe#tab-response) Copy { "id": 1, "jsonrpc": "2.0", "method": "unsubscribe", "params": { "cortexToken": "xxx", "session": "c6b52ab2-8828-412c-b1b9-9c48842dc0c2", "streams": ["met","mot"] } } Copy { "id": 1, "jsonrpc": "2.0", "result": { "failure":[], "success":[\ {"streamName":"met"},\ {"streamName":"mot"}\ ] } } [Previoussubscribe](https://emotiv.gitbook.io/cortex-api/data-subscription/subscribe) [NextData sample object](https://emotiv.gitbook.io/cortex-api/data-subscription/data-sample-object) Last updated 6 years ago --- # Session object | Cortex API A session is the link between your application and a headset. You must create a session before you call [subscribe](https://emotiv.gitbook.io/cortex-api/data-subscription/subscribe) to receive data from a headset. See [createSession](https://emotiv.gitbook.io/cortex-api/session/createsession) . [](https://emotiv.gitbook.io/cortex-api/session/session-object#description) Description -------------------------------------------------------------------------------------------- A session object includes these fields: Name Type Description id `string` The id of this session. status `string` Can be "opened", "activated", or "closed". owner `string` The EmotivID of the user. license `string` The id of the license used by this session. Or an empty string if the session wasn't activated. appId `string` The application id of your Cortex app. started `string (ISO datetime)` When this session was created. stopped `string (ISO datetime)` When this session was closed. streams `array of strings` The data streams you subscribed to. See [subscribe](https://emotiv.gitbook.io/cortex-api/data-subscription/subscribe) . recordIds `array of strings` The ids of all the records created by this session. See [createRecord](https://emotiv.gitbook.io/cortex-api/records/createrecord) . recording `boolean` True if a record is currently in progress for this session. False otherwise. headset `object` A [headset object](https://emotiv.gitbook.io/cortex-api/headset/headset-object) . It contains information about the headset linked to this session. ### [](https://emotiv.gitbook.io/cortex-api/session/session-object#status) Status The status is linked to the license. If the session is activated, it will be debited from the quota of the user's license. Status Description opened The session was created with [createSession](https://emotiv.gitbook.io/cortex-api/session/createsession) , but it doesn't use a license. You can activate or close this session with [updateSession](https://emotiv.gitbook.io/cortex-api/session/updatesession) . activated The session was activated with a license. You can close this session with [updateSession](https://emotiv.gitbook.io/cortex-api/session/updatesession) . closed This session is closed, you cannot use it anymore. [](https://emotiv.gitbook.io/cortex-api/session/session-object#examples) Examples -------------------------------------------------------------------------------------- A session with an Epoc+ headset. It is not activated. We subscribed to the performance metrics and motion data. Copy { "id": "8bfc26de-754b-4c1f-9771-acfd1a7da02c", "status": "opened", "owner": "jon.snow", "license": "", "appId": "com.jon.snow.winterfell-app", "started": "2019-05-29T14:18:45.108+07:00", "stopped": "", "headset": { "status": "connected" "connectedBy": "dongle", "customName": "", "dongle": "6ff", "firmware": "625", "id": "EPOCPLUS-3B9AXXXX", "motionSensors": [\ "GYROX",\ "GYROY",\ "GYROZ",\ "ACCX",\ "ACCY",\ "ACCZ",\ "MAGX",\ "MAGY",\ "MAGZ"\ ], "sensors": [\ "AF3",\ "F7",\ "F3",\ "FC5",\ "T7",\ "P7",\ "O1",\ "O2",\ "P8",\ "T8",\ "FC6",\ "F4",\ "F8",\ "AF4"\ ], "settings": { "eegRate": 256, "eegRes": 16, "memsRate": 64, "memsRes": 16, "mode": "EPOCPLUS" } }, "recordIds": [], "recording": false, "streams": ["met","mot"] } [PreviousquerySessions](https://emotiv.gitbook.io/cortex-api/session/querysessions) [NextData Subscription](https://emotiv.gitbook.io/cortex-api/data-subscription) Last updated 6 years ago --- # querySessions | Cortex API This method returns the list of the sessions created by the current application. You can create a session with [createSession](https://emotiv.gitbook.io/cortex-api/session/createsession) . **New in 2.0:** Sessions are now temporary in-memory objects. So this methods only returns the current sessions, not your past sessions. See [Sessions](https://emotiv.gitbook.io/cortex-api/session) for details. [](https://emotiv.gitbook.io/cortex-api/session/querysessions#parameters) Parameters ----------------------------------------------------------------------------------------- Name Type Required Description cortexToken `string` yes A token returned by [authorize](https://emotiv.gitbook.io/cortex-api/authentication/authorize) . [](https://emotiv.gitbook.io/cortex-api/session/querysessions#result) Result --------------------------------------------------------------------------------- The result is an array of [session objects](https://emotiv.gitbook.io/cortex-api/session/session-object) . [](https://emotiv.gitbook.io/cortex-api/session/querysessions#example) Example ----------------------------------------------------------------------------------- Request [](https://emotiv.gitbook.io/cortex-api/session/querysessions#tab-request) Response [](https://emotiv.gitbook.io/cortex-api/session/querysessions#tab-response) Copy { "id": 1, "jsonrpc": "2.0", "method": "querySessions", "params": { "cortexToken": "xxx" } } Copy { "id": 1, "jsonrpc": "2.0", "result": [{\ "id": "8bfc26de-754b-4c1f-9771-acfd1a7da02c",\ "owner": "jon.snow",\ "license": "",\ "appId": "com.jon.snow.winterfell-app",\ "started": "2019-01-29T14:18:45.108+07:00",\ "stopped": "",\ "status": "opened",\ "headset": {\ "connectedBy": "dongle",\ "customName": "",\ "dongle": "6ff",\ "firmware": "625",\ "id": "EPOCPLUS-3B9AXXXX",\ "motionSensors": [\ "GYROX",\ "GYROY",\ "GYROZ",\ "ACCX",\ "ACCY",\ "ACCZ",\ "MAGX",\ "MAGY",\ "MAGZ"\ ],\ "sensors": [\ "AF3",\ "F7",\ "F3",\ "FC5",\ "T7",\ "P7",\ "O1",\ "O2",\ "P8",\ "T8",\ "FC6",\ "F4",\ "F8",\ "AF4"\ ],\ "settings": {\ "eegRate": 256,\ "eegRes": 16,\ "memsRate": 64,\ "memsRes": 16,\ "mode": "EPOCPLUS"\ },\ "status": "connected"\ },\ "recordIds": [],\ "recording": false,\ "streams": ["met"]\ }] } [PreviousupdateSession](https://emotiv.gitbook.io/cortex-api/session/updatesession) [NextSession object](https://emotiv.gitbook.io/cortex-api/session/session-object) Last updated 6 years ago --- # updateSession | Cortex API This method is to activate or close a session. See [Sessions](https://emotiv.gitbook.io/cortex-api/session) for details. [](https://emotiv.gitbook.io/cortex-api/session/updatesession#parameters) Parameters ----------------------------------------------------------------------------------------- Name Type Required Description cortexToken `string` yes The token returned by [authorize](https://emotiv.gitbook.io/cortex-api/authentication/authorize) . session `string` yes A session id returned by [createSession](https://emotiv.gitbook.io/cortex-api/session/createsession) . status `string` yes Must be "active" or "close". [](https://emotiv.gitbook.io/cortex-api/session/updatesession#result) Result --------------------------------------------------------------------------------- The result is a [session object](https://emotiv.gitbook.io/cortex-api/session/session-object) representing the updated session. [](https://emotiv.gitbook.io/cortex-api/session/updatesession#examples) Examples ------------------------------------------------------------------------------------- ### [](https://emotiv.gitbook.io/cortex-api/session/updatesession#activate-a-session) Activate a session Request [](https://emotiv.gitbook.io/cortex-api/session/updatesession#tab-request) Response [](https://emotiv.gitbook.io/cortex-api/session/updatesession#tab-response) Copy { "id": 1, "jsonrpc": "2.0", "method": "updateSession", "params": { "cortexToken": "xxx", "session": "38fef6d7-979b-420b-aa25-dd60ef5edc02", "status": "active" } } Copy { "id": 1, "jsonrpc": "2.0", "result": { "id": "38fef6d7-979b-420b-aa25-dd60ef5edc02", "status":"activated", ... } } ### [](https://emotiv.gitbook.io/cortex-api/session/updatesession#close-a-session) Close a session Request [](https://emotiv.gitbook.io/cortex-api/session/updatesession#tab-request-1) Response [](https://emotiv.gitbook.io/cortex-api/session/updatesession#tab-response-1) Copy { "id": 1, "jsonrpc": "2.0", "method": "updateSession", "params": { "cortexToken": "xxx", "session": "38fef6d7-979b-420b-aa25-dd60ef5edc02", "status": "close" } } Copy { "id": 1, "jsonrpc": "2.0", "result": { "appId": "com.jon.snow.winterfell-app", "headset": { "connectedBy": "dongle", "customName": "", "dongle": "6ff", "firmware": "925", "id": "INSIGHT-5A68XXXX", "motionSensors": [\ "GYROX",\ "GYROY",\ "GYROZ",\ "ACCX",\ "ACCY",\ "ACCZ",\ "MAGX",\ "MAGY",\ "MAGZ"\ ], "sensors": [\ "AF3",\ "T7",\ "Pz",\ "T8",\ "AF4"\ ], "settings": { "eegRate": 128, "eegRes": 14, "memsRate": 128, "memsRes": 14, "mode": "UNKNOWN" }, "status": "connected" }, "id": "38fef6d7-979b-420b-aa25-dd60ef5edc02", "license": "xxx", "owner": "jon.snow", "recordIds": [\ "d8fe7658-71f1-4cd6-bb5d-f6775b03438f"\ ], "recording": false, "started": "2019-06-06T11:41:53.168+07:00", "status": "closed", "stopped": "2019-06-06T11:42:23.531+07:00", "streams": [] } } [PreviouscreateSession](https://emotiv.gitbook.io/cortex-api/session/createsession) [NextquerySessions](https://emotiv.gitbook.io/cortex-api/session/querysessions) Last updated 6 years ago --- # syncWithHeadsetClock | Cortex API This method lets you synchronize the monotonic clock of your application with the monotonic clock of Cortex. It is an important step if you want to [inject markers](https://emotiv.gitbook.io/cortex-api/markers/injectmarker) with a high precision. Cortex uses a different clock for each headset and it initializes this clock when the headset is connected by Bluetooth or USB dongle. This means that: * You must call “syncWithHeadsetClock” after the headset is connected, not before. * You must provide a headset id. * If the headset is disconnected and connected again, then you must call this method again. The simplest solution is to call this method just before [creating a record](https://emotiv.gitbook.io/cortex-api/records/createrecord) . [](https://emotiv.gitbook.io/cortex-api/headset/syncwithheadsetclock#use-case) Use Case -------------------------------------------------------------------------------------------- Cortex sets the timestamps of each EEG sample using the [monotonic clock](https://itnext.io/as-a-software-developer-why-should-you-care-about-the-monotonic-clock-7d9c8533595c) of the computer. It is more reliable than using the system clock, because the system clock is subject to unpredictable variations, notably because of the [NTP](https://en.wikipedia.org/wiki/Network_Time_Protocol) synchronization. When you [add a marker](https://emotiv.gitbook.io/cortex-api/markers/injectmarker) to a record, Cortex uses the parameter "time" of your request to associate the marker with the EEG sample that has the closest timestamp. So if you want to have accurate markers, you should set the time of your markers using the monotonic clock, not the system clock. Most programing languages provide a function to get a monotonic time. But in general, the point of origin of this time is undefined. So you need to synchronize the monotonic clock of your application with the monotonic clock used by Cortex. This is the purpose of this Cortex API method. [](https://emotiv.gitbook.io/cortex-api/headset/syncwithheadsetclock#parameters) Parameters ------------------------------------------------------------------------------------------------ This method takes 3 parameters: Name Type Required Description headset `string` yes The headset id. Use [queryHeadset](https://emotiv.gitbook.io/cortex-api/headset/queryheadsets) to list available headsets. monotonicTime `number` yes The monotonic time of your application. The unit is in seconds. The origin can be anything. You should get this time right before you call this API. systemTime `number` yes The system time of your application. It must be the number of seconds that have elapsed since 00:00:00 Thursday, 1 January 1970 UTC. You should get this time right before you call this API. [](https://emotiv.gitbook.io/cortex-api/headset/syncwithheadsetclock#result) Result ---------------------------------------------------------------------------------------- The result is a JSON object with these fields: Name Type Description headset `string` The headset id. adjustment `number` The difference between the monotonic clock of your application and the monotonic clock of the headset. The unit is in seconds. To synchronize your clock, you must add the “adjustment” to your monotonic times. If the “adjustment” is positive, then it means your clock is late compared to the Cortex clock. If the “adjustment” is negative, then your clock is ahead of the Cortex clock. [](https://emotiv.gitbook.io/cortex-api/headset/syncwithheadsetclock#example) Example ------------------------------------------------------------------------------------------ Request [](https://emotiv.gitbook.io/cortex-api/headset/syncwithheadsetclock#tab-request) Response [](https://emotiv.gitbook.io/cortex-api/headset/syncwithheadsetclock#tab-response) Copy { "id": 1, "jsonrpc": "2.0", "method": "syncWithHeadsetClock", "params": { "headset": "INSIGHT-587XX4BB", "monotonicTime": 321.445, "systemTime": 1629978090.302 } } Copy { "id": 1, "jsonrpc": "2.0", "result": { "adjustment": 1629977768.86108, "headset": "INSIGHT-587XX4BB" } } [PreviousupdateHeadsetCustomInfo](https://emotiv.gitbook.io/cortex-api/headset/updateheadsetcustominfo) [NextHeadset object](https://emotiv.gitbook.io/cortex-api/headset/headset-object) Last updated 3 years ago --- # Records | Cortex API After you opened a [session](https://emotiv.gitbook.io/cortex-api/session) with a headset, you can create a record. A record is a permanent object to store data from an EMOTIV headset. You can associate a [subject](https://emotiv.gitbook.io/cortex-api/subjects) to a record. You can add one or more [markers](https://emotiv.gitbook.io/cortex-api/markers) to a record. Unlike a [session](https://emotiv.gitbook.io/cortex-api/session) , a record is a permanent object. It is stored on the hard drive and then can be synchronized to the EMOTIV cloud. The [opt-out](https://emotiv.gitbook.io/cortex-api/records/configoptout) configuration can let you decide if the records of a user are uploaded to the cloud or not. [](https://emotiv.gitbook.io/cortex-api/records#record-lifetime) Record lifetime ------------------------------------------------------------------------------------- First, you must [open a session](https://emotiv.gitbook.io/cortex-api/session/createsession) with a headset. Then you call [createRecord](https://emotiv.gitbook.io/cortex-api/records/createrecord) to start a new record. When the record is in progress, you can add [markers](https://emotiv.gitbook.io/cortex-api/markers) to this record. You stop a record with [updateRecord](https://emotiv.gitbook.io/cortex-api/records/updaterecord) . The record is linked to the session, so if you close the session, or if your application is disconnected from the Cortex service, then Cortex will automatically close the record. After you stop the record you can export its data to a CSV or EDF file using [exportRecord](https://emotiv.gitbook.io/cortex-api/records/exportrecord) . [PreviousData sample object](https://emotiv.gitbook.io/cortex-api/data-subscription/data-sample-object) [NextcreateRecord](https://emotiv.gitbook.io/cortex-api/records/createrecord) Last updated 5 years ago --- # Insight User Manual | INSIGHT Manual ![](https://emotiv.gitbook.io/insight-manual/~gitbook/image?url=https%3A%2F%2Flh5.googleusercontent.com%2FEeJjNXVvnmTsTGNKOs5F4AFrZquy5bn8rvJYAzUOdyKyQY61o4vUdbe8XWBz8_FS0nmbfJewD3MdYZgYx8iiolmlFjOv92i1IVV_ogIp9qZrURrQuix_WxI7s_Fe6HkeN2TnWUUk&width=768&dpr=4&quality=100&sign=5f5d640d&sv=2) EMOTIV INSIGHT This document is intended to help you get started using the EMOTIV INSIGHT our 5-channel, prosumer EEG system using semi-dry polymer sensors. Designed for self-quantification, brain-computer interface, and field research, EMOTIV INSIGHT 5-channel mobile EEG boasts advanced electronics that are fully optimised to produce clean, robust signals anytime, anywhere. If you have any queries beyond the scope of this document, please contact us through our [online support](https://www.emotiv.com/contact-support/) . EMOTIV products are intended to be used for research applications and personal use only. Our products are not sold as Medical Devices as defined in EU directive 93/42/EEC. Our products are not designed or intended to be used for diagnosis or treatment of disease. [NextTechnical Specifications](https://emotiv.gitbook.io/insight-manual/introduction/technical-specifications) Last updated 5 years ago --- # Markers | Cortex API A marker is to mark a point in time, or a period of time, inside a [record](https://emotiv.gitbook.io/cortex-api/records) . Markers are always linked to a record, so you must start a record before you add a marker. You can't add nor update a marker after the record is stopped. You can associate some data to each marker, like a value and a label. There are two types of markers: * An instance marker is to mark a point in time. You call [injectMarker](https://emotiv.gitbook.io/cortex-api/markers/injectmarker) to create the marker at a specific timestamp. * An interval marker is to mark a period of time, with a beginning and an end. First you create an instance marker with [injectMarker](https://emotiv.gitbook.io/cortex-api/markers/injectmarker) . This sets the beginning of the interval. Then you call [updateMarker](https://emotiv.gitbook.io/cortex-api/markers/updatemarker) to set the end of the interval, turning the instance marker into an interval marker. [PreviousRecord object](https://emotiv.gitbook.io/cortex-api/records/record-object) [NextinjectMarker](https://emotiv.gitbook.io/cortex-api/markers/injectmarker) Last updated 6 years ago --- # createRecord | Cortex API This method is to create a new record. You must create and activate a session before you call this method. See [createSession](https://emotiv.gitbook.io/cortex-api/session/createsession) for details. [](https://emotiv.gitbook.io/cortex-api/records/createrecord#parameters) Parameters ---------------------------------------------------------------------------------------- Name Type Required Description cortexToken `string` yes A token returned by [authorize](https://emotiv.gitbook.io/cortex-api/authentication/authorize) . session `string` yes A session id returned by [createSession](https://emotiv.gitbook.io/cortex-api/session/createsession) . title `string` yes The title of the record. Must be 200 characters or less. description `string` no The description of the record. subjectName `string` no The name of a subject created by [createSubject](https://emotiv.gitbook.io/cortex-api/subjects/createsubject) . The subject is the person wearing the headset during the record. If you omit this field, then Cortex assumes that the [current user](https://emotiv.gitbook.io/cortex-api/authentication/getuserlogin) is using the headset. tags `array of strings` no A list of tags you can associate to this record. You can use [queryRecords](https://emotiv.gitbook.io/cortex-api/records/queryrecords) to search the records by tags. experimentId `number (integer)` no An experiment id you can associate to this record. If you omit this parameter then the experimentId of the record will be zero. _This parameter was added in Cortex 2.2.1_ [](https://emotiv.gitbook.io/cortex-api/records/createrecord#result) Result -------------------------------------------------------------------------------- The result is an object containing two fields: Name Type Description record `object` A [record object](https://emotiv.gitbook.io/cortex-api/records/record-object) that represents the created record. sessionId `string` The id of the session this record is linked to. [](https://emotiv.gitbook.io/cortex-api/records/createrecord#examples) Examples ------------------------------------------------------------------------------------ Request [](https://emotiv.gitbook.io/cortex-api/records/createrecord#tab-request) Response [](https://emotiv.gitbook.io/cortex-api/records/createrecord#tab-response) Copy { "id": 1, "jsonrpc": "2.0", "method": "createRecord", "params": { "cortexToken": "xxx", "session": "1067dc90-eb17-489b-9514-69cb79ac696c", "title": "Cortex Examples C++" } } Copy { "id": 1, "jsonrpc": "2.0", "result": { "record": { "uuid": "222eb845-bc44-4a01-bf28-07445a7c7e8a", "applicationId": "com.jon.snow.winterfell-app", "applicationVersion": "1.0", "description": "", "endDatetime": "", "experimentId": 0, "licenseId": "xxx", "licenseScope": ["pm","eeg"], "ownerId": "76c3468a-d9c0-428d-81b4-bdac5d63860e", "startDatetime": "2019-05-31T11:06:24.398560+07:00", "tags": [], "title": "Cortex Examples C++" }, "sessionId": "1067dc90-eb17-489b-9514-69cb79ac696c" } } [PreviousRecords](https://emotiv.gitbook.io/cortex-api/records) [NextstopRecord](https://emotiv.gitbook.io/cortex-api/records/stoprecord) Last updated 4 years ago --- # Subjects | Cortex API A subject represents a human being who is the subject of a [record](https://emotiv.gitbook.io/cortex-api/records) , ie the person wearing the headset during the record. A subject is a permanent object. It is stored on the hard drive and then synchronized to the EMOTIV cloud. To associate a subject to a record, you must create the subject first, by calling [createSubject](https://emotiv.gitbook.io/cortex-api/subjects/createsubject) . Then you must specify the subject name when you call [createRecord](https://emotiv.gitbook.io/cortex-api/records/createrecord) . A subject is identified by his/her name. You can call [querySubjects](https://emotiv.gitbook.io/cortex-api/subjects/querysubjects) to list the subjects already created for the current user. [PreviousMarker object](https://emotiv.gitbook.io/cortex-api/markers/marker-object) [NextcreateSubject](https://emotiv.gitbook.io/cortex-api/subjects/createsubject) Last updated 6 years ago --- # Headset object | Cortex API Some methods of the API return one or more headset objects, for example [queryHeadsets](https://emotiv.gitbook.io/cortex-api/headset/queryheadsets) . A [session object](https://emotiv.gitbook.io/cortex-api/session/session-object) also includes a headset object. [](https://emotiv.gitbook.io/cortex-api/headset/headset-object#description) Description -------------------------------------------------------------------------------------------- A headset object include these fields: Name Type Description id `string` The id of this headset. status `string` Can be "discovered", "connecting", or "connected". connectedBy `string` Can be "bluetooth", "dongle", "usb cable", or "extender". dongle `string` The version of the dongle firmware. firmware `string` The version of the headset firmware. motionSensors `array of strings` The names of the motion sensors of this headset. sensors `array of strings` The names of the EEG sensors of this headset. Use the international 10-20 system. settings `object` An object containing the configuration of the EEG and motion data of this headset. flexMappings `object` If the headset is an EPOC Flex, then this field is an object containing information about the mapping of the EEG channels. headbandPosition `string` If the headset is an EPOC X, then this field tells you the position of the headband of this headset. Can be "back" or "top". If the headset is not an EPOC X, then this field is null. See [updateHeadsetCustomInfo](https://emotiv.gitbook.io/cortex-api/headset/updateheadsetcustominfo) for details. _This field was added in Cortex 2.4_ customName `string` The custom name of the headset. The user can set it in EMOTIV App. _This field was added in Cortex 2.4_ ### [](https://emotiv.gitbook.io/cortex-api/headset/headset-object#status) Status When you want to work with a headset, it is important to check its status. Status Description discovered Cortex has detected the headset, but it is not connected. You cannot create a session for a discovered headset. You can call [controlDevice](https://emotiv.gitbook.io/cortex-api/headset/controldevice) to connect the headset. connecting Cortex is trying to connect to this headset. This can take a few seconds. connected Cortex is connected to and receives data from this headset. You can call [createSession](https://emotiv.gitbook.io/cortex-api/session/createsession) and start working with this headset. You can call [controlDevice](https://emotiv.gitbook.io/cortex-api/headset/controldevice) to disconnect the headset. ### [](https://emotiv.gitbook.io/cortex-api/headset/headset-object#settings) Settings The **settings** object include these fields: Name Type Description mode `string` Can be "EPOC", "EPOCPLUS", or "EPOCFLEX" eegRate `number` The EEG sample rate, in hertz. eegRes `number` The EEG resolution, in bits. memsRate `number` The motion data sample rate, in hertz. memsRes `number` The motion data resolution, in bits. For an Epoc+ headset, the mode can be "EPOC" or "EPOCPLUS", depending on its configuration. See [updateHeadset](https://emotiv.gitbook.io/cortex-api/headset/updateheadset) for details. For an Insight or Epoc headset, the mode is always "EPOC". For an Epoc Flex headset, the mode is always "EPOCFLEX". A motion rate of zero means that the motion sensors are disabled. ### [](https://emotiv.gitbook.io/cortex-api/headset/headset-object#flex-mapping) Flex Mapping Currently, the **flexMappings** object contains a single field. It may include more fields in the future. Name Type Description mappings `object` Describe which EEG channel is mapped to which physical connector of EPOC Flex device. The keys are the names of the connectors, the values are the names of the EEG channels. Example: { "CMS": "TP8", "DRL": "P6", "RM": "TP10", "RN": "P4", "RO": "P8" } [](https://emotiv.gitbook.io/cortex-api/headset/headset-object#examples) Examples -------------------------------------------------------------------------------------- ### [](https://emotiv.gitbook.io/cortex-api/headset/headset-object#insight) Insight Copy { "id": "INSIGHT-AAAA0000", "status": "connected", "connectedBy": "dongle", "customName": "", "dongle": "6ff", "firmware": "930", "motionSensors": [\ "Q0",\ "Q1",\ "Q2",\ "Q3",\ "ACCX",\ "ACCY",\ "ACCZ",\ "MAGX",\ "MAGY",\ "MAGZ"\ ], "sensors": [\ "AF3",\ "T7",\ "Pz",\ "T8",\ "AF4"\ ], "settings": { "eegRate": 128, "eegRes": 14, "memsRate": 64, "memsRes": 14, "mode": "INSIGHT" } } ### [](https://emotiv.gitbook.io/cortex-api/headset/headset-object#epoc) Epoc+ Copy { "id": "EPOCPLUS-3B9AXXXX", "status": "connected", "connectedBy": "dongle", "customName": "", "dongle": "6ff", "firmware": "625", "motionSensors": [\ "GYROX",\ "GYROY",\ "GYROZ",\ "ACCX",\ "ACCY",\ "ACCZ",\ "MAGX",\ "MAGY",\ "MAGZ"\ ], "sensors": [\ "AF3",\ "F7",\ "F3",\ "FC5",\ "T7",\ "P7",\ "O1",\ "O2",\ "P8",\ "T8",\ "FC6",\ "F4",\ "F8",\ "AF4"\ ], "settings": { "eegRate": 256, "eegRes": 16, "memsRate": 64, "memsRes": 16, "mode": "EPOCPLUS" } } [PrevioussyncWithHeadsetClock](https://emotiv.gitbook.io/cortex-api/headset/syncwithheadsetclock) [NextSessions](https://emotiv.gitbook.io/cortex-api/session) Last updated 5 years ago --- # updateRecord | Cortex API This method is to update a record. You can update its title, description and its tags. Your application cannot update a record that was created by another application. [](https://emotiv.gitbook.io/cortex-api/records/updaterecord#parameters) Parameters ---------------------------------------------------------------------------------------- Name Type Required Description cortexToken `string` yes A token returned by [authorize](https://emotiv.gitbook.io/cortex-api/authentication/authorize) . record `string` yes A record id returned by [createRecord](https://emotiv.gitbook.io/cortex-api/records/createrecord) . title `string` no The new title of the record. _This parameter was added in Cortex 2.5.0_ description `string` no The new description of the record. Omit this parameter if you don't want to update the description. tags `array of strings` no The new tags of the record.Omit this parameter if you don't want to update the tags. [](https://emotiv.gitbook.io/cortex-api/records/updaterecord#result) Result -------------------------------------------------------------------------------- The result is a [record object](https://emotiv.gitbook.io/cortex-api/records/record-object) . [](https://emotiv.gitbook.io/cortex-api/records/updaterecord#examples) Examples ------------------------------------------------------------------------------------ Update the tags and the description. Request [](https://emotiv.gitbook.io/cortex-api/records/updaterecord#tab-request) Response [](https://emotiv.gitbook.io/cortex-api/records/updaterecord#tab-response) Copy { "id": 1, "jsonrpc": "2.0", "method": "updateRecord", "params": { "cortexToken": "xxx", "record": "d8fe7658-71f1-4cd6-bb5d-f6775b03438f", "description": "My best record ever.", "tags": ["best", "snow", "direwolf"] } } Copy { "id": 1, "jsonrpc": "2.0", "result": { "applicationId": "com.jon.snow.winterfell-app", "applicationVersion": "1.0", "description": "My best record ever.", "endDatetime": "2019-06-06T11:42:23.436191+07:00", "experimentId": 0, "licenseId": "xxx", "licenseScope": ["pm","eeg"], "ownerId": "76c3468a-d9c0-428d-81b4-bdac5d63860e", "startDatetime": "2019-06-06T11:41:53.088632+07:00", "tags": ["best", "snow", "direwolf"], "title": "Cortex Examples C++", "uuid": "d8fe7658-71f1-4cd6-bb5d-f6775b03438f" } } [PreviousstopRecord](https://emotiv.gitbook.io/cortex-api/records/stoprecord) [NextdeleteRecord](https://emotiv.gitbook.io/cortex-api/records/deleterecord) Last updated 5 years ago --- # subscribe | Cortex API This method is to subscribe to one or more data streams. You can call [unsubscribe](https://emotiv.gitbook.io/cortex-api/data-subscription/unsubscribe) to cancel a subscription. After you successfully subscribe to a stream, Cortex will keep sending you [data sample objects](https://emotiv.gitbook.io/cortex-api/data-subscription/data-sample-object) . See [Data Subscription](https://emotiv.gitbook.io/cortex-api/data-subscription) for details. [](https://emotiv.gitbook.io/cortex-api/data-subscription/subscribe#parameters) Parameters ----------------------------------------------------------------------------------------------- Name Type Required Description cortexToken `string` yes A token returned by [authorize](https://emotiv.gitbook.io/cortex-api/authentication/authorize) . session `string` yes A session id returned by [createSession](https://emotiv.gitbook.io/cortex-api/session/createsession) . streams `array of strings` yes The data streams you want to subscribe to. The parameter **streams** must contain one or more values, chosen from this list: "eeg", "mot", "dev", "eq", "pow", "met", "com", "fac", "sys". See [Data Subscription](https://emotiv.gitbook.io/cortex-api/data-subscription) for details. To subscribe to the "eeg" stream, you must have a paid license and [activate](https://emotiv.gitbook.io/cortex-api/session/updatesession) the session. [](https://emotiv.gitbook.io/cortex-api/data-subscription/subscribe#result) Result --------------------------------------------------------------------------------------- The result is an object that includes these fields: Name Type Description success `array of objects` For each stream you successfully subscribed to, this array contains an object that describe the data structure of this stream. failure `array of objects` For each stream you failed to subscribed to, this array contains an object that describes the error. In case of success, you get an object with these fields: Name Type Description streamName `string` The name of the stream. cols `array of strings` The labels of the columns that are part of this stream. sid `string` The session id. Please note that the field **cols** is especially important. This field tells you which values you will get in the data stream, and in which order. See [Data sample object](https://emotiv.gitbook.io/cortex-api/data-subscription/data-sample-object) for details. In case of failure, you get an object with these fields: Name Type Description streamName `string` The name of the stream. code `number` The error code. message `string` The error message. [](https://emotiv.gitbook.io/cortex-api/data-subscription/subscribe#examples) Examples ------------------------------------------------------------------------------------------- Subscribe successfully to motion and performance metrics. Request [](https://emotiv.gitbook.io/cortex-api/data-subscription/subscribe#tab-request) Response [](https://emotiv.gitbook.io/cortex-api/data-subscription/subscribe#tab-response) Copy { "id": 1, "jsonrpc": "2.0", "method": "subscribe", "params": { "cortexToken": "xxx", "session": "f8cb7289-9a92-438b-8281-e5fdffe8166e", "streams": ["met","mot"] } } Copy { "id": 1, "jsonrpc": "2.0", "result": { "failure": [], "success": [\ {\ "cols": ["eng","exc","lex","str","rel","int","foc"],\ "sid": "f8cb7289-9a92-438b-8281-e5fdffe8166e",\ "streamName": "met"\ },\ {\ "cols": [\ "COUNTER_MEMS",\ "INTERPOLATED_MEMS",\ "GYROX",\ "GYROY",\ "GYROZ",\ "ACCX",\ "ACCY",\ "ACCZ",\ "MAGX",\ "MAGY",\ "MAGZ"\ ],\ "sid": "f8cb7289-9a92-438b-8281-e5fdffe8166e",\ "streamName": "mot"\ }\ ] } } Subscribe successfully to performance metrics, but fail to subscribe to raw EEG. Request [](https://emotiv.gitbook.io/cortex-api/data-subscription/subscribe#tab-request-1) Response [](https://emotiv.gitbook.io/cortex-api/data-subscription/subscribe#tab-response-1) Copy { "id": 1, "jsonrpc": "2.0", "method": "subscribe", "params": { "cortexToken": "xxx", "session": "49eb6cb0-9df6-414a-b3e8-cfa17198daa0", "streams": ["met","eeg"] } } Copy { "id": 1, "jsonrpc": "2.0", "result": { "failure": [\ {\ "code": -32016,\ "message": "The stream is unavailable or unsupported.",\ "streamName": "eeg"\ }\ ], "success": [\ {\ "cols": ["eng","exc","lex","str","rel","int","foc"],\ "sid": "49eb6cb0-9df6-414a-b3e8-cfa17198daa0",\ "streamName": "met"\ }\ ] } } [PreviousData Subscription](https://emotiv.gitbook.io/cortex-api/data-subscription) [Nextunsubscribe](https://emotiv.gitbook.io/cortex-api/data-subscription/unsubscribe) Last updated 4 years ago --- # injectMarker | Cortex API This method is to create an "instance" marker to the current record of a session. Then you can call [updateMarker](https://emotiv.gitbook.io/cortex-api/markers/updatemarker) to turn this marker into an "interval" marker. You must call [createRecord](https://emotiv.gitbook.io/cortex-api/records/createrecord) before you call this method. [](https://emotiv.gitbook.io/cortex-api/markers/injectmarker#parameters) Parameters ---------------------------------------------------------------------------------------- Name Type Required Description cortexToken `string` yes A token returned by [authorize](https://emotiv.gitbook.io/cortex-api/authentication/authorize) . session `string` yes A session id returned by [createSession](https://emotiv.gitbook.io/cortex-api/session/createsession) . The marker will be added to the current record of this session. time `number` yes The **start** timestamp of the marker. It is the number of **milliseconds** that have elapsed since 00:00:00 Thursday, 1 January 1970 UTC. value `string or number` yes The value of the marker. It can be a string or an integer. If it is an integer then it must be positive or zero. label `string` yes The label of the marker. port `string` no The port of the marker, or where the marker comes from. Examples: "USB", "Serial", etc... The default value is "Software" extras `object` no Any extra information you want to associate with the marker. [](https://emotiv.gitbook.io/cortex-api/markers/injectmarker#result) Result -------------------------------------------------------------------------------- The result is an object containing these fields: Name Type Description recordId `string` The id of the record this marker was added to. sessionId `string` The id of the session associated to the record. marker `object` A [marker object](https://emotiv.gitbook.io/cortex-api/markers/marker-object) that represents the marker that was created. [](https://emotiv.gitbook.io/cortex-api/markers/injectmarker#examples) Examples ------------------------------------------------------------------------------------ Request [](https://emotiv.gitbook.io/cortex-api/markers/injectmarker#tab-request) Response [](https://emotiv.gitbook.io/cortex-api/markers/injectmarker#tab-response) Copy { "id": 1, "jsonrpc": "2.0", "method": "injectMarker", "params": { "cortexToken": "xxx", "label": "test2", "port": "Cortex Example", "session": "4cbf7554-31bd-4659-ac58-400b823503f0", "time": 1559811461532, "value": 42 } } Copy { "id": 1, "jsonrpc": "2.0", "result": { "marker": { "endDatetime": "2019-06-06T15:57:41.529661+07:00", "extras": {}, "label": "test2", "port": "Cortex Example", "startDatetime": "2019-06-06T15:57:41.529661+07:00", "type": "instance", "uuid": "26fccfd8-e487-4623-910a-1ba8591fcdcf", "value": 42 }, "recordId": "db01c15e-d916-4a7b-9f1d-16295fd1c643", "sessionId": "4cbf7554-31bd-4659-ac58-400b823503f0" } } [PreviousMarkers](https://emotiv.gitbook.io/cortex-api/markers) [NextupdateMarker](https://emotiv.gitbook.io/cortex-api/markers/updatemarker) Last updated 4 years ago --- # stopRecord | Cortex API This method is to stop a record that was previously started by [createRecord](https://emotiv.gitbook.io/cortex-api/records/createrecord) . This will set the end date time of the record to the current date time. [](https://emotiv.gitbook.io/cortex-api/records/stoprecord#parameters) Parameters -------------------------------------------------------------------------------------- Name Type Required Description cortexToken `string` yes A token returned by [authorize](https://emotiv.gitbook.io/cortex-api/authentication/authorize) . session `string` yes The session id you provided when you called [createRecord](https://emotiv.gitbook.io/cortex-api/records/createrecord) . A record is linked to a session. So to close a record, you need to provide the session id. [](https://emotiv.gitbook.io/cortex-api/records/stoprecord#result) Result ------------------------------------------------------------------------------ The result is an object containing these fields: Name Type Description record `object` A [record object](https://emotiv.gitbook.io/cortex-api/records/record-object) . sessionId `string` The session id linked to the record. [](https://emotiv.gitbook.io/cortex-api/records/stoprecord#example) Example -------------------------------------------------------------------------------- Request [](https://emotiv.gitbook.io/cortex-api/records/stoprecord#tab-request) Response [](https://emotiv.gitbook.io/cortex-api/records/stoprecord#tab-response) Copy { "id": 1, "jsonrpc": "2.0", "method": "stopRecord", "params": { "cortexToken": "xxx", "session": "38fef6d7-979b-420b-aa25-dd60ef5edc02" } } Copy { "id": 1, "jsonrpc": "2.0", "result": { "record": { "applicationId": "com.jon.snow.winterfell-app", "applicationVersion": "1.0", "description": "", "endDatetime": "2019-06-06T11:42:23.436191+07:00", "experimentId": 0, "licenseId": "xxx", "licenseScope": ["pm","eeg"], "ownerId": "76c3468a-d9c0-428d-81b4-bdac5d63860e", "startDatetime": "2019-06-06T11:41:53.088632+07:00", "tags": [], "title": "Cortex Examples C++", "uuid": "d8fe7658-71f1-4cd6-bb5d-f6775b03438f" }, "sessionId": "38fef6d7-979b-420b-aa25-dd60ef5edc02" } } [PreviouscreateRecord](https://emotiv.gitbook.io/cortex-api/records/createrecord) [NextupdateRecord](https://emotiv.gitbook.io/cortex-api/records/updaterecord) Last updated 6 years ago --- # deleteRecord | Cortex API This method is to delete one or more records. The records will be deleted from the local computer, but also from the EMOTIV account of the user in the cloud, and from any computer where the user is logged in. Your application cannot delete a record that was created by another application. Deleting a record is **irreversible**. There is **no way** to recover a deleted record. [](https://emotiv.gitbook.io/cortex-api/records/deleterecord#parameters) Parameters ---------------------------------------------------------------------------------------- Name Type Required Description cortexToken `string` yes A token returned by [authorize](https://emotiv.gitbook.io/cortex-api/authentication/authorize) . records `array of strings` yes An array of record ids. [](https://emotiv.gitbook.io/cortex-api/records/deleterecord#result) Result -------------------------------------------------------------------------------- The result is an object that includes these fields: Name Type Description success `array of objects` For each record you successfully deleted, this array contains an object that includes the record id. failure `array of objects` For each record that couldn't be deleted, this array contains an object that describes the error. In case of success, you get an object with these fields: Name Type Description recordId `string` The id of the record that was successfully deleted. In case of failure, you get an object with these fields: Name Type Description recordId `string` The id of the record that couldn't be deleted. code `number` The error code. message `string` The error message. [](https://emotiv.gitbook.io/cortex-api/records/deleterecord#examples) Examples ------------------------------------------------------------------------------------ Deleting two records, including one that has an invalid id. Request [](https://emotiv.gitbook.io/cortex-api/records/deleterecord#tab-request) Response [](https://emotiv.gitbook.io/cortex-api/records/deleterecord#tab-response) Copy { "id": 1, "jsonrpc": "2.0", "method": "deleteRecord", "params": { "cortexToken": "xxx", "records": [\ "d8fe7658-71f1-4cd6-bb5d-f6775b03438f",\ "invalid-id"\ ] } } Copy { "id": 1, "jsonrpc": "2.0", "result": { "success": [\ {"recordId":"d8fe7658-71f1-4cd6-bb5d-f6775b03438f"}\ ], "failure": [\ {"recordId":"invalid-id","code":1234,"message":"..."}\ ] } } [PreviousupdateRecord](https://emotiv.gitbook.io/cortex-api/records/updaterecord) [NextexportRecord](https://emotiv.gitbook.io/cortex-api/records/exportrecord) Last updated 6 years ago --- # Introduction | EmotivBCI Toolbox Welcome to the User Guide for Emotiv-BCI Node-RED Toolbox! [Node-RED](https://nodered.org/) is an open source node based development tool built by IBM which allows you to wire up Internet of Things devices, online services like social media, and robotics like Arduino, without the need to write code. It uses a drag and drop graphical interface and has an ecosystem of over 2000 nodes, including logic nodes, input and output nodes and GUI nodes, that you can combine to create an endless number of integrations that you can deploy on your computer, to the cloud or onto hardware like Arduino. The **Emotiv-BCI Node-RED Toolbox** is a custom library of input nodes for Node-RED which will allow you to interface EMOTIV technology with Node-RED and create a wide variety of brain-computer interface (BCI) integrations, without the need to program. We developed this Toolbox to give the EMOTIV community a way to create various applications for the BCI features of the EMOTIV platform, without the need to be or hire a developer. However, [some technical skills](https://emotiv.gitbook.io/emotivbci-node-red-toolbox/required-skills) will be helpful when installing and using Node-RED. Emotiv-BCI Node-RED Toolbox works on **Mac** and **Windows**. [NextIntegration with EmotivBCI](https://emotiv.gitbook.io/emotivbci-node-red-toolbox/integration-with-emotivbci) Last updated 5 years ago --- # getRecordInfos | Cortex API This method returns a list of records, selected by their id. [](https://emotiv.gitbook.io/cortex-api/records/getrecordinfos#parameters) Parameters ------------------------------------------------------------------------------------------ Name Type Required Description cortexToken `string` yes A token returned by [authorize](https://emotiv.gitbook.io/cortex-api/authentication/authorize) . recordIds `array of strings` yes A list of records id. [](https://emotiv.gitbook.io/cortex-api/records/getrecordinfos#result) Result ---------------------------------------------------------------------------------- The result is an array of [record objects](https://emotiv.gitbook.io/cortex-api/records/record-object) , including the markers of each record. [](https://emotiv.gitbook.io/cortex-api/records/getrecordinfos#examples) Examples -------------------------------------------------------------------------------------- Request [](https://emotiv.gitbook.io/cortex-api/records/getrecordinfos#tab-request) Response [](https://emotiv.gitbook.io/cortex-api/records/getrecordinfos#tab-response) Copy { "id": 1, "jsonrpc": "2.0", "method": "getRecordInfos", "params": { "cortexToken": "xxx", "recordIds": ["db01c15e-d916-4a7b-9f1d-16295fd1c643"] } } Copy { "id": 1, "jsonrpc": "2.0", "result": [{\ "applicationId": "com.jon.snow.winterfell-app",\ "applicationVersion": "1.0",\ "description": "",\ "endDatetime": "2019-06-06T15:57:58.472229+07:00",\ "experimentId": 0,\ "licenseId": "xxx",\ "licenseScope": [\ "pm",\ "eeg"\ ],\ "markers": [\ {\ "endDatetime": "2019-06-06T15:57:33.523627+07:00",\ "extras": {},\ "label": "test1",\ "port": "Cortex Example",\ "startDatetime": "2019-06-06T15:57:33.523627+07:00",\ "type": "instance",\ "uuid": "3e8d3a26-f4bf-486c-8ece-6efb8b739a51",\ "value": 41\ },\ {\ "endDatetime": "2019-06-06T15:57:49.530743+07:00",\ "extras": {},\ "label": "test2",\ "port": "Cortex Example",\ "startDatetime": "2019-06-06T15:57:41.529661+07:00",\ "type": "interval",\ "uuid": "26fccfd8-e487-4623-910a-1ba8591fcdcf",\ "value": 42\ }\ ],\ "ownerId": "76c3468a-d9c0-428d-81b4-bdac5d63860e",\ "startDatetime": "2019-06-06T15:57:28.596410+07:00",\ "subject": {\ "subjectName": "Hodor"\ },\ "tags": [],\ "title": "Cortex Examples C++",\ "uuid": "db01c15e-d916-4a7b-9f1d-16295fd1c643"\ }] } [PreviousqueryRecords](https://emotiv.gitbook.io/cortex-api/records/queryrecords) [NextconfigOptOut](https://emotiv.gitbook.io/cortex-api/records/configoptout) Last updated 5 years ago --- # requestToDownloadRecordData | Cortex API This method is to ask Cortex to download the EEG/motion/CQ/detections data of a record from the EMOTIV cloud. [](https://emotiv.gitbook.io/cortex-api/records/requesttodownloadrecorddata#use-case) Use case --------------------------------------------------------------------------------------------------- Suppose that the user has installed Cortex on 2 computers, named computer A and computer B. On computer A, the user creates a record, and Cortex uploads this record to the EMOTIV cloud. Then, on computer B, Cortex automatically downloads the metadata of this record, ie its name, description, start time, end time, etc... So this record is visible when you call methods like [queryRecord](https://emotiv.gitbook.io/cortex-api/records/queryrecords) or [getRecordInfos](https://emotiv.gitbook.io/cortex-api/records/getrecordinfos) . But Cortex doesn't automatically download the actual data of the record, ie the EEG, motion, CQ, the results of the detections, etc... So you cannot [export](https://emotiv.gitbook.io/cortex-api/records/exportrecord) this record. To download the actual data, you must call the method "requestToDownloadRecordData". [](https://emotiv.gitbook.io/cortex-api/records/requesttodownloadrecorddata#parameters) Parameters ------------------------------------------------------------------------------------------------------- Name Type Required Description cortexToken `string` yes A token returned by [authorize](https://emotiv.gitbook.io/cortex-api/authentication/authorize) . recordIds `array of strings` yes A list of record ids. [](https://emotiv.gitbook.io/cortex-api/records/requesttodownloadrecorddata#result) Result ----------------------------------------------------------------------------------------------- The result is an object with 2 fields: Name Type Description success `array of objects` List of the records that Cortex will start to download. failure `array of objects` List of the records that Cortex will not download. Each object in the success array include these fields: Name Type Description recordId `string` The id of a record that was added to the Cortex download queue. Cortex will now start the download. Each object in the failure array include these fields: Name Type Description recordId `string` The id of a record that Cortex cannot download. code `number` The error code for this record. message `string` The error message for this record. [](https://emotiv.gitbook.io/cortex-api/records/requesttodownloadrecorddata#example) Example ------------------------------------------------------------------------------------------------- Request [](https://emotiv.gitbook.io/cortex-api/records/requesttodownloadrecorddata#tab-request) Response [](https://emotiv.gitbook.io/cortex-api/records/requesttodownloadrecorddata#tab-response) Copy { "id": 1, "jsonrpc": "2.0", "method": "requestToDownloadRecordData", "params": { "cortexToken": "xxx", "recordIds": [\ "33a9aa44-5a90-4881-8613-78493752b86d", \ "3a4b7eb0-3b6c-4e16-a480-cbda8181f092"\ ] } } Copy { "id": 1, "jsonrpc": "2.0", "result": { "failure": [{\ "code": -32186,\ "message": "The record already exists.",\ "recordId": "33a9aa44-5a90-4881-8613-78493752b86d"\ }], "success": [{\ "recordId": "3a4b7eb0-3b6c-4e16-a480-cbda8181f092"\ }] } } [PreviousconfigOptOut](https://emotiv.gitbook.io/cortex-api/records/configoptout) [NextRecord object](https://emotiv.gitbook.io/cortex-api/records/record-object) Last updated 3 years ago --- # Readonly profile | Cortex API If you upgrade from EmotivBCI before v3.6.5, you should notice that we change the format of training profiles so that the existing training profile (i.e. created before v3.6.5) will not be fully supported. We call them readonly profiles which can only run at a live mode and cannot run on training mode. These readonly training profiles only support headsets with 14 EEG channels (i.e. EPOC X and Flex with EPOC X config mapping). [Previoustraining](https://emotiv.gitbook.io/cortex-api/bci/training) [NextAdvanced BCI](https://emotiv.gitbook.io/cortex-api/advanced-bci) Last updated 1 year ago --- # updateMarker | Cortex API This method is to update a marker that was previously created by [injectMarker](https://emotiv.gitbook.io/cortex-api/markers/injectmarker) . This method set the end date time of a marker, turning an "instance" marker into an "interval" marker. You can also update the **extras** object. The marker must belong to a record that is still in progress. You cannot update the marker if the record is already stopped. [](https://emotiv.gitbook.io/cortex-api/markers/updatemarker#parameters) Parameters ---------------------------------------------------------------------------------------- Name Type Required Description cortexToken `string` yes A token returned by [authorize](https://emotiv.gitbook.io/cortex-api/authentication/authorize) . session `string` yes A session id returned by [createSession](https://emotiv.gitbook.io/cortex-api/session/createsession) . markerId `string` yes The id of the marker you want to update. This marker must belong to the current record of the session. time `number` yes The **end** timestamp of the marker. It is the number of **milliseconds** that have elapsed since 00:00:00 Thursday, 1 January 1970 UTC. extras `object` no Any extra information you want to associate with the marker. [](https://emotiv.gitbook.io/cortex-api/markers/updatemarker#result) Result -------------------------------------------------------------------------------- The result is an object containing these fields: Name Type Description recordId `string` The id of the record this marker belongs to. sessionId `string` The id of the session associated to the record. marker `object` A [marker object](https://emotiv.gitbook.io/cortex-api/markers/marker-object) that represents the marker that was updated. [](https://emotiv.gitbook.io/cortex-api/markers/updatemarker#examples) Examples ------------------------------------------------------------------------------------ Request [](https://emotiv.gitbook.io/cortex-api/markers/updatemarker#tab-request) Response [](https://emotiv.gitbook.io/cortex-api/markers/updatemarker#tab-response) Copy { "id": 1, "jsonrpc": "2.0", "method": "updateMarker", "params": { "cortexToken": "xxx", "session": "4cbf7554-31bd-4659-ac58-400b823503f0", "markerId": "26fccfd8-e487-4623-910a-1ba8591fcdcf", "time": 1559811469531 } } Copy { "id": 1, "jsonrpc": "2.0", "result": { "marker": { "endDatetime": "2019-06-06T15:57:49.530743+07:00", "extras": {}, "label": "test2", "port": "Cortex Example", "startDatetime": "2019-06-06T15:57:41.529661+07:00", "type": "interval", "uuid": "26fccfd8-e487-4623-910a-1ba8591fcdcf", "value": 42 }, "recordId": "db01c15e-d916-4a7b-9f1d-16295fd1c643", "sessionId": "4cbf7554-31bd-4659-ac58-400b823503f0" } } [PreviousinjectMarker](https://emotiv.gitbook.io/cortex-api/markers/injectmarker) [NextMarker object](https://emotiv.gitbook.io/cortex-api/markers/marker-object) Last updated 6 years ago --- # Marker object | Cortex API A marker object includes these fields: Name Type Description uuid `string` The id of the marker. type `string` Can be "interval" or "instance". value `string or number` The value you set in [injectMarker](https://emotiv.gitbook.io/cortex-api/markers/injectmarker) . label `string` The label of the marker. port `string` The port of the marker, ie where the marker comes from. Examples: "Software", "Serial", etc... startDatetime `string (ISO date time)` The timestamp you set in [injectMarker](https://emotiv.gitbook.io/cortex-api/markers/injectmarker) . endDatetime `string (ISO date time)` The timestamp you set in [updateMarker](https://emotiv.gitbook.io/cortex-api/markers/updatemarker) . If you didn't call this method, then **endDatetime** is equal to **startDatetime**. extras `object` Can be any extra information you want to associate with this marker. [](https://emotiv.gitbook.io/cortex-api/markers/marker-object#examples) Examples ------------------------------------------------------------------------------------- An instance marker: Copy { "extras": {}, "label": "test2", "port": "Cortex Example", "startDatetime": "2019-06-06T15:57:41.529661+07:00", "endDatetime": "2019-06-06T15:57:41.529661+07:00", "type": "instance", "uuid": "26fccfd8-e487-4623-910a-1ba8591fcdcf", "value": 42 } An interval marker: Copy { "extras": {}, "label": "test2", "port": "Cortex Example", "startDatetime": "2019-06-06T15:57:41.529661+07:00", "endDatetime": "2019-06-06T15:57:49.530743+07:00", "type": "interval", "uuid": "26fccfd8-e487-4623-910a-1ba8591fcdcf", "value": 42 } [PreviousupdateMarker](https://emotiv.gitbook.io/cortex-api/markers/updatemarker) [NextSubjects](https://emotiv.gitbook.io/cortex-api/subjects) Last updated 6 years ago --- # Record object | Cortex API Some methods of the API return one or more record objects, for example [queryRecords](https://emotiv.gitbook.io/cortex-api/records/queryrecords) . [](https://emotiv.gitbook.io/cortex-api/records/record-object#description) Description ------------------------------------------------------------------------------------------- A record object includes these fields: Name Type Description uuid `string` The id of this record. ownerId `string` The id of the user this record belongs to. It is a GUID, it is not the EmotivID of the user. applicationId `string` The id of the application that created this record. applicationVersion `string` The version of the application that created this record. title `string` The title of this record. description `string` The description of this record. tags `array of strings` The tags associated to this record. experimentId `number (integer)` The experiment id associated to this record. startDatetime `string (ISO datetime)` When this record was created. endDatetime `string (ISO datetime)` When this record was stopped. licenseId `string` The id of the license used by this record. licenseScope `array of strings` List of the data streams the license has access to. The scope "eeg" gives access to the raw EEG data. The scope "pm" gives access to the 2 hertz performance metrics. subject `object` This object has a single field "subjectName". It is the subject name used to create this record. You can use [querySubjects](https://emotiv.gitbook.io/cortex-api/subjects/querysubjects) to get more information about the subject. If the record was created without a subject name, then the field "subjectName" contains the EmotivID of the user. localOnly `boolean` If **true** then this record will not be uploaded to the EMOTIV cloud. If **false** then it will be uploaded. headbandPosition `string` If the headset is an EPOC X, then this field tells you the position of the headband of this headset during this record. Can be "back" or "top". If the headset is not an EPOC X, then this field is null. See [updateHeadsetCustomInfo](https://emotiv.gitbook.io/cortex-api/headset/updateheadsetcustominfo) for details. _This field was added in Cortex 2.4_ Depending on how you get the record, it may contains an additional field for the markers: Name Type Description markers `array of objects` A list of [marker objects](https://emotiv.gitbook.io/cortex-api/markers/marker-object) . The markers added to this record. [](https://emotiv.gitbook.io/cortex-api/records/record-object#examples) Examples ------------------------------------------------------------------------------------- Copy { "applicationId": "com.jon.snow.winterfell-app", "applicationVersion": "1.0", "description": "", "startDatetime": "2019-06-06T15:57:28.596410+07:00", "endDatetime": "2019-06-06T15:57:58.472229+07:00", "experimentId": 0, "licenseId": "xxx", "licenseScope": [\ "pm",\ "eeg"\ ], "localOnly": false, "markers": [\ {\ "endDatetime": "2019-06-06T15:57:33.523627+07:00",\ "extras": {},\ "label": "test1",\ "port": "Cortex Example",\ "startDatetime": "2019-06-06T15:57:33.523627+07:00",\ "type": "instance",\ "uuid": "3e8d3a26-f4bf-486c-8ece-6efb8b739a51",\ "value": 41\ },\ {\ "endDatetime": "2019-06-06T15:57:49.530743+07:00",\ "extras": {},\ "label": "test2",\ "port": "Cortex Example",\ "startDatetime": "2019-06-06T15:57:41.529661+07:00",\ "type": "interval",\ "uuid": "26fccfd8-e487-4623-910a-1ba8591fcdcf",\ "value": 42\ }\ ], "ownerId": "76c3468a-d9c0-428d-81b4-bdac5d63860e", "subject": { "subjectName": "Hodor" }, "tags": ["snow", "cold", "winter"], "title": "Cortex Examples C++", "uuid": "db01c15e-d916-4a7b-9f1d-16295fd1c643" } [PreviousrequestToDownloadRecordData](https://emotiv.gitbook.io/cortex-api/records/requesttodownloadrecorddata) [NextMarkers](https://emotiv.gitbook.io/cortex-api/markers) Last updated 5 years ago --- # queryProfile | Cortex API This method returns the list of all the training profiles of the user. [](https://emotiv.gitbook.io/cortex-api/bci/queryprofile#parameters) Parameters ------------------------------------------------------------------------------------ Name Type Required Description cortexToken `string` yes A token returned by [authorize](https://emotiv.gitbook.io/cortex-api/authentication/authorize) . [](https://emotiv.gitbook.io/cortex-api/bci/queryprofile#result) Result ---------------------------------------------------------------------------- The result is an `array of objects` , or an empty array if the user has no profile. Each object includes these fields: uuid `string` The unique ID of this profile. name `string` The name of the profile. readOnly `boolean` If a headset is created before v3.6.5, the profile will become read-only when upgrading to v3.6.5. See [readonly profile](https://emotiv.gitbook.io/cortex-api/bci/readonly-profile) . _This field is available since v3.6.5._ eegChannels `array` The list of EEG channels of a headset with which this profile can be loaded. For example, if `eegChannels` of a profile is \["AF3","T7","Pz","T8","AF4"\], this profile can be loaded for Insight headset. _This field is available since v3.6.5._ [](https://emotiv.gitbook.io/cortex-api/bci/queryprofile#example) Example ------------------------------------------------------------------------------ Request [](https://emotiv.gitbook.io/cortex-api/bci/queryprofile#tab-request) Response [](https://emotiv.gitbook.io/cortex-api/bci/queryprofile#tab-response) Copy { "id": 1, "jsonrpc": "2.0", "method": "queryProfile", "params": { "cortexToken": "xxx" } } Copy { "id": 1, "jsonrpc": "2.0", "result": [\ {\ "uuid":"xxx"\ "name":"Profile A",\ "readOnly":false,\ "eegChannels":["AF3","T7","Pz","T8","AF4"]\ },\ {\ "uuid":"yyy"\ "name":"Profile B",\ "readOnly":true,\ "eegChannels":["AF3","F7","F3","FC5","T7","P7","O1","O2","P8","T8","FC6","F4","F8","AF4"]\ }\ ] } [PreviousBCI](https://emotiv.gitbook.io/cortex-api/bci) [NextgetCurrentProfile](https://emotiv.gitbook.io/cortex-api/bci/getcurrentprofile) Last updated 1 year ago --- # updateSubject | Cortex API This method is to update an existing subject. _This method was added in Cortex 2.1_ [](https://emotiv.gitbook.io/cortex-api/subjects/updatesubject#parameters) Parameters ------------------------------------------------------------------------------------------ Name Type Required Description cortexToken `string` yes A token returned by [authorize](https://emotiv.gitbook.io/cortex-api/authentication/authorize) . subjectName `string` yes The name of the subject. dateOfBirth `string` no The date of birth of the subject. The format must be "YYYY-MM-DD", e.g. "1980-12-25". sex `string` no Must be "M", "F" or "U". These letters stands for male, female and unknown respectively. countryCode `string` no The [Alpha-2 ISO code](https://en.wikipedia.org/wiki/List_of_ISO_3166_country_codes) of the country the subject lives in. state `string` no The state the subject lives in. city `string` no The city the subject lives in. attributes `array of objects` no A list of demographic attribute objects. See [Subject object](https://emotiv.gitbook.io/cortex-api/subjects/subject-object) . A subject is identified by his/her name, so you must provide the name of the subject you want to update. Then you can set one or more of the not required fields to update their value. [](https://emotiv.gitbook.io/cortex-api/subjects/updatesubject#result) Result ---------------------------------------------------------------------------------- The result is a [subject object](https://emotiv.gitbook.io/cortex-api/subjects/subject-object) representing the updated subject. [](https://emotiv.gitbook.io/cortex-api/subjects/updatesubject#examples) Examples -------------------------------------------------------------------------------------- Update the date of birth of a subject. Request [](https://emotiv.gitbook.io/cortex-api/subjects/updatesubject#tab-request) Response [](https://emotiv.gitbook.io/cortex-api/subjects/updatesubject#tab-response) Copy { "id": 1, "jsonrpc": "2.0", "method": "updateSubject", "params": { "cortexToken": "xxx", "subjectName": "Bob Smith", "dateOfBirth": "1978-11-21" } } Copy { "id": 1, "jsonrpc": "2.0", "result": { "attributes": [], "city": "", "countryCode": "", "countryName": "", "dateOfBirth": "1978-11-21", "experimentsCount": 0, "modifiedDatetime": "2019-07-01T11:49:50.332+07:00", "sex": "U", "state": "", "subjectName": "Bob Smith" } } [PreviouscreateSubject](https://emotiv.gitbook.io/cortex-api/subjects/createsubject) [NextdeleteSubjects](https://emotiv.gitbook.io/cortex-api/subjects/deletesubjects) Last updated 5 years ago --- # BCI | Cortex API You can use the Cortex API to develop a brain–computer interface (BCI), using facial expressions, mental commands, or both. Before you start programming your own BCI, it is strongly recommended that you use [EmotivBCI](https://www.emotiv.com/emotiv-bci/) to get familiar with the main BCI features of Cortex. You should also check out the [EmotivBCI Node-RED Toolbox](https://emotiv.gitbook.io/emotivbci-node-red-toolbox/) . To use the BCI features with an EPOC Flex headset, you must use a special EEG mapping. Please see [Data Subscription](https://emotiv.gitbook.io/cortex-api/data-subscription#special-eeg-sensor-mapping-for-epoc-flex) for details. To get the results of the facial expression detection and the mental command detection, you must [subscribe](https://emotiv.gitbook.io/cortex-api/data-subscription/subscribe) to the data streams "fac" and "com" respectively. To use the mental command detection, you must [load](https://emotiv.gitbook.io/cortex-api/bci/setupprofile) a training profile that contains training data for at least one action. For the facial expression detection, the training is optional. [](https://emotiv.gitbook.io/cortex-api/bci#profile) Profile ----------------------------------------------------------------- A profile is a persistent object that stores training data for the facial expression and mental command detections. A profile belongs to a user and is synchronized to the EMOTIV cloud. You can use [queryProfile](https://emotiv.gitbook.io/cortex-api/bci/queryprofile) to list the profiles of the current user. Use [setupProfile](https://emotiv.gitbook.io/cortex-api/bci/setupprofile) to manage the profiles, and also to load or unload a profile for a headset. You can use [training](https://emotiv.gitbook.io/cortex-api/bci/training) to add training data to a profile. Before v3.6.5, a profile can be loaded for both Epoc/Flex and Insight. Since v3.6.5, a profile can only be loaded for Epoc/Flex or Insight since their EEG channels are different. If you upgrade from version before 3.6.5, the existing profiles will become readonly. See [Readonly training profile.](https://emotiv.gitbook.io/cortex-api/bci/readonly-profile) [](https://emotiv.gitbook.io/cortex-api/bci#training-workflow) Training workflow ------------------------------------------------------------------------------------- The training works that same for the mental command detection and the facial expression detection. However, they don't use the same actions, events or controls. So you should call [getDetectionInfo](https://emotiv.gitbook.io/cortex-api/bci/getdetectioninfo) to know what actions, controls and events you can use for each detection. Before you start a training, you must [subscribe](https://emotiv.gitbook.io/cortex-api/data-subscription/subscribe) to the data stream "sys" to receive the training events from Cortex. Then you can follow these steps: 1. Start the training by calling [training](https://emotiv.gitbook.io/cortex-api/bci/training) with the action you want to train and the **control "start".** 2. On the "sys" stream, you receive the **event "started".** 3. After a few seconds, you receive one of these two events: 1. **Event "succeeded",** the training is a success. Now you must accept it or reject it. 2. **Event "failed",** the data collected during the training is of poor quality, you must start over from the beginning. 4. Call [training](https://emotiv.gitbook.io/cortex-api/bci/training) with the **control "accept"** to add the training to the profile. Or you can use the **control "reject"** to reject this training, and then you must start over from the beginning. 5. Cortex sends the **event "completed"** to confirm that the training was successfully completed. 6. You should [save the profile](https://emotiv.gitbook.io/cortex-api/bci/setupprofile) to persist this training. If you unload the profile without saving, then the training is lost. After step 2, but before step 3, you can send the **control "reset"** to cancel the training. The following chart illustrates the flow of BCI training with corresponding request for each step: ![](https://emotiv.gitbook.io/cortex-api/~gitbook/image?url=https%3A%2F%2F2332755068-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LVaLrV9hH1eJbn-6OTd%252F-M8hNm3CF3l2Wrno8JQ2%252F-M8hWfVzqsqzroQcdEpj%252Fcortex-bci-training.jpg%3Falt%3Dmedia%26token%3D889f2842-2a51-4079-a906-cc4663975292&width=768&dpr=4&quality=100&sign=ce708bbc&sv=2) [](https://emotiv.gitbook.io/cortex-api/bci#getting-live-actions) Getting live actions ------------------------------------------------------------------------------------------- The following chart illustrates the streaming of Mental Commands data in live: ![](https://emotiv.gitbook.io/cortex-api/~gitbook/image?url=https%3A%2F%2F2332755068-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LVaLrV9hH1eJbn-6OTd%252F-M8hNm3CF3l2Wrno8JQ2%252F-M8hWoaT1IvbQKDH_o8d%252Fcortex-bci-live.jpg%3Falt%3Dmedia%26token%3D53dd94a1-860a-4c66-9008-5c31b27ec811&width=768&dpr=4&quality=100&sign=3040eb21&sv=2) [PreviousSubject object](https://emotiv.gitbook.io/cortex-api/subjects/subject-object) [NextqueryProfile](https://emotiv.gitbook.io/cortex-api/bci/queryprofile) Last updated 1 year ago --- # Subject object | Cortex API A subject represents a human being who is the subject of a [record](https://emotiv.gitbook.io/cortex-api/records) (ie an experiment). [](https://emotiv.gitbook.io/cortex-api/subjects/subject-object#description) Description --------------------------------------------------------------------------------------------- A subject object includes these fields: Name Type Description subjectName `string` The name of the subject. dateOfBirth `string` The date of birth of the subject. The format is "YYYY-MM-DD", e.g. "1980-12-25". sex `string` Can be "M", "F" or "U". These letters stands for male, female and unknown respectively. experimentsCount `number` countryCode `string` The [Alpha-2 ISO code](https://en.wikipedia.org/wiki/List_of_ISO_3166_country_codes) of the country the subject lives in. countryName `string` The name of the country the subject lives in. state `string` The state the subject lives in. city `string` The city the subject lives in. attributes `array of objects` A list of demographic attribute objects. See below. ### [](https://emotiv.gitbook.io/cortex-api/subjects/subject-object#demographic-attribute-object) Demographic attribute object The field **attributes** is a list of attributes. A demographic attribute is an object with 2 fields: Name Type Required Description name `string` yes The name of the attribute. value `string` yes The value of the attribute. You must call [getDemographicAttributes](https://emotiv.gitbook.io/cortex-api/subjects/getdemographicattributes) to know what are the valid attribute names, and what are the possible values for each attribute. For example, to tell that the subject is right handed, you can add the attribute `**{ "name":"Handedness", "value":"Right"}**` [](https://emotiv.gitbook.io/cortex-api/subjects/subject-object#example) Example ------------------------------------------------------------------------------------- Copy { "attributes": [\ {\ "name": "Handedness",\ "value": "Left"\ },\ {\ "name": "Education",\ "value": "Master's degree"\ }\ ], "city": "London", "countryCode": "GB", "countryName": "", "dateOfBirth": "1980-12-25", "experimentsCount": 3, "modifiedDatetime": "2019-07-01T11:23:11.644+07:00", "sex": "F", "state": "", "subjectName": "Alice Smith" } [PreviousgetDemographicAttributes](https://emotiv.gitbook.io/cortex-api/subjects/getdemographicattributes) [NextBCI](https://emotiv.gitbook.io/cortex-api/bci) Last updated 6 years ago --- # deleteSubjects | Cortex API This method is to delete one or more subjects. Deleting a subject is **irreversible**. There is **no way** to recover a deleted subject. _This method was added in Cortex 2.1_ [](https://emotiv.gitbook.io/cortex-api/subjects/deletesubjects#parameters) Parameters ------------------------------------------------------------------------------------------- Name Type Required Description cortexToken `string` yes A token returned by [authorize](https://emotiv.gitbook.io/cortex-api/authentication/authorize) . subjects `array of strings` yes A list a subject names. A subject is identified by his/her name, so you must provide the name of the subjects you want to delete. [](https://emotiv.gitbook.io/cortex-api/subjects/deletesubjects#result) Result ----------------------------------------------------------------------------------- The result is an object that includes these fields: Name Type Description success `array of objects` For each subject you successfully deleted, this array contains an object with the name of deleted subject. failure `array of objects` For each subject you failed to delete, this array contains an object that describes the error. In case of success, you get an object with these fields: Name Type Description subjectName `string` The name of the deleted subject. In case of failure, you get an object with these fields: Name Type Description subjectName `string` The name of the subject. code `number` The error code. message `string` The error message. [](https://emotiv.gitbook.io/cortex-api/subjects/deletesubjects#examples) Examples --------------------------------------------------------------------------------------- Request [](https://emotiv.gitbook.io/cortex-api/subjects/deletesubjects#tab-request) Response [](https://emotiv.gitbook.io/cortex-api/subjects/deletesubjects#tab-response) Copy { "id": 1, "jsonrpc": "2.0", "method": "deleteSubjects", "params": { "cortexToken": "xxx", "subjects": ["Invalid Name", "Bob Smith"] } } Copy { "id": 1, "jsonrpc": "2.0", "result": { "failure": [\ {\ "code": -32124,\ "message": "The subject was not found.",\ "subjectName": "Invalid Name"\ }\ ], "success": [\ {\ "subjectName": "Bob Smith"\ }\ ] } } . [PreviousupdateSubject](https://emotiv.gitbook.io/cortex-api/subjects/updatesubject) [NextquerySubjects](https://emotiv.gitbook.io/cortex-api/subjects/querysubjects) Last updated 6 years ago --- # configOptOut | Cortex API This method is to configure the opt-out feature for the records. This feature lets you decide if the [records](https://emotiv.gitbook.io/cortex-api/records) created by your application on the local machine are uploaded to the EMOTIV cloud or not. If the opt-out is on (ie the parameter **newOptOut** is true) then the records created on this machine will not be uploaded to the cloud. If the opt-out is off (ie the parameter **newOptOut** is false) then the records created on this machine will be uploaded to the cloud. Please note that changing the opt-out configuration has no effect on the records previously created on the local computer. It only affects the records created after the change. Changing the opt-out configuration is **not retroactive**. The opt-out configuration is linked to your application. Changing the configuration only affects the records created by your application. This has no effect on the records created by other applications. The opt-out configuration is also linked to the EmotivID of the user. The opt-out can be turned on or off for each EmotivID. It is off by default. You can check the field **localOnly** of a [Record object](https://emotiv.gitbook.io/cortex-api/records/record-object) to know if this record will stay on the local machine, or if it will be uploaded to the EMOTIV cloud. Some [licenses](https://emotiv.gitbook.io/cortex-api/authentication/getlicenseinfo) don't let you change the opt-out configuration and force the opt-out to be always on or always off. See the possible configurations below for details. _This method was added in Cortex 2.2.1_ [](https://emotiv.gitbook.io/cortex-api/records/configoptout#parameters) Parameters ---------------------------------------------------------------------------------------- Name Type Required Description cortexToken `string` yes A token returned by [authorize](https://emotiv.gitbook.io/cortex-api/authentication/authorize) . status `string` yes Must be "get" or "set". Use "get" to read the current configuration of the opt-out feature. Use "set" to turn the opt-out on or off. newOptOut `boolean` no If the **status** is "set" then you must set this parameter to true or false, in order to turn the opt-out feature on or off. If the **status** is "get" then you should omit this parameter. [](https://emotiv.gitbook.io/cortex-api/records/configoptout#result) Result -------------------------------------------------------------------------------- The result is an object describing the current opt-out configuration. It includes these fields: Name Type Description optOutAvail `boolean` If **false** then the opt-out is always off. The value of this field depends on the current [license](https://emotiv.gitbook.io/cortex-api/authentication/getlicenseinfo) . Some license force you to upload the records to the cloud. forceOptOut `boolean` If **true** (and **optOutAvail** is also **true**) then the opt-out is always on. The value of this field depends on the current [license](https://emotiv.gitbook.io/cortex-api/authentication/getlicenseinfo) . Some license don't let you upload the records to the cloud. currOptOut `boolean` The current configuration of the opt-out. If this value is **true**, then the records created by your application won't be uploaded to the cloud. If this value is **false**, then they will. message `string` A text message. [](https://emotiv.gitbook.io/cortex-api/records/configoptout#possible-configurations) Possible Configurations ------------------------------------------------------------------------------------------------------------------ Here is an overview of the possible configurations: **optOutAvail** forceOptOut currOptOut Description **true** **false** Variable, **false** by default By default, **currOptOut** is **false** and the records created by your application will be uploaded to the cloud. You can change the opt-out configuration for each EmotivID. **true** **true** Always **true** The records will **never** be uploaded to the cloud. You cannot change the configuration. **false** **false** Always **false** The records will **always** be uploaded to the cloud. You cannot change the configuration. **false** **true** Always **false** The records will **always** be uploaded to the cloud. You cannot change the configuration. [](https://emotiv.gitbook.io/cortex-api/records/configoptout#examples) Examples ------------------------------------------------------------------------------------ ### [](https://emotiv.gitbook.io/cortex-api/records/configoptout#get-the-current-configuration) Get the current configuration Request [](https://emotiv.gitbook.io/cortex-api/records/configoptout#tab-request) Response [](https://emotiv.gitbook.io/cortex-api/records/configoptout#tab-response) Copy { "id": 1, "jsonrpc": "2.0", "method": "configOptOut", "params": { "cortexToken": "xxx", "status": "get" } } Copy { "id": 1, "jsonrpc": "2.0", "result": { "currOptOut": false, "forceOptOut": false, "message": "Get opt-out configuration successfully", "optOutAvail": true } } ### [](https://emotiv.gitbook.io/cortex-api/records/configoptout#change-the-configuration) Change the configuration Request [](https://emotiv.gitbook.io/cortex-api/records/configoptout#tab-request-1) Response [](https://emotiv.gitbook.io/cortex-api/records/configoptout#tab-response-1) Copy { "id": 1, "jsonrpc": "2.0", "method": "configOptOut", "params": { "cortexToken": "xxx", "status": "set", "newOptOut": true } } Copy { "id": 1, "jsonrpc": "2.0", "result": { "currOptOut": true, "forceOptOut": false, "message": "Update opt-out configuration successfully", "optOutAvail": true } } [PreviousgetRecordInfos](https://emotiv.gitbook.io/cortex-api/records/getrecordinfos) [NextrequestToDownloadRecordData](https://emotiv.gitbook.io/cortex-api/records/requesttodownloadrecorddata) Last updated 3 years ago --- # Data Subscription | Cortex API After you opened a [session](https://emotiv.gitbook.io/cortex-api/session) with a headset, you can [subscribe](https://emotiv.gitbook.io/cortex-api/data-subscription/subscribe) to one or more data streams. Each data steam gives you **real time** access to data from the headset (EEG, motion...) or data calculated by Cortex (band powers, mental command...) After you successfully subscribe to a data stream, Cortex will keep sending you [data sample objects](https://emotiv.gitbook.io/cortex-api/data-subscription/data-sample-object) . A subscription is linked to a [session](https://emotiv.gitbook.io/cortex-api/session) . All the subscriptions of a session are automatically cancelled when the session is closed. You can call [unsubscribe](https://emotiv.gitbook.io/cortex-api/data-subscription/unsubscribe) to cancel a subscription. The available data streams depend on the [license](https://emotiv.gitbook.io/cortex-api/authentication/getlicenseinfo) of the user, and the model and [settings](https://emotiv.gitbook.io/cortex-api/headset/updateheadset) of the headset. For an EPOC Flex, it also depends on the EEG sensor mapping. [](https://emotiv.gitbook.io/cortex-api/data-subscription#data-streams) Data streams ----------------------------------------------------------------------------------------- Each data stream is identified by its name: "eeg", "mot", "dev", "eq", "pow", "met", "com", "fac", "sys". Stream Description eeg The raw EEG data from the headset. mot The motion data from the headset. dev The device data from the headset. It includes the battery level, the wireless signal strength, and the contact quality of each EEG sensor. eq The EEG quality of each EEG sensor. Please read this [page](https://emotiv.gitbook.io/cortex-manual/setting_up_your_eeg_device/view_contact_quality_map/contact-quality-cq-vs.-eeg-quality-eq) to understand the difference between the contact quality and the EEG quality. pow The band power of each EEG sensor. It includes the alpha, low beta, high beta, gamma, and theta bands. met The results of the performance metrics detection. com The results of the mental commands detection. You must [load a profile](https://emotiv.gitbook.io/cortex-api/bci/setupprofile) to get meaningful results. fac The results of the facial expressions detection. sys The system events. These events are related to the training of the mental commands and facial expressions. See [BCI](https://emotiv.gitbook.io/cortex-api/bci) for details. [](https://emotiv.gitbook.io/cortex-api/data-subscription#data-streams-availability) Data streams availability ------------------------------------------------------------------------------------------------------------------- Depending on the license and the model of the headset, some streams may be available or not, and may send [data samples objects](https://emotiv.gitbook.io/cortex-api/data-subscription/data-sample-object) at a different rate. Stream Supported headsets Sample rate in hertz eeg All, but requires a license 128 or 256, depends on the headset and its settings. The [license](https://emotiv.gitbook.io/cortex-api/authentication/getlicenseinfo) must contain the scope "eeg". You must activate the [session](https://emotiv.gitbook.io/cortex-api/session) before you subscribe. Please check the [documentation](https://emotiv.gitbook.io/emotiv-home/) of your headset. mot All Disabled, 32, 64, 128, depends on the headset and its settings. 6.4 hertz for MN8. Please check the [documentation](https://emotiv.gitbook.io/emotiv-home/) of your headset. dev All 2 eq All 2 pow All 8 met All EPOC Flex requires a special EEG sensor mapping 2 if the license contains the scope "pm" and you activate the [session](https://emotiv.gitbook.io/cortex-api/session) before you subscribe. 0.1 otherwise (1 sample every 10 seconds) com All EPOC Flex requires a special EEG sensor mapping 8 fac All but MN8 EPOC Flex requires a special EEG sensor mapping 32 sys All No fixed rate, see [BCI](https://emotiv.gitbook.io/cortex-api/bci) for details. [](https://emotiv.gitbook.io/cortex-api/data-subscription#special-eeg-sensor-mapping-for-epoc-flex) Special EEG sensor mapping for EPOC Flex ------------------------------------------------------------------------------------------------------------------------------------------------- By default, the streams "met", "com" and "fac" are not available for EPOC Flex. It is because Cortex doesn't implement the detections (performance metrics, mental command, facial expression) for EPOC Flex. However, you can configure your EPOC Flex to simulate an EPOC X headset. In that case, Cortex runs the detections that are designed for EPOC X. All you have to do is to use a sensor mapping that includes all the 14 EEG sensors of an EPOC X headset: AF3, F7, F3, FC5, T7, P7, O1, O2, P8, T8, FC6, F4, F8, AF4. In addition, you should use P3 and P4 as references CMS and DRL. Please see the EPOC X [user manual](https://emotiv.gitbook.io/epoc-x-user-manual/introduction/introduction-to-epoc-x/coverage) for the complete EPOC X configuration. Your mapping can also include sensors that are not present on an EPOC X. Cortex will not use these additional sensors to run the detections, but you can use them to collect more EEG data. You must configure the EEG sensor mapping of your EPOC Flex when you call the method [controlDevice](https://emotiv.gitbook.io/cortex-api/headset/controldevice) . _This feature was added in Cortex 2.7.1_ [PreviousSession object](https://emotiv.gitbook.io/cortex-api/session/session-object) [Nextsubscribe](https://emotiv.gitbook.io/cortex-api/data-subscription/subscribe) Last updated 4 years ago --- # queryRecords | Cortex API This method returns a list of records owned by the current user. By default, you only get the records created by your application. To query the records from another application, you must filter by the license id of this application. [](https://emotiv.gitbook.io/cortex-api/records/queryrecords#parameters) Parameters ---------------------------------------------------------------------------------------- Name Type Required Description cortexToken `string` yes A token returned by [authorize](https://emotiv.gitbook.io/cortex-api/authentication/authorize) . query `object` yes An object to filter the records. orderBy `array of objects` yes Specify how to sort the records. limit `number` no The maximum number of records that this method should return. A limit of zero means no maximum. offset `number` no The number of record that this method should skip before returning the result. If the limit is zero, then Cortex will ignore this parameter. includeMarkers `boolean` no If `true` then the [record objects](https://emotiv.gitbook.io/cortex-api/records/record-object) in the result will include the markers linked to each record. The default value is `false` because a record may have a large number of markers. _This parameter was added in Cortex 2.1_ includeSyncStatusInfo `boolean` no If `true` then the record object in the result will include the field "syncStatus". This field tells you if the record was uploaded to the EMOTIV cloud or not. The default value is `false`. _This parameter was added in Cortex 2.6.3_ Depending on the query, this method may return a lot of records. To avoid performance issues, you should always set an offset and a limit. ### [](https://emotiv.gitbook.io/cortex-api/records/queryrecords#query) query The **query** object can contain one or more of these fields: Name Type Description licenseId `string` Set this parameter to filter the records by their license. applicationId `string` If you set the **licenseId**, then you can set this parameter to further filter the records by application. keyword `string` Set this parameter to filter the records by title, description, or subject name. startDatetime `object` An object with fields "from" and "to" to filter the records by their start date time. modifiedDatetime `object` An object with fields "from" and "to" to filter the records by their modification date time. duration `object` An object with fields "from" and "to" to filter the records by their duration. ### [](https://emotiv.gitbook.io/cortex-api/records/queryrecords#orderby) orderBy The **orderBy** parameters is an array of objects, similar to the orderBy clause of a SQL request. Each object must have a single attribute. The key of the attribute is the name of record's field you want to order by. The value of the attribute must be "ASC" or "DESC", to order is ascending or descending order. For example, to order the records by their start date, in descending order, you must use the object `**{"startDatetime":"DESC"}**`. To sort the records by title, in alphabetical order, you must use `**{"title":"ASC"}**`. You can order the records by these fields: title, description, startDatetime, modifiedDatetime, duration, subjectName, applicationId. _The option to order by applicationId was added in Cortex 2.5.0_ ### [](https://emotiv.gitbook.io/cortex-api/records/queryrecords#limit-and-offset) limit and offset These parameters are to implement pagination. It useful if you want to display the records in a UI. You must order the results to use these parameters. First you should call this method with an **offset** of zero, and a **limit** of X. In the response, check the value of **count.** If **count** is greater than the limit, then you should call this method again with an offset of X. And then with an offset of 2\*X, 3\*X... until you get all the records for your query. [](https://emotiv.gitbook.io/cortex-api/records/queryrecords#result) Result -------------------------------------------------------------------------------- The result is an object that includes these fields: Name Type Description records `array of objects` An array of [record objects](https://emotiv.gitbook.io/cortex-api/records/record-object) . count `number` The total number of records that match the query. limit `number` The limit you specified in the parameters. offset `number` The offset you specified in the parameters. [](https://emotiv.gitbook.io/cortex-api/records/queryrecords#examples) Examples ------------------------------------------------------------------------------------ Get the 10 most recent records created by EmotivPRO. Request [](https://emotiv.gitbook.io/cortex-api/records/queryrecords#tab-request) Response [](https://emotiv.gitbook.io/cortex-api/records/queryrecords#tab-response) Copy { "id": 1, "jsonrpc": "2.0", "method": "queryRecords", "params": { "cortexToken": "xxx", "limit": 10, "offset": 0, "orderBy": [\ { "startDatetime": "DESC" }\ ], "query": { "applicationId": "com.emotiv.emotivpro", "licenseId": "yyy" }, "includeSyncStatusInfo": true } } Copy { "id": 1, "jsonrpc": "2.0", "result": { "count": 1, "limit": 10, "offset": 0, "records": [{\ "applicationId": "com.emotiv.emotivpro",\ "applicationVersion": "2.6.3",\ "demographics": {\ "uuid": "",\ "validated": false\ },\ "description": "A simple experiment with a drone",\ "endDatetime": "2021-01-06T16:32:50.572490+07:00",\ "experimentId": 0,\ "headbandPosition": null,\ "licenseId": "yyy",\ "licenseScope": ["pm", "eeg"],\ "localOnly": false,\ "ownerId": "ddeca960-9336-4a51-a2d2-9cb6e8fd5524",\ "startDatetime": "2021-01-06T16:32:13.431865+07:00",\ "subject": {\ "subjectName": "Ben Kenobi"\ },\ "syncStatus": {\ "status": "neverUploaded"\ },\ "tags": [],\ "title": "Experiment 42",\ "uuid": "1f2a8f85-7200-400a-a8f0-fd5c0b331852"\ }] } } Get some records using a keyword. Request [](https://emotiv.gitbook.io/cortex-api/records/queryrecords#tab-request-1) Response [](https://emotiv.gitbook.io/cortex-api/records/queryrecords#tab-response-1) Copy { "id": 1, "jsonrpc": "2.0", "method": "queryRecords", "params": { "cortexToken": "xxx", "includeMarkers": true, "limit": 2, "offset": 0, "orderBy": [\ {\ "startDatetime": "DESC"\ }\ ], "query": { "keyword": "Cortex Example" } } } Copy { "id": 1, "jsonrpc": "2.0", "result": { "count": 9, "limit": 2, "offset": 0, "records": [\ {\ "applicationId": "com.xxx.cortex-examples",\ "applicationVersion": "1.0",\ "description": "",\ "endDatetime": "2020-03-09T15:59:34.794356+07:00",\ "experimentId": 0,\ "headbandPosition": null,\ "licenseId": "xxx",\ "licenseScope": [\ "pm",\ "eeg"\ ],\ "localOnly": false,\ "markers": [\ {\ "endDatetime": "2020-03-09T15:59:09.680802+07:00",\ "extras": {},\ "label": "test1",\ "port": "Cortex Example",\ "startDatetime": "2020-03-09T15:59:09.680802+07:00",\ "type": "instance",\ "uuid": "ba8ed3a9-3e0b-4a17-9227-96ae05fa1767",\ "value": 41\ },\ {\ "endDatetime": "2020-03-09T15:59:25.873059+07:00",\ "extras": {},\ "label": "test2",\ "port": "Cortex Example",\ "startDatetime": "2020-03-09T15:59:16.867054+07:00",\ "type": "interval",\ "uuid": "2cfe93cc-f242-49d6-8165-7b13147e7c10",\ "value": 42\ }\ ],\ "ownerId": "94f7c5ed-3d24-4c29-8243-96aa7db80d4a",\ "startDatetime": "2020-03-09T15:59:04.344671+07:00",\ "subject": {\ "subjectName": "Bob"\ },\ "tags": [],\ "title": "Cortex Examples C++",\ "uuid": "b26f35c3-42ee-4612-a9b9-09af04c2ba37"\ },\ {\ "applicationId": "com.xxx.cortex-examples",\ "applicationVersion": "1.0",\ "description": "",\ "endDatetime": "2020-03-09T15:58:37.792248+07:00",\ "experimentId": 0,\ "headbandPosition": null,\ "licenseId": "xxx",\ "licenseScope": [\ "pm",\ "eeg"\ ],\ "localOnly": false,\ "markers": [\ {\ "endDatetime": "2020-03-09T15:58:12.875515+07:00",\ "extras": {},\ "label": "test1",\ "port": "Cortex Example",\ "startDatetime": "2020-03-09T15:58:12.875515+07:00",\ "type": "instance",\ "uuid": "e22d46a0-480a-452a-a65e-d6b4448e3f7b",\ "value": 41\ },\ {\ "endDatetime": "2020-03-09T15:58:28.872019+07:00",\ "extras": {},\ "label": "test2",\ "port": "Cortex Example",\ "startDatetime": "2020-03-09T15:58:20.873850+07:00",\ "type": "interval",\ "uuid": "c8fd9191-43da-4e28-970d-bf9f24404c8a",\ "value": 42\ }\ ],\ "ownerId": "94f7c5ed-3d24-4c29-8243-96aa7db80d4a",\ "startDatetime": "2020-03-09T15:58:08.036369+07:00",\ "subject": {\ "subjectName": "Marie"\ },\ "tags": [],\ "title": "Cortex Examples C++",\ "uuid": "33d2c56a-4cdf-4e2b-a5bb-db127f838248"\ }\ ] } } [PreviousexportRecord](https://emotiv.gitbook.io/cortex-api/records/exportrecord) [NextgetRecordInfos](https://emotiv.gitbook.io/cortex-api/records/getrecordinfos) Last updated 4 years ago --- # getCurrentProfile | Cortex API This method returns the training profile that is currently loaded for a specific headset. [](https://emotiv.gitbook.io/cortex-api/bci/getcurrentprofile#parameters) Parameters ----------------------------------------------------------------------------------------- Name Type Required Description cortexToken `string` yes A token returned by [authorize](https://emotiv.gitbook.io/cortex-api/authentication/authorize) . headset `string` yes A headset id returned by [queryHeadsets](https://emotiv.gitbook.io/cortex-api/headset/queryheadsets) . [](https://emotiv.gitbook.io/cortex-api/bci/getcurrentprofile#result) Result --------------------------------------------------------------------------------- The result is an object containing these fields: Name Type Description name `string` The name of the loaded profile, or `null` if no profile was loaded for this headset. loadedByThisApp `boolean` `true` if the profile was loaded by your application, `false` if it was loaded by another application. _This field was added in Cortex 2.1_ [](https://emotiv.gitbook.io/cortex-api/bci/getcurrentprofile#examples) Examples ------------------------------------------------------------------------------------- Request [](https://emotiv.gitbook.io/cortex-api/bci/getcurrentprofile#tab-request) Response [](https://emotiv.gitbook.io/cortex-api/bci/getcurrentprofile#tab-response) Copy { "id": 1, "jsonrpc": "2.0", "method": "getCurrentProfile", "params": { "cortexToken": "xxx", "headset": "EPOCPLUS-12341234" } } Copy { "id": 1, "jsonrpc": "2.0", "result": { "name": "my profile", "loadedByThisApp": true } } [PreviousqueryProfile](https://emotiv.gitbook.io/cortex-api/bci/queryprofile) [NextsetupProfile](https://emotiv.gitbook.io/cortex-api/bci/setupprofile) Last updated 1 year ago --- # getDemographicAttributes | Cortex API This method returns the list of valid names and values for the [demographic attribute objects](https://emotiv.gitbook.io/cortex-api/subjects/subject-object#demographic-attribute-object) . _This method was added in Cortex 2.1_ [](https://emotiv.gitbook.io/cortex-api/subjects/getdemographicattributes#parameters) Parameters ----------------------------------------------------------------------------------------------------- Name Type Required Description cortexToken `string` yes A token returned by [authorize](https://emotiv.gitbook.io/cortex-api/authentication/authorize) . [](https://emotiv.gitbook.io/cortex-api/subjects/getdemographicattributes#result) Result --------------------------------------------------------------------------------------------- The result is an array of objects. Each object contain these fields: Name Type Description name `string` The name of the demographic attribute. value `array of strings` The list of all the possible values for this attribute. [](https://emotiv.gitbook.io/cortex-api/subjects/getdemographicattributes#example) Example ----------------------------------------------------------------------------------------------- Request [](https://emotiv.gitbook.io/cortex-api/subjects/getdemographicattributes#tab-request) Response [](https://emotiv.gitbook.io/cortex-api/subjects/getdemographicattributes#tab-response) Copy { "id": 1, "jsonrpc": "2.0", "method": "getDemographicAttributes", "params": { "cortexToken": "xxx" } } Copy { "id": 1, "jsonrpc": "2.0", "result": [\ {\ "name": "Education",\ "value": [\ "Below high school",\ "High school or equivalent",\ "Vocational/technical training",\ "Bachelor's degree",\ "Master's degree",\ "Doctoral degree",\ "Prof. degree (medical, law, etc. )"\ ]\ },\ {\ "name": "Handedness",\ "value": [\ "Left",\ "Right",\ "Ambidextrous",\ "Unspecified"\ ]\ },\ {\ "name": "Language ability",\ "value": [\ "Native Language Only",\ "Bilingual",\ "Multilingual"\ ]\ },\ {\ "name": "Musical skills",\ "value": [\ "None",\ "Single instrumentalist",\ "Multi-instrumentalist",\ "Vocalist",\ "Vocalist & instrumentalist"\ ]\ },\ {\ "name": "Profession",\ "value": [\ "Architecture",\ "Art and design",\ "Entertainment and media",\ "Sports",\ "Building and grounds cleaning",\ "Business and finance",\ "Community and social service",\ "Computer and mathematical",\ "Construction and extraction",\ "Engineering",\ "Education and training",\ "Farming, fishing, and forestry",\ "Food preparation and serving",\ "Healthcare practitioners",\ "Healthcare technicians",\ "Healthcare support",\ "Installation and maintenance",\ "Legal",\ "Physical and social science",\ "Management",\ "Office and administration",\ "Personal care and service",\ "Production and manufacturing",\ "Protective service",\ "Sales",\ "Transportation and logistics",\ "Homemaker",\ "Retired",\ "Student",\ "Unemployed"\ ]\ }\ ] } [PreviousquerySubjects](https://emotiv.gitbook.io/cortex-api/subjects/querysubjects) [NextSubject object](https://emotiv.gitbook.io/cortex-api/subjects/subject-object) Last updated 6 years ago --- # loadGuestProfile | Cortex API This method loads an empty profile for a headset. You can use this method to quickly load a profile, without having to create a profile with [setupProfile](https://emotiv.gitbook.io/cortex-api/bci/setupprofile) . [](https://emotiv.gitbook.io/cortex-api/bci/loadguestprofile#parameters) Parameters ---------------------------------------------------------------------------------------- Name Type Required Description cortexToken `string` yes A token returned by [authorize](https://emotiv.gitbook.io/cortex-api/authentication/authorize) . headset `string` yes A headset id returned by [queryHeadsets](https://emotiv.gitbook.io/cortex-api/headset/queryheadsets) . [](https://emotiv.gitbook.io/cortex-api/bci/loadguestprofile#result) Result -------------------------------------------------------------------------------- The result is an object containing these fields: Name Type Description action `string` Is always "load". name `string` Is always "Guest Profile". message `string` A success message. [](https://emotiv.gitbook.io/cortex-api/bci/loadguestprofile#examples) Examples ------------------------------------------------------------------------------------ Request [](https://emotiv.gitbook.io/cortex-api/bci/loadguestprofile#tab-request) Response [](https://emotiv.gitbook.io/cortex-api/bci/loadguestprofile#tab-response) Copy { "id": 1, "jsonrpc": "2.0", "method": "loadGuestProfile", "params": { "cortexToken": "xxx", "headset": "INSIGHT-12341234" } } Copy { "id": 1, "jsonrpc": "2.0", "result": { "action": "load", "name": "Guest Profile", "message": "..." } } [PrevioussetupProfile](https://emotiv.gitbook.io/cortex-api/bci/setupprofile) [NextgetDetectionInfo](https://emotiv.gitbook.io/cortex-api/bci/getdetectioninfo) Last updated 1 year ago --- # Advanced BCI | Cortex API In this section, you will find some advanced BCI features. Please read the section [BCI](https://emotiv.gitbook.io/cortex-api/bci) first. The methods in this section are to read and modify the attributes of a training profile. Changing these attributes affects the way the facial expression and mental command detections work. It can make an action easier to detect, or it can completely disable an action. You can use [EmotivBCI](https://www.emotiv.com/emotiv-bci/) to change the attributes of a profile and see how it affects the detections. [](https://emotiv.gitbook.io/cortex-api/advanced-bci#profile-name-or-session-id) Profile name or session id ---------------------------------------------------------------------------------------------------------------- Most of the methods takes 2 optional parameters, a profile name and a session id. Name Type Required Description profile `string` no The name of a profile. session `string` no A session id returned by [createSession](https://emotiv.gitbook.io/cortex-api/session/createsession) . You must set one of these 2 parameters, and omit the second parameter. If you set the **profile**, then Cortex will read the attributes of a profile from the hard drive. You can only read the attributes, you cannot change them. The profile is read only. If you set the **session**, then Cortex will read the attributes of a profile currently loaded in-memory. You can also change these attributes. The profile is in read-write mode. After you edited the attributes, you should [save the profile](https://emotiv.gitbook.io/cortex-api/bci/setupprofile) to persist your changes. If Cortex tells you that **profile** is a required parameter, then please set this parameter to an empty string. There is a bug in Cortex 2.0.0. The parameter **profile** is required, even if you set the parameter **session**. So, to read/write attributes from a session, you should set the **session** to your session id and set **profile** to an empty string. Don't set it to null, don't omit it. This bug is fixed in Cortex version 2.1.0 and above. [PreviousReadonly profile](https://emotiv.gitbook.io/cortex-api/bci/readonly-profile) [NextgetTrainedSignatureActions](https://emotiv.gitbook.io/cortex-api/advanced-bci/gettrainedsignatureactions) Last updated 1 year ago --- # createSubject | Cortex API This method is to create a new subject. Then you can associate the subject to a record when you call [createRecord](https://emotiv.gitbook.io/cortex-api/records/createrecord) . _This method was added in Cortex 2.1_ [](https://emotiv.gitbook.io/cortex-api/subjects/createsubject#parameters) Parameters ------------------------------------------------------------------------------------------ Name Type Required Description cortexToken `string` yes A token returned by [authorize](https://emotiv.gitbook.io/cortex-api/authentication/authorize) . subjectName `string` yes The name of the subject. Must be 30 characters or less. dateOfBirth `string` no The date of birth of the subject. The format must be "YYYY-MM-DD", e.g. "1980-12-25". sex `string` no Must be "M", "F" or "U". These letters stands for male, female and unknown respectively. countryCode `string` no The [Alpha-2 ISO code](https://en.wikipedia.org/wiki/List_of_ISO_3166_country_codes) of the country the subject lives in. state `string` no The state the subject lives in. city `string` no The city the subject lives in. attributes `array of objects` no A list of demographic attribute objects. See [Subject object](https://emotiv.gitbook.io/cortex-api/subjects/subject-object) . [](https://emotiv.gitbook.io/cortex-api/subjects/createsubject#result) Result ---------------------------------------------------------------------------------- The result is a [subject object](https://emotiv.gitbook.io/cortex-api/subjects/subject-object) representing the new subject. [](https://emotiv.gitbook.io/cortex-api/subjects/createsubject#examples) Examples -------------------------------------------------------------------------------------- Create a subject with only his name. Request [](https://emotiv.gitbook.io/cortex-api/subjects/createsubject#tab-request) Response [](https://emotiv.gitbook.io/cortex-api/subjects/createsubject#tab-response) Copy { "id": 1, "jsonrpc": "2.0", "method": "createSubject", "params": { "cortexToken": "xxx", "subjectName": "Bob Smith" } } Copy { "id": 1, "jsonrpc": "2.0", "result": { "attributes": [], "city": "", "countryCode": "", "countryName": "", "dateOfBirth": "", "experimentsCount": 0, "modifiedDatetime": "2019-07-01T11:41:25.270+07:00", "sex": "U", "state": "", "subjectName": "Bob Smith" } } Create a subject with more information. Request [](https://emotiv.gitbook.io/cortex-api/subjects/createsubject#tab-request-1) Response [](https://emotiv.gitbook.io/cortex-api/subjects/createsubject#tab-response-1) Copy { "id": 1, "jsonrpc": "2.0", "method": "createSubject", "params": { "cortexToken": "xxx", "subjectName": "Alice Smith", "city": "London", "countryCode": "GB", "dateOfBirth": "1980-12-25", "sex": "F", "attributes": [\ {\ "name": "Handedness",\ "value": "Left"\ },\ {\ "name": "Education",\ "value": "Master's degree"\ }\ ] } } Copy { "id": 1, "jsonrpc": "2.0", "result": { "attributes": [\ {\ "name": "Handedness",\ "value": "Left"\ },\ {\ "name": "Education",\ "value": "Master's degree"\ }\ ], "city": "London", "countryCode": "GB", "countryName": "", "dateOfBirth": "1980-12-25", "experimentsCount": 0, "modifiedDatetime": "2019-07-01T11:23:11.644+07:00", "sex": "F", "state": "", "subjectName": "Alice Smith" } } [PreviousSubjects](https://emotiv.gitbook.io/cortex-api/subjects) [NextupdateSubject](https://emotiv.gitbook.io/cortex-api/subjects/updatesubject) Last updated 5 years ago --- # querySubjects | Cortex API This method returns a list of subjects owned by the current user. _This method was added in Cortex 2.1_ [](https://emotiv.gitbook.io/cortex-api/subjects/querysubjects#parameters) Parameters ------------------------------------------------------------------------------------------ Name Type Required Description cortexToken `string` yes A token returned by [authorize](https://emotiv.gitbook.io/cortex-api/authentication/authorize) . query `object` yes An object to filter the subjects. orderBy `array of objects` yes Specify how to sort the subjects. limit `number` no The maximum number of subjects that this method should return. A limit of zero means no maximum. offset `number` no The number of subjects that this method should skip before returning the result. If the limit is zero, then Cortex will ignore this parameter. Depending on the query, this method may return a lot of subjects. To avoid performance issues, you should always set an offset and a limit. ### [](https://emotiv.gitbook.io/cortex-api/subjects/querysubjects#query) query The **query** object can contain one or more of these fields: Name Type Description uuid `string` Set this parameter to get a subject by its id. subjectName `string` Set this parameter to filter the subjects by name. sex `string` Set this parameter to filter the subjects by their gender. Must be "M", "F" or "U". countryCode `string` Set this parameters to filter the subjects by their country. dateOfBirth `object` An object with fields "from" and "to" to filter the subjects by their date of birth. keyword `object` An object with the fields as the keyword to search and values are the list of fields to search. The list of fields to search can contains "subjectName", "lastName", "email" ### [](https://emotiv.gitbook.io/cortex-api/subjects/querysubjects#orderby) orderBy The **orderBy** parameters is an array of objects, similar to the orderBy clause of a SQL request. Each object must have a single attribute. The key of the attribute is the name of subject's field you want to order by. The value of the attribute must be "ASC" or "DESC", to order is ascending or descending order. For example, to order the subjects by their names, in alphabetical order, you must use the object `**{"subjectName":"ASC"}**`. You can order the subjects by these fields: subjectName, dateOfBirth. ### [](https://emotiv.gitbook.io/cortex-api/subjects/querysubjects#limit-and-offset) limit and offset These parameters are to implement pagination. It useful if you want to display the subjects in a UI. You must order the results to use these parameters. First you should call this method with a **offset** of zero, and a **limit** of X. In the response, check the value of **count.** If **count** is greater than the limit, then you should call this method again with an offset of X. And then with an offset of 2\*X, 3\*X... until you get all the subjects for your query. [](https://emotiv.gitbook.io/cortex-api/subjects/querysubjects#result) Result ---------------------------------------------------------------------------------- The result is an object that includes these fields: Name Type Description subjects `array of objects` An array of [subject objects](https://emotiv.gitbook.io/cortex-api/subjects/subject-object) . count `number` The total number of subjects that match the query. limit `number` The limit you specified in the parameters. offset `number` The offset you specified in the parameters. [](https://emotiv.gitbook.io/cortex-api/subjects/querysubjects#examples) Examples -------------------------------------------------------------------------------------- Find the 10 first female subjects born in 1979 or 1980. Request [](https://emotiv.gitbook.io/cortex-api/subjects/querysubjects#tab-request) Response [](https://emotiv.gitbook.io/cortex-api/subjects/querysubjects#tab-response) Copy { "id": 1, "jsonrpc": "2.0", "method": "querySubjects", "params": { "cortexToken": "xxx", "query": { "dateOfBirth": { "from": "1979-01-01", "to": "1980-12-31" }, "sex": "F", "keyword": { "yyy":["subjectName", "email"] } }, "orderBy": [\ {"subjectName": "ASC"}\ ], "offset": 0, "limit": 10 } } Copy { "id": 1, "jsonrpc": "2.0", "result": { "count": 1, "limit": 10, "offset": 0, "subjects": [\ {\ "attributes": [\ {\ "name": "Handedness",\ "value": "Left"\ },\ {\ "name": "Education",\ "value": "Master's degree"\ }\ ],\ "city": "London",\ "countryCode": "GB",\ "countryName": "",\ "dateOfBirth": "1980-12-25",\ "experimentsCount": 0,\ "modifiedDatetime": "2019-07-01T11:23:11.644+07:00",\ "sex": "F",\ "state": "",\ "subjectName": "Alice Smith"\ }\ ] } } [PreviousdeleteSubjects](https://emotiv.gitbook.io/cortex-api/subjects/deletesubjects) [NextgetDemographicAttributes](https://emotiv.gitbook.io/cortex-api/subjects/getdemographicattributes) Last updated 2 years ago --- # getTrainingTime | Cortex API This method returns the duration of a training. It is the approximate time needed by Cortex to decide if a training is a success or a failure. See [BCI](https://emotiv.gitbook.io/cortex-api/bci) for details. [](https://emotiv.gitbook.io/cortex-api/advanced-bci/gettrainingtime#parameters) Parameters ------------------------------------------------------------------------------------------------ Name Type Required Description cortexToken `string` yes A token returned by [authorize](https://emotiv.gitbook.io/cortex-api/authentication/authorize) . detection `string` yes Must be "mentalCommand" or "facialExpression". session `string` yes A session id returned by [createSession](https://emotiv.gitbook.io/cortex-api/session/createsession) . [](https://emotiv.gitbook.io/cortex-api/advanced-bci/gettrainingtime#result) Result ---------------------------------------------------------------------------------------- The result is an object containing these fields: Name Type Description time `number` The approximate duration of a training, in second. detection `string` The **detection** you set in the request. The **time** should be 8 seconds, for both mental command and facial expression. [](https://emotiv.gitbook.io/cortex-api/advanced-bci/gettrainingtime#examples) Examples -------------------------------------------------------------------------------------------- Request [](https://emotiv.gitbook.io/cortex-api/advanced-bci/gettrainingtime#tab-request) Response [](https://emotiv.gitbook.io/cortex-api/advanced-bci/gettrainingtime#tab-response) Copy { "id": 1, "jsonrpc": "2.0", "method": "getTrainingTime", "params": { "cortexToken": "xxx", "detection": "mentalCommand", "session": "xxx" } } Copy { "id": 1, "jsonrpc": "2.0", "result": { "time": 8, "detection": "mentalCommand" } } [PreviousgetTrainedSignatureActions](https://emotiv.gitbook.io/cortex-api/advanced-bci/gettrainedsignatureactions) [NextfacialExpressionSignatureType](https://emotiv.gitbook.io/cortex-api/advanced-bci/facialexpressionsignaturetype) Last updated 1 year ago --- # getTrainedSignatureActions | Cortex API This method returns the list of the trained actions of a profile. For each action, you also see how many times the user trained this action. [](https://emotiv.gitbook.io/cortex-api/advanced-bci/gettrainedsignatureactions#parameters) Parameters ----------------------------------------------------------------------------------------------------------- Name Type Required Description cortexToken `string` yes A token returned by [authorize](https://emotiv.gitbook.io/cortex-api/authentication/authorize) . detection `string` yes Must be "mentalCommand" or "facialExpression". profile `string` no The name of a profile. session `string` no A session id returned by [createSession](https://emotiv.gitbook.io/cortex-api/session/createsession) . You must set one of these 2 parameters: **profile** or **session**. [Read this](https://emotiv.gitbook.io/cortex-api/advanced-bci#profile-name-or-session-id) for details. If you set the **session**, then this method reads information from the profile that is currently loaded for the headset of this session. If you set **profile** then this method reads information from the hard drive. The values you get can be different from reading from the session, especially if the profile was load, edited, and not saved yet. [](https://emotiv.gitbook.io/cortex-api/advanced-bci/gettrainedsignatureactions#result) Result --------------------------------------------------------------------------------------------------- The result is an object containing these fields: Name Type Description trainedActions `array of objects` Contains 1 object for each trained action. totalTimesTraining `number` The total number of training the user did since the creation of this profile. The objects in **trainedActions** have 2 fields: Name Type Description action `string` The name of the action. times `number` How many times the user trained this action. [](https://emotiv.gitbook.io/cortex-api/advanced-bci/gettrainedsignatureactions#examples) Examples ------------------------------------------------------------------------------------------------------- Request [](https://emotiv.gitbook.io/cortex-api/advanced-bci/gettrainedsignatureactions#tab-request) Response [](https://emotiv.gitbook.io/cortex-api/advanced-bci/gettrainedsignatureactions#tab-response) Copy { "id": 1, "jsonrpc": "2.0", "method": "getTrainedSignatureActions", "params": { "cortexToken": "xxx", "detection": "mentalCommand", "profile": "cortex-v2-example" } } Copy { "id": 1, "jsonrpc": "2.0", "result": { "totalTimesTraining": 12, "trainedActions": [\ {\ "action": "neutral",\ "times": 1\ },\ {\ "action": "push",\ "times": 1\ },\ {\ "action": "pull",\ "times": 1\ }\ ] } } [PreviousAdvanced BCI](https://emotiv.gitbook.io/cortex-api/advanced-bci) [NextgetTrainingTime](https://emotiv.gitbook.io/cortex-api/advanced-bci/gettrainingtime) Last updated 6 years ago --- # training | Cortex API This method is to control the training of the mental command and facial expression detections. Before you start a training, you should [subscribe](https://emotiv.gitbook.io/cortex-api/data-subscription/subscribe) to the "sys" data stream. See [BCI](https://emotiv.gitbook.io/cortex-api/bci) for details. [](https://emotiv.gitbook.io/cortex-api/bci/training#parameters) Parameters -------------------------------------------------------------------------------- Name Type Required Description cortexToken `string` yes A token returned by [authorize](https://emotiv.gitbook.io/cortex-api/authentication/authorize) . session `string` yes A session id returned by [createSession](https://emotiv.gitbook.io/cortex-api/session/createsession) . The training will be for the headset linked to this session. detection `string` yes Must be "mentalCommand" or "facialExpression". status `string` yes Control what this method does, like start the training, or cancel it... Available status depends on which **detection** you selected. action `string` yes The action you want to train. Available actions depends on which **detection** you selected. ### [](https://emotiv.gitbook.io/cortex-api/bci/training#status) status To get the available status for a detection, call [getDetectionInfo](https://emotiv.gitbook.io/cortex-api/bci/getdetectioninfo) , and check the field **controls** of the result object. Or you can check this list: Status Description start Start a new training for the specified **action**. accept Accept a successful training and add it to the profile. reject Reject a successful training. It is not added to the profile. reset Cancel the current training. erase Erase all the training data for the specified **action**. ### [](https://emotiv.gitbook.io/cortex-api/bci/training#action) action To get the available actions for a detection, call [getDetectionInfo](https://emotiv.gitbook.io/cortex-api/bci/getdetectioninfo) , and check the field **actions** of the result object. However, note that for the facial expression detection, only these actions can be trained: "neutral", "surprise", "frown", "smile", "clench". [](https://emotiv.gitbook.io/cortex-api/bci/training#result) Result ------------------------------------------------------------------------ The result is an object containing these fields: Name Type Description action `string` The **action** you set in the request. status `string` The **status** you set in the request. message `string` A success message. [](https://emotiv.gitbook.io/cortex-api/bci/training#examples) Examples ---------------------------------------------------------------------------- ### [](https://emotiv.gitbook.io/cortex-api/bci/training#start-a-training) Start a training Start a mental command training for the action "push". Request [](https://emotiv.gitbook.io/cortex-api/bci/training#tab-request) Response [](https://emotiv.gitbook.io/cortex-api/bci/training#tab-response) Copy { "id": 14, "jsonrpc": "2.0", "method": "training", "params": { "action": "push", "cortexToken": "xxx", "detection": "mentalCommand", "session": "f3a35fd0-9163-4cc4-ab30-4ed224369f91", "status": "start" } } Copy { "id": 14, "jsonrpc": "2.0", "result": { "action": "push", "message": "Set up training successfully", "status": "start" } } ### [](https://emotiv.gitbook.io/cortex-api/bci/training#accept-a-training) Accept a training Accept a successful training for the action "push". Request [](https://emotiv.gitbook.io/cortex-api/bci/training#tab-request-1) Response [](https://emotiv.gitbook.io/cortex-api/bci/training#tab-response-1) Copy { "id": 15, "jsonrpc": "2.0", "method": "training", "params": { "action": "push", "cortexToken": "xxx", "detection": "mentalCommand", "session": "f3a35fd0-9163-4cc4-ab30-4ed224369f91", "status": "accept" } } Copy { "id": 15, "jsonrpc": "2.0", "result": { "action": "push", "message": "Set up training successfully", "status": "accept" } } [PreviousgetDetectionInfo](https://emotiv.gitbook.io/cortex-api/bci/getdetectioninfo) [NextReadonly profile](https://emotiv.gitbook.io/cortex-api/bci/readonly-profile) Last updated 10 days ago --- # mentalCommandGetSkillRating | Cortex API This method returns the skill rating of a mental command action, or the overall mental command skill rating. This is a measure of how often you can trigger the desired action as measured in the previous trainings. A higher rating indicates stronger ability to perform that action. **Deprecated**: this method is superseded by [mentalCommandBrainMap](https://emotiv.gitbook.io/cortex-api/advanced-bci/mentalcommandbrainmap) and will be removed in the future. [](https://emotiv.gitbook.io/cortex-api/advanced-bci/mentalcommandgetskillrating#parameters) Parameters ------------------------------------------------------------------------------------------------------------ Name Type Required Description cortexToken `string` yes A token returned by [authorize](https://emotiv.gitbook.io/cortex-api/authentication/authorize) . profile `string` no A profile name. session `string` no A session id returned by [createSession](https://emotiv.gitbook.io/cortex-api/session/createsession) . action `string` no The mental command action. If omitted, then this method returns the overall skill ratting. You must set one of these 2 parameters: **profile** or **session**. [Read this](https://emotiv.gitbook.io/cortex-api/advanced-bci#profile-name-or-session-id) for details. [](https://emotiv.gitbook.io/cortex-api/advanced-bci/mentalcommandgetskillrating#result) Result ---------------------------------------------------------------------------------------------------- The result is a `number` that is the requested skill rating. [](https://emotiv.gitbook.io/cortex-api/advanced-bci/mentalcommandgetskillrating#examples) Examples -------------------------------------------------------------------------------------------------------- Request [](https://emotiv.gitbook.io/cortex-api/advanced-bci/mentalcommandgetskillrating#tab-request) Response [](https://emotiv.gitbook.io/cortex-api/advanced-bci/mentalcommandgetskillrating#tab-response) Copy { "id": 1, "jsonrpc": "2.0", "method": "mentalCommandGetSkillRating", "params": { "cortexToken": "xxx", "session": "xxx", "action": "push" } } Copy { "id": 1, "jsonrpc": "2.0", "result": 0.25 } [PreviousmentalCommandBrainMap](https://emotiv.gitbook.io/cortex-api/advanced-bci/mentalcommandbrainmap) [NextmentalCommandTrainingThreshold](https://emotiv.gitbook.io/cortex-api/advanced-bci/mentalcommandtrainingthreshold) Last updated 5 years ago --- # setupProfile | Cortex API This method is to manage the training profiles of the user. You create, rename or delete a profile. You can load and unload a profile for a headset if the EEG channels of this headset is supported by this training profile. And you can save a profile after the user completed a [training](https://emotiv.gitbook.io/cortex-api/bci/training) , or after you changed the [attributes](https://emotiv.gitbook.io/cortex-api/advanced-bci) of the profile. Before you load or unload a profile, you can call [getCurrentProfile](https://emotiv.gitbook.io/cortex-api/bci/getcurrentprofile) to know if a profile is currently loaded, and if it was loaded by your application. [](https://emotiv.gitbook.io/cortex-api/bci/setupprofile#parameters) Parameters ------------------------------------------------------------------------------------ Name Type Required Description cortexToken `string` yes A token returned by [authorize](https://emotiv.gitbook.io/cortex-api/authentication/authorize) . status `string` yes Must be "create", "load", "unload", "save", "rename" or "delete". profile `string` yes The name of the profile. headset `string` yes or no, depending on "status" A headset id returned by [queryHeadsets](https://emotiv.gitbook.io/cortex-api/headset/queryheadsets) . newProfileName `string` no If the **status** is "rename", then you must set this parameter, and it is the new name of the profile. Depending on the **status**, this method has different effects, and uses different parameters. ### [](https://emotiv.gitbook.io/cortex-api/bci/setupprofile#status-create) Status create Create a new profile. It can be an empty profile, or a copy of a loaded profile. Name Type Required Description profile `string` yes The name of the new profile. It must be unique for the user. Use [queryProfile](https://emotiv.gitbook.io/cortex-api/bci/queryprofile) to check if a name is already in use. headset `string` yes create a copy of the profile currently loaded for this headset. ### [](https://emotiv.gitbook.io/cortex-api/bci/setupprofile#status-load) Status load Load an existing profile for a specific headset. If a profile is already loaded, then you must unload it first. Name Type Required Description profile `string` yes The name of the profile to load. headset `string` yes The id of the headset to load the profile to. ### [](https://emotiv.gitbook.io/cortex-api/bci/setupprofile#status-unload) Status unload Unload the profile of a specific headset. After the unload, this headset will use a default empty profile. You should set the parameter **profile** to an empty string. You cannot unload a profile that was loaded by another application. Name Type Required Description headset `string` yes The id of the headset to unload the profile. profile `string` yes Cortex will ignore this parameter. Should be an empty string. ### [](https://emotiv.gitbook.io/cortex-api/bci/setupprofile#status-save) Status save Save the profile used by a headset. You can save it with a new name, so it creates a new profile. Or you can save it with the same name, ie the name you used to load it. You cannot save a profile that was loaded by another application. Name Type Required Description headset `string` yes The profile used by this headset will be saved. profile `string` yes The name of the profile. If no profile with that name exists, then the method creates a new profile. If it is the name of the profile that was previously loaded to this headset, then the method saves to this profile. ### [](https://emotiv.gitbook.io/cortex-api/bci/setupprofile#status-rename) Status rename Rename an existing profile. Name Type Required Description profile `string` yes The name of the profile you want to rename. newProfileName `string` yes The new name of the profile. ### [](https://emotiv.gitbook.io/cortex-api/bci/setupprofile#status-delete) Status delete Delete an existing profile. If this profile is loaded for a headset, then it is automatically unloaded. You cannot delete a profile that is currently loaded by another application. Name Type Required Description profile `string` yes The name of the profile you want to delete. [](https://emotiv.gitbook.io/cortex-api/bci/setupprofile#result) Result ---------------------------------------------------------------------------- The result is an object containing these fields: Name Type Description action `string` The **status** you used in the request. name `string` The **profile** you used in the request. message `string` A success message. [](https://emotiv.gitbook.io/cortex-api/bci/setupprofile#examples) Examples -------------------------------------------------------------------------------- ### [](https://emotiv.gitbook.io/cortex-api/bci/setupprofile#create-a-new-empty-profile) Create a new empty profile Request [](https://emotiv.gitbook.io/cortex-api/bci/setupprofile#tab-request) Response [](https://emotiv.gitbook.io/cortex-api/bci/setupprofile#tab-response) Copy { "id": 1, "jsonrpc": "2.0", "method": "setupProfile", "params": { "cortexToken": "xxx", "profile": "cortex-v2-example", "status": "create" } } Copy { "id": 1, "jsonrpc": "2.0", "result": { "action": "create", "message": "...", "name": "cortex-v2-example" } } ### [](https://emotiv.gitbook.io/cortex-api/bci/setupprofile#load-a-profile-for-a-headset) Load a profile for a headset Request [](https://emotiv.gitbook.io/cortex-api/bci/setupprofile#tab-request-1) Response [](https://emotiv.gitbook.io/cortex-api/bci/setupprofile#tab-response-1) Copy { "id": 1, "jsonrpc": "2.0", "method": "setupProfile", "params": { "cortexToken": "xxx", "headset": "EPOCPLUS-12341234", "profile": "cortex-v2-example", "status": "load" } } Copy { "id": 1, "jsonrpc": "2.0", "result": { "action": "load", "message": "The profile is loaded successfully", "name": "cortex-v2-example" } } ### [](https://emotiv.gitbook.io/cortex-api/bci/setupprofile#save-a-profile) Save a profile Request [](https://emotiv.gitbook.io/cortex-api/bci/setupprofile#tab-request-2) Response [](https://emotiv.gitbook.io/cortex-api/bci/setupprofile#tab-response-2) Copy { "id": 1, "jsonrpc": "2.0", "method": "setupProfile", "params": { "cortexToken": "xxx", "headset": "EPOCPLUS-12341234", "profile": "cortex-v2-example", "status": "save" } } Copy { "id": 1, "jsonrpc": "2.0", "result": { "action": "save", "message": "The profile is saved successfully", "name": "cortex-v2-example" } } [PreviousgetCurrentProfile](https://emotiv.gitbook.io/cortex-api/bci/getcurrentprofile) [NextloadGuestProfile](https://emotiv.gitbook.io/cortex-api/bci/loadguestprofile) Last updated 6 months ago --- # cortexaccess tool | Cortex API This command line tool is available only for Raspberry Pi to manage permissions for remote connections via IP addresses of remote desktop machines. This tool is installed on Raspberry Pi device along with Cortex installation. It is located at `/usr/local/emotivapps/bin/cortexaccess`. [](https://emotiv.gitbook.io/cortex-api/cortexaccess-tool#list-all-granted-ip-addresses) List all granted IP addresses --------------------------------------------------------------------------------------------------------------------------- List all IP addresses of remote desktop machines from which applications are allowed to create web socket connections to Cortex on Raspberry Pi device. Command: `cortexaccess ip list` If the IP address of your remote desktop isn't in the list, you should add it using `accept` command. [](https://emotiv.gitbook.io/cortex-api/cortexaccess-tool#add-an-ip-address) Add an IP address --------------------------------------------------------------------------------------------------- Grant permissions a remote desktop machine (via its IP address) from which applications can create web socket connections to Cortex on Raspberry Pi device. Command: `cortexaccess ip accept ` [](https://emotiv.gitbook.io/cortex-api/cortexaccess-tool#remove-an-ip-address) Remove an IP address --------------------------------------------------------------------------------------------------------- Remove permissions of remote desktop machines (via its IP address) so that applications on that machine cannot create web socket connections to Cortex on Raspberry Pi device anymore. Command: `cortexaccess ip deny ` [](https://emotiv.gitbook.io/cortex-api/cortexaccess-tool#clear-all-ip-addresses) Clear all IP addresses ------------------------------------------------------------------------------------------------------------- Remove permissions of current granted remote desktop machines so that applications on these machines cannot create web socket connections to Cortex on Raspberry Pi device anymore. Command: `cortexaccess ip clear` [](https://emotiv.gitbook.io/cortex-api/cortexaccess-tool#undefined) ------------------------------------------------------------------------ [PreviousRelease Notes](https://emotiv.gitbook.io/cortex-api/release-notes) Last updated 4 years ago --- # Troubleshooting Guide | Cortex API ### [](https://emotiv.gitbook.io/cortex-api/troubleshooting-guide#whitelisting-domains-for-emotiv-applications) Whitelisting Domains for EMOTIV Applications If you are encountering issues with EMOTIV Cortex or applications communicating with the EMOTIV Cloud, it may be due to some essential domains being blocked by your firewall, network settings, or security software. To ensure smooth operation, you will need to whitelist the following domains: #### [](https://emotiv.gitbook.io/cortex-api/troubleshooting-guide#essential-domains-to-whitelist) Essential Domains to Whitelist: 1. `*.emotivcloud.com` 2. `*.emotiv.com` 3. `emotiv-cortex-prod-dropbox.s3.amazonaws.com` 4. `emotiv-cortex-prod-dropbox.s3.us-east-1.amazonaws.com` 5. `cerebrum-prod.s3.amazonaws.com` 6. `cerebrum-prod.s3.us-east-1.amazonaws.com` #### [](https://emotiv.gitbook.io/cortex-api/troubleshooting-guide#step-by-step-instructions) Step-by-Step Instructions: 1. **Firewall Settings**: 1. Open your firewall application or built-in firewall settings. 2. Locate the section where you can add exceptions or whitelist URLs/domains. 3. Manually input each of the domains listed above into this section. 4. Save or apply the changes. 2. **Security Software**: 1. Launch your antivirus or security software. 2. Navigate to the settings or configuration section. 3. Search for an option related to whitelisting or exclusions. 4. Add each of the listed domains as exclusions. 5. Confirm and save your changes. 3. **Router Settings** (if you suspect your router is blocking access): 1. Access your router's admin panel. (Refer to the router's manual or online documentation for specifics). 2. Locate the section related to security or URL filtering. 3. Add each domain to the list of allowed domains or URLs. 4. Save or apply the changes. #### [](https://emotiv.gitbook.io/cortex-api/troubleshooting-guide#notes) Notes: * Always ensure that you are only whitelisting domains from trusted sources. The domains listed here are essential for EMOTIV Cortex and applications. * If you use additional network or security tools that might restrict access, ensure you update them to allow the domains listed above. * After whitelisting, restart your EMOTIV application and check if the issue is resolved. * If problems persist, consider reaching out to EMOTIV's support team or refer to other troubleshooting documentation provided by EMOTIV. This guide aims to simplify the process for you. Depending on the specific software or hardware you are using, some steps might look a bit different. When in doubt, refer to the user manual or help section of your software or device. [PreviousError Codes](https://emotiv.gitbook.io/cortex-api/error-codes) [NextRelease Notes](https://emotiv.gitbook.io/cortex-api/release-notes) Last updated 10 days ago --- # facialExpressionSignatureType | Cortex API This method can get or set the signature used by the facial expression detection. The "universal" signature contains some generic parameters. It doesn't need (nor accept) any training. It is the default signature. Cortex uses it automatically when the profile doesn't contain any training. The "trained" signature uses the [training](https://emotiv.gitbook.io/cortex-api/bci/training) from the user. The profile must contain at least one training before you can switch to this signature. [](https://emotiv.gitbook.io/cortex-api/advanced-bci/facialexpressionsignaturetype#parameters) Parameters -------------------------------------------------------------------------------------------------------------- Name Type Required Description cortexToken `string` yes A token returned by [authorize](https://emotiv.gitbook.io/cortex-api/authentication/authorize) . status `string` yes Must be "get" or "set". profile `string` no The name of a profile. session `string` no A session id returned by [createSession](https://emotiv.gitbook.io/cortex-api/session/createsession) . signature `string` no If the status is "set", then this parameter must be "universal" or "trained". You must set one of these 2 parameters: **profile** or **session**. [Read this](https://emotiv.gitbook.io/cortex-api/advanced-bci#profile-name-or-session-id) for details. [](https://emotiv.gitbook.io/cortex-api/advanced-bci/facialexpressionsignaturetype#result) Result ------------------------------------------------------------------------------------------------------ The result is an object containing these fields: Name Type Description currentSig `string` The current signature used by the profile. Can be "universal" or "trained". availableSig `array of strings` The signatures you can use with the profile. The "universal" one is always available, but the "trained" one requires some training. [](https://emotiv.gitbook.io/cortex-api/advanced-bci/facialexpressionsignaturetype#examples) Examples ---------------------------------------------------------------------------------------------------------- ### [](https://emotiv.gitbook.io/cortex-api/advanced-bci/facialexpressionsignaturetype#get) Get Request [](https://emotiv.gitbook.io/cortex-api/advanced-bci/facialexpressionsignaturetype#tab-request) Response [](https://emotiv.gitbook.io/cortex-api/advanced-bci/facialexpressionsignaturetype#tab-response) Copy { "id": 1, "jsonrpc": "2.0", "method": "facialExpressionSignatureType", "params": { "cortexToken": "xxx", "status": "get", "session": "xxx" } } Copy { "id": 1, "jsonrpc": "2.0", "result": { "currentSig": "universal", "availableSig": ["universal","trained"] } } ### [](https://emotiv.gitbook.io/cortex-api/advanced-bci/facialexpressionsignaturetype#set) Set Request [](https://emotiv.gitbook.io/cortex-api/advanced-bci/facialexpressionsignaturetype#tab-request-1) Response [](https://emotiv.gitbook.io/cortex-api/advanced-bci/facialexpressionsignaturetype#tab-response-1) Copy { "id": 1, "jsonrpc": "2.0", "method": "facialExpressionSignatureType", "params": { "cortexToken": "xxx", "status": "set", "session": "xxx", "signature": "trained" } } Copy { "id": 1, "jsonrpc": "2.0", "result": { "currentSig": "trained", "availableSig": ["universal","trained"] } } [PreviousgetTrainingTime](https://emotiv.gitbook.io/cortex-api/advanced-bci/gettrainingtime) [NextfacialExpressionThreshold](https://emotiv.gitbook.io/cortex-api/advanced-bci/facialexpressionthreshold) Last updated 6 years ago --- # facialExpressionThreshold | Cortex API This method can get or set the threshold of a facial expression action for a specific profile. Actions with a low threshold are less likely to be detected. Actions with a high threshold will be detected more often. [](https://emotiv.gitbook.io/cortex-api/advanced-bci/facialexpressionthreshold#parameters) Parameters ---------------------------------------------------------------------------------------------------------- Name Type Required Description cortexToken `string` yes A token returned by [authorize](https://emotiv.gitbook.io/cortex-api/authentication/authorize) . status `string` yes Must be "get" or "set". action `string` yes You get or set the threshold for this action. profile `string` no A profile name. session `string` no A session id returned by [createSession](https://emotiv.gitbook.io/cortex-api/session/createsession) . value `number` no If the **status** is "set", this parameter must be a number between 0 and 1000. This will be the new threshold of the **action**. You must set one of these 2 parameters: **profile** or **session**. [Read this](https://emotiv.gitbook.io/cortex-api/advanced-bci#profile-name-or-session-id) for details. [](https://emotiv.gitbook.io/cortex-api/advanced-bci/facialexpressionthreshold#result) Result -------------------------------------------------------------------------------------------------- If the **status** is "get", then the result is a `number` that is the current threshold of the **action**. If the **status** is "set", then the result is a `string` that is a success message. [](https://emotiv.gitbook.io/cortex-api/advanced-bci/facialexpressionthreshold#examples) Examples ------------------------------------------------------------------------------------------------------ ### [](https://emotiv.gitbook.io/cortex-api/advanced-bci/facialexpressionthreshold#get) Get Request [](https://emotiv.gitbook.io/cortex-api/advanced-bci/facialexpressionthreshold#tab-request) Response [](https://emotiv.gitbook.io/cortex-api/advanced-bci/facialexpressionthreshold#tab-response) Copy { "id": 1, "jsonrpc": "2.0", "method": "facialExpressionThreshold", "params": { "action": "blink", "cortexToken": "xxx", "session": "1d5d3655-d570-4731-9faf-967bc5440dc5", "status": "get" } } Copy { "id":1, "jsonrpc":"2.0", "result":500 } ### [](https://emotiv.gitbook.io/cortex-api/advanced-bci/facialexpressionthreshold#set) Set Request [](https://emotiv.gitbook.io/cortex-api/advanced-bci/facialexpressionthreshold#tab-request-1) Response [](https://emotiv.gitbook.io/cortex-api/advanced-bci/facialexpressionthreshold#tab-response-1) Copy { "id": 2323514, "jsonrpc": "2.0", "method": "facialExpressionThreshold", "params": { "action": "surprise", "cortexToken": "xxx", "session": "1d5d3655-d570-4731-9faf-967bc5440dc5", "status": "set", "value": 703 } } Copy { "id": 2323514, "jsonrpc": "2.0", "result": "success" } [PreviousfacialExpressionSignatureType](https://emotiv.gitbook.io/cortex-api/advanced-bci/facialexpressionsignaturetype) [NextmentalCommandActiveAction](https://emotiv.gitbook.io/cortex-api/advanced-bci/mentalcommandactiveaction) Last updated 6 years ago --- # mentalCommandTrainingThreshold | Cortex API This method returns the training threshold of the mental command detection. It also returns the score of the last mental command training. The training threshold provides an indication of minimum threshold that you should target for when training the action, and it changes according to number of total actions that you have currently activated. Any training score above the threshold is very likely to improve your profile. Any training significantly below the threshold is likely to reduce the quality of your profile. Check out the usage in our [BCI](https://emotiv.gitbook.io/emotivbci/mental-commands/training-feedback) app. [](https://emotiv.gitbook.io/cortex-api/advanced-bci/mentalcommandtrainingthreshold#parameters) Parameters --------------------------------------------------------------------------------------------------------------- Name Type Required Description cortexToken `string` yes A token returned by [authorize](https://emotiv.gitbook.io/cortex-api/authentication/authorize) . profile `string` no A profile name session `string` no A session id returned by [createSession](https://emotiv.gitbook.io/cortex-api/session/createsession) . You must set one of these 2 parameters: **profile** or **session**. [Read this](https://emotiv.gitbook.io/cortex-api/advanced-bci#profile-name-or-session-id) for details. [](https://emotiv.gitbook.io/cortex-api/advanced-bci/mentalcommandtrainingthreshold#result) Result ------------------------------------------------------------------------------------------------------- The result is an object containing these fields: Name Type Description currentThreshold `number` The threshold of the mental command detection. lastTrainingScore `number` The score of the last mental command training. [](https://emotiv.gitbook.io/cortex-api/advanced-bci/mentalcommandtrainingthreshold#examples) Examples ----------------------------------------------------------------------------------------------------------- Request [](https://emotiv.gitbook.io/cortex-api/advanced-bci/mentalcommandtrainingthreshold#tab-request) Response [](https://emotiv.gitbook.io/cortex-api/advanced-bci/mentalcommandtrainingthreshold#tab-response) Copy { "id": 1, "jsonrpc": "2.0", "method": "mentalCommandTrainingThreshold", "params": { "cortexToken": "xxx", "session": "xxx" } } Copy { "id": 1, "jsonrpc": "2.0", "result": { "currentThreshold": 0.83, "lastTrainingScore": 0.40 } } [PreviousmentalCommandGetSkillRating](https://emotiv.gitbook.io/cortex-api/advanced-bci/mentalcommandgetskillrating) [NextmentalCommandActionSensitivity](https://emotiv.gitbook.io/cortex-api/advanced-bci/mentalcommandactionsensitivity) Last updated 5 years ago --- # exportRecord | Cortex API This method is to export one or more records to EDF or CSV files. You can export the raw EEG data, the motion data, the performance metrics and the band powers. The available data streams depend on the license of the record. You can check the field **licenceScope** in the [Record object](https://emotiv.gitbook.io/cortex-api/records/record-object) to know which data streams are available. By default, you can only export the records that were created by your application. If you want to export a record that was created by another application (e.g. [Emotiv PRO](https://www.emotiv.com/emotivpro/) or [EMOTIV LABS](https://www.emotiv.com/emotiv-labs/) ) then you must provide the license id of this application in the parameter **licenseIds.** In order to export a record created by [EMOTIV LABS](https://www.emotiv.com/emotiv-labs/) , the current [Cortex user](https://emotiv.gitbook.io/cortex-api/authentication/getuserlogin) must be the owner of the LABS experiment. You must [stop the record](https://emotiv.gitbook.io/cortex-api/records/stoprecord) before you can export it. If you want to export a record immediately after you stop it then you must wait for the [warning 30](https://emotiv.gitbook.io/cortex-api/warning-objects) before you try to export. The format of the exported files is described in [EmotivPRO user manual](https://emotiv.gitbook.io/emotivpro-v3/managing-your-eeg-data-recordings/exporting-an-eeg-data-recording) . _This method was added in Cortex 2.1.1 to all desktop versions of Cortex. It was added to iOS and Android in Cortex 2.7.0_ [](https://emotiv.gitbook.io/cortex-api/records/exportrecord#parameters) Parameters ---------------------------------------------------------------------------------------- Name Type Required Description cortexToken `string` yes A token returned by [authorize](https://emotiv.gitbook.io/cortex-api/authentication/authorize) . recordIds `array of strings` yes An array of record ids. These are the ids of the records you want to export. folder `string` yes The path of a local folder. Cortex will write the exported files in that folder. You must create this folder before you call this method. Cortex will return an error if the folder doesn't exist. On iOS, this parameter doesn't exist. Cortex exports the data to the "Documents" folder of the current application. streamTypes `array of strings` yes List of the data streams you want to export. format `string` yes The format of the exported files. Must be "EDF", "EDFPLUS", "BDFPLUS" or "CSV". version `string` no If the format is "EDF", then you must omit this parameter. If the format is "CSV", then this parameter must be "V1" or "V2". licenseIds `array of strings` no The default value is an empty list, which means that you can only export the records created by your application. You can provide the license ID of other applications in order to export the records created by these applications. _This parameter was added in Cortex 2.6.3_ includeDemographics `boolean` no If `true` then the exported JSON file will include the demographic data of the user. It is only for the records created by [EMOTIV LABS](https://www.emotiv.com/emotiv-labs/) . The default value is `false`. _This parameter was added in Cortex 2.6.3_ includeSurvey `boolean` no If `true` then the exported JSON file will include the survey data of the record. It is only for the records created by [EMOTIV LABS](https://www.emotiv.com/emotiv-labs/) . The default value is `false`. _This parameter was added in Cortex 2.6.3_ From Cortex 3.5.0, survey data will be exported in a separate CSV file (along with JSON file). includeMarkerExtraInfos `boolean` no If `true` then the markers of the records will be exported to a CSV file. This file is compatible with [EEGLAB](https://sccn.ucsd.edu/eeglab) **.** The default value is `false`. _This parameter was added in Cortex 2.6.3_ includeDeprecatedPM `boolean` no If `true` then deprecated performance metrics (i.e. Focus) will be exported. The default value is `false`. _This parameter was added in Cortex 3.5.6_ ### [](https://emotiv.gitbook.io/cortex-api/records/exportrecord#data-streams) Data streams The parameter **streamTypes** must contain one or more values, chosen from this list: "EEG", "MOTION", "PM", "BP". If the **format** is "EDF" then only "EEG" and "MOTION" are available. Stream Description EEG Export the raw EEG data, the contact quality of each EEG sensor, and the markers. The license scope of the record must contain the scope "eeg". MOTION Export the motion data. PM Export the results of the performance metric detection. If the license scope of the record contains the scope "pm" then Cortex will export the high resolution performance metrics, at 2 hertz. Otherwise Cortex will export the low resolution data, at 0.1 hertz. MC Export the results of the mental command detection. FE Export the results of the facial expression detection. BP Export the band powers of each EEG sensor. ### [](https://emotiv.gitbook.io/cortex-api/records/exportrecord#format-and-version) Format and version Depending on the parameters **format** and **version** Cortex will create different files. #### [](https://emotiv.gitbook.io/cortex-api/records/exportrecord#format-edf-no-version) Format EDF, no version This format is identical to the one used in Cortex 1.x * 1 EDF file for the EEG and CQ data * 1 EDF file for the motion data * 1 JSON file for the markers * 1 CSV file for the markers if the parameter **includeMarkerExtraInfos** is `true` **Format EDFPLUS/BDFPLUS, no version** (available since Cortex version 3.7.5) * 1 EDF+/BDF+ file for the EEG, CQ and Motion data * 1 JSON file for the markers * 1 CSV file for the markers if the parameter **includeMarkerExtraInfos** is true #### [](https://emotiv.gitbook.io/cortex-api/records/exportrecord#format-csv-version-v1) Format CSV, version V1 This format is identical to the one used in Cortex 1.x * 1 CSV file for the EEG and CQ data * 1 CSV file for the band powers * 1 CSV file for the motion data * 1 CSV file for the performance metrics * 1 JSON file for the markers * 1 CSV file for the markers if the parameter **includeMarkerExtraInfos** is `true` #### [](https://emotiv.gitbook.io/cortex-api/records/exportrecord#format-csv-version-v2) Format CSV, version V2 This format is the new format of Cortex 2.x * 1 CSV file for all the data streams (EEG, CQ, band powers, motion, PM) * 1 JSON file for the markers * 1 CSV file for the markers if the parameter **includeMarkerExtraInfos** is `true` [](https://emotiv.gitbook.io/cortex-api/records/exportrecord#result) Result -------------------------------------------------------------------------------- The result is an object that includes these fields: Name Type Description success `array of objects` For each record you successfully exported, this array contains an object that includes the record id. failure `array of objects` For each record that couldn't be exported, this array contains an object that describes the error. In case of success, you get an object with these fields: Name Type Description recordId `string` The id of the record that was successfully exported. In case of failure, you get an object with these fields: Name Type Description recordId `string` The id of the record that couldn't be exported. code `number` The error code. message `string` The error message. [](https://emotiv.gitbook.io/cortex-api/records/exportrecord#examples) Examples ------------------------------------------------------------------------------------ ### [](https://emotiv.gitbook.io/cortex-api/records/exportrecord#edf) EDF Request [](https://emotiv.gitbook.io/cortex-api/records/exportrecord#tab-request) Response [](https://emotiv.gitbook.io/cortex-api/records/exportrecord#tab-response) Copy { "id": 1, "jsonrpc": "2.0", "method": "exportRecord", "params": { "cortexToken": "xxx", "folder": "/tmp/edf", "format": "EDF", "recordIds": [\ "ec0ac33f-ad4e-48b1-bbc3-8502f5c49b62"\ ], "streamTypes": [\ "EEG",\ "MOTION"\ ] } } Copy { "id": 1, "jsonrpc": "2.0", "result": { "failure": [], "success": [\ {\ "recordId": "ec0ac33f-ad4e-48b1-bbc3-8502f5c49b62"\ }\ ] } } ### [](https://emotiv.gitbook.io/cortex-api/records/exportrecord#csv-v1) CSV V1 Request [](https://emotiv.gitbook.io/cortex-api/records/exportrecord#tab-request-1) Response [](https://emotiv.gitbook.io/cortex-api/records/exportrecord#tab-response-1) Copy { "id": 1, "jsonrpc": "2.0", "method": "exportRecord", "params": { "cortexToken": "xxx", "folder": "/tmp/csv1", "format": "CSV", "recordIds": [\ "ec0ac33f-ad4e-48b1-bbc3-8502f5c49b62"\ ], "streamTypes": [\ "EEG",\ "MOTION",\ "PM",\ "BP"\ ], "version": "V1" } } Copy { "id": 1, "jsonrpc": "2.0", "result": { "failure": [], "success": [\ {\ "recordId": "ec0ac33f-ad4e-48b1-bbc3-8502f5c49b62"\ }\ ] } } ### [](https://emotiv.gitbook.io/cortex-api/records/exportrecord#csv-v2) CSV V2 Request [](https://emotiv.gitbook.io/cortex-api/records/exportrecord#tab-request-2) Response [](https://emotiv.gitbook.io/cortex-api/records/exportrecord#tab-response-2) Copy { "id": 1, "jsonrpc": "2.0", "method": "exportRecord", "params": { "cortexToken": "xxx", "folder": "/tmp/csv2", "format": "CSV", "recordIds": [\ "ec0ac33f-ad4e-48b1-bbc3-8502f5c49b62"\ ], "streamTypes": [\ "EEG",\ "MOTION",\ "PM",\ "BP"\ ], "version": "V2" } } Copy { "id": 1, "jsonrpc": "2.0", "result": { "failure": [], "success": [\ {\ "recordId": "ec0ac33f-ad4e-48b1-bbc3-8502f5c49b62"\ }\ ] } } [PreviousdeleteRecord](https://emotiv.gitbook.io/cortex-api/records/deleterecord) [NextqueryRecords](https://emotiv.gitbook.io/cortex-api/records/queryrecords) Last updated 10 months ago --- # getDetectionInfo | Cortex API This method returns useful information about the mental command training or the facial expression training. [](https://emotiv.gitbook.io/cortex-api/bci/getdetectioninfo#parameters) Parameters ---------------------------------------------------------------------------------------- Name Type Required Description detection `string` yes Must be "mentalCommand" or "facialExpression". [](https://emotiv.gitbook.io/cortex-api/bci/getdetectioninfo#result) Result -------------------------------------------------------------------------------- The result is an object containing information about the detection you specified in the parameters. Name Type Description actions `array of strings` The actions that this detection can detect. controls `array of strings` The list of the status you can use when you call the [training](https://emotiv.gitbook.io/cortex-api/bci/training) method. events `array of strings` The events you can receive in the "sys" [data stream](https://emotiv.gitbook.io/cortex-api/data-subscription) when you train this detection. signature `array of strings` The different types of signature that you can get or set with [facialExpressionSignatureType](https://emotiv.gitbook.io/cortex-api/advanced-bci/facialexpressionsignaturetype) . [](https://emotiv.gitbook.io/cortex-api/bci/getdetectioninfo#examples) Examples ------------------------------------------------------------------------------------ ### [](https://emotiv.gitbook.io/cortex-api/bci/getdetectioninfo#mental-command) Mental command Request [](https://emotiv.gitbook.io/cortex-api/bci/getdetectioninfo#tab-request) Response [](https://emotiv.gitbook.io/cortex-api/bci/getdetectioninfo#tab-response) Copy { "id": 1, "jsonrpc": "2.0", "method": "getDetectionInfo", "params": { "detection": "mentalCommand" } } Copy { "id": 1, "jsonrpc": "2.0", "result": { "actions": [\ "neutral",\ "push",\ "pull",\ "lift",\ "drop",\ "left",\ "right",\ "rotateLeft",\ "rotateRight",\ "rotateClockwise",\ "rotateCounterClockwise",\ "rotateForwards",\ "rotateReverse",\ "disappear"\ ], "controls": [\ "start",\ "accept",\ "reject",\ "erase",\ "reset"\ ], "events": [\ "MC_Started",\ "MC_Succeeded",\ "MC_Failed",\ "MC_Completed",\ "MC_DataErased",\ "MC_Rejected",\ "MC_Reset",\ "MC_AutoSamplingNeutralCompleted",\ "MC_SignatureUpdated"\ ], "signature": [] } } ### [](https://emotiv.gitbook.io/cortex-api/bci/getdetectioninfo#facial-expression) Facial expression Request [](https://emotiv.gitbook.io/cortex-api/bci/getdetectioninfo#tab-request-1) Response [](https://emotiv.gitbook.io/cortex-api/bci/getdetectioninfo#tab-response-1) Copy { "id": 1, "jsonrpc": "2.0", "method": "getDetectionInfo", "params": { "detection": "facialExpression" } } Copy { "id": 1, "jsonrpc": "2.0", "result": { "actions": [\ "neutral",\ "blink",\ "winkL",\ "winkR",\ "horiEye",\ "surprise",\ "frown",\ "smile",\ "clench",\ "laugh",\ "smirkLeft",\ "smirkRight"\ ], "controls": [\ "start",\ "accept",\ "reject",\ "erase",\ "reset"\ ], "events": [\ "FE_Started",\ "FE_Succeeded",\ "FE_Failed",\ "FE_Completed",\ "FE_DataErased",\ "FE_Rejected",\ "FE_Reset"\ ], "signature": [\ "universal",\ "trained"\ ] } } [PreviousloadGuestProfile](https://emotiv.gitbook.io/cortex-api/bci/loadguestprofile) [Nexttraining](https://emotiv.gitbook.io/cortex-api/bci/training) Last updated 1 year ago --- # MN8 User Manual | MN8 User Manual ![](https://emotiv.gitbook.io/mn8-user-manual/~gitbook/image?url=https%3A%2F%2Flh5.googleusercontent.com%2Fwzd2rJDWB3mHNcLfSJFG8peOLOoLlFDMckik_j4T25EB3E0FzzF2uVq3ITaD_R2onEgqNGdojj9_rMJKdTzKnPeUfMarzj_WG5Z2T-Ctm-jWcfuMJynIKHECJ8dNmXi2gz39EsxPrSG6Sxx6yML4xl0&width=300&dpr=4&quality=100&sign=b9e89ca2&sv=2) [NextWarranties and Copyright](https://emotiv.gitbook.io/mn8-user-manual/warranties-and-copyright) Last updated 1 year ago --- # mentalCommandActionSensitivity | Cortex API This method get or set the sensitivity of the 4 active mental command actions. Check out the usage in our [BCI](https://emotiv.gitbook.io/emotivbci/mental-commands/adjusting-sensitivity) app. [](https://emotiv.gitbook.io/cortex-api/advanced-bci/mentalcommandactionsensitivity#parameters) Parameters --------------------------------------------------------------------------------------------------------------- Name Type Required Description cortexToken `string` yes A token returned by [authorize](https://emotiv.gitbook.io/cortex-api/authentication/authorize) . status `string` yes Must be "get" or "set". profile `string` no A profile name. session `string` no A session id returned by [createSession](https://emotiv.gitbook.io/cortex-api/session/createsession) . values `array of 4 numbers` no If the status is "set", this parameters is the new sensitivities. Each value must be between 1 and 10. Bigger number indicates higher sensitivity. You must set one of these 2 parameters: **profile** or **session**. [Read this](https://emotiv.gitbook.io/cortex-api/advanced-bci#profile-name-or-session-id) for details. The array **values** contains the sensitivity of each active actions. The order of the values must follow the order of the active actions, as returned by [mentalCommandActiveAction](https://emotiv.gitbook.io/cortex-api/advanced-bci/mentalcommandactiveaction) . [](https://emotiv.gitbook.io/cortex-api/advanced-bci/mentalcommandactionsensitivity#result) Result ------------------------------------------------------------------------------------------------------- If the status is "get", then the result is an `array of 4 numbers.` If the status is "set", then the result is a success message. [](https://emotiv.gitbook.io/cortex-api/advanced-bci/mentalcommandactionsensitivity#examples) Examples ----------------------------------------------------------------------------------------------------------- ### [](https://emotiv.gitbook.io/cortex-api/advanced-bci/mentalcommandactionsensitivity#get) Get Request [](https://emotiv.gitbook.io/cortex-api/advanced-bci/mentalcommandactionsensitivity#tab-request) Response [](https://emotiv.gitbook.io/cortex-api/advanced-bci/mentalcommandactionsensitivity#tab-response) Copy { "id": 1, "jsonrpc": "2.0", "method": "mentalCommandActionSensitivity", "params": { "cortexToken": "xxx", "profile": "cortex-v2-example", "status": "get" } } Copy { "id": 1, "jsonrpc": "2.0", "result": [5,5,5,5] } ### [](https://emotiv.gitbook.io/cortex-api/advanced-bci/mentalcommandactionsensitivity#set) Set Request [](https://emotiv.gitbook.io/cortex-api/advanced-bci/mentalcommandactionsensitivity#tab-request-1) Response [](https://emotiv.gitbook.io/cortex-api/advanced-bci/mentalcommandactionsensitivity#tab-response-1) Copy { "id": 1, "jsonrpc": "2.0", "method": "mentalCommandActionSensitivity", "params": { "cortexToken": "xxx", "session": "1d5d3655-d570-4731-9faf-967bc5440dc5", "status": "set", "values": [5,7,5,5] } } Copy { "id": 1, "jsonrpc": "2.0", "result": "success" } [PreviousmentalCommandTrainingThreshold](https://emotiv.gitbook.io/cortex-api/advanced-bci/mentalcommandtrainingthreshold) [NextWarning Objects](https://emotiv.gitbook.io/cortex-api/warning-objects) Last updated 5 years ago --- # mentalCommandBrainMap | Cortex API This method returns the brain map of a profile. The brain map is a graphic representation of the mental command training of the user. It indicates which actions are most distinct from each other and from the neutral state as measured by how often the training data is misclassified. The better training you do, the more separated the coordinates will be. Check out the usage in our [BCI](https://emotiv.gitbook.io/emotivbci/mental-commands/brain-space-diagram) app. [](https://emotiv.gitbook.io/cortex-api/advanced-bci/mentalcommandbrainmap#parameters) Parameters ------------------------------------------------------------------------------------------------------ Name Type Required Description cortexToken `string` yes A token returned by [authorize](https://emotiv.gitbook.io/cortex-api/authentication/authorize) . profile `string` no A profile name. session `string` no A session id returned by [createSession](https://emotiv.gitbook.io/cortex-api/session/createsession) . You must set one of these 2 parameters: **profile** or **session**. [Read this](https://emotiv.gitbook.io/cortex-api/advanced-bci#profile-name-or-session-id) for details. [](https://emotiv.gitbook.io/cortex-api/advanced-bci/mentalcommandbrainmap#result) Result ---------------------------------------------------------------------------------------------- The result is an array of objects. Each object is represents a trained actions and contains these fields: Name Type Description action `string` The action name. coordinates `array of 2 numbers` The (x, y) coordinates of this action in the brain map. x is in range \[-1.0, 1.0\] and y is in range \[0.0, 1.0\]. [](https://emotiv.gitbook.io/cortex-api/advanced-bci/mentalcommandbrainmap#examples) Examples -------------------------------------------------------------------------------------------------- Request [](https://emotiv.gitbook.io/cortex-api/advanced-bci/mentalcommandbrainmap#tab-request) Response [](https://emotiv.gitbook.io/cortex-api/advanced-bci/mentalcommandbrainmap#tab-response) Copy { "id": 5891714, "jsonrpc": "2.0", "method": "mentalCommandBrainMap", "params": { "cortexToken": "xxx", "profile": "cortex-v2-example", "session": "1d5d3655-d570-4731-9faf-967bc5440dc5" } } Copy { "id": 5891714, "jsonrpc": "2.0", "result": [\ {\ "action": "neutral",\ "coordinates": [0,0]\ },\ {\ "action": "push",\ "coordinates": [0.08947246481272716,0.1596770200887308]\ }\ ] } [PreviousmentalCommandActiveAction](https://emotiv.gitbook.io/cortex-api/advanced-bci/mentalcommandactiveaction) [NextmentalCommandGetSkillRating](https://emotiv.gitbook.io/cortex-api/advanced-bci/mentalcommandgetskillrating) Last updated 5 years ago --- # Data sample object | Cortex API After you successfully [subscribe](https://emotiv.gitbook.io/cortex-api/data-subscription/subscribe) to a data stream, Cortex will keep sending you data sample objects. See [Data Subscription](https://emotiv.gitbook.io/cortex-api/data-subscription) for details. A data sample object contains these fields: Name Type Description `array` The name of this field is the name of the data stream, for example "eeg", "met", "com"... This array contains the values of a data sample. The type and meaning of each value depend on the stream. sid `string` The session id used to subscribe to this data stream. time `number` The timestamp of this sample. It is the number of **seconds** that have elapsed since 00:00:00 Thursday, 1 January 1970 UTC. To interpret the values in the **** array, you must check the field **cols** from the result of the [subscribe](https://emotiv.gitbook.io/cortex-api/data-subscription/subscribe) method. [](https://emotiv.gitbook.io/cortex-api/data-subscription/data-sample-object#how-to-interpret-the-values) How to interpret the values ------------------------------------------------------------------------------------------------------------------------------------------ Suppose you want to get the mental command stream. You successfully subscribe to the stream "com", and you receive this response: Copy { "id":8, "jsonrpc":"2.0", "result":{ "failure":[], "success":[{\ "cols":["act","pow"],\ "sid":"7f899d66-442b-4bf4-9752-ed06d57b72c3",\ "streamName":"com"\ }] } } The important part is the field **cols**: Copy ["act","pow"] So, the labels for the mental command samples are "act" (action) and "pow" (power), **in this order**. Then you will receive some mental command samples. They look like this: Copy { "com": ["push", 0.376], "sid": "7f899d66-442b-4bf4-9752-ed06d57b72c3", "time": 1559900743.3318 } The values in the array **com** match the labels in the array **cols**. So "push" is the value for "act" , and 0.376 is the value for "pow". Below is the description of the labels used in each data stream. [](https://emotiv.gitbook.io/cortex-api/data-subscription/data-sample-object#eeg) EEG ------------------------------------------------------------------------------------------ The stream "eeg" uses these labels: Label Type Description COUNTER `number` Increment by 1 for each sample, reset to zero every second. INTERPOLATED `number` 0 if this sample was received from the headset. 1 if this sample was interpolated by Cortex. `number` For each EEG sensor, you get 1 value in microvolt. RAW\_CQ `number` Raw value of the contact quality. MARKER\_HARDWARE `number` 1 if a hardware marker was received for this EEG sample. 0 otherwise. MARKERS `array of objects` An array of [markers](https://emotiv.gitbook.io/cortex-api/markers) . It includes the markers sent by all the applications working with this headset. _This label was added in Cortex 2.1_ The maker objects include these fields: Name Type Description applicationId `string` The id of the application that created this marker. recordId `string` The id of the record this marker belongs to. markerId `string` The id of this marker. value `string or number` The value of this marker, set by [injectMarker](https://emotiv.gitbook.io/cortex-api/markers/injectmarker) . label `string` The label of this marker, set by [injectMarker](https://emotiv.gitbook.io/cortex-api/markers/injectmarker) . port `string` The port of this marker, set by [injectMarker](https://emotiv.gitbook.io/cortex-api/markers/injectmarker) . isStop `boolean` False if this is an instance marker. True if this marks the end of an interval marker. Example for an INSIGHT: Copy [\ "COUNTER",\ "INTERPOLATED",\ "AF3","T7","Pz","T8","AF4",\ "RAW_CQ",\ "MARKER_HARDWARE",\ "MARKERS"\ ] Copy { "eeg": [\ 8,\ 0,\ 4202.051, 4235.385, 4146.667, 4210.769, 4108.718,\ 0,\ 0,\ []\ ], "sid": "8bbc58bd-0ab1-404e-b472-dac1322dbe5b", "time": 1590402103.9016 } Example for an EPOC+ or EPOC X: Copy [\ "COUNTER",\ "INTERPOLATED",\ "AF3","F7","F3","FC5","T7","P7","O1","O2","P8","T8","FC6","F4","F8","AF4",\ "RAW_CQ",\ "MARKER_HARDWARE",\ "MARKERS"\ ] Copy { "eeg":[\ 14,\ 0,\ 4161.41,4212.051,4135,4161.538,4195,4184.103,4182,\ 0,\ 0, \ [{\ "applicationId": "com.emotiv.emotivpro",\ "isStop": false,\ "label": "Blink eye while relaxing",\ "markerId": "cc577d88-f404-482a-9629-3e08a0dbcc02",\ "port": "KeyStroke",\ "recordId": "f3c76112-9b7f-43ab-a906-5c15dc4dd55e",\ "value": 22\ }]\ ], "sid":"01e1e0f1-4416-436f-8f9d-5bf21e2e4784", "time":1559902873.8976 } [](https://emotiv.gitbook.io/cortex-api/data-subscription/data-sample-object#motion) Motion ------------------------------------------------------------------------------------------------ The stream "mot" uses these labels: Label Type Description COUNTER\_MEMS `number` Increment by 1 for each sample, reset to zero every second. INTERPOLATED\_MEMS `number` 0 if this sample was received from the headset. 1 if this sample was interpolated by Cortex. ACCX, ACCY, ACCZ `number` X, Y, Z axis of the accelerometer. MAGX, MAGY, MAGZ `number` X, Y, Z axis of the magnetometer. Q0, Q1, Q2, Q3 `number` Quaternions of the gyroscope (newer EMOTIV headsets) GYROX, GYROY, GYROZ `number` X, Y, Z axis of the gyroscope (older EMOTIV headsets) Depending on the headset, the labels for the gyroscope will be GYROX, GYROY, GYROZ or the quaternions. You will never get both these labels. Example for a newer INSIGHT: Copy [\ "COUNTER_MEMS","INTERPOLATED_MEMS",\ "Q0","Q1","Q2","Q3",\ "ACCX","ACCY","ACCZ",\ "MAGX","MAGY","MAGZ"\ ] Copy { "mot": [\ 48,\ 0,\ 0.735341, 0.255615, 0.627441, -0.015869,\ 0.948257, -0.354986, -0.083497,\ -44.656766, -86.970985, 23.221568\ ], "sid": "da18712c-a292-46b7-a5a0-1bd64a3dc6f3", "time": 1590402244.8242 } Example for an older INSIGHT: Copy [\ "COUNTER_MEMS","INTERPOLATED_MEMS",\ "GYROX","GYROY","GYROZ",\ "ACCX","ACCY","ACCZ",\ "MAGX","MAGY","MAGZ"\ ] Copy { "mot":[\ 14,0,\ 8206,8187,8181,\ 4235,8668,8128,\ 8294,8237,7938\ ], "sid":"462c4d75-113f-4664-a443-3aaa02c178d0", "time":1559902927.7428 } [](https://emotiv.gitbook.io/cortex-api/data-subscription/data-sample-object#device-information) Device information ------------------------------------------------------------------------------------------------------------------------ The stream "dev" uses these labels: Label Type Description Battery `number` The battery level of the headset, from 0 to 4. Signal `number` The strength of the wireless signal received from the headset, from 0 to 1. `number` The contact quality of each EEG sensor, from 0 to 4. There is an additional label "OVERALL" at the end of the array. The overall contact quality is a value from 0 to 100 that is calculated from the contact quality of all the EEG sensors. _The label OVERALL was added in Cortex 2.4_ BatteryPercent `number` The battery level of the headset, from 0 to 100. It has the same purpose as the label "Battery", but it is more precise. _This label was added in Cortex 2.7_ Example with INSIGHT: Copy [\ "Battery",\ "Signal",\ ["AF3","T7","Pz","T8","AF4","OVERALL"],\ "BatteryPercent"\ ] Copy { "dev": [\ 3,\ 1,\ [4,1,1,2,4,25],\ 74\ ], "sid": "edcb9287-f6d5-4c22-9b3f-783d72750f24", "time": 1590403053.5002 } Example with EPOC+ or EPOC X: Copy [\ "Battery","Signal",\ ["AF3","F7","F3","FC5","T7","P7","O1","O2","P8","T8","FC6","F4","F8","AF4","OVERALL"],\ "BatteryPercent"\ ] Copy { "dev":[\ 4,2,\ [2,0,1,0,1,0,0,4,0,1,0,1,0,1,24],\ 98\ ], "sid":"d02af7d5-2bc0-46f4-8804-026a42ad7841", "time":1559903194.6721 } [](https://emotiv.gitbook.io/cortex-api/data-subscription/data-sample-object#eeg-quality) EEG Quality ---------------------------------------------------------------------------------------------------------- Please read this [page](https://emotiv.gitbook.io/cortex-manual/setting_up_your_eeg_device/view_contact_quality_map/contact-quality-cq-vs.-eeg-quality-eq) to understand the difference between the contact quality and the EEG quality. The stream "eq" uses these labels: Label Type Description batteryPercent `number` The battery level of the headset, from 0 to 100. overall `number` A value from 0 to 100 that is calculated from the EEG quality of all the EEG sensors. sampleRateQuality `number` A float value from 0 to 1 that evaluates the actual sample rate of the EEG data coming from the headset. If the wireless connection between the headset and the computer is perfect (no data loss) then the sample rate quality is 1. If X percent of the EEG samples were lost over the last 2 seconds, then the SRQ is (100 - X) / 100. If we lost more than 300 ms of data over the last 2 seconds, then the SRQ takes the special value -1. `number` The EEG quality of each EEG sensor, from 0 to 4. _This stream was added in Cortex 2.7.0_ Example with INSIGHT: Copy [\ "batteryPercent",\ "overall",\ "sampleRateQuality",\ "AF3","T7","Pz","T8","AF4"\ ] Copy { "eq": [\ 78,\ 25,\ 1.0,\ 4,1,1,2,4\ ], "sid": "edcb9287-f6d5-4c22-9b3f-783d72750f24", "time": 1590403053.5002 } [](https://emotiv.gitbook.io/cortex-api/data-subscription/data-sample-object#band-power) Band power -------------------------------------------------------------------------------------------------------- This stream gives you the power of the EEG data. The values are absolute, the unit is uV^2 / Hz. Each sample is calculated based on the last 2 seconds of EEG data. The labels of the stream "pow" use the format "SENSOR/BAND", when SENSOR is the name of the EEG sensor and BAND is the name of the band power. Cortex provides these bands: * theta (4-8Hz) * alpha (8-12Hz) * betaL (low beta, 12-16Hz) * betaH (high beta, 16-25Hz) * gamma (25-45Hz) So the low beta for AF3 has the label "AF3/betaL". The gamma for Pz has the label "Pz/gamma". Example with INSIGHT: Copy [\ "AF3/theta","AF3/alpha","AF3/betaL","AF3/betaH","AF3/gamma",\ "T7/theta","T7/alpha","T7/betaL","T7/betaH","T7/gamma",\ "Pz/theta","Pz/alpha","Pz/betaL","Pz/betaH","Pz/gamma",\ "T8/theta","T8/alpha","T8/betaL","T8/betaH","T8/gamma",\ "AF4/theta","AF4/alpha","AF4/betaL","AF4/betaH","AF4/gamma"\ ] Copy { "pow": [\ 1.246,0.706,0.566,1.065,0.602,\ 10.293,4.374,11.638,351.767,40.273,\ 50.159,4.585,0.467,1.481,3.764,\ 9.861,3.139,2.094,3.342,4.452,\ 75.652,1.972,2.932,2.555,7.005\ ], "sid": "ff0245d1-9531-424c-9f6d-9f736f465516", "time": 1590403491.0307 } Example with EPOC+ or EPOC X: Copy [\ "AF3/theta","AF3/alpha","AF3/betaL","AF3/betaH","AF3/gamma",\ "F7/theta","F7/alpha","F7/betaL","F7/betaH","F7/gamma",\ "F3/theta","F3/alpha","F3/betaL","F3/betaH","F3/gamma",\ "FC5/theta","FC5/alpha","FC5/betaL","FC5/betaH","FC5/gamma",\ "T7/theta","T7/alpha","T7/betaL","T7/betaH","T7/gamma",\ "P7/theta","P7/alpha","P7/betaL","P7/betaH","P7/gamma",\ "O1/theta","O1/alpha","O1/betaL","O1/betaH","O1/gamma",\ "O2/theta","O2/alpha","O2/betaL","O2/betaH","O2/gamma",\ "P8/theta","P8/alpha","P8/betaL","P8/betaH","P8/gamma",\ "T8/theta","T8/alpha","T8/betaL","T8/betaH","T8/gamma",\ "FC6/theta","FC6/alpha","FC6/betaL","FC6/betaH","FC6/gamma",\ "F4/theta","F4/alpha","F4/betaL","F4/betaH","F4/gamma",\ "F8/theta","F8/alpha","F8/betaL","F8/betaH","F8/gamma",\ "AF4/theta","AF4/alpha","AF4/betaL","AF4/betaH","AF4/gamma"\ ] Copy { "pow":[\ 0.225,0.213,0.537,0.19,0.34,\ 0.511,0.808,1.706,0.839,0.416,\ ...\ 0.92,0.469,1.657,1.443,0.912,\ 2.675,0.824,0.951,0.303,0.881\ ], "sid":"f581b2bb-c043-4a00-8737-1e8e09a9a81b", "time":1559902987.133 } [](https://emotiv.gitbook.io/cortex-api/data-subscription/data-sample-object#performance-metric) Performance metric ------------------------------------------------------------------------------------------------------------------------ The stream "met" uses these labels: Label Type Description eng `number` Engagement exc `number` Excitement lex `number` Long term excitement. It is calculated from the excitement values of the last minute. str `number` Stress / Frustration rel `number` Relaxation int `number` Interest / Affinity foc `number` Focus eng.isActive `boolean` Active flag for engagement. exc.isActive `boolean` Active flag for excitement. str.isActive `boolean` Active flag for stress / frustration. rel.isActive `boolean` Active flag for relaxation. int.isActive `boolean` Active flag for interest / affinity. foc.isActive `boolean` Active flag for focus. Each performance metric is a decimal number between 0 and 1. Zero means "low power", 1 means "high power". So for example, a value of 0.1 for "eng" means that the user is not engaged, a value of 1.0 means the user is very engaged. If the detection cannot run because of a poor EEG signal quality then the value is **null**. For each performance metrics, the flag **isActive** is **true** if the detection of this metrics is running properly. It is **false** if the detection cannot run. This can happen if the EEG signal from the headset is of poor quality. _This flag was added in Cortex 2.2.1_ Copy [\ "eng.isActive","eng",\ "exc.isActive","exc","lex",\ "str.isActive","str",\ "rel.isActive","rel",\ "int.isActive","int",\ "foc.isActive","foc"\ ] Copy { "met":[false,null,false,null,null,false,null,true,0.266589,false,null,true,0.098421], "sid":"6a68b92a-cb1f-4062-bf1f-74424fbae065", "time":1559903137.1741 } [](https://emotiv.gitbook.io/cortex-api/data-subscription/data-sample-object#mental-command) Mental command ---------------------------------------------------------------------------------------------------------------- The stream "com" uses these labels: Label Type Description act `string` A mental command action. Use the method [getDetectionInfo](https://emotiv.gitbook.io/cortex-api/bci/getdetectioninfo) to get the possible actions. pow `number` The power of the action. It is a decimal number between 0 and 1, zero means "low power", 1 means "high power". Copy ["act","pow"] Copy { "com":["pull",0.564], "sid":"79cc669b-af2e-465a-bdc2-0e9bd4aebe80", "time":1559903099.348 } [](https://emotiv.gitbook.io/cortex-api/data-subscription/data-sample-object#facial-expression) Facial expression ---------------------------------------------------------------------------------------------------------------------- The stream "fac" uses these labels: Label Type Description eyeAct `string` The action of the eyes. uAct `string` The upper face action. uPow `number` Power of the upper face action. Zero means "low power", 1 means "high power". lAct `string` The lower face action. lPow `number` Power of the lower face action. Zero means "low power", 1 means "high power". Use the method [getDetectionInfo](https://emotiv.gitbook.io/cortex-api/bci/getdetectioninfo) to get the possible actions. Copy ["eyeAct","uAct","uPow","lAct","lPow"] Copy { "fac":["neutral","neutral",0,"clench",0.0576], "sid":"a4f69c56-9769-4a4d-950c-490eb5ebe372", "time":1559903035.2961 } [](https://emotiv.gitbook.io/cortex-api/data-subscription/data-sample-object#system-events) System events -------------------------------------------------------------------------------------------------------------- The stream "sys" is used for the [training](https://emotiv.gitbook.io/cortex-api/bci/training) of the mental command and facial expression. It uses these labels: Label Type Description event `string` The name of the detection. Can be "mentalCommand" or "facialExpression" msg `string` Depends on the detection. Use the method [getDetectionInfo](https://emotiv.gitbook.io/cortex-api/bci/getdetectioninfo) to get the possible values, check the field **events** in the result. For example, just after you start a training for the mental command detection, you receive a system event like this: Copy ["event","msg"] Copy { "sid":"c7e7b527-2b2e-4ec6-8c74-cf16aae8540b", "sys":["mentalCommand","MC_Started"], "time":1559903035.2961 } [Previousunsubscribe](https://emotiv.gitbook.io/cortex-api/data-subscription/unsubscribe) [NextRecords](https://emotiv.gitbook.io/cortex-api/records) Last updated 4 years ago --- # Warning Objects | Cortex API In addition to method responses and [data samples](https://emotiv.gitbook.io/cortex-api/data-subscription/data-sample-object) , Cortex can send a third type of message, called warnings. These warnings inform your application about important events, like when the user logs in or out, or when a training profile is loaded or unloaded for a headset. [](https://emotiv.gitbook.io/cortex-api/warning-objects#description) Description ------------------------------------------------------------------------------------- A warning object contain these fields: Name Type Description jsonrpc `string` Always has the value "2.0". warning `object` An object with the fields "code" and "message". The warning object has 2 fields: Name Type Description code `number` The code of this warning. The possible codes are documented below. message `any` The type and value of this field depends on the code. For most of the warnings it is just a string, but it can also be an object. See the examples below. [](https://emotiv.gitbook.io/cortex-api/warning-objects#warning-codes) Warning Codes ----------------------------------------------------------------------------------------- The possible codes are: Code Description 0 All the data streams you subscribed to have been automatically canceled by Cortex. This can happen if the headset was disconnected. 1 Your session was automatically closed by Cortex. This can happen if the headset was disconnected. 2 The user has logged in with EMOTIV App. 3 The user has logged out with EMOTIV App. 9 The user approved your application in EMOTIV App. 10 The user declined your application in EMOTIV App. 13 A training profile was loaded for a headset using [setupProfile](https://emotiv.gitbook.io/cortex-api/bci/setupprofile) 14 A training profile was unloaded for a headset using [setupProfile](https://emotiv.gitbook.io/cortex-api/bci/setupprofile) . 15 A training profile was automatically unloaded by Cortex. This can happen if the headset was disconnected, or if the application that loaded this profile was disconnected from Cortex. 17 The user accepted the EULA in EMOTIV App. 18 The record data has been successfully saved. Cortex sends this warning when a record is done with some long-run post processing after record is stopped. 19 The available disk space is low. Cortex send this warning when there is less then 1 GB available of the hard drive. _This warning was added in Cortex 2.2.1_ 20 The available disk space is critically low. Cortex send this warning when there is less then 300 MB available of the hard drive. When this happens Cortex automatically disconnect all the headsets. You cannot [connect a headset](https://emotiv.gitbook.io/cortex-api/headset/controldevice) until the user free up some space. _This warning was added in Cortex 2.2.1_ 21 The user has changed the [opt-out](https://emotiv.gitbook.io/cortex-api/records/configoptout) configuration. _This warning was added in Cortex 2.2.1_ 22 Cortex has changed the [opt-out](https://emotiv.gitbook.io/cortex-api/records/configoptout) configuration. This can happen when the license of the user is updated. _This warning was added in Cortex 2.2.1_ 26 The license of the user will expire in a few days. _This warning was added in Cortex 2.3.0_ 30 Data post-processing finishes. After record stops, Cortex still needs to run a lengthy process to improve timestamps or combine broken sessions. If you want to export the record just after it stops, you should wait until this warning is emitted from Cortex. 100 and 101 Cortex failed to connect to a headset. If the headset uses a Bluetooth connection, then you should try to disconnect the headset from the Bluetooth manager of the OS. 102 Cortex reached a timeout while trying to connect to a headset. This can happen if the wireless connection is of poor quality. 103 Cortex disconnected a headset because it didn't receive any data from this headset for more than 30 seconds. This can happen if the headset goes out of range of the computer, or if the wireless connection is of poor quality. 104 Cortex successfully connected to a headset. 110 Cortex successfully updated the configuration of a headset. See [updateHeadset](https://emotiv.gitbook.io/cortex-api/headset/updateheadset) . _This warning was added in Cortex 2.4_ 111 Cortex failed to update the configuration of a headset. See [updateHeadset](https://emotiv.gitbook.io/cortex-api/headset/updateheadset) . _This warning was added in Cortex 2.4_ 112 Cortex successfully updated a headset but the new configuration can only work with a USB dongle connection. The configuration is not compatible with a Bluetooth connection. See [updateHeadset](https://emotiv.gitbook.io/cortex-api/headset/updateheadset) . _This warning was added in Cortex 2.5_ 113 Cortex failed to connect to an EPOC+ or EPOC X headset with Bluetooth. The configuration of the headset is not compatible with a Bluetooth connection. See [controlDevice](https://emotiv.gitbook.io/cortex-api/headset/controldevice) . _This warning was added in Cortex 2.5_ 142 Cortex finishes headset scanning which is started by [controlDevice](https://emotiv.gitbook.io/cortex-api/headset/controldevice) with "refresh" command. [](https://emotiv.gitbook.io/cortex-api/warning-objects#examples) Examples ------------------------------------------------------------------------------- ### [](https://emotiv.gitbook.io/cortex-api/warning-objects#id-0-data-stream-unsubscribed) 0 - Data stream unsubscribed Copy { "jsonrpc": "2.0", "warning": { "code": 0, "message": { "behavior": "Cortex has stopped all the subscriptions of session 866b8437-2380-4392-9a35-3d5957eaf95d.", "sessionId": "866b8437-2380-4392-9a35-3d5957eaf95d" } } } ### [](https://emotiv.gitbook.io/cortex-api/warning-objects#id-1-session-closed) 1 - Session closed Copy { "jsonrpc": "2.0", "warning": { "code": 1, "message": { "behavior": "Cortex has closed the session 866b8437-2380-4392-9a35-3d5957eaf95d.", "sessionId": "866b8437-2380-4392-9a35-3d5957eaf95d" } } } ### [](https://emotiv.gitbook.io/cortex-api/warning-objects#id-2-user-login) 2 - User login Copy { "jsonrpc": "2.0", "warning": { "code": 2, "message": "User jon.snow has already logged in to Cortex." } } ### [](https://emotiv.gitbook.io/cortex-api/warning-objects#id-3-user-logout) 3 - User logout Copy { "jsonrpc": "2.0", "warning": { "code": 3, "message": "User jon.snow has already logged out from Cortex." } } ### [](https://emotiv.gitbook.io/cortex-api/warning-objects#id-9-app-access-granted) 9 - App access granted Copy { "jsonrpc": "2.0", "warning": { "code": 9, "message": "The access right to the cortex-examples has been granted" } } ### [](https://emotiv.gitbook.io/cortex-api/warning-objects#id-10-app-access-declined) 10 - App access declined Copy { "jsonrpc": "2.0", "warning": { "code": 10, "message": "The access right to the cortex-examples has been rejected" } } ### [](https://emotiv.gitbook.io/cortex-api/warning-objects#id-13-profile-loaded) 13 - Profile loaded Copy { "jsonrpc": "2.0", "warning": { "code": 13, "message": { "behavior": "Profile is loaded", "headset": "INSIGHT-12341234", "profile": "foo" } } } ### [](https://emotiv.gitbook.io/cortex-api/warning-objects#id-14-15-profile-unloaded) 14 - 15 - Profile unloaded Copy { "jsonrpc": "2.0", "warning": { "code": 14, "message": { "behavior": "Profile is unloaded", "headset": "INSIGHT-12341234", "profile": "foo" } } } Copy { "jsonrpc": "2.0", "warning": { "code": 15, "message": { "behavior": "Cortex has unloaded the profile", "headset": "INSIGHT-12341234", "profile": "foo" } } } ### [](https://emotiv.gitbook.io/cortex-api/warning-objects#id-17-eula-accepted) 17 - EULA accepted Copy { "jsonrpc": "2.0", "warning": { "code": 17, "message": "User jon.snow has accepted the EULA via EMOTIV App" } } ### [](https://emotiv.gitbook.io/cortex-api/warning-objects#id-19-20-disk-space) 19 - 20 - Disk space Copy { "jsonrpc": "2.0", "warning": { "code": 19, "message": { "behavior": "The available disk space is low.", "rootPath": "/", "volumeName": "MAC" } } } Copy { "jsonrpc": "2.0", "warning": { "code": 20, "message": { "behavior": "The available disk space is critically low. Cortex will disconnect all the headsets.", "rootPath": "C", "volumeName": "Windows" } } } ### [](https://emotiv.gitbook.io/cortex-api/warning-objects#id-21-22-opt-out-configuration-changed) 21 - 22 - Opt-out configuration changed Copy { "jsonrpc": "2.0", "warning": { "code": 21, "message": { "currOptOut": true, "forceOptOut": false, "message": "User has changed the Opt-out configuration.", "optOutAvail": true } } } Copy { "jsonrpc": "2.0", "warning": { "code": 22, "message": { "currOptOut": true, "forceOptOut": false, "message": "The Opt-out configuration has been automatically changed due to change in license.", "optOutAvail": true } } } ### [](https://emotiv.gitbook.io/cortex-api/warning-objects#id-100-101-102-113-failed-to-connect-to-a-headset) 100 - 101 - 102 - 113 - Failed to connect to a headset Copy { "jsonrpc": "2.0", "warning": { "code": 100, "message": { "headsetId": "EPOCPLUS-3B9AXXXX", "behavior": "Headset cannot be connected. Please try again." } } } Copy { "jsonrpc": "2.0", "warning": { "code": 101, "message": { "headsetId": "EPOCPLUS-3B9AXXXX", "behavior": "Headset cannot be connected. Please try again." } } } Copy { "jsonrpc": "2.0", "warning": { "code": 102, "message": { "headsetId": "EPOCPLUS-3B9AXXXX", "behavior": "Headset cannot be connected due to connection timeout." } } } Copy { "jsonrpc": "2.0", "warning": { "code": 113, "message": { "headsetId": "EPOCPLUS-3B9AXXXX", "behavior": "Please disable motion data and set EEG rate to 128Hz in headset configuration when using Bluetooth connection, or use USB dongle." } } } ### [](https://emotiv.gitbook.io/cortex-api/warning-objects#id-103-headset-disconnected) 103 - Headset disconnected Copy { "jsonrpc": "2.0", "warning": { "code": 103, "message": { "headsetId": "EPOCPLUS-3B9AXXXX", "behavior": "Headset has been disconnected due to connection timeout." } } } ### [](https://emotiv.gitbook.io/cortex-api/warning-objects#id-104-headset-connected) 104 - Headset connected Copy { "jsonrpc": "2.0", "warning": { "code": 104, "message": { "headsetId": "EPOCPLUS-3B9AXXXX", "behavior": "The headset is connected" } } } ### [](https://emotiv.gitbook.io/cortex-api/warning-objects#id-110-headset-update-successful) 110 - Headset update successful Copy { "jsonrpc": "2.0", "warning": { "code": 110, "message": { "headsetId": "EPOCPLUS-3B9AXXXX", "behavior": "Headset configuration is updated." } } } ### [](https://emotiv.gitbook.io/cortex-api/warning-objects#id-111-headset-update-failed) 111 - Headset update failed Copy { "jsonrpc": "2.0", "warning": { "code": 111, "message": { "headsetId": "EPOCPLUS-3B9AXXXX", "behavior": "Headset configuration update failed." } } } ### [](https://emotiv.gitbook.io/cortex-api/warning-objects#id-112-headset-configuration-cannot-work-with-bluetooth) 112 - Headset configuration cannot work with Bluetooth Copy { "jsonrpc": "2.0", "warning": { "code": 112, "message": { "headsetId": "EPOCPLUS-3B9AXXXX", "behavior": "This headset configuration cannot work with BTLE on this platform." } } } [PreviousmentalCommandActionSensitivity](https://emotiv.gitbook.io/cortex-api/advanced-bci/mentalcommandactionsensitivity) [NextError Codes](https://emotiv.gitbook.io/cortex-api/error-codes) Last updated 1 year ago --- # mentalCommandActiveAction | Cortex API This method is to get or set the active actions for the mental command detection. If an action is inactive, then the mental command detection won't detect it anymore. Deactivate an action do not erase its trainings from the profile. Check out [adding new commands](https://emotiv.gitbook.io/emotivbci/mental-commands/adding-new-commands) and [deactivating commands](https://emotiv.gitbook.io/emotivbci/mental-commands/deactivating-commands) in our BCI app. [](https://emotiv.gitbook.io/cortex-api/advanced-bci/mentalcommandactiveaction#parameters) Parameters ---------------------------------------------------------------------------------------------------------- Name Type Required Description cortexToken `string` yes A token returned by [authorize](https://emotiv.gitbook.io/cortex-api/authentication/authorize) . status `string` yes Must be "set" or "get". profile `string` no A profile name. session `string` no A session id returned by [createSession](https://emotiv.gitbook.io/cortex-api/session/createsession) . actions `array of string` no If the **status** is "set", this parameter is the list of actions to activate. You can't activate more than 4 actions. This doesn't include "neutral". You must set one of these 2 parameters: **profile** or **session**. [Read this](https://emotiv.gitbook.io/cortex-api/advanced-bci#profile-name-or-session-id) for details. [](https://emotiv.gitbook.io/cortex-api/advanced-bci/mentalcommandactiveaction#result) Result -------------------------------------------------------------------------------------------------- If the **status** is "get", then the result is an `array of strings` that is the list of active actions. If the **status** is "set", then the result is an object with these fields: Name Type Description actions `array of strings` The active actions. message `string` A success message. [](https://emotiv.gitbook.io/cortex-api/advanced-bci/mentalcommandactiveaction#examples) Examples ------------------------------------------------------------------------------------------------------ ### [](https://emotiv.gitbook.io/cortex-api/advanced-bci/mentalcommandactiveaction#get) Get Request [](https://emotiv.gitbook.io/cortex-api/advanced-bci/mentalcommandactiveaction#tab-request) Response [](https://emotiv.gitbook.io/cortex-api/advanced-bci/mentalcommandactiveaction#tab-response) Copy { "id": 544314, "jsonrpc": "2.0", "method": "mentalCommandActiveAction", "params": { "cortexToken": "xxx", "profile": "cortex-v2-example", "status": "get" } } Copy { "id": 544314, "jsonrpc": "2.0", "result": [\ "neutral",\ "push",\ "pull"\ ] } ### [](https://emotiv.gitbook.io/cortex-api/advanced-bci/mentalcommandactiveaction#set) Set Request [](https://emotiv.gitbook.io/cortex-api/advanced-bci/mentalcommandactiveaction#tab-request-1) Response [](https://emotiv.gitbook.io/cortex-api/advanced-bci/mentalcommandactiveaction#tab-response-1) Copy { "id": 411114, "jsonrpc": "2.0", "method": "mentalCommandActiveAction", "params": { "actions": [\ "push"\ ], "cortexToken": "xxx", "session": "1d5d3655-d570-4731-9faf-967bc5440dc5", "status": "set" } } Copy { "id": 411114, "jsonrpc": "2.0", "result": { "actions": [\ "push"\ ], "message": "Set MentalCommand active actions successfully" } } [PreviousfacialExpressionThreshold](https://emotiv.gitbook.io/cortex-api/advanced-bci/facialexpressionthreshold) [NextmentalCommandBrainMap](https://emotiv.gitbook.io/cortex-api/advanced-bci/mentalcommandbrainmap) Last updated 5 years ago --- # Release Notes | Cortex API [](https://emotiv.gitbook.io/cortex-api/release-notes#cortex-4.7.3-may-2025) Cortex 4.7.3 - May 2025 --------------------------------------------------------------------------------------------------------- * Fix some cloud synchronization bugs related to records/subjects. [](https://emotiv.gitbook.io/cortex-api/release-notes#cortex-4.6.1-mar-2025) Cortex 4.6.1 - Mar 2025 --------------------------------------------------------------------------------------------------------- * Hot fix MacOS security policy update. [](https://emotiv.gitbook.io/cortex-api/release-notes#cortex-4.6.0-mar-2025) Cortex 4.6.0 - Mar 2025 --------------------------------------------------------------------------------------------------------- * Support for new EpocX firmware 740 with updated encryption method for improved security. [](https://emotiv.gitbook.io/cortex-api/release-notes#cortex-4.5.7-feb-2025) Cortex 4.5.7 - Feb 2025 --------------------------------------------------------------------------------------------------------- * Hot fix for an issue related to the new developer license [](https://emotiv.gitbook.io/cortex-api/release-notes#cortex-4.5.6-jan-2025) Cortex 4.5.6 - Jan 2025 --------------------------------------------------------------------------------------------------------- * Support the new developer license (for Consumer headsets) * Bug fixes [](https://emotiv.gitbook.io/cortex-api/release-notes#cortex-4.5.3-jan-2025) Cortex 4.5.3 - Jan 2025 --------------------------------------------------------------------------------------------------------- * Support MW20 headset (beta support, internal use only) * Bug fixes [](https://emotiv.gitbook.io/cortex-api/release-notes#cortex-4.4.7-dec-2024) Cortex 4.4.7 - Dec 2024 --------------------------------------------------------------------------------------------------------- * Data synchronization improvement: download records from latest to oldest [](https://emotiv.gitbook.io/cortex-api/release-notes#cortex-4.4.5-nov-2024) Cortex 4.4.5 - Nov 2024 --------------------------------------------------------------------------------------------------------- * Bug fixes for data synchronization issue [](https://emotiv.gitbook.io/cortex-api/release-notes#cortex-4.4.2-oct-2024) Cortex 4.4.2 - Oct 2024 --------------------------------------------------------------------------------------------------------- * Bug fixes for data synchronization issue, unexpected empty record issue * Interpolate CQ data for MN8 when there is data lost [](https://emotiv.gitbook.io/cortex-api/release-notes#cortex-4.3.15-sep-2024) Cortex 4.3.15 - Sep 2024 ----------------------------------------------------------------------------------------------------------- * Hot fix for authentication issue on LABS/Builder webapp. [](https://emotiv.gitbook.io/cortex-api/release-notes#cortex-4.3.14-sep-2024) Cortex 4.3.14 - Sep 2024 ----------------------------------------------------------------------------------------------------------- * Authentication flow improvement [](https://emotiv.gitbook.io/cortex-api/release-notes#cortex-4.3.7-aug-2024) Cortex 4.3.7 - Aug 2024 --------------------------------------------------------------------------------------------------------- * Bug fixes [](https://emotiv.gitbook.io/cortex-api/release-notes#cortex-4.3.5-aug-2024) Cortex 4.3.5 - Aug 2024 --------------------------------------------------------------------------------------------------------- * Support upgrade firmware of Flex 2 via native Bluetooth connection [](https://emotiv.gitbook.io/cortex-api/release-notes#cortex-4.3.3-jul-2024) Cortex 4.3.3 - Jul 2024 --------------------------------------------------------------------------------------------------------- * Improve firmware upgrading [](https://emotiv.gitbook.io/cortex-api/release-notes#cortex-4.3.0-jun-2024) Cortex 4.3.0 - Jun 2024 --------------------------------------------------------------------------------------------------------- * Support data sharing of organization * Support Flex 2 via native Bluetooth connection * Bug fixes [](https://emotiv.gitbook.io/cortex-api/release-notes#cortex-4.2.7-jun-2024) Cortex 4.2.7 - Jun 2024 --------------------------------------------------------------------------------------------------------- * Bug fix for extender firmware upgrade (from very old version) [](https://emotiv.gitbook.io/cortex-api/release-notes#cortex-4.2.4-may-2024) Cortex 4.2.4 - May 2024 --------------------------------------------------------------------------------------------------------- * A hotfix for marker issue [](https://emotiv.gitbook.io/cortex-api/release-notes#cortex-4.2.1-apr-2024) Cortex 4.2.1 - Apr 2024 --------------------------------------------------------------------------------------------------------- * Cortex API usage tracking [](https://emotiv.gitbook.io/cortex-api/release-notes#cortex-4.2.0-apr-2024) Cortex 4.2.0 - Apr 2024 --------------------------------------------------------------------------------------------------------- * Time synchronization between different Emotiv headsets [](https://emotiv.gitbook.io/cortex-api/release-notes#cortex-3.8.0-jan-2024) Cortex 3.8.0 - Jan 2024 --------------------------------------------------------------------------------------------------------- * Support firmware version x2F06 of Flex headset. [](https://emotiv.gitbook.io/cortex-api/release-notes#cortex-3.7.8-jan-2024) Cortex 3.7.8 - Jan 2024 --------------------------------------------------------------------------------------------------------- * Improve headset setting feature for Flex * Bug fixes [](https://emotiv.gitbook.io/cortex-api/release-notes#cortex-3.7.5-jan-2024) Cortex 3.7.5 - Jan 2024 --------------------------------------------------------------------------------------------------------- * Support EDF+/BDF+ file format, see [exportRecord](https://emotiv.gitbook.io/cortex-api/records/exportrecord) API. * Bug fixes [](https://emotiv.gitbook.io/cortex-api/release-notes#cortex-3.7.2-dec-2023) Cortex 3.7.2 - Dec 2023 --------------------------------------------------------------------------------------------------------- * Improve timestamp algorithm for Flex. * Bug fixes [](https://emotiv.gitbook.io/cortex-api/release-notes#cortex-3.7.1-nov-2023) Cortex 3.7.1 - Nov 2023 --------------------------------------------------------------------------------------------------------- * Update new certificate of the Cortex web socket server. The certificate before version 3.7.1 expires on Dec 9, 2023. * Bug fixes [](https://emotiv.gitbook.io/cortex-api/release-notes#cortex-3.7.0-nov-2023) Cortex 3.7.0 - Nov 2023 --------------------------------------------------------------------------------------------------------- * Support Flex * Upgrade the core framework for BLE connection. * Upgrade to OpenSSL 3.0, TLS 1.2 * Improve data quality * New device scanning workflow (see controlDevice with "refresh" command mentioned [here](https://emotiv.gitbook.io/cortex-api/headset/controldevice) ). * Performance enhancement and minor bug fixes [](https://emotiv.gitbook.io/cortex-api/release-notes#cortex-3.6.5-aug-2023) Cortex 3.6.5 - Aug 2023 --------------------------------------------------------------------------------------------------------- * Training profiles are now supported for only specific types of Emotiv headset. All training profiles created before 3.6.5 will become readonly profiles. * See [Readonly training profile](https://emotiv.gitbook.io/cortex-api/bci/readonly-profile) . * See new update on [queryProfile](https://emotiv.gitbook.io/cortex-api/bci/queryprofile) API. * Bug fixes [](https://emotiv.gitbook.io/cortex-api/release-notes#cortex-3.5.6-jul-2023) Cortex 3.5.6 - Jul 2023 --------------------------------------------------------------------------------------------------------- * Attention detection will replace Focus detection * Focus detection can still be found via `exportRecord` API with `includeDeprecatedPM` option. [](https://emotiv.gitbook.io/cortex-api/release-notes#cortex-3.5.5-jun-2023) Cortex 3.5.5 - Jun 2023 --------------------------------------------------------------------------------------------------------- * Save more data into database, even there is no record. [](https://emotiv.gitbook.io/cortex-api/release-notes#cortex-3.5.4-jun-2023) Cortex 3.5.4 - Jun 2023 --------------------------------------------------------------------------------------------------------- * Update export policy on EmotivPRO with records from EmotivPRO mobile. [](https://emotiv.gitbook.io/cortex-api/release-notes#cortex-3.5.3-may-2023) Cortex 3.5.3 - May 2023 --------------------------------------------------------------------------------------------------------- * Support Xtrodes devices on EmotivPRO [](https://emotiv.gitbook.io/cortex-api/release-notes#cortex-3.5.2-apr-2023) Cortex 3.5.2 - Apr 2023 --------------------------------------------------------------------------------------------------------- * Roll back the core framework for BLE connection (since the new version in 3.5.0/3.5.1 is not really stable). * Bug fixes [](https://emotiv.gitbook.io/cortex-api/release-notes#cortex-3.5.1-march-2023) Cortex 3.5.1 - March 2023 ------------------------------------------------------------------------------------------------------------- * Hotfix for BTLE connection. [](https://emotiv.gitbook.io/cortex-api/release-notes#cortex-3.5.0-march-2023) Cortex 3.5.0 - March 2023 ------------------------------------------------------------------------------------------------------------- * Improve timestamp correction algorithm. * exportRecord() API will also export survey data in CSV format (along with JSON format). * Upgrade the core framework for BLE connection. [](https://emotiv.gitbook.io/cortex-api/release-notes#cortex-3.4.2-october-2022) Cortex 3.4.2 - October 2022 ----------------------------------------------------------------------------------------------------------------- * New system requirement on Raspberry Pi: * Raspberry Pi OS - Debian version 11 (Beta release, 32-bit) [](https://emotiv.gitbook.io/cortex-api/release-notes#cortex-3.4.1-september-2022) Cortex 3.4.1 - September 2022 --------------------------------------------------------------------------------------------------------------------- * New system requirement on MacOS/Windows: * Windows 10 (64-bit) v1809+ * macOS 10.14 Mojave or above [](https://emotiv.gitbook.io/cortex-api/release-notes#cortex-3.2-january-2022) Cortex 3.2 - January 2022 ------------------------------------------------------------------------------------------------------------- * Support the new [Insight 2.0](https://www.emotiv.com/insight/) headset [](https://emotiv.gitbook.io/cortex-api/release-notes#cortex-3.1.3-december-2021) Cortex 3.1.3 - December 2021 ------------------------------------------------------------------------------------------------------------------- * Support macOS 12.1 [](https://emotiv.gitbook.io/cortex-api/release-notes#cortex-3.1.1-3.1.2-december-2021) Cortex 3.1.1, 3.1.2 - December 2021 -------------------------------------------------------------------------------------------------------------------------------- * Bug fixes on some instances where the database cannot be initialised properly [](https://emotiv.gitbook.io/cortex-api/release-notes#cortex-3.1-december-2021) Cortex 3.1 - December 2021 --------------------------------------------------------------------------------------------------------------- * New method added [syncWithHeadsetClock](https://emotiv.gitbook.io/cortex-api/headset/syncwithheadsetclock) [](https://emotiv.gitbook.io/cortex-api/release-notes#cortex-3.0.1-november-2021) Cortex 3.0.1 - November 2021 ------------------------------------------------------------------------------------------------------------------- * No change in the Cortex API * Bug fixes, make the Bluetooth connection more stable [](https://emotiv.gitbook.io/cortex-api/release-notes#cortex-3.0-october-2021) Cortex 3.0 - October 2021 ------------------------------------------------------------------------------------------------------------- * No change in the Cortex API * EMOTIV App is now called [EMOTIV Launcher](https://emotiv.gitbook.io/emotiv-launcher/) * Cortex 3.0 is not compatible with Windows 8. See the [system requirements](https://app.gitbook.com/@emotiv/s/system-requirements/cortex-api) . [](https://emotiv.gitbook.io/cortex-api/release-notes#cortex-2.7.3-august-2021) Cortex 2.7.3 - August 2021 --------------------------------------------------------------------------------------------------------------- * Fixed the scaled value from Interest / Valance that may go out of range in some cases. * Fixed Focus / Stress performance metrics with EPOC X. [](https://emotiv.gitbook.io/cortex-api/release-notes#cortex-2.7.2-july-2021) Cortex 2.7.2 - July 2021 ----------------------------------------------------------------------------------------------------------- * No change in the Cortex API [](https://emotiv.gitbook.io/cortex-api/release-notes#cortex-2.7.1-may-2021) Cortex 2.7.1 - May 2021 --------------------------------------------------------------------------------------------------------- * It is now possible to run all the detections with an EPOC Flex headset. This requires a specific EEG sensor mapping. See [Data Subscription](https://emotiv.gitbook.io/cortex-api/data-subscription) for details. * Cortex is now available for Raspberry Pi OS Check the [Getting Started](https://emotiv.gitbook.io/cortex-api) page to see all the supported headsets and platforms. [](https://emotiv.gitbook.io/cortex-api/release-notes#cortex-2.7.0-april-2021) Cortex 2.7.0 - April 2021 ------------------------------------------------------------------------------------------------------------- * New data stream "eq" to get the EEG quality. See [Data sample object](https://emotiv.gitbook.io/cortex-api/data-subscription/data-sample-object#eeg-quality) . Please read this [page](https://emotiv.gitbook.io/cortex-manual/setting_up_your_eeg_device/view_contact_quality_map/contact-quality-cq-vs.-eeg-quality-eq) to understand the difference between the contact quality and the EEG quality. * New label "BatteryPercent" added to the "dev" data stream. See [Data sample object](https://emotiv.gitbook.io/cortex-api/data-subscription/data-sample-object#device-information) . * The method [exportRecord](https://emotiv.gitbook.io/cortex-api/records/exportrecord) is now available on iOS and Android [](https://emotiv.gitbook.io/cortex-api/release-notes#cortex-2.6.4-march-2021) Cortex 2.6.4 - March 2021 ------------------------------------------------------------------------------------------------------------- * Bug fixes * No change in the Cortex API [](https://emotiv.gitbook.io/cortex-api/release-notes#cortex-2.6.3-january-2021) Cortex 2.6.3 - January 2021 ----------------------------------------------------------------------------------------------------------------- * New parameters added to the method [exportRecord](https://emotiv.gitbook.io/cortex-api/records/exportrecord) * New parameters added to the method [queryRecords](https://emotiv.gitbook.io/cortex-api/records/queryrecords) * Cortex is now available for Linux Ubuntu (Beta release) Check the [Getting Started](https://emotiv.gitbook.io/cortex-api) page to see all the supported headsets and platforms. [](https://emotiv.gitbook.io/cortex-api/release-notes#cortex-2.6.2-december-2020) Cortex 2.6.2 - December 2020 ------------------------------------------------------------------------------------------------------------------- * Solve an issue on macOS 11, where EMOTIV headsets couldn't connect by Bluetooth. * No change in the Cortex API [](https://emotiv.gitbook.io/cortex-api/release-notes#cortex-2.6.1-november-2020) Cortex 2.6.1 - November 2020 ------------------------------------------------------------------------------------------------------------------- * No change in the Cortex API [](https://emotiv.gitbook.io/cortex-api/release-notes#cortex-2.6.0-september-2020) Cortex 2.6.0 - September 2020 --------------------------------------------------------------------------------------------------------------------- * The sample rate of the data stream "dev" is now 2 hertz. See [Data Subscription](https://emotiv.gitbook.io/cortex-api/data-subscription) for details. * macOS 10.12 Sierra is not supported anymore. In order to install Cortex 2.6.0 you must upgrade your Mac to macOS 10.13 High Sierra or above. Check the [Getting Started](https://emotiv.gitbook.io/cortex-api) page to see all the supported headsets and platforms. [](https://emotiv.gitbook.io/cortex-api/release-notes#cortex-2.5.0-june-2020) Cortex 2.5.0 - June 2020 ----------------------------------------------------------------------------------------------------------- * Support the new [MN8](https://www.emotiv.com/workplace-wellness-safety-and-productivity-mn8/) headset * Support for iOS and Android (Beta release, see the [announcement](https://www.emotiv.com/blog/beta-release-of-cortex-mobile/) for details) * New parameter **title** added to the method [updateRecord](https://emotiv.gitbook.io/cortex-api/records/updaterecord) * In the method [queryRecords](https://emotiv.gitbook.io/cortex-api/records/queryrecords) , you can now order the records by their **applicationId**. * New [warning](https://emotiv.gitbook.io/cortex-api/warning-objects) code 112 and 113 Check the [Getting Started](https://emotiv.gitbook.io/cortex-api) page to see all the supported headsets and platforms. [](https://emotiv.gitbook.io/cortex-api/release-notes#cortex-2.4.0-march-2020) Cortex 2.4.0 - March 2020 ------------------------------------------------------------------------------------------------------------- * Support the new [EPOC X](https://www.emotiv.com/epoc-x/) headset * New field **headbandPosition** added in the [Headset object](https://emotiv.gitbook.io/cortex-api/headset/headset-object) and the [Record object](https://emotiv.gitbook.io/cortex-api/records/record-object) (EPOC X only) * New method added [updateHeadsetCustomInfo](https://emotiv.gitbook.io/cortex-api/headset/updateheadsetcustominfo) to set the position of the headband (EPOC X only) * New field **customName** added in the [Headset object](https://emotiv.gitbook.io/cortex-api/headset/headset-object) * Change in the result of the method [updateHeadset](https://emotiv.gitbook.io/cortex-api/headset/updateheadset) , new [warning](https://emotiv.gitbook.io/cortex-api/warning-objects) added to get the result of this method * New label **overall** in the device information [sample object](https://emotiv.gitbook.io/cortex-api/data-subscription/data-sample-object#device-information) [](https://emotiv.gitbook.io/cortex-api/release-notes#cortex-2.3.0-december-2019) Cortex 2.3.0 - December 2019 ------------------------------------------------------------------------------------------------------------------- * New parameter **includeFlexMappings** added to the method [queryHeadsets](https://emotiv.gitbook.io/cortex-api/headset/queryheadsets) * New field **lastLoginTime** added in the result of the method [getUserLogin](https://emotiv.gitbook.io/cortex-api/authentication/getuserlogin) [](https://emotiv.gitbook.io/cortex-api/release-notes#cortex-2.2.1-october-2019) Cortex 2.2.1- October 2019 ---------------------------------------------------------------------------------------------------------------- * New method added [configOptOut](https://emotiv.gitbook.io/cortex-api/records/configoptout) * New parameter **connectionType** added to the method [controlDevice](https://emotiv.gitbook.io/cortex-api/headset/controldevice) * New parameter **experimentId** added to the method [createRecord](https://emotiv.gitbook.io/cortex-api/records/createrecord) * New [Warning](https://emotiv.gitbook.io/cortex-api/warning-objects) added when the available space on the hard drive is too low * New [Warning](https://emotiv.gitbook.io/cortex-api/warning-objects) added when the opt-out configuration changes * New label **isActive** in the performance metrics [sample object](https://emotiv.gitbook.io/cortex-api/data-subscription/data-sample-object#performance-metric) [](https://emotiv.gitbook.io/cortex-api/release-notes#cortex-2.2.0-september-2019) Cortex 2.2.0 - September 2019 --------------------------------------------------------------------------------------------------------------------- This version didn't introduce any change in the API. [](https://emotiv.gitbook.io/cortex-api/release-notes#cortex-2.1.1-august-2019) Cortex 2.1.1 - August 2019 --------------------------------------------------------------------------------------------------------------- * New method added [exportRecord](https://emotiv.gitbook.io/cortex-api/records/exportrecord) [](https://emotiv.gitbook.io/cortex-api/release-notes#cortex-2.1.0-august-2019) Cortex 2.1.0 - August 2019 --------------------------------------------------------------------------------------------------------------- * New methods added to manage the [Subjects](https://emotiv.gitbook.io/cortex-api/subjects) [](https://emotiv.gitbook.io/cortex-api/release-notes#changes-from-cortex-1.x-to-cortex-v2.0) Changes from Cortex 1.x to Cortex V2.0 ----------------------------------------------------------------------------------------------------------------------------------------- There are significant changes from Cortex API version 1.x to 2.0. ### [](https://emotiv.gitbook.io/cortex-api/release-notes#websocket-url) WebSocket URL To connect to Cortex 1.x, you used the url **wss://emotivcortex.com:54321** In Cortex 2.0, you must use **wss://localhost:6868** See [Connecting to the Cortex API](https://emotiv.gitbook.io/cortex-api/connecting-to-the-cortex-api) for details. ### [](https://emotiv.gitbook.io/cortex-api/release-notes#authentication) Authentication In Cortex 2.0, the user must login with EmotivID through the EMOTIV App. So, the API doesn't have a **login** or **logout** method anymore. Third party applications must be approved by the user before using the Cortex API. See the new method [requestAccess](https://emotiv.gitbook.io/cortex-api/authentication/requestaccess) . The method [authorize](https://emotiv.gitbook.io/cortex-api/authentication/authorize) doesn't accept "anonymous mode" anymore. You must provide a client id and client secret. See [Authentication](https://emotiv.gitbook.io/cortex-api/authentication) for details. ### [](https://emotiv.gitbook.io/cortex-api/release-notes#headsets) Headsets Call the method [controlDevice](https://emotiv.gitbook.io/cortex-api/headset/controldevice) to connect a headset to Cortex. If the headset is not connected, then you can't create a session with this headset. See [Headsets](https://emotiv.gitbook.io/cortex-api/headset) for details. ### [](https://emotiv.gitbook.io/cortex-api/release-notes#miscellaneous) Miscellaneous Some methods have been removed or renamed. Method name in v1 Equivalent in v2 login, logout See [getUserLogin](https://emotiv.gitbook.io/cortex-api/authentication/getuserlogin) acceptLicense The user must accept the EULA in EMOTIV App. You can call [getUserInformation](https://emotiv.gitbook.io/cortex-api/authentication/getuserinformation) to check if the user already accepted the EULA or not controlBluetoothHeadset See [controlDevice](https://emotiv.gitbook.io/cortex-api/headset/controldevice) updateNote See [updateRecord](https://emotiv.gitbook.io/cortex-api/records/updaterecord) The parameters and result format of some methods have changed. If you get an error when calling a method, please check its documentation. [PreviousTroubleshooting Guide](https://emotiv.gitbook.io/cortex-api/troubleshooting-guide) [Nextcortexaccess tool](https://emotiv.gitbook.io/cortex-api/cortexaccess-tool) Last updated 1 month ago --- # Error Codes | Cortex API Here is a list of the error codes that the Cortex API can return. This list is not exhaustive (yet) and will be updated in the future. [](https://emotiv.gitbook.io/cortex-api/error-codes#id-32700) \-32700 Parse Error -------------------------------------------------------------------------------------- The message you sent to Cortex is not a valid [JSON object](https://www.json.org/) . This is a bug is your application. [](https://emotiv.gitbook.io/cortex-api/error-codes#id-32600) \-32600 Invalid Request ------------------------------------------------------------------------------------------ The message you sent to Cortex is a valid JSON object but it doesn't contain the expected fields. This a bug is your application. Please check [Connecting to the Cortex API](https://emotiv.gitbook.io/cortex-api/connecting-to-the-cortex-api#json-rpc) [](https://emotiv.gitbook.io/cortex-api/error-codes#id-32601) \-32601 Method Not Found ------------------------------------------------------------------------------------------- You sent a request with an invalid method name. This a bug is your application. Please check this documentation to see which methods are available. [](https://emotiv.gitbook.io/cortex-api/error-codes#id-32602) \-32602 Invalid Parameters --------------------------------------------------------------------------------------------- You sent a request to call a valid method, but the parameters are wrong. It can be because: * You didn't provide a required parameter * You provided a parameters with an invalid name * The name of parameter is correct but the value is invalid This is a bug in your application. Please check the documentation of the method. [](https://emotiv.gitbook.io/cortex-api/error-codes#id-32603) \-32603 Internal Error ----------------------------------------------------------------------------------------- An unexpected error happened in Cortex while processing your request. This is probably a bug in Cortex. If the problem persists, please contact the [EMOTIV customer support](https://www.emotiv.com/contact-support/) . [](https://emotiv.gitbook.io/cortex-api/error-codes#id-32000) \-32000 Server Internal Error ------------------------------------------------------------------------------------------------ An unexpected error happened in the EMOTIV cloud while processing your request. It can be a temporary failure of the EMOTIV servers, like when the servers are in maintenance. Or it can be a bug in Cortex. If the problem persists, please contact the [EMOTIV customer support](https://www.emotiv.com/contact-support/) . [](https://emotiv.gitbook.io/cortex-api/error-codes#id-32002) \-32002 Invalid License ID --------------------------------------------------------------------------------------------- The EMOTIV cloud cannot find the license of the user. When you call the method [authorize](https://emotiv.gitbook.io/cortex-api/authentication/authorize) , please make sure that you provide a valid license ID, or no license parameter at all. If the problem persists, then the owner of the license must contact the [EMOTIV customer support](https://www.emotiv.com/contact-support/) . [](https://emotiv.gitbook.io/cortex-api/error-codes#id-32003) \-32003 Internet Connection Error ---------------------------------------------------------------------------------------------------- Cortex must connect to the EMOTIV cloud to process your request, but the connection failed. Please make sure that you computer has a working internet connection. Please make sure your internet is not blocked by any firewall or security, see [Whitelisting Domains for EMOTIV Applications](https://emotiv.gitbook.io/cortex-api/troubleshooting-guide#essential-domains-to-whitelist) . [](https://emotiv.gitbook.io/cortex-api/error-codes#id-32004) \-32004 Headset Unavailable ---------------------------------------------------------------------------------------------- You sent a request to perform an action on a specific headset, but Cortex cannot find this headset. Some possible reasons for this error: * You provided an invalid headset ID in your request * The headset was disconnected (maybe it is out of range of your computer) * The headset was switched off [](https://emotiv.gitbook.io/cortex-api/error-codes#id-32005) \-32005 A session already exists with this headset --------------------------------------------------------------------------------------------------------------------- You called the method [createSession](https://emotiv.gitbook.io/cortex-api/session/createsession) for a specific headset, but your application already has a session for this headset. This is a bug in your application. You cannot create 2 sessions for the same headset at the same time. You must [close](https://emotiv.gitbook.io/cortex-api/session/updatesession) the existing session before creating a new one. [](https://emotiv.gitbook.io/cortex-api/error-codes#id-32006) \-32006 No license to activate a session ----------------------------------------------------------------------------------------------------------- You called [createSession](https://emotiv.gitbook.io/cortex-api/session/createsession) or [updateSession](https://emotiv.gitbook.io/cortex-api/session/updatesession) with the parameter "status" set to "active", but your license doesn't authorize you to activate a session. You have a paid EMOTIV license to activate a session. If you already have such a license but the problem still persists, then contact the [EMOTIV customer support](https://www.emotiv.com/contact-support/) . You should also read the [prerequisite](https://emotiv.gitbook.io/cortex-api#license) . [](https://emotiv.gitbook.io/cortex-api/error-codes#id-32007) \-32007 The session doesn't exist ---------------------------------------------------------------------------------------------------- You included a session ID in the parameters of your request, but Cortex cannot find this session. It can be because you session ID is invalid or because the session is already closed. Many methods can return this error: [updateSession](https://emotiv.gitbook.io/cortex-api/session/updatesession) , [subscribe](https://emotiv.gitbook.io/cortex-api/data-subscription/subscribe) , [unsubscribe](https://emotiv.gitbook.io/cortex-api/data-subscription/unsubscribe) , [createRecord](https://emotiv.gitbook.io/cortex-api/records/createrecord) , [injectMarker](https://emotiv.gitbook.io/cortex-api/markers/injectmarker) , [training](https://emotiv.gitbook.io/cortex-api/bci/training) , etc... [](https://emotiv.gitbook.io/cortex-api/error-codes#id-32012) \-32012 The session must be activated -------------------------------------------------------------------------------------------------------- You called a method that requires an active session, but the current session is inactive. It can happen if you call [createRecord](https://emotiv.gitbook.io/cortex-api/records/createrecord) on an inactive session. [](https://emotiv.gitbook.io/cortex-api/error-codes#id-32014) \-32014 Invalid Cortex token ----------------------------------------------------------------------------------------------- You included a Cortex token in the parameters of your request, but this token is invalid. This is a bug in your application. When a method requires a Cortex token, please make sure that your token comes from the result of the method [authorize](https://emotiv.gitbook.io/cortex-api/authentication/authorize) . [](https://emotiv.gitbook.io/cortex-api/error-codes#id-32015) \-32015 The Cortex token has expired ------------------------------------------------------------------------------------------------------- Your Cortex token has expired. You must call the method [authorize](https://emotiv.gitbook.io/cortex-api/authentication/authorize) again to get a new token. The Cortex token is valid for 48 hours. The [authorize](https://emotiv.gitbook.io/cortex-api/authentication/authorize) requires Internet access. If you want your app to stay offline for longer time, you should call [generateNewToken](https://emotiv.gitbook.io/cortex-api/authentication/generatenewtoken) to generate a new token from the expired token. [](https://emotiv.gitbook.io/cortex-api/error-codes#id-32016) \-32016 Invalid stream ----------------------------------------------------------------------------------------- You called the methods [subscribe](https://emotiv.gitbook.io/cortex-api/data-subscription/subscribe) or [unsubscribe](https://emotiv.gitbook.io/cortex-api/data-subscription/unsubscribe) with an invalid stream. The stream can be invalid for one of these reasons: * The name of the stream is incorrect. Check [Data Subscription](https://emotiv.gitbook.io/cortex-api/data-subscription) for the list of the available streams. * The stream is not available for this headset. For example, the motion data of an EPOC X headset can be disable. * The stream is "eeg" but the license doesn't allow you to access this stream. You can check the license with [getLicenseInfo](https://emotiv.gitbook.io/cortex-api/authentication/getlicenseinfo) [](https://emotiv.gitbook.io/cortex-api/error-codes#id-32017) \-32017 Record already started ------------------------------------------------------------------------------------------------- You called [createRecord](https://emotiv.gitbook.io/cortex-api/records/createrecord) for a specific session, but your application already started a record for the same session. You cannot create 2 records for the same session at the same time. [](https://emotiv.gitbook.io/cortex-api/error-codes#id-32019) \-32019 Session limit has been reached --------------------------------------------------------------------------------------------------------- You tried to activate a session (with [createSession](https://emotiv.gitbook.io/cortex-api/session/createsession) or [updateSession](https://emotiv.gitbook.io/cortex-api/session/updatesession) ) but the "localQuota" of the license is zero. You can check the "localQuota" by calling the method [getLicenseInfo](https://emotiv.gitbook.io/cortex-api/authentication/getlicenseinfo) . Every time you activate a session, the local quota of the license is reduced by 1. To solve this error, you must increase the local quota of the license. Call [authorize](https://emotiv.gitbook.io/cortex-api/authentication/authorize) with the parameter "debit". For example, you can call [authorize](https://emotiv.gitbook.io/cortex-api/authentication/authorize) with a "debit" of 10, and this will increase the local quota by 10. Then you will be able to create and activate 10 sessions on this computer. [](https://emotiv.gitbook.io/cortex-api/error-codes#id-32020) \-32020 The headset must be connected with a USB cable ------------------------------------------------------------------------------------------------------------------------- You called [updateHeadset](https://emotiv.gitbook.io/cortex-api/headset/updateheadset) but the headset is connected to the computer via Bluetooth or a USB dongle. Instead, the user should connect the headset with a USB cable. [](https://emotiv.gitbook.io/cortex-api/error-codes#id-32021) \-32021 Invalid client credentials ----------------------------------------------------------------------------------------------------- Your request includes an invalid client ID or an invalid client secret. [](https://emotiv.gitbook.io/cortex-api/error-codes#id-32022) \-32022 Device limit has been reached -------------------------------------------------------------------------------------------------------- The license was used on too many devices (eg computer, tablet, phone...). The license has a device limit. You can check it by calling the method [getLicenseInfo](https://emotiv.gitbook.io/cortex-api/authentication/getlicenseinfo) . If you want to increase the limit or transfer the license from 1 device to another, then please contact the [EMOTIV customer support](https://www.emotiv.com/contact-support/) . [](https://emotiv.gitbook.io/cortex-api/error-codes#id-32024) \-32024 The license has expired -------------------------------------------------------------------------------------------------- The license of the user has expired. You can check the license with [getLicenseInfo](https://emotiv.gitbook.io/cortex-api/authentication/getlicenseinfo) . After the license is renewed, your application must call [authorize](https://emotiv.gitbook.io/cortex-api/authentication/authorize) to get a new token. [](https://emotiv.gitbook.io/cortex-api/error-codes#id-32027) \-32027 Cannot use this license -------------------------------------------------------------------------------------------------- You called [authorize](https://emotiv.gitbook.io/cortex-api/authentication/authorize) with a valid license ID but your application doesn't have the permission to use this license. [](https://emotiv.gitbook.io/cortex-api/error-codes#id-32029) \-32029 License hard limit has been reached -------------------------------------------------------------------------------------------------------------- When the computer is offline, you can use the license for a limited period of time. The end of this period is the "hard limit" of the license. You can check it with [getLicenseInfo](https://emotiv.gitbook.io/cortex-api/authentication/getlicenseinfo) . After the "hard limit" has been reached, Cortex must connect to the EMOTIV cloud to validate the license again. To solve this problem, the computer must have an internet connection and then you must call [authorize](https://emotiv.gitbook.io/cortex-api/authentication/authorize) . [](https://emotiv.gitbook.io/cortex-api/error-codes#id-32031) \-32031 Invalid profile name ----------------------------------------------------------------------------------------------- You sent a request to perform an action on a specific [training profile](https://emotiv.gitbook.io/cortex-api/bci) , but Cortex cannot find this profile. [](https://emotiv.gitbook.io/cortex-api/error-codes#id-32032) \-32032 Multi Emotiv ID user ----------------------------------------------------------------------------------------------- You can got this error when call login while there is already a EmotivID user logged in. Before login in, you should check if there is logged in EmotivID user via getUserLogin API. This error is only available on Cortex version which support login API (for example: Cortex embedded lib). [](https://emotiv.gitbook.io/cortex-api/error-codes#id-32033) \-32033 EmotivID user is not logged in --------------------------------------------------------------------------------------------------------- Cortex cannot process your request because no EmotivID user is logged in. For the Cortex websocket server, you must ask the user to log in in [EMOTIV Launcher](https://emotiv.gitbook.io/emotiv-launcher/) . For other Cortex version which supports login, you must call login first. [](https://emotiv.gitbook.io/cortex-api/error-codes#id-32034) \-32034 The Cortex token is for another user --------------------------------------------------------------------------------------------------------------- Your request includes a Cortex token that was created for a specific user, but the current user is a different one. In that case, that must call [authorize](https://emotiv.gitbook.io/cortex-api/authentication/authorize) again and get a new token. You can check the current user with [getUserLogin](https://emotiv.gitbook.io/cortex-api/authentication/getuserlogin) . [](https://emotiv.gitbook.io/cortex-api/error-codes#id-32035) \-32035 EmotivID is not matching with logged in user ----------------------------------------------------------------------------------------------------------------------- You will get this issue if the `username` is not the same with currently logged in EmotivID user. Related API are logout. This API is only available for the Cortex embedded lib. [](https://emotiv.gitbook.io/cortex-api/error-codes#id-32037) \-32037 Cannot train this action --------------------------------------------------------------------------------------------------- You called [training](https://emotiv.gitbook.io/cortex-api/bci/training) for an action that cannot be trained. Please see available actions [here](https://emotiv.gitbook.io/cortex-api/bci/training#action) . [](https://emotiv.gitbook.io/cortex-api/error-codes#id-32044) \-32044 Profile already loaded on another headset -------------------------------------------------------------------------------------------------------------------- You tried to [load](https://emotiv.gitbook.io/cortex-api/bci/setupprofile) a training profile for a specific headset, but this profile is already loaded for another headset. You cannot load the same profile on 2 different headset at the same time. [](https://emotiv.gitbook.io/cortex-api/error-codes#id-32045) \-32045 No profile loaded for this headset ------------------------------------------------------------------------------------------------------------- You tried to unload a training profile from a headset, but no profile was loaded for this headset. [](https://emotiv.gitbook.io/cortex-api/error-codes#id-32046) \-32046 Profile loaded by another application ---------------------------------------------------------------------------------------------------------------- You tried to perform an operation (eg [setupProfile](https://emotiv.gitbook.io/cortex-api/bci/setupprofile) , [training](https://emotiv.gitbook.io/cortex-api/bci/training) ...) on a training profile, but this profile was loaded by another application. An application can only access a profile that loaded by itself. You can call [getCurrentProfile](https://emotiv.gitbook.io/cortex-api/bci/getcurrentprofile) to check if your application loaded the profile of a headset or not. [](https://emotiv.gitbook.io/cortex-api/error-codes#id-32102) \-32102 Not approved in EMOTIV Launcher ---------------------------------------------------------------------------------------------------------- The user didn't approved your application yet. The user must open [EMOTIV Launcher](https://emotiv.gitbook.io/emotiv-launcher/) and approve your application. [](https://emotiv.gitbook.io/cortex-api/error-codes#id-32104) \-32104 Failed to connect or disconnect the headset ---------------------------------------------------------------------------------------------------------------------- Cortex failed to communicate with the headset. Maybe the wireless connection between the headset and the computer was interrupted. Your application should try again. You can also call [queryHeadsets](https://emotiv.gitbook.io/cortex-api/headset/queryheadsets) to check the status of the headset. [](https://emotiv.gitbook.io/cortex-api/error-codes#id-32106) \-32106 The user account is not active --------------------------------------------------------------------------------------------------------- The EMOTIV ID of the user is inactive. The app will get this error when the user has registered the EmotivID account but haven't activated via email yet. [](https://emotiv.gitbook.io/cortex-api/error-codes#id-32107) \-32107 Cannot accept license agreement ---------------------------------------------------------------------------------------------------------- If you got this error when calling acceptLicense API, there is a bug in our Cortex or Emotiv Cloud. Please report this issue to [EMOTIV customer support](https://www.emotiv.com/contact-support/) . This acceptLicense is only available on the Cortex embedded lib. [](https://emotiv.gitbook.io/cortex-api/error-codes#id-32108) \-32108 Cloud token error -------------------------------------------------------------------------------------------- The EMOTIV cloud refused the user credentials provided by Cortex. The user must logout and login again. [](https://emotiv.gitbook.io/cortex-api/error-codes#id-32109) \-32109 Cortex token error --------------------------------------------------------------------------------------------- There is something wrong with the Cortex token. Your application must call [authorize](https://emotiv.gitbook.io/cortex-api/authentication/authorize) to get a new Cortex token. [](https://emotiv.gitbook.io/cortex-api/error-codes#id-32111) \-32111 The information cannot be found in database ---------------------------------------------------------------------------------------------------------------------- For APIs that need information from the local database, if Cortex cannot find this information in the database, this error is returned. This error is general and can be returned for any API. If the problem persists, please contact [EMOTIV customer support](https://www.emotiv.com/contact-support/) . [](https://emotiv.gitbook.io/cortex-api/error-codes#id-32112) \-32112 The session is already active -------------------------------------------------------------------------------------------------------- You tried to [activate](https://emotiv.gitbook.io/cortex-api/session/updatesession) a session that is already active. You can call [querySessions](https://emotiv.gitbook.io/cortex-api/session/querysessions) to check the status of your sessions. [](https://emotiv.gitbook.io/cortex-api/error-codes#id-32113) \-32113 Invalid record ID -------------------------------------------------------------------------------------------- You are trying to access a record that doesn't exist, or the record exist but you don't have the permission to access it. [](https://emotiv.gitbook.io/cortex-api/error-codes#id-32114) \-32114 No record in progress ------------------------------------------------------------------------------------------------ You are trying to [inject](https://emotiv.gitbook.io/cortex-api/markers/injectmarker) a marker or to [stop](https://emotiv.gitbook.io/cortex-api/records/stoprecord) a record but no record is is progress. [](https://emotiv.gitbook.io/cortex-api/error-codes#id-32115) \-32115 The time of the marker is too far in the past ------------------------------------------------------------------------------------------------------------------------ You are trying to inject a marker but its time is too far in the past. You should inject your markers in real time, at the moment the event you want to mark happens. Sometimes you may get the issue because the difference between the time system in your app and the headset time system in Cortex is considerable. In this case, to have better synchronization with the headset time system, please use the [syncWithHeadsetClock](https://emotiv.gitbook.io/cortex-api/headset/syncwithheadsetclock) API. [](https://emotiv.gitbook.io/cortex-api/error-codes#id-32116) \-32116 The time of the marker is too far in the future -------------------------------------------------------------------------------------------------------------------------- You are trying to inject a marker but its time is too far in the future. You should inject your markers in real time, at the moment the event you want to mark happens. Sometimes you may get the issue because the difference between the time system in your app and the headset time system in Cortex is considerable. In this case, to have better synchronization with the headset time system, please use the [syncWithHeadsetClock](https://emotiv.gitbook.io/cortex-api/headset/syncwithheadsetclock) API. [](https://emotiv.gitbook.io/cortex-api/error-codes#id-32117) \-32117 Marker not found ------------------------------------------------------------------------------------------- You called [updateMarker](https://emotiv.gitbook.io/cortex-api/markers/updatemarker) with an invalid marker id. [](https://emotiv.gitbook.io/cortex-api/error-codes#id-32118) \-32118 The profile name already exists ---------------------------------------------------------------------------------------------------------- You are trying to [create](https://emotiv.gitbook.io/cortex-api/bci/setupprofile) or rename a training profile, but another profile with the same name already exists. [](https://emotiv.gitbook.io/cortex-api/error-codes#id-32119) \-32119 The marker is already stopped -------------------------------------------------------------------------------------------------------- You are trying to [update](https://emotiv.gitbook.io/cortex-api/markers/updatemarker) a marker that was already updated before. [](https://emotiv.gitbook.io/cortex-api/error-codes#id-32120) \-32120 headset mapping config name already exists --------------------------------------------------------------------------------------------------------------------- You can get this error when calling configMapping API on EMOTIV Flex or Xtrodes headset. [](https://emotiv.gitbook.io/cortex-api/error-codes#id-32122) \-32122 Cortex is starting --------------------------------------------------------------------------------------------- The app will get this error sometimes after the app connection is established to Cortex web socket server or after the app call CortexLib::start() API of the Cortex embedded lib, when it takes long for Cortex to be ready, especially when Cortex needs to do some database upgrading. In this case, the app only needs to wait for a while and remake API calls. [](https://emotiv.gitbook.io/cortex-api/error-codes#id-32123) \-32123 Corrupted database --------------------------------------------------------------------------------------------- The local Cortex database is corrupted. Please contact the [EMOTIV customer support](https://www.emotiv.com/contact-support/) . [](https://emotiv.gitbook.io/cortex-api/error-codes#id-32124) \-32124 Subject not found -------------------------------------------------------------------------------------------- You are trying to [update](https://emotiv.gitbook.io/cortex-api/subjects/updatesubject) or [delete](https://emotiv.gitbook.io/cortex-api/subjects/deletesubjects) a subject that doesn't exist. Or you are trying to [create](https://emotiv.gitbook.io/cortex-api/records/createrecord) a record with an invalid subject. [](https://emotiv.gitbook.io/cortex-api/error-codes#id-32125) \-32125 Subject already exists ------------------------------------------------------------------------------------------------- You are trying to create a subject, but another subject with the same name already exists. [](https://emotiv.gitbook.io/cortex-api/error-codes#id-32126) \-32126 The record session is running -------------------------------------------------------------------------------------------------------- The app can get this error if you call [exportRecord](https://emotiv.gitbook.io/cortex-api/records/exportrecord) on a running record. Please make sure the app calls [stopRecord](https://emotiv.gitbook.io/cortex-api/records/stoprecord) before [exportRecord](https://emotiv.gitbook.io/cortex-api/records/exportrecord) . [](https://emotiv.gitbook.io/cortex-api/error-codes#id-32127) \-32127 Profile already loaded for this headset ------------------------------------------------------------------------------------------------------------------ You are trying to [load](https://emotiv.gitbook.io/cortex-api/bci/setupprofile) a training profile for a headset, but a profile was already loaded for this headset before. You must unload the current profile before loading a new one. [](https://emotiv.gitbook.io/cortex-api/error-codes#id-32129) \-32129 Invalid record title ----------------------------------------------------------------------------------------------- You are trying to create or update a record, but the record title is invalid. The title must be 200 characters long or less. [](https://emotiv.gitbook.io/cortex-api/error-codes#id-32130) \-32130 Cloud token is being refreshed --------------------------------------------------------------------------------------------------------- If the Cortex API needs to work with the Emotiv Cloud (e.g: [authorize](https://emotiv.gitbook.io/cortex-api/authentication/authorize) API), the app can get this issue when the cloud token is being refreshed. The app should wait until the token is refreshed and try the API call again. [](https://emotiv.gitbook.io/cortex-api/error-codes#id-32135) \-32135 Cortex token with incorrect application id or version -------------------------------------------------------------------------------------------------------------------------------- The Cortex token is valid, however, the app has already authorized with different application credentials or same application but different version. The app needs to call [authorize](https://emotiv.gitbook.io/cortex-api/authentication/authorize) again. In this case, there is often a bug in your application. [](https://emotiv.gitbook.io/cortex-api/error-codes#id-32137) \-32137 Cannot open output file -------------------------------------------------------------------------------------------------- You are trying to [export](https://emotiv.gitbook.io/cortex-api/records/exportrecord) a record but Cortex cannot open the output CSV or EDF file to write. Users should check the path or the permissions. [](https://emotiv.gitbook.io/cortex-api/error-codes#id-32138) \-32138 Stream not supported for export ---------------------------------------------------------------------------------------------------------- You are trying to [export](https://emotiv.gitbook.io/cortex-api/records/exportrecord) a record but one of the data streams you requested is not available. [](https://emotiv.gitbook.io/cortex-api/error-codes#id-32139) \-32139 Record is too short to export -------------------------------------------------------------------------------------------------------- When export to EDF file, the record length must be at least one second of data. [](https://emotiv.gitbook.io/cortex-api/error-codes#id-32140) \-32140 Cannot unsubscribe a data stream ----------------------------------------------------------------------------------------------------------- The app can get this error when calling unsubscribe a data stream. Please check if the stream has been subscribed. [](https://emotiv.gitbook.io/cortex-api/error-codes#id-32142) \-32142 Unpublished application -------------------------------------------------------------------------------------------------- By default, the app is unpublished and can only be used by the owner of the app. If the owner of the app wants to share the app with other people, the owner needs to contact [EMOTIV customer support](https://www.emotiv.com/contact-support/) to publish the app. [](https://emotiv.gitbook.io/cortex-api/error-codes#id-32146) \-32146 A record is being reported ----------------------------------------------------------------------------------------------------- We don't allow a record to be exported twice at the same time. You must wait for a record exporting to stop before calling [exportRecord](https://emotiv.gitbook.io/cortex-api/records/exportrecord) on this record again. [](https://emotiv.gitbook.io/cortex-api/error-codes#id-32147) \-32147 Record data is corrupted --------------------------------------------------------------------------------------------------- Record data is corruped and cannot be exported. [](https://emotiv.gitbook.io/cortex-api/error-codes#id-32148) \-32148 Timestamp of record is incorrect ----------------------------------------------------------------------------------------------------------- There is something wrong with start and end time of the record and we cannot find the these timestamps in record data file. In this case, we cannot export the record. [](https://emotiv.gitbook.io/cortex-api/error-codes#id-32151) \-32151 Cannot run Cortex on this machine ------------------------------------------------------------------------------------------------------------ If Cortex cannot read hardware information of the machine, you will get this error when calling [authorize](https://emotiv.gitbook.io/cortex-api/authentication/authorize) API. [](https://emotiv.gitbook.io/cortex-api/error-codes#id-32152) \-32152 Headset is not ready yet --------------------------------------------------------------------------------------------------- When a headset is requested to connect, it will take some time for Cortex to establish the connection and getting the first sample. If the app wants to do anything with headset e.g: createSession, subscribe, etc, before that, the app will get this error. In this case, the app needs to wait and retry later. [](https://emotiv.gitbook.io/cortex-api/error-codes#id-32153) \-32153 Low disk space ----------------------------------------------------------------------------------------- The app will get this error when trying to [connect a headset](https://emotiv.gitbook.io/cortex-api/headset/controldevice) when the free disk space on this machine is critical low. Users will need to create more disk space to continue. [](https://emotiv.gitbook.io/cortex-api/error-codes#id-32154) \-32154 Invalid headset connection type ---------------------------------------------------------------------------------------------------------- The app will get this error when trying to [connect a headset](https://emotiv.gitbook.io/cortex-api/headset/controldevice) with an expected connection type but the headset is not available via that connection type. [](https://emotiv.gitbook.io/cortex-api/error-codes#id-32155) \-32155 Opt-out feature is unavailable --------------------------------------------------------------------------------------------------------- The opt-out feature is not available with the current license. You can get this error when calling [configOptout](https://emotiv.gitbook.io/cortex-api/records/configoptout) API. Please contact [EMOTIV customer support](https://www.emotiv.com/contact-support/) if you want to have the ability of record uploading opt-out. [](https://emotiv.gitbook.io/cortex-api/error-codes#id-32156) \-32156 Cannot change Opt-out config ------------------------------------------------------------------------------------------------------- The opt-out feature is available with the current license. However, you cannot change the opt-out option. You can get this error when calling [configOptout](https://emotiv.gitbook.io/cortex-api/records/configoptout) API. Please contact [EMOTIV customer support](https://www.emotiv.com/contact-support/) if you want to have the ability of changing opt-out option. [](https://emotiv.gitbook.io/cortex-api/error-codes#id-32157) \-32157 Cannot change headset mapping -------------------------------------------------------------------------------------------------------- You cannot change the headset mapping of a connected headset. [](https://emotiv.gitbook.io/cortex-api/error-codes#id-32159) \-32159 Cannot upgrading database ---------------------------------------------------------------------------------------------------- You will not likely get this error. However, if you get it, there must be something wrong with the database. Please contact [EMOTIV customer support](https://www.emotiv.com/contact-support/) . [](https://emotiv.gitbook.io/cortex-api/error-codes#id-32160) \-32160 Record data is corrupted after post-processing ------------------------------------------------------------------------------------------------------------------------- You cannot export the record because when running post-processing, record data is corrupted for some reason. Please contact [EMOTIV customer support](https://www.emotiv.com/contact-support/) for this case. [](https://emotiv.gitbook.io/cortex-api/error-codes#id-32161) \-32161 Record is being post-processing ---------------------------------------------------------------------------------------------------------- You cannot export the record because when record's post-processing is in progress. Please wait until it's done. [](https://emotiv.gitbook.io/cortex-api/error-codes#id-32173) \-32173 The API is not supported for this application/platform/headset ----------------------------------------------------------------------------------------------------------------------------------------- You can get this error if the API is not supported in some cases. For example, when the app is trying to run facial expression detection on a headset which doesn't support facial expression detection. [](https://emotiv.gitbook.io/cortex-api/error-codes#id-32175) \-32175 Database is busy ------------------------------------------------------------------------------------------- You will get this error when the API call is trying to access to database but the database is busy with other operations. Please wait and try again. [](https://emotiv.gitbook.io/cortex-api/error-codes#id-32176) \-32176 Cannot change headset config ------------------------------------------------------------------------------------------------------- You can get this error when calling [updateHeadset](https://emotiv.gitbook.io/cortex-api/headset/updateheadset) API. Please make sure the headset connection is stable. [](https://emotiv.gitbook.io/cortex-api/error-codes#id-32178) \-32178 Cannot update headband position ---------------------------------------------------------------------------------------------------------- You can get this error when calling [updateHeadsetCustomInfo](https://emotiv.gitbook.io/cortex-api/headset/updateheadsetcustominfo) API but there is an active recording with this current headset. [](https://emotiv.gitbook.io/cortex-api/error-codes#id-32179) \-32179 Local time error ------------------------------------------------------------------------------------------- You cannot work with headset if your local time is modified and different from actual time. If you got this error, please check the Date Time settings on your machine. [](https://emotiv.gitbook.io/cortex-api/error-codes#id-32182) \-32182 Multi headset error ---------------------------------------------------------------------------------------------- On some platforms like iOS, Android, Raspberry Pi, we support only 1 headset at a time. So if the app [connects](https://emotiv.gitbook.io/cortex-api/headset/controldevice) to the another headset while there is already connected headset, this error will be returned. [](https://emotiv.gitbook.io/cortex-api/error-codes#id-32183) \-32183 The account has been suspended --------------------------------------------------------------------------------------------------------- If users attempt to login at least 5 times with incorrect user credentials, the account will be suspended for 15 minutes and the app will get this error. [](https://emotiv.gitbook.io/cortex-api/error-codes#id-32186) \-32186 Record data already exists ----------------------------------------------------------------------------------------------------- When the app calls [requestToDownloadRecordData](https://emotiv.gitbook.io/cortex-api/records/requesttodownloadrecorddata) but record data already exists, no need to download, the app will get this error. [](https://emotiv.gitbook.io/cortex-api/error-codes#id-32188) \-32188 Invalid authentication code ------------------------------------------------------------------------------------------------------ Only available for the Cortex embedded lib, related API: [loginWithAuthenticationCode](https://emotiv.gitbook.io/cortex-library-for-mobile/jsonapi/loginwithauthenticationcode) . [](https://emotiv.gitbook.io/cortex-api/error-codes#id-32189) \-32189 Expired authentication code ------------------------------------------------------------------------------------------------------ Only available for the Cortex embedded lib, related API: [loginWithAuthenticationCode](https://emotiv.gitbook.io/cortex-library-for-mobile/jsonapi/loginwithauthenticationcode) . [](https://emotiv.gitbook.io/cortex-api/error-codes#id-32191) \-32191 Cannot open database ----------------------------------------------------------------------------------------------- This error can happen when there is some disk I/O error, e.g: users unplug the disk where Cortex's database is located. [](https://emotiv.gitbook.io/cortex-api/error-codes#id-32192) \-32192 Cannot encrypt database -------------------------------------------------------------------------------------------------- Cortex cannot generate encryption key to encrypt database. Please contact [EMOTIV customer support](https://www.emotiv.com/contact-support/) for this case. [](https://emotiv.gitbook.io/cortex-api/error-codes#id-32193) \-32193 Unhandled database error --------------------------------------------------------------------------------------------------- There are unhandled errors in database. Please contact [EMOTIV customer support](https://www.emotiv.com/contact-support/) for this case. [](https://emotiv.gitbook.io/cortex-api/error-codes#id-32198) \-32198 Re-generating database key ----------------------------------------------------------------------------------------------------- Cortex is trying to re-generating database key. This can happen when we rotate database key. Please wait and try again. [](https://emotiv.gitbook.io/cortex-api/error-codes#id-32200) \-32200 Cannot access records of other applications ---------------------------------------------------------------------------------------------------------------------- Normally the app can only access the records that have been created by this app, unless it has the license key that record is created with. If the app doesn't have permission to access the record, it will get this error when calling these APIs: [queryRecords](https://emotiv.gitbook.io/cortex-api/records/queryrecords) , [exportRecord](https://emotiv.gitbook.io/cortex-api/error-codes#id-32139) , [getRecordInfos](https://emotiv.gitbook.io/cortex-api/records/getrecordinfos) . [](https://emotiv.gitbook.io/cortex-api/error-codes#id-32206) \-32206 Headset not supported ------------------------------------------------------------------------------------------------ The headset is not supported for some feature. e.g: [updateHeadset](https://emotiv.gitbook.io/cortex-api/headset/updateheadset) API. [](https://emotiv.gitbook.io/cortex-api/error-codes#id-32225) \-32225 Forced logout ---------------------------------------------------------------------------------------- Cortex log the user out because some critical account availability for example: user has changed their password or user has deleted their account. [](https://emotiv.gitbook.io/cortex-api/error-codes#id-32226) \-32226 Training profile incompatible with the headset ------------------------------------------------------------------------------------------------------------------------- If the defined EEG channels in the training profile is not the same with the EEG channels of this headset, you will get this error. See [setupProfile](https://emotiv.gitbook.io/cortex-api/bci/setupprofile) API. [](https://emotiv.gitbook.io/cortex-api/error-codes#id-32227) \-32227 Training profile incompatible with the EMOTIV Flex headset ------------------------------------------------------------------------------------------------------------------------------------- If the training profile is loaded with EMOTIV Flex headset which doesn't have Epoc-based mapping, you will get this error. See [setupProfile](https://emotiv.gitbook.io/cortex-api/bci/setupprofile) API. [](https://emotiv.gitbook.io/cortex-api/error-codes#id-32228) \-32228 Readonly training profile ---------------------------------------------------------------------------------------------------- The profile is ready and cannot be trained. Read more at [readonly profile](https://emotiv.gitbook.io/cortex-api/bci/readonly-profile) . [](https://emotiv.gitbook.io/cortex-api/error-codes#id-32230) \-32230 Unsupported headset in license --------------------------------------------------------------------------------------------------------- Emotiv licenses also limits the type of headset for specific data streams, especially 'eeg' or 'met' (see [subscribe](https://emotiv.gitbook.io/cortex-api/data-subscription/subscribe) API). If you got this issue, please contact [EMOTIV customer support](https://www.emotiv.com/contact-support/) . [](https://emotiv.gitbook.io/cortex-api/error-codes#id-32232) \-32232 License requires EEG ----------------------------------------------------------------------------------------------- You will get this error if your app has enabled **"Enable EEG for Professional devices"** option when creating the app, however, you don't have any valid paid license. ![](https://emotiv.gitbook.io/cortex-api/~gitbook/image?url=https%3A%2F%2F2332755068-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-LVaLrV9hH1eJbn-6OTd%252Fuploads%252FvAso6adV2HskdJuWeYLJ%252FScreenshot%25202025-07-14%2520at%252016.04.06.png%3Falt%3Dmedia%26token%3Dea99c72f-9552-4329-920f-8b752904a0b8&width=768&dpr=4&quality=100&sign=dc2d343e&sv=2) This option should be enabled when you have Professional devices (EPOC, Flex) and want to access Premium data stream (EEG, high-resolution Performance Metrics). Please contact [EMOTIV customer support](https://www.emotiv.com/contact-support/) in this case. Otherwise, please create another Cortex app with new client id and client secret, **disable this option** then run again. [PreviousWarning Objects](https://emotiv.gitbook.io/cortex-api/warning-objects) [NextTroubleshooting Guide](https://emotiv.gitbook.io/cortex-api/troubleshooting-guide) Last updated 4 days ago --- # EPOC+ User Manual | EPOC+ This document is intended to help you get started using the EMOTIV EPOC+ and includes common tips for using it. If you have any queries beyond the scope of this document, please contact us through our [online support](https://www.emotiv.com/contact-support/) . [NextAbout](https://emotiv.gitbook.io/epoc-user-manual/introduction-1/about) Last updated 6 years ago --- # What is EmotivPRO Analyzer? | EmotivPRO Analyzer EmotivPRO Analyzer (Analyzer) is a cloud-based batch processing tool for EEG data integrated with EmotivPRO. Using EmotivCloud, Analyzer allows users of EmotivPRO to quickly and easily process a large amount of EEG data or process a number of EEG data recordings in a standardized way without doing any coding. The pipelines available include: * Basic EEG processing * Basic EEG processing and band power transformation * Group ERP Experiment Analysis * Record based ERP Experiment Analysis If you have Premium License, you can generate reports for selected events: Report pipelines include: * Band-Power Reports * Performance Metric Reports * Event-related potential Analysis * Topographic Maps Please note that Band power and Performance Metric Reports can only be generated for events that have at least a minimum duration of 2 seconds. These reports do not currently support EmotivPRO keystroke markers as these are instance markers with a zero duration. You need a Premium license to access Individual PM Report and PM Report processing pipelines. Learn more about our EmotivPRO licensing. [NextSystem requirements](https://emotiv.gitbook.io/emotivpro-analyzer/getting-started/system-requirements) Last updated 1 year ago --- # Insight 2 | Insight 2 User Manual ![](https://emotiv.gitbook.io/insight-2-user-manual/~gitbook/image?url=https%3A%2F%2F2850717669-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FOJhnDftVC1c3x05TQ39P%252Fuploads%252Fwr2bJIGqmwzFJ2FllPNF%252Fimage.png%3Falt%3Dmedia%26token%3D2e3788b0-abbd-40b6-a89e-7cf0f3e66696&width=768&dpr=4&quality=100&sign=febcefb&sv=2) ![](https://emotiv.gitbook.io/insight-2-user-manual/~gitbook/image?url=https%3A%2F%2F2850717669-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FOJhnDftVC1c3x05TQ39P%252Fuploads%252F428vC3LQpKIZkTtFAISK%252Fimage.png%3Falt%3Dmedia%26token%3Df27a200b-96a7-413b-8000-1a835bafeaa7&width=768&dpr=4&quality=100&sign=3d1f9ff1&sv=2) [NextRegulatory compliance](https://emotiv.gitbook.io/insight-2-user-manual/compliance/regulatory-compliance) Last updated 3 years ago --- # Abbreviations | X-trodes User Manual List of abbreviations commonly used in this manual: * BT Bluetooth * DAU Data acquisition unit * EEG Electroencephalography * EOG Electrooculography * FW Firmware * GND Ground * IMU Inertial measurement unit * PC Personal Computer * S/s Samples per second * XTR X-trodes [NextIntroduction](https://emotiv.gitbook.io/x-trodes-user-manual/introduction) Last updated 10 months ago --- # EPOC FLEX User Manual | EPOC Flex User Manual ![](https://emotiv.gitbook.io/epoc-flex-user-manual/~gitbook/image?url=https%3A%2F%2F1584734385-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LIeRq0woQQZog4Wx9KA%252F-MDHdpRULkRAbaJ8qoeM%252F-MDHePJPwb3prTrcos1F%252FFlex-kit-1.jpg%3Falt%3Dmedia%26token%3D9e5a2142-dae3-4cac-a478-d727c9d6c6e3&width=768&dpr=4&quality=100&sign=245bb066&sv=2) EPOC Flex Saline Pre-Configured Kit This document is intended to help you get started using the EPOC Flex. The EPOC Flex is a 32-channel, flexible EEG system. It was built on the award winning EPOC+ technology and is designed for researchers who would like to have a more flexible sensor placement and / or greater density of sensors. The reference sensors can be placed in any location on the head, or on the ears with included earclips. EmotivPRO v1.4+ is required for operation. If you have any queries beyond the scope of this document, please contact us through our [online support](https://www.emotiv.com/contact-support/) [NextIntroduction](https://emotiv.gitbook.io/epoc-flex-user-manual/epoc-flex/readme) Last updated 4 years ago --- # EPOC X | EPOC X User Manual ![](https://emotiv.gitbook.io/epoc-x-user-manual/~gitbook/image?url=https%3A%2F%2Flh3.googleusercontent.com%2FtUydi7U6bRwcHr5RA19SIRwlb6rmVj1iDcYaqCIFibOE8PKEccr35FGpfPlrJYVxtmSzqOrro9ixv2L-I_068jQpj35tUQ-faHB-0utHOkx_fAyBrdAUdG1X94m9mkS3FUTk-DWr&width=768&dpr=4&quality=100&sign=984b398a&sv=2) ![](https://emotiv.gitbook.io/epoc-x-user-manual/~gitbook/image?url=https%3A%2F%2Flh4.googleusercontent.com%2F9QWQYIxFdrb5rK0Iobw9EqepCD-Yo00OR1tm5Ua4-CCygKv_HVG65nuCIXpGWWUl5pwbFH7acz-wgxuUWy7sTLJaYVIc5eY-mYF4rADpiAYIxQXQbnMOuWf1F0FiZOwtwmdKeGlj&width=768&dpr=4&quality=100&sign=72583c19&sv=2) User Manual [NextWarranties and Copyright](https://emotiv.gitbook.io/epoc-x-user-manual/warranties-and-copyright) Last updated 1 year ago --- # FLEX | FLEX 2.0 User Manual ![](https://emotiv.gitbook.io/flex-2.0-user-manual/~gitbook/image?url=https%3A%2F%2Flh7-us.googleusercontent.com%2FL4696wu0Qg7XzZI9reTXE2gEI511Fw9KhVpJXz1PSOePgKZqt2mbmTNr5MYaiERtetcYafLY7P9G8YgG-b0ViRHFVXX6yQJI2Bo7m6AOTu5hE_FLrwpbEJehyuVYeZCCuSpXFoC-rNKW8C_YTt6201k&width=300&dpr=4&quality=100&sign=b9553a2c&sv=2) ![](https://emotiv.gitbook.io/flex-2.0-user-manual/~gitbook/image?url=https%3A%2F%2Flh7-us.googleusercontent.com%2FNF1uFw7LomjzrqCxcXOfYWtY0pm5G89affRD7ij6mOIS0kqSdEEJvLnc8gVFjTHrcaA0C-H_CTrujotyuVw3jV8TAZT2M_meap-cS_h1nGY2l3roLfKg8rHTGGQS8SX2Wz1BIguk1Rnzf8kJwmKjkJ4&width=300&dpr=4&quality=100&sign=464a58c6&sv=2) [](https://emotiv.gitbook.io/flex-2.0-user-manual/#user-manual) User Manual -------------------------------------------------------------------------------- [NextWarranties and Copyright](https://emotiv.gitbook.io/flex-2.0-user-manual/warranties-and-copyright) Last updated 1 year ago --- # Emotiv BrainViz - User Manual | BrainViz This document is intended to help you get started using Emotiv BrainViz and to understand how to use the various features that it offers. If you have any queries beyond the scope of this document, please contact us through our [online support](https://www.emotiv.com/contact-support/) . [NextIntroduction](https://emotiv.gitbook.io/emotiv-brainviz/introduction) Last updated 6 years ago --- # What is EMOTIV Launcher? | Emotiv Launcher EMOTIV Launcher (Launcher) is an installer and login interface for all EMOTIV applications, approved third-party applications, and Brainwear. Launcher manages basic information: including logging into your account, connecting your headset, checking contact quality, and managing your licenses. This user manual will help you get started with Launcher and understand its features. [NextSystem requirements](https://emotiv.gitbook.io/emotiv-launcher/getting-started/system-requirements) Last updated 1 year ago --- # Extender Manual | Extender This document is intended to help you get started using the EMOTIV Extender accessory. If you have any queries beyond the scope of this document, please contact us through our [online support](https://www.emotiv.com/contact-support/) . [NextIntroduction](https://emotiv.gitbook.io/extender-manual/introduction) Last updated 6 years ago --- # What is EmotivPRO Builder? | EmotivPRO Builder EmotivPRO Builder (Builder) is an online neuroscience experiment-building platform designed for use with Emotiv's EEG headsets. It's a simple, user-friendly platform that allows you to create neuroscience experiments from scratch by building phases: calibration, instruction, and stimuli phases. Each phase is built by including different elements — like video, audio, and text — which you can upload from your computer. You can also customize the elements in an experiment so the participant(s) can see them in different ways: including randomizations and looping. When you've finished building an experiment, you can publish it to EmotivPRO Player (privately) for use in-house or remotely. As a participant plays an experiment, a live EEG recording is collected, fully time-marked, and saved securely and anonymously in the EMOTIV Cloud. This user manual will help you to get started with Builder and understand its features. [NextSystem requirements](https://emotiv.gitbook.io/emotivpro-builder/getting-started/system-requirements) Last updated 1 year ago --- # EmotivPRO | EmotivPRO v3.0 EmotivPRO is EMOTIV’s end-to-end solution for neuroscience research. EmotivPRO enables you to build and publish neuroscience experiments; as well as acquire and analyze EEG data all in one integrated software environment. EmotivPRO has five license options to choose from: * Lite * Student * Standard * Standard Team * Performance To find out more about each licence , please visit the [EmotivPRO webpage.](https://www.emotiv.com/product/emotivpro/) The EmotivPRO user manual will help you get started with EmotivPRO and understand how to use its various features. If you have any queries beyond the scope of this user manual, please get in touch with [EMOTIV Support](https://www.emotiv.com/contact-support/) , who will be happy to help you. [NextSystem requirements](https://emotiv.gitbook.io/emotivpro-v3/getting-started/system-requirements) Last updated 1 year ago --- # EmotivBCI | EmotivBCI Brain Computer Interfaces (BCI) is a system that allows you to control machines using your brain activity directly, rather than through intermediary interfaces like a mouse, keyboard, touchscreen or voice. EMOTIV technology converts brain waves to digital signals that can be used to control an endless number of digital outputs such as games, IoT devices, communication devices and audio/visual content. EmotivBCI is a desktop application for Mac and Windows that allows you to view and train the EMOTIV data streams used for BCI. These data streams are the following: * [Mental Commands](https://emotiv.gitbook.io/emotivbci/mental-commands) allow active control with specific thoughts that you have trained the system to recognize. You can train up to 4 commands per training profile with an unlimited number of profiles. * [Performance Metrics](https://emotiv.gitbook.io/emotivbci/performance-metrics) allow passive and continuous control based on your real time cognitive state, including measurements of focus, excitement, interest, engagement, stress and relaxation. No training is required. We also offer two additional data streams that are not from the brain directly, but can be applied to enhance your BCI system. * [Facial Expressions](https://emotiv.gitbook.io/emotivbci/facial-expressions) trigger events with movements of your facial and eye muscles. No training is required, but you can train some expressions to make them more accurate and personalized. * [Motion Sensors](https://emotiv.gitbook.io/emotivbci/motion-sensors) capture your head movements which you can apply to move a mouse or trigger other commands. The personalized training profiles that you create in EmotivBCI can be used with our Node-RED toolbox to control a wide array of outputs including social media, IoT devices and robotics. Your BCI profile can also be used in other third party applications connected to EMOTIV via our [Cortex](https://www.emotiv.com/cortex-ui/) service. This document is intended to help you to get started with EmotivBCI and to understand how to use the various features that it offers. If you have any queries beyond the scope of this document, please contact us through our [online support](https://www.emotiv.com/contact-support/) . [NextGetting started](https://emotiv.gitbook.io/emotivbci/chapter1) Last updated 1 year ago --- # EMOTIV Launcher | System requirements EMOTIV Launcher is compatible with the following operating systems: * Windows 10 (64-bit) v1809+ and Windows 11 * MacOS 11 or above * Raspberry Pi OS - Debian version 11 (Beta release, 32-bit) on Raspberry Pi model 4B. **Limitation on Raspberry Pi** At present, MN8 and Flex version 2.0 are not compatible and not supported with Raspberry Pi. Our supported version for Raspberry Pi development is the Raspberry Pi model 4B running Raspberry Pi OS Debian version 11. We highly recommend utilizing and developing Cortex on this specific Raspberry Pi version for optimal performance. Please note that our support does not cover any issues arising from not using this recommended Raspberry Pi version. [PreviousCortex API](https://emotiv.gitbook.io/system-requirements/cortex-api) [NextEmotivPRO](https://emotiv.gitbook.io/system-requirements/emotivpro-v3.0) Last updated 1 year ago --- # System requirements and supported platforms | System requirements This document is intended to outline the system requirements and supported platforms for our different applications. If you have any queries beyond the scope of this document, please contact us through our [online support](https://www.emotiv.com/contact-support/) . [NextCortex API](https://emotiv.gitbook.io/system-requirements/cortex-api) Last updated 1 year ago --- # Warranties and Copyright | FLEX 2.0 User Manual EMOTIV does not warrant, guarantee or make representations concerning the content of this document. All information is provided ‘as is’ without express or implied warranties of any kind, including, without limitation, the warranties of merchantability, quality and title. EMOTIV reserves the right to change the content of this document and the features or functionalities of its products and services at any time without obligation to notify anyone of such changes. **Copyright** Copyright© 2023 EMOTIV. All rights reserved. Brainwear® is a registered trademark. [PreviousFLEX](https://emotiv.gitbook.io/flex-2.0-user-manual) [NextRegulatory Compliance](https://emotiv.gitbook.io/flex-2.0-user-manual/regulatory-compliance) Last updated 1 year ago --- # Regulatory Compliance | FLEX 2.0 User Manual **EMOTIV products are intended to be used for research applications and personal use only. Our products are not sold as Medical Devices as defined in EU directive 93/42/EEC and are not designed or intended to be used for diagnosis or treatment of disease.** ‌EMOTIV has tested FLEX 2.0 and confirms: This device complies with the radio equipment directive (2014/53/EU). This device complies with part 15 of the FCC Rules. Operation is subject to the following two conditions: (1) This device may not cause harmful interference, and (2) this device must accept any interference received, including interference that may cause undesired operation. This equipment has been tested and found to comply with the limits for a Class B digital device, pursuant to part 15 of the FCC Rules. These limits are designed to provide reasonable protection against harmful interference in a residential installation. This equipment generates, uses and can radiate radio frequency energy and, if not installed and used in accordance with the instructions, may cause harmful interference to radio communications. However, there is no guarantee that interference will not occur in a particular installation. If this equipment does cause harmful interference to radio or television reception, which can be determined by turning the equipment off and on, the user is encouraged to try to correct the interference by one or more of the following measures: * Reorient or relocate the receiving antenna. * Increase the separation between the equipment and receiver. * Connect the equipment to an outlet on a circuit different from that to which the receiver is connected. * Consult the dealer or experienced person for help. Please Note: Changes or modifications not expressly approved by the party responsible for compliance could void the user's authority to operate the equipment. ‌This Class B digital apparatus complies with Canadian ICES-003. Cet appareil numérique de la classe B est conforme à la norme NMB-003 du Canada. This device contains license-exempt transmitter(s)/receiver(s) that comply with Innovation, Science and Economic Development Canada’s license-exempt RSS(s). Operation is subject to the following two conditions: 1. This device may not cause interference. 2. This device must accept any interference, including interference that may cause undesired operation of the device. L’émetteur/récepteur exempt de licence contenu dans le présent appareil est conforme aux CNR d’Innovation, Sciences et Développement économique Canada applicables aux appareils radio exempts de licence. L’exploitation est autorisée aux deux conditions suivantes: 1. L’appareil ne doit pas produire de brouillage; 2. L’appareil doit accepter tout brouillage radioélectrique subi, même si le brouillage est susceptible d’en compromettre le fonctionnement. Radiation Exposure Statement: This equipment complies with the IC RSS-102 radiation exposure limits set forth for an uncontrolled environment. This equipment should be installed and operated with a minimum distance of 20 cm between the radiator and your body. [PreviousWarranties and Copyright](https://emotiv.gitbook.io/flex-2.0-user-manual/warranties-and-copyright) [NextIntroduction to FLEX](https://emotiv.gitbook.io/flex-2.0-user-manual/introduction/introduction-to-flex) Last updated 1 year ago --- # Introduction to FLEX | FLEX 2.0 User Manual FLEX is a wireless control box (FLEX controller) that works with EMOTIV’s Flex Cap system. It combines the wireless technology of EMOTIV’s award-winning EPOC X headset with the high-density and flexible sensor placement found in traditional EEG head-cap systems. The sensors can be placed in any of the 74 openings in the head cap in the standard 10-20 positions—allowing configurations for specific experiments or participant characteristics. FLEX 2 features: * Choice of gel or saline-based sensor kits — for optimal conductivity and signal quality. * Up to 32 EEG channels — provides high-density EEG coverage. * Ear clip sensors (gel only) — for referencing signals. * Bluetooth 5.2 — Transmits up to 256 SPS uncompressed, 16-bit data per channel. * Wireless connectivity — connect seamlessly to your PC or Mac * Rechargeable — up to 6 hours of battery life * Choice of pre-configured (saline only) or non-configured caps — provides easy set-up or flexible positioning. * Choice of Flex Cap sizes — for comfort and conformity. For the EPOC Flex Quick Start Guide, go to [https://www.emotiv.com/setup/epoc-flex/](https://www.emotiv.com/setup/epoc-flex/) [PreviousRegulatory Compliance](https://emotiv.gitbook.io/flex-2.0-user-manual/regulatory-compliance) [NextApplication Compatibility](https://emotiv.gitbook.io/flex-2.0-user-manual/introduction/application-compatibility) Last updated 1 year ago --- # EmotivPRO | System requirements EmotivPRO is compatible with the following operating systems: * Windows 10 (64-bit) v1809+ and Windows 11 * macOS 11 or above EmotivPRO requires a minimum of 8 GB RAM to operate. For Windows, please ensure your system has a minimum specification of Core i5-3xxx processor or higher. For optimal rendering performance we advice to use a maximum resolution of 1920 x 1080. Downscaling the resolution on 4k, 5k displays helps to significantly improve performance. We recommend setting the screen scaling option to 100%. Some performance issues are expected if you run EmotivPRO and EmotivBCI concurrently on the same machine. [PreviousEMOTIV Launcher](https://emotiv.gitbook.io/system-requirements/launcher) [NextEmotivPRO Builder](https://emotiv.gitbook.io/system-requirements/emotivpro-builder) Last updated 1 year ago --- # Warranties and Copyright | MN8 User Manual EMOTIV does not warrant, guarantee, or make representations concerning the content of this document. All information is provided ‘as is’ without express or implied warranties of any kind including, without limitation, the warranties of merchantability, quality, and title. EMOTIV reserves the right to change the content of this document and the features or functionalities of its products and services at any time without obligation to notify anyone of such changes. **Copyright** Copyright© 2023 EMOTIV. All rights reserved. [PreviousMN8 User Manual](https://emotiv.gitbook.io/mn8-user-manual) [NextRegulatory Compliance](https://emotiv.gitbook.io/mn8-user-manual/regulatory-compliance) Last updated 1 year ago --- # Warranties and Copyright | EPOC X User Manual EMOTIV does not warrant, guarantee or make representations concerning the content of this document. All information is provided ‘as is’ without express or implied warranties of any kind including, without limitation, the warranties of merchantability, quality and title. EMOTIV reserves the right to change the content of this document and the features or functionalities of its products and services at any time without obligation to notify anyone of such changes. Copyright Copyright© 2020 EMOTIV. All rights reserved. Brainwear® is a registered trademark. [PreviousEPOC X](https://emotiv.gitbook.io/epoc-x-user-manual) [NextRegulatory compliance](https://emotiv.gitbook.io/epoc-x-user-manual/regulatory-compliance) Last updated 5 years ago --- # Regulatory compliance | Insight 2 User Manual EMOTIV products are intended to be used for research applications and personal use only. Our products are not sold as Medical Devices as defined in EU directive 93/42/EEC. Our products are not designed or intended to be used for diagnosis or treatment of disease. FCC ID Number 2ADIH-INSIGHT02 and IC ID Number 12769A-INSIGHT02. ‌EMOTIV has tested Insight and confirms: This device complies with the radio equipment directive (2014/53/EU). FCC (Federal Communication Commission) This device complies with part 15 of the FCC Rules. Operation is subject to the following two conditions: This device may not cause harmful interference; and This device must accept any interference received, including interference that may cause undesired operation. This equipment has been tested and found to comply with the limits for a Class B digital device, pursuant to part 15 of the FCC Rules. These limits are designed to provide reasonable protection against harmful interference in a residential installation. This equipment generates, uses and can radiate radio frequency energy and, if not installed and used in accordance with the instructions, may cause harmful interference to radio communications. However, there is no guarantee that interference will not occur in a particular installation. If this equipment does cause harmful interference to radio or television reception, which can be determined by turning the equipment off and on, the user is encouraged to try to correct the interference by one or more of the following measures: Reorient or relocate the receiving antenna. Increase the separation between the equipment and receiver. Connect the equipment into an outlet on a circuit different from that to which the receiver is connected. Consult the dealer or experienced person for help. FCC RF Exposure warning statement: This equipment complies with FCC radiation exposure limits set forth for an uncontrolled environment. End users must follow the specific operating instructions for satisfying RF exposure compliance. This transmitter must be at least 20 cm from the user and must not be co-located or operating in conjunction with any other antenna or transmitter. [PreviousInsight 2](https://emotiv.gitbook.io/insight-2-user-manual) [NextFCC (Federal Communication Commission)](https://emotiv.gitbook.io/insight-2-user-manual/compliance/fcc-federal-communication-commission) Last updated 3 years ago --- # Technical Specifications | INSIGHT Manual **Headset Version** Pre-2019 2019 **Number of Channels** 5 (plus CMS/DRL reference on left mastoid) 5 (plus CMS/DRL reference on left mastoid) **Channel names (International 10-20 locations)** AF3, AF4, T7, T8, Pz AF3, AF4, T7, T8, Pz **Sampling Method** Sequential sampling, single ADC Sequential sampling, single ADC **Sampling Rate** 128 SPS (2048 Hz internal) 128 SPS (2048 Hz internal) **EEG Resolution** 14 bits 1 LSB = 0.51μV (16 bit ADC, 2 bits instrumental noise floor discarded) 14 bits 1 LSB = 0.51μV (16 bit ADC, 2 bits instrumental noise floor discarded) **Bandwidth** 0.5 - 43Hz, digital notch filters at 50Hz and 60Hz 0.5 - 43Hz, digital notch filters at 50Hz and 60Hz **Filtering** Built in digital 5th order Sinc filter Built in digital 5th order Sinc filter **Dynamic Range (Input referred)** 8400 uV (pp) 8400 uV (pp) **Coupling Mode** AC coupled AC coupled **Connectivity** Proprietary 2.4GHz wireless (with dongle), BLE Proprietary 2.4GHz wireless (with dongle), BLE **Battery Capacity** LiPo battery 480mAh LiPo battery 450mAh **Battery Life (typical)** Up to 8 hours Up to 8 hours **Impedance Measurement** Real-time contact quality using patented system Real-time contact quality using patented system **IMU Part** LSM9DS0 ICM-20948 **Accelerometer** 3-axis +/-8g 3-axis +/-4g **Gyroscope** 3-axis +/- 500 dps Output as Quaternion **Magnetometer** 3-axis +/- 12 gauss 3-axis +/- 4900 uTesla **Motion Sampling** 128 Hz 64 Hz **Quaternion Outputs** No Yes **Motion Resolution** 14-bit 14-bit (dongle) / 8-bit (BLE) **Sensor Material** Semi dry polymer Semi dry polymer [PreviousInsight User Manual](https://emotiv.gitbook.io/insight-manual) [NextSafety Precautions](https://emotiv.gitbook.io/insight-manual/introduction/safety-precautions) Last updated 5 years ago --- # System requirements | Emotiv Launcher Learn more about [the system requirements for EMOTIV Launcher](https://emotiv.gitbook.io/system-requirements/launcher) . [PreviousWhat is EMOTIV Launcher?](https://emotiv.gitbook.io/emotiv-launcher) [NextInstallation](https://emotiv.gitbook.io/emotiv-launcher/getting-started/installation) Last updated 2 years ago --- # System requirements | EmotivPRO Analyzer Learn more about [the system requirements for EmotivPRO Anaylzer](https://emotiv.gitbook.io/system-requirements/emotivpro-analyzer) . \*Analyzer is not included with EmotivPRO Lite. For more information on EmotivPRO licenses, please visit the EmotivPRO webpage. [PreviousWhat is EmotivPRO Analyzer?](https://emotiv.gitbook.io/emotivpro-analyzer) [NextInstallation](https://emotiv.gitbook.io/emotivpro-analyzer/getting-started/installation) Last updated 3 years ago --- # System requirements | EmotivPRO Builder Learn more about [the system requirements for EmotivPRO Builder](https://emotiv.gitbook.io/system-requirements/emotivpro-builder) . [PreviousWhat is EmotivPRO Builder?](https://emotiv.gitbook.io/emotivpro-builder) [NextSoftware requirements](https://emotiv.gitbook.io/emotivpro-builder/getting-started/installation) Last updated 1 year ago --- # Application Compatibility | FLEX 2.0 User Manual [PreviousIntroduction to FLEX](https://emotiv.gitbook.io/flex-2.0-user-manual/introduction/introduction-to-flex) [NextTechnical Specifications](https://emotiv.gitbook.io/flex-2.0-user-manual/introduction/technical-specifications) --- # EmotivPRO Builder | System requirements EmotivPRO Builder is compatible with: * Windows 10 (64-bit) v1809+ and Windows 11 * macOS 11 or above The internet browser we recommend for using EmotivPRO Builder is Google Chrome. [PreviousEmotivPRO](https://emotiv.gitbook.io/system-requirements/emotivpro-v3.0) [NextEmotivPRO Analyzer](https://emotiv.gitbook.io/system-requirements/emotivpro-analyzer) Last updated 1 year ago --- # Safety Precautions | INSIGHT Manual Please note the following safety considerations: * CHOKING HAZARD – detachable small parts. Keep away from small children. * INSIGHT is a consumer product, it is not intended to use for in-patient health care or in hazardous environments. * INSIGHT is designed to use at room temperature _WARNING_: Device is powered by a Lithium-Polymer battery that is rated for operation in <45C environments. It is not user replaceable, please contact support if you suspect a fault or have any questions. _WARNING_: Do not open the enclosure. Doing so will void the warranty and can damage the headset. * DO NOT attach the Insight to the charger or USB connector while in use. * ALWAYS remove the Insight during charging and avoid touching the sensors if fitted. Although unlikely, an insulation failure in the charger or USB source may cause the Insight to become live. Insight will automatically enter sleep mode while attached to the charger, so it is not possible to extend use while charging. Insight may be operated while charging ONLY when used in conjunction with the Emotiv Extender. _WARNING_: Radio emissions may interfere with appliances and medical equipment including heart pacemakers and automated medical dosimetry systems. Use with caution. _WARNING_: Discontinue to use if the system becomes uncomfortable to wear or if skin irritation occurs. Users are advised not to share sets of sensors to avoid cross-infection risks. [PreviousTechnical Specifications](https://emotiv.gitbook.io/insight-manual/introduction/technical-specifications) [NextRegulatory Compliance](https://emotiv.gitbook.io/insight-manual/introduction/regulatory-compliance) Last updated 5 years ago --- # About | EPOC+ ![](https://emotiv.gitbook.io/epoc-user-manual/~gitbook/image?url=https%3A%2F%2F2078249838-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LIeRq0zoRDVwV9_bS4H%252F-LIeRtT9urT-K_k-4Jw9%252F-LIeRzOcuVZ5ARy7OV4p%252Fimage6.png%3Fgeneration%3D1532941834426035%26alt%3Dmedia&width=300&dpr=4&quality=100&sign=72929142&sv=2) The EMOTIV EPOC+ is a portable, high resolution, 14-channel, EEG system. It was designed to be quick and easy to fit and take measurements in practical research applications. It is compatible with all EMOTIV software products. EMOTIV products are intended to be used for research applications and personal use only. Our products are not sold as Medical Devices as defined in EU directive 93/42/EEC. Our products are not designed or intended to be used for diagnosis or treatment of disease. [PreviousEPOC+ User Manual](https://emotiv.gitbook.io/epoc-user-manual) [NextTechnical Specifications](https://emotiv.gitbook.io/epoc-user-manual/introduction-1/technical_specifications) Last updated 5 years ago --- # Introduction | EPOC Flex User Manual ![](https://emotiv.gitbook.io/epoc-flex-user-manual/~gitbook/image?url=https%3A%2F%2F1584734385-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LIeRq0woQQZog4Wx9KA%252F-LuATODXDF0pjfO8a18k%252F-LuAU11ERiCZFm9EckMy%252Fimage.png%3Falt%3Dmedia%26token%3D58905510-d912-40fc-9d4e-777d4b437b77&width=768&dpr=4&quality=100&sign=a1e81241&sv=2) EPOC Flex Saline Kit Contents This document is intended to help you get started using the EPOC Flex. The EPOC Flex is a 32-channel, flexible EEG system. It was built on the award winning EPOC+ technology and is designed for researchers who would like to have a more flexible sensor placement and / or greater density of sensors. The reference sensors can be placed in any location on the cap, and on the ears with included earclips (gel sensors only ). EmotivPRO v1.4+ is required for operation. If you have any queries beyond the scope of this document, please contact us through our [online support](https://www.emotiv.com/contact-support/) EMOTIV products are intended to be used for research applications and personal use only. Our products are not sold as Medical Devices as defined in EU directive 93/42/EEC. Our products are not designed or intended to be used for diagnosis or treatment of disease. [PreviousEPOC FLEX User Manual](https://emotiv.gitbook.io/epoc-flex-user-manual) [NextTechnical Specifications](https://emotiv.gitbook.io/epoc-flex-user-manual/epoc-flex/technical-spec) Last updated 5 years ago --- # Technical Specifications | EPOC Flex User Manual Device EPOC Flex No. of Channels 32 (plus CMS/DRL references) Channel names Configurable on standard 72 channel international 10-20 locations. Sampling method Sequential sampling. Single ADC Sampling rate 128 SPS (1024 Hz internal) EEG Resolution 14 bits 1 LSB = 0.51μV (16 bit ADC, 2 bits instrumental noise floor discarded) Max Slew Rate 32.64uV/sample (Compression required for BLE data transmission) Bandwidth 0.2 - 45Hz, high attenuation at 50Hz and 60Hz Filtering Built in digital 5th order Sinc filter Dynamic range (input referred) +/- 4.12 mV Coupling mode AC coupled Connectivity Proprietary 2.4GHz wireless, BLE(coming soon) Battery Capacity. LiPo battery 595mAh Battery life (typical) 6-9 hours Impedance Measurement Real-time contact quality using patented system IMU Part ICM-20948 3-axis Accelerometer, 3-axis Gyroscope, 3-axis Magnetometer. Data Output 10 channels Quaternions, (Q0, Q1, Q2,Q3), Acceleration (X,Y,Z) and Magnetometer (X,Y,Z) Motion Sampling 16 Hz Motion Resolution 8-bit Output Sensor Material Sintered Ag/AgCl (EPOC Flex Gel model) can be used with any EEG gel Electroplated Ag/AgCl (EPOC Flex Saline models) with replaceable polyester felt pads that can be sterilised and re-used (bulk pack available for separate purchase) [PreviousIntroduction](https://emotiv.gitbook.io/epoc-flex-user-manual/epoc-flex/readme) [NextSafety Precautions](https://emotiv.gitbook.io/epoc-flex-user-manual/epoc-flex/safety-precautions) Last updated 4 years ago --- # Introduction | Extender The EMOTIV Extender accessory adds even more mobility and marker accuracy to your EMOTIV headset. An essential companion product for your Insight, Flex and EPOC+ headsets, the EMOTIV Extender is a mains isolated external rechargeable battery pack with a microSD card for external storage. EMOTIV products are intended to be used for research applications and personal use only. Our products are not sold as Medical Devices as defined in EU directive 93/42/EEC. Our products are not designed or intended to be used for diagnosis or treatment of disease. [PreviousExtender Manual](https://emotiv.gitbook.io/extender-manual) [NextSafety Precautions](https://emotiv.gitbook.io/extender-manual/introduction/safety_precautions) Last updated 5 years ago --- # Regulatory compliance | EPOC X User Manual **EMOTIV products are intended to be used for research applications and personal use only. Our products are not sold as Medical Devices as defined in EU directive 93/42/EEC. Our products are not designed or intended to be used for diagnosis or treatment of disease.** FCC ID Number **2ADIH-EPOC03** and IC ID Number **12769A-EPOC03**. EPOC X MIC certificate number is: **211-230420** ‌EMOTIV has tested EPOC X and confirms: This device complies with the radio equipment directive (2014/53/EU). This device complies with part 15 of the FCC Rules. Operation is subject to the following two conditions: (1) This device may not cause harmful interference, and (2) this device must accept any interference received, including interference that may cause undesired operation. This equipment has been tested and found to comply with the limits for a Class B digital device, pursuant to part 15 of the FCC Rules. These limits are designed to provide reasonable protection against harmful interference in a residential installation. This equipment generates, uses and can radiate radio frequency energy and, if not installed and used in accordance with the instructions, may cause harmful interference to radio communications. However, there is no guarantee that interference will not occur in a particular installation. If this equipment does cause harmful interference to radio or television reception, which can be determined by turning the equipment off and on, the user is encouraged to try to correct the interference by one or more of the following measures: \- Reorient or relocate the receiving antenna. - Increase the separation between the equipment and receiver. - Connect the equipment into an outlet on a circuit different from that to which the receiver is connected. - Consult the dealer or experienced person for help. **Please Note: Changes or modifications not expressly approved by the party responsible for compliance could void the user's authority to operate the equipment.** This Class B digital apparatus complies with Canadian ICES-003. Cet appareil numérique de la classe B est conforme à la norme NMB-003 du Canada. This device contains licence-exempt transmitter(s)/receiver(s) that comply with Innovation, Science and Economic Development Canada’s licence-exempt RSS(s). Operation is subject to the following two conditions: 1. This device may not cause interference. 2. This device must accept any interference, including interference that may cause undesired operation of the device. L’émetteur/récepteur exempt de licence contenu dans le présent appareil est conforme aux CNR d’Innovation, Sciences et Développement économique Canada applicables aux appareils radio exempts de licence. L’exploitation est autorisée aux deux conditions suivantes : 1. L’appareil ne doit pas produire de brouillage; 2. L’appareil doit accepter tout brouillage radioélectrique subi, même si le brouillage est susceptible d’en compromettre le fonctionnement. Radiation Exposure Statement: This equipment complies with the IC RSS-102 radiation exposure limits set forth for an uncontrolled environment. This equipment should be installed and operated with a minimum distance of 20 cm between the radiator and your body. Énoncé d'exposition aux rayonnements: Cet équipement est conforme aux limites d'exposition aux rayonnements ioniques RSS-102 Pour un environnement incontrôlé. Cet équipement doit être installé et utilisé avec un Distance minimale de 20 cm entre le radiateur et votre corps. **EPOC X is fully compliant with the relevant standards for North America(FCC/ISED), Europe(UKCA/CE), Australia(RCM) and Japan(MIC) and has been tested to the following standards by Bay Area Compliance Laboratory:** * SAFETY * UL/CSA/EN/IEC 62368-1 and CB certificate. * EMC * FCC 15B / ICES-003 Class B * AS/NZ CISPR32:2015 Class B * EN301 489-1, EN301 489-17, EN55032:2012/AC:2013, EN55035:2017, EN61000-3-2, EN61000-3-3. * RF * FCC 15.247 / ISED RSS-247 / EN300 328 V2.1.1 * EN62479 RF Exposure Evaluation * MIC Notices No. 88 Annex 1 & 43 * AS/NZ 4268 [PreviousWarranties and Copyright](https://emotiv.gitbook.io/epoc-x-user-manual/warranties-and-copyright) [NextIntroduction to EPOC X](https://emotiv.gitbook.io/epoc-x-user-manual/introduction/introduction-to-epoc-x) Last updated 1 year ago --- # Technical Specifications | EPOC+ Headset Version EPOC v1.0 EPOC+ v1.1 EPOC+ V1.1A Number of Channels 14 (plus CMS/DRL references, P3/P4 locations) 14 (plus CMS/DRL references, P3/P4 locations) 14 (plus CMS/DRL references, P3/P4 locations) Channel names (International 10-20 locations) AF3, F7, F3, FC5, T7, P7, O1, O2, P8, T8, FC6, F4, F8, AF4 AF3, F7, F3, FC5, T7, P7, O1, O2, P8, T8, FC6, F4, F8, AF4 AF3, F7, F3, FC5, T7, P7, O1, O2, P8, T8, FC6, F4, F8, AF4 Sampling Method Sequential sampling. Single ADC Sequential sampling. Single ADC Sequential sampling. Single ADC Sampling Rate 128 SPS (2048 Hz internal) 128 SPS / 256 SPS (2048 Hz internal) 128 SPS / 256 SPS (2048 Hz internal) EEG Resolution 14 bits 1 LSB = 0.51μV (16 bit ADC, 2 bits instrumental noise floor is discarded) 14 bits 1 LSB = 0.51μV (16 bit ADC, 2 bits instrumental noise floor is discarded), settings can be changed to 16-bit 14 bits 1 LSB = 0.51μV (16 bit ADC, 2 bits instrumental noise floor is discarded), settings can be changed to 16-bit Bandwidth 0.2 - 45Hz, digital notch filters at 50Hz and 60Hz 0.2 - 45Hz, digital notch filters at 50Hz and 60Hz 0.2 - 45Hz, digital notch filters at 50Hz and 60Hz Filtering Built-in digital 5th order Sinc filter Built-in digital 5th order Sinc filter Built-in digital 5th order Sinc filter Dynamic Range (input referred) 8400 uV(pp) 8400 uV(pp) 8400 uV(pp) Coupling Mode AC coupled AC coupled AC coupled Connectivity Proprietary 2.4GHz wireless Proprietary 2.4GHz wireless, BLE and USB (Extender only) Proprietary 2.4GHz wireless, BLE and USB (Extender only) Battery Capacity LiPo battery 680mAh LiPo battery 680mAh LiPo battery 680mAh Battery Life (typical) 12 hours 12 hours 12 hours Impedance Measurement Real-time contact quality using patented system Real-time contact quality using patented system Real-time contact quality using patented system IMU Part IDG500 LSM9DS0 ICM-20948 Accelerometer \- 3-axis +/-8g 3-axis +/-4g Gyroscope 2-axis +/-8g 3-axis +/- 500 dps Interpreted as Quaternion Magnetometer \- 3-axis +/- 12 gauss 3-axis +/- 4900 uTesla Motion Sampling 128 Hz 32 / 64 / 128 Hz (User Defined) 32 / 64 Hz Motion Resolution 10 bit 14 / 16-bit (User Defined) 14 / 16-bit (User Defined) Quanterion No No Yes Sensor Material Ag/AgCl + Felt + Saline Ag/AgCl + Felt + Saline Ag/AgCl + Felt + Saline [PreviousAbout](https://emotiv.gitbook.io/epoc-user-manual/introduction-1/about) [NextSafety Precautions](https://emotiv.gitbook.io/epoc-user-manual/introduction-1/safety_precautions) Last updated 5 years ago --- # Regulatory Compliance | MN8 User Manual EMOTIV products are intended to be used for research applications and personal use only. Our products are not sold as Medical Devices as defined in EU directive 93/42/EEC. Our products are not designed or intended to be used for diagnosis or treatment of disease. FCC ID Number 2ADIH-MN801 and IC ID Number 12769A-MN801. ‌EMOTIV has tested MN8 and confirms: This device complies with the radio equipment directive (2014/53/EU). ### [](https://emotiv.gitbook.io/mn8-user-manual/regulatory-compliance#fcc-federal-communication-commission) FCC (Federal Communication Commission) This device complies with part 15 of the FCC Rules. Operation is subject to the following two conditions: 1. This device may not cause harmful interference; and 2. This device must accept any interference received, including interference that may cause undesired operation. This equipment has been tested and found to comply with the limits for a Class B digital device, pursuant to part 15 of the FCC Rules. These limits are designed to provide reasonable protection against harmful interference in a residential installation. This equipment generates, uses and can radiate radio frequency energy and, if not installed and used in accordance with the instructions, may cause harmful interference to radio communications. However, there is no guarantee that interference will not occur in a particular installation. If this equipment does cause harmful interference to radio or television reception, which can be determined by turning the equipment off and on, the user is encouraged to try to correct the interference by one or more of the following measures: * Reorient or relocate the receiving antenna. * Increase the separation between the equipment and receiver. * Connect the equipment into an outlet on a circuit different from that to which the receiver is connected. * Consult the dealer or experienced person for help. #### [](https://emotiv.gitbook.io/mn8-user-manual/regulatory-compliance#fcc-rf-exposure-warning-statement) FCC RF Exposure warning statement: This equipment complies with FCC radiation exposure limits set forth for an uncontrolled environment. End users must follow the specific operating instructions for satisfying RF exposure compliance. This transmitter must be at least 20 cm from the user and must not be co-located or operating in conjunction with any other antenna or transmitter. ### [](https://emotiv.gitbook.io/mn8-user-manual/regulatory-compliance#isedc-innovation-science-and-economic-development-canada) **ISEDC (Innovation Science and Economic Development Canada)** ‌This Class B digital apparatus complies with Canadian ICES-003. Cet appareil numérique de la classe B est conforme à la norme NMB-003 du Canada. This device contains licence-exempt transmitter(s)/receiver(s) that comply with Innovation, Science and Economic Development Canada’s licence-exempt RSS(s). Operation is subject to the following two conditions: 1. This device may not cause interference. 2. This device must accept any interference, including interference that may cause undesired operation of the device. L’émetteur/récepteur exempt de licence contenu dans le présent appareil est conforme aux CNR d’Innovation, Sciences et Développement économique Canada applicables aux appareils radio exempts de licence. L’exploitation est autorisée aux deux conditions suivantes : 1. L’appareil ne doit pas produire de brouillage. 2. L’appareil doit accepter tout brouillage radioélectrique subi, même si le brouillage est susceptible d’en compromettre le fonctionnement. Radiation Exposure Statement: This equipment complies with the IC RSS-102 radiation exposure limits set forth for an uncontrolled environment. This equipment should be installed and operated with a minimum distance of 20 cm between the radiator and your body. Énoncé d'exposition aux rayonnements: Cet équipement est conforme aux limites d'exposition aux rayonnements ioniques RSS-102 Pour un environnement incontrôlé. Cet équipement doit être installé et utilisé avec un Distance minimale de 20 cm entre le radiateur et votre corps. #### [](https://emotiv.gitbook.io/mn8-user-manual/regulatory-compliance#isedc-radiation-exposure-statements) ISEDC Radiation Exposure Statements Radiation Exposure Statement: This equipment complies with the IC RSS-102 radiation exposure limits set forth for an uncontrolled environment. This equipment should be installed and operated with a minimum distance of 20 cm between the radiator and your body. Énoncé d'exposition aux rayonnements: Cet équipement est conforme aux limites d'exposition aux rayonnements ioniques RSS-102 Pour un environnement incontrôlé. Cet équipement doit être installé et utilisé avec un Distance minimale de 20 cm entre le radiateur et votre corps. Please Note: Changes or modifications not expressly approved by the party responsible for compliance could void the user's authority to operate the equipment. [PreviousWarranties and Copyright](https://emotiv.gitbook.io/mn8-user-manual/warranties-and-copyright) [NextSafety Precautions](https://emotiv.gitbook.io/mn8-user-manual/safety-precautions) Last updated 1 year ago --- # Installation | Emotiv Launcher Launcher is a single installer for downloading Emotiv applications. You can use Launcher to download and install Emotiv’s full application suite or select individual applications. #### [](https://emotiv.gitbook.io/emotiv-launcher/getting-started/installation#installing-launcher) Installing Launcher * Download EMOTIV Launcher – [Click here](https://www.emotiv.com/products/emotiv-launcher) to download our centralized installer. * Install the Software – Open the downloaded file and follow the on-screen instructions to install EMOTIV Launcher and our suite of applications, including EmotivPRO, EmotivBCI, and BrainViz. * Log in – Once installed, open the software and sign in with your EmotivID account. #### [](https://emotiv.gitbook.io/emotiv-launcher/getting-started/installation#undefined) [PreviousSystem requirements](https://emotiv.gitbook.io/emotiv-launcher/getting-started/system-requirements) [NextEstablishing Trust for Emotiv Certificates](https://emotiv.gitbook.io/emotiv-launcher/getting-started/establishing-trust-for-emotiv-certificates) Last updated 3 months ago --- # Integration with EmotivBCI | EmotivBCI Toolbox The Emotiv-BCI Node-RED Toolbox is designed to be used alongside our [Emotiv-BCI](https://www.emotiv.com/emotiv-bci/) application. Emotiv-BCI will allow you to create Training Profiles for Mental Commands and Facial Expressions which the Node-RED Toolbox can access via the cloud. You can also use Emotiv-BCI to practice Mental Commands and Facial Expressions and familiarize yourself with other data streams - Performance Metrics and Motion Sensors - that you can apply in Node-RED integrations. **IMPORTANT:** **Before deploying a Node-RED flow**, use Emotiv-BCI to: 1. Login to Emotiv App 2. Connect your headset 3. Check your headset contact quality [PreviousIntroduction](https://emotiv.gitbook.io/emotivbci-node-red-toolbox) [NextRequired skills](https://emotiv.gitbook.io/emotivbci-node-red-toolbox/required-skills) Last updated 5 years ago --- # Introduction | BrainViz EMOTIV BrainViz provides a captivating 3D visualization of the real time brain activity detected with your Epoc X, Epoc+ or Insight headset and is ideal for demonstrations, presentations and educational applications. [PreviousEmotiv BrainViz - User Manual](https://emotiv.gitbook.io/emotiv-brainviz) [NextGetting started](https://emotiv.gitbook.io/emotiv-brainviz/getting_started) Last updated 5 years ago --- # Turning your Insight on and off | Insight 2 User Manual Power OFF Poser ON ![](https://emotiv.gitbook.io/insight-2-user-manual/~gitbook/image?url=https%3A%2F%2Flh3.googleusercontent.com%2FcdJEz2mzbDSELTX1U2_ZmyNPNsS6zER__1PHH0J1P_N0WVoJGY4MIEmELEfwaiaIHuFShiJHDG_OSsowcbvYUdo-8WTiLM1aVqaSFnUWIIi__Gz7nPRTNQf_HnCz00-ArTTiDk9b&width=300&dpr=4&quality=100&sign=f33683ac&sv=2) ![](https://emotiv.gitbook.io/insight-2-user-manual/~gitbook/image?url=https%3A%2F%2Flh6.googleusercontent.com%2FsZFQcItkEawgJym7GAbU-v1hiOsrxSLpMDGwxp9RFX_r6y9U0KdtLrD5HOQ-2oLaMOoCRRVfQqA0aOSGsoPLunwcAEkjxxTJR7Q6dcmXglluii6e2Rb7lUnOioFf2lPN7gPm46w_&width=300&dpr=4&quality=100&sign=2ea3a97c&sv=2) When your headset is turned OFF the LED is not illuminated. To turn the headset ON, press the power button located on the top of the headset. When you do this, a white LED above the EMOTIV logo illuminates to show that it is ON. [PreviousImportant information about using a computer to charge your Insight](https://emotiv.gitbook.io/insight-2-user-manual/getting-started/charging-your-insight/important-information-about-using-a-computer-to-charge-your-insight) [NextConnecting your Insight to a computer using Bluetooth](https://emotiv.gitbook.io/insight-2-user-manual/getting-started/connecting-your-insight-to-a-computer-using-bluetooth) Last updated 3 years ago --- # Changing reference sensor location | EPOC X User Manual EPOC X comes shipped with rubber comfort pads set at the mastoid sensor locations as default. Which means the default referencing in EPOCX devices is P3/P4 referencing. Please see image below as reference. ![](https://emotiv.gitbook.io/epoc-x-user-manual/~gitbook/image?url=https%3A%2F%2F1919735193-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-M3ZQLjv5tAtl-bmf54O%252Fuploads%252FPXUGCAl7iIV4AJrmwKSr%252Fmastoid-reference-points.png%3Falt%3Dmedia%26token%3D7bd3d140-50dd-4efe-9704-026abce55dfa&width=768&dpr=4&quality=100&sign=a300cfcf&sv=2) EPOC X can be operated with the rubber comfort pads in the M1/M2 sensor positions, as well as the P3/P4 positions. To switch to mastoid referencing from the default, take the rubber pads out from the M1/M2 sensors and insert them into P3/P4 sensor positions. Ensure wet felt pads on all other sensors including M1/M2 to ensure mastoid referencing. Please see image below as reference. ![](https://emotiv.gitbook.io/epoc-x-user-manual/~gitbook/image?url=https%3A%2F%2F1919735193-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-M3ZQLjv5tAtl-bmf54O%252Fuploads%252Fb96QYRZtxXPghaiA4GIW%252Fp3_4-reference-points.png%3Falt%3Dmedia%26token%3D1c1266b1-8bfa-4a4c-b04d-4a37a7f7212c&width=768&dpr=4&quality=100&sign=c1edab77&sv=2) You can change the configuration of the reference sensors at any time between recordings, whilst they are not in use. The rubber pads can be removed by twisting them out in the same way that the felt sensors can be twisted out. Simply remove them in this fashion from their existing positions, and insert them into the desired positions. [PreviousFitting the sensor felts](https://emotiv.gitbook.io/epoc-x-user-manual/getting-started/fitting-the-sensor-felts) [NextConnecting your EPOC X to a device](https://emotiv.gitbook.io/epoc-x-user-manual/getting-started/connecting-your-epoc-x-to-a-device) Last updated 3 years ago --- # Important information about using a computer to charge your Insight | Insight 2 User Manual Insight requires a 5V supply and will draw a maximum of 0.5A from a charging port. If you use a computer to charge your Insight, it will check for a maximum available current from the charging port, up to a limit of 0.5A. If the charging port on your computer doesn’t support an extended low power mode, Insight will draw 0.1A and will charge more slowly. If your Insight takes more than two hours to charge fully, try a different charging port on your computer. If you have any issues charging your headset, please get in touch with the EMOTIV Support team. [PreviousCharging Behaviour](https://emotiv.gitbook.io/insight-2-user-manual/getting-started/charging-your-insight/charging-behaviour) [NextTurning your Insight on and off](https://emotiv.gitbook.io/insight-2-user-manual/getting-started/turning-your-insight-on-and-off) Last updated 3 years ago --- # Gel Sensors | EPOC Flex User Manual The EPOC Flex gel kit includes 34 EasyCap multi-rode gel sensors that are crimped and fitted into the connector housing in the order they are labeled. The sensors are made from sintered Silver/SilverChloride to minimise the electrode impedance and fully compatible with gel electrolytes. ![](https://emotiv.gitbook.io/epoc-flex-user-manual/~gitbook/image?url=https%3A%2F%2F1584734385-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LIeRq0woQQZog4Wx9KA%252F-MDHdpRULkRAbaJ8qoeM%252F-MDHo5KLbgNchfHHreXz%252Fflex_gel_electrode.png%3Falt%3Dmedia%26token%3Dc1bcdcb4-0055-4139-b1cb-6e239d9a8b26&width=768&dpr=4&quality=100&sign=1141306d&sv=2) Easycap multi-rode gel sensor We know that researchers can have different needs for references, so we have included ear clips in the kit and the gel sensors are compatible with adhesive pads. The included earclips are blue and fitting as shown below. The clip will hold the sensor onto the ear however can be removed once the gel has hardened. ![](https://emotiv.gitbook.io/epoc-flex-user-manual/~gitbook/image?url=https%3A%2F%2F1584734385-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LIeRq0woQQZog4Wx9KA%252F-LvOSIW6CPeXEh5iXlYm%252F-LvOSkE3cokJMF9PUN0b%252FDSC_0739%2520%282%29.JPG%3Falt%3Dmedia%26token%3D155875b6-d549-4e3a-be28-e82e2222d5b6&width=768&dpr=4&quality=100&sign=a20b9237&sv=2) [PreviousExample Sensor Placement (Montage)](https://emotiv.gitbook.io/epoc-flex-user-manual/electrodes/example-electrode-placement) [NextSaline Sensors](https://emotiv.gitbook.io/epoc-flex-user-manual/electrodes/saline-electrodes) Last updated 4 years ago --- # Fitting the sensor felts | EPOC X User Manual To fit the sensor felts, push each one inside the opening of each sensor arm, making sure that it is securely in place. ![](https://emotiv.gitbook.io/epoc-x-user-manual/~gitbook/image?url=https%3A%2F%2F1919735193-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-M3ZQLjv5tAtl-bmf54O%252F-M50nmUNTuvupmd97076%252F-M50wZAq8crN72BiE6ru%252F25-EPOC%2520X%2520-%2520Quick%2520Start%2520Guide%2520%25203.png%3Falt%3Dmedia%26token%3D6e6fb491-6045-45dc-ba97-7edb86d54944&width=768&dpr=4&quality=100&sign=6d09380d&sv=2) [PreviousFurther saline solution](https://emotiv.gitbook.io/epoc-x-user-manual/getting-started/hydrating-the-sensor-felts/further-saline-solution) [NextChanging reference sensor location](https://emotiv.gitbook.io/epoc-x-user-manual/getting-started/changing-reference-sensor-location) Last updated 5 years ago --- # SD card recording mode | Extender Before you are able to use Extender as a recording device you need a [formatted microSD Card.](https://emotiv.gitbook.io/extender-manual/extender-quick-start/formatting_sd_card) You then need to follow the instructions shown in the following images and text. _Note: All data stored to the SD card is encrypted and the EMOTIV_ [_Cortex_](https://www.emotiv.com/developer/) _application and a_ [_PRO license_](https://www.emotiv.com/emotivpro/) _is required to decrypt the raw data._ _Note: Extender only records the raw data from EMOTIV headsets (raw EEG and motion data) in SD card recording mode. If you need access to our detections for mental commands, performance metrics or facial expressions, please use Extender in Power only or Pass-through mode._ ![](https://emotiv.gitbook.io/extender-manual/~gitbook/image?url=https%3A%2F%2Flh6.googleusercontent.com%2FhWztjxtRrAMiRg1MT0egKO0Fc4eTlHb5Isnq0QzSPaLUbKZSCYpHNcslzPftRLacGjQp3eMoSkc0zvRzlVF64CBnmYmbM1VEm7j15JOHpeKujdi8SR_MXBAv4HCL5AapXsQxETdv&width=768&dpr=4&quality=100&sign=92d18be9&sv=2) In order to operate Extender as a recording device with a headset, please follow these steps: 1. Insert the microSD card into Extender. 2. Turn ON Extender by holding the push button for 2 seconds, the status LED will turn green. 3. Connect headset to Extender using the charge cable. 4. The headset with attempt a wireless connection before the USB and it is advisable to unplug all EMOTIV Universal USB receivers and disable BLE devices previously paired with the headset. 5. Turn ON your headset. When Extender detects the headset the green status LED will turn orange and is ready to record data. 6. To start a recording press the button, the status LED should now turn red. 7. In order to stop recording, press the button again. The status LED will now turn back to orange. A battery powered trigger input can be connected to the extender at anytime and the trigger pulses will be recorded to the files. To access and interpret the data recorded to Extender in SD card recording mode, please refer to our [Data access](https://emotiv.gitbook.io/extender-manual/post-processing) section. [PreviousPower only mode and Trigger Input](https://emotiv.gitbook.io/extender-manual/modes-of-operation/connecting_your_headset_-_power_only) [NextPass-through mode](https://emotiv.gitbook.io/extender-manual/modes-of-operation/connecting_your_headset_-_pass-through_mode) Last updated 6 years ago --- # Job Management | EmotivPRO Analyzer The job management page provides information about the job status. For each Job, you can see the Job Name and Job ID below it, time the job started and progress of the job. ![](https://emotiv.gitbook.io/emotivpro-analyzer/~gitbook/image?url=https%3A%2F%2F3358604837-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-MkFc8_lN6xtzFYs4t5V%252Fuploads%252FzTF2ihFdZ0V47zL7kxoD%252FScreenshot%25202022-11-18%2520140039.png%3Falt%3Dmedia%26token%3D23ef0a35-c9c9-4b69-a9b6-37e8179b0d1e&width=768&dpr=4&quality=100&sign=5f3d74fe&sv=2) If the status doesn’t say ‘Complete’ within a few seconds, click on the **Refresh** button at the bottom right-hand corner of the screen. You can close the browser and return to this page anytime. You can access this page by via your EmotivPRO menu bar as below: ![](https://emotiv.gitbook.io/emotivpro-analyzer/~gitbook/image?url=https%3A%2F%2F3358604837-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-MkFc8_lN6xtzFYs4t5V%252Fuploads%252FtJEvv167K3vSNEfSoWV8%252FScreenshot%25202022-11-18%2520140611.png%3Falt%3Dmedia%26token%3D9fc21e2d-2233-4f0e-9f6f-e6eb996e0db7&width=768&dpr=4&quality=100&sign=3050aedd&sv=2) Once Analyzer has finished processing your data, its status will change from Processing to Complete. You can download the completed data as a ZIP file and save it locally. To do this, click on the **Results** button. If a job has failed, you can click on the **Details** button for indicators of why the job failed. ![](https://emotiv.gitbook.io/emotivpro-analyzer/~gitbook/image?url=https%3A%2F%2F3358604837-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-MkFc8_lN6xtzFYs4t5V%252Fuploads%252FCPA6grQX5lP7OXYdBiOK%252FScreenshot%25202022-11-18%2520140141.png%3Falt%3Dmedia%26token%3Dd2840b17-2af3-4ce6-a0d5-cbf6a8a6c2b4&width=768&dpr=4&quality=100&sign=d17236a4&sv=2) For example in the above job failed because of incorrect marker specification. This can be seen in the detail log as 'No data found': ![](https://emotiv.gitbook.io/emotivpro-analyzer/~gitbook/image?url=https%3A%2F%2F3358604837-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-MkFc8_lN6xtzFYs4t5V%252Fuploads%252FRPfhjCd9FeidpGCyWUiQ%252FScreenshot%25202022-11-18%2520140126.png%3Falt%3Dmedia%26token%3Dbcf6a896-fefe-42e7-8c59-23231e4bac6f&width=768&dpr=4&quality=100&sign=5aa7a39d&sv=2) If you still need help on running a processing job or understanding why your job is failing, you can contact us by completing the **Give Feedback** form which you can access under Get Help on the Job Management page: ![](https://emotiv.gitbook.io/emotivpro-analyzer/~gitbook/image?url=https%3A%2F%2F3358604837-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-MkFc8_lN6xtzFYs4t5V%252Fuploads%252FbepwgOGbHVMc0WKFAapl%252FScreenshot%25202022-11-18%2520140217.png%3Falt%3Dmedia%26token%3Db3258f68-2d94-4220-80c1-86710371baa0&width=768&dpr=4&quality=100&sign=3bb64c26&sv=2) [PreviousPerformance Metric Reports](https://emotiv.gitbook.io/emotivpro-analyzer/job-management/name-and-pipeline/performance-metric-reports) [Nextcsv outputs](https://emotiv.gitbook.io/emotivpro-analyzer/understanding-analyzer-outputs/csv-outputs) Last updated 12 months ago --- # Saline Sensors | EPOC Flex User Manual EMOTIV has developed our own saline sensors compatible with EPOC Flex available to purchase on their own or as a kit. These sensors use the same felt pads as EPOC+ but with are Silver / Silver Chloride plated electrode to grip the felt on the sides. Saline sensors start to dry out after 1-2hours and to enable easy topping up there is a refill hole to allow you re-wet the sensors without needing to take the cap off. To accommodate the existing felt size the saline sensors are bigger than the gel sensors but do still fit into the holes of the same cap. ![](https://emotiv.gitbook.io/epoc-flex-user-manual/~gitbook/image?url=https%3A%2F%2F1584734385-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LIeRq0woQQZog4Wx9KA%252F-LuANDR4LTFSXrp3eVvs%252F-LuANXxVSgu1slsf0kH9%252Fimage.png%3Falt%3Dmedia%26token%3D51c6bd73-016c-48c0-8d21-2cf764542ac9&width=768&dpr=4&quality=100&sign=8fc3f121&sv=2) Saline Sensor (Width 19 mm x Height 7.9 mm) This length is designed to be long enough to reach any position on the cap. Sensor wires are colour coded, blue for left, red for right, and black for references. In addition, each sensor will be individually labeled with the channel name it is connected to the EPOC Flex. The aim of this colour coding is simple, when troubleshooting you can quickly identify the colour and channel name in the software and quickly find the sensor on the cap. For example, if contact quality is low on channel LA this corresponds with the blue channel A wire. The sensor wires are in two lengths to help to minimise the excess but also allow for any configuration, channels A-G are 300mm and channel J-Q are 150mm. Once you have fitted all the sensors in place we recommend that you use the included tagger pins and tagger tool to tidy up the wiring (See [link](https://emotiv.gitbook.io/epoc-flex-user-manual/setup/untitled) ). Or we recommend that you place a cap over the top to stop these wires catching. If your research involves minimising motion artifacts you should keep the excess wire secured. EMOTIV now offers pre-configured Saline caps with all 32 channels fitted as per the default layout in PRO, the wires are cut to length and tied down. This means you can very quickly set up the cap and start recording. [PreviousGel Sensors](https://emotiv.gitbook.io/epoc-flex-user-manual/electrodes/electrode-assembly) [NextEPOC Flex Cap](https://emotiv.gitbook.io/epoc-flex-user-manual/cap/epoc-flex-cap) Last updated 4 years ago --- # Storage | EPOC+ When the EPOC+ is not in use, it is best to remove all the sensors or at least the felt pads and place them in the provided hydrator pack. The pack should be kept open to dry out. Wet sensor assemblies left in the headset will corrode over time and you don't want this corrosion to take place because it will damage the headset. The corrosion is caused by the saline solution reacting with the coating that we use to improve the signal quality. We recommend that you soak the felts well to ensure good contact quality. You can place the felts in the hydrator pack but leave the sensors fitted to the frame. We provide replacement sensor packs and felts on our accessories page of the [online](https://www.google.com/url?q=https://www.emotiv.com/product-category/accessories/&sa=D&ust=1517545046805000&usg=AFQjCNEeRDN2fXA-ETGpLNc29fYIogKXdw) [store](https://www.google.com/url?q=https://www.emotiv.com/product-category/accessories/&sa=D&ust=1517545046805000&usg=AFQjCNEeRDN2fXA-ETGpLNc29fYIogKXdw) . [PreviousReattaching Sensor Frame](https://emotiv.gitbook.io/epoc-user-manual/troubleshooting/reattaching-sensor-frame) [NextElectrode Assembly](https://emotiv.gitbook.io/epoc-user-manual/troubleshooting/electrode_assembly) Last updated 5 years ago --- # Contact quality map | BrainViz ![](https://emotiv.gitbook.io/emotiv-brainviz/~gitbook/image?url=https%3A%2F%2F1567340468-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LIeRq0njY0rwWNQCNSG%252F-LIeRsvL-dav9n5b0qM0%252F-LIeRywUdcH3gr8b8d-U%252FScreen%2520Shot%25202017-12-08%2520at%25202.16.12%2520PM.png%3Fgeneration%3D1532941824294157%26alt%3Dmedia&width=768&dpr=4&quality=100&sign=56254eb&sv=2) Accurate data collection depends on good sensor contact and EEG signal quality. The contact quality display is a visual representation of the current contact quality of the individual headset sensors. You can observe each sensor’s status in real time to adjust sensors to optimize contact quality. The color coding is as follows: * Green - good * Orange - moderate * Red - poor * Black - very poor [PreviousFitting headset](https://emotiv.gitbook.io/emotiv-brainviz/fitting_headset) [NextContact quality indicator](https://emotiv.gitbook.io/emotiv-brainviz/contact_quality_map/contact_quality_indicator) Last updated 6 years ago --- # Contact quality indicator | BrainViz The contact quality indicator shows you in real time your overall contact quality averaged across all sensors on your headset. You can click on the contact quality indicator at any time to access the Contact Quality View. ![](https://emotiv.gitbook.io/emotiv-brainviz/~gitbook/image?url=https%3A%2F%2F1567340468-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LIeRq0njY0rwWNQCNSG%252F-LIeRsvL-dav9n5b0qM0%252F-LIeRx9bjYtHtoDo9mt9%252FScreen%2520Shot%25202017-12-08%2520at%25202.17.05%2520PM.png%3Fgeneration%3D1532941817064924%26alt%3Dmedia&width=768&dpr=4&quality=100&sign=90fa33e6&sv=2) [PreviousContact quality map](https://emotiv.gitbook.io/emotiv-brainviz/contact_quality_map) [NextBattery indicator](https://emotiv.gitbook.io/emotiv-brainviz/contact_quality_map/battery_indicator) Last updated 6 years ago --- # Connecting your Insight to a computer using Bluetooth | Insight 2 User Manual Insight connects to a computer using Bluetooth. To do this: 1. Go to your computer’s settings and enable Bluetooth. 2. Turn your Insight on. Open Emotiv Launcher. 3. Click on the Devices tab. 4. Find your headset on the device list. 5. Click on Connect next to your Insight. Information on installing and using Emotiv Launcher can be found in the Emotiv Launcher User Manual. [PreviousTurning your Insight on and off](https://emotiv.gitbook.io/insight-2-user-manual/getting-started/turning-your-insight-on-and-off) [NextFitting your Insight](https://emotiv.gitbook.io/insight-2-user-manual/fitting-and-adjusting-insight/fitting-your-insight) Last updated 3 years ago --- # Performance Metric Reports | EmotivPRO Analyzer This pipeline allows you to specify markers of interest and generate averaged Performance Metric(PM) plots. _**NOTE:**_ _Performance Metric reports can only be generated for event markers that have at least a minimum duration of 2 seconds. This report also does not support EmotivPRO keystroke markers - as these are instance markers with a zero duration._ You have the option of running PM reports on a single record or multiple records: 1. **Individual Performance Metric Reports** - select single or multiple records to analyze. This pipeline outputs plots of averaged Performance Metrics for selected markers, for each individual record submitted. 2. **Performance Metric Report** \- select multiple records to analyze. This pipeline will output plots of averaged Performance Metrics for selected markers, averaged over all submitted records. For either pipeline you simply need to specify the markers you want to generate reports for. ### [](https://emotiv.gitbook.io/emotivpro-analyzer/job-management/name-and-pipeline/performance-metric-reports#report-specification) Report Specification 1. **Element of Phase Name** First you can choose whether you want to select Phase Names or Element Names. If you built your experiment using EmotivPRO Builder, then you will have the option of generating reports for either the entire Phase or individual Elements. If you built your experiment using any other software (e.g. PsychoPy) select Elements here. ![](https://emotiv.gitbook.io/emotivpro-analyzer/~gitbook/image?url=https%3A%2F%2F3358604837-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-MkFc8_lN6xtzFYs4t5V%252Fuploads%252FXbxcFg5LwDw6QnNzvKhp%252Felement.png%3Falt%3Dmedia%26token%3Df2c2a914-b63d-4b80-a6f8-5db6110d2df7&width=768&dpr=4&quality=100&sign=2ddfdac4&sv=2) **2\. Parameters / Markers** Specify the marker labels here. The element name must match the marker label (name in "type" column) found in your interval marker file. You can obtain the interval marker file when you export a record using EmotivPRO. ![](https://emotiv.gitbook.io/emotivpro-analyzer/~gitbook/image?url=https%3A%2F%2F3358604837-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-MkFc8_lN6xtzFYs4t5V%252Fuploads%252Fq6X8v0s5WIlyhcJ0HDxt%252FScreenshot%25202022-11-18%2520132559.png%3Falt%3Dmedia%26token%3D8907fd05-3a75-48a1-ad09-ef6933115991&width=768&dpr=4&quality=100&sign=412fbdd7&sv=2) ### [](https://emotiv.gitbook.io/emotivpro-analyzer/job-management/name-and-pipeline/performance-metric-reports#results) Results [PreviousGroup ERP Analysis](https://emotiv.gitbook.io/emotivpro-analyzer/job-management/name-and-pipeline/erp-experiment-analysis/group-erp-analysis) [NextJob Management](https://emotiv.gitbook.io/emotivpro-analyzer/job-management/job-management) Last updated 12 months ago --- # Electrode Assembly | EPOC+ [](https://emotiv.gitbook.io/epoc-user-manual/troubleshooting/electrode_assembly#broken-sensor-lock) Broken Sensor Lock ---------------------------------------------------------------------------------------------------------------------------- Occasionally, due to wear and tear, the quarter turn locking mechanism holds the sensor onto the headset breaks. This makes it impossible for the sensors to stay in place but it is possible to repair. Please contact [online support](https://www.google.com/url?q=https://www.emotiv.com/contact-support/&sa=D&ust=1517545046757000&usg=AFQjCNE4vfb4M1c6JM3oCVnbLcxsqJncsw) for assistance. [PreviousStorage](https://emotiv.gitbook.io/epoc-user-manual/troubleshooting/storage) [NextEMOTIV Applications](https://emotiv.gitbook.io/epoc-user-manual/software-1/software) Last updated 5 years ago --- # Connecting your EPOC X to a device | EPOC X User Manual To connect your EPOC X headset to your PC or Mac you can either use the provided USB receiver dongle or Bluetooth Low Energy. The USB receiver dongle provides a dedicated and stable connection to your chosen EMOTIV application. Bluetooth Low Energy connections can be shared with other devices. ![](https://emotiv.gitbook.io/epoc-x-user-manual/~gitbook/image?url=https%3A%2F%2F1919735193-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-M3ZQLjv5tAtl-bmf54O%252F-M50nmUNTuvupmd97076%252F-M50wq5aO-qNQq7TJ995%252F30-dongle3.gif%3Falt%3Dmedia%26token%3Dc89181c6-8d0b-4a82-9d2e-06e431c794e1&width=768&dpr=4&quality=100&sign=5fc63335&sv=2) [PreviousChanging reference sensor location](https://emotiv.gitbook.io/epoc-x-user-manual/getting-started/changing-reference-sensor-location) [NextConnecting your EPOC X using the USB receiver dongle](https://emotiv.gitbook.io/epoc-x-user-manual/getting-started/connecting-your-epoc-x-to-a-device/connecting-your-epoc-x-using-the-usb-receiver-dongle) Last updated 5 years ago --- # Band Power calculation | EmotivPRO Analyzer The EmotivPRO Analyzer allows the following operations that involve the pre-processing and bandpower extraction. * Basic EEG processing * Basic EEG processing and Transformation * Individual Band-Power Reports * Band Power Report **Limit slew rate :** This limits the step change between 2 samples. Analyzer applies a slew rate limitation at 30 µV. **High-pass filter :** The data is high-pass filtered before performing the fourier transform. We use the following coefficients ( 3dB at 0.5Hz filter): Copy filter_coeffs": { "b": [0.96588528974407006000, -1.93177057948814010000, 0.96588528974407006000], "a": [1.00000000000000000000, -1.93060642721966810000, 0.93293473175661223000]} **Re-referencing:** Analyzer supports three ways of re-referencing the EEG data. Interquartile mean (IQM), Median, and Mean. **Hanning Window :** Users can choose a window size of N (e.g. 256) samples and this window by M (e.g. 16) samples to create the new window. The exact implementation of the Hanning window we use: Copy hanning_window = [] for i in range(256): hanning_window.append(0.5 * (1 - np.cos((2.0 * np.pi * (i + 1)) / (256 + 1)))) **Band Powers and Normalization :** Our normalization uses python and numpy. Multiplying the Hanning window by 2 (as the window reduces the amplitude of the Fourier transform by a factor of 2 and divide the output of the fft by the window length) We also subtract the mean of the data for each epoch/window as the DC value is not usable and only distorts the Fourier transform of the lower frequencies. Copy hanning_window = np.hanning(eeg.shape[0]) * 2 eeg_norm = eeg - np.mean(eeg, axis=0) eeg_fft = (eeg_norm.T * hanning_window).T fourier_transform = fft(eeg_fft, axis=0)/eeg_fft.shape[0] fourier_transform_norm = (2 x fourier_transform) / hanning_window.shape[0] eeg_fft_square_3d = np.absolute(fourier_transform_norm)**2 band = list(range(16, 25)) band_power = np.sum(eeg_fft_square_3d[band, :, :], axis=0) / len(band) //Finally EmotivPRO Analyzer will output band power in decibels (dB): band_power_db = 10*np.log10(band_power)) [Previouscsv outputs](https://emotiv.gitbook.io/emotivpro-analyzer/understanding-analyzer-outputs/csv-outputs) Last updated 12 months ago --- # Inserting Sensors | FLEX 2.0 User Manual To insert the sensors into the FLEX Cap, we recommend placing it onto a mannequin head and inserting the sensors through the openings before placing it onto your participant’s head. It can take up to an hour to position all the sensors in your chosen configuration. ### [](https://emotiv.gitbook.io/flex-2.0-user-manual/setting-up-flex-cap/inserting-sensors#inserting-sensors-steps) Inserting Sensors Steps **Step 1** Hold the underside of the FLEX Cap. Then, stretch the material around the hole you’re inserting the sensor through. ![](https://emotiv.gitbook.io/flex-2.0-user-manual/~gitbook/image?url=https%3A%2F%2Flh7-us.googleusercontent.com%2FWdujLVwAc44WuNTX7NENQL1ex7mvCIrR-HEjH-mAvIUBr_ShguRtUVXVMZiq4E6VmAHqK3Gq_LRQ78gfgno-QYlBAb2HysSts9d6wdv8fB5W9ZFLMRWCGU1mKk19i1lYSYFfNyBZLHK5g1VX4aucJiY&width=300&dpr=4&quality=100&sign=682ec1f4&sv=2) **Step 2** There are two ways to insert the sensors into the FLEX Cap. 1. To insert the sensor, push it upwards through the hole, then release the tension in the material so that it fits around the bottom half of the sensor; or 2. Turn the FLEX Cap inside out, stretch the hole over the sensor, then let the material retract into place around the plastic groove of the sensor. **TIPS:** * Always ensure the sensor felt (saline only) faces inwards, towards the scalp, before inserting. * Most of the sensor should be on the outside of the FLEX Cap, and the felt pad should be on the inside, where it will rest against your participant’s scalp during your study. * Do not force the sensors through the openings. ![](https://emotiv.gitbook.io/flex-2.0-user-manual/~gitbook/image?url=https%3A%2F%2Flh7-us.googleusercontent.com%2FjDjtRDa8-zozNHiCo6MxQxGKGJC3wSpVCM9DVcwzYSNTgGH_uUVLzLOzLcjYjVisA5sd3MSW8f8yBz2qKWV9MsTm3_OpZiPVKISHi1Ypn3cPjWrg1ZEBu5zvJKeIEyV9bhSku-yEA8mG_cARQxkt6HM&width=300&dpr=4&quality=100&sign=63572d6&sv=2) **Step 3** Adjust the material around the sensor until it is fully fixed in place. ![](https://emotiv.gitbook.io/flex-2.0-user-manual/~gitbook/image?url=https%3A%2F%2Flh7-us.googleusercontent.com%2FHpoYY04_FGjj0Wvbz5u9ZHVA1ibV7F40091ksazYcx2rl6JWCt3Ym0jcWwdjfU5fr_nSg2Y4JTMkF9l7k6qX1NyZsyAPxvvMHKvWJONXtSV_abxwm969LAOQ46Mp_X6qiFZTVSH3RA0VMhZ_rPKtTT0&width=300&dpr=4&quality=100&sign=ea0faa27&sv=2) Repeat these three steps for all of the sensors in your chosen configuration. [PreviousPre-Configured Saline FLEX Cap](https://emotiv.gitbook.io/flex-2.0-user-manual/flex-cap/pre-configured-saline-flex-cap) [NextFitting FLEX Cap to a Participant](https://emotiv.gitbook.io/flex-2.0-user-manual/setting-up-flex-cap/fitting-flex-cap-to-a-participant) Last updated 1 year ago --- # Connecting your EPOC X using the USB receiver dongle | EPOC X User Manual ![](https://emotiv.gitbook.io/epoc-x-user-manual/~gitbook/image?url=https%3A%2F%2F1919735193-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-M3ZQLjv5tAtl-bmf54O%252F-M50nmUNTuvupmd97076%252F-M50wxY_7r9ap0-BTPYx%252F27-EPOC%2520X%2520-%2520Quick%2520Start%2520Guide%2520%25207.png%3Falt%3Dmedia%26token%3Dc39450eb-87af-41bb-8419-1192dcd271f0&width=768&dpr=4&quality=100&sign=21392f5e&sv=2) The USB receiver dongle uses a proprietary 2.4 GHz protocol to stream data from your headset. We recommend that you use the USB receiver dongle in environments with high levels of Bluetooth interference. 1. Insert the USB receiver dongle into the USB port of your PC or Mac. When the USB receiver dongle is inserted into the port, one LED will light up. 2. Press the power button on the headset. The headset will then beep and the LED next to the power button will turnwhite. 3. After the headset is turned on, a second LED on the USB receiver dongle will light up and start to flash. Your headset and USB receiver dongle are now connected. For further information on setting up the connection with your chosen EMOTIV application, please refer to the relevant user manual. [PreviousConnecting your EPOC X to a device](https://emotiv.gitbook.io/epoc-x-user-manual/getting-started/connecting-your-epoc-x-to-a-device) [NextUSB receiver dongle behaviour](https://emotiv.gitbook.io/epoc-x-user-manual/getting-started/connecting-your-epoc-x-to-a-device/connecting-your-epoc-x-using-the-usb-receiver-dongle/usb-receiver-dongle-behaviour) Last updated 5 years ago --- # Reattaching Sensor Frame | EPOC+ Occasionally, the electrode assembly that the sensor locks into comes apart as shown in the following image. ![](https://emotiv.gitbook.io/epoc-user-manual/~gitbook/image?url=https%3A%2F%2Flh3.googleusercontent.com%2F7914AegURqVAuFMDH7ghtP2_Qx9Ulw3AfqYJn9O_uApIxWZk-xPTH34UQFBLgGdCE-_vN9eddKmFa9EljfYZqfZiMDZAmJazplCp8FW6NbOUdhhBOhml-jjeIdzZ38k6wPJvLfVz&width=768&dpr=4&quality=100&sign=1b7475b9&sv=2) [PreviousSaline Solution](https://emotiv.gitbook.io/epoc-user-manual/troubleshooting/saline-solution) [NextStorage](https://emotiv.gitbook.io/epoc-user-manual/troubleshooting/storage) Last updated 5 years ago --- # Pass-through mode | Extender Pass through mode allow you to use your EMOTIV headset while it is plugged in. To operate Extender as a pass-through device with your headset, please follow these instructions: ![](https://emotiv.gitbook.io/extender-manual/~gitbook/image?url=https%3A%2F%2Flh6.googleusercontent.com%2FIUso3thQ5IcDiI8OrIgUHXmnbSdjZdkpGX2q6dwB2LO4-HtkJj3O0IFmnSC1k2uJN_7XuK0fDjJMKOHY5eUMyoCRwA_y8WmN--k4nRTGrMY2d9l2zlh6Cy2PazZ6uXCl4LSlW_QN&width=768&dpr=4&quality=100&sign=379f3acc&sv=2) 1. The headset with attempt a wireless connection before the USB and it is advisable to unplug all EMOTIV Universal USB receivers and disable BLE devices previously paired with the headset. 2. Plug Extender into an open USB socket. The PC connection is the smaller mini-B USB port on left edge of Extender. 3. Turn Extender ON. 4. Plug the headset into the other USB port of Extender using the supplied charge cable. 5. Turn on the headset. The USB detection system of your device should register a disconnection and a new USB connection which simulates an EMOTIV USB Receiver. 6. Start up your EMOTIV application. The application should register the presence of the Insight connected through Extender. 7. If the connection does not work, power cycle the headset, then power cycle Extender. Hardware triggering can be used in pass-through mode. [PreviousSD card recording mode](https://emotiv.gitbook.io/extender-manual/modes-of-operation/connecting_your_headset_-_sd_card_recording) [NextUSB drive mode](https://emotiv.gitbook.io/extender-manual/modes-of-operation/usb-drive-mode) Last updated 5 years ago --- # Inserting the Sensors into the Cap | EPOC Flex User Manual Hold the underside of the cap, stretch the material in all directions around the hole you intend to fit, then wedge the sensor into the hole. Push upwards first and then let the material move to fix the bottom half. Adjust the material until the sensor is fully fixed. Repeat this step for all the Sensors in your desired configuration. ![](https://emotiv.gitbook.io/epoc-flex-user-manual/~gitbook/image?url=https%3A%2F%2F1584734385-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LIeRq0woQQZog4Wx9KA%252F-Lr8z513c1Qs9zDTiaNI%252F-LrCF_i6mZ2IMsAOwBVG%252Finsert_sensors.png%3Falt%3Dmedia%26token%3Dad120a1c-d4ec-414a-a6d4-f997f5c22288&width=768&dpr=4&quality=100&sign=8a30b9d7&sv=2) Inserting the sensors Since the Saline Sensors are a little larger than the Gel Sensors, it is easier to stretch the material of the cap around the Sensors than forcing the Sensor into the cap. With the saline felt pad facing inwards, place it over the Sensor hole into which you wish to fit it. Flipping the Cap inside out, stretch the hole over the Sensor, let the material pop into place into the plastic groove. The majority of the Sensor should be on the outer side, while the felt should protrude towards the inside, where it will be resting against the scalp when the cap is in place. Repeat this step for all Sensors. ![](https://emotiv.gitbook.io/epoc-flex-user-manual/~gitbook/image?url=https%3A%2F%2F1584734385-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LIeRq0woQQZog4Wx9KA%252F-LrCG2_Dcu-jDGY6cQ8F%252F-LrCK63E8HkLtqtV4Aeu%252Finsert%2520sensors2.png%3Falt%3Dmedia%26token%3D69bc0a8f-a563-465e-bc87-c62e2778b822&width=768&dpr=4&quality=100&sign=d48623e9&sv=2) ![](https://emotiv.gitbook.io/epoc-flex-user-manual/~gitbook/image?url=https%3A%2F%2F1584734385-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LIeRq0woQQZog4Wx9KA%252F-LrCG2_Dcu-jDGY6cQ8F%252F-LrCJATqZYomk92FwuCJ%252Fimage.png%3Falt%3Dmedia%26token%3D3a9d4a9b-e92d-4915-940d-d052a1b32a41&width=768&dpr=4&quality=100&sign=491c6628&sv=2) [PreviousChoosing the Cap Size](https://emotiv.gitbook.io/epoc-flex-user-manual/cap/choosing-cap-size) [NextInserting silicon skirts onto Sensors](https://emotiv.gitbook.io/epoc-flex-user-manual/setup/inserting-silicon-skirts-onto-sensors) Last updated 5 years ago --- # Upgrading firmware | Emotiv Launcher From time to time, we will release firmware upgrades for our hardware products. We have prepared a step-by-step guide to do this for each of our hardware products. Learn more about [firmware upgrades](https://emotiv.gitbook.io/updating-firmware-1/) . [PreviousContact quality map](https://emotiv.gitbook.io/emotiv-launcher/devices/contact-quality-map) [NextWhat is Virtual Brainwear?](https://emotiv.gitbook.io/emotiv-launcher/devices-setting-up-virtual-brainwear-r/what-is-virtual-brainwear) Last updated 2 years ago --- # Fitting your Insight | Insight 2 User Manual To fit Insight to your head: 1. Turn your Insight ON. 2. Gently slide Insight onto your head, making sure the reference sensors contact the skin behind your left ear. If needed, gently bend the reference sensor arm so that the reference sensor makes contact with the skin behind your left ear. 3. To position the front sensors, position them three finger widths above your eyebrows. 4. To position the three-prong sensor, work it back and forth through your hair to achieve good contact quality with the scalp. ![](https://emotiv.gitbook.io/insight-2-user-manual/~gitbook/image?url=https%3A%2F%2Flh6.googleusercontent.com%2FrYdvQUDMNajj5Clr5Bk2vPiE-cniOXcZAhucnE4p4sgL2jtgJbxKKEQK3SlvC0ztcpUFg2uFt-H03BkykPpI-nTTYn7sbq_5XtRNA_DJCHX8DjUtNa8DW7y0kMj_qZcFpvJkdqqB&width=768&dpr=4&quality=100&sign=4aec5418&sv=2) [PreviousConnecting your Insight to a computer using Bluetooth](https://emotiv.gitbook.io/insight-2-user-manual/getting-started/connecting-your-insight-to-a-computer-using-bluetooth) [NextAdjusting Insight to fit your head](https://emotiv.gitbook.io/insight-2-user-manual/fitting-and-adjusting-insight/adjusting-insight-to-fit-your-head) Last updated 3 years ago --- # Contact quality map | Emotiv Launcher To view the contact quality map and adjust individual sensors: 1. Click on the ![](https://emotiv.gitbook.io/emotiv-launcher/~gitbook/image?url=https%3A%2F%2Flh4.googleusercontent.com%2FRztoNtjj4D0ahJOQXCmiWoSZMTpvTFHxoNDO1TDIJJ9xKj-N2USVMg4neSCu_qZaoET19MIpzp0yUgXJEMPkCn7TYgFcjTnU7Ud1TU_Rw9YUqbCcoJtYTaiPsse5HGGNHRdWWPV9%3Ds0&width=300&dpr=4&quality=100&sign=cc072ba0&sv=2) icon. 2. Select **Configuration**. 3. Information about fitting your headset and achieving good contact quality will appear on your screen. To collect accurate data you need good sensor contact and EEG signal quality. The contact quality display is a visual representation of the live contact quality from each individual headset sensor. Each sensor’s status is shown in real-time so that you can adjust the sensors to optimize contact quality. The contact quality color codes are: Green — good Orange — moderate Red — poor Black — very poor If you have trouble maintaining good contact quality, your headset’s user manual also contains information on fitting your headset and maintaining contact quality. [PreviousFitting a headset](https://emotiv.gitbook.io/emotiv-launcher/devices/fitting-a-headset) [NextUpgrading firmware](https://emotiv.gitbook.io/emotiv-launcher/devices/upgrading-firmware) Last updated 3 years ago --- # Software requirements | EmotivPRO Builder Before using Builder, you must have EMOTIV Launcher installed on your computer so Builder can operate in your internet browser. For more information on installing EMOTIV Launcher on your computer, please refer to the [EMOTIV Launcher User Manual](https://emotiv.gitbook.io/cortex-manual/) . [PreviousSystem requirements](https://emotiv.gitbook.io/emotivpro-builder/getting-started/system-requirements) [NextOpening Builder in your internet browser](https://emotiv.gitbook.io/emotivpro-builder/getting-started/opening-builder-in-your-internet-browser) Last updated 1 year ago --- # Adjusting Insight to fit your head | Insight 2 User Manual If your Insight is not fitting well, you can adjust the headband by warming it with a hairdryer until the plastic becomes more flexible. You can then gently adjust the headband to fit your head. Do not adjust the headband while it is cold. Doing this can cause the plastic to crack. If the sensors are not making good contact with the scalp, you can also try the above method to adjust the headband and improve the contact quality. [PreviousFitting your Insight](https://emotiv.gitbook.io/insight-2-user-manual/fitting-and-adjusting-insight/fitting-your-insight) [NextHow to achieve the best contact quality](https://emotiv.gitbook.io/insight-2-user-manual/fitting-and-adjusting-insight/how-to-achieve-the-best-contact-quality) Last updated 3 years ago --- # Specifications & Information | X-trodes User Manual [Technical specifications](https://emotiv.gitbook.io/x-trodes-user-manual/specifications-and-information/technical-specifications) [Warnings and Cautions](https://emotiv.gitbook.io/x-trodes-user-manual/specifications-and-information/warnings-and-cautions) [Description of symbols](https://emotiv.gitbook.io/x-trodes-user-manual/specifications-and-information/description-of-symbols) [Regulatory compliance](https://emotiv.gitbook.io/x-trodes-user-manual/specifications-and-information/regulatory-compliance) [PreviousSystem Removal](https://emotiv.gitbook.io/x-trodes-user-manual/system-removal) [NextTechnical specifications](https://emotiv.gitbook.io/x-trodes-user-manual/specifications-and-information/technical-specifications) Last updated 1 year ago --- # csv outputs | EmotivPRO Analyzer The Analyzer csv outputs for each pipeline contains some columns which are the same as in the raw data exported from EmotivPRO. This is detailed in the [EmotivPRO manual](https://emotiv.gitbook.io/emotivpro-v3/managing-your-eeg-data-recordings/exporting-an-eeg-data-recording/csv-files#eeg-quality) . In addition to these, the Analyzer outputs will include different columns depending on the pipeline. **Basic EEG Processing:** Key Value latency\_\_desc Time since the start of the recording in seconds eeg. Examples: eeg.af3, eeg.f7 Processed EEG data for each EEG sensor, in microvolts. sq.sampleratequality sq.overallsensorquality sq.pm sq.signalmagnitudequality sq.internalsignalmagnitudequality sq.sensorqualityscore sq.internalsensorqualityscore sq.likelihood sq.rms These columns are for internal use for calculating EEG Quality **EEG transformation and Band Power Reports (Individual and Grouped) :** Key Value stamp\_i\_\_desc timestamp of the start of the Fourier transform window stamp\_f\_\_desc timestamp of the end of the Fourier transform window latency\_i\_\_desc time of the beginning of the Fourier transform window relative to the beginning of the recording latency\_f\_\_desc time of the beginning of the Fourier transform window relative to the end of the recording. eeg.\[ch\]\_\[low\_f\]\_\[high\_f\]Hz\_\_feat The bandpowers in decibels (ie 10\*log10 (band\_power per hertz) in the channel ch in the band from low\_f to high\_f (including low\_f and excluding high\_f) minimum\_cq\_\_desc Contact quality score of the worst channel in the Fourier transform window maximum\_rms\_\_desc The largest root mean square(RMS) over the Fourier transform window. data\_fixed\_\_desc A flag to say that there was data missing or other problem in the Fourier transform window. marker\_label\_\_desc The event marker or event label name phasename\_\_desc The phase name - This is typically only found in records created with Emotiv Builder/Emotiv LABS experiments record\_title Title or name of the record subject\_id subject identification number [PreviousJob Management](https://emotiv.gitbook.io/emotivpro-analyzer/job-management/job-management) [NextBand Power calculation](https://emotiv.gitbook.io/emotivpro-analyzer/understanding-analyzer-outputs/band-power-calculation) Last updated 12 months ago --- # What are elements? | EmotivPRO Builder Elements are the different media you can add to each phase of an experiment. They include: * **Text** — Type and edit text * **Images** — Upload an image file or select a previously uploaded image * **Audio** — Upload an audio file or select a previously uploaded audio file * **Video** — Upload an audio file or select a previously uploaded audio file * **Questionnaires** — Type questions, choose the type of questions (e.g. multiple-choice or open text), input answers, and choose how they are displayed. You can add as many elements as you like to a phase. [PreviousHow do I build an experiment in Builder?](https://emotiv.gitbook.io/emotivpro-builder/building-an-experiment-in-builder/how-do-i-build-an-experiment-in-builder) [NextNaming elements](https://emotiv.gitbook.io/emotivpro-builder/building-an-experiment-in-builder/naming-elements) Last updated 3 years ago --- # Fitting FLEX Cap to a Participant | FLEX 2.0 User Manual Fit the FLEX Cap to your participant’s head like you would fit a swimming cap. 1. Place the FLEX Cap over your participant's forehead, ensuring the pocket for the FLEX Controller is at the back of the head. 2. Stretch FLEX Cap to the back of their head. 3. Make sure their ears are placed through the ear holes. 4. If your participant has long hair, make sure that it is spread out evenly across their head so that there are no thick sections. Your participant’s hair must not be tied up during the experiment. When the FLEX Cap is on your participant’s head, they should feel the pressure of each sensor against their scalp. If they do not feel pressure from the sensors on their scalp, there might not be enough tension in the FLEX Cap. If this happens, then try fitting a smaller FLEX Cap or move the chin strap to see if it becomes more tense. [PreviousInserting Sensors](https://emotiv.gitbook.io/flex-2.0-user-manual/setting-up-flex-cap/inserting-sensors) [NextPositioning the FLEX Controller](https://emotiv.gitbook.io/flex-2.0-user-manual/setting-up-flex-cap/positioning-the-flex-controller) Last updated 1 year ago --- # Positioning the FLEX Controller | FLEX 2.0 User Manual There are two places on the FLEX Cap to position the FLEX controller — at the top (Cz) or the rear (lz). See the images below. If you’re doing a sleep study or your participant needs a headrest (e.g., they use a wheelchair), we recommend positioning the FLEX Controller at the top of the FLEX Cap. ![](https://emotiv.gitbook.io/flex-2.0-user-manual/~gitbook/image?url=https%3A%2F%2Flh7-us.googleusercontent.com%2FxS-oh9g7o-MvlvwkJlUK-kIIolbB_IQJVZXBjJPFs6FF_4mSWBpxb2e1VIIeUfba9yOTsmFSGLdkuU8id4H5X2zdnyigAdMFP1e9S2CRJcY4tk5_yAao_ql1pSMQ4EIwh7yKaS8tBdKooB_cje5Eruk&width=300&dpr=4&quality=100&sign=153b1592&sv=2) ### [](https://emotiv.gitbook.io/flex-2.0-user-manual/setting-up-flex-cap/positioning-the-flex-controller#how-to-fit-the-flex-controller) How to Fit the FLEX Controller 1. Choose the position you want the FLEX Controller to be in. 2. Place the FLEX Controller in the pocket with the EMOTIV logo facing you. 3. Stretch the Flex Cap fabric over the FLEX Controller and around the edge of the EMOTIV logo (the circle). 4. The FLEX controller is now secured into place and ready to be used. ![](https://emotiv.gitbook.io/flex-2.0-user-manual/~gitbook/image?url=https%3A%2F%2Flh7-us.googleusercontent.com%2F_znuNYQR_8NdSb79Q9QZAAnAWr1xl1t7kODUgYzphyD8bEOcXEqa1AICM-oJ464n_jZ-xtKSnP_cIEMewQpGfLkYFIFU3Bg3e5WshXDWy4_zzJ2pT7YPPc3008pjU9mCV2gd6wob0zRXr5xJ37RkmuU&width=300&dpr=4&quality=100&sign=72550f2a&sv=2) [PreviousFitting FLEX Cap to a Participant](https://emotiv.gitbook.io/flex-2.0-user-manual/setting-up-flex-cap/fitting-flex-cap-to-a-participant) [NextTidying the Wires and Minimizing Motion Artifacts](https://emotiv.gitbook.io/flex-2.0-user-manual/setting-up-flex-cap/tidying-the-wires-and-minimizing-motion-artifacts) Last updated 1 year ago --- # EMOTIV Applications | EPOC+ EMOTIV offers several software solutions to use with your headset that you can choose based on your needs. To view our full featured software applications, please visit the PRODUCTS/SOFTWARE section of our [website](https://www.emotiv.com/) . If you are interested in developing your own applications for your EPOC+ headset, you can view the SDK licensing options and support [here](https://www.emotiv.com/developer/) . You can also access and download Cortex, our SDK service application that allows you to connect your device with our headset for third party applications. [PreviousElectrode Assembly](https://emotiv.gitbook.io/epoc-user-manual/troubleshooting/electrode_assembly) Last updated 5 years ago --- # System requirements | EmotivPRO v3.0 Learn more about [the system requirements for EmotivPRO](https://emotiv.gitbook.io/system-requirements/emotivpro-v3.0) . [PreviousEmotivPRO](https://emotiv.gitbook.io/emotivpro-v3) [NextInstall EMOTIV Launcher](https://emotiv.gitbook.io/emotivpro-v3/getting-started/install-emotiv-launcher) Last updated 3 years ago --- # System Removal | X-trodes User Manual Follow these steps to remove the equipment: 1. Remove the patch. Gently remove the patch from the skin (together with the DAU). You may use a wet wipe to remove the patch more easily. 2. Disconnect the DAU from the patch. Disconnect the card connector from the DAU and detach it from the adhesive. 3. Turn off the DAU. Click the power button for 1 second until the LED is off. 4. Dispose of the patch. 5. Inspect and clean the DAU with 70% alcohol wipes. 6. Charge the DAU. Make sure to charge the DAU before your next session. The electrodes are recyclable; please contact hello@emotiv.com to complete the process. [PreviousChannel mapping](https://emotiv.gitbook.io/x-trodes-user-manual/setting-up/xtr-exg2-xtelc0002005rm/channel-mapping) [NextSpecifications & Information](https://emotiv.gitbook.io/x-trodes-user-manual/specifications-and-information) Last updated 1 year ago --- # Inserting silicon skirts onto Sensors | EPOC Flex User Manual In the EPOC Flex Saline kit, there is a ziplock bag containing 34 silicon skirts. The purpose of the skirts is to improve the comfort of the sensors on the head, and to help reduce evaporation of the saline, or leaking of the saline between sensors when topped up from the rear port. The skirts are made from medical grade silicon to ensure the do not irritate the skin. Inserting the silicon skirts onto the Sensors is an optional step. The skirts are designed to be fitted onto the ridge of the sensor (located on the underside of the cap) once the sensors have already been fitted into the cap. See image below for reference. ![](https://emotiv.gitbook.io/epoc-flex-user-manual/~gitbook/image?url=https%3A%2F%2F1584734385-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-LIeRq0woQQZog4Wx9KA%252Fuploads%252FCU12w8piLUBCGgfTsaCF%252Fflex-saline-sensor.png%3Falt%3Dmedia%26token%3Daa5684aa-fcc9-4c30-a0fe-dc78af599646&width=768&dpr=4&quality=100&sign=e3b2180d&sv=2) The skirt needs to be aligned to the sensor and then stretched over the sensor body until snug into the ridge, with the inner edge of the skirt fitting over this ridge to lock it in place. See image below for reference. ![](https://emotiv.gitbook.io/epoc-flex-user-manual/~gitbook/image?url=https%3A%2F%2F1584734385-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-LIeRq0woQQZog4Wx9KA%252Fuploads%252FohRdcBr5w5GHJshPszcQ%252Fflex-saline-sensor_with-skirt.png%3Falt%3Dmedia%26token%3D06b48925-25e9-4213-9197-30709ba2c3c0&width=768&dpr=4&quality=100&sign=e62a58b4&sv=2) [PreviousInserting the Sensors into the Cap](https://emotiv.gitbook.io/epoc-flex-user-manual/setup/inserting-the-sensors-into-the-cap) [NextPlacing the Control Box](https://emotiv.gitbook.io/epoc-flex-user-manual/setup/placing-the-control-box) Last updated 3 years ago --- # Creating a Virtual Brainwear device | Emotiv Launcher Similar to your physical EMOTIV Brainwear, Virtual Brainwear has several states: these include created, powered on/off, connected/disconnected and configured.All of these states can be controlled via the dropdown list accessible by clicking the More icon on the virtual device panel in EMOTIV App. **Creating a new virtual device** To create a Virtual Brainwear device: 1. Click on Devices in Emotiv Launcher, 2. Click on Add a Virtual Brainwear device —this will bring up a virtual device configuration dialogue. 3. To create a new virtual device, select the device you would like to emulate (e.g. Insight) and click on the Create Brainwear® button in the virtual device configuration dialogue. 4. When created, your virtual device will appear in the Virtual Devices list under the Devices tab. [PreviousWhat is Virtual Brainwear?](https://emotiv.gitbook.io/emotiv-launcher/devices-setting-up-virtual-brainwear-r/what-is-virtual-brainwear) [NextTurning a Virtual Brainwear device on/off](https://emotiv.gitbook.io/emotiv-launcher/devices-setting-up-virtual-brainwear-r/turning-a-virtual-brainwear-device-on-off) Last updated 3 years ago --- # Placing the Control Box | EPOC Flex User Manual ![](https://emotiv.gitbook.io/epoc-flex-user-manual/~gitbook/image?url=https%3A%2F%2F1584734385-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LIeRq0woQQZog4Wx9KA%252F-LvOR37KnYtQfHw0KIX2%252F-LvORj2tTaBS9vJToUGC%252FDSC_0719.JPG%3Falt%3Dmedia%26token%3Dbdf5a96b-f312-4d80-8cd3-695d0472948e&width=768&dpr=4&quality=100&sign=45e6c8&sv=2) EPOC Flex Controller Fitted into cap Place the control box in either the rear head position or the top position. The top position is recommended for those who research on people where headrests are required in a chair (in wheelchairs, for example), or in studies where people are lying down (sleep studies). ![](https://emotiv.gitbook.io/epoc-flex-user-manual/~gitbook/image?url=https%3A%2F%2F1584734385-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LIeRq0woQQZog4Wx9KA%252F-LrCG2_Dcu-jDGY6cQ8F%252F-LrCM2kShDcSoIxamj5Z%252Fplacing%2520the%2520control%2520box.png%3Falt%3Dmedia%26token%3Dc31f84f4-b922-49ff-a3e2-42d6839bcada&width=768&dpr=4&quality=100&sign=6dffd00f&sv=2) Positioning With the EMOTIV logo facing outwards, stretch the fabric into the groove around the circular part of the control box securing the box in place. [PreviousInserting silicon skirts onto Sensors](https://emotiv.gitbook.io/epoc-flex-user-manual/setup/inserting-silicon-skirts-onto-sensors) [NextPositioning the Control Box](https://emotiv.gitbook.io/epoc-flex-user-manual/setup/positioning-the-control-box) Last updated 5 years ago --- # Channel mapping | X-trodes User Manual ![Channel mapping on X-trodes montage xtrEXG2](https://emotiv.gitbook.io/x-trodes-user-manual/~gitbook/image?url=https%3A%2F%2F4003583744-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FXj3qh8XNOWaWPHFBHGkm%252Fuploads%252FTA0DwXUaLeywpnS3YXy3%252FChannelmapping.jpg%3Falt%3Dmedia%26token%3D25c79a9e-649e-4c44-aa82-c015f06e4209&width=768&dpr=4&quality=100&sign=f4bfd53b&sv=2) [Previousxtr EXG2 (XTELC0002005RM)](https://emotiv.gitbook.io/x-trodes-user-manual/setting-up/xtr-exg2-xtelc0002005rm) [NextSystem Removal](https://emotiv.gitbook.io/x-trodes-user-manual/system-removal) Last updated 1 year ago --- # Naming elements | EmotivPRO Builder When naming elements, make sure you give them a meaningful name. The name you give them will appear on the marker labels in your data output and identifies what a particpant is seeing at a particular time point. To edit an element’s name, click on the pencil icon on the element. [PreviousWhat are elements?](https://emotiv.gitbook.io/emotivpro-builder/building-an-experiment-in-builder/what-are-elements) [NextWhat are phases?](https://emotiv.gitbook.io/emotivpro-builder/building-an-experiment-in-builder/what-are-phases) Last updated 3 years ago --- # USB receiver dongle behaviour | EPOC X User Manual Clipboard** 4. **Paste** the json code and select to add to current flow or new flow 5. Select **Import** You can share your own nodes and flows in the [Node-RED Library](https://flows.nodered.org/?num_pages=1) . We look forward to seeing what the community builds with EMOTIV! [PreviousUsing Training Profiles](https://emotiv.gitbook.io/emotivbci-node-red-toolbox/using-training-profiles) Last updated 5 years ago --- # Obtaining Good Contact Quality | INSIGHT Manual 1. With the headset off, bend the reference band (black arm hanging off the back) in towards the centre of the headset (about 45 degrees) so that when it sits on your mastoid bone it is making full contact with the skin. 2. Get familiar with the location of each of the sensors so you know where to focus on when the headset is on the head. 3. Put on the Glycine/Saline Mix straight from the bottle onto each sensor. Only 1-2 drops are needed. Spread it out with your finger tip. 4. Long Hair? Put it up in a half-pony tail (to sit loosely in a pony on top of the head) so that the part is where P7 Sensor Sits (about crown of head) and the “direction” of the hair on the side of the hair is going up so the hair is against the grain. Your goal is to expose as much skin as possible so having it “slicked back” is not going to help, particularly if your hair is thick. 5. Put headset on, ensuring reference sensors are contacting SKIN on the mastoid bone (the bony part behind the ear) 6. On the headset map in the app, ensure that the reference sensor is green (the one with the black circle). If it is not, add more saline solution, ensure there is no hair in the way and that both the sensors are touching skin. It does not have to be super tight. 7. Work your way around your head to each sensor, focusing on getting scalp contact for each one. 8. Make sure the Pz Sensor (on top of the head) sits on the crown of the head. Part the hair there to ensure contact with the scalp. 9. Get rid of any hair sitting under the sensors by using a finger / bobby pin / pen lid / something that can fish the hair out from underneath the sensor. You should feel the sensor against the scalp. The T7 Sensor (left side, above the ear underneath the main body of the Insight...stick your finger /bobby pin/ pen lid underneath here and pull the hair out of the way. Slightly rub/scratch this part of the headset against your skin until you can really feel the contact with the scalp. 10. SIT STILL and look at the headset map. WAIT at least 5 seconds for each sensor to “settle” before re-adjusting. If needed, readjust each sensor one at a time, sitting still and waiting for it to settle between each adjustment. Aim to get a green sensor for each one before moving onto the next. 11. If needed, put more glycine/saline mix on the head underneath where the sensor is sitting while the headset is still on the head [PreviousAdjusting the headband](https://emotiv.gitbook.io/insight-manual/quick-start/adjusting-the-headband) [NextCharging](https://emotiv.gitbook.io/insight-manual/tips-and-tricks/charging) Last updated 3 years ago --- # Connecting MN8 to a Device | MN8 User Manual MN8 measures your brain waves via integrated EEG sensors. The conductive, gold-plated sensors are the same as those used in research-grade EEG devices. The sensors capture small fluctuations in your brain activity while you wear them. MN8’s ear hooks have two reference sensors. The reference sensors improve the EEG signal quality, so they must contact the skin behind your ear to effectively measure the EEG signal. ### [](https://emotiv.gitbook.io/mn8-user-manual/getting-started/connecting-mn8-to-a-device#connecting-the-data-and-audio-streams) Connecting the Data and Audio Streams MN8 has two data streams: one for EEG and one for audio. Voice prompts and LED behavior is only related to the audio connection and not the data connection. The data streams need to be connected separately to ensure both work correctly. 1. Connect the EEG data stream — MN8 XXXX (Data) 2. Connect the audio stream — MN8 XXXX (Headphones) **Please note:** XXXX represents the serial number of your headset. [PreviousMN8 Behavior](https://emotiv.gitbook.io/mn8-user-manual/getting-started/mn8-behavior) [NextFitting Your MN8](https://emotiv.gitbook.io/mn8-user-manual/getting-started/fitting-your-mn8) Last updated 1 year ago --- # Band Power Reports | EmotivPRO Analyzer You have the option of running Band Power report on a single record or multiple records: 1. **Individual Band-Power Reports** - select single or multiple records to analyze. This pipeline outputs plots of averaged Band Power for selected markers and frequency bands, for each individual record submitted. 2. **Group Band-Power Report** \- select multiple records to analyze. This pipeline will output plots Band Power for selected markers and frequency bands, averaged over all submitted records. You can follow our tutorial on neural oscillations and obtaining Band Power Reports using EmotivPRO Analyzer [here](https://www.emotiv.com/tutorials/basics-of-neural-oscillations/) . **NOTE:** Band power reports can only be generated for event markers that have at least a minimum duration of 2 seconds. This report also does not support EmotivPRO keystroke markers - as these are instance markers with a zero duration. [PreviousBasic EEG processing and transformation](https://emotiv.gitbook.io/emotivpro-analyzer/job-management/name-and-pipeline/basic-eeg-processing-and-transformation) [NextIndividual Band-Power Reports](https://emotiv.gitbook.io/emotivpro-analyzer/job-management/name-and-pipeline/band-power-reports/individual-band-power-reports) Last updated 12 months ago --- # Individual Band-Power Reports | EmotivPRO Analyzer This pipeline allows you to specify markers of interest and generate averaged Band Power plots for each record submitted. **NOTE:** Band power reports can only be generated for event markers that have at least a minimum duration of 2 seconds. This report also does not support EmotivPRO keystroke markers - as these are instance markers with a zero duration. ### [](https://emotiv.gitbook.io/emotivpro-analyzer/job-management/name-and-pipeline/band-power-reports/individual-band-power-reports#slew-limit) **Slew limit** You can set a slew rate limit to control the EEG signals between successive samples, up to a maximum value. Large voltage step changes from one sample to the next sometimes occur due to electrostatic discharge from the subject (participant), headset movements, or other artifacts. The effect of voltage step changes on filtered signals, and fast Fourier transform (FFT) epochs can artificially persist for a long time after the event. Setting a maximum slew rate limits the extent of step changes and reduces its impact without significantly affecting the EEG signal components. The default slew rate in Analyzer is 30 microvolts. However, you can enter any positive value here. ### [](https://emotiv.gitbook.io/emotivpro-analyzer/job-management/name-and-pipeline/band-power-reports/individual-band-power-reports#referencing) **Referencing** The data processed by Analyzer can be referenced to an aggregate of all the data selected. The available aggregate functions are: * Mean * Median * Interquartile mean * None (deactivates re-referencing) ### [](https://emotiv.gitbook.io/emotivpro-analyzer/job-management/name-and-pipeline/band-power-reports/individual-band-power-reports#filter-coefficients) **Filter Coefficients** Default values are set for you. However, you can change these values if you want to. If you do not know what you are doing, please use the default values. The default values are shown below. ### [](https://emotiv.gitbook.io/emotivpro-analyzer/job-management/name-and-pipeline/band-power-reports/individual-band-power-reports#epoch) **Epoch** In order to calculate the power in each frequency band (see below), the data is divided into ‘Epochs’. A Fourier transform is applied to each Epoch to calculate the power at each frequency. You can change the length of the Epoch window (in samples where the number of samples must be a power of 2) and the sliding window step size (the number of samples the data window is moved to form each successive Epoch). ### [](https://emotiv.gitbook.io/emotivpro-analyzer/job-management/name-and-pipeline/band-power-reports/individual-band-power-reports#band-frequencies) **Band frequencies** You can add as many frequency bands to your Analyzer as you want. You can also remove frequency bands that you do not need. The limits of the frequency bands must be between 0 (lowest) and 64 (highest) Hz. ### [](https://emotiv.gitbook.io/emotivpro-analyzer/job-management/name-and-pipeline/band-power-reports/individual-band-power-reports#report-specification) Report Specification 1. **Element of Phase Name** First you can choose whether you want to select Phase Names or Element Names. If you built your experiment using EmotivPRO Builder, then you will have the option of generating reports for either the entire Phase or individual Elements. If you built your experiment using any other software (e.g. PsychoPy) select Elements here. ![](https://emotiv.gitbook.io/emotivpro-analyzer/~gitbook/image?url=https%3A%2F%2F3358604837-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-MkFc8_lN6xtzFYs4t5V%252Fuploads%252FXbxcFg5LwDw6QnNzvKhp%252Felement.png%3Falt%3Dmedia%26token%3Df2c2a914-b63d-4b80-a6f8-5db6110d2df7&width=768&dpr=4&quality=100&sign=2ddfdac4&sv=2) **2\. Parameters / Markers** Specify the marker labels here. The element name must match the marker label (in "type" column) found in your interval marker file. You can obtain the interval marker file when you export a record using EmotivPRO. ![](https://emotiv.gitbook.io/emotivpro-analyzer/~gitbook/image?url=https%3A%2F%2F3358604837-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-MkFc8_lN6xtzFYs4t5V%252Fuploads%252Fq6X8v0s5WIlyhcJ0HDxt%252FScreenshot%25202022-11-18%2520132559.png%3Falt%3Dmedia%26token%3D8907fd05-3a75-48a1-ad09-ef6933115991&width=768&dpr=4&quality=100&sign=412fbdd7&sv=2) **3\. Channels** Specify any specific channels of interest. You can clear all the values here to generate a report for all the channels. Remember to specify channels that are available in your headset. ![](https://emotiv.gitbook.io/emotivpro-analyzer/~gitbook/image?url=https%3A%2F%2F3358604837-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-MkFc8_lN6xtzFYs4t5V%252Fuploads%252FEUKsBfMRnalI13OwGzyk%252FScreenshot%25202022-11-18%2520132838.png%3Falt%3Dmedia%26token%3Db5989268-5e3a-4af6-9e58-cbcb6af7745a&width=768&dpr=4&quality=100&sign=74500a61&sv=2) Finally click start to run the job. ### [](https://emotiv.gitbook.io/emotivpro-analyzer/job-management/name-and-pipeline/band-power-reports/individual-band-power-reports#results) **Results** While your data is processing, the [job management page](https://emotiv.gitbook.io/emotivpro-analyzer/job-management/job-management) will open. You can download your results file when the job is complete. To understand details of the FFT implemented in EmotivPRO Analyzer please view the [Band Power calculation section](https://emotiv.gitbook.io/emotivpro-analyzer/understanding-analyzer-outputs/band-power-calculation) and for details of the fields in your .csv outputs please see the [csv outputs section](https://emotiv.gitbook.io/emotivpro-analyzer/understanding-analyzer-outputs/csv-outputs) . This pipeline will generate a plot with bandpower in decibels(dB) on the y-axis as below: ![](https://emotiv.gitbook.io/emotivpro-analyzer/~gitbook/image?url=https%3A%2F%2F3358604837-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-MkFc8_lN6xtzFYs4t5V%252Fuploads%252FyYJ7hZuje8yustUI1Hru%252Fimage.png%3Falt%3Dmedia%26token%3Dc38faaf9-1e28-461e-9b42-8e257b993e37&width=768&dpr=4&quality=100&sign=90e387e5&sv=2) The above plot shows average bandpower in dB for each channel (O1 and O2), for the frequency band specified (8 to 12 Hz band). Sub plots orange and blue are the specified markers _eyes closed_ and _eyes opened_ respectively. [PreviousBand Power Reports](https://emotiv.gitbook.io/emotivpro-analyzer/job-management/name-and-pipeline/band-power-reports) [NextGroup Band-Power Report](https://emotiv.gitbook.io/emotivpro-analyzer/job-management/name-and-pipeline/band-power-reports/group-band-power-report) Last updated 12 months ago --- # Universal USB Receiver (Dongle) | EPOC+ ![](https://emotiv.gitbook.io/epoc-user-manual/~gitbook/image?url=https%3A%2F%2Flh3.googleusercontent.com%2FwD_N50u2v1JShuNjnr9rDGM6YWEn855Y3MPCym89-Z2GnCiMKzoW7f20VZGWHj64eMNK0Djryv_BBFzMOVVDXfFT70EA53gMm_IcUP1-LINdTHotbuGQ2AUsv-rOavMr22WFZnPx&width=768&dpr=4&quality=100&sign=694716be&sv=2) The universal USB receiver (dongle) uses a proprietary 2.4 GHz protocol to stream data from the headset. We recommend using this to connect to your headset on a PC or Laptop; once connected it remembers the serial number of the headset pairs to allow easy reconnection. The dongle pairing also allows multiple headsets to co-exist and provides a reliable high speed connection over Bluetooth Low Energy (BLE). The headset supports BLE which allows connection to mobile devices (Android/iOS) and some computers. EmotivPRO does support the native BLE radio on MacOS devices (2015 or later). On PC's however the implementation of Bluetooth varies by manufacturer and it is not guaranteed to work and so we recommend using the dongle. There are two green LED's on the top surface of the dongle and plastic lies at the bottom. The following table explains about LED's. Action LED Left (under power icon) LED Right Powered Up Looking for headsets Off Slow flashing Receiving data On Fast flashing Paired by not connected On Slow flashing [PreviousCharging](https://emotiv.gitbook.io/epoc-user-manual/using-headset/charging) [NextElectrode Arms - Alternative References](https://emotiv.gitbook.io/epoc-user-manual/troubleshooting/electrode_arms) Last updated 5 years ago --- # Updating firmware | Updating firmware The following guide will assist you to update the firmware on your Emotiv headsets. [NextInsight](https://emotiv.gitbook.io/updating-firmware-1/insight) Last updated 3 years ago --- # EMOTIV App | EMOTIV App EMOTIV App is a desktop service application that acts as the centralized installer and login interface for all EMOTIV applications and headsets.This application manages all basic interactions with your EMOTIV headset including logging into your account, connecting your headset, checking contact quality and managing your licenses. EMOTIV App can be used with EMOTIV software as well as all approved third party applications. This document is intended to help you get started using the EMOTIV App with it's embedded Cortex service and to understand how to use the various features that it offers. If you have any queries beyond the scope of this document, please contact us through our [online support](https://www.emotiv.com/contact-support/) . [NextGetting started](https://emotiv.gitbook.io/cortex-manual/getting_started) Last updated 4 years ago --- # Objective-C API for iOS | Cortex Library for Mobile On iOS, the Cortex library provides an API written in Objective-C. It contains only two classes: * [CortexLib](https://emotiv.gitbook.io/cortex-library-for-mobile/objective-c-api/cortexlib-class) to initialize the Cortex library * [CortexClient](https://emotiv.gitbook.io/cortex-library-for-mobile/objective-c-api/cortexclient-class) to send and receive JSON messages to the Cortex library [](https://emotiv.gitbook.io/cortex-library-for-mobile/objective-c-api#workflow) Workflow ---------------------------------------------------------------------------------------------- On iOS, the basic workflow of the API is as follow: 1. Call the static method **start** of the class [CortexLib](https://emotiv.gitbook.io/cortex-library-for-mobile/objective-c-api/cortexlib-class) 2. Alloc and init an object from the class [CortexClient](https://emotiv.gitbook.io/cortex-library-for-mobile/objective-c-api/cortexclient-class) 3. Call the method **setDelegate** of the [CortexClient](https://emotiv.gitbook.io/cortex-library-for-mobile/objective-c-api/cortexclient-class) object 4. Call the method **sendRequest** of the [CortexClient](https://emotiv.gitbook.io/cortex-library-for-mobile/objective-c-api/cortexclient-class) object to send JSON messages to the Cortex library. You can call this methods as many times as necessary. Cortex will respond asynchronously, using the delegate you provided at step 4. Please check the [Cortex API documentation](https://emotiv.gitbook.io/cortex-api/) to know the format of the JSON messages. 5. Call the static method **stop** of the class [CortexLib](https://emotiv.gitbook.io/cortex-library-for-mobile/objective-c-api/cortexlib-class) [PreviousGetting Started](https://emotiv.gitbook.io/cortex-library-for-mobile) [NextCortexLib class](https://emotiv.gitbook.io/cortex-library-for-mobile/objective-c-api/cortexlib-class) Last updated 4 years ago --- # CortexLib class | Cortex Library for Mobile Copy #import Use CortexLib to initialize the Cortex library. [](https://emotiv.gitbook.io/cortex-library-for-mobile/objective-c-api/cortexlib-class#start) start -------------------------------------------------------------------------------------------------------- Copy + (bool)start:(CortexStartedHandler)handler; Call this static method to initialize the Cortex library. You must call it exactly once. You must call it before creating an instance of the [CortexClient class](https://emotiv.gitbook.io/cortex-library-for-mobile/objective-c-api/cortexclient-class) . The library starts asynchronously. When it is started, the library calls the handler you provided. Copy typedef void (^CortexStartedHandler)(void); [](https://emotiv.gitbook.io/cortex-library-for-mobile/objective-c-api/cortexlib-class#stop) stop ------------------------------------------------------------------------------------------------------ Copy + (void)stop; Call this static method to stop the Cortex library. You must call it exactly once. [](https://emotiv.gitbook.io/cortex-library-for-mobile/objective-c-api/cortexlib-class#setcortexloghandler) setCortexLogHandler ------------------------------------------------------------------------------------------------------------------------------------ Copy + (void)setCortexLogHandler:(CortexLogLevel)logLevel handler:(CortexLogHandler)handler; Call this method if you want to receive the log messages from the Cortex library. Calling this method is optional. However, if you want to call it, then you must do it before calling the method `start`. The parameter **logLevel** controls how much log messages you will receive. * KInfo: get all the messages * KWarning: only get the warnings and the error messages * KError: only get the error messages Copy typedef enum CortexLogLevel : NSUInteger { kInfo = 1, kWarning = 2, kError = 3 } CortexLogLevel; The parameter **handler** is a callback that will receive the log messages. Copy typedef void (^CortexLogHandler)(NSString*); [PreviousObjective-C API for iOS](https://emotiv.gitbook.io/cortex-library-for-mobile/objective-c-api) [NextCortexClient class](https://emotiv.gitbook.io/cortex-library-for-mobile/objective-c-api/cortexclient-class) Last updated 4 years ago --- # Java API for Android | Cortex Library for Mobile On Android, the Cortex library provides an API written in Java. It contains three classes: * [EmotivLibraryLoader](https://emotiv.gitbook.io/cortex-library-for-mobile/java-api/emotivlibraryloader-class) to load the Cortex library * [CortexLib](https://emotiv.gitbook.io/cortex-library-for-mobile/java-api/cortexlib-class) to initialize the Cortex library * [CortexClient](https://emotiv.gitbook.io/cortex-library-for-mobile/java-api/cortexclient-class) to send and receive JSON messages to the Cortex library [](https://emotiv.gitbook.io/cortex-library-for-mobile/java-api#workflow) Workflow --------------------------------------------------------------------------------------- On Android, the basic workflow of the API is as follow: 1. Create an object from the class [EmotivLibraryLoader](https://emotiv.gitbook.io/cortex-library-for-mobile/java-api/emotivlibraryloader-class) and call its **load** method 2. Call the static method **start** of the class [CortexLib](https://emotiv.gitbook.io/cortex-library-for-mobile/java-api/cortexlib-class) 3. Create an object from the class [CortexClient](https://emotiv.gitbook.io/cortex-library-for-mobile/java-api/cortexclient-class) 4. Call the method **registerResponseHandler** of the [CortexClient](https://emotiv.gitbook.io/cortex-library-for-mobile/java-api/cortexclient-class) object 5. Call the method **sendRequest** of the [CortexClient](https://emotiv.gitbook.io/cortex-library-for-mobile/java-api/cortexclient-class) object to send JSON messages to the Cortex library. You can call this methods as many times as necessary. Cortex will respond asynchronously, using the handler you provided at step 4. Please check the [Cortex API documentation](https://emotiv.gitbook.io/cortex-api/) to know the format of the JSON messages. 6. Call the static method **stop** of the class [CortexLib](https://emotiv.gitbook.io/cortex-library-for-mobile/java-api/cortexlib-class) [PreviousCortexClientDelegate protocol](https://emotiv.gitbook.io/cortex-library-for-mobile/objective-c-api/cortexclientdelegate-protocol) [NextEmotivLibraryLoader class](https://emotiv.gitbook.io/cortex-library-for-mobile/java-api/emotivlibraryloader-class) Last updated 4 years ago --- # CortexClient class | Cortex Library for Mobile Copy #import Use CortexClient to send and receive JSON messages to the Cortex library. You must [initialize](https://emotiv.gitbook.io/cortex-library-for-mobile/objective-c-api/cortexlib-class) the Cortex library before creating an instance of CortexClient. [](https://emotiv.gitbook.io/cortex-library-for-mobile/objective-c-api/cortexclient-class#init) init --------------------------------------------------------------------------------------------------------- Copy - (id)init; The standard init method. You must call it exactly once after you created a CortexClient object. [](https://emotiv.gitbook.io/cortex-library-for-mobile/objective-c-api/cortexclient-class#setdelegate) setDelegate ----------------------------------------------------------------------------------------------------------------------- Copy - (void)setDelegate:(id)aDelegate; Set a delegate to receive the result of the function **authenticate** and all the JSON messages from the Cortex library. See [CortexClientDelegate protocol](https://emotiv.gitbook.io/cortex-library-for-mobile/objective-c-api/cortexclientdelegate-protocol) for details. [](https://emotiv.gitbook.io/cortex-library-for-mobile/objective-c-api/cortexclient-class#displaycontext) displayContext ----------------------------------------------------------------------------------------------------------------------------- Copy @property (nonatomic, weak) id displayContext API_AVAILABLE(ios(13.0)); The function **authenticate** uses the **displayContext** to display the login web page for the OAuth 2 authentication. The context implements the protocol [ASWebAuthenticationPresentationContextProviding](https://developer.apple.com/documentation/authenticationservices/aswebauthenticationpresentationcontextproviding?language=objc) A possible solution is to implement this protocol in your view controller, like this: Copy - (ASPresentationAnchor)presentationAnchorForWebAuthenticationSession:(ASWebAuthenticationSession *)session { return self.view.window; } [](https://emotiv.gitbook.io/cortex-library-for-mobile/objective-c-api/cortexclient-class#authenticate) authenticate ------------------------------------------------------------------------------------------------------------------------- Copy - (void)authenticate:(NSString*)clientId; This function is to help you log in into Cortex, using [OAuth 2](https://oauth.net/2/) for authentication. When you call this function, your application displays a web form from the EMOTIV web site. This form requires the user to enter their EmotivID and password. The argument is the client id of your Cortex application. You can find it on the [EMOTIV web site](https://www.emotiv.com/my-account/cortex-apps/) . You must set the property **displayContext** before you call this function. Your application receives the result of the authentication from the delegate [CortexClientDelegate](https://emotiv.gitbook.io/cortex-library-for-mobile/objective-c-api/cortexclientdelegate-protocol#authenticationfinished) that you set with **setDelegate**. The result includes an authentication code that you can then use to call the JSON API method [loginWithAuthenticationCode](https://emotiv.gitbook.io/cortex-library-for-mobile/jsonapi/loginwithauthenticationcode) . [](https://emotiv.gitbook.io/cortex-library-for-mobile/objective-c-api/cortexclient-class#sendrequest) sendRequest ----------------------------------------------------------------------------------------------------------------------- Copy - (void)sendRequest:(NSString*)requestMessage; Call this method to send a JSON message to the Cortex library. Cortex will respond asynchronously, using the delegate you provided in the method **setDelegate.** [](https://emotiv.gitbook.io/cortex-library-for-mobile/objective-c-api/cortexclient-class#close) close ----------------------------------------------------------------------------------------------------------- Copy - (void)close; This method closes the connection to the Cortex library and frees all the resources allocated for this object. Calling this method is optional. After you called it, you must not call any other method on this object. [PreviousCortexLib class](https://emotiv.gitbook.io/cortex-library-for-mobile/objective-c-api/cortexlib-class) [NextCortexClientDelegate protocol](https://emotiv.gitbook.io/cortex-library-for-mobile/objective-c-api/cortexclientdelegate-protocol) Last updated 4 years ago --- # Create an account | EMOTIV App If you do not have an EmotivID, click on “Create Account” and follow the instructions on our website. ![](https://emotiv.gitbook.io/cortex-manual/~gitbook/image?url=https%3A%2F%2F3658799575-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LIeRq0fZhMtAZpE7gS_%252F-LejE7wkHv2PL7NFKobP%252F-LejEhTh5aqws1N0O5Y7%252Fimage.png%3Falt%3Dmedia%26token%3D5ee879e4-dff9-4f0c-a3a6-0eba633141a9&width=768&dpr=4&quality=100&sign=1c1e55cc&sv=2) [PreviousLogging in](https://emotiv.gitbook.io/cortex-manual/getting_started/logging_in) [NextForgot password](https://emotiv.gitbook.io/cortex-manual/getting_started/forgot_password) Last updated 6 years ago --- # About EMOTIV App | EMOTIV App 1. Click on the ![](https://emotiv.gitbook.io/cortex-manual/~gitbook/image?url=https%3A%2F%2F3658799575-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LIeRq0fZhMtAZpE7gS_%252F-LIeRuULRxdpY8tb_g8D%252F-LIeS-VCwBo79kcfdjnL%252Fsettings-icon-dark-gray.png%3Fgeneration%3D1532941840856016%26alt%3Dmedia&width=300&dpr=4&quality=100&sign=1d74e322&sv=2) icon in the top right corner of the applet to show the options menu 2. Click on “About EMOTIV App” 3. This displays the current version of EMOTIV App 4. It also provides link to either contact Customer Support or visit EMOTIV's website [PreviousSettings](https://emotiv.gitbook.io/cortex-manual/settings) [NextUser manual](https://emotiv.gitbook.io/cortex-manual/settings/user-manual) Last updated 5 years ago --- # EPOC+/Flex | Updating firmware 1. Connect the USB cable into the port located on your headset. Then, connect the other end of the USB cable to your computer. 2. Open Emotiv Launcher and go to the "Devices" tab. When the alert notification appears, click on "Proceed". ![](https://emotiv.gitbook.io/updating-firmware-1/~gitbook/image?url=https%3A%2F%2F2886284262-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FN4Xl9X9ui2BJjii1KYgk%252Fuploads%252Fw953mImKoGylobTtrZUN%252Ffirmware-update-EPOC.png%3Falt%3Dmedia%26token%3D27034531-3cb6-431d-be33-c33d2bde2f91&width=768&dpr=4&quality=100&sign=e975cc61&sv=2) 3\. Click on "Update firmware". ![](https://emotiv.gitbook.io/updating-firmware-1/~gitbook/image?url=https%3A%2F%2F2886284262-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FN4Xl9X9ui2BJjii1KYgk%252Fuploads%252FoG7ejZ1XQv3vGSN9nkoK%252Ffirmware-update-epoc-connected.png%3Falt%3Dmedia%26token%3Dd44b26f9-e353-44f4-abeb-b4601f8473a8&width=768&dpr=4&quality=100&sign=637a7b16&sv=2) 4\. Click on "Finish" once your firmware update has completed. ![](https://emotiv.gitbook.io/updating-firmware-1/~gitbook/image?url=https%3A%2F%2F2886284262-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FN4Xl9X9ui2BJjii1KYgk%252Fuploads%252F1amBaQEdaVgk7H1jQ30X%252Ffirmware-update-epoc-complete.png%3Falt%3Dmedia%26token%3Df14f89bc-a668-424c-940b-9ba1b9f187ac&width=768&dpr=4&quality=100&sign=9a34cb71&sv=2) [PreviousCable](https://emotiv.gitbook.io/updating-firmware-1/insight/cable) [NextEPOC X](https://emotiv.gitbook.io/updating-firmware-1/epoc-x) Last updated 3 years ago --- # logout | Cortex Library for Mobile This method is to log out from Cortex. You can use the method [getUserLogin](https://emotiv.gitbook.io/cortex-api/authentication/getuserlogin) to know if a user is already logged in or not. [](https://emotiv.gitbook.io/cortex-library-for-mobile/jsonapi/logout#parameters) Parameters ------------------------------------------------------------------------------------------------- Name Type Required Description username `string` yes The EMOTIV ID of the current user. [](https://emotiv.gitbook.io/cortex-library-for-mobile/jsonapi/logout#result) Result ----------------------------------------------------------------------------------------- The result is an object with these fields: Name Type Description username `string` The EMOTIV ID. message `string` [](https://emotiv.gitbook.io/cortex-library-for-mobile/jsonapi/logout#example) Example ------------------------------------------------------------------------------------------- Request [](https://emotiv.gitbook.io/cortex-library-for-mobile/jsonapi/logout#tab-request) Response [](https://emotiv.gitbook.io/cortex-library-for-mobile/jsonapi/logout#tab-response) Copy { "id": 1, "jsonrpc": "2.0", "method": "logout", "params": { "username": "jon.snow" } } Copy { "id": 1, "jsonrpc": "2.0", "result": { "message": "User jon.snow logout successfully", "username": "jon.snow" } } [PreviousloginWithAuthenticationCode](https://emotiv.gitbook.io/cortex-library-for-mobile/jsonapi/loginwithauthenticationcode) [NextacceptLicense](https://emotiv.gitbook.io/cortex-library-for-mobile/jsonapi/accept-license) Last updated 1 month ago --- # queryVirtualHeadsets | Cortex Library for Mobile This method lists all the virtual headsets that were previously created by [createVirtualHeadset](https://emotiv.gitbook.io/cortex-library-for-mobile/jsonapi/createvirtualheadset) . [](https://emotiv.gitbook.io/cortex-library-for-mobile/jsonapi/queryvirtualheadsets#parameters) Parameters --------------------------------------------------------------------------------------------------------------- Name Type Required Description cortexToken `string` yes A token returned by [authorize](https://emotiv.gitbook.io/cortex-api/authentication/authorize) [](https://emotiv.gitbook.io/cortex-library-for-mobile/jsonapi/queryvirtualheadsets#result) Result ------------------------------------------------------------------------------------------------------- The result is an array of [Virtual headset objects](https://emotiv.gitbook.io/cortex-library-for-mobile/jsonapi/virtual-headset-object) , or an empty array if there is no virtual headset. [](https://emotiv.gitbook.io/cortex-library-for-mobile/jsonapi/queryvirtualheadsets#example) Example --------------------------------------------------------------------------------------------------------- Request [](https://emotiv.gitbook.io/cortex-library-for-mobile/jsonapi/queryvirtualheadsets#tab-request) Response [](https://emotiv.gitbook.io/cortex-library-for-mobile/jsonapi/queryvirtualheadsets#tab-response) Copy { "id": 1, "jsonrpc": "2.0", "method": "queryVirtualHeadsets", "params": { "cortexToken": "xxx" } } Copy { "id": 1, "jsonrpc": "2.0", "result": [{\ "battery": 3,\ "connectionType": "bluetooth",\ "cq": {\ "T7": 4,\ "T8": 4\ },\ "cqStatus": "",\ "fe": {\ "lowerFaceAction": "neutral",\ "lowerFacePower": 0,\ "upperFaceAction": "neutral",\ "upperFacePower": 0\ },\ "mc": {\ "action": "neutral",\ "power": 0\ },\ "name": "Virtual MN8",\ "ownerId": "c7f6d941-d972-496b-8504-fcc903c46f02",\ "pm": {\ "auditoryAttention": {\ "isActive": true,\ "score": 0.5\ },\ "cognitiveStress": {\ "isActive": true,\ "score": 0.5\ }\ },\ "powerOn": false,\ "preRecordedSamples": "",\ "serial": "B7BF6142",\ "type": "MN8",\ "uuid": "b7bf6142-c7ea-4e1a-a88e-9ca0aa6b3f1c"\ }] } [PreviousacceptLicense](https://emotiv.gitbook.io/cortex-library-for-mobile/jsonapi/accept-license) [NextcreateVirtualHeadset](https://emotiv.gitbook.io/cortex-library-for-mobile/jsonapi/createvirtualheadset) Last updated 4 years ago --- # createVirtualHeadset | Cortex Library for Mobile This method lets you create a new virtual headset. [](https://emotiv.gitbook.io/cortex-library-for-mobile/jsonapi/createvirtualheadset#parameters) Parameters --------------------------------------------------------------------------------------------------------------- Name Type Required Description cortexToken `string` yes A token returned by [authorize](https://emotiv.gitbook.io/cortex-api/authentication/authorize) type `string` yes The type of the headset to create. The possible values are "MN8", "INSIGHT", "EPOCPLUS", "EPOCX", "EPOCFLEX". motionRate `number` no If the type is "EPOCPLUS" or "EPOCX", then you must set the motion rate to 0, 32 or 64 Hertz. The value 64 is only available on Android. The default value is 0. name `string` no The name of the headset. When you call [queryHeadsets](https://emotiv.gitbook.io/cortex-api/headset/queryheadsets) you will find this name in the field `customName` powerOn `boolean` no If `true` then this virtual headset is ON. So you can see this headset in the result of [queryHeadsets](https://emotiv.gitbook.io/cortex-api/headset/queryheadsets) . If `false` then this virtual headset is OFF. It will not appear in the result of queryHeadsets. But it will still be visible in the result of [queryVirtualHeadsets](https://emotiv.gitbook.io/cortex-library-for-mobile/jsonapi/queryvirtualheadsets) . The default value is `false` battery `number` no The battery level of the headset. It is an integer in the range \[0, 4\]. The default value is zero. cq `object` no This parameter sets the contact quality of each EEG sensor of the headset. It is an object. The keys are the name of the sensors, the values are integers in the range \[0, 4\]. Example for a MN8 headset: `{"T7": 4, "T8": 0}` pm `object` no See below. preRecordedSamples `string` no See below. mc `object` no See below. fe `object` no See below. ### [](https://emotiv.gitbook.io/cortex-library-for-mobile/jsonapi/createvirtualheadset#pm-and-prerecordedsamples) pm and preRecordedSamples These two parameters sets the output of the performance metric detection. The possible value for **preRecordedSamples** are "low", "mid"," high" or an empty string. Value Description "low" All the PM will output low (around 0.2) random values. "mid" All the PM will output medium (around 0.5) random values. "high" All the PM will output high (around 0.8) random values. Empty string You can use the parameter **pm** to manually set the output of each individual PM. The parameter **pm** is an object. Each key is the name of a PM, and each value is an object. The available PM depends on the type of the virtual headset and the version of Cortex. New PM can be added in the future. Example for a virtual Insight headset: Copy { "engagement": { "isActive": true, "score": 0.9 }, "excitement": { "isActive": true, "score": 0.25 }, "focus": { "isActive": true, "score": 0.4 }, "interest": { "isActive": false, "score": 0.0 }, "relaxation": { "isActive": true, "score": 0.6 }, "stress": { "isActive": true, "score": 0.5 } } ### [](https://emotiv.gitbook.io/cortex-library-for-mobile/jsonapi/createvirtualheadset#mc) mc This parameter sets the output of the mental command detection. It is an object that contains these fields: Name Type Required Description action `string` yes The name of the action. The possible values are "neutral", "push", "pull", "lift", "drop", "left", "right", "rotateLeft", "rotateRight", "rotateClockwise", "rotateCounterClockwise", "rotateForwards", "rotateReverse", "disappear". power `number` yes The power of this action. It must be a number between zero and one. If you omit this parameter when creating the virtual headset, then the default action is "neutral", with a power of zero. ### [](https://emotiv.gitbook.io/cortex-library-for-mobile/jsonapi/createvirtualheadset#fe) fe This parameter sets the output of the facial expression detection. It is an object that contains these fields: Name Type Required Description upperFaceAction `string` yes The action of the upper face. The possible values are "neutral", "frown" and "surprise". lowerFaceAction `string` yes The action of the lower face. The possible values are "neutral", "clench" and "smile". upperFacePower `number` yes The power of the upper face action. It must be a number between zero and one. lowerFacePower `number` yes The power of the lower face action. It must be a number between zero and one. If you omit this parameter when creating the virtual headset, then the default actions are "neutral", with a power of zero. [](https://emotiv.gitbook.io/cortex-library-for-mobile/jsonapi/createvirtualheadset#result) Result ------------------------------------------------------------------------------------------------------- The result is a [Virtual headset object](https://emotiv.gitbook.io/cortex-library-for-mobile/jsonapi/virtual-headset-object) . [](https://emotiv.gitbook.io/cortex-library-for-mobile/jsonapi/createvirtualheadset#example) Example --------------------------------------------------------------------------------------------------------- Request [](https://emotiv.gitbook.io/cortex-library-for-mobile/jsonapi/createvirtualheadset#tab-request) Response [](https://emotiv.gitbook.io/cortex-library-for-mobile/jsonapi/createvirtualheadset#tab-response) Copy { "id": 1, "jsonrpc": "2.0", "method": "createVirtualHeadset", "params": { "cortexToken": "xxx", "type": "INSIGHT" } } Copy { "id": 1, "jsonrpc": "2.0", "result": { "battery": 0, "connectionType": "bluetooth", "cq": {}, "cqStatus": "", "fe": { "lowerFaceAction": "neutral", "lowerFacePower": 0, "upperFaceAction": "neutral", "upperFacePower": 0 }, "mc": { "action": "neutral", "power": 0 }, "name": "", "ownerId": "c7f6d941-d972-496b-8504-fcc903c46f02", "pm": {}, "powerOn": false, "preRecordedSamples": "", "serial": "B651BE6B", "type": "INSIGHT", "uuid": "b651be6b-135a-4c42-9075-d07b238725de" } } [PreviousqueryVirtualHeadsets](https://emotiv.gitbook.io/cortex-library-for-mobile/jsonapi/queryvirtualheadsets) [NextdeleteVirtualHeadset](https://emotiv.gitbook.io/cortex-library-for-mobile/jsonapi/deletevirtualheadset) Last updated 4 years ago --- # User manual | EMOTIV App 1. Click on the ![](https://emotiv.gitbook.io/cortex-manual/~gitbook/image?url=https%3A%2F%2F3658799575-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LIeRq0fZhMtAZpE7gS_%252F-LIeRuULRxdpY8tb_g8D%252F-LIeS-VCwBo79kcfdjnL%252Fsettings-icon-dark-gray.png%3Fgeneration%3D1532941840856016%26alt%3Dmedia&width=300&dpr=4&quality=100&sign=1d74e322&sv=2) icon in the top right corner of the applet to show the options menu 2. Click on “User manual” 3. Note: This will redirect the user to the latest EMOTIV App User manual on the website [PreviousAbout EMOTIV App](https://emotiv.gitbook.io/cortex-manual/settings/about-emotiv-app) [NextSettings](https://emotiv.gitbook.io/cortex-manual/settings/settings) Last updated 6 years ago --- # EPOC+ and EPOC X configurations | EMOTIV App You can configure your EPOC+’s and EPOC X's EEG sample rate, EEG resolution, motion data sample rate, and motion data resolution through the EMOTIV App application. There are no configuration setting for Emotiv EPOC and Insight headsets, and EPOC Flex will be supported in the future. To configure your headset: 1. Plug in your EPOC+ or EPOC X device to your PC using the USB cable that came with your device (unplug the USB cable from the mains plug) 2. Open EMOTIV App on your PC or Mac by searching for "EMOTIV App" in your computers search bar or clicking on the EMOTIV App Icon in the toolbar (if visible) ![](https://emotiv.gitbook.io/cortex-manual/~gitbook/image?url=https%3A%2F%2F3658799575-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LIeRq0fZhMtAZpE7gS_%252F-MC5ACvincsKYtaSpZPe%252F-MC5EIOYuZcpNaDxHu66%252FEmotivApp%2520Search.png%3Falt%3Dmedia%26token%3D26cc324c-1e00-4861-94ff-5b99b77a6523&width=768&dpr=4&quality=100&sign=7221c880&sv=2) 3\. On the "Devices" Tab, Select the Options : Icon beside the headset on the device list ![](https://emotiv.gitbook.io/cortex-manual/~gitbook/image?url=https%3A%2F%2F3658799575-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LIeRq0fZhMtAZpE7gS_%252F-MC5ACvincsKYtaSpZPe%252F-MC5CnzvPfkanM0sJdRm%252FConfig%25201.png%3Falt%3Dmedia%26token%3D1de5ee8b-f316-4f27-bc2d-970b50b1a473&width=300&dpr=4&quality=100&sign=27d31e56&sv=2) 4\. Click "Configurations" and a pop up will show. Change to your desired settings and click "Update Settings". _IMPORTANT Note: Bluetooth only supports a maximum of 128Hz sampling rate for EEG and 64Hz for Motion. Please select 128Hz for EEG and any value less than 128Hz for motion when using Bluetooth. Otherwise, to record with 256Hz EEG & 128Hz Motion, use the USB dongle that came with your headset._ ![](https://emotiv.gitbook.io/cortex-manual/~gitbook/image?url=https%3A%2F%2F3658799575-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LIeRq0fZhMtAZpE7gS_%252F-MC5ACvincsKYtaSpZPe%252F-MC5EPg004dAgEFO5FLd%252FConfig%25202.png%3Falt%3Dmedia%26token%3Df0d42e94-4643-428f-9091-128baac39bf2&width=768&dpr=4&quality=100&sign=6ca18b8c&sv=2) 5\. Disconnect your headset, from the USB Cable and Connect your headset as normal. Viewing this configuration menu during real time streaming will show your current device settings even when your headset is not plugged in directly to your PC. [PreviousContact Quality (CQ) vs. EEG Quality (EQ)](https://emotiv.gitbook.io/cortex-manual/setting_up_your_eeg_device/view_contact_quality_map/contact-quality-cq-vs.-eeg-quality-eq) [NextView device fitting instructions](https://emotiv.gitbook.io/cortex-manual/setting_up_your_eeg_device/view_headset_fitting_instructions) Last updated 4 years ago --- # deleteVirtualHeadset | Cortex Library for Mobile This method lets you delete a virtual headset that was previously created by [createVirtualHeadset](https://emotiv.gitbook.io/cortex-library-for-mobile/jsonapi/createvirtualheadset) . [](https://emotiv.gitbook.io/cortex-library-for-mobile/jsonapi/deletevirtualheadset#parameters) Parameters --------------------------------------------------------------------------------------------------------------- Name Type Required Description cortexToken `string` yes A token returned by [authorize](https://emotiv.gitbook.io/cortex-api/authentication/authorize) virtualHeadsetId `string` yes The `uuid` of the virtual headset you want to delete. [](https://emotiv.gitbook.io/cortex-library-for-mobile/jsonapi/deletevirtualheadset#result) Result ------------------------------------------------------------------------------------------------------- The result is an object with these fields: Name Type Description virtualHeadsetId `string` The `uuid` of the virtual headset you deleted. message `string` A success message. [](https://emotiv.gitbook.io/cortex-library-for-mobile/jsonapi/deletevirtualheadset#example) Example --------------------------------------------------------------------------------------------------------- Request [](https://emotiv.gitbook.io/cortex-library-for-mobile/jsonapi/deletevirtualheadset#tab-request) Response [](https://emotiv.gitbook.io/cortex-library-for-mobile/jsonapi/deletevirtualheadset#tab-response) Copy { "id": 1, "jsonrpc": "2.0", "method": "deleteVirtualHeadset", "params": { "cortexToken": "xxx", "virtualHeadsetId": "5ed162b5-a6ce-49ee-9775-cdc6be26a783" } } Copy { "id": 1, "jsonrpc": "2.0", "result": { "virtualHeadsetId": "5ed162b5-a6ce-49ee-9775-cdc6be26a783", "message": "Headset deleted successfully" } } [PreviouscreateVirtualHeadset](https://emotiv.gitbook.io/cortex-library-for-mobile/jsonapi/createvirtualheadset) [NextupdateVirtualHeadset](https://emotiv.gitbook.io/cortex-library-for-mobile/jsonapi/updatevirtualheadset) Last updated 4 years ago --- # Bluetooth | Updating firmware 1. Go to your computer’s settings and enable Bluetooth. 2. Turn your Insight on. Open Emotiv Launcher and go to the "Devices" tab. When the alert notification appears, click on "Proceed". ![](https://emotiv.gitbook.io/updating-firmware-1/~gitbook/image?url=https%3A%2F%2F2886284262-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FN4Xl9X9ui2BJjii1KYgk%252Fuploads%252FBXG1SkQrUkXqcodDsenj%252Flauncher-firmware-update.png%3Falt%3Dmedia%26token%3Db8ec4356-ab06-4417-81b8-2cd0ec61724b&width=768&dpr=4&quality=100&sign=ab591e90&sv=2) 3\. Click on "Update firmware". ![](https://emotiv.gitbook.io/updating-firmware-1/~gitbook/image?url=https%3A%2F%2F2886284262-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FN4Xl9X9ui2BJjii1KYgk%252Fuploads%252Fisn3w3woxzWIchblD9tD%252Ffirmware-update-insight.png%3Falt%3Dmedia%26token%3Dc1a30858-9d4d-40b8-a334-8780640cba9b&width=768&dpr=4&quality=100&sign=eee47109&sv=2) 4\. Click on "Finish" once your firmware update has completed. ![](https://emotiv.gitbook.io/updating-firmware-1/~gitbook/image?url=https%3A%2F%2F2886284262-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FN4Xl9X9ui2BJjii1KYgk%252Fuploads%252FgC6WoCkGi5lwo4hclrf8%252Ffirmware-update-insight-complete.png%3Falt%3Dmedia%26token%3D6626ef41-0d87-443b-9388-8551bb3a10c8&width=768&dpr=4&quality=100&sign=60c9ac7a&sv=2) [PreviousInsight](https://emotiv.gitbook.io/updating-firmware-1/insight) [NextCable](https://emotiv.gitbook.io/updating-firmware-1/insight/cable) Last updated 3 years ago --- # updateVirtualHeadset | Cortex Library for Mobile This method lets you update a virtual headset that was previously created by [createVirtualHeadset](https://emotiv.gitbook.io/cortex-library-for-mobile/jsonapi/createvirtualheadset) . [](https://emotiv.gitbook.io/cortex-library-for-mobile/jsonapi/updatevirtualheadset#parameters) Parameters --------------------------------------------------------------------------------------------------------------- Name Type Required Description cortexToken `string` yes A token returned by [authorize](https://emotiv.gitbook.io/cortex-api/authentication/authorize) virtualHeadsetId `string` yes The `uuid` of the virtual headset you want to update. name `string` no See description in [createVirtualHeadset](https://emotiv.gitbook.io/cortex-library-for-mobile/jsonapi/createvirtualheadset) powerOn `boolean` no See description in [createVirtualHeadset](https://emotiv.gitbook.io/cortex-library-for-mobile/jsonapi/createvirtualheadset) battery `number` no See description in [createVirtualHeadset](https://emotiv.gitbook.io/cortex-library-for-mobile/jsonapi/createvirtualheadset) cq `object` no See description in [createVirtualHeadset](https://emotiv.gitbook.io/cortex-library-for-mobile/jsonapi/createvirtualheadset) pm `object` no See description in [createVirtualHeadset](https://emotiv.gitbook.io/cortex-library-for-mobile/jsonapi/createvirtualheadset) preRecordedSamples `string` no See description in [createVirtualHeadset](https://emotiv.gitbook.io/cortex-library-for-mobile/jsonapi/createvirtualheadset) mc `object` no See description in [createVirtualHeadset](https://emotiv.gitbook.io/cortex-library-for-mobile/jsonapi/createvirtualheadset) fe `object` no See description in [createVirtualHeadset](https://emotiv.gitbook.io/cortex-library-for-mobile/jsonapi/createvirtualheadset) [](https://emotiv.gitbook.io/cortex-library-for-mobile/jsonapi/updatevirtualheadset#result) Result ------------------------------------------------------------------------------------------------------- The result is a [Virtual headset object](https://emotiv.gitbook.io/cortex-library-for-mobile/jsonapi/virtual-headset-object) . [](https://emotiv.gitbook.io/cortex-library-for-mobile/jsonapi/updatevirtualheadset#examples) Examples ----------------------------------------------------------------------------------------------------------- Switch on the headset: Request [](https://emotiv.gitbook.io/cortex-library-for-mobile/jsonapi/updatevirtualheadset#tab-request) Response [](https://emotiv.gitbook.io/cortex-library-for-mobile/jsonapi/updatevirtualheadset#tab-response) Copy { "id": 1, "jsonrpc": "2.0", "method": "updateVirtualHeadset", "params": { "cortexToken": "xxx", "virtualHeadsetId": "70e2002f-e4d2-4708-a4d0-8600f2a04842", "powerOn": true } } Copy { "id": 1, "jsonrpc": "2.0", "result": { "battery": 3, "connectionType": "bluetooth", "cq": { "AF3": 4, "AF4": 4, "Pz": 4, "T7": 4, "T8": 4 }, "cqStatus": "", "eegRate": 128, "fe": { "lowerFaceAction": "neutral", "lowerFacePower": 0, "upperFaceAction": "neutral", "upperFacePower": 0 }, "mc": { "action": "neutral", "power": 0 }, "motionRate": 64, "name": "Virtual Insight", "ownerId": "c7f6d941-d972-496b-8504-fcc903c46f02", "pm": { "engagement": { "isActive": true, "score": 0.5 }, "excitement": { "isActive": true, "score": 0.5 }, "focus": { "isActive": true, "score": 0.5 }, "interest": { "isActive": true, "score": 0.5 }, "relaxation": { "isActive": true, "score": 0.5 }, "stress": { "isActive": true, "score": 0.5 } }, "powerOn": true, "preRecordedSamples": "", "serial": "70E2002F", "type": "INSIGHT", "uuid": "70e2002f-e4d2-4708-a4d0-8600f2a04842" } } Change the name, the CQ and the battery level of the headset: Request [](https://emotiv.gitbook.io/cortex-library-for-mobile/jsonapi/updatevirtualheadset#tab-request-1) Response [](https://emotiv.gitbook.io/cortex-library-for-mobile/jsonapi/updatevirtualheadset#tab-response-1) Copy { "id": 1, "jsonrpc": "2.0", "method": "updateVirtualHeadset", "params": { "cortexToken": "xxx", "virtualHeadsetId": "70e2002f-e4d2-4708-a4d0-8600f2a04842", "name": "My Virtual Insight", "battery": 1, "cq": { "AF3": 0, "AF4": 4, "Pz": 4, "T7": 0, "T8": 4 } } } Copy { "id": 1, "jsonrpc": "2.0", "result": { "battery": 1, "connectionType": "bluetooth", "cq": { "AF3": 0, "AF4": 4, "Pz": 4, "T7": 0, "T8": 4 }, "cqStatus": "", "eegRate": 128, "fe": { "lowerFaceAction": "neutral", "lowerFacePower": 0, "upperFaceAction": "neutral", "upperFacePower": 0 }, "mc": { "action": "neutral", "power": 0 }, "motionRate": 64, "name": "My Virtual Insight", "ownerId": "c7f6d941-d972-496b-8504-fcc903c46f02", "pm": { "engagement": { "isActive": true, "score": 0.5 }, "excitement": { "isActive": true, "score": 0.5 }, "focus": { "isActive": true, "score": 0.5 }, "interest": { "isActive": true, "score": 0.5 }, "relaxation": { "isActive": true, "score": 0.5 }, "stress": { "isActive": true, "score": 0.5 } }, "powerOn": false, "preRecordedSamples": "", "serial": "70E2002F", "type": "INSIGHT", "uuid": "70e2002f-e4d2-4708-a4d0-8600f2a04842" } } [PreviousdeleteVirtualHeadset](https://emotiv.gitbook.io/cortex-library-for-mobile/jsonapi/deletevirtualheadset) [NexttriggerVirtualHeadsetEvent](https://emotiv.gitbook.io/cortex-library-for-mobile/jsonapi/triggervirtualheadsetevent) Last updated 4 years ago --- # Cable | Updating firmware 1. Connect the charging cable into the charging port located on the left of your Insight. Then, connect the USB end of the charging cable to your computer. 2. Open Emotiv Launcher and go to the "Devices" tab. When the alert notification appears, click on "Proceed". ![](https://emotiv.gitbook.io/updating-firmware-1/~gitbook/image?url=https%3A%2F%2F2886284262-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FN4Xl9X9ui2BJjii1KYgk%252Fuploads%252FBXG1SkQrUkXqcodDsenj%252Flauncher-firmware-update.png%3Falt%3Dmedia%26token%3Db8ec4356-ab06-4417-81b8-2cd0ec61724b&width=768&dpr=4&quality=100&sign=ab591e90&sv=2) 3\. Click on "Update firmware". ![](https://emotiv.gitbook.io/updating-firmware-1/~gitbook/image?url=https%3A%2F%2F2886284262-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FN4Xl9X9ui2BJjii1KYgk%252Fuploads%252Fwxfr5WJmOZa0jat84Kl7%252Ffirmware-update-insight-cable.png%3Falt%3Dmedia%26token%3Ddb23c098-3aba-451c-9547-f57a1ed41dc0&width=768&dpr=4&quality=100&sign=35523503&sv=2) 4\. Click on "Finish" once your firmware update has completed. ![](https://emotiv.gitbook.io/updating-firmware-1/~gitbook/image?url=https%3A%2F%2F2886284262-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FN4Xl9X9ui2BJjii1KYgk%252Fuploads%252FgC6WoCkGi5lwo4hclrf8%252Ffirmware-update-insight-complete.png%3Falt%3Dmedia%26token%3D6626ef41-0d87-443b-9388-8551bb3a10c8&width=768&dpr=4&quality=100&sign=60c9ac7a&sv=2) [PreviousBluetooth](https://emotiv.gitbook.io/updating-firmware-1/insight/bluetooth) [NextEPOC+/Flex](https://emotiv.gitbook.io/updating-firmware-1/epoc+-flex) Last updated 3 years ago --- # acceptLicense | Cortex Library for Mobile When users any Emotiv app or any apps using Cortex lib SDK, users must accept Emotiv's licensing agreement. The developer should develop an UI to ask user to accept it, if the users agrees, call `acceptLicense` API. An EmotivID user must only accept once until we change the licensing agreement. [](https://emotiv.gitbook.io/cortex-library-for-mobile/jsonapi/accept-license#parameters) Parameters --------------------------------------------------------------------------------------------------------- Name Type Description cortexToken `string` The token returned from [authorize](https://emotiv.gitbook.io/cortex-api/authentication/authorize) API [](https://emotiv.gitbook.io/cortex-library-for-mobile/jsonapi/accept-license#result) Result ------------------------------------------------------------------------------------------------- The result is an object with these fields: Name Type Description accepted `boolean` should be `true` message `string` shoud be `"Accept License Agreement successfully"` [](https://emotiv.gitbook.io/cortex-library-for-mobile/jsonapi/accept-license#example) Example --------------------------------------------------------------------------------------------------- Request [](https://emotiv.gitbook.io/cortex-library-for-mobile/jsonapi/accept-license#tab-request) Response [](https://emotiv.gitbook.io/cortex-library-for-mobile/jsonapi/accept-license#tab-response) Copy { "id": 1, "jsonrpc": "2.0", "method": "acceptLicense", "params": { "cortexToken":"a token here" } } Copy { "id": 1, "jsonrpc": "2.0", "result": { "message": "Accept License Agreement successfully", "accepted": true } } [Previouslogout](https://emotiv.gitbook.io/cortex-library-for-mobile/jsonapi/logout) [NextqueryVirtualHeadsets](https://emotiv.gitbook.io/cortex-library-for-mobile/jsonapi/queryvirtualheadsets) Last updated 1 month ago --- # Setting up your EEG device | EMOTIV App EMOTIV App is compatible with EPOC, EPOC+, EPOC X, EPOC Flex and Insight. It manages the basic steps of headset setup for using your hardware with EMOTIV and all approved third party applications. [PreviousClosing the app](https://emotiv.gitbook.io/cortex-manual/settings/closing_the_app) [NextDevices screen](https://emotiv.gitbook.io/cortex-manual/setting_up_your_eeg_device/devices_screen) Last updated 4 years ago --- # Connecting and disconnecting your Virtual Brainwear® device | EMOTIV App To connect to your virtual device, click on the More icon next to the powered-on device, then select Connect from the dropdown list. To disconnect from your virtual device click on the More icon next to the connected device, then select Disconnect from the dropdown list. ![](https://emotiv.gitbook.io/cortex-manual/~gitbook/image?url=https%3A%2F%2Flh5.googleusercontent.com%2FyqUhLuVokXpJoXSbRLRwvyuPkcsKnt6nobjqj9vafpLWru4UQxaHVJVKPe2iSbijuzEAfNabhitcbPjJwqoL0_X3zCiZf4SLohUioJ7sKzz0eL5fFyZ6ObaAnyphV9X1oERsyL1W&width=768&dpr=4&quality=100&sign=f97d929a&sv=2) [PreviousTurning your virtual device ON/OFF](https://emotiv.gitbook.io/cortex-manual/virtual-brainwear-r/turning-your-virtual-device-on-off) [NextVirtual Brainwear® device statuses and configuration](https://emotiv.gitbook.io/cortex-manual/virtual-brainwear-r/virtual-brainwear-r-device-statuses-and-configuration) Last updated 4 years ago --- # Connected headset | EMOTIV App Once the headset is connected you will see the connected headset panel appear in the Devices tab. ![](https://emotiv.gitbook.io/cortex-manual/~gitbook/image?url=https%3A%2F%2F3658799575-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LIeRq0fZhMtAZpE7gS_%252F-LIeRuULRxdpY8tb_g8D%252F-LIeS0pkQ3gBIAURILOR%252Fdevices-connected.jpg%3Fgeneration%3D1532941836150666%26alt%3Dmedia&width=768&dpr=4&quality=100&sign=eb0dd491&sv=2) The connected headset panel displays the following headset information: **Headset info** includes the headset name and headset ID **Battery indicator** shows you at all times the percentage of battery you have remaining in your headset. ![](https://emotiv.gitbook.io/cortex-manual/~gitbook/image?url=https%3A%2F%2F3658799575-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LIeRq0fZhMtAZpE7gS_%252F-LIeRuULRxdpY8tb_g8D%252F-LIeS0pmFKG4EZhMuMz7%252Fbattery.jpg%3Fgeneration%3D1532941836134008%26alt%3Dmedia&width=768&dpr=4&quality=100&sign=daf18854&sv=2) **Contact quality indicator** shows you in real time your overall contact quality averaged across all sensors on your headset on a scale from 0-100. ![](https://emotiv.gitbook.io/cortex-manual/~gitbook/image?url=https%3A%2F%2F3658799575-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LIeRq0fZhMtAZpE7gS_%252F-LIeRuULRxdpY8tb_g8D%252F-LIeS0po-FoWOikvXUXR%252Fsignal.jpg%3Fgeneration%3D1532941836149587%26alt%3Dmedia&width=768&dpr=4&quality=100&sign=c77afd85&sv=2) **Connection type indicator** shows if your headset is connected via Bluetooth, Dongle (USB Receiver) or USB Cable (EPOC+). ![](https://emotiv.gitbook.io/cortex-manual/~gitbook/image?url=https%3A%2F%2F3658799575-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LIeRq0fZhMtAZpE7gS_%252F-LIeRuULRxdpY8tb_g8D%252F-LIeS0pqQjt3Kj83UWfN%252Fsignal%2520copy.jpg%3Fgeneration%3D1532941861208546%26alt%3Dmedia&width=768&dpr=4&quality=100&sign=e952fa8b&sv=2) [PreviousConnecting your headset](https://emotiv.gitbook.io/cortex-manual/setting_up_your_eeg_device/connecting_your_headset) [NextDisconnecting your headset](https://emotiv.gitbook.io/cortex-manual/setting_up_your_eeg_device/disconnecting_your_headset) Last updated 6 years ago --- # Contact quality for Virtual Brainwear ® | EMOTIV App #### [](https://emotiv.gitbook.io/cortex-manual/virtual-brainwear-r/contact-quality-for-virtual-brainwear-r#contact-quality) **Contact Quality** Under Contact Quality you can choose how the contact quality of your virtual deviceis displayed. You can do this by setting an overall sensor status for all sensors or applying a status to each sensor individually. **Setting a contact quality status for all sensors** To set the same contact quality status to or all the sensors of your virtual device, select the desired contact quality status from the General Sensor Status dropdown list. **Setting a contact quality status for individual sensors** To set a contact quality status for each individual sensor, click on a sensor on the Contact Quality map, then select the desired contact quality status in the CQ Status dropdown list. ![](https://emotiv.gitbook.io/cortex-manual/~gitbook/image?url=https%3A%2F%2Flh4.googleusercontent.com%2FRFMGrYlUWP7e8P3Ei8-uYzBB1DG8cwS6_jXfXO0StRZhnYrhJCs6Gvb-kllw1p-kQYfIpOHhmbZeREELlEjLTNvW42hD2m-rqVJvEyAHA5tWqhT3ctJdzk7PdHSfd4kvrQJ1LTJQ&width=768&dpr=4&quality=100&sign=fb37fee0&sv=2) [PreviousConfiguring a Virtual Brainwear ®](https://emotiv.gitbook.io/cortex-manual/virtual-brainwear-r/configuring-a-virtual-brainwear-r) [NextVirtual Brainwear ® Simulation](https://emotiv.gitbook.io/cortex-manual/virtual-brainwear-r/virtual-brainwear-r-simulation) Last updated 4 years ago --- # Release Notes | EMOTIV App [v2.2.1](https://emotiv.gitbook.io/cortex-manual/release-notes/v-2.2.1) [v2.4.1](https://emotiv.gitbook.io/cortex-manual/release-notes/v2.4.1) [v2.5](https://emotiv.gitbook.io/cortex-manual/release-notes/v2.5) [v2.6](https://emotiv.gitbook.io/cortex-manual/release-notes/v-2.6) [v2.6.1](https://emotiv.gitbook.io/cortex-manual/release-notes/v2.6.1) [v2.6.2](https://emotiv.gitbook.io/cortex-manual/release-notes/v2.6.2) [v2.6.3](https://emotiv.gitbook.io/cortex-manual/release-notes/v-2.6.3) [v2.7](https://emotiv.gitbook.io/cortex-manual/release-notes/v2.7) [v2.7.2](https://emotiv.gitbook.io/cortex-manual/release-notes/v2.7.2) [v2.7.3](https://emotiv.gitbook.io/cortex-manual/release-notes/v2.7.3) [PreviousTools screen](https://emotiv.gitbook.io/cortex-manual/tools-screen) [Nextv 2.2.1](https://emotiv.gitbook.io/cortex-manual/release-notes/v-2.2.1) Last updated 3 years ago --- # Virtual Brainwear® | EMOTIV App Virtual Brainwear is a device emulator designed to assist you in developing applications compatible with EMOTIV’s hardware (EMOTIV Brainwear®). Virtual Brainwear can help you simulate a variety of different device states and data streams with just a few clicks — eliminating the need to set up different states using the physical device and saving you time. ![](https://emotiv.gitbook.io/cortex-manual/~gitbook/image?url=https%3A%2F%2Flh4.googleusercontent.com%2FH0HcfancWSBUKw0BmQSMCM02g7FYvI0E1GvcwWlyxIZz1ELyK1F61Ki0EZ42IHocK8_D6R7eLFxJBxVyVKXPNVWkkHXyo1O6E7LP2JsXekX4DXf88M1UkcCwDibzvJxIohJh9tc2&width=768&dpr=4&quality=100&sign=e5d2b346&sv=2) [PreviousView device fitting instructions](https://emotiv.gitbook.io/cortex-manual/setting_up_your_eeg_device/view_headset_fitting_instructions) [NextCreating a new virtual device](https://emotiv.gitbook.io/cortex-manual/virtual-brainwear-r/creating-a-new-virtual-device) Last updated 4 years ago --- # Update Apps | EMOTIV App 1. Click on the ![](https://emotiv.gitbook.io/cortex-manual/~gitbook/image?url=https%3A%2F%2F3658799575-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LIeRq0fZhMtAZpE7gS_%252F-LIeRuULRxdpY8tb_g8D%252F-LIeS-VCwBo79kcfdjnL%252Fsettings-icon-dark-gray.png%3Fgeneration%3D1532941840856016%26alt%3Dmedia&width=300&dpr=4&quality=100&sign=1d74e322&sv=2) icon in the top right corner of the applet to show the options menu 2. Click on “Update Apps” 3. Note: This will start the Emotiv Applications Installer & Setup Wizard 4. The setup wizard allows you to add/remove/update or delete applications ![](https://emotiv.gitbook.io/cortex-manual/~gitbook/image?url=https%3A%2F%2F3658799575-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LIeRq0fZhMtAZpE7gS_%252F-LejG5DGw-tJo15nT5IH%252F-LejHiEny33j4IRYcMX4%252Fimage.png%3Falt%3Dmedia%26token%3Df3799bad-2568-43b8-aac6-bca0bd0acdb2&width=768&dpr=4&quality=100&sign=ef4bc810&sv=2) [PreviousSettings](https://emotiv.gitbook.io/cortex-manual/settings/settings) [NextEMOTIV Setup Wizard](https://emotiv.gitbook.io/cortex-manual/settings/update-apps/emotiv-setup-wizard) Last updated 6 years ago --- # Account screen | EMOTIV App The Account screen displays account information and a list of licenses associated with your account. The account information includes the Name, EmotivID and email address associated with the current (logged in) Cortex user. By default every EMOTIV ID account comes with a [Basic License](https://www.emotiv.com/developer/) . ![](https://emotiv.gitbook.io/cortex-manual/~gitbook/image?url=https%3A%2F%2F3658799575-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LIeRq0fZhMtAZpE7gS_%252F-LIeRuULRxdpY8tb_g8D%252F-LIeS-uEZKKdWZO1ZFlG%252Faccount.jpg%3Fgeneration%3D1532941851259099%26alt%3Dmedia&width=768&dpr=4&quality=100&sign=70ba28a4&sv=2) [PreviousVirtual Brainwear ® Detections](https://emotiv.gitbook.io/cortex-manual/virtual-brainwear-r/virtual-brainwear-r-detections) [NextLicenses](https://emotiv.gitbook.io/cortex-manual/account_screen/licenses) Last updated 6 years ago --- # Settings | EMOTIV App **General Settings** Users can enable/disable EMOTIV App on startup The ICQ (Ignore Contact Quality) mode will override contact quality thresholds and keep performance metrics outputs enabled. This allows a user to demo applications without affecting the performance metric display. ![](https://emotiv.gitbook.io/cortex-manual/~gitbook/image?url=https%3A%2F%2F3658799575-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LIeRq0fZhMtAZpE7gS_%252F-MKfVtAVfdvh-68rNOfR%252F-MKfWWB0TBTUZ-f1VAXn%252FScreen%2520Shot%25202020-10-26%2520at%25208.35.16%2520PM.png%3Falt%3Dmedia%26token%3D7c5708d7-d928-4a55-99c8-b719c1ad97e7&width=768&dpr=4&quality=100&sign=6a9c6a58&sv=2) **Storage** ![](https://emotiv.gitbook.io/cortex-manual/~gitbook/image?url=https%3A%2F%2F3658799575-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LIeRq0fZhMtAZpE7gS_%252F-MKfX_njgWUwNZWbqjKQ%252F-MKfXcj5Zm0XG8d26dhP%252FScreen%2520Shot%25202020-10-27%2520at%252012.30.17%2520PM.png%3Falt%3Dmedia%26token%3Dadd49a68-7075-4531-9cb8-82138c42ca4f&width=768&dpr=4&quality=100&sign=61cda878&sv=2) Users can manage data storage and select between Manual or Automatic modes. This gives the user full control over the duration of data storage. [PreviousUser manual](https://emotiv.gitbook.io/cortex-manual/settings/user-manual) [NextUpdate Apps](https://emotiv.gitbook.io/cortex-manual/settings/update-apps) Last updated 4 years ago --- # Apps screen | EMOTIV App This page lists all your Applications that have been approved or denied access [PreviousLicenses](https://emotiv.gitbook.io/cortex-manual/account_screen/licenses) [NextTools screen](https://emotiv.gitbook.io/cortex-manual/tools-screen) Last updated 6 years ago --- # Tools screen | EMOTIV App [](https://emotiv.gitbook.io/cortex-manual/tools-screen#decrypt-extender-data) Decrypt extender data --------------------------------------------------------------------------------------------------------- The Tools screen enables a user to decrypt local or SD card data recorded with Extender. You must have an appropriate PRO license to be able to use this feature. Please see [Extender user manual](https://app.gitbook.com/@emotiv/s/extender-manual/modes-of-operation) for further details ![](https://emotiv.gitbook.io/cortex-manual/~gitbook/image?url=https%3A%2F%2F3658799575-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LIeRq0fZhMtAZpE7gS_%252F-MaWiHaPEhM67G1RPuTg%252F-MaWkLmVbBDbvHlJRIxX%252Fimage.png%3Falt%3Dmedia%26token%3D658c653e-cd2f-4aad-a8bd-4df4e4176edb&width=768&dpr=4&quality=100&sign=2293674e&sv=2) [](https://emotiv.gitbook.io/cortex-manual/tools-screen#connect-to-remote-cortex) Connect to remote cortex --------------------------------------------------------------------------------------------------------------- This feature is only available since 2.7.1 release. Following steps are the guideline to use the remote tool to work with Cortex running on Raspberry Pi 4 ### [](https://emotiv.gitbook.io/cortex-manual/tools-screen#install-cortex-on-pi) Install Cortex on Pi To install Cortex on Pi : * ssh to Pi * Download the file **emotivapps\_2.7.1.beta\_armhf.deb** * Run the following command to install Copy $ sudo apt-get install ./emotivapps_2.7.1.beta_armhf.deb After installing, you can check if `cortex` service is running with command Copy $ sudo systemctl status cortex ### [](https://emotiv.gitbook.io/cortex-manual/tools-screen#undefined) ### [](https://emotiv.gitbook.io/cortex-manual/tools-screen#remote-connect-to-cortex-running-on-pi) Remote connect to Cortex running on Pi * ssh to Pi and change directory to **/usr/local/emotivapps/bin** Copy $ cd /usr/local/emotivapps/bin * Run following command to allow access from remote IP. More usage of `cortexaccess` tool can be found [here](https://emotiv.gitbook.io/cortex-api/cortexaccess-tool) . Copy # cortexaccess ip accept ip_address_of_machine_which_does_remote_to_pi # for example: $ ./cortexaccess ip accept 192.168.1.11 * After allowing access, run the following command to confirm Copy $ ./cortexaccess ip list * Find the IP address of your Pi device with command **ifconfig**, for example 192.168.1.21. Note that only IP addresses in a specific range are supported, otherwise you have to configure `hosts` file and use `emotiv-cortex.remote` DNS. [See the range of supported IP addresses and how to configure hosts files.](https://emotiv.gitbook.io/cortex-api/connecting-to-the-cortex-api#remote-connections) * Put the above IP address (or `emotiv-cortex.remote` if the IP address is not supported) into the text box under the **Remote Connect** session * Then click **Connect** ![](https://emotiv.gitbook.io/cortex-manual/~gitbook/image?url=https%3A%2F%2F3658799575-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LIeRq0fZhMtAZpE7gS_%252F-MaWWzt3lETt_63CjqLf%252F-MaWdZGeYy5FGJvYTkf0%252Fimage.png%3Falt%3Dmedia%26token%3D39bba076-0090-40a2-8359-24fea0678ce8&width=768&dpr=4&quality=100&sign=cbd64f62&sv=2) ### [](https://emotiv.gitbook.io/cortex-manual/tools-screen#connect-headset) Connect headset After Cortex is running on Pi and EMOTIVApp remotes to Pi successfully, user can connect a headset to Pi with Dongle or Bluetooth connection. Headsets will be showed up on the **Devices** tab ![](https://emotiv.gitbook.io/cortex-manual/~gitbook/image?url=https%3A%2F%2F3658799575-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LIeRq0fZhMtAZpE7gS_%252F-MaWWzt3lETt_63CjqLf%252F-MaWdRH8jqwK4UgwUT3g%252Fimage.png%3Falt%3Dmedia%26token%3D1c52ea7d-694c-40b1-88dc-c56ee1c2ba65&width=768&dpr=4&quality=100&sign=7a7a8b9f&sv=2) **Note** with bluetooth connection, in case the headset connection is lost unexpectedly (even the headset is turned on), there may be an issue with `bluetooth` service, you should make sure this `bluetooth` service is running stable. Most of the time, you can troubleshoot by restarting `bluetooth` service first, then `cortex` service, using the following commands on Pi: Copy $ sudo systemctl restart bluetooth $ sudo systemctl restart cortex ### [](https://emotiv.gitbook.io/cortex-manual/tools-screen#undefined-1) ### [](https://emotiv.gitbook.io/cortex-manual/tools-screen#develop-a-remote-application) Develop a remote application In order to connect with Cortex running on Pi and develop an application, user must change url to Pi's IP address. For example with python example, user should have following change in file [https://github.com/Emotiv/cortex-v2-example/blob/master/python/cortex.py](https://github.com/Emotiv/cortex-v2-example/blob/master/python/cortex.py) Copy def __init__(self, user, debug_mode=False): url = "wss://ip_address_of_PI:6868" [](https://emotiv.gitbook.io/cortex-manual/tools-screen#undefined-2) ------------------------------------------------------------------------ [PreviousApps screen](https://emotiv.gitbook.io/cortex-manual/apps-screen) [NextRelease Notes](https://emotiv.gitbook.io/cortex-manual/release-notes) Last updated 3 years ago --- # Insight | Updating firmware You can only update the firmware on your Insight 2.0 by connecting your headset to your computer via Bluetooth. For Insight 1.0, you can only update the firmware on your headset by connecting it to your computer with the provided charging cable. [PreviousUpdating firmware](https://emotiv.gitbook.io/updating-firmware-1) [NextBluetooth](https://emotiv.gitbook.io/updating-firmware-1/insight/bluetooth) Last updated 3 years ago --- # Devices screen | EMOTIV App The Devices screen is the home screen of the EMOTIV App and displays a list of available and connected headsets. You can navigate to the Devices screen by clicking on the Devices tab in the top section of the app window. ![](https://emotiv.gitbook.io/cortex-manual/~gitbook/image?url=https%3A%2F%2F3658799575-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LIeRq0fZhMtAZpE7gS_%252F-LejG5DGw-tJo15nT5IH%252F-Lejvu_M6cHQs4UziYul%252Fimage.png%3Falt%3Dmedia%26token%3D7d77c3b3-3217-49be-b67e-1004f13b8317&width=768&dpr=4&quality=100&sign=f68310d0&sv=2) [PreviousSetting up your EEG device](https://emotiv.gitbook.io/cortex-manual/setting_up_your_eeg_device) [NextConnecting your headset](https://emotiv.gitbook.io/cortex-manual/setting_up_your_eeg_device/connecting_your_headset) Last updated 6 years ago --- # Disconnecting your headset | EMOTIV App To disconnect your headset: 1. Click on the ![](https://emotiv.gitbook.io/cortex-manual/~gitbook/image?url=https%3A%2F%2F3658799575-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LIeRq0fZhMtAZpE7gS_%252F-LIeRuULRxdpY8tb_g8D%252F-LIeS-kMUfkZ0tBgD4uw%252FIcon%252024px.jpg%3Fgeneration%3D1532941853068213%26alt%3Dmedia&width=300&dpr=4&quality=100&sign=378f78c4&sv=2) icon on the headset panel to display the options menu 2. Click on “Disconnect” to disconnect your headset. ![](https://emotiv.gitbook.io/cortex-manual/~gitbook/image?url=https%3A%2F%2F3658799575-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LIeRq0fZhMtAZpE7gS_%252F-LejG5DGw-tJo15nT5IH%252F-LejwXipbkb9xOzF02JJ%252Fimage.png%3Falt%3Dmedia%26token%3De892e861-674b-4f10-a6d6-e51c3116b518&width=768&dpr=4&quality=100&sign=b581556&sv=2) [PreviousConnected headset](https://emotiv.gitbook.io/cortex-manual/setting_up_your_eeg_device/connected_headset) [NextView contact quality map](https://emotiv.gitbook.io/cortex-manual/setting_up_your_eeg_device/view_contact_quality_map) Last updated 6 years ago --- # v 2.6.3 | EMOTIV App ### [](https://emotiv.gitbook.io/cortex-manual/release-notes/v-2.6.3#enhancements-and-features) Enhancements and features * EPOC Flex support added for Virtual Brainwear® * A new tutorial link is included to assist with headset fitment and connection [Previousv2.6.2](https://emotiv.gitbook.io/cortex-manual/release-notes/v2.6.2) [Nextv2.7](https://emotiv.gitbook.io/cortex-manual/release-notes/v2.7) Last updated 4 years ago --- # Configuring a Virtual Brainwear ® | EMOTIV App #### [](https://emotiv.gitbook.io/cortex-manual/virtual-brainwear-r/configuring-a-virtual-brainwear-r#device) **Device** Under Devices, you can choose which device you wish to simulate, give it a name and set the battery power indicator to your desired output. **Changing device name** To change the name of your virtual device simply update it in the Device Name input box. This change will take effect automatically. **Setting the battery level** To set the battery level to a specific state, click on the dropdown list and select one of the available states. The related API output value is displayed next to the battery level to help you navigate your selection. ![](https://emotiv.gitbook.io/cortex-manual/~gitbook/image?url=https%3A%2F%2Flh4.googleusercontent.com%2F1M7yS6TJ2wqBPlLR4reMMqB56Zzq07f8vSz4rUx9TBlVQsSnE8zUBCzX_f4KjIvDTURwMtJmspLMkHhoZnlDXVbigEjVn2gNt13GXpOTRfC3VvEAuJ__yOcBilRMdEM0j_Tn_p4F&width=768&dpr=4&quality=100&sign=e3377c44&sv=2) [PreviousVirtual Brainwear® device statuses and configuration](https://emotiv.gitbook.io/cortex-manual/virtual-brainwear-r/virtual-brainwear-r-device-statuses-and-configuration) [NextContact quality for Virtual Brainwear ®](https://emotiv.gitbook.io/cortex-manual/virtual-brainwear-r/contact-quality-for-virtual-brainwear-r) Last updated 4 years ago --- # v2.5 | EMOTIV App ### [](https://emotiv.gitbook.io/cortex-manual/release-notes/v2.5#enhancements-and-features) Features and Enhancements * Added support for EMOTIV's latest MN8 Brainwear. * Added support for Mn8's Virtual Brainwear function (Please apply for special license [here](https://www.emotiv.com/workplace-wellness-safety-and-productivity-mn8/) ). * Application upgrade enhancements. [Previousv2.4.1](https://emotiv.gitbook.io/cortex-manual/release-notes/v2.4.1) [Nextv 2.6](https://emotiv.gitbook.io/cortex-manual/release-notes/v-2.6) Last updated 5 years ago --- # Virtual headset object | Cortex Library for Mobile [](https://emotiv.gitbook.io/cortex-library-for-mobile/jsonapi/virtual-headset-object#example) Example ----------------------------------------------------------------------------------------------------------- Copy { "battery": 3, "connectionType": "bluetooth", "cq": { "AF3": 4, "AF4": 4, "Pz": 4, "T7": 0, "T8": 1 }, "cqStatus": "", "eegRate": 128, "fe": { "lowerFaceAction": "smile", "lowerFacePower": 0.6, "upperFaceAction": "neutral", "upperFacePower": 0 }, "mc": { "action": "push", "power": 0.3 }, "motionRate": 64, "name": "Virtual Insight", "ownerId": "c7f6d941-d972-496b-8504-fcc903c46f02", "pm": { "engagement": { "isActive": true, "score": 0.5 }, "excitement": { "isActive": true, "score": 0.5 }, "focus": { "isActive": true, "score": 0.5 }, "interest": { "isActive": true, "score": 0.5 }, "relaxation": { "isActive": true, "score": 0.5 }, "stress": { "isActive": true, "score": 0.5 } }, "powerOn": true, "preRecordedSamples": "high", "serial": "70E2002F", "type": "INSIGHT", "uuid": "70e2002f-e4d2-4708-a4d0-8600f2a04842" } [PrevioustriggerVirtualHeadsetEvent](https://emotiv.gitbook.io/cortex-library-for-mobile/jsonapi/triggervirtualheadsetevent) [NextfreeUpRecords](https://emotiv.gitbook.io/cortex-library-for-mobile/jsonapi/freeuprecords) Last updated 4 years ago --- # EPOC X | Updating firmware The EPOC X contains two chips, both of which require a firmware update. These are the steps to take in order to ensure that your EPOC X firmware is up to date and you are able to use your headset correctly. 1. Turn on your headset, and connect the USB cable into the headset port. Then connect the other end of the USB cable to your computer. 2. Open Emotiv Launcher and go to the "Devices" tab. When the alert notification appears, click on "Proceed". ![](https://emotiv.gitbook.io/updating-firmware-1/~gitbook/image?url=https%3A%2F%2F2886284262-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FN4Xl9X9ui2BJjii1KYgk%252Fuploads%252FYINibaM8vdUA9DuKehcQ%252Fepocx-fwupgrade-cable-first.png%3Falt%3Dmedia%26token%3D8b634d1b-df62-42c7-bd94-93c4e17a6596&width=768&dpr=4&quality=100&sign=b50b7c62&sv=2) 3\. Click on "Update via USB Cable". ![](https://emotiv.gitbook.io/updating-firmware-1/~gitbook/image?url=https%3A%2F%2F2886284262-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FN4Xl9X9ui2BJjii1KYgk%252Fuploads%252FTuyGUpNDyAlXtJQ9qtNc%252Fepocx-fwupgrade-new-protocol-cable.png%3Falt%3Dmedia%26token%3D34e49e12-f33f-44c5-94cc-70fd3cc66ec2&width=768&dpr=4&quality=100&sign=e7508c6a&sv=2) 4\. Click on "Update firmware". ![](https://emotiv.gitbook.io/updating-firmware-1/~gitbook/image?url=https%3A%2F%2F2886284262-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FN4Xl9X9ui2BJjii1KYgk%252Fuploads%252FVagr1MEV3C2xAW5iYdv1%252Fepocx-fwupgrade-cable.png%3Falt%3Dmedia%26token%3D331bfd2f-87bc-4f9c-a6ff-d4a1a72a9e4c&width=768&dpr=4&quality=100&sign=63a767c1&sv=2) 5\. Click "OK" once the process has completed. ![](https://emotiv.gitbook.io/updating-firmware-1/~gitbook/image?url=https%3A%2F%2F2886284262-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FN4Xl9X9ui2BJjii1KYgk%252Fuploads%252FTcgh1vi5z9fZC2Lca279%252Fepocx-fwupgrade-cable-successful.png%3Falt%3Dmedia%26token%3D439e8ce2-3144-4732-8b5e-456e757dd6f4&width=768&dpr=4&quality=100&sign=61be7c90&sv=2) 6\. Now remove the USB cable from your headset, and turn on Bluetooth on your computer. If this is your first time using your headset, you will need to [connect your EPOC X to your computer via BLTE](https://emotiv.gitbook.io/epoc-x-user-manual/getting-started/connecting-your-epoc-x-to-a-device/connecting-your-epoc-x-using-bluetooth-low-energy) . ![](https://emotiv.gitbook.io/updating-firmware-1/~gitbook/image?url=https%3A%2F%2F2886284262-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FN4Xl9X9ui2BJjii1KYgk%252Fuploads%252FZvezX6nETMU4qwsl0em2%252Fepocx-fwupgrade-bt-prompt.png%3Falt%3Dmedia%26token%3D99e6f8ac-0ef1-463a-8c5d-1f5e1a188c18&width=768&dpr=4&quality=100&sign=e407a894&sv=2) 7\. When the alert notification appears, click on "Proceed". ![](https://emotiv.gitbook.io/updating-firmware-1/~gitbook/image?url=https%3A%2F%2F2886284262-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FN4Xl9X9ui2BJjii1KYgk%252Fuploads%252Flr7xcMdvxR8rOPg693wr%252Flauncher-epocx-fwupgrade.png%3Falt%3Dmedia%26token%3Df146c116-3171-4ae8-9337-6642faf8c3f4&width=768&dpr=4&quality=100&sign=e68e7aea&sv=2) 8\. Click on "Update via Bluetooth". ![](https://emotiv.gitbook.io/updating-firmware-1/~gitbook/image?url=https%3A%2F%2F2886284262-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FN4Xl9X9ui2BJjii1KYgk%252Fuploads%252Fj6iFBVo7DiXieiPCvLFT%252Fepocx-fwupgrade-new-protocol.png%3Falt%3Dmedia%26token%3D23438ea3-f101-411a-a26b-7b97a255c585&width=768&dpr=4&quality=100&sign=f45cc542&sv=2) 9\. Click on "Update firmware". Keep the headset close to your computer and away from other Bluetooth devices for the duration of the update. ![](https://emotiv.gitbook.io/updating-firmware-1/~gitbook/image?url=https%3A%2F%2F2886284262-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FN4Xl9X9ui2BJjii1KYgk%252Fuploads%252FQAUwN01PfkVbE1PCsC2E%252Fepocx-fwupgrade-proximity.png%3Falt%3Dmedia%26token%3Dd782b7dc-1165-4208-b1e4-5f9d842195a4&width=768&dpr=4&quality=100&sign=70ee39a0&sv=2) 10\. Click "Finish" once the process has completed. ![](https://emotiv.gitbook.io/updating-firmware-1/~gitbook/image?url=https%3A%2F%2F2886284262-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FN4Xl9X9ui2BJjii1KYgk%252Fuploads%252FkrTtSNvHdrF287TAYS2D%252Fepocx-fwupgrade-complete-successful.png%3Falt%3Dmedia%26token%3D04642a5b-7479-4554-9254-31694bcaf8e3&width=768&dpr=4&quality=100&sign=29224391&sv=2) [PreviousEPOC+/Flex](https://emotiv.gitbook.io/updating-firmware-1/epoc+-flex) Last updated 3 years ago --- # Creating a new virtual device | EMOTIV App Similar to your physical EMOTIV Brainwear, Virtual Brainwear has several states: these include created, powered on/off, connected/disconnected and configured.All of these states can be controlled via the dropdown list accessible by clicking the More icon on the virtual device panel in EMOTIV App. **Creating a new virtual device** Once logged in, click on Devices in EMOTIV App, then click on Add a Virtual Brainwear device —this will bring up a virtual device configuration dialogue. To create a new virtual device, select the device you would like to emulate (e.g. MN8) and click on the Create Brainwear® button in the virtual device configuration dialogue. When created, your virtual device will appear in the Virtual Devices list under the Devices tab. ![](https://emotiv.gitbook.io/cortex-manual/~gitbook/image?url=https%3A%2F%2Flh3.googleusercontent.com%2FHzDAs6RaxEcu1QCOTvpm6y4DqRDsLwJJ6OEEIxd6cTu6NNDxb_HcYNuDe90Th8tdMLJ6M5yGfpdBsy84POz3Y67mG-3A0sGSn2jalJuthjGI24eVWaQ6wJkLrkjkWyhDjANX2wBH&width=768&dpr=4&quality=100&sign=1a04f0fd&sv=2) [PreviousVirtual Brainwear®](https://emotiv.gitbook.io/cortex-manual/virtual-brainwear-r) [NextTurning your virtual device ON/OFF](https://emotiv.gitbook.io/cortex-manual/virtual-brainwear-r/turning-your-virtual-device-on-off) Last updated 4 years ago --- # Release Notes | Cortex Library for Mobile These release notes only list the changes in the Objective-C and Java wrappers of Cortex library. To see all the changes made in Cortex in each release, you should also read the [release notes of the Cortex API](https://emotiv.gitbook.io/cortex-api/release-notes) . The Cortex library uses the same version numbers as the [Cortex API](https://emotiv.gitbook.io/cortex-api/) . [](https://emotiv.gitbook.io/cortex-library-for-mobile/release-notes#cortex-library-4.7.8-jun-2025) Cortex Library 4.7.8 - Jun 2025 ---------------------------------------------------------------------------------------------------------------------------------------- * add [acceptLicense](https://emotiv.gitbook.io/cortex-library-for-mobile/jsonapi/accept-license) API [](https://emotiv.gitbook.io/cortex-library-for-mobile/release-notes#cortex-library-3.5.7-jul-2023) Cortex Library 3.5.7 - Jul 2023 ---------------------------------------------------------------------------------------------------------------------------------------- * Update to request JSON detection and personal params with JWT token. [](https://emotiv.gitbook.io/cortex-library-for-mobile/release-notes#cortex-library-3.5.5-jun-2023) Cortex Library 3.5.5 - Jun 2023 ---------------------------------------------------------------------------------------------------------------------------------------- * Bug fixes. [](https://emotiv.gitbook.io/cortex-library-for-mobile/release-notes#cortex-library-3.4.2-dec-2022) Cortex Library 3.4.2 - Dec 2022 ---------------------------------------------------------------------------------------------------------------------------------------- * Fixed wrong activity in Mental Command during training. * Update for new Bluetooth permission on Android 12. [](https://emotiv.gitbook.io/cortex-library-for-mobile/release-notes#cortex-library-3.3.1-aug-2022) Cortex Library 3.3.1 - Aug 2022 ---------------------------------------------------------------------------------------------------------------------------------------- * New platform supports and bug fixes. [](https://emotiv.gitbook.io/cortex-library-for-mobile/release-notes#cortex-library-3.2-mar-2022) Cortex Library 3.2 - Mar 2022 ------------------------------------------------------------------------------------------------------------------------------------ * Bug fixes [](https://emotiv.gitbook.io/cortex-library-for-mobile/release-notes#cortex-library-3.0-beta-october-2021) Cortex Library 3.0 Beta - October 2021 ------------------------------------------------------------------------------------------------------------------------------------------------------ * Add the method [freeUpRecords](https://emotiv.gitbook.io/cortex-library-for-mobile/jsonapi/freeuprecords) [](https://emotiv.gitbook.io/cortex-library-for-mobile/release-notes#cortex-library-2.7.2-beta-july-2021) Cortex Library 2.7.2 Beta - July 2021 ---------------------------------------------------------------------------------------------------------------------------------------------------- * Change the result of the JSON methods [deleteVirtualHeadset](https://emotiv.gitbook.io/cortex-library-for-mobile/jsonapi/deletevirtualheadset) and [triggerVirtualHeadsetEvent](https://emotiv.gitbook.io/cortex-library-for-mobile/jsonapi/triggervirtualheadsetevent) [](https://emotiv.gitbook.io/cortex-library-for-mobile/release-notes#cortex-library-2.7.1-beta-may-2021) Cortex Library 2.7.1 Beta - May 2021 -------------------------------------------------------------------------------------------------------------------------------------------------- * Add a callback as the argument of the function CortexLib.start ([Objective-C](https://emotiv.gitbook.io/cortex-library-for-mobile/objective-c-api/cortexlib-class#start) , [Java](https://emotiv.gitbook.io/cortex-library-for-mobile/java-api/cortexlib-class#start) ) * Add the function CortexClient.authenticate ([Objective-C](https://emotiv.gitbook.io/cortex-library-for-mobile/objective-c-api/cortexclient-class#authenticate) , [Java](https://emotiv.gitbook.io/cortex-library-for-mobile/java-api/cortexclient-class#authenticate) ) * Add the function CortexClient.getAuthenticationCode ([Java](https://emotiv.gitbook.io/cortex-library-for-mobile/java-api/cortexclient-class#getauthenticationcode) ) * In the [JSON API](https://emotiv.gitbook.io/cortex-library-for-mobile/jsonapi) , replace the method "login" by [loginWithAuthenticationCode](https://emotiv.gitbook.io/cortex-library-for-mobile/jsonapi/loginwithauthenticationcode) [](https://emotiv.gitbook.io/cortex-library-for-mobile/release-notes#cortex-library-2.7.0-beta-april-2021) Cortex Library 2.7.0 Beta - April 2021 ------------------------------------------------------------------------------------------------------------------------------------------------------ First Beta release. [PreviousfreeUpRecords](https://emotiv.gitbook.io/cortex-library-for-mobile/jsonapi/freeuprecords) Last updated 1 month ago --- # triggerVirtualHeadsetEvent | Cortex Library for Mobile This method lets you trigger an eye action for the facial expression detection. [](https://emotiv.gitbook.io/cortex-library-for-mobile/jsonapi/triggervirtualheadsetevent#parameters) Parameters --------------------------------------------------------------------------------------------------------------------- Name Type Required Description cortexToken `string` yes A token returned by [authorize](https://emotiv.gitbook.io/cortex-api/authentication/authorize) virtualHeadsetId `string` yes The `uuid` of a virtual headset. eyeAction `string` yes The value can be "blink", "winkL" or "winkR". [](https://emotiv.gitbook.io/cortex-library-for-mobile/jsonapi/triggervirtualheadsetevent#result) Result ------------------------------------------------------------------------------------------------------------- The result is an an object with these fields: Name Type Description virtualHeadsetId `string` The `uuid` of the virtual headset. eyeAction `string` The action from the request. message `string` A success message. [](https://emotiv.gitbook.io/cortex-library-for-mobile/jsonapi/triggervirtualheadsetevent#example) Example --------------------------------------------------------------------------------------------------------------- Trigger a blink event. Request [](https://emotiv.gitbook.io/cortex-library-for-mobile/jsonapi/triggervirtualheadsetevent#tab-request) Response [](https://emotiv.gitbook.io/cortex-library-for-mobile/jsonapi/triggervirtualheadsetevent#tab-response) Copy { "id": 1, "jsonrpc": "2.0", "method": "triggerVirtualHeadsetEvent", "params": { "cortexToken": "xxx", "virtualHeadsetId": "70e2002f-e4d2-4708-a4d0-8600f2a04842", "eyeAction": "blink" } } Copy { "id": 1, "jsonrpc": "2.0", "result": { "virtualHeadsetId": "70e2002f-e4d2-4708-a4d0-8600f2a04842", "eyeAction": "blink", "message": "Action triggered successfully" } } [PreviousupdateVirtualHeadset](https://emotiv.gitbook.io/cortex-library-for-mobile/jsonapi/updatevirtualheadset) [NextVirtual headset object](https://emotiv.gitbook.io/cortex-library-for-mobile/jsonapi/virtual-headset-object) Last updated 4 years ago --- # freeUpRecords | Cortex Library for Mobile This method is to ask Cortex to delete some records, to free up some space on the local hard drive. The records are not delete from the Emotiv cloud. [](https://emotiv.gitbook.io/cortex-library-for-mobile/jsonapi/freeuprecords#parameters) Parameters -------------------------------------------------------------------------------------------------------- Name Type Required Description cortexToken `string` yes A token returned by [authorize](https://emotiv.gitbook.io/cortex-api/authentication/authorize) records `array of strings` yes A list of record IDs. [](https://emotiv.gitbook.io/cortex-library-for-mobile/jsonapi/freeuprecords#result) Result ------------------------------------------------------------------------------------------------ The result is an object with these fields: Name Type Description failure `array of objects` List of the records that Cortex failed to free up. success `array of objects` List of the records that Cortex successfully freed up. The failure objects include these fields: Name Type Description code `number` The error code. message `string` The error message. recordId `string` The id of the record that Cortex failed to free up. The success objects include these fields: Name Type Description recordId `string` The id of the record that Cortex successfully freed up. [](https://emotiv.gitbook.io/cortex-library-for-mobile/jsonapi/freeuprecords#example) Example -------------------------------------------------------------------------------------------------- Request [](https://emotiv.gitbook.io/cortex-library-for-mobile/jsonapi/freeuprecords#tab-request) Response [](https://emotiv.gitbook.io/cortex-library-for-mobile/jsonapi/freeuprecords#tab-response) Copy { "id": 1, "jsonrpc": "2.0", "method": "freeUpRecords", "params": { "cortexToken": "xxx", "records": ["foo", "e4b40b0d-99e0-4f43-98ad-8296b125e495"] } } Copy { "id": 1, "jsonrpc": "2.0", "result": { "failure": [{\ "code": -32113,\ "message": "Invalid Record ID.",\ "recordId": "foo"\ }], "success": [{\ "recordId": "e4b40b0d-99e0-4f43-98ad-8296b125e495"\ }] } } [PreviousVirtual headset object](https://emotiv.gitbook.io/cortex-library-for-mobile/jsonapi/virtual-headset-object) [NextRelease Notes](https://emotiv.gitbook.io/cortex-library-for-mobile/release-notes) Last updated 3 years ago --- # CortexLib class | Cortex Library for Mobile Copy import com.emotiv.CortexLib; Use CortexLib to initialize the Cortex library. You must [load](https://emotiv.gitbook.io/cortex-library-for-mobile/java-api/emotivlibraryloader-class) the Cortex library before using CortexLib. [](https://emotiv.gitbook.io/cortex-library-for-mobile/java-api/cortexlib-class#start) start ------------------------------------------------------------------------------------------------- Copy public static boolean start(CortexLibInterface cortexLibInterface) Call this static method to initialize the Cortex library. You must call it exactly once. You must call it before creating an instance of the [CortexClient class](https://emotiv.gitbook.io/cortex-library-for-mobile/objective-c-api/cortexclient-class) . The library starts asynchronously. When it is started, the library calls the callback you provided. Copy public interface CortexLibInterface { public void onCortexStarted(); } [](https://emotiv.gitbook.io/cortex-library-for-mobile/java-api/cortexlib-class#stop) stop ----------------------------------------------------------------------------------------------- Copy public static void stop() Call this static method to stop the Cortex library. You must call it exactly once. [](https://emotiv.gitbook.io/cortex-library-for-mobile/java-api/cortexlib-class#setloghandler) setLogHandler ----------------------------------------------------------------------------------------------------------------- Copy public static void setLogHandler(CortexLogLevel logLevel, CortexLogHandler logHandler) Call this method if you want to receive the log messages from the Cortex library. Calling this method is optional. However, if you want to call it, then you must do it before calling the method `start`. The parameter **logLevel** controls how much log messages you will receive. * INFO: get all the messages * WARNING: only get the warnings and the error messages * ERROR: only get the error messages Copy public enum CortexLogLevel { INFO, WARNING, ERROR } The parameter **logHandler** is a callback that will receive the log messages. Copy public interface CortexLogHandler { public void onCortexLogMessage(String message); } [PreviousEmotivLibraryLoader class](https://emotiv.gitbook.io/cortex-library-for-mobile/java-api/emotivlibraryloader-class) [NextCortexClient class](https://emotiv.gitbook.io/cortex-library-for-mobile/java-api/cortexclient-class) Last updated 4 years ago --- # Forgot password | EMOTIV App If you cannot remember your password, click on “Forgot Password” under the login fields to reset your password and follow the instructions provided. ![](https://emotiv.gitbook.io/cortex-manual/~gitbook/image?url=https%3A%2F%2F3658799575-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LIeRq0fZhMtAZpE7gS_%252F-LejE7wkHv2PL7NFKobP%252F-LejEhTh5aqws1N0O5Y7%252Fimage.png%3Falt%3Dmedia%26token%3D5ee879e4-dff9-4f0c-a3a6-0eba633141a9&width=768&dpr=4&quality=100&sign=1c1e55cc&sv=2) [PreviousCreate an account](https://emotiv.gitbook.io/cortex-manual/getting_started/create_an_account) [NextSettings](https://emotiv.gitbook.io/cortex-manual/settings) Last updated 6 years ago --- # Licenses | EMOTIV App All licenses associated with your EmotivID will be displayed in the Account tab. To refresh the license list, click on the refresh ![](https://emotiv.gitbook.io/cortex-manual/~gitbook/image?url=https%3A%2F%2F3658799575-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LIeRq0fZhMtAZpE7gS_%252F-LIeRuULRxdpY8tb_g8D%252F-LIeS-bqut8UBt_JDq4c%252Frefresh-icon-inversed.png%3Fgeneration%3D1532941831223042%26alt%3Dmedia&width=300&dpr=4&quality=100&sign=b53e8d48&sv=2) icon located in the top right corner of the Account screen. [Paid licenses](https://www.emotiv.com/developer/) display information about the number of seats and subsequent payment dates associated with the license. To manage your subscription settings (such as to change the number of seats on your license), click on the “Manage subscription” button on the Account screen and follow instructions on our website. For information about the various licensing options available for EMOTIV, please click on the 'View Licensing Options' link at the bottom. [PreviousAccount screen](https://emotiv.gitbook.io/cortex-manual/account_screen) [NextApps screen](https://emotiv.gitbook.io/cortex-manual/apps-screen) Last updated 6 years ago --- # EmotivLibraryLoader class | Cortex Library for Mobile Copy import com.emotiv.EmotivLibraryLoader; Use the EmotivLibraryLoader to load the Cortex library and all its dependencies. [](https://emotiv.gitbook.io/cortex-library-for-mobile/java-api/emotivlibraryloader-class#constructor) Constructor ----------------------------------------------------------------------------------------------------------------------- Copy public EmotivLibraryLoader(Application applicationContext) The argument must be an object of type [android.app.Application](https://developer.android.com/reference/android/app/Application) [](https://emotiv.gitbook.io/cortex-library-for-mobile/java-api/emotivlibraryloader-class#load) load --------------------------------------------------------------------------------------------------------- Copy public void load() This function loads the Cortex library and all its dependencies. You must call it exactly on time. You must call it before calling any function of [CortexLib](https://emotiv.gitbook.io/cortex-library-for-mobile/java-api/cortexlib-class) or [CortexClient](https://emotiv.gitbook.io/cortex-library-for-mobile/java-api/cortexclient-class) . [PreviousJava API for Android](https://emotiv.gitbook.io/cortex-library-for-mobile/java-api) [NextCortexLib class](https://emotiv.gitbook.io/cortex-library-for-mobile/java-api/cortexlib-class) Last updated 4 years ago --- # v2.3 | EMOTIV App ### [](https://emotiv.gitbook.io/cortex-manual/release-notes/v2.3#enhancements-and-features) Features and Enhancements * EMOTIV App v2.3 now supports EMOTIV Extender for enhanced marking, extending battery life and adding increased mobility to EMOTIV headsets * v2.3 has added features and functionalities in the Tools section of the App to be able to quickly and easily upgrade firmwares for EMOTIV headsets and Extenders * EMOTIV Appv2.3 now includes download links PRO Lite, our lifetime free version of EmotivPRO [Previousv 2.2.1](https://emotiv.gitbook.io/cortex-manual/release-notes/v-2.2.1) [Nextv2.4.1](https://emotiv.gitbook.io/cortex-manual/release-notes/v2.4.1) Last updated 5 years ago --- # Virtual Brainwear ® Detections | EMOTIV App Under Detections, you can set the output of available detections. Only detections available and supported by the physical headset are available for your virtual device. **Performance metrics detections** To set the performance metric output, click on the '**isActive**' checkbox and move the slider to your desired output. Changes to the data stream happen in real-time. ![](https://emotiv.gitbook.io/cortex-manual/~gitbook/image?url=https%3A%2F%2Flh4.googleusercontent.com%2FY9hAT6AutIvsMAh9KqPInxBZhK8Quzx6kGMQfucvJZgfWAkhf8Kq9L9BySFaDzaVEu_QqnQPykGNwhTu2jGBerAqpBjIvUnu2y7ncb27bv1x6gRB9GTTzMxxDO-18iQ1DJqaJStZ&width=768&dpr=4&quality=100&sign=20555ee6&sv=2) [PreviousVirtual Brainwear ® Simulation](https://emotiv.gitbook.io/cortex-manual/virtual-brainwear-r/virtual-brainwear-r-simulation) [NextAccount screen](https://emotiv.gitbook.io/cortex-manual/account_screen) Last updated 3 years ago --- # v2.6.1 | EMOTIV App ### [](https://emotiv.gitbook.io/cortex-manual/release-notes/v2.6.1#enhancements-and-features) Features and Enhancements * EMOTIV App now supports the ICQ mode. This mode overrides contact quality thresholds and lets a user demo applications without affecting the data streams. ### [](https://emotiv.gitbook.io/cortex-manual/release-notes/v2.6.1#enhancements-and-features-1) Bug fixes * Performance enhancement and some minor bug fixes. [Previousv 2.6](https://emotiv.gitbook.io/cortex-manual/release-notes/v-2.6) [Nextv2.6.2](https://emotiv.gitbook.io/cortex-manual/release-notes/v2.6.2) Last updated 4 years ago --- # Logging in | EMOTIV App When you open the EMOTIV App, you will be asked to enter your Emotiv ID and password. Please enter your details that were used when purchasing your EmotivPRO/EmotivBCI/BCI API license in the indicated fields on the EMOTIV App. Alternatively, you can log in using your Facebook account. This needs to be the same Facebook account that was used when purchasing your EmotivPRO/EmotivBCI software license. _Note: You need to be online the first time you login to EMOTIV App so that the application can confirm your subscription._ ![](https://emotiv.gitbook.io/cortex-manual/~gitbook/image?url=https%3A%2F%2F3658799575-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LIeRq0fZhMtAZpE7gS_%252F-LejE7wkHv2PL7NFKobP%252F-LejEhTh5aqws1N0O5Y7%252Fimage.png%3Falt%3Dmedia%26token%3D5ee879e4-dff9-4f0c-a3a6-0eba633141a9&width=768&dpr=4&quality=100&sign=1c1e55cc&sv=2) [PreviousRunning the app](https://emotiv.gitbook.io/cortex-manual/getting_started/running_the_app) [NextCreate an account](https://emotiv.gitbook.io/cortex-manual/getting_started/create_an_account) Last updated 6 years ago --- # Virtual Brainwear® device statuses and configuration | EMOTIV App Your virtual device has the same status information as a physical hardware device — you can see the device name, contact quality and battery meter on the connected device. The major difference to your physical device is that you can configure these to a desired state with virtual device configuration. To configure your virtual device, click on the More icon next to your virtual device, then select Configurationfrom the dropdown list. Configuration options are available on all device states —- created, powered on/off, connected/disconnected. To help you quickly and efficiently prototype during your application development, we have includeda number of common configurations that can be set-up in the configuration dialog of your virtual device. Available configurations can differ depending on which virtual device you are emulating. [PreviousConnecting and disconnecting your Virtual Brainwear® device](https://emotiv.gitbook.io/cortex-manual/virtual-brainwear-r/connecting-and-disconnecting-your-virtual-brainwear-r-device) [NextConfiguring a Virtual Brainwear ®](https://emotiv.gitbook.io/cortex-manual/virtual-brainwear-r/configuring-a-virtual-brainwear-r) Last updated 4 years ago --- # Settings | EMOTIV App Click on the ![](https://emotiv.gitbook.io/cortex-manual/~gitbook/image?url=https%3A%2F%2F3658799575-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LIeRq0fZhMtAZpE7gS_%252F-LIeRuULRxdpY8tb_g8D%252F-LIeS-VCwBo79kcfdjnL%252Fsettings-icon-dark-gray.png%3Fgeneration%3D1532941840856016%26alt%3Dmedia&width=300&dpr=4&quality=100&sign=1d74e322&sv=2) icon in the top right corner of the applet to show the options menu which includes access to the EMOTIV App user manual, a link to update the EMOTIV suite of applications, log out of all applications and quit/ end the EMOTIV app session. ![](https://emotiv.gitbook.io/cortex-manual/~gitbook/image?url=https%3A%2F%2F3658799575-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LIeRq0fZhMtAZpE7gS_%252F-MKfVtAVfdvh-68rNOfR%252F-MKfWA8VW_JEAtve56Br%252FScreen%2520Shot%25202020-10-27%2520at%252012.23.46%2520PM.png%3Falt%3Dmedia%26token%3D985e84d1-ad0a-48ad-9885-b9cea57ee10b&width=768&dpr=4&quality=100&sign=5a50c63c&sv=2) [PreviousForgot password](https://emotiv.gitbook.io/cortex-manual/getting_started/forgot_password) [NextAbout EMOTIV App](https://emotiv.gitbook.io/cortex-manual/settings/about-emotiv-app) Last updated 4 years ago --- # Getting Started | Cortex Library for Mobile This documentation contains guidance for developing mobile applications with the EMOTIV Cortex library. The Cortex library is only available upon request to the [EMOTIV customer service](https://www.emotiv.com/contact-support/) . [](https://emotiv.gitbook.io/cortex-library-for-mobile#the-cortex-library-and-the-cortex-json-api) The Cortex library and the Cortex JSON API -------------------------------------------------------------------------------------------------------------------------------------------------- The Cortex library uses the same JSON API as the Cortex service on desktop. This JSON API is documented in the [Cortex API documentation](https://emotiv.gitbook.io/cortex-api/) . On desktop, you send JSON messages to the Cortex service via a WebSocket connection. In the Cortex library, you also send JSON messages, but you use a native API (in [Objective-C](https://emotiv.gitbook.io/cortex-library-for-mobile/objective-c-api) or [Java](https://emotiv.gitbook.io/cortex-library-for-mobile/java-api) ) instead of a WebSocket connection. The Cortex library also provides some additional JSON methods that are not available when you connect to the Cortex API using a WebSocket. So this documentation is divided in 3 parts: * the [Objective-C API](https://emotiv.gitbook.io/cortex-library-for-mobile/objective-c-api) for iOS developers * the [Java API](https://emotiv.gitbook.io/cortex-library-for-mobile/java-api) for Android developers * the [Additional JSON methods](https://emotiv.gitbook.io/cortex-library-for-mobile/jsonapi) for all developers If you are not familiar with the Cortex JSON API, then please read the Cortex API documentation: [https://emotiv.gitbook.io/cortex-api/emotiv.gitbook.io](https://emotiv.gitbook.io/cortex-api/) [](https://emotiv.gitbook.io/cortex-library-for-mobile#supported-platforms) Supported Platforms ---------------------------------------------------------------------------------------------------- The EMOTIV Cortex library is available on iOS and Android. ### [](https://emotiv.gitbook.io/cortex-library-for-mobile#ios) iOS On iOS, the library is provided as a XCFramework. It contains the binaries for iOS devices and the iOS simulator. It targets iOS 12. The library is currently in Beta. To include the Cortex library XCFramework to your iOS application, please follow this [guide](https://developer.apple.com/library/archive/documentation/MacOSX/Conceptual/BPFrameworks/Tasks/IncludingFrameworks.html) from Apple. The file `Info.plist` of your iOS application must contain the keys `NSBluetoothAlwaysUsageDescription` and `NSBluetoothPeripheralUsageDescription`. Example: Copy NSBluetoothAlwaysUsageDescription This application uses Bluetooth to find, connect and transfer data from EMOTIV headsets NSBluetoothPeripheralUsageDescription Connect EMOTIV headsets via Bluetooth ### [](https://emotiv.gitbook.io/cortex-library-for-mobile#android) Android On Android, the library is build for armeabi-v7a and arm64-v8a. It supports Android 7.0 (API level 24) or above. The library is currently in Beta. In order to use the Cortex library, the manifest file of your Android application must include these permissions: Copy Your Android application must ask the user to grant these permissions: * Manifest.permission.ACCESS\_COARSE\_LOCATION * Manifest.permission.WRITE\_EXTERNAL\_STORAGE ### [](https://emotiv.gitbook.io/cortex-library-for-mobile#issue-with-the-ios-keychain-and-the-emotiv-license-system) Issue with the iOS keychain and the EMOTIV license system Cortex library on iOS has a method to identify a iOS device, and store this information in the iOS keychain. This is to count how many iOS devices are using the same license. If you use different vendor id in your iOS applications, then, when an end-user installs your applications on a single iOS device, the EMOTIV license system will believe that the license is used on 2 devices instead of 1. This will be a problem for the user, because they will be able to use their license on less devices that what they actually paid for. For example, suppose you develop 2 iOS applications, and they use the bundle identifiers **com.company.app1** and **com.company123.app2.** They also use same license "abcd". A user installs both of them on the same iOS device. The expectation is that only one iOS device is registered with the license "abcd". But actually 2 devices have been registered. **To avoid this issue, EMOTIV recommends that you use the same** [**keychain access group**](https://developer.apple.com/documentation/security/keychain_services/keychain_items/sharing_access_to_keychain_items_among_a_collection_of_apps?language=objc) **for all your Cortex applications.** [](https://emotiv.gitbook.io/cortex-library-for-mobile#supported-headsets) Supported Headsets -------------------------------------------------------------------------------------------------- The Cortex library supports the following headsets: Model Firmware Connection [EPOC+](https://www.emotiv.com/epoc/) All BTLE 4.0 [EPOC X](https://www.emotiv.com/epoc-x/) All BTLE 4.0 Bluetooth® 5.0 will be available with upcoming software and firmware updates [EPOC Flex](https://www.emotiv.com/epoc-flex/) All BTLE 4.0 [Insight](https://www.emotiv.com/insight/) All BTLE 4.0 [MN8](https://www.emotiv.com/workplace-wellness-safety-and-productivity-mn8/) All BTLE 4.0 The Cortex library can connect to EMOTIV headsets via Bluetooth only. The EMOTIV USB dongle is not supported. [](https://emotiv.gitbook.io/cortex-library-for-mobile#the-cortex-library-examples) The Cortex Library Examples -------------------------------------------------------------------------------------------------------------------- To help you getting started with your application, EMOTIV provides basic example applications for both iOS and Android. There are open source and hosted by Github at [https://github.com/Emotiv/cortex-embedded-mobile-lib-example](https://github.com/Emotiv/cortex-embedded-mobile-lib-example) [NextObjective-C API for iOS](https://emotiv.gitbook.io/cortex-library-for-mobile/objective-c-api) Last updated 4 years ago --- # v2.4.1 | EMOTIV App ### [](https://emotiv.gitbook.io/cortex-manual/release-notes/v2.4.1#enhancements-and-features) Features and Enhancements EMOTIV App now supports EPOC X, EMOTIV's tenth anniversary edition of EPOC [Previousv2.3](https://emotiv.gitbook.io/cortex-manual/release-notes/v2.3) [Nextv2.5](https://emotiv.gitbook.io/cortex-manual/release-notes/v2.5) Last updated 5 years ago --- # Running the app | EMOTIV App Once successfully installed, you can run EMOTIV app from the installation folder. When the App is running, you should be able to see ![](https://emotiv.gitbook.io/cortex-manual/~gitbook/image?url=https%3A%2F%2F3658799575-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LIeRq0fZhMtAZpE7gS_%252F-LIeRuULRxdpY8tb_g8D%252F-LIeS-MKTjqo3UzcNWPC%252Factive.jpg%3Fgeneration%3D1532941836393344%26alt%3Dmedia&width=300&dpr=4&quality=100&sign=a539fdc3&sv=2) icon in the OS system tray. Double click on the icon to open and use the EMOTIV app **Windows:** ![](https://emotiv.gitbook.io/cortex-manual/~gitbook/image?url=https%3A%2F%2F3658799575-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LIeRq0fZhMtAZpE7gS_%252F-LIeRuULRxdpY8tb_g8D%252F-LIeS-MMhgn3PmfrpjLn%252FArtboard%2520Copy.jpg%3Fgeneration%3D1532941836386710%26alt%3Dmedia&width=768&dpr=4&quality=100&sign=4492ae85&sv=2) **Mac:** ![](https://emotiv.gitbook.io/cortex-manual/~gitbook/image?url=https%3A%2F%2F3658799575-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LIeRq0fZhMtAZpE7gS_%252F-LIeRuULRxdpY8tb_g8D%252F-LIeS-MOrn7YrSwNzjJB%252FArtboard.jpg%3Fgeneration%3D1532941836386672%26alt%3Dmedia&width=768&dpr=4&quality=100&sign=a5a55c31&sv=2) [PreviousInstallation](https://emotiv.gitbook.io/cortex-manual/getting_started/installation) [NextLogging in](https://emotiv.gitbook.io/cortex-manual/getting_started/logging_in) Last updated 6 years ago --- # Additional JSON methods | Cortex Library for Mobile The Cortex library uses the same JSON API as the Cortex service on desktop. This JSON API is described in the Cortex API documentation. [https://emotiv.gitbook.io/cortex-api/emotiv.gitbook.io](https://emotiv.gitbook.io/cortex-api/) The Cortex library also provides some additional API methods. * [loginWithAuthenticationCode](https://emotiv.gitbook.io/cortex-library-for-mobile/jsonapi/loginwithauthenticationcode) * [logout](https://emotiv.gitbook.io/cortex-library-for-mobile/jsonapi/logout) * [acceptLicense](https://emotiv.gitbook.io/cortex-library-for-mobile/jsonapi/accept-license) * [queryVirtualHeadsets](https://emotiv.gitbook.io/cortex-library-for-mobile/jsonapi/queryvirtualheadsets) * [createVirtualHeadset](https://emotiv.gitbook.io/cortex-library-for-mobile/jsonapi/createvirtualheadset) * [deleteVirtualHeadset](https://emotiv.gitbook.io/cortex-library-for-mobile/jsonapi/deletevirtualheadset) * [updateVirtualHeadset](https://emotiv.gitbook.io/cortex-library-for-mobile/jsonapi/updatevirtualheadset) * [triggerVirtualHeadsetEvent](https://emotiv.gitbook.io/cortex-library-for-mobile/jsonapi/triggervirtualheadsetevent) * [freeUpRecords](https://emotiv.gitbook.io/cortex-library-for-mobile/jsonapi/freeuprecords) [PreviousCortexClient class](https://emotiv.gitbook.io/cortex-library-for-mobile/java-api/cortexclient-class) [NextloginWithAuthenticationCode](https://emotiv.gitbook.io/cortex-library-for-mobile/jsonapi/loginwithauthenticationcode) Last updated 1 month ago --- # v2.7 | EMOTIV App ### [](https://emotiv.gitbook.io/cortex-manual/release-notes/v2.7#enhancements-and-features) Enhancements and features * EMOTIV App now includes a link to our latest product OMNI betabetabeta - a neuroscience research building platform. * OMNI allows you to design and build your own neuroscience, psychology, or even marketing experiments and deploy the experiment locally or remotely using a unique URL [Previousv 2.6.3](https://emotiv.gitbook.io/cortex-manual/release-notes/v-2.6.3) [Nextv2.7.2](https://emotiv.gitbook.io/cortex-manual/release-notes/v2.7.2) Last updated 4 years ago --- # v 2.6 | EMOTIV App ### [](https://emotiv.gitbook.io/cortex-manual/release-notes/v-2.6#enhancements-and-features) Features and Enhancements * Added support for EMOTIV's Virtual Brainwear® for EPOCX, Insight, and MN8 * Application upgrade enhancements. [Previousv2.5](https://emotiv.gitbook.io/cortex-manual/release-notes/v2.5) [Nextv2.6.1](https://emotiv.gitbook.io/cortex-manual/release-notes/v2.6.1) Last updated 4 years ago --- # v2.6.2 | EMOTIV App ### [](https://emotiv.gitbook.io/cortex-manual/release-notes/v2.6.2#enhancements-and-features) Enhancements and features * Bluetooth support added for MacOS 11 for all EMOTIV Brainwear® [Previousv2.6.1](https://emotiv.gitbook.io/cortex-manual/release-notes/v2.6.1) [Nextv 2.6.3](https://emotiv.gitbook.io/cortex-manual/release-notes/v-2.6.3) Last updated 4 years ago --- # Closing the app | EMOTIV App 1. Click on the ![](https://emotiv.gitbook.io/cortex-manual/~gitbook/image?url=https%3A%2F%2F3658799575-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LIeRq0fZhMtAZpE7gS_%252F-LIeRuULRxdpY8tb_g8D%252F-LIeS-VCwBo79kcfdjnL%252Fsettings-icon-dark-gray.png%3Fgeneration%3D1532941840856016%26alt%3Dmedia&width=300&dpr=4&quality=100&sign=1d74e322&sv=2) icon in the top right corner of the applet to show the options menu 2. Click on “Quit” [PreviousLogging out](https://emotiv.gitbook.io/cortex-manual/settings/logging_out) [NextSetting up your EEG device](https://emotiv.gitbook.io/cortex-manual/setting_up_your_eeg_device) Last updated 6 years ago --- # Virtual Brainwear ® Simulation | EMOTIV App Simulation allows you to switch between different device simulation modes. There are two options available - Interactive simulation and Sample Data Stream. **Interactive simulation** Select this option if you would like to manually adjust the device settings under Contact Quality or Detections. **Sample Data Stream** Select this option if you would like the virtual device to stream pre-recorded data from the list of available files. Once selected, select one of the available samples from the Pre-Recorded Sample dropdown list. ![](https://emotiv.gitbook.io/cortex-manual/~gitbook/image?url=https%3A%2F%2Flh6.googleusercontent.com%2FrsF2CcxFTQbwgVuGzIcq6ySJawJZj1NUyvSvRFhp1wy2pggHlIDlHDSGLK7kY9KEEvX96gQS4Lh55DXzKA6tByqUZwQIgfzLtl8wNPzXoPfoj472OFTjqiJyWcJMCRN6lz0st4WA&width=768&dpr=4&quality=100&sign=7c3b1351&sv=2) [PreviousContact quality for Virtual Brainwear ®](https://emotiv.gitbook.io/cortex-manual/virtual-brainwear-r/contact-quality-for-virtual-brainwear-r) [NextVirtual Brainwear ® Detections](https://emotiv.gitbook.io/cortex-manual/virtual-brainwear-r/virtual-brainwear-r-detections) Last updated 4 years ago --- # v2.7.2 | EMOTIV App ### [](https://emotiv.gitbook.io/cortex-manual/release-notes/v2.7.2#enhancements-and-features) Enhancements and features * You can now give a custom name to a headset (local only). * More details to be shown in license view such as total permitted devices and activated ones. [Previousv2.7](https://emotiv.gitbook.io/cortex-manual/release-notes/v2.7) [Nextv2.7.3](https://emotiv.gitbook.io/cortex-manual/release-notes/v2.7.3) Last updated 4 years ago --- # v 2.2.1 | EMOTIV App ### [](https://emotiv.gitbook.io/cortex-manual/release-notes/v-2.2.1#enhancements-and-features) Bug fixes * Emotiv App 2.2.1 fixes some known issues with Cortex service performance issues [PreviousRelease Notes](https://emotiv.gitbook.io/cortex-manual/release-notes) [Nextv2.3](https://emotiv.gitbook.io/cortex-manual/release-notes/v2.3) Last updated 5 years ago --- # Connecting your headset | EMOTIV App Before you connect your headset to EMOTIV App, make sure your device’s battery is charged. [](https://emotiv.gitbook.io/cortex-manual/setting_up_your_eeg_device/connecting_your_headset#bluetooth-connection) Bluetooth connection --------------------------------------------------------------------------------------------------------------------------------------------- To connect the application with your device using Bluetooth (BTLE 4.0) on Mac OS: 1. Turn on Bluetooth on MacOS ![](https://emotiv.gitbook.io/cortex-manual/~gitbook/image?url=https%3A%2F%2F3658799575-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LIeRq0fZhMtAZpE7gS_%252F-LIeRuULRxdpY8tb_g8D%252F-LIeS-lCzXqPfiKCzELA%252FScreen%2520Shot%25202018-04-05%2520at%252011.03.58%2520AM.png%3Fgeneration%3D1532941840890365%26alt%3Dmedia&width=300&dpr=4&quality=100&sign=6347227b&sv=2) 2. Turn on your headset. 3. Open EMOTIV App and access the device list in the Devices tab 4. You will see a headset appear in the device list. If you do not see a device listed, click on the refresh button. 5. Click on “Connect” next to the device you want to use to connect your device. If more than one device is available, click on the device you wish to connect to. To connect the software with you device using Bluetooth (BTLE 4.0) on Windows: 1. Open setting for “Bluetooth and other devices” ![](https://emotiv.gitbook.io/cortex-manual/~gitbook/image?url=https%3A%2F%2F3658799575-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LIeRq0fZhMtAZpE7gS_%252F-LIeRuULRxdpY8tb_g8D%252F-LIeS-lEVeVxbJEM4ROU%252FScreen%2520Shot%25202018-04-05%2520at%252011.04.06%2520AM.png%3Fgeneration%3D1532941831833801%26alt%3Dmedia&width=300&dpr=4&quality=100&sign=fd882668&sv=2) 2. Turn on your headset 3. Turn on Bluetooth and click to “Add Bluetooth or other device” ![](https://emotiv.gitbook.io/cortex-manual/~gitbook/image?url=https%3A%2F%2F3658799575-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LIeRq0fZhMtAZpE7gS_%252F-LIeRuULRxdpY8tb_g8D%252F-LIeS-lGc3BCfa1xf4zZ%252FScreen%2520Shot%25202018-04-05%2520at%252011.43.59%2520AM.png%3Fgeneration%3D1532941831828548%26alt%3Dmedia&width=300&dpr=4&quality=100&sign=4d562de5&sv=2) 4. Device should appear on the list of available devices and connect ![](https://emotiv.gitbook.io/cortex-manual/~gitbook/image?url=https%3A%2F%2F3658799575-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LIeRq0fZhMtAZpE7gS_%252F-LIeRuULRxdpY8tb_g8D%252F-LIeS-lIpd-Lvwa1F3K4%252FScreen%2520Shot%25202018-04-05%2520at%252011.44.22%2520AM.png%3Fgeneration%3D1532941841437580%26alt%3Dmedia&width=300&dpr=4&quality=100&sign=436626&sv=2) 5. Open EMOTIV App and access the device list in the Devices tab 6. You will see a headset appear in the device list. If you do not see a device listed, click on the refresh button. 7. Click on “Connect” next to the device you want to use to connect your device. If more than one device is available, click on the device you wish to connect to. _Note: If you are experiencing trouble connecting your headset via Bluetooth and have other Bluetooth devices connected to your machine (e.g. a keyboard or mouse), we recommend that you disconnect your other devices and then try connecting your headset again._ [](https://emotiv.gitbook.io/cortex-manual/setting_up_your_eeg_device/connecting_your_headset#usb-dongle-connection) USB dongle connection ----------------------------------------------------------------------------------------------------------------------------------------------- To connect the application with your device using one of our [USB receiver](https://www.emotiv.com/product/emotiv-usb-receiver-universal-model/) (recommended if you are in an environment with high levels of Bluetooth interference): 1. Plug in the USB receiver to your computer’s USB port 2. Turn on your headset. 3. Open EMOTIV App and access the device list in the Devices tab 4. Click on “Connect” next to the device you want to use to connect your device. If more than one device is available, click on the device you wish to connect to. [PreviousDevices screen](https://emotiv.gitbook.io/cortex-manual/setting_up_your_eeg_device/devices_screen) [NextConnected headset](https://emotiv.gitbook.io/cortex-manual/setting_up_your_eeg_device/connected_headset) Last updated 6 years ago --- # Logging out | EMOTIV App 1. Click on the ![](https://emotiv.gitbook.io/cortex-manual/~gitbook/image?url=https%3A%2F%2F3658799575-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LIeRq0fZhMtAZpE7gS_%252F-LIeRuULRxdpY8tb_g8D%252F-LIeS-VCwBo79kcfdjnL%252Fsettings-icon-dark-gray.png%3Fgeneration%3D1532941840856016%26alt%3Dmedia&width=300&dpr=4&quality=100&sign=1d74e322&sv=2) icon in the top right corner of the applet to show the options menu 2. Click on “Log out” 3. Note: This will log you out of all EMOTIV applications that you are currently signed into [PreviousEMOTIV Setup Wizard](https://emotiv.gitbook.io/cortex-manual/settings/update-apps/emotiv-setup-wizard) [NextClosing the app](https://emotiv.gitbook.io/cortex-manual/settings/closing_the_app) Last updated 6 years ago --- # System requirements | EMOTIV App Learn more about [the system requirements for the EMOTIV App](https://app.gitbook.com/@emotiv/s/system-requirements/emotivapp) . [PreviousGetting started](https://emotiv.gitbook.io/cortex-manual/getting_started) [NextInstallation](https://emotiv.gitbook.io/cortex-manual/getting_started/installation) Last updated 4 years ago --- # EMOTIV Setup Wizard | EMOTIV App The Emotiv Maintenance tool or setup wizard allows you to: 1. Add or remove components (Add or remove applications) 2. Update components (Upgrade to latest version) 3. Remove all components (Uninstall) This displays all available EMOTIV Applications and lets you select and add/upgrade all or individual applications as needed. You can deselect applications that you wish to uninstall or not upgrade to the latest version. Please note: The option to 'Remove all components' displays a warning requesting the user to close all EMOTIV applications. This option will uninstall ALL EMOTIV Applications on your computer ![](https://emotiv.gitbook.io/cortex-manual/~gitbook/image?url=https%3A%2F%2F3658799575-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LIeRq0fZhMtAZpE7gS_%252F-LejG5DGw-tJo15nT5IH%252F-LejHiEny33j4IRYcMX4%252Fimage.png%3Falt%3Dmedia%26token%3Df3799bad-2568-43b8-aac6-bca0bd0acdb2&width=768&dpr=4&quality=100&sign=ef4bc810&sv=2) [PreviousUpdate Apps](https://emotiv.gitbook.io/cortex-manual/settings/update-apps) [NextLogging out](https://emotiv.gitbook.io/cortex-manual/settings/logging_out) Last updated 6 years ago --- # View device fitting instructions | EMOTIV App To view device fitting instructions 1. Click on the ![](https://emotiv.gitbook.io/cortex-manual/~gitbook/image?url=https%3A%2F%2F3658799575-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LIeRq0fZhMtAZpE7gS_%252F-LIeRuULRxdpY8tb_g8D%252F-LIeS-o2Hdu08DNJQnrE%252FIcon%252024px.jpg%3Fgeneration%3D1532941853198636%26alt%3Dmedia&width=300&dpr=4&quality=100&sign=7e942fda&sv=2) icon on the connected headset panel 2. Select “Device fitting” from the dropdown menu ![](https://emotiv.gitbook.io/cortex-manual/~gitbook/image?url=https%3A%2F%2F3658799575-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LIeRq0fZhMtAZpE7gS_%252F-LejG5DGw-tJo15nT5IH%252F-LejxUs7fsgADhhAHmEQ%252Fimage.png%3Falt%3Dmedia%26token%3Deea4f44a-c539-49ad-921f-c09911f0d090&width=768&dpr=4&quality=100&sign=5497510d&sv=2) [PreviousEPOC+ and EPOC X configurations](https://emotiv.gitbook.io/cortex-manual/setting_up_your_eeg_device/epoc+-and-epocx-configurations) [NextVirtual Brainwear®](https://emotiv.gitbook.io/cortex-manual/virtual-brainwear-r) Last updated 6 years ago --- # v2.7.3 | EMOTIV App ### [](https://emotiv.gitbook.io/cortex-manual/release-notes/v2.7.3#enhancements-and-features) Bug fixes * Fixed launch issue on Ubuntu. [Previousv2.7.2](https://emotiv.gitbook.io/cortex-manual/release-notes/v2.7.2) Last updated 3 years ago --- # View contact quality map | EMOTIV App To view the contact quality map and adjust individual sensors to maximize your overall data quality 1. Click on the ![](https://emotiv.gitbook.io/cortex-manual/~gitbook/image?url=https%3A%2F%2F3658799575-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LIeRq0fZhMtAZpE7gS_%252F-LIeRuULRxdpY8tb_g8D%252F-LIeS-o2Hdu08DNJQnrE%252FIcon%252024px.jpg%3Fgeneration%3D1532941853198636%26alt%3Dmedia&width=300&dpr=4&quality=100&sign=7e942fda&sv=2) icon on the connected headset panel 2. Select “Contact quality” form the drop down menu ![](https://emotiv.gitbook.io/cortex-manual/~gitbook/image?url=https%3A%2F%2F3658799575-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LIeRq0fZhMtAZpE7gS_%252F-LejG5DGw-tJo15nT5IH%252F-Lejx5FSJR0T-HbiUUxc%252Fimage.png%3Falt%3Dmedia%26token%3D628cf61c-bc9b-4eae-8758-e95d3202c543&width=768&dpr=4&quality=100&sign=10d1cf55&sv=2) If you are having trouble getting a good contact quality check out our hardware user manuals for troubleshooting contact quality on [EPOC+](https://emotiv.gitbooks.io/epoc-user-manual/content/troubleshooting/contact_quality.html) & [Insight](https://app.gitbook.com/@emotiv/s/insight-manual/) . Accurate data collection depends on many things. We have recently changed the way we show you the quality of your signal. Read about it [here.](https://emotiv.gitbook.io/cortex-manual/setting_up_your_eeg_device/view_contact_quality_map/contact-quality-cq-vs.-eeg-quality-eq) [PreviousDisconnecting your headset](https://emotiv.gitbook.io/cortex-manual/setting_up_your_eeg_device/disconnecting_your_headset) [NextContact Quality (CQ) vs. EEG Quality (EQ)](https://emotiv.gitbook.io/cortex-manual/setting_up_your_eeg_device/view_contact_quality_map/contact-quality-cq-vs.-eeg-quality-eq) Last updated 4 years ago --- # Getting started | EMOTIV App Please click on the submenus on the left to learn about how to get started with EMOTIV App [PreviousEMOTIV App](https://emotiv.gitbook.io/cortex-manual) [NextSystem requirements](https://emotiv.gitbook.io/cortex-manual/getting_started/system_requirements) Last updated 6 years ago --- # Installation | EMOTIV App EMOTIV App is our single, centralized installer to download all EMOTIV applications. You can choose to download our entire application suite or select the application you wish to install. Please note that Cortex service is essential for both EmotivPRO and EmotivBCI to operate successfully. You can create a new account or manage your passwords using the EMOTIV App. **To install EMOTIV App on Windows:** 1. Use the computer that you want to install the EMOTIV App on 2. Login at www.emotiv.com 3. Go to the “MyAccount” page at [www.emotiv.com/my-account/](https://emotiv.gitbook.io/cortex-manual/getting_started/www.emotiv.com/my-account) 4. Click on “Downloads” in the menu 5. Find **Emotiv-Installer-Win** in the list of available downloads and click on “Download” next to the listing If you do not see the Emotiv Installer download available on your Account page, go to [www.emotiv.com/emotiv-pro/](http://www.emotiv.com/emotiv-pro/) or [https://www.emotiv.com/product/emotiv-bci/](https://www.emotiv.com/product/emotiv-bci/) and purchase a license. Alternatively, you can apply for the free BCI SDK access at [https://www.emotiv.com/developer/](https://www.emotiv.com/developer/) 1. Open downloaded Emotiv-Installer-Win-x64.exe 2. Install to the default C:\\Program Files (x86) or specify the path where you would like to install Emotiv applications. Click Continue. 3. Select the Applications you want to install. 4. Accept the User License Agreement and click Continue 5. Wait for the installer to download required files and install them 6. Click close to exit the installer. **To install EMOTIV App on Mac:** 1. Use the computer that you want to install the EMOTIV App on 2. Login at www.emotiv.com 3. Go to the “MyAccount” page at [www.emotiv.com/my-account/](https://emotiv.gitbook.io/cortex-manual/getting_started/www.emotiv.com/my-account) 4. Click on “Downloads” in the menu 5. Find **Emotiv-Installer-Mac** in the list of available downloads and click on “Download” next to the listing If you do not see the Emotiv Installer download available on your Account page, go to [www.emotiv.com/emotiv-pro/](http://www.emotiv.com/emotiv-pro/) or [https://www.emotiv.com/product/emotiv-bci/](https://www.emotiv.com/product/emotiv-bci/) and purchase a license. Alternatively, you can apply for the free BCI SDK access at [https://www.emotiv.com/developer/](https://www.emotiv.com/developer/) 1. Open the downloaded Emotiv-Installer-Mac.dmg (Note: You may need to allow installing apps from unidentified developers in order to run the installer. Please right click on the installer and select open form the right-click menu. You will then be prompted with a pop up asking for your permission to open the app, click Open.) 2. Install to the default User/Applications/EmotivApps or specify the path where you would like to install the Emotiv applications. Click Continue. 3. Select the Applications you want to install. 4. Accept the User License Agreement and click Continue 5. Wait for the installer to download required files and install them 6. Click close to exit the installer. [PreviousSystem requirements](https://emotiv.gitbook.io/cortex-manual/getting_started/system_requirements) [NextRunning the app](https://emotiv.gitbook.io/cortex-manual/getting_started/running_the_app) Last updated 5 years ago --- # Turning your virtual device ON/OFF | EMOTIV App To turn your virtual device on, click on the More icon next to the device you have created, then select Power On from the dropdown menu. This will move your virtual device to the Available Devices list. To turn your virtual device off, click on the More icon next to the device you have created, then select Power Off from the dropdown menu. This will move your virtual device to the Virtual Devices list. ![](https://emotiv.gitbook.io/cortex-manual/~gitbook/image?url=https%3A%2F%2Flh6.googleusercontent.com%2FQjZ-MVlN6WGF1B2xev0DHO2Bgqch5VoDRbZoZ6JEx6zmdhyqo0sEj60xm9LLRyqOGnrTvPrW4OOR3L567kaP8tS7BLVZb3zm9NIRYj4nj6SvP6PsnOdkHu9fivRHOPra-1CKJjvm&width=768&dpr=4&quality=100&sign=3506d70a&sv=2) [PreviousCreating a new virtual device](https://emotiv.gitbook.io/cortex-manual/virtual-brainwear-r/creating-a-new-virtual-device) [NextConnecting and disconnecting your Virtual Brainwear® device](https://emotiv.gitbook.io/cortex-manual/virtual-brainwear-r/connecting-and-disconnecting-your-virtual-brainwear-r-device) Last updated 4 years ago --- # CortexClientDelegate protocol | Cortex Library for Mobile Copy #import Copy @protocol CortexClientDelegate @required - (void)authenticationFinished:(NSString* )authenticationCode withError:(NSError*)error; - (void)processResponse:(NSString*)responseMessage; @end Your application must implement this protocol and use it as a delegate for the class [CortexClient](https://emotiv.gitbook.io/cortex-library-for-mobile/objective-c-api/cortexclient-class) . ### [](https://emotiv.gitbook.io/cortex-library-for-mobile/objective-c-api/cortexclientdelegate-protocol#authenticationfinished) authenticationFinished Copy - (void)authenticationFinished:(NSString* )authenticationCode withError:(NSError*)error; The Cortex Library calls **authenticationFinished** after you called the function [authenticate](https://emotiv.gitbook.io/cortex-library-for-mobile/objective-c-api/cortexclient-class#authenticate) . If there is no error, then the parameter **authenticationCode** contains a code that you can use to call the JSON API method [loginWithAuthenticationCode](https://emotiv.gitbook.io/cortex-library-for-mobile/jsonapi/loginwithauthenticationcode) . [](https://emotiv.gitbook.io/cortex-library-for-mobile/objective-c-api/cortexclientdelegate-protocol#processresponse) processResponse ------------------------------------------------------------------------------------------------------------------------------------------ Copy - (void)processResponse:(NSString*)responseMessage; The argument **responseMessage** is a JSON message sent by the Cortex library. [PreviousCortexClient class](https://emotiv.gitbook.io/cortex-library-for-mobile/objective-c-api/cortexclient-class) [NextJava API for Android](https://emotiv.gitbook.io/cortex-library-for-mobile/java-api) Last updated 4 years ago --- # CortexClient class | Cortex Library for Mobile Copy import com.emotiv.CortexClient; Use CortexClient to send and receive JSON messages to the Cortex library. You must [initialize](https://emotiv.gitbook.io/cortex-library-for-mobile/java-api/cortexlib-class) the Cortex library before creating an instance of CortexClient. [](https://emotiv.gitbook.io/cortex-library-for-mobile/java-api/cortexclient-class#registerresponsehandler) registerResponseHandler ---------------------------------------------------------------------------------------------------------------------------------------- Copy public void registerResponseHandler(ResponseHandler responseHandler) Set a handler to receive the JSON messages from the Cortex library. The handler is defined like this: Copy public interface ResponseHandler { public void processResponse(String responseMessage); } The argument **responseMessage** of the method **processResponse** is a JSON message sent by the Cortex library. [](https://emotiv.gitbook.io/cortex-library-for-mobile/java-api/cortexclient-class#authenticate) authenticate ------------------------------------------------------------------------------------------------------------------ Copy public void authenticate(@NonNull Activity activity, String clientId, int requestCode) This function is to help you log in into Cortex, using [OAuth 2](https://oauth.net/2/) for authentication. When you call this function, your application displays a web form from the EMOTIV web site. This form requires the user to enter their EmotivID and password. The first argument is the activity that will display the web form. It must be an object of the type [android.app.Activity](https://developer.android.com/reference/android/app/Activity) . The second argument is the client id of your Cortex application. You can find it on the [EMOTIV web site](https://www.emotiv.com/my-account/cortex-apps/) . The argument **requestCode** can take any value. Your application must get the result from the activity and then call the function **getAuthenticationCode**. This function returns an authentication code that you can then use to call the JSON API method [loginWithAuthenticationCode](https://emotiv.gitbook.io/cortex-library-for-mobile/jsonapi/loginwithauthenticationcode) . One way to get the result of the activity is to override its function **onActivityResult** like this: Copy @Override protected void onActivityResult(int requestCode, int resultCode, Intent intent) { super.onActivityResult(requestCode, resultCode, intent); String code = cortexClient.getAuthenticationCode(requestCode, intent); if (!code.isEmpty()) { cortexClient.loginWithAuthenticationCode(code); } } [](https://emotiv.gitbook.io/cortex-library-for-mobile/java-api/cortexclient-class#getauthenticationcode) getAuthenticationCode ------------------------------------------------------------------------------------------------------------------------------------ Copy public String getAuthenticationCode(int requestCode, @NonNull Intent intent) This function returns an authentication code that you can use to call the JSON API method [loginWithAuthenticationCode](https://emotiv.gitbook.io/cortex-library-for-mobile/jsonapi/loginwithauthenticationcode) . You must call this function after you called the function **authenticate** and get the result of the activity. [](https://emotiv.gitbook.io/cortex-library-for-mobile/java-api/cortexclient-class#sendrequest) sendRequest ---------------------------------------------------------------------------------------------------------------- Copy public void sendRequest(String requestMessage) Call this method to send a JSON message to the Cortex library. Cortex will respond asynchronously, using the handler you provided in the method **registerResponseHandler.** [](https://emotiv.gitbook.io/cortex-library-for-mobile/java-api/cortexclient-class#close) close ---------------------------------------------------------------------------------------------------- Copy public void close() This method closes the connection to the Cortex library and frees all the resources allocated for this object. Calling this method is optional. After you called it, you must not call any other method on this object. [PreviousCortexLib class](https://emotiv.gitbook.io/cortex-library-for-mobile/java-api/cortexlib-class) [NextAdditional JSON methods](https://emotiv.gitbook.io/cortex-library-for-mobile/jsonapi) Last updated 4 years ago ---