android: Wear OS: Can't connect to Home Assistant instance over Bluetooth

Home Assistant Android version: WearOS version beta-1626-edc4142 Phone version beta-1626-edc4142-full Android version: WearOS 2.33 Android 11 Phone model: OnePlus 7 Pro Home Assistant version: core-2021.11.2 Last working Home Assistant release (if known): None. Description of problem: Wear OS can’t find my Home Assistant instance. It neither shows up in the list nor lets me manually connect. Works fine on WiFi (with disabled Bluetooth) or with the phone and other devices in my network.

Traceback (if applicable, to get the logs you may refer to: https://companion.home-assistant.io/docs/troubleshooting/faqs/#android-crash-logs): unavailable

Screenshot of problem: unavailable - there is a sad cloud icon with the message “Could not connect” but it vanished too fast to screenshot

Additional information No public instance, i.e. no Nabu Casa Not using a VPN - neither phone nor watch After a successful log in over WiFi and switching back to Bluetooth, the list of buttons is empty and it just shows the titles. Update for version beta-1626-edc4142: After a successful log in over WiFi and switching back to Bluetooth, there is a title “Loading” and a primary button “Please wait while we load your entities” but nothing ever happens.

About this issue

  • Original URL
  • State: open
  • Created 3 years ago
  • Reactions: 1
  • Comments: 183 (44 by maintainers)

Most upvoted comments

Not being able to connect to local server via Bluetooth is making this otherwise great app useless for me, since I do not want to open my HA instance to internet. I use vpn on my phone to remote in to it. Turning Bluetooth off when I am at home is just not good solution. It is easier/better just to use phone app then. Weird that there is not more people complaining about this. Do most people have HA open to the internet? I really wish you could make this work somehow.

Link to stackoverflow post regarding same problem: https://stackoverflow.com/questions/71500333/android-wearos-app-sockettimeoutexception-failing-to-connect-to-a-local-server-w

I too run a local server which is not exposed from WAN, and remote access is via VPN if needed. I usually just keep Always On VPN active even when on my WIFI. When I am on my LAN I would also want my watch, which will almost always be connected to my phone using Bluetooth, to be able to access Home Assistant. I often use Always On VPN both when at home and when on cellular connectivity.

Would be great to see this fixed, but for now, I seem to have found a workaround that is sufficient for me.

I’ve managed to work around this issue by setting up NAT reflection in my firewall (pfSense) using a Virtual IP on a subnet separate from any of those which my phone may connect to (e.g. not in the LAN or VPN networks). Then I configure NAT port forwarding with NAT reflection (NAT+proxy) with source set to all my valid local (LAN+VPN) networks (via an Alias), and destination is the Virtual IP on port 8123. Key here seems to also be to put this NAT Port Forward on an interface or bridge separate from where LAN or VPN traffic normally flows, i.e. avoid the LAN and IPsec interfaces. I use a “bridge” interface connected to my LAN interface (yet the Virtual IP is created on my LAN interface so that is fine). Accessing Home Assistant via this Virtual IP redirects to my actual server IP on the same port 8123.

Using this NAT reflection based workaround I can access Home Assistant from my Wear OS watch from all various local connectivity scenarios – both over WIFI directly and over Bluetooth via my phone. And it doesn’t matter whether my phone is connected to my local WIFI with or without (Always On) VPN (to the very same firewall), or via 4G and using VPN. Of course it won’t work with 4G directly and no VPN since none of this is exposed externally.

I was having this issue too. I managed to get some logs, but didn’t see anything relevant. Unfortunately, life got in the way, and in the meantime I lost the logs (I could try again if need be).

However, a little research lead to a possible explanation: When the watch is connected to a phone via Bluetooth, the phone proxies all network requests, but for some reason connection requests to IPs on the local subnet can fail, while requests to internet IPs work fine.

An example: https://stackoverflow.com/questions/46696280/android-wear-2-wifi-local-network-access/48411322

Coincidentally at the time I was also starting to trail using Home Assistant Cloud. And indeed using the cloud URL on my watch works fine over Bluetooth, yet a direct local connection fails.

But assuming all that is accurate, I don’t understand why everyone isn’t hitting this bug. It could be a difference in subnet routing tables on different phones.

I don’t have a background in coding for Android or WearOS, but given what I’ve read, the possible solutions I’ve seen are:

  • Requiring using Home Assistant Cloud, and using it even when on the home network
  • Forcing the connection to be over WiFi, via requesting high bandwidth mode (which besides being a battery drain, & not working on watches without WiFi, it would presumably also mean it wouldn’t work when the phone is connected to the home network via VPN)
  • Detect when network requests are sent over Bluetooth & use the Home Assistant app on the phone to proxy the requests

I realise the aim for the WearOS app is to be a standalone app (which I applaud), but for anyone to hit this issue they have to be already relying on a connection to their phone at the time anyway.

Due to requirements for the login, it is no longer completely standalone. After logging in, the app can be used without a connected phone.

Not being able to connect to local server via Bluetooth is making this otherwise great app useless for me, since I do not want to open my HA instance to internet. I use vpn on my phone to remote in to it. Turning Bluetooth off when I am at home is just not good solution. It is easier/better just to use phone app then. Weird that there is not more people complaining about this. Do most people have HA open to the internet? I really wish you could make this work somehow.

Link to stackoverflow post regarding same problem: https://stackoverflow.com/questions/71500333/android-wearos-app-sockettimeoutexception-failing-to-connect-to-a-local-server-w

2022.2.1-full Moto Z4 + Ticwatch Pro 3 GPS

Issue for me was related to the Ticwatch not having the new Let’s Encrypt R3 intermediate certificate in it’s certificate store. I reconfigured my HAProxy to send the full certificate chain.

If a device does not have all certs in its store it must be given all the certs in the chain to connect to a cert it does trust. Let’s encrypt updated their intermediate certs a while back and it looks like the Ticwatch wear OS version doesn’t have the new cert.

I also have issues connecting from my watch to HA. It does not matter if I try over Bluetooth or WiFi. Watch: Samsung Galaxy Watch 4 Phone: Samsung Galaxy S20 FE App version: beta-1970-b7f6a732

When I open the app on my watch I will see listed Instances of HA, Sign in on phone or enter address manually. I have tried all options. When I click on the listed instance, Connecting and then the cloud symbol displays with message cant connect. Same thing if I enter the address manually to my HA instance. If I click Sign in on phone then I could select my Instance on my phone, I enter username and password and click login, then I see a screen Connect to Home Assistant, the device ID is my watch but when i click the finish button it just goes back to the screen where I could handle the mobile device with the login button.

Logcat when clicking on the instance `2022-01-24 11:47:40.487 10190-10190/? D/sysproxy: [T:29] Establishing a new TCP stream to: IP:PORT (uid=10126) (package=io.homeassistant.companion.android) 2022-01-24 11:47:41.015 554-12877/? I/ActivityTaskManager: START u0 {cmp=io.homeassistant.companion.android/androidx.wear.activity.ConfirmationActivity (has extras)} from uid 10126 2022-01-24 11:47:41.041 554-875/? V/WindowManager: Changing focus from Window{234e9a u0 io.homeassistant.companion.android/io.homeassistant.companion.android.onboarding.OnboardingActivity} to null displayId=0 Callers=com.android.server.wm.RootWindowContainer.updateFocusedWindowLocked:459 com.android.server.wm.WindowManagerService.updateFocusedWindowLocked:5664 com.android.server.wm.DisplayContent.setFocusedApp:5547 com.android.server.wm.ActivityTaskManagerService.setResumedActivityUncheckLocked:5732 2022-01-24 11:47:41.085 554-12877/? V/WindowManager: Relayout Window{d153160 u0 io.homeassistant.companion.android/androidx.wear.activity.ConfirmationActivity}: viewVisibility=0 req=396x396 2022-01-24 11:47:41.087 554-12877/? D/WindowManager: makeSurface duration=0 name=io.homeassistant.companion.android/androidx.wear.activity.ConfirmationActivity 2022-01-24 11:47:41.090 554-12877/? V/WindowManager: Changing focus from null to Window{d153160 u0 io.homeassistant.companion.android/androidx.wear.activity.ConfirmationActivity} displayId=0 Callers=com.android.server.wm.RootWindowContainer.updateFocusedWindowLocked:459 com.android.server.wm.WindowManagerService.updateFocusedWindowLocked:5664 com.android.server.wm.WindowManagerService.relayoutWindow:2388 com.android.server.wm.Session.relayout:230 2022-01-24 11:47:41.108 554-673/? D/WindowManager: finishDrawingWindow: Window{d153160 u0 io.homeassistant.companion.android/androidx.wear.activity.ConfirmationActivity} mDrawState=DRAW_PENDING 2022-01-24 11:47:41.112 554-598/? I/WindowManager: Reparenting to leash, surface=Surface(name=ActivityRecord{9aaa51d u0 io.homeassistant.companion.android/androidx.wear.activity.ConfirmationActivity)/@0x2bbcc78, leashParent=Surface(name=Task=363)/@0xeee3e1c 2022-01-24 11:47:41.114 554-598/? D/WindowManager: makeSurface duration=2 leash=Surface(name=Surface(name=ActivityRecord{9aaa51d u0 io.homeassistant.companion.android/androidx.wear.activity.ConfirmationActivity)/@0x2bbcc78 - animation-leash)/@0xf12cf51 2022-01-24 11:47:41.117 554-598/? I/WindowManager: Reparenting to leash, surface=Surface(name=ActivityRecord{86d705f u0 io.homeassistant.companion.android/.onboarding.OnboardingActivity)/@0xc56b055, leashParent=Surface(name=Task=363)/@0xeee3e1c 2022-01-24 11:47:41.119 554-598/? D/WindowManager: makeSurface duration=1 leash=Surface(name=Surface(name=ActivityRecord{86d705f u0 io.homeassistant.companion.android/.onboarding.OnboardingActivity)/@0xc56b055 - animation-leash)/@0xa1d3824 2022-01-24 11:47:41.122 554-598/? D/PkgPredictorService: pkg:io.homeassistant.companion.android activity:androidx.wear.activity.ConfirmationActivity thisTime:106 2022-01-24 11:47:41.140 554-598/? D/WindowManager: Snapshot mode: 0 task: Task{a1553bb #363 visible=true type=standard mode=fullscreen translucent=false A=10126:io.homeassistant.companion.android U=0 StackId=363 sz=2} / TaskSnapshot{ mId=1643021261132 mTopActivityComponent=io.homeassistant.companion.android/.onboarding.OnboardingActivity mSnapshot=android.graphics.GraphicBuffer@5640f8d (396x396) mColorSpace=sRGB IEC61966-2.1 (id=0, model=RGB) mOrientation=1 mRotation=0 mTaskSize=Point(396, 396) mContentInsets=[0,0][0,0] mIsLowResolution=false mIsRealSnapshot=true mWindowingMode=1 mSystemUiVisibility=0 mIsTranslucent=false 2022-01-24 11:47:41.140 554-598/? D/WindowManager: targetActivity: ActivityRecord{9aaa51d u0 io.homeassistant.companion.android/androidx.wear.activity.ConfirmationActivity t363} 2022-01-24 11:47:41.140 554-598/? D/WindowManager: targetActivity is opening app, targetActivity=ActivityRecord{86d705f u0 io.homeassistant.companion.android/.onboarding.OnboardingActivity t363} 2022-01-24 11:47:41.140 554-598/? D/TaskSnapshot: putSnapshot : ActivityRecord{86d705f u0 io.homeassistant.companion.android/.onboarding.OnboardingActivity t363} TaskSnapshot{ mId=1643021261132 mTopActivityComponent=io.homeassistant.companion.android/.onboarding.OnboardingActivity mSnapshot=android.graphics.GraphicBuffer@5640f8d (396x396) mColorSpace=sRGB IEC61966-2.1 (id=0, model=RGB) mOrientation=1 mRotation=0 mTaskSize=Point(396, 396) mContentInsets=[0,0][0,0] mIsLowResolution=false mIsRealSnapshot=true mWindowingMode=1 mSystemUiVisibility=0 mIsTranslucent=false 2022-01-24 11:47:41.141 554-607/? I/ActivityTaskManager: Displayed io.homeassistant.companion.android/androidx.wear.activity.ConfirmationActivity: +106ms 2022-01-24 11:47:41.141 554-607/? I/Pageboost: Launch time gathered : pid 14329 io.homeassistant.companion.android 106 2022-01-24 11:47:41.167 439-439/? D/SurfaceFlinger: Display 0 HWC layers: CLIENT | 0xeeedc980 | 0002 | RGBA_8888 | 0.0 0.0 396.0 396.0 | 2 2 394 394 | io.homeassistant.companion.android/i[...]roid.onboarding.OnboardingActivity#0 CLIENT | 0xeff8eb00 | 0000 | RGBA_8888 | 0.0 0.0 24.0 396.0 | 372 0 396 396 | io.homeassistant.companion.android/a[...]wear.activity.ConfirmationActivity#0 2022-01-24 11:47:41.546 554-598/? I/WindowManager: Reparenting to original parent: Surface(name=Task=363)/@0xeee3e1c, destroy=true, surface=Surface(name=ActivityRecord{9aaa51d u0 io.homeassistant.companion.android/androidx.wear.activity.ConfirmationActivity)/@0x2bbcc78 2022-01-24 11:47:41.548 554-598/? I/WindowManager: Reparenting to original parent: Surface(name=Task=363)/@0xeee3e1c, destroy=true, surface=Surface(name=ActivityRecord{86d705f u0 io.homeassistant.companion.android/.onboarding.OnboardingActivity)/@0xc56b055 2022-01-24 11:47:41.549 554-598/? V/WindowManager: Setting visibility of Window{234e9a u0 io.homeassistant.companion.android/io.homeassistant.companion.android.onboarding.OnboardingActivity}: false, caller=com.android.server.wm.WindowContainer.sendAppVisibilityToClients:946 com.android.server.wm.ActivityRecord.setClientVisible:5637 com.android.server.wm.ActivityRecord.onAnimationFinished:6300 com.android.server.wm.-$$Lambda$dwJG8BAnLlvKNGuDY9U3-haNY4M.onAnimationFinished:2 com.android.server.wm.SurfaceAnimator.lambda$getFinishedCallback$0$SurfaceAnimator:113 com.android.server.wm.-$$Lambda$SurfaceAnimator$qxm0Z0Ve0b3lKnyQQMgWVQfTP3Q.run:8 com.android.server.wm.SurfaceAnimator.lambda$getFinishedCallback$1$SurfaceAnimator:123 com.android.server.wm.-$$Lambda$SurfaceAnimator$Y4hCTFZUnyoMqrbq2rxOWj68ccg.onAnimationFinished:4 com.android.server.wm.LocalAnimationAdapter.lambda$startAnimation$0$LocalAnimationAdapter:56 com.android.server.wm.-$$Lambda$LocalAnimationAdapter$zbLki1x5Fhwh-g7q-dA43aw6Y4M.run:6 android.os.Handler.handleCallback:938 android.os.Handler.dispatchMessage:99 android.os.Looper.loop:246 android.os.HandlerThread.run:67 2022-01-24 11:47:41.556 439-439/? D/SurfaceFlinger: Display 0 HWC layers: CLIENT | 0xeff8eb00 | 0000 | RGBA_8888 | 0.0 0.0 396.0 396.0 | 0 0 396 396 | io.homeassistant.companion.android/a[...]wear.activity.ConfirmationActivity#0 2022-01-24 11:47:41.567 439-1194/? E/BufferQueueProducer: [io.homeassistant.companion.android/io.homeassistant.companion.android.onboarding.OnboardingActivity#0](id:1b7000006f4,api:0,p:-1,c:439) disconnect: not connected (req=1) 2022-01-24 11:47:41.577 554-14795/? V/WindowManager: Relayout Window{234e9a u0 io.homeassistant.companion.android/io.homeassistant.companion.android.onboarding.OnboardingActivity}: viewVisibility=8 req=396x396 2022-01-24 11:47:41.613 554-14795/? V/WindowManager: Relayout Window{234e9a u0 io.homeassistant.companion.android/io.homeassistant.companion.android.onboarding.OnboardingActivity}: viewVisibility=8 req=396x396 2022-01-24 11:47:41.624 554-1376/? I/WindowManager: Destroying surface Surface(name=io.homeassistant.companion.android/io.homeassistant.companion.android.onboarding.OnboardingActivity)/@0xa49e666 called by com.android.server.wm.WindowStateAnimator.destroySurface:1588 com.android.server.wm.WindowStateAnimator.destroySurfaceLocked:647 com.android.server.wm.WindowState.destroySurfaceUnchecked:3297 com.android.server.wm.WindowState.destroySurface:3271 com.android.server.wm.ActivityRecord.destroySurfaces:4617 com.android.server.wm.ActivityRecord.destroySurfaces:4598 com.android.server.wm.ActivityRecord.notifyAppStopped:4651 com.android.server.wm.ActivityRecord.activityStopped:5191 2022-01-24 11:47:42.126 554-1376/? D/WindowManager: Snapshot mode: 0 task: Task{a1553bb #363 visible=true type=standard mode=fullscreen translucent=false A=10126:io.homeassistant.companion.android U=0 StackId=363 sz=2} / TaskSnapshot{ mId=1643021262096 mTopActivityComponent=io.homeassistant.companion.android/androidx.wear.activity.ConfirmationActivity mSnapshot=android.graphics.GraphicBuffer@8fe02f2 (396x396) mColorSpace=sRGB IEC61966-2.1 (id=0, model=RGB) mOrientation=1 mRotation=0 mTaskSize=Point(396, 396) mContentInsets=[0,0][0,0] mIsLowResolution=false mIsRealSnapshot=true mWindowingMode=1 mSystemUiVisibility=0 mIsTranslucent=true 2022-01-24 11:47:42.127 554-1376/? D/WindowManager: targetActivity: ActivityRecord{9aaa51d u0 io.homeassistant.companion.android/androidx.wear.activity.ConfirmationActivity t363 f}} 2022-01-24 11:47:42.128 554-1376/? D/TaskSnapshot: putSnapshot : ActivityRecord{9aaa51d u0 io.homeassistant.companion.android/androidx.wear.activity.ConfirmationActivity t363 f}} TaskSnapshot{ mId=1643021262096 mTopActivityComponent=io.homeassistant.companion.android/androidx.wear.activity.ConfirmationActivity mSnapshot=android.graphics.GraphicBuffer@8fe02f2 (396x396) mColorSpace=sRGB IEC61966-2.1 (id=0, model=RGB) mOrientation=1 mRotation=0 mTaskSize=Point(396, 396) mContentInsets=[0,0][0,0] mIsLowResolution=false mIsRealSnapshot=true mWindowingMode=1 mSystemUiVisibility=0 mIsTranslucent=true 2022-01-24 11:47:42.150 554-875/? V/WindowManager: Setting visibility of Window{234e9a u0 io.homeassistant.companion.android/io.homeassistant.companion.android.onboarding.OnboardingActivity}: true, caller=com.android.server.wm.WindowContainer.sendAppVisibilityToClients:946 com.android.server.wm.ActivityRecord.setClientVisible:5637 com.android.server.wm.ActivityRecord.setVisibility:4267 com.android.server.wm.ActivityRecord.setVisibility:4180 com.android.server.wm.ActivityStack.resumeTopActivityInnerLocked:1857 com.android.server.wm.ActivityStack.resumeTopActivityUncheckedLocked:1548 com.android.server.wm.RootWindowContainer.resumeFocusedStacksTopActivities:2324 com.android.server.wm.ActivityStack.completePauseLocked:1250 com.android.server.wm.ActivityRecord.activityPaused:5051 com.android.server.wm.ActivityTaskManagerService.activityPaused:1966 android.app.IActivityTaskManager$Stub.onTransact:1952 android.os.Binder.execTransactInternal:1154 android.os.Binder.execTransact:1123 <bottom of call stack> 2022-01-24 11:47:42.153 554-875/? V/WindowManager: Changing focus from Window{d153160 u0 io.homeassistant.companion.android/androidx.wear.activity.ConfirmationActivity} to null displayId=0 Callers=com.android.server.wm.RootWindowContainer.updateFocusedWindowLocked:459 com.android.server.wm.WindowManagerService.updateFocusedWindowLocked:5664 com.android.server.wm.DisplayContent.setFocusedApp:5547 com.android.server.wm.ActivityTaskManagerService.setResumedActivityUncheckLocked:5732 2022-01-24 11:47:42.181 554-1376/? V/WindowManager: Relayout Window{234e9a u0 io.homeassistant.companion.android/io.homeassistant.companion.android.onboarding.OnboardingActivity}: viewVisibility=0 req=396x396 2022-01-24 11:47:42.184 554-1376/? D/WindowManager: makeSurface duration=0 name=io.homeassistant.companion.android/io.homeassistant.companion.android.onboarding.OnboardingActivity 2022-01-24 11:47:42.187 554-1376/? V/WindowManager: Changing focus from null to Window{234e9a u0 io.homeassistant.companion.android/io.homeassistant.companion.android.onboarding.OnboardingActivity} displayId=0 Callers=com.android.server.wm.RootWindowContainer.updateFocusedWindowLocked:459 com.android.server.wm.WindowManagerService.updateFocusedWindowLocked:5664 com.android.server.wm.WindowManagerService.relayoutWindow:2388 com.android.server.wm.Session.relayout:230 2022-01-24 11:47:42.207 554-1376/? D/WindowManager: finishDrawingWindow: Window{234e9a u0 io.homeassistant.companion.android/io.homeassistant.companion.android.onboarding.OnboardingActivity} mDrawState=DRAW_PENDING 2022-01-24 11:47:42.221 554-598/? I/WindowManager: Reparenting to leash, surface=Surface(name=ActivityRecord{86d705f u0 io.homeassistant.companion.android/.onboarding.OnboardingActivity)/@0xc56b055, leashParent=Surface(name=Task=363)/@0xeee3e1c 2022-01-24 11:47:42.222 554-598/? D/WindowManager: makeSurface duration=1 leash=Surface(name=Surface(name=ActivityRecord{86d705f u0 io.homeassistant.companion.android/.onboarding.OnboardingActivity)/@0xc56b055 - animation-leash)/@0x3375a9f 2022-01-24 11:47:42.225 554-598/? I/WindowManager: Reparenting to leash, surface=Surface(name=ActivityRecord{9aaa51d u0 io.homeassistant.companion.android/androidx.wear.activity.ConfirmationActivity)/@0x2bbcc78, leashParent=Surface(name=Task=363)/@0xeee3e1c 2022-01-24 11:47:42.227 554-598/? D/WindowManager: makeSurface duration=2 leash=Surface(name=Surface(name=ActivityRecord{9aaa51d u0 io.homeassistant.companion.android/androidx.wear.activity.ConfirmationActivity)/@0x2bbcc78 - animation-leash)/@0x356fe4a 2022-01-24 11:47:42.232 554-598/? D/PkgPredictorService: pkg:io.homeassistant.companion.android activity:io.homeassistant.companion.android.onboarding.OnboardingActivity thisTime:-1 2022-01-24 11:47:42.242 554-598/? D/WindowManager: Snapshot mode: 0 task: Task{a1553bb #363 visible=true type=standard mode=fullscreen translucent=false A=10126:io.homeassistant.companion.android U=0 StackId=363 sz=2} / TaskSnapshot{ mId=1643021262233 mTopActivityComponent=io.homeassistant.companion.android/androidx.wear.activity.ConfirmationActivity mSnapshot=android.graphics.GraphicBuffer@4c101bb (396x396) mColorSpace=sRGB IEC61966-2.1 (id=0, model=RGB) mOrientation=1 mRotation=0 mTaskSize=Point(396, 396) mContentInsets=[0,0][0,0] mIsLowResolution=false mIsRealSnapshot=true mWindowingMode=1 mSystemUiVisibility=0 mIsTranslucent=true 2022-01-24 11:47:42.242 554-598/? D/WindowManager: targetActivity: ActivityRecord{9aaa51d u0 io.homeassistant.companion.android/androidx.wear.activity.ConfirmationActivity t363 f}} 2022-01-24 11:47:42.242 554-598/? D/TaskSnapshot: putSnapshot : ActivityRecord{9aaa51d u0 io.homeassistant.companion.android/androidx.wear.activity.ConfirmationActivity t363 f}} TaskSnapshot{ mId=1643021262233 mTopActivityComponent=io.homeassistant.companion.android/androidx.wear.activity.ConfirmationActivity mSnapshot=android.graphics.GraphicBuffer@4c101bb (396x396) mColorSpace=sRGB IEC61966-2.1 (id=0, model=RGB) mOrientation=1 mRotation=0 mTaskSize=Point(396, 396) mContentInsets=[0,0][0,0] mIsLowResolution=false mIsRealSnapshot=true mWindowingMode=1 mSystemUiVisibility=0 mIsTranslucent=true 2022-01-24 11:47:42.269 439-439/? D/SurfaceFlinger: Display 0 HWC layers: CLIENT | 0xeeedc500 | 0002 | RGBA_8888 | 0.0 0.0 396.0 396.0 | 37 37 359 359 | io.homeassistant.companion.android/i[...]roid.onboarding.OnboardingActivity#0 CLIENT | 0xeff8f100 | 0000 | RGBA_8888 | 0.0 0.0 376.0 396.0 | 20 0 396 396 | io.homeassistant.companion.android/a[...]wear.activity.ConfirmationActivity#0 2022-01-24 11:47:42.684 554-598/? I/WindowManager: Reparenting to original parent: Surface(name=Task=363)/@0xeee3e1c, destroy=true, surface=Surface(name=ActivityRecord{86d705f u0 io.homeassistant.companion.android/.onboarding.OnboardingActivity)/@0xc56b055 2022-01-24 11:47:42.689 554-598/? I/WindowManager: Reparenting to original parent: Surface(name=Task=363)/@0xeee3e1c, destroy=true, surface=Surface(name=ActivityRecord{9aaa51d u0 io.homeassistant.companion.android/androidx.wear.activity.ConfirmationActivity)/@0x2bbcc78 2022-01-24 11:47:42.693 439-439/? D/SurfaceFlinger: Display 0 HWC layers: CLIENT | 0xeeedc380 | 0002 | RGBA_8888 | 0.0 0.0 396.0 396.0 | 0 0 396 396 | io.homeassistant.companion.android/i[...]roid.onboarding.OnboardingActivity#0 2022-01-24 11:47:42.694 554-598/? V/WindowManager: Setting visibility of Window{d153160 u0 io.homeassistant.companion.android/androidx.wear.activity.ConfirmationActivity}: false, caller=com.android.server.wm.WindowContainer.sendAppVisibilityToClients:946 com.android.server.wm.ActivityRecord.setClientVisible:5637 com.android.server.wm.ActivityRecord.onAnimationFinished:6300 com.android.server.wm.-$$Lambda$dwJG8BAnLlvKNGuDY9U3-haNY4M.onAnimationFinished:2 com.android.server.wm.SurfaceAnimator.lambda$getFinishedCallback$0$SurfaceAnimator:113 com.android.server.wm.-$$Lambda$SurfaceAnimator$qxm0Z0Ve0b3lKnyQQMgWVQfTP3Q.run:8 com.android.server.wm.SurfaceAnimator.lambda$getFinishedCallback$1$SurfaceAnimator:123 com.android.server.wm.-$$Lambda$SurfaceAnimator$Y4hCTFZUnyoMqrbq2rxOWj68ccg.onAnimationFinished:4 com.android.server.wm.LocalAnimationAdapter.lambda$startAnimation$0$LocalAnimationAdapter:56 com.android.server.wm.-$$Lambda$LocalAnimationAdapter$zbLki1x5Fhwh-g7q-dA43aw6Y4M.run:6 android.os.Handler.handleCallback:938 android.os.Handler.dispatchMessage:99 android.os.Looper.loop:246 android.os.HandlerThread.run:67 2022-01-24 11:47:42.705 439-456/? E/BufferQueueProducer: [io.homeassistant.companion.android/androidx.wear.activity.ConfirmationActivity#0](id:1b7000006f5,api:0,p:-1,c:439) disconnect: not connected (req=1) 2022-01-24 11:47:42.709 554-14795/? V/WindowManager: Relayout Window{d153160 u0 io.homeassistant.companion.android/androidx.wear.activity.ConfirmationActivity}: viewVisibility=8 req=396x396 2022-01-24 11:47:42.744 554-14795/? I/WindowManager: Destroying surface Surface(name=io.homeassistant.companion.android/androidx.wear.activity.ConfirmationActivity)/@0x89f741c called by com.android.server.wm.WindowStateAnimator.destroySurface:1588 com.android.server.wm.WindowStateAnimator.destroySurfaceLocked:647 com.android.server.wm.WindowState.removeImmediately:2199 com.android.server.wm.WindowState.removeIfPossible:2327 com.android.server.wm.WindowState.removeIfPossible:2214 com.android.server.wm.WindowManagerService.removeWindow:1929 com.android.server.wm.Session.remove:198 android.view.IWindowSession$Stub.onTransact:782 2022-01-24 11:47:45.895 554-554/? D/AmbientService: [AmbientService] maybeDelayDefaultActivityAfterTriggeringAmbientLiteLocked(1544) > autoResumeActivity: Stack id=363 bounds=[0,0][396,396] displayId=0 userId=0 configuration={1.0 ?mcc?mnc [sv_SE] ldltr sw198dp w198dp h198dp 320dpi smll port watch finger -keyb/v/h -nav/h winConfig={ mBounds=Rect(0, 0 - 396, 396) mAppBounds=Rect(0, 0 - 396, 396) mWindowingMode=fullscreen mDisplayWindowingMode=fullscreen mActivityType=standard mAlwaysOnTop=undefined mRotation=ROTATION_0} s.6} ff=0 taskId=363: io.homeassistant.companion.android/io.homeassistant.companion.android.splash.SplashActivity bounds=[0,0][396,396] userId=0 visible=true topActivity=ComponentInfo{io.homeassistant.companion.android/io.homeassistant.companion.android.onboarding.OnboardingActivity} 2022-01-24 11:47:45.901 554-554/? D/AmbientService: App io.homeassistant.companion.android is not ongoing. 2022-01-24 11:47:46.021 439-439/? D/SurfaceFlinger: Display 0 HWC layers: DEVICE | 0xeeedc380 | 0002 | RGBA_8888 | 0.0 0.0 396.0 396.0 | 0 0 396 396 | io.homeassistant.companion.android/i[...]roid.onboarding.OnboardingActivity#0 DEVICE | 0xeff8f100 | 0000 | RGBA_8888 | 0.0 0.0 396.0 396.0 | 0 0 396 396 | AmbientLite#0 2022-01-24 11:47:46.022 554-554/? D/AmbientService: [AmbientService] doLaunchDefaultActivityWithAutoResumeLocked(1615) > autoResumeActivity : Stack id=363 bounds=[0,0][396,396] displayId=0 userId=0 configuration={1.0 ?mcc?mnc [sv_SE] ldltr sw198dp w198dp h198dp 320dpi smll port watch finger -keyb/v/h -nav/h winConfig={ mBounds=Rect(0, 0 - 396, 396) mAppBounds=Rect(0, 0 - 396, 396) mWindowingMode=fullscreen mDisplayWindowingMode=fullscreen mActivityType=standard mAlwaysOnTop=undefined mRotation=ROTATION_0} s.6} ff=0 taskId=363: io.homeassistant.companion.android/io.homeassistant.companion.android.splash.SplashActivity bounds=[0,0][396,396] userId=0 visible=true topActivity=ComponentInfo{io.homeassistant.companion.android/io.homeassistant.companion.android.onboarding.OnboardingActivity} 2022-01-24 11:47:46.052 554-1376/? V/WindowManager: Changing focus from Window{234e9a u0 io.homeassistant.companion.android/io.homeassistant.companion.android.onboarding.OnboardingActivity} to null displayId=0 Callers=com.android.server.wm.RootWindowContainer.updateFocusedWindowLocked:459 com.android.server.wm.WindowManagerService.updateFocusedWindowLocked:5664 com.android.server.wm.ActivityRecord.commitVisibility:4366 com.android.server.wm.ActivityRecord.setVisibility:4308 2022-01-24 11:47:46.057 554-1376/? V/WindowManager: Setting visibility of Window{234e9a u0 io.homeassistant.companion.android/io.homeassistant.companion.android.onboarding.OnboardingActivity}: false, caller=com.android.server.wm.WindowContainer.sendAppVisibilityToClients:946 com.android.server.wm.ActivityRecord.setClientVisible:5637 com.android.server.wm.ActivityRecord.onAnimationFinished:6300 com.android.server.wm.ActivityRecord.postApplyAnimation:4391 com.android.server.wm.ActivityRecord.commitVisibility:4373 com.android.server.wm.ActivityRecord.setVisibility:4308 com.android.server.wm.ActivityRecord.setVisibility:4180 com.android.server.wm.ActivityRecord.makeInvisible:4783 com.android.server.wm.EnsureActivitiesVisibleHelper.setActivityVisibilityState:173 com.android.server.wm.EnsureActivitiesVisibleHelper.lambda$Bbb3nMFa3F8er_OBuKA7-SpeSKo:0 com.android.server.wm.-$$Lambda$EnsureActivitiesVisibleHelper$Bbb3nMFa3F8er_OBuKA7-SpeSKo.accept:12 com.android.internal.util.function.pooled.PooledLambdaImpl.doInvoke:307 com.android.internal.util.function.pooled.PooledLambdaImpl.invoke:201 com.android.internal.util.function.pooled.OmniFunction.accept:92 2022-01-24 11:47:46.060 554-1376/? D/WindowManager: Snapshot mode: 0 task: Task{a1553bb #363 visible=true type=standard mode=fullscreen translucent=false A=10126:io.homeassistant.companion.android U=0 StackId=363 sz=1} / null 2022-01-24 11:47:46.072 439-917/? E/BufferQueueProducer: [io.homeassistant.companion.android/io.homeassistant.companion.android.onboarding.OnboardingActivity#0](id:1b7000006f6,api:0,p:-1,c:439) disconnect: not connected (req=1) 2022-01-24 11:47:46.074 554-12877/? V/WindowManager: Relayout Window{234e9a u0 io.homeassistant.companion.android/io.homeassistant.companion.android.onboarding.OnboardingActivity}: viewVisibility=8 req=396x396 2022-01-24 11:47:46.092 554-597/? W/ProcessStats: Tracking association SourceState{854a7ea io.homeassistant.companion.android/10126 Top #619006} whose proc state 1 is better than process ProcessState{cd9e3e9 com.google.android.gms.persistent/10109 pkg=com.google.android.gms} proc state 2 (5 skipped) 2022-01-24 11:47:46.390 554-14795/? V/WindowManager: Relayout Window{234e9a u0 io.homeassistant.companion.android/io.homeassistant.companion.android.onboarding.OnboardingActivity}: viewVisibility=8 req=396x396 2022-01-24 11:47:46.421 554-14795/? I/WindowManager: Destroying surface Surface(name=io.homeassistant.companion.android/io.homeassistant.companion.android.onboarding.OnboardingActivity)/@0x5ea7286 called by com.android.server.wm.WindowStateAnimator.destroySurface:1588 com.android.server.wm.WindowStateAnimator.destroySurfaceLocked:647 com.android.server.wm.WindowState.destroySurfaceUnchecked:3297 com.android.server.wm.WindowState.destroySurface:3271 com.android.server.wm.ActivityRecord.destroySurfaces:4617 com.android.server.wm.ActivityRecord.destroySurfaces:4598 com.android.server.wm.ActivityRecord.notifyAppStopped:4651 com.android.server.wm.ActivityRecord.activityStopped:5191 2022-01-24 11:47:46.716 554-554/? D/AmbientService: App io.homeassistant.companion.android is not ongoing. 2022-01-24 11:48:06.085 554-12877/? V/WindowManager: Setting visibility of Window{234e9a u0 io.homeassistant.companion.android/io.homeassistant.companion.android.onboarding.OnboardingActivity}: true, caller=com.android.server.wm.WindowContainer.sendAppVisibilityToClients:946 com.android.server.wm.ActivityRecord.setClientVisible:5637 com.android.server.wm.ActivityRecord.setVisibility:4267 com.android.server.wm.ActivityRecord.setVisibility:4180 com.android.server.wm.ActivityStack.resumeTopActivityInnerLocked:1857 com.android.server.wm.ActivityStack.resumeTopActivityUncheckedLocked:1548 com.android.server.wm.ActivityRecord.makeActiveIfNeeded:4828 com.android.server.wm.RootWindowContainer.resumeFocusedStacksTopActivities:2351 com.android.server.wm.RootWindowContainer.resumeFocusedStacksTopActivities:2311 com.android.server.wm.RootWindowContainer.applySleepTokens:2418 com.android.server.wm.ActivityTaskManagerService.updateSleepIfNeededLocked:5777 com.android.server.wm.RootWindowContainer.removeSleepToken:2692 com.android.server.wm.RootWindowContainer.access$300:177 com.android.server.wm.RootWindowContainer$SleepTokenImpl.release:3707 2022-01-24 11:48:06.165 554-12734/? V/WindowManager: Relayout Window{234e9a u0 io.homeassistant.companion.android/io.homeassistant.companion.android.onboarding.OnboardingActivity}: viewVisibility=4 req=396x396 2022-01-24 11:48:06.182 554-554/? V/WindowManager: Setting visibility of Window{234e9a u0 io.homeassistant.companion.android/io.homeassistant.companion.android.onboarding.OnboardingActivity}: false, caller=com.android.server.wm.WindowContainer.sendAppVisibilityToClients:946 com.android.server.wm.ActivityRecord.setClientVisible:5637 com.android.server.wm.ActivityRecord.onAnimationFinished:6300 com.android.server.wm.ActivityRecord.postApplyAnimation:4391 com.android.server.wm.ActivityRecord.commitVisibility:4373 com.android.server.wm.ActivityRecord.setVisibility:4308 com.android.server.wm.ActivityRecord.setVisibility:4180 com.android.server.wm.ActivityRecord.makeInvisible:4783 com.android.server.wm.EnsureActivitiesVisibleHelper.setActivityVisibilityState:173 com.android.server.wm.EnsureActivitiesVisibleHelper.lambda$Bbb3nMFa3F8er_OBuKA7-SpeSKo:0 com.android.server.wm.-$$Lambda$EnsureActivitiesVisibleHelper$Bbb3nMFa3F8er_OBuKA7-SpeSKo.accept:12 com.android.internal.util.function.pooled.PooledLambdaImpl.doInvoke:307 com.android.internal.util.function.pooled.PooledLambdaImpl.invoke:201 com.android.internal.util.function.pooled.OmniFunction.accept:92 2022-01-24 11:48:06.182 554-554/? D/WindowManager: Snapshot mode: 0 task: Task{a1553bb #363 visible=true type=standard mode=fullscreen translucent=false A=10126:io.homeassistant.companion.android U=0 StackId=363 sz=1} / null 2022-01-24 11:48:06.214 554-12734/? V/WindowManager: Relayout Window{234e9a u0 io.homeassistant.companion.android/io.homeassistant.companion.android.onboarding.OnboardingActivity}: viewVisibility=0 req=396x396 2022-01-24 11:48:06.234 554-1376/? V/WindowManager: Relayout Window{234e9a u0 io.homeassistant.companion.android/io.homeassistant.companion.android.onboarding.OnboardingActivity}: viewVisibility=8 req=396x396 2022-01-24 11:48:06.315 554-673/? V/WindowManager: Relayout Window{234e9a u0 io.homeassistant.companion.android/io.homeassistant.companion.android.onboarding.OnboardingActivity}: viewVisibility=8 req=396x396`

I solved not being able to initially connect by removing the trusted_networks bit.

I have this problem right now. Currently watching my watch fail miserably at it’s attempt to load my entities.

I will now remove this trusted proxy bit and let you know if makes any difference.

Just going to add that my Ticwatch 3 Pro GPS also has the same issue, but I actually started noticing the no connection icon starting right when Google dropped Google Assistant support for Wear OS 2. Most functions would still work, but not everything. I only set up Home Assistant yesterday and thought Bluetooth connectivity might be the issue immediately. Disabling Bluetooth so Wifi turns on made it work, but obviously this won’t work when we’re out and about.

I have a spare RPI Model B w/26-pin GPIO, 256 MB, one 10/100 ethernet, two USB-1 ports and an RCA audio jack - circa 2012. Would that qualify as a potato???

I opted to do it right with a Celeron N5105 Mini PC Quad Core 4 Intel i225 2.5G LAN 2xDDR4 NVMe pfSense Firewall Appliance

I’m also running split DNS. I’ve just added the local IP of my HA install as the local address in the app, and my GW4 is working nicely over Bluetooth while my phone is on the wifi.

Samsung Galaxy S22 Samsung Galaxy Watch 4

For what it’s worth:

I was unable to sign in with the WearOS companion; logcat showed the app was resolving my domain name (home.xxxx.com) to my WAN IP, even with Bluetooth disabled. This lead me to believe it was not using my internal DNS servers, which would have resolved the domain name to an internal IP.

After enabling NAT reflection in my firewall, which causes LAN-based traffic sent to the WAN IP to be redirected per existing NAT/port forwarding rules back to the LAN, my issues went away and I was able to successfully configure the WearOS app.

My point is, I think the WearOS device may ignore local DNS settings, regardless of whether the device is proxied via BT on the phone, or using the WiFi interface.

The giveaway in my case was this:

OnboardingPresenter: java.net.SocketTimeoutException: failed to connect to home.xxxxx.com[my external URL]/##.###.##.## [my WAN IP] (port 8123) from /192.168.10.60 [watch's DHCP-assigned WiFi IP] (port 55836) after 10000ms

Hey, had the same problem with my app. With the code below it always prefers direct wifi-connection if it is available.

Maybe it is usefull for you.

override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        // ### Prefer WIFI over BT-PROXY if wifi is available
        //Get Service
        val connectivityManager = this.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
        val callback = object : ConnectivityManager.NetworkCallback() {
            //If Wifi is available
            override fun onAvailable(network: Network) {
                super.onAvailable(network)
                //Use it!
                connectivityManager.bindProcessToNetwork(network)
            }
            override fun onLost(network: Network) {
                super.onLost(network)
                //Use default (BT-proxy), if no wifi available
                connectivityManager.bindProcessToNetwork(null)
            }
        }
        //First check if Wifi is connected, if yes, use it!
        for (net in connectivityManager.allNetworks) {
            val networkInfo = connectivityManager.getNetworkInfo(net)
            if (networkInfo!!.type == ConnectivityManager.TYPE_WIFI) {
                connectivityManager.bindProcessToNetwork(net)
                break
            }
        }
        //Get notified if wifi state-changes
        connectivityManager.registerNetworkCallback(
            NetworkRequest.Builder().addTransportType(NetworkCapabilities.TRANSPORT_WIFI).build(),
            callback
        )

Hi. Not sure if it relates to this problem but, BT or not, I cannot load any entities. It’ll just render a blank black page when I go into “all entities” menu.

Please create a new issue and if possible attach logcat logs from the watch, we need to see what the error is. Try to provide screenshots of the homescreen as well. Be descriptive please 😃 Make sure to fill our the issue template completely too.

will do. i’m still new in this thingies, so i’ll have to find out how to get those logs etc. I’ll make sure I’ll open an issue tomorrow

Hi. Not sure if it relates to this problem but, BT or not, I cannot load any entities. It’ll just render a blank black page when I go into “all entities” menu.

Please create a new issue and if possible attach logcat logs from the watch, we need to see what the error is. Try to provide screenshots of the homescreen as well. Be descriptive please 😃 Make sure to fill our the issue template completely too.

Gotta love beta testing 😉

Yup and now I have neither and it does look like I’m making progress.

Seem to have lost my favourites but I’ll just put them back 👍

thanks @asjmcguire so looks like the log we are expecting is not there, I just submitted #2007 to add a failure listener so hopefully that will show us the issue here.

Here are the logs for the phone - hopefully with as much identifiable information redacted as possible.

https://controlc.com/79991ce7

Sorry for not having them yet. I am currently pretty busy with my daily workload but I will try to provide the logs as soon as possible. I will also try to keep you up to date with version numbers and potential solutions or problem sources.