SDK Internet Usage
Grokker first time setup (all SDKs)

When a Grokker is attached for the very first time (a brand new Grokker that has never been used before), the SDK sends a request to the U Grok It server to get the list of regions of the world that Grokker can operate in (the first region in the list is FCC (US), IC (Canada)). This list is presented to the user. After the user chooses a region, the Grokker is configured for that region.

Request:

  https://api.ugrokit.com/firmware/regions?hardwareRevision=GROKKER_HARDWARE_REVISION&serialNumber=GROKKER_SERIAL_NUMBER

Sending the Grokker serial number can be disabled, see Sending Grokker serial number)

The response is a small JSON list of available regions.

To disable this use of the server and instead set a specific region (or choose from a list of specific regions):

iOS:
  Ugi singleton].configurationDelegate.specificRegionsForGrokkerInitialization =
      [NSArray arrayWithObjects:@"FCC (US), IC (Canada)", @"ETSI (EU)", nil];

ANDROID:
  ugi.getConfigurationDelegate().setSpecificRegionsForGrokkerInitialization(
      new String[] { "FCC (US), IC (Canada)" });

WINDOWS:
  Ugi.Singleton().ConfigurationDelegate.SpecificRegionsForGrokkerInitialization =
        new String[] { "FCC (US), IC (Canada)", "ETSI (EU)" };

CORDOVA:
  ugi.setSpecificRegionsForGrokkerInitialization(["FCC (US), IC (Canada)", "ETSI (EU)"]);

XAMARIN:
  Ugi.Singleton().SpecificRegionsForGrokkerInitialization = new string[] {"FCC (US), IC (Canada)", "ETSI (EU)"};

If you want to control if and when the Grokker firmware is updated when using your app, contact us and we can discuss options.

Grokker firmware update (all SDKs)

When the Android device connects to a Grokker, the SDK sends a request to the U Grok It server to see if there is newer firmware available. If so, another server call is made to get that firmware.

Request:

Seeing if an update is available:
  https://api.ugrokit.com/firmware/info?channel=release&serialNumber=GROKKER_SERIAL_NUMBER
Loading an update:
  https://api.ugrokit.com/firmware/update?serialNumber=GROKKER_SERIAL_NUMBER

Sending the Grokker serial number can be disabled, see Sending Grokker serial number)

The response is a small JSON list of available updates.

To disable this use of the server

iOS:
  [Ugi singleton].configurationDelegate.doAutomaticFirmwareUpdate = NO;

ANDROID:
  ugi.getConfigurationDelegate().setDoAutomaticFirmwareUpdate(false);

WINDOWS:
  Ugi.Singleton().ConfigurationDelegate.DoAutomaticFirmwareUpdate = false;

CORDOVA:
  ugi.setDoAutomaticFirmwareUpdate(false);

XAMARIN:
  Ugi.Singleton().DoAutomaticFirmwareUpdate = false;

If you want to control if and when the Grokker firmware is updated when using your app, contact us and we can discuss options.

Device configuration (Android, Cordova, Xamarin)

When first connected to a Grokker, the SDK looks up the Android device's model number in an internal table. If the model is not found, the SDK loads the most up to date version of the table from our server.

Request:

  https://api.ugrokit.com/firmware/devices?platform=android&model=ANDROID_DEVICE_MODEL

ANDROID_DEVICE_MODEL is the Android device's Model string

The response is a JSON table.

To disable this use of the server

ANDROID:
  ugi.getConfigurationDelegate().setCheckServerForUnknownDevices(false);

CORDOVA:
  ugi.setCheckServerForUnknownDevices(false);

XAMARIN:
  Ugi.Singleton().CheckServerForUnknownDevices = false;
Device auto-configuration and first device connection (Android, Cordova, Xamarin)

To help us improve Android device compatibility, reports are sent to the U Grok It server in two cases:

First-connection request:

  https://api.ugrokit.com/firmware/deviceFirstConnection
  Data:
    { "model": "SCH-I535",
      "audioConfigurationSource": "Local",
      "deviceInfo": {
        "name": "Samsung Galaxy S3",
        "models": ["SCH-I535", "GT-I9300"],
        "notTested": false,
        "notSupported": false,
        "configuration": {
          "jackOnTop": true,
          "audioConnectionParams": {
            "sampleRate": 44100,
            "samplesPerBit": 8,
            "sampleAveragingPeriod1": 0,
            "sampleAveragingPeriod2": 0,
            "sendNonSymmetric": false,
            "numInputBuffers": 1,
            "inputBufferSize": 512,
            "numOutputBuffers": 1,
            "outputBufferSize": 512
        }  }  },
      "apiLevel": 19,
      "androidManufacturer": "samsung",
      "androidProduct": "d2vzw",
      "androidBrand": "Verizon",
      "androidDevice": "d2vzw",
      "sdkVersion": "1.7.18",
      "firmwareVersion": "1.10.1",
      "hardwareRevision": 6,
      "date": "Sep 19, 2015 4:53:34 PM",
      "serialNumber": 140100115      (can be disabled, see Sending Grokker serial number)
    }

Automatic-configuration request:

  https://api.ugrokit.com/firmware/deviceAutoConfig
  Data:
    { "deviceInfo": {
        "name": "Unknown Tue Sep 29 16:38:17 MDT 2015",
        "models": ["Nexus 7"],
        "notTested": false,
        "notSupported": false,
        "configuration": {
          "jackOnTop": false,
          "audioConnectionParams": {
            "sampleRate": 44100,
            "samplesPerBit": 8,
            "sampleAveragingPeriod1": 0,
            "sampleAveragingPeriod2": 0,
            "sendNonSymmetric": false,
            "numInputBuffers": 1,
            "inputBufferSize": 240,
            "numOutputBuffers": 1,
            "outputBufferSize": 240
        }  }  },
      "defaultSampleRate": 48000,
      "success": true,
      "apiLevel": 22,
      "androidManufacturer": "asus",
      "androidProduct": "razor",
      "androidBrand": "google",
      "androidDevice": "flo",
      "sdkVersion": "1.7.19",
      "firmwareVersion": "1.9.9",
      "hardwareRevision": 6,
      "date": "Sep 29, 2015 4:38:17 PM",
      "elapsedSeconds": 60,
      "serialNumber": 140100115      (can be disabled, see Sending Grokker serial number)
    }

In both cases, the server does not send any data in response.

To disable this use of the server:

ANDROID:
  ugi.getConfigurationDelegate().setSendFirstConnectionAndAutomaticConfigurationReports(false);

CORDOVA:
  ugi.setSendFirstConnectionAndAutomaticConfigurationReports(false);

XAMARIN:
  Ugi.Singleton().SendFirstConnectionAndAutomaticConfigurationReports = false;
Sending Grokker serial number (all SDKs)

In a few places the Grokker serial number is sent to the U Grok It server. This can be disabled by:

iOS:
  [Ugi singleton].configurationDelegate.sendGrokkerSerialNumber = NO;

ANDROID:
  ugi.getConfigurationDelegate().setSendGrokkerSerialNumber(false);

WINDOWS:
  Ugi.Singleton().ConfigurationDelegate.SendGrokkerSerialNumber = false;

CORDOVA:
  ugi.setSendGrokkerSerialNumber(false);

XAMARIN:
  Ugi.Singleton().SendGrokkerSerialNumber = false;