Most, except the sensor beacons, are waterproof to IP67. All the beacons can be configured to advertise multiple channels at the same time including iBeacon, Eddystone UID, Eddystone URL, Eddystone TLM, sensor (where available), acceleration (where available) and device info.
Sato beacons use the button in an innovative way. Instead of going OFF, the button long press is detected for SOS type scenarios. The beacon is instead turned off using the configuration app or programatically via your custom app.
Scapy is a useful command line Python program, that works on Linux, that enables the user to send, sniff and dissect network packets, including Bluetooth LE. It can be used for testing, development and security testing.
If you are considering developing Bluetooth LE on Android, you should take a look at Stuart Kent’s Android Bluetooth Low Energy Resources on GitHub. He provides lots of links to introductions, videos, libraries, guides, questions on Stack Overflow and example app source code.
If you have upgraded to Android 10 then you will find you are asked whether particular apps, especially those using maps or Bluetooth, can use Location permission (all the time, only while using the app or Deny). Something like:
You will find that this screen appears, for each app using Location, at a seemingly random time. Why is this? Why do apps you haven’t just started suddenly ask for the permission? What are they doing? How should you answer?
The change of Android location permissions to include ‘only while using the app’ is part of Android 10. For app architectural purposes, some apps get location or Bluetooth scan in an Android Service that runs in background. This Service can be started and stopped by the Android OS according to whether the OS needs resources and also when an app is upgraded. The starting of the Service might cause it to get location or do an initial Bluetooth scan, as part of startup, even though the app isn’t going to use this information. These things used to be transparent but now have the knock on affect of causing the OS to ask for the first-time permission seemingly at a random time.
If, for example in the above BBC Weather app, you need the app to show the latest weather for a location on a widget or otherwise use location-related data in background then select ‘Allow all the time’. Otherwise select ‘Allow only while using the app’. Beware of selecting ‘Deny’ as it’s likely it might cause the app to malfunction in some way.
Our empirical experiences are that Android 10 background restrictions do actually noticeably improve battery life, unlike previous Android ‘Doze’ and App Standby restrictions that seemed to create pain and no gain.
A problem is that some environment-related factors change over time, such as changes in hardware/furniture, the presence of people and ambient humidity conditions meaning that fingerprinting isn’t a one-off activity.
The researchers conclude that the highest transmission power (+4 dBm) produces the best location accuracy. However, this uses a lot of battery power. Use of the lowest power (−20 dBm) only worsened the accuracy by 11.8%. Similarly, lowering the density of the beacons by around 50%, the error increase was only about 9.2%. Increasing the advertising interval didn’t have a significant impact on the accuracy.
The affect of beacon orientation was assessed and vertical orientation was found to be best. Read our previous article on orientation. As expected, introducing a slight electrical noise during the positioning phase did not significantly affect accuracy.
A large number of Bluetooth LE apps don’t work on Android 10 because of a bug in permissions in Android 10 (API 29). This affects nearly all manufacturer apps used for setting up beacons or using Bluetooth LE devices. The only apps that will work are those that have very recently been developed and target Android 10.
Android 10 introduced the requirement to have the ACCESS_FINE_LOCATION permission when targeting (written for) Android 10. Older apps targeting previous versions of Android should not have been affected but, due to a bug, they no longer work.
App developers can make their app work by adding the permission. Note that the permission must also also be prompted for from the user using the request permission mechanism. Alternatively the user can set manually via Settings -> Apps & Notifications -> Your App Name -> Permissions.
If you are a user and need to use a particular app then you will need to use a device having an Android version prior to Android 10. Alternatively, use the iOS app version if possible.
This issue has been has been detected by us on build QP1A.190711.020 and is perhaps related to issue 136774949. We expect it to be fixed in the future via an Android OS update.