Dear ARM friends,
I want to capture 2G/3G/4G signals, from mobile phones or stations, by mobile phone or PC.
I want to use signal strength for indoor positioning.
It is relatively easy to capture WiFi and Bluetooth signals by mobile phone or PC.
If you have any suggestions, please tell me.
I want to hear from you!
Honggui Li
China
@Matthew Du Puy,
I can't visit Google in China now. Can I get the Android documents from other websites?
Can I get the 2G/3G/4G RSSIs of other smart phones by the APIs on my phone?
From the java.lang.Object -> android.telephony.SignalStrength
The public methods are:
int getCdmaDbm()
Get the CDMA RSSI value in dBm
int getCdmaEcio()
Get the CDMA Ec/Io value in dB*10
int getEvdoDbm()
Get the EVDO RSSI value in dBm
int getEvdoEcio()
Get the EVDO Ec/Io value in dB*10
int getEvdoSnr()
Get the signal to noise ratio.
int getGsmBitErrorRate()
Get the GSM bit error rate (0-7, 99) as defined in TS 27.007 8.5
int getGsmSignalStrength()
Get the GSM Signal Strength, valid values are (0-31, 99) as defined in TS 27.007 8.5
int hashCode()
Returns an integer hash code for this object.
boolean isGsm()
developer.android.com has far more details on each of these APIs but I suspect copying and pasting them directly would be frowned upon. I can describe each of these in a bit more detail if you need but you should be able to search on each of those methods now that you know what they are.
These methods are all available in API version 7 and later but these discussions are also useful:
Retrieve GSM signal strength in Android - Stack Overflow
Android: How do I get GSM signal strength for all available network operators - Stack Overflow
How to get cell service signal strength in Android? - Stack Overflow
Thank you!
I will try your methods.
I have obtained the RSSI of GSM base stations, by your methods.
But, can I obtain the RSSI of neighbour smart phones?
That'll be an interesting problem to solve. You'll have to develop an app or service that you can install on those neighbour smartphones that will allow you to interrogate them remotely or report their RSSIs to a server at whatever interval or trigger you choose. There are no built in services in any operating system that I'm aware of that allow one smartphone to interrogate a nearby smartphone's mobile RSSI.
I should be a hacker to download my program on the neighbour smartphones, and I will try.
I still have other questions.
(1) The TcpDump for Linux can sniff the WiFi packets, which include RSSI, on my PC. The TcpDump for Android can sniff the WiFi packets, which don't include RSSI, on my smartphone. The TcpDump for Android is found from the Internet, and it may have limited functions. Is there a newest version of TcpDump for Android on the Internet, which can provide with RSSI?
(2) On my smartphone, I can use shell command "TcpDump -i wlan0" for WiFi. But what shell commands can be used for Bluetooth and 2G/3G/4G?
I have downloaded the newest version of TcpDump (4.7.4) for Android.
I use the shell "tcpdump -I", but my smartphone WiFi interface doesn't support monitor mode.
Don't all smartphone WiFi interfaces support monitor mode?
Can TcpDump be used for TOA (non-RSSI) based indoor positioning?
I wasn't implying you install the service on smartphones that were not your own. Only that if you're using multiple devices you own to create maps of signal strengths in indoor spaces, you could install it on them. Otherwise, of course there is no way to interrogate proximal devices without their permission.
This is probably a question for a TCPDump forum but no, no all WiFi drivers support monitor mode. This is the case in many OSes. The driver vendor has to support it for it to work.
It a good idea to deploy some devices for complex indoor positioning environments.
It is helpful to improve the precision of indoor positioning.