Known Issues

Android 10 USB Permissions

Some versions of Android 10 (SDK 29) have a bug which broke USB permissions if the running app uses targetSdkVersion 28 or above. Some devices running Android 10 have patched this bug. This includes all Zebra TC devices. The “Six15 ST1” app which is deployed through the Google Play Store is susceptible to this bug. The other variants of “Six15 ST1” are not affected.

Intent Interface Background Start

Sometimes the Intent Interface Service can fail to start from 3rd party apps. Android 11 blocks apps (even foreground ones) from starting services inside 3rd party applications when that 3rd party application is not already running. This situation can happen when attempting to start the Intent Interface. This always happens after the Six15 app is force quit, but can also happen after a reboot, or other time Android kills our app.

Avoid this issue by starting the Intent Interface Activity instead of the Intent Interface Service. The Activity simply starts the Service, then immediately quits.

SDK Changelog

SDK 3.1.0

Six15 ST1:
  • Added PIP (Picture in picture) HUD image preview for debugging

  • Added Compression quality settings for screen mirror and intent interface

  • Improve UI for firmware update.

  • Add Open Source Licenses to Settings menu

  • Add Settings to Expose Camera through SDK

  • Add Settings enable/disable microphone

  • Add switch to enable presentation mode

  • Intent Interface - Add “max_lines” as an argument.

  • Intent Interface - Support array colors.

  • Target SDK 33, min SDK: 21

  • Bug Fix - Intent interface crash when color has length 0

  • Bug Fix - Intent interface padding depended on the host screen DPI

Android Demo:
  • Improve UI to fit better on small screens

  • Bug Fix - Fix crash when run with newest firmware 6.05

HMD Service:
  • Deprecated app and replaced with Six15 ST1 Slim

Examples:
  • Use Flow instead of GridLayout since GridLayout doesn’t work well with scrolling

  • Create example for ACTION_SEND in the Intent Interface

  • Add helper for clear display as mentioned in docs

  • Improve Camera examples

Firmware:
  • Update to 6.05 - Added render interface to show screens from intent interface (disabled by default in Six15 ST1 app) - Improved buffer handling in display pipeline.

Known issues:
  • None

SDK 2.7.1

Android Service:
  • Fix that screen mirror crop selection UI could be cutoff on some devices.

  • Fix crash if USB device disconnects while connecting. This was more likely on slow phones.

  • Add convenience constructor to ByteFrame taking a byte[].

  • Fix crash if Intent Interface was sent a broadcast with no extras in the Intent.

  • Fix that the Intent Interface could fail to start from 3rd party code if the Six15 service app was killed. 3rd party code should now start the service via the IntentInterfaceActivity.

  • Enable display dither.

Six15 ST1:
  • Update Warehouse Picking demo to use the Intent Interface and follow a simpler picking workflow.

  • Remove voice control from Warehouse Picking demo.

SDK 2.7.0

Firmware:
  • Add display dither functionality (disabled by default)

Android Service:
  • Created Intent Interface for sending simple text images to the display

  • Added function setDitherEnabled() to AIDL interface

  • Callback onInfo() will now be called with HC_VERSIONS_EXTRA (0x04)

Known Issues:
  • In the demo app, streaming the host device’s camera to the ST1 display can cause camera stack instability on Zebra TC devices.

SDK 2.6.5

Firmware:
  • Fixed issue where device sometimes reboots into bootloader when autofocus is enabled.

SDK 2.6.4

Firmware:
  • Fixed issue where screen would flicker when using screen mirror and camera.

  • Fixed issue where image display was sometimes delayed when recovering from low-power mode.

Android Service:
  • Added button for screen mirror and presentation mode.

  • Fixed issue where old camera frames are returned when restarting camera.

  • Fixed issue that caused camera to stop when calling startRawCameraCapture() with highest resolution.

Android Demo:
  • Code cleanup/ stability fixes

SDK 2.5.3

Firmware:
  • Tracker (IMU)

    • Corrected bug where IMU data is corrupted when calibrating some IMUs.

  • Microphone

    • Corrected bug where ST1 reboots into bootloader if mic is opened/closed many times.

Android Service
  • Corrected bug where video stops on USB disconnect when connecting through a USB hub.

SDK 2.5.0

Firmware:
  • Tracker (IMU)

    • Improved calibration routine

    • Added calibration progress reporting.

    • Improved filter for calculating pose (roll, pitch, yaw)

    • Samples are output at 60Hz (from 30Hz).

    • Breaking Change: magnetometer readings are in units of uT (instead of mG). This is to conform to the Android sensor specification.

    • Breaking Change: The orientation of the accel/gyro/magnetometer is changed to adhere to Android standard (see: Android Sensors)

  • Camera

    • Corrected bug where video locked up on highest resolution.

Android Service
  • Re-enabled presentation mode and screen mirroring through the API

  • (Internal) Automatic build of project

  • Target SDK 30

Android Demo
  • UI Clean-up

  • Example slideshow images are included.

  • Example slideshow images may come from galley instead of a single folder.

  • Example slideshow supports Bluetooth remote next/previous.

  • Corrected microphone bug where mic didn’t work on Android 11

  • Added check for HMD microphone in microphone screen

Android Calibration
  • Project UI Clean-up

  • Added progress bar when calibrating.

APK Installation

APK File on Device

Note

You will have to enable “Install unknown apps” permission with this option.

  1. Copy APK file to local phone storage or download

  2. Open “Files” app

  3. Select apk file

  4. Change Android permission (if asked)

  5. Select “Install”

Install App From Downloads Allow Unknown Sources Check allow Press Install

ADB Sideload

  1. Get ADB (from Android Studio or SDK platform tools

  2. Install app-name.apk

adb install app-name.apk

Wireless ADB

You may want to use ADB while having your ST1 plugged into your phone’s USB port.

Unfortunately all USB HUBs/phones we’ve tried don’t allow a phone to act as a host to the ST1 and a device to the PC at the same time. This means wired ADB and the ST1 can’t be used at the time time.

Many USB HUBs have power passthrough or external power. This means the HUB can power the phone and ST1 while the phone controls the ST1. This method, along with wirelessly charging the phone, can be useful for long development sessions.

Wireless ADB is very useful when working with the ST1. See Google’s documentation about wireless adb.

On many devices, even non-rooted ones, a command like the following can extract the IP address

adb shell ip addr show wlan0 | grep " inet " | sed -E 's#.*inet ([0-9]*\.[0-9]*\.[0-9]*\.[0-9]*).*#\1#'

With your device connected to ADB over USB, you can then connect to WiFi ADB automatically with a script like this:

set -e
adb disconnect || true
sleep 2
adb usb
sleep 2
adb shell exit || true
sleep 2
DEVICE_IP=$(adb shell ip addr show wlan0 | grep " inet " | sed -E 's#.*inet ([0-9]*\.[0-9]*\.[0-9]*\.[0-9]*).*#\1#')
echo "Connecting to ${DEVICE_IP}"
adb tcpip 5555
sleep 2
adb connect ${DEVICE_IP}:5555

Unfortunately the 2 second delays and no-op shell command are sometimes necessary. After the script runs, unplug wired ADB and plug in the ST1.

Connecting WiFi ADB this way doesn’t require looking up the device IP in Settings or typing a PIN.

Windows SDK

Download the Windows SDK.

Located in the SDK Package:

  • Windows Service installer

  • API documentation