I'm developing a system that identify nearby mobile devices using ESP32 for sniffing bluetooth packets.
Multiple articles indicate that it is possible to track Android phones using bluetooth, even if it is disabled:
https://qz.com/1169760/phone-data/
https://www.vozpopuli.com/memesis/balizas-google-bluetooth-ubicacion-Privacidad_0_1107489510.html
I have looked for more information on how to do it but I have not found anything.
Is only Google able to do that or anyone can do it?
Thanks.
No.
If these devices are not transmitting bluetooth packets, then it is not possible for nearby devices to listen to that traffic and identify them. What Google is doing is to require phones running Android to passively monitor for bluetooth traffic and relay this back to their servers. Phones with Google Maps installed passively relay location in the same way so that traffic maps are ~accurate in realtime.
In other words, disabling bluetooth prevents pairing and sending bluetooth traffic, but not receiving it.
If you're asking about programmatically disabling bluetooth with this caveat, take a look at this Stack Overflow question
Related
I am searching for some way that can connect to Bluetooth devices without pairing. Or at least make a connection first and then it does not need to be established all the time. Like how wearable devices work (i.e. mi band 6 or Huawei band 6). Can someone please guide me towards some helpful demo or documentation for this somewhere?
Also, I was wondering how was the security managed since my Bluetooth is always on to communicate to the wearable device. Though, turning off discoverability does not seem to create any issues in order to communicate with the device.
Most wearables nowadays use Bluetooth Low Energy (BLE), and with BLE you don't need to pair in order to exchange data - i.e. only a connection is needed. That being said, it is recommended to pair as the data exchanged between the wearable device and the phone will be encrypted, in addition to some other benefits in terms of privacy and security, Have a look at the links below that will go over connection/pairing in more detail:-
Should one create a bond with BLE device
The Ultimate Guide to Android Bluetooth Low Energy
Making Android BLE work
I'm working on a mobile game app that receives the moves from an external Bluetooth(BLE) sensor.
I wish to show the game on the TV in low latency, so the users make the moves with the sensors and look on the TV.
Options I've thought on:
Chromecast Remote Display.
Build Android TV app of the game display only and use Nearby Connections API to send the game screen data from the App to the TV.
Build Full Android TV game app that connects to BLE sensor directly.
Which option do you think will work in the lowest latency?
As Nearby Connections API also works on Wifi, does it have better connectivity and more TV models support it, than direct TV<->Bluetooth connection?
also, open to other ideas (-;
Nearby Connections is a great way to go. Just keep in mind that Nearby Connections will decide under the hood the way it will connect devices (can be bluetooth, BLE, wifi hotspots), so no guarantees regarding Wifi. Also, it is Android-only solution.
I have been doing a ton of research on this project I want to do, probably read every SO post (bluejacking, RFCOMM, beacons, etc...) and my head is spinning.
I want to create a system at home, using Arduino (with bluetooth le) that will scan bluetooth and detect when my phone or any of my family members phones are in proximity. Whether this is a MAC scanner or simply getting the friendly name. I would also like to get the RSSI. I dont need to do accurate distance measurement but I would like to know approximately how close they are. Does anybody have any suggestions for this approach? I know I can create an app on the phone and have it become a beacon and this may be an option but I am concerned with Android, it would have to be Marshmallow 5.0 at a minimum. I would like support to be a little lower than that, like JB or KK. So, it seems like there should be a simple scan, just looking for the MAC or name. That is all I really need.
That said, the main question I have is, can you scan for and see bluetooth devices in range if they are already paired to something? Like a Bluetooth headset? I understand bluetooth is point to point but does it allow multiple connections or at least broadcast the mac or name when paired?
This question, along with any general suggestions will help me out tremendously!
Thanks!
Bluetooth Discovery from the Listener involves Listening for Bluetooth Inquiry packets(RX) and inquiry response (TX).if done continuously this will deplete the battery. Hence most devices (including Mobile Phones and Headsets) has a policy of when to be discover-able and connectable. Headsets in particular are discoverable only when they are instructed and connectable until one device is connected to it ( There are probably exceptions where the headset has the capability to be connected to multiple phones at the same time). Most Mobile Phones are discoverable only when they are in settings screen ( Android,IOS and Windows Phones), but unlike the headset case they are connectable.
so one option with the MobilePhone is to see if it is possible to connect to them after pairing once ( for example by trying a service search on the remote device and see if it returns the service attributes, this internally makes a connection and indirectly ensures the presence of the device).
if you are specific about a mobile phone which is already paired then you might need to establish a higherlayer connection ( such as SPP) with Authentication and encryption. This would force a two way check between devices to see whether they are already paired. other less secure option is to rely on the Phone (Android and IOS phones doesn't generally Allow a higher layer connection without encryption/pairing) and try to establish an SPP connection to the phone.
Another option is to use Bluetooth-LowEnergy. But Note that security in BT was superior to BLE till BTv4.1 and same on BTv4.2.
I want to be able to discover any kind of devices nearby (10 m) and possibly retrieve some device information about them in addition to the MAC address. This should be discovered through WIFI.
The devices doesn't need to be in the same network (as most questions asking for similar behaviour), they can just be passing next to this "antena".
Devices constantly communicate to nearby access-points so I thought that an app would be able to catch these broadcasts too.
I was trying to use Android Nsd (Network Service Discovery) until I found this only works for devices in the same network. I just began to research on bonjour.
Another possibility: could device connect to nearby access point to get this info?
How about Nearby Connections? I think it exactly matches your use case.
It uses a combination of Bluetooth, Wi-Fi, and inaudible sound (using the device’s speaker and microphone) to establish proximity.
https://developers.google.com/nearby
I am currently working on the creation of an application for mobile devices with Android which should be capable of sending and receiving messages through local means like wifi and bluetooth. After making a research about it I found out that Android doesn't have a native wifi ad hoc functionality and that the only way to achieve that is through rooting your device and patching the wpa_suplicant and some other similiar methods which are not generic for every device.
Synopsis of what I am trying to achieve:
An application for Android that scans for devices nearby and tries to connect to them automatically. If the other device also got this application isntalled then it automatically accepts any connection request it receives and when the connection is established it sends back a message which ensures that it has this app installed so that both can start exchanging messages automatically and the users don't have to allow/deny any of the sending/receiving in real time.
My questions are:
Is there any way of sending messages through wifi between 2 android
devices without the use of internet?
Since Ad Hoc is not supported, is there any alternative?
In case the answer to 2 is no , then is it possible to make one of
the devices to be an access point so the other can connect to it and
vice versa.
As for bluetooth, is it possible to skip or automate the allow/deny
pop up of an incoming connection and the pairing procedure?
I'll be glad if you could give me an answer to those and/or any suggestions.
You'll be able to communicate between two devices over wifi without a router/access point using Wifi Direct (P2P) in Android 4.0.
Otherwise, I don't believe you can achieve this over Wifi (bluetooth would be the next best alternative). Since 2.2 you can set your phone up to be a Wifi Access Point (for tethering your device's network connection), but during this time, the Wifi hardware is unavailable for normal use. If you had 3 devices it could work (1 AP, 2 connecting to it).
Is this for a constant connection, or a one-off small delivery? You could use NFC if you want to transmit a URL for example (Android Beam integrates this type of sharing in Android 4.0, but could implement it in 2.3).