Seb3thehackerandClaude Sonnet 5 7e4b4d6b99 Send media audio to the car without a per-drive prompt
The head unit offers a media sink, but Android answers Setup with an
empty reply instead of a Config message. AudioLink now falls back to
the advertised sink after 2.5s. AudioCaptureService captures by audio
usage, not by app, so switching media apps costs nothing further and
one grant covers a whole drive.

A one-time adb command (PROJECT_MEDIA) removes the consent dialog
itself; the setup screen now includes it as a copyable step, next to
the existing mic-permission step.

Capture counts as a screen share, so Android 15 hides notification
contents while it runs. ScreenShareGuard lifts that protection for
the length of the capture, with a second adb grant
(WRITE_SECURE_SETTINGS), and restores it afterward, including after a
crash.

The phone keeps playing what it captures, so AudioCaptureService also
mutes STREAM_MUSIC for the drive and restores it on every exit path.

Adds a debug bench (BenchAudioSink, CarPreviewActivity --ez audio
true) for testing the audio path without a car, and a unit test that
rebuilds the real head unit's ServiceDiscoveryResponse from a logged
session to confirm the media and guidance sinks are found correctly.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-22 00:11:59 -07:00
2026-09-20 14:27:43 -07:00

Gearslip icon

Gearslip

Bring any app to your car screen.

What Gearslip is

Gearslip is an Android Auto client for the phone. It speaks the Android Auto protocol directly to a car head unit over USB, with no Google software in the path. Gearslip acts as a Car App Library host: an app that ships a car interface hands Gearslip a template, and Gearslip renders that template natively on the car screen. Nothing is mirrored from the phone. For apps without a car interface, Gearslip offers a separate screen-sharing mode.

The author reverse-engineered the protocol for interoperability, so that a client other than Google's own can talk to a car head unit.

Status

  • Templated apps work. Gearslip renders all 16 template types that the Car App Library defines, and it draws its own keyboard for search and sign-in. It has been tested against several real navigation and media apps.
  • Media playback works. Gearslip lets you browse and control car-enabled media apps from the car screen, with lyrics and playback state, over the same host connection.
  • A real head unit needs a certificate that Google controls. A head unit accepts only a phone identity that chains to Google's Automotive Link certificate authority, and Google alone issues those certificates. Gearslip does not ship one. Without it, Gearslip runs and renders correctly against a debug harness, but a real car rejects the connection. A leaked certificate exists that older head units accept; newer firmware and Google's reference tooling reject it.
  • Gearslip needs no adb, root, or Shizuku. Every feature relies on an ordinary Android permission or an on-device consent dialog.

Building

./gradlew :gearslip:assembleDebug

The APK lands at build/Gearslip-debug.apk.

A release build needs a signing key. Copy keystore.properties.example to keystore.properties, fill in your own values, and run ./gradlew :gearslip:assembleRelease. Git ignores both the properties file and the keystore. Without them, the debug build still works.

Writing apps for Gearslip

docs/BUILDING_APPS.md specifies how to write apps that Gearslip can render: templated apps, media apps, and the Gearslip app protocol.

License

Gearslip is licensed under AGPL-3.0; see LICENSE. The author offers a separate commercial license for private use outside the AGPL's terms; see NOTICE.md.

Languages
Kotlin 100%