Connect Samsung Galaxy Watch to iPhone for notifications and music controls.
WeakBridge is an open-source Wear OS iPhone Bluetooth bridge that connects an already configured Samsung Galaxy Watch to an iPhone. Install one app on the watch: no iPhone companion, account or cloud service is required. Music stays on the iPhone or its selected audio output. ANCS notifications and AMS music controls use the iPhone’s built-in Apple Bluetooth services.
Screenshots from Galaxy Watch6. The interface is available in English and Russian.
Project website and FAQ · Русская страница
| What you can do | |
|---|---|
| Notifications | Receive new iPhone notifications, updates, removals and actions provided by iOS |
| Filters | Choose categories and individual apps after their first notification arrives |
| Alert controls | Group by app, hide message content, set quiet hours and limit repeat alerts |
| Music | See track information and control play/pause, next/previous and relative volume through the watch's system player |
| Connection | Reconnect to a saved iPhone, view separate notification/music status and keep the bridge running after closing the app |
| Diagnostics | Read, copy and clear local counters without logging message content |
Version 0.2.0 adds the new interface and notification controls, avoids unnecessary reconnects when changing ordinary settings, and skips obsolete Bluetooth work. See the changelog.
Beta, tested with Galaxy Watch6 (SM-R930) and iPhone 13 on iOS 26.0. Pairing, music controls, the new interface and ordinary use have been confirmed on this combination. Other models, firmware and music apps need testing; long-term battery drain has not been measured.
| Coverage | Device or requirement |
|---|---|
| Confirmed test combination | Samsung Galaxy Watch6 (SM-R930), iPhone 13, iOS 26.0 |
| Watch minimum | Already configured Wear OS watch with Android 13 / API 33+ |
| Other hardware and apps | Separate device/firmware/music-app testing required |
Requires Android 13 / API 33 or later on an already configured watch. WeakBridge uses Apple's ANCS and AMS services. It does not set up a factory-reset watch, replace Galaxy Wearable, stream audio, sync health data or send arbitrary message replies. Notification actions depend on what iOS supplies. Gestures depend on watch firmware; double pinch in AOD and global fist-to-pause are not provided by this app.
- Download
WeakBridge-0.2.0.apkfrom Releases. - Enable Developer options and Wireless debugging on the watch. Connect the watch and computer to the same Wi-Fi network.
- Use the addresses and ports displayed on the watch:
adb pair WATCH_IP:PAIRING_PORT
adb connect WATCH_IP:DEBUG_PORT
adb install -r WeakBridge-0.2.0.apkThe pairing and connection ports differ. Turn Wireless debugging off after installation. APK checksums are attached to the release as SHA256SUMS.txt.
Updating 0.1.4: install with adb install -r; the release signing key is unchanged. Settings are retained.
Coming from a private development build: its signing key differs from the public APK. If Android reports INSTALL_FAILED_UPDATE_INCOMPATIBLE, changing to the public version requires uninstalling the private app, which removes app settings. The Bluetooth bond can remain; select your iPhone again after installation.
- Open WeakBridge and allow Nearby devices and notifications.
- Open Connection → Connect iPhone and approve the system request to make the watch discoverable for two minutes.
- On iPhone, open Settings → Bluetooth, select the watch and confirm the matching codes on both devices.
- Allow notification sharing on iPhone. Enable Share System Notifications in the watch's Bluetooth entry if shown.
- In WeakBridge's Connection screen, open the saved-device list and select your iPhone. Use Reconnect for an already selected phone.
- Send a new notification and start music to check both services.
The watch keeps its Bluetooth name. The optional compatible-device scan is a diagnostic tool; an empty result does not prove the iPhone is incompatible. Russian setup and troubleshooting.
WeakBridge has been tested with Samsung Galaxy Watch6 (SM-R930) and iPhone 13 on iOS 26.0. It adds notification mirroring and music controls to an already configured watch. It does not restore the full Galaxy Wearable feature set on iOS.
No. One APK runs on the watch and uses the iPhone's built-in Apple Notification Center Service (ANCS) and Apple Media Service (AMS) over Bluetooth. There is no companion app, account or cloud relay.
The watch receives new notifications that iOS shares, including updates, removals and supported actions. Filters, grouping, quiet hours and hidden previews are configured on the watch. Music controls include play/pause, track changes and relative volume; audio stays on the iPhone or its chosen output. Arbitrary text replies, audio streaming and health sync are not supported.
No. The watch must already be configured and run Android 13 / API 33 or later. Only Watch6 is confirmed in this project's device testing; other Wear OS models need separate verification.
Notification content and observed app names stay in memory and Android's notification system; there is no persistent message history. Only preferences, blocked app identifiers and the selected Bluetooth device are stored. There is no Internet permission, analytics or account system.
The low-power BLE design is event-driven, with no continuous scan, periodic keepalive or permanent wake lock. Recovery attempts are bounded. Version 0.2.0 reduces redundant work, but no battery-life percentage is claimed. See power design and measurement for retry limits, LOW_POWER connection hints and reproducible battery-test scenarios. These design choices still need long-term battery measurements.
Use JDK 17, Android SDK 35 and Build Tools 35.0.0. Set ANDROID_HOME or your SDK path in local.properties.
./gradlew :app:assembleWear :app:testDebugUnitTest :app:lintWearThe optimized local build is app/build/outputs/apk/wear/app-wear.apk, signed with your development certificate. Use it when evaluating performance; an unoptimized debug build is not representative.
For a signed release, set WEAKBRIDGE_KEYSTORE, WEAKBRIDGE_KEY_ALIAS, WEAKBRIDGE_STORE_PASSWORD and WEAKBRIDGE_KEY_PASSWORD, then run ./gradlew :app:assembleRelease. Without those variables, release output is unsigned. Signing keys are not distributed.
Report a bug with your device models, OS versions and reproduction steps. Remove private messages and device addresses before attaching logs or screenshots.
See CONTRIBUTING.md, architecture and testing. If the app is useful to you, a GitHub star helps other watch owners find it.
MIT. Dependency licenses are listed in THIRD_PARTY_NOTICES.md.


