iBeacon and Android companion app - iBeacon tracker does not show anything

Hi all,

maybe I made a mistake, but what I had in mind was:

  1. buy a Bluetooth stick from the list of supported devices
  2. plug it into a free port
  3. install the iBeacon tracker using the UI
  4. enable the BLE transmitter in the companion app
  5. see that the tracker is finding at least this device

Everything went fine until I got to step 5. I can do whatever I want, but the tracker is not finding anything. The BL stick is working, because HA found my toothbrush (Oral B 6000) and offered me to install an integration, what I did, just to see that this integration has been disabled or is about to be removed, but this is another story.

Did I miss something? Was my idea to simple? Do I still need to configure something?

I’m currently running the latest released version of HA.
Home Assistant 2022.11.2
Supervisor 2022.10.2
Operating System 9.3
Frontend 20221108.0 - latest

Thanks a lot

check the companion app logs (Settings > Companion App > Show and share logs) to see if an error occurred when the transmitter tried to get enabled. Also you may want to adjust the BLE transmitter sensor settings like transmit power and advertise mode to see if your device requires adjustments.

1 Like

Thank you for your answer. I’ve tried raising power and changed the advertising mode, but nothing happens. I can put the mobile phone directly next to the BT stick, but again nothing.

In the following snipped from the log of the app and I can see a couple of exceptions, but nothing really related to this issue. Maybe the ConnectivityManager? I guess I don’t know enough about this.

11-14 20:16:32.398 7736 7736 I ScanJob : Using immediateScanJobId from manifest: 208352939
11-14 20:16:32.446 7736 7736 I ScanJob : Using periodicScanJobId from manifest: 208352940
11-14 20:16:32.446 7736 7736 W JobInfo : Requested interval +5m0s0ms for job 208352940 is too small; raising to +15m0s0ms
11-14 20:16:32.446 7736 7736 W JobInfo : Requested flex 0 for job 208352940 is too small; raising to +5m0s0ms
11-14 20:16:32.467 7736 7736 I ScanJob : ScanJob Lifecycle START: org.altbeacon.beacon.service.ScanJob@d5faddf
11-14 20:16:32.483 7736 24026 I CycledLeScanner: Using Android O scanner
11-14 20:16:32.487 7736 24026 I ScanJob : Using immediateScanJobId from manifest: 208352939
11-14 20:16:32.487 7736 24026 I ScanJob : Running immediate scan job: instance is org.altbeacon.beacon.service.ScanJob@d5faddf
11-14 20:16:32.491 7736 24026 I ScanJob : scanJob version 2.19.4 is starting up on the main process
11-14 20:16:32.492 7736 24026 W ModelSpecificDistanceCalculator: Cannot find match for this device. Using default
11-14 20:16:32.493 7736 24026 W ModelSpecificDistanceCalculator: Cannot find match for this device. Using default
11-14 20:16:32.493 7736 24026 I BluetoothAdapter: STATE_ON
11-14 20:16:32.494 7736 24026 I BluetoothAdapter: STATE_ON
11-14 20:16:32.495 7736 24026 D BluetoothLeScanner: Stop Scan with callback intent
11-14 20:16:32.499 7736 24029 I ScanHelper: Non-distinct packets detected in a single scan. Restarting scans unecessary.
11-14 20:16:32.528 7736 24026 I BluetoothAdapter: STATE_ON
11-14 20:16:32.528 7736 24027 I BluetoothAdapter: STATE_ON
11-14 20:16:32.529 7736 24027 I BluetoothAdapter: STATE_ON
11-14 20:16:32.529 7736 24027 I BluetoothAdapter: STATE_ON
11-14 20:16:32.530 7736 24026 I ScanJob : Scan job running for 1100 millis
11-14 20:16:32.531 7736 24027 D BluetoothLeScanner: Start Scan with callback
11-14 20:16:32.538 7736 11855 D BluetoothLeScanner: onScannerRegistered() - status=0 scannerId=1 mScannerId=0
11-14 20:16:33.633 7736 7736 I ScanJob : Scan job runtime expired: org.altbeacon.beacon.service.ScanJob@d5faddf
11-14 20:16:33.633 7736 7736 I BluetoothAdapter: STATE_ON
11-14 20:16:33.638 7736 7736 I BluetoothAdapter: STATE_ON
11-14 20:16:33.641 7736 7736 D BluetoothLeScanner: Stop Scan with callback intent
11-14 20:16:33.655 7736 24027 I BluetoothAdapter: STATE_ON
11-14 20:16:33.655 7736 24027 D BluetoothLeScanner: Stop Scan with callback
11-14 20:16:33.704 7736 7736 I BluetoothAdapter: STATE_ON
11-14 20:16:33.706 7736 7736 I BluetoothAdapter: STATE_ON
11-14 20:16:33.707 7736 7736 I BluetoothAdapter: STATE_ON
11-14 20:16:33.707 7736 7736 I BluetoothAdapter: STATE_ON
11-14 20:16:33.708 7736 7736 D BluetoothLeScanner: Start Scan with pending intent
11-14 20:16:33.785 7736 7787 D ConnectivityManager: StackLog: [android.net.ConnectivityManager.sendRequestForNetwork(ConnectivityManager.java:4166)] [android.net.ConnectivityManager.registerDefaultNetworkCallbackForUid(ConnectivityManager.java:4730)] [android.net.ConnectivityManager.registerDefaultNetworkCallback(ConnectivityManager.java:4697)] [android.net.ConnectivityManager.registerDefaultNetworkCallback(ConnectivityManager.java:4671)] [androidx.work.impl.constraints.trackers.NetworkStateTracker.startTracking(NetworkStateTracker.java:89)] [androidx.work.impl.constraints.trackers.ConstraintTracker.addListener(ConstraintTracker.java:71)] [androidx.work.impl.constraints.controllers.ConstraintController.replace(ConstraintController.java:99)] [androidx.work.impl.constraints.WorkConstraintsTracker.replace(WorkConstraintsTracker.java:106)] [androidx.work.impl.background.greedy.GreedyScheduler.schedule(GreedyScheduler.java:157)] [androidx.work.impl.Schedulers.schedule(Schedulers.java:119)] [androidx.work.impl.utils.EnqueueRunnable.scheduleWorkInBackground(EnqueueRunnable.java:135)] [androidx.work.impl.utils.EnqueueRunnable.run(EnqueueRunnable.java:95)] [androidx.work.impl.utils.SerialExecutor$Task.run(SerialExecutor.java:91)] [java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1137)] [java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:637)] [java.lang.Thread.run(Thread.java:1012)]
11-14 20:16:33.821 7736 7818 D UrlRepository: localUrl is: false and usesInternalSsid is: false
11-14 20:16:33.825 7736 7785 I WM-Processor: Moving WorkSpec (50cbb1f6-e034-458d-bdb8-e619b6e1ad15) to the foreground
11-14 20:16:33.844 7736 7818 D SensorWorker: Updating all Sensors in background.
11-14 20:16:33.844 7736 7818 D SensorWorker: android.app.ForegroundServiceStartNotAllowedException: startForegroundService() not allowed due to mAllowStartForeground false: service io.homeassistant.companion.android/androidx.work.impl.foreground.SystemForegroundService
11-14 20:16:33.844 7736 7818 D SensorWorker: at android.app.ForegroundServiceStartNotAllowedException$1.createFromParcel(ForegroundServiceStartNotAllowedException.java:54)
11-14 20:16:33.844 7736 7818 D SensorWorker: at android.app.ForegroundServiceStartNotAllowedException$1.createFromParcel(ForegroundServiceStartNotAllowedException.java:50)
11-14 20:16:33.844 7736 7818 D SensorWorker: at android.os.Parcel.readParcelableInternal(Parcel.java:4784)
11-14 20:16:33.844 7736 7818 D SensorWorker: at android.os.Parcel.readParcelable(Parcel.java:4752)
11-14 20:16:33.844 7736 7818 D SensorWorker: at android.os.Parcel.createExceptionOrNull(Parcel.java:3018)
11-14 20:16:33.844 7736 7818 D SensorWorker: at android.os.Parcel.createException(Parcel.java:3007)
11-14 20:16:33.844 7736 7818 D SensorWorker: at android.os.Parcel.readException(Parcel.java:2990)
11-14 20:16:33.844 7736 7818 D SensorWorker: at android.os.Parcel.readException(Parcel.java:2932)
11-14 20:16:33.844 7736 7818 D SensorWorker: at android.app.IActivityManager$Stub$Proxy.startService(IActivityManager.java:6201)
11-14 20:16:33.844 7736 7818 D SensorWorker: at android.app.ContextImpl.startServiceCommon(ContextImpl.java:1967)
11-14 20:16:33.844 7736 7818 D SensorWorker: at android.app.ContextImpl.startForegroundService(ContextImpl.java:1933)
11-14 20:16:33.844 7736 7818 D SensorWorker: at android.content.ContextWrapper.startForegroundService(ContextWrapper.java:839)
11-14 20:16:33.844 7736 7818 D SensorWorker: at androidx.core.content.ContextCompat$Api26Impl.startForegroundService(ContextCompat.java:1091)
11-14 20:16:33.844 7736 7818 D SensorWorker: at androidx.core.content.ContextCompat.startForegroundService(ContextCompat.java:749)
11-14 20:16:33.844 7736 7818 D SensorWorker: at androidx.work.impl.Processor.startForeground(Processor.java:161)
11-14 20:16:33.844 7736 7818 D SensorWorker: at androidx.work.impl.utils.WorkForegroundUpdater$1.run(WorkForegroundUpdater.java:100)
11-14 20:16:33.844 7736 7818 D SensorWorker: at androidx.work.impl.utils.SerialExecutor$Task.run(SerialExecutor.java:91)
11-14 20:16:33.844 7736 7818 D SensorWorker: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1137)
11-14 20:16:33.844 7736 7818 D SensorWorker: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:637)
11-14 20:16:33.844 7736 7818 D SensorWorker: at java.lang.Thread.run(Thread.java:1012)
11-14 20:16:33.854 7736 7818 D UrlRepository: localUrl is: false and usesInternalSsid is: false
11-14 20:16:33.860 7736 7818 D UrlRepository: localUrl is: false and usesInternalSsid is: false
11-14 20:16:34.019 7736 7818 I BluetoothAdapter: STATE_ON
11-14 20:16:34.074 7736 7736 D ForegrndServiceLauncher: Check if service HighAccuracyLocationService is running. Service running = false
11-14 20:16:34.150 7736 7818 D UrlRepository: localUrl is: false and usesInternalSsid is: false
11-14 20:16:34.185 7736 7787 I WM-WorkerWrapper: Worker result SUCCESS for Work [ id=50cbb1f6-e034-458d-bdb8-e619b6e1ad15, tags={ io.homeassistant.companion.android.sensors.SensorWorker } ]
11-14 20:16:34.189 7736 7787 E WM-Processor: Unable to stop foreground service
11-14 20:16:34.189 7736 7787 E WM-Processor: android.app.BackgroundServiceStartNotAllowedException: Not allowed to start service Intent { act=ACTION_STOP_FOREGROUND cmp=io.homeassistant.companion.android/androidx.work.impl.foreground.SystemForegroundService }: app is in background uid UidRecord{cdf4bdb u0a425 TRNB bg:+1m11s311ms idle change:procadj procs:0 seq(8235750,8232095)}
11-14 20:16:34.189 7736 7787 E WM-Processor: at android.app.ContextImpl.startServiceCommon(ContextImpl.java:1981)
11-14 20:16:34.189 7736 7787 E WM-Processor: at android.app.ContextImpl.startService(ContextImpl.java:1927)
11-14 20:16:34.189 7736 7787 E WM-Processor: at android.content.ContextWrapper.startService(ContextWrapper.java:834)
11-14 20:16:34.189 7736 7787 E WM-Processor: at androidx.work.impl.Processor.stopForegroundService(Processor.java:318)
11-14 20:16:34.189 7736 7787 E WM-Processor: at androidx.work.impl.Processor.stopForeground(Processor.java:224)
11-14 20:16:34.189 7736 7787 E WM-Processor: at androidx.work.impl.WorkerWrapper.resolve(WorkerWrapper.java:460)
11-14 20:16:34.189 7736 7787 E WM-Processor: at androidx.work.impl.WorkerWrapper.resetPeriodicAndResolve(WorkerWrapper.java:571)
11-14 20:16:34.189 7736 7787 E WM-Processor: at androidx.work.impl.WorkerWrapper.handleResult(WorkerWrapper.java:475)
11-14 20:16:34.189 7736 7787 E WM-Processor: at androidx.work.impl.WorkerWrapper.onWorkFinished(WorkerWrapper.java:354)
11-14 20:16:34.189 7736 7787 E WM-Processor: at androidx.work.impl.WorkerWrapper$2.run(WorkerWrapper.java:331)
11-14 20:16:34.189 7736 7787 E WM-Processor: at androidx.work.impl.utils.SerialExecutor$Task.run(SerialExecutor.java:91)
11-14 20:16:34.189 7736 7787 E WM-Processor: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1137)
11-14 20:16:34.189 7736 7787 E WM-Processor: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:637)
11-14 20:16:34.189 7736 7787 E WM-Processor: at java.lang.Thread.run(Thread.java:1012)
11-14 20:16:34.195 7736 7736 D ConnectivityManager: StackLog: [android.net.ConnectivityManager.unregisterNetworkCallback(ConnectivityManager.java:4839)] [androidx.work.impl.constraints.trackers.NetworkStateTracker.stopTracking(NetworkStateTracker.java:112)] [androidx.work.impl.constraints.trackers.ConstraintTracker.removeListener(ConstraintTracker.java:86)] [androidx.work.impl.constraints.controllers.ConstraintController.replace(ConstraintController.java:97)] [androidx.work.impl.constraints.WorkConstraintsTracker.replace(WorkConstraintsTracker.java:106)] [androidx.work.impl.background.greedy.GreedyScheduler.removeConstraintTrackingFor(GreedyScheduler.java:222)] [androidx.work.impl.background.greedy.GreedyScheduler.onExecuted(GreedyScheduler.java:208)] [androidx.work.impl.Processor.onExecuted(Processor.java:304)] [androidx.work.impl.Processor$FutureListener.run(Processor.java:377)]
11-14 20:16:47.917 7736 7736 I ScanJob : Using immediateScanJobId from manifest: 208352939
11-14 20:16:47.956 7736 7736 I ScanJob : Using periodicScanJobId from manifest: 208352940
11-14 20:16:47.956 7736 7736 W JobInfo : Requested interval +5m0s0ms for job 208352940 is too small; raising to +15m0s0ms
11-14 20:16:47.956 7736 7736 W JobInfo : Requested flex 0 for job 208352940 is too small; raising to +5m0s0ms
11-14 20:16:47.971 7736 7736 I ScanJob : ScanJob Lifecycle START: org.altbeacon.beacon.service.ScanJob@a1da05b
11-14 20:16:47.980 7736 24050 I CycledLeScanner: Using Android O scanner
11-14 20:16:47.987 7736 24050 I ScanJob : Using immediateScanJobId from manifest: 208352939
11-14 20:16:47.987 7736 24050 I ScanJob : Running immediate scan job: instance is org.altbeacon.beacon.service.ScanJob@a1da05b
11-14 20:16:47.993 7736 24050 I ScanJob : scanJob version 2.19.4 is starting up on the main process
11-14 20:16:47.995 7736 24050 W ModelSpecificDistanceCalculator: Cannot find match for this device. Using default
11-14 20:16:47.995 7736 24050 W ModelSpecificDistanceCalculator: Cannot find match for this device. Using default
11-14 20:16:47.996 7736 24050 I BluetoothAdapter: STATE_ON
11-14 20:16:47.997 7736 24050 I BluetoothAdapter: STATE_ON
11-14 20:16:47.997 7736 24050 D BluetoothLeScanner: Stop Scan with callback intent
11-14 20:16:47.997 7736 24052 I ScanHelper: Non-distinct packets detected in a single scan. Restarting scans unecessary.
11-14 20:16:48.027 7736 24050 I BluetoothAdapter: STATE_ON
11-14 20:16:48.028 7736 24051 I BluetoothAdapter: STATE_ON
11-14 20:16:48.029 7736 24051 I BluetoothAdapter: STATE_ON
11-14 20:16:48.029 7736 24051 I BluetoothAdapter: STATE_ON
11-14 20:16:48.030 7736 24050 I ScanJob : Scan job running for 1100 millis
11-14 20:16:48.048 7736 24051 D BluetoothLeScanner: Start Scan with callback
11-14 20:16:48.052 7736 11855 D BluetoothLeScanner: onScannerRegistered() - status=0 scannerId=1 mScannerId=0
11-14 20:16:49.131 7736 7736 I ScanJob : Scan job runtime expired: org.altbeacon.beacon.service.ScanJob@a1da05b
11-14 20:16:49.132 7736 7736 I BluetoothAdapter: STATE_ON
11-14 20:16:49.136 7736 7736 I BluetoothAdapter: STATE_ON
11-14 20:16:49.137 7736 7736 D BluetoothLeScanner: Stop Scan with callback intent

Hi all,

any other ideas? Is there something in the log I could use to further investigate? Are other logs more helpful in that context? Is there another place I could ask for help?

Thanks

looks like that is your problem, make sure the app has proper access to run in the background

Thanks for your idea.

I changed the configuration for the HA app on my mobile phone and those lines are not showing up anymore. But also after restarting the whole system and setting the transmission power to high, the tracker is not showing anything.

I have the same issue as you (with similar setup) and it isn’t an app issue for me. The beacon gets picked up by scanner apps on other phones and if I transmit a beacon from anoter app on another phone the integration still doesn’t pick it up.

Try to find some guides on beacon calibration and adjust the settings. On some of my devices if I change the measured power setting to -75 I may see the device get picked up. Each device may have it’s own separate calibration. Just remember to change things back to default if you run into an issue. In my case my pixel works with default settings but Amazon tablets need to be adjusted.

At least I can somehow confirm what @FPro said. I have two S22U and tried them both. None of them was detected by the iBeacon tracker in HA, but both could see each others, once I turned them into trackers as well. So the companion app seems to transmit something just fine, but HA cannot see/process those signals.

The iBeacon tracker seems to be working somehow. It just showed my the tooth brush of my neighbor or somebody else. Actually, I’ll delete those entities again, because I’m not interested in knowing something about my neighbors mouth hygiene, but at least I know that the tracker is able to receive signals and I know that my mobile phones are transmitting signals. Unfortunately, they just don’t want to play together.

Tested with a Samsung S20 and A52 but it’s not working with HA iBeacon tracker.

I also have ESPresence running, and that detects both BLE beacons perfectly, including changed major/minor values.

So, I don’t think it’s about the phone (hw) as the BLE is transmitted by the companion app. It’s now properly recognized by the HA iBeacon tracker (or BLE integration)

I have the same problem.
If i remove the iBeacon integration in Home assistant and then start the BLE-transmitter in the compannion app the ibecon integration shows up as “discovered” under “devices & services” but when i add it, it doesn’t find any ibeacons. Other bluetooth integrations work like the “Xiaomi BLE” integration so the bluetooth itself work.

I have no idea why.

I have a raspberry pi 4 with an external bluetooth dongel, its an Asus USB-BT400.

Any ideas?

Same here, did someone manage to get it working?

No luck yet for me.

I have the same issue. I have a OnePlus 10 Pro. I have Home Assistant Docker installation on a Linux host. I have two Shellies Plus used as Bluetooth proxies in passive mode. I have no physical bluetooth receiver on the host PC.

  • I installed the Companion App
  • Turned on BLE Transmitter sensor in Settings > Companion App > Bluetooth
  • Turned on the iBeacon integration in HA

Nothing shows up in the iBeacon integration. I turned everything on more than 4 hours ago.

Same issue with two Fire tablets and the new pixel watch 2.