Skip to content

Device setup: Fail to send device commands after connecting to Wi-Fi on Android 12+ #111

@markoImake

Description

@markoImake

If your app targets sdk 31 and above, the device setup process is not working anymore. It fails after you connect to the device AP, at the point where it is trying to send a device command to get the device ID.

Tested with latest particle repo code, using Pixel 6a running Android 13. If you build the project using targetSdk 30 it works fine as before (same as production version of particle app on play store). But if you change the targetSdk to 31 (or 32/33), the issue occurs.

Might be related to changes in Android 12 - https://developer.android.com/about/versions/12/behavior-changes-12#concurrent-connections

See video showing behaviour when target sdk 31+ https://drive.google.com/file/d/10-BuJg1R71d3_qY8rlUo--bFdv0wqPJe/view?usp=share_link

See console logs during setup process below.

I/io.particle.android.sdk.devicesetup.apconnector.ApConnectorApi29: onAvailable: 139
D/DiscoverDeviceActivity: Waiting a couple seconds before trying the socket connection...
I/io.particle.android.sdk.devicesetup.apconnector.ApConnectorApi29: onCapabilitiesChanged: 139, caps: [ Transports: WIFI Capabilities: NOT_METERED&NOT_RESTRICTED&TRUSTED&NOT_VPN&NOT_ROAMING&FOREGROUND&NOT_CONGESTED&NOT_SUSPENDED&NOT_VCN_MANAGED LinkUpBandwidth>=72000Kbps LinkDnBandwidth>=72000Kbps TransportInfo: <SSID: , BSSID: 02:00:00:00:00:00, MAC: 02:00:00:00:00:00, IP: /192.168.0.2, Security type: 0, Supplicant state: COMPLETED, Wi-Fi standard: 4, RSSI: -127, Link speed: -1Mbps, Tx Link speed: -1Mbps, Max Supported Tx Link speed: 72Mbps, Rx Link speed: -1Mbps, Max Supported Rx Link speed: 72Mbps, Frequency: 2462MHz, Net ID: -1, Metered hint: false, score: 0, isUsable: true, CarrierMerged: false, SubscriptionId: -1, IsPrimary: -1, Trusted: true, Restricted: false, Ephemeral: true, OEM paid: false, OEM private: false, OSU AP: false, FQDN: , Provider friendly name: , Requesting package name: io.particle.android.appMLO Information: , AP MLD Address: , AP MLO Link Id: , AP MLO Affiliated links: > UnderlyingNetworks: Null]
I/io.particle.android.sdk.devicesetup.apconnector.ApConnectorApi29: onLinkPropertiesChanged: 139
I/io.particle.android.sdk.devicesetup.apconnector.ApConnectorApi29: onBlockedStatusChanged: 139, blocked=false
I/io.particle.android.sdk.devicesetup.apconnector.ApConnectorApi29: onCapabilitiesChanged: 139, caps: [ Transports: WIFI Capabilities: NOT_METERED&NOT_RESTRICTED&TRUSTED&NOT_VPN&NOT_ROAMING&FOREGROUND&NOT_CONGESTED&NOT_SUSPENDED&NOT_VCN_MANAGED LinkUpBandwidth>=10000Kbps LinkDnBandwidth>=10000Kbps TransportInfo: <SSID: , BSSID: 02:00:00:00:00:00, MAC: 02:00:00:00:00:00, IP: /192.168.0.2, Security type: 0, Supplicant state: COMPLETED, Wi-Fi standard: 4, RSSI: -69, Link speed: 58Mbps, Tx Link speed: 58Mbps, Max Supported Tx Link speed: 72Mbps, Rx Link speed: 72Mbps, Max Supported Rx Link speed: 72Mbps, Frequency: 2462MHz, Net ID: -1, Metered hint: false, score: 0, isUsable: true, CarrierMerged: false, SubscriptionId: -1, IsPrimary: -1, Trusted: true, Restricted: false, Ephemeral: true, OEM paid: false, OEM private: false, OSU AP: false, FQDN: , Provider friendly name: , Requesting package name: io.particle.android.appMLO Information: , AP MLD Address: , AP MLO Link Id: , AP MLO Affiliated links: > SignalStrength: -69 UnderlyingNetworks: Null]
I/io.particle.android.sdk.devicesetup.apconnector.ApConnectorApi29: onCapabilitiesChanged: 139, caps: [ Transports: WIFI Capabilities: NOT_METERED&NOT_RESTRICTED&TRUSTED&NOT_VPN&VALIDATED&NOT_ROAMING&FOREGROUND&NOT_CONGESTED&NOT_SUSPENDED&NOT_VCN_MANAGED LinkUpBandwidth>=10000Kbps LinkDnBandwidth>=10000Kbps TransportInfo: <SSID: , BSSID: 02:00:00:00:00:00, MAC: 02:00:00:00:00:00, IP: /192.168.0.2, Security type: 0, Supplicant state: COMPLETED, Wi-Fi standard: 4, RSSI: -69, Link speed: 58Mbps, Tx Link speed: 58Mbps, Max Supported Tx Link speed: 72Mbps, Rx Link speed: 72Mbps, Max Supported Rx Link speed: 72Mbps, Frequency: 2462MHz, Net ID: -1, Metered hint: false, score: 0, isUsable: true, CarrierMerged: false, SubscriptionId: -1, IsPrimary: -1, Trusted: true, Restricted: false, Ephemeral: true, OEM paid: false, OEM private: false, OSU AP: false, FQDN: , Provider friendly name: , Requesting package name: io.particle.android.appMLO Information: , AP MLD Address: , AP MLO Link Id: , AP MLO Affiliated links: > SignalStrength: -69 UnderlyingNetworks: Null]
I/CommandClient: Preparing to send command 'device-id'
I/CommandClient: *** BUILT COMMAND DATA: 'device-id\n0\n\n'
D/TrafficStats: tagSocket(117) with statsTag=0xffffffff, statsUid=-1
D/EZ: Can't close closable, arg was null.
D/DiscoverDeviceActivity: Setup exception thrown:
io.particle.android.sdk.devicesetup.setupsteps.SetupStepException: Process died while trying to get the device ID
at io.particle.android.sdk.devicesetup.ui.DiscoverProcessWorker.doTheThing(DiscoverProcessWorker.java:48)
at io.particle.android.sdk.devicesetup.ui.DiscoverDeviceActivity$1.doInBackground(DiscoverDeviceActivity.java:324)
at io.particle.android.sdk.devicesetup.ui.DiscoverDeviceActivity$1.doInBackground(DiscoverDeviceActivity.java:314)
at android.os.AsyncTask$3.call(AsyncTask.java:394)
at java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1137)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:637)
at java.lang.Thread.run(Thread.java:1012)
Caused by: java.net.ConnectException: failed to connect to /192.168.0.1 (port 5609) from /192.168.1.222 (port 45972) after 10000ms: isConnected failed: EHOSTUNREACH (No route to host)
at libcore.io.IoBridge.isConnected(IoBridge.java:347)
at libcore.io.IoBridge.connectErrno(IoBridge.java:237)
at libcore.io.IoBridge.connect(IoBridge.java:179)
at java.net.PlainSocketImpl.socketConnect(PlainSocketImpl.java:142)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:390)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:230)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:212)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:436)
at java.net.Socket.connect(Socket.java:646)
at io.particle.android.sdk.devicesetup.commands.NetworkBindingSocketFactory.createSocket(NetworkBindingSocketFactory.java:46)
at io.particle.android.sdk.devicesetup.commands.CommandClient.sendAndMaybeReceive(CommandClient.java:55)
at io.particle.android.sdk.devicesetup.commands.CommandClient.sendCommand(CommandClient.java:44)
at io.particle.android.sdk.devicesetup.ui.DiscoverProcessWorker.doTheThing(DiscoverProcessWorker.java:42)
at io.particle.android.sdk.devicesetup.ui.DiscoverDeviceActivity$1.doInBackground(DiscoverDeviceActivity.java:324) 
at io.particle.android.sdk.devicesetup.ui.DiscoverDeviceActivity$1.doInBackground(DiscoverDeviceActivity.java:314) 
at android.os.AsyncTask$3.call(AsyncTask.java:394) 
at java.util.concurrent.FutureTask.run(FutureTask.java:264) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1137) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:637) 
at java.lang.Thread.run(Thread.java:1012) 
Caused by: android.system.ErrnoException: isConnected failed: EHOSTUNREACH (No route to host)
at libcore.io.IoBridge.isConnected(IoBridge.java:334)
at libcore.io.IoBridge.connectErrno(IoBridge.java:237) 
at libcore.io.IoBridge.connect(IoBridge.java:179) 
at java.net.PlainSocketImpl.socketConnect(PlainSocketImpl.java:142) 
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:390) 
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:230) 
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:212) 
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:436) 
at java.net.Socket.connect(Socket.java:646) 
at io.particle.android.sdk.devicesetup.commands.NetworkBindingSocketFactory.createSocket(NetworkBindingSocketFactory.java:46) 
at io.particle.android.sdk.devicesetup.commands.CommandClient.sendAndMaybeReceive(CommandClient.java:55) 
at io.particle.android.sdk.devicesetup.commands.CommandClient.sendCommand(CommandClient.java:44) 
at io.particle.android.sdk.devicesetup.ui.DiscoverProcessWorker.doTheThing(DiscoverProcessWorker.java:42) 
at io.particle.android.sdk.devicesetup.ui.DiscoverDeviceActivity$1.doInBackground(DiscoverDeviceActivity.java:324) 
at io.particle.android.sdk.devicesetup.ui.DiscoverDeviceActivity$1.doInBackground(DiscoverDeviceActivity.java:314) 
at android.os.AsyncTask$3.call(AsyncTask.java:394) 
at java.util.concurrent.FutureTask.run(FutureTask.java:264) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1137) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:637) 
at java.lang.Thread.run(Thread.java:1012) 
D/DiscoverDeviceActivity: Waiting a couple seconds before trying the socket connection...
I/CommandClient: Preparing to send command 'device-id'
*** BUILT COMMAND DATA: 'device-id\n0\n\n'
D/TrafficStats: tagSocket(117) with statsTag=0xffffffff, statsUid=-1
D/EZ: Can't close closable, arg was null.
D/DiscoverDeviceActivity: Setup exception thrown:
io.particle.android.sdk.devicesetup.setupsteps.SetupStepException: Process died while trying to get the device ID
at io.particle.android.sdk.devicesetup.ui.DiscoverProcessWorker.doTheThing(DiscoverProcessWorker.java:48)
at io.particle.android.sdk.devicesetup.ui.DiscoverDeviceActivity$1.doInBackground(DiscoverDeviceActivity.java:324)
at io.particle.android.sdk.devicesetup.ui.DiscoverDeviceActivity$1.doInBackground(DiscoverDeviceActivity.java:314)
at android.os.AsyncTask$3.call(AsyncTask.java:394)
at java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1137)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:637)
at java.lang.Thread.run(Thread.java:1012)
Caused by: java.net.ConnectException: failed to connect to /192.168.0.1 (port 5609) from /192.168.1.222 (port 45974) after 10000ms: isConnected failed: EHOSTUNREACH (No route to host)
at libcore.io.IoBridge.isConnected(IoBridge.java:347)
at libcore.io.IoBridge.connectErrno(IoBridge.java:237)
at libcore.io.IoBridge.connect(IoBridge.java:179)
at java.net.PlainSocketImpl.socketConnect(PlainSocketImpl.java:142)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:390)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:230)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:212)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:436)
at java.net.Socket.connect(Socket.java:646)
at io.particle.android.sdk.devicesetup.commands.NetworkBindingSocketFactory.createSocket(NetworkBindingSocketFactory.java:46)
at io.particle.android.sdk.devicesetup.commands.CommandClient.sendAndMaybeReceive(CommandClient.java:55)
at io.particle.android.sdk.devicesetup.commands.CommandClient.sendCommand(CommandClient.java:44)
at io.particle.android.sdk.devicesetup.ui.DiscoverProcessWorker.doTheThing(DiscoverProcessWorker.java:42)
at io.particle.android.sdk.devicesetup.ui.DiscoverDeviceActivity$1.doInBackground(DiscoverDeviceActivity.java:324) 
at io.particle.android.sdk.devicesetup.ui.DiscoverDeviceActivity$1.doInBackground(DiscoverDeviceActivity.java:314) 
at android.os.AsyncTask$3.call(AsyncTask.java:394) 
at java.util.concurrent.FutureTask.run(FutureTask.java:264) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1137) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:637) 
at java.lang.Thread.run(Thread.java:1012) 
Caused by: android.system.ErrnoException: isConnected failed: EHOSTUNREACH (No route to host)
at libcore.io.IoBridge.isConnected(IoBridge.java:334)
at libcore.io.IoBridge.connectErrno(IoBridge.java:237) 
at libcore.io.IoBridge.connect(IoBridge.java:179) 
at java.net.PlainSocketImpl.socketConnect(PlainSocketImpl.java:142) 
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:390) 
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:230) 
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:212) 
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:436) 
at java.net.Socket.connect(Socket.java:646) 
at io.particle.android.sdk.devicesetup.commands.NetworkBindingSocketFactory.createSocket(NetworkBindingSocketFactory.java:46) 
at io.particle.android.sdk.devicesetup.commands.CommandClient.sendAndMaybeReceive(CommandClient.java:55) 
at io.particle.android.sdk.devicesetup.commands.CommandClient.sendCommand(CommandClient.java:44) 
at io.particle.android.sdk.devicesetup.ui.DiscoverProcessWorker.doTheThing(DiscoverProcessWorker.java:42) 
at io.particle.android.sdk.devicesetup.ui.DiscoverDeviceActivity$1.doInBackground(DiscoverDeviceActivity.java:324) 
at io.particle.android.sdk.devicesetup.ui.DiscoverDeviceActivity$1.doInBackground(DiscoverDeviceActivity.java:314) 
at android.os.AsyncTask$3.call(AsyncTask.java:394) 
at java.util.concurrent.FutureTask.run(FutureTask.java:264) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1137) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:637) 
at java.lang.Thread.run(Thread.java:1012) 
D/DiscoverDeviceActivity: Waiting a couple seconds before trying the socket connection...
W/cle.android.app: Cleared Reference was only reachable from finalizer (only reported once)
I/CommandClient: Preparing to send command 'device-id'
I/CommandClient: *** BUILT COMMAND DATA: 'device-id\n0\n\n'
D/TrafficStats: tagSocket(5) with statsTag=0xffffffff, statsUid=-1
D/EZ: Can't close closable, arg was null.
D/DiscoverDeviceActivity: Setup exception thrown:
io.particle.android.sdk.devicesetup.setupsteps.SetupStepException: Process died while trying to get the device ID
at io.particle.android.sdk.devicesetup.ui.DiscoverProcessWorker.doTheThing(DiscoverProcessWorker.java:48)
at io.particle.android.sdk.devicesetup.ui.DiscoverDeviceActivity$1.doInBackground(DiscoverDeviceActivity.java:324)
at io.particle.android.sdk.devicesetup.ui.DiscoverDeviceActivity$1.doInBackground(DiscoverDeviceActivity.java:314)
at android.os.AsyncTask$3.call(AsyncTask.java:394)
at java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1137)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:637)
at java.lang.Thread.run(Thread.java:1012)
Caused by: java.net.ConnectException: failed to connect to /192.168.0.1 (port 5609) from /192.168.1.222 (port 45980) after 10000ms: isConnected failed: EHOSTUNREACH (No route to host)
at libcore.io.IoBridge.isConnected(IoBridge.java:347)
at libcore.io.IoBridge.connectErrno(IoBridge.java:237)
at libcore.io.IoBridge.connect(IoBridge.java:179)
at java.net.PlainSocketImpl.socketConnect(PlainSocketImpl.java:142)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:390)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:230)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:212)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:436)
at java.net.Socket.connect(Socket.java:646)
at io.particle.android.sdk.devicesetup.commands.NetworkBindingSocketFactory.createSocket(NetworkBindingSocketFactory.java:46)
at io.particle.android.sdk.devicesetup.commands.CommandClient.sendAndMaybeReceive(CommandClient.java:55)
at io.particle.android.sdk.devicesetup.commands.CommandClient.sendCommand(CommandClient.java:44)
at io.particle.android.sdk.devicesetup.ui.DiscoverProcessWorker.doTheThing(DiscoverProcessWorker.java:42)
at io.particle.android.sdk.devicesetup.ui.DiscoverDeviceActivity$1.doInBackground(DiscoverDeviceActivity.java:324) 
at io.particle.android.sdk.devicesetup.ui.DiscoverDeviceActivity$1.doInBackground(DiscoverDeviceActivity.java:314) 
at android.os.AsyncTask$3.call(AsyncTask.java:394) 
at java.util.concurrent.FutureTask.run(FutureTask.java:264) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1137) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:637) 
at java.lang.Thread.run(Thread.java:1012) 
Caused by: android.system.ErrnoException: isConnected failed: EHOSTUNREACH (No route to host)
at libcore.io.IoBridge.isConnected(IoBridge.java:334)
at libcore.io.IoBridge.connectErrno(IoBridge.java:237) 
at libcore.io.IoBridge.connect(IoBridge.java:179) 
at java.net.PlainSocketImpl.socketConnect(PlainSocketImpl.java:142) 
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:390) 
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:230) 
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:212) 
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:436) 
at java.net.Socket.connect(Socket.java:646) 
at io.particle.android.sdk.devicesetup.commands.NetworkBindingSocketFactory.createSocket(NetworkBindingSocketFactory.java:46) 
at io.particle.android.sdk.devicesetup.commands.CommandClient.sendAndMaybeReceive(CommandClient.java:55) 
at io.particle.android.sdk.devicesetup.commands.CommandClient.sendCommand(CommandClient.java:44) 
at io.particle.android.sdk.devicesetup.ui.DiscoverProcessWorker.doTheThing(DiscoverProcessWorker.java:42) 
at io.particle.android.sdk.devicesetup.ui.DiscoverDeviceActivity$1.doInBackground(DiscoverDeviceActivity.java:324) 
at io.particle.android.sdk.devicesetup.ui.DiscoverDeviceActivity$1.doInBackground(DiscoverDeviceActivity.java:314) 
at android.os.AsyncTask$3.call(AsyncTask.java:394) 
at java.util.concurrent.FutureTask.run(FutureTask.java:264) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1137) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:637) 
at java.lang.Thread.run(Thread.java:1012) 
D/DiscoverDeviceActivity: Waiting a couple seconds before trying the socket connection...
I/CommandClient: Preparing to send command 'device-id'
*** BUILT COMMAND DATA: 'device-id\n0\n\n'
D/TrafficStats: tagSocket(5) with statsTag=0xffffffff, statsUid=-1
D/EZ: Can't close closable, arg was null.
D/DiscoverDeviceActivity: Setup exception thrown:
io.particle.android.sdk.devicesetup.setupsteps.SetupStepException: Process died while trying to get the device ID
at io.particle.android.sdk.devicesetup.ui.DiscoverProcessWorker.doTheThing(DiscoverProcessWorker.java:48)
at io.particle.android.sdk.devicesetup.ui.DiscoverDeviceActivity$1.doInBackground(DiscoverDeviceActivity.java:324)
at io.particle.android.sdk.devicesetup.ui.DiscoverDeviceActivity$1.doInBackground(DiscoverDeviceActivity.java:314)
at android.os.AsyncTask$3.call(AsyncTask.java:394)
at java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1137)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:637)
at java.lang.Thread.run(Thread.java:1012)
Caused by: java.net.ConnectException: failed to connect to /192.168.0.1 (port 5609) from /192.168.1.222 (port 45986) after 10000ms: isConnected failed: EHOSTUNREACH (No route to host)
at libcore.io.IoBridge.isConnected(IoBridge.java:347)
at libcore.io.IoBridge.connectErrno(IoBridge.java:237)
at libcore.io.IoBridge.connect(IoBridge.java:179)
at java.net.PlainSocketImpl.socketConnect(PlainSocketImpl.java:142)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:390)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:230)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:212)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:436)
at java.net.Socket.connect(Socket.java:646)
at io.particle.android.sdk.devicesetup.commands.NetworkBindingSocketFactory.createSocket(NetworkBindingSocketFactory.java:46)
at io.particle.android.sdk.devicesetup.commands.CommandClient.sendAndMaybeReceive(CommandClient.java:55)
at io.particle.android.sdk.devicesetup.commands.CommandClient.sendCommand(CommandClient.java:44)
at io.particle.android.sdk.devicesetup.ui.DiscoverProcessWorker.doTheThing(DiscoverProcessWorker.java:42)
at io.particle.android.sdk.devicesetup.ui.DiscoverDeviceActivity$1.doInBackground(DiscoverDeviceActivity.java:324) 
at io.particle.android.sdk.devicesetup.ui.DiscoverDeviceActivity$1.doInBackground(DiscoverDeviceActivity.java:314) 
at android.os.AsyncTask$3.call(AsyncTask.java:394) 
at java.util.concurrent.FutureTask.run(FutureTask.java:264) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1137) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:637) 
at java.lang.Thread.run(Thread.java:1012) 
Caused by: android.system.ErrnoException: isConnected failed: EHOSTUNREACH (No route to host)
at libcore.io.IoBridge.isConnected(IoBridge.java:334)
at libcore.io.IoBridge.connectErrno(IoBridge.java:237) 
at libcore.io.IoBridge.connect(IoBridge.java:179) 
at java.net.PlainSocketImpl.socketConnect(PlainSocketImpl.java:142) 
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:390) 
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:230) 
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:212) 
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:436) 
at java.net.Socket.connect(Socket.java:646) 
at io.particle.android.sdk.devicesetup.commands.NetworkBindingSocketFactory.createSocket(NetworkBindingSocketFactory.java:46) 
at io.particle.android.sdk.devicesetup.commands.CommandClient.sendAndMaybeReceive(CommandClient.java:55) 
at io.particle.android.sdk.devicesetup.commands.CommandClient.sendCommand(CommandClient.java:44) 
at io.particle.android.sdk.devicesetup.ui.DiscoverProcessWorker.doTheThing(DiscoverProcessWorker.java:42) 
at io.particle.android.sdk.devicesetup.ui.DiscoverDeviceActivity$1.doInBackground(DiscoverDeviceActivity.java:324) 
at io.particle.android.sdk.devicesetup.ui.DiscoverDeviceActivity$1.doInBackground(DiscoverDeviceActivity.java:314) 
at android.os.AsyncTask$3.call(AsyncTask.java:394) 
at java.util.concurrent.FutureTask.run(FutureTask.java:264) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1137) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:637) 
at java.lang.Thread.run(Thread.java:1012) 

Seems like the cause is this error:

Caused by: java.net.ConnectException: failed to connect to /192.168.0.1 (port 5609) from /192.168.1.222 (port 45972) after 10000ms: isConnected failed: EHOSTUNREACH (No route to host)


Looks like line 55 is where the actually error is occurring, while it's trying to create a socket to use to send and receive device commands.

We are need to target sdk 31 asap to comply with latest Play Store requirements - https://developer.android.com/google/play/requirements/target-sdk

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions