Android Debug Bridge status not updating

  • Platform information:
    • Hardware: Docker on Intel Atom x86_64 with 2GB RAM
    • OS: Debian 11 Bulseye
    • Java Runtime Environment: *
    • openHAB version: 3.3

I have an OH setup with Android Debug Bridge binding and I have created a thing with AndroidDebugBridge for my Mi TV. The thing shows different statuses of the android device like ONLINE, OFFLINE, UNKNOWN, UNINITIALIZED etc. I have a rule to trigger a shell script which will turn off the smart plug connected to the TV, when the thing’s status changes to OFFLINE.

The setup was working without any issues till last month. Recently while troubleshooting, I found that the status of the thing is not changing when the TV is turned off by remote.

I have tried to debug this by running OH3 docker container on a Pi 4 and tried to install it on the host machine as well, all of them returns the same behavior.

The thing status is not getting updated when I turn off TV with remote (no ping). However, when I turn back the TV on and when it connects to network, suddenly the Thing status changes to OFFLINE and then to ONLINE.

See the logs below,


2022-07-02 15:46:28.816 [INFO ] [ab.event.ThingStatusInfoChangedEvent] - Thing 'androiddebugbridge:android:0a26559a6d' changed from ONLINE to OFFLINE (COMMUNICATION_ERROR): java.lang.IllegalStateException: connect() must be called first
2022-07-02 15:46:58.950 [INFO ] [ab.event.ThingStatusInfoChangedEvent] - Thing 'androiddebugbridge:android:0a26559a6d' changed from OFFLINE (COMMUNICATION_ERROR): java.lang.IllegalStateException: connect() must be called first to ONLINE


2022-07-02 15:46:28.811 [WARN ] [mmon.WrappedScheduledExecutorService] - Scheduled runnable ended with an exception:
java.lang.IllegalStateException: connect() must be called first
        at ~[?:?]
        at org.openhab.binding.androiddebugbridge.internal.AndroidDebugBridgeDevice.lambda$5( ~[?:?]
        at ~[?:?]
        at java.util.concurrent.ScheduledThreadPoolExecutor$ ~[?:?]
        at java.util.concurrent.ThreadPoolExecutor.runWorker( [?:?]
        at java.util.concurrent.ThreadPoolExecutor$ [?:?]
        at [?:?]

I suspect this might also be an issue with my Android TV.

Any help would be much appreciated.