Skip to content

Inspire IC15D Android console: internal UART support request #4888

Description

@c-hat

Inspire IC15D internal-UART support request

Summary

QZ 2.21.6 installs and runs on the Inspire IC15D Android console, but it cannot
detect the bike because this console receives controller data over an internal
UART rather than from the BLE device expected by QZ's existing inspirebike
driver.

Console

  • Manufacturer: Smile-smart
  • Model: BX_RK3326_A11_INSPIRE_IC15D
  • Bike: Inspire IC15D
  • Android: 8.1 / API 27
  • ABI: 32-bit armeabi-v7a
  • SoC: Rockchip RK3326
  • RAM: approximately 1 GB
  • QZ tested: 2.21.6, official nightly 2026-08-04
  • APK SHA-256: 361df7e67cf9519251069a5ff50e661cfbbd0599f7d4c37a517c12bf1a963720

Observed data path

  • The stock package is com.inspire.inspireconsole.cycle.
  • It has privileged serial and Android Things peripheral-I/O permissions.
  • Detached boot opens the stock app's SerialErrorActivity.
  • SELinux audit records show the stock process performing serial operations on
    /dev/ttyS2.
  • /dev/ttyS2 is system:system, mode 0666; SELinux is permissive.
  • During a 93-second training capture, the stock app received live ride data
    while its BLE scan returned zero devices and USB host mode was inactive.
  • The stock app logged a repeating four-byte polling sequence, but it did not
    log the corresponding metric responses or their packet format.

Current QZ result

  • Installation succeeds and the UI loads at 1280 x 800.
  • QZ uses approximately 177 MB PSS after setup.
  • The existing inspirebike driver only selects a remote BLE name beginning
    with IC and exactly eight characters long and uses service
    7ee7e1fa-6fd8-4cbd-b648-a2cdcfa4e7f4.
  • No such BLE peripheral was observed.
  • QZ remains at Connecting...; no bike metrics, virtual GATT server, or BLE
    advertiser are created.

Requested implementation

A dedicated IC15D internal-UART driver, using the existing Freebeat UART code
only as an architectural reference. The first implementation should be
receive-only and must not flush/configure the active stock-app port, send
queries, or issue resistance commands until the protocol is documented and
tested. QZ and the stock application should run in separate serial-owner test
sessions.

The remaining information needed is the UART baud/parity/framing and the
controller response packet format for power, speed, cadence, and resistance.

Full static, passive, and controlled-install evidence is available in
qz-compatibility-report.md with raw logcat, Bluetooth dumps, screenshots,
package metadata, and resource measurements.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions