I've done some experiments on different devices and I made each of the scanner and receiver at the same time and saved RSSI get from other nearby devices but the result was strange. first, there was a Huawei p6 that could scan other devices signal but nobody could see its transmit signal. second, the RSSI was completely device-dependent although beacons setting was the same for all of them inside the application and I want these signals to approximate their distance from each other.
question is that is this library reliable for my purpose which is getting approximately distance of devices from each other? I should mention that these results have gotten from android devices and I think that iPhones are another problem
The fragmentation in Android devices means that there is a huge variation in not just bluetooth chips, but in the external bluetooth antennas and phone cases that affect the strength of the signal Android devices receive and transmit.
While the distance estimates provided by the Android Beacon Library are useful for finding the relative distances to different beacons, using the value as an absolute distance estimate will not be consistent across different Android devices. The library does provide a way to tune its distance estimates to a specific hardware model, but unless you are targeting only a small number of devices this approach is not practical to tune for thousands of Android models out there.
Related
Now many Android phones have already support 2*2 mimo which means there are 2 wifi modules inside the phone. I wanna separately control these modules, one for sending signals and the other for receiving signals. How to directly control the hardware? I do not find relevant information in google documents.
As far as I know, there is no official way / API interface to control the WIFI modules or the antennas directly.
In my opinion, it does not make sense to do so. With MIMO, the best antenna is automatically calculated and used based on the quality of the input signal.
Here is a good explanation from Intel:
MIMO technology uses a natural radio-wave phenomenon called multipath. With multipath, transmitted information bounces off walls, ceilings, and other objects, reaching the receiving antenna multiple times at different angles and slightly different times. In the past, multipath caused interference and slowed down wireless signals. With multipath, MIMO technology uses multiple, smart transmitters and receivers with an added spatial dimension, increasing performance and range.
https://www.intel.com/content/www/us/en/support/articles/000005714/wireless/legacy-intel-wireless-products.html
What you are planning to do, however, would go against this principle and turn the MIMO antennas into two SISO (Single Input Single Output) antennas.
This would only be possible with a rooted smartphone or an XPOSED module.
If you want to find out how many antennas are built into a smartphone, I would recommend the WIFI Alliance website. Here you can find detailed information about all certified smartphones.
Website WIFI Alliance
For Example the Spec Sheet of the Oneplus 6t
Oneplus 6t WIFI Specs
I am working on an android application where we are using ble device I find to get the rssi to calculate the distance. I am working on beacons for months together now but still understanding its behaviour is very difficult.
I have a BLE device broadcasting at 10hz(10 packets/sec).
Using BluetoothLeScanner.startScan(scanCallback) to get the rssi. Scan is continuous and So as of understanding we are suppose to get all 10 adv packets every sec. Since the scan is continuous there is no missing of data packets.
But the behaviour is different on every phone. I have tested on multiple phones and observed behaviour on few phones are as below,
Moto C Plus, AV: 7.0: 6-8 Callbacks/s
Redmi Note 4, Av: 7.0: 4-6 Callbacks/s
Moto G 2ng generation, AV: 6.0: android finds 1-3 callbacks for few seconds and no callbacks for seconds like 5,10 even for around 20+sec.
One Plus one, AV: 6.0.1 : frequent is 1-3 callbacks and rest of behaviour is same as Moto G, no callbacks for seconds( like 5,10 even for around 20+sec)..
I don't have any device running android version 5 to find the behaviour on that.
Query:
Why this inconsistency in advertising visibility on android vary?Is it because of Android versions or individual android devices ?
(Sure that my BLE device is broadcasting exactly at 10hz)
I found varies blogs on beacons, Bluetooth low energy but not find sufficient information on this particular behaviour.Any Insights are greatly appreciated.
Not 100% of beacon packets are detected by Android devices for a number of reasons. Among them:
Advertising packets are sent on a number of different radio channels, and the transmitter and receiver must be on the same channel at the same time.
Radio noise sometimes causes errors in bits in the digital signal on the receiver side making the CRC (i.e. checksum) fail to match, so the receiver ignores the packet.
Collisions in transmitted packets from multiple bluetooth devices in the vicinity happen. When collisions take place, the packets are generally not received because they overlap eachother and interfere with eachother.
Bluetooth advertisers automatically randomize the spacing of their packets so a transmitter at 10Hz does not send out exactly 10 packets every second. Some seconds may have 11 packets, others 9.
Even in the best conditions you will not get 100% of packets transmitted at the receiver. The best quality receivers getting strong signals in low noise environments might get 90% of advertised packets.
There is also a huge difference between different Android device models caused by using different bluetooth chipsets, different bluetooth antennas, different cases (which can block, amplify, or leak signals), signal interference with WiFi (which uses the same frequency band and often shares the same chip.) As you have seen, the number of packets detected on some Android models can be significantly less even under the same test conditions.
The primary driver in packet reception rate differences between Android models probably has to do with the Bluetooth antenna and interference from WiFi circuits. I have noticed that some Android models (such as the Huawei P9 Lite test device I own) show a much weaker RSSI (signal level) on average for the same beacon transmitter than the Android Nexus 5X receiver. This signal is 20dB weaker. Weaker signals relative to noise usually mean higher rates of packet loss for the reasons described above. One of the first Android devices supporting BLE, the Nexus 4, could usually not detect BLE packets at all if WiFi was turned on.
On the Samsung Galaxy S6 Edge +, I noticed that depending on which channel the advertisement packet was on, the RSSI would be significantly higher or lower, possibly due to the antenna being less tuned to the slightly varying radio frequency of some channels. This mean that the noise was higher relative to signal on the weaker channels, and a higher rate of packet loss when advertising was detected on those channels. Unfortunately, Android APIs give no indication of which channel was used to detect a packet, so there is no way to correct for this.
Bottom line: this is a complex issue that has many, many variables. The results you are witnessing are not unusual.
I and a couple of friends have got a list of requirements for a new project. This project, basically asks us to synchronize a specific directory in a laptop with the user's phone (just like dropbox does) but using BLE for the communication.
Everything is working as expected. We're using Android on the phones and a BlueGiga USB dongle on the laptop side. The only problem we're facing is that we cannot limit the distance in which the phone is detected.
We do know that we can modify the TX Power and also the Advertising mode as it's explained here (https://developer.android.com/reference/android/bluetooth/le/AdvertiseSettings.html). The real problem is that we cannot get the same max distance on every phone because of differences with the chipsets, antennas, etc throughout all the Android devices in the market.
How could we do to limit the connection distance to 1 meter for all the devices running Android? We'd need to rely on the RSSI values but I'm open to different approaches anyway.
Thank you very much in advance guys and remember that everything is working perfectly. We just need to adjust the max distance.
Thanks.
Max.
Simple answer: You can't get an absolutely exact range limitation because of the physical properties of electromagnetic radiation. There are so many things you have to take into account, which makes it a quite difficult and complex task.
What you can do is very sophisticated calculations based ony many different factors to get an approximation. As already mentioned in the comments, you might find helpful libraries with algorithms and formulas for well known devices, chipsets antennas etc. so you don't have to do all the calculations on your own.
With the help of some libraries and tools, you may be able to quite safely determine if the device is within a range of between 1 and 3 meters.
we try to develop a ios and andorid app with beacons.
it only uses the entry and exit event.
now our problem is that the android gets the enter event at ~7meter
and the iphone ~1.5meter.
the beacon settings are TX Power -23dbm, Measured Power -80.
is there a way to adjust the android or iphone to get the same range?
This is a common problem with mobile devices because each model has a different Bluetooth antenna and chip, some of which pick up signals better than others. The problem is particularly noticeable across the wide variety of Android models.
There is no magic fix, but you can do ranging at the same time as monitoring, and trigger your logic only if you get a ranging result with beacon.distance < 1.5. This is not a perfect solution, as Android models can sometimes have inaccurate distance estimates due to the same varying antenna gain characteristics. For select devices. This may be a much better solution.
I'm developing an android app which is based on WiFi Direct technology(P2P), so I really need to know how many meters is the range of android WiFi direct performance.based on Android API Guides:
you can discover and connect to other devices when each device supports Wi-Fi P2P, then communicate over a speedy connection across distances much longer than a Bluetooth connection.
but knowing that is not enough for me. because of my aim I need numbers! I mean a range of distances in which Wi-Fi P2P works.
Typical Wi-Fi devices extend their signal up to 100 meters. Source
However the biggest of horror of Wi-Fi is Line of Sight (LOS) which may drop your range dramatically.
That's because Wi-Fi signals at 2.4GHz or 5GHz frequencies. These are easily disrupted by interfering obstacles such as furniture, walls or even mirrors (whose metallic layer reflects the signal) or even water that absorbs the waves. If the app is to be used mostly outside, such obstacle count is supposedly greatly decreased.
Extra:
Wi-Fi signal strength is influenced by a factor called attenuation. Here's a Cool Table displaying the materials influence on the signal.
You might also want to keep in mind that Android Wi-Fi P2P (Wi-Fi direct) is available only since API 14 (4.0 ICS).
Though Samsung allowed using the Wi-Fi Direct ability to connect to devices since API 9 (2.3 Gingerbread).
Anyhow you might want to think if users are "there yet", to be using this standard.
I also liked this Video comparing Galaxy S3 and iPhone 5 connectivity to a GoPro Hero 3 Camera. The maximum range he reached was 100 yards (~90 meters) with perfect LOS.
EDIT:
Antenna-Theory a website dedicated completely to antenna's states that:
Wi-Fi Antenna Efficiencies for handheld mobile devices are typically
on the order of -6 dB to -2 dB
While various online sources note that average laptop antenna efficiency is from -3dB to 3dB, which is not that much different from the cell phone.
You can't really figure out the actual numbers as it all really depends on the surroundings, the target's antenna and the users antenna.
Still phones tend to have lower range than that of the laptops and it's probably between 50-80 meters in clear sight.
Sorry but I can't provide more accurate information as i'm no physicist or a technician, and what you're asking for is pretty abstract :)
This site says the range of WiFi-direct of phones is about 200 feet (~60 meters) while bluetooth has a range of 30 feet (~10 meters).
The official Wi-Fi direct site (see under the point "How far does a Wi-Fi Direct connection travel?") states that the maximum range of WiFi-direct is up to 200 meters (which is 656 feet), but I highly doubt that phones already achieve this range...
"Wi-Fi Direct devices will operate at the same speeds or data rates and range as current Wi-Fi gear. This maximum of about 200 Mbps at 200 feet is much more than the 3 Mbps at 30 feet with Bluetooth. This means you can share and communicate much faster and farther with Wi-Fi Direct."
source: http://www.ciscopress.com/articles/article.asp?p=1620205&seqNum=2
I've done my research on this in the past. Similarly with the other answers, I found that the maximum distance "The Wi-Fi Alliance" claims it to reach is 656 feet. I could be wrong, but I feel that it may be possible to connect both devices to an Apple AirPort device and extend it quite a bit.. Of course you can't expect all of your app purchasers to have one, but in the testing phases it may prove to be very useful.