Comments (14)
What information about the current cell tower(s) your phone sees is shown by an app like SatStat?
Stock Android 7? My phones don't properly support the newer getAllCellInfo() API call with with a stock ROM that might be fully implemented. So the error is likely in the code for handling the results of the getAllCellInfo() call which is not as well tested. Depending on what SatStat reports, I may have to give you a debug build with some logging enabled to determine what is happening.
from dejavu.
What information about the current cell tower(s) your phone sees is shown by an app like SatStat?
SatStat, mozilla stumbler, wigle experience no problems accessing current cell info.
Stock Android 7?
yes, rooted stock 7.0 without gapps
from dejavu.
i experimented a bit more and found minor bug: after using standart "clear data" feature application crashes and fails to start. Only disabling and enabling back in UnifiedNlp fixes that.
Right after that application db filled with available wifi data, but no GSM entries so far. Also i suspect that application able obtain cell data only if two cell id reported by api simultaniosly. In many (if not most) phones that possible only duiring process of changing active cell.
from dejavu.
I'll try to reproduce the crash when data is cleared through the system settings tomorrow morning (late here now). With respect to the tower issue, if I were to get you a debug build with some logging enabled could you run that and post the logged data?
from dejavu.
With respect to the tower issue, if I were to get you a debug build with some logging enabled could you run that and post the logged data?
Sure
from dejavu.
update: app work normal if there is 2G cells. so problem only with 3G cell ids which are 28 bit long.
from dejavu.
Looks like the crash when you clear data using system settings is because the permissions it needs are also reset. That is fixed in v1.0.4 but it looks like F-Droid is only up to v1.0.2.
I've made a special build of the current 1.0.4 which has some additional logging to indicate which API it got the mobile/cell tower information from and, I hope, some indication of what is going wrong interpreting the information. adb logcat | grep DejaVu
should get the lines I'd like to see.
from dejavu.
OK. since log contains quite sensitive information i cut intresting parts only.
start on 2G...
12-23 08:20:13.212 12263 12283 D DejaVu Backend: onOpen() entry.
12-23 08:20:13.223 12263 12263 D DejaVu GpsMonitor: onCreate()
12-23 08:20:13.230 12263 12263 D DejaVu GpsMonitor: GpsMonitor onBind() entry.
12-23 08:20:13.232 12263 12263 D DejaVu Backend: mConnection.onServiceConnected()
12-23 08:20:13.242 12263 12263 D DejaVu Backend: onClose()
12-23 08:20:13.244 12263 12263 D DejaVu Cache: clear() - entry
12-23 08:20:13.245 12263 12263 D DejaVu GpsMonitor: onDestroy()
12-23 08:20:13.249 12263 12299 D DejaVu Backend: getMobileTowers(): getAllCellInfo() returned 7records.
12-23 08:20:13.250 12263 12299 D DejaVu Backend: getMobileTowers(): GSM tower: CellInfoGsm:{mRegistered=YES mTimeStampType=oem_ril mTimeStamp=28512754213601ns CellIdentityGsm:{ #### correct cell id##### } CellSignalStrengthGsm: ss=17 ber=99 mTa=2147483647}
12-23 08:20:13.251 12263 12299 D DejaVu Backend: getMobileTowers(): GSM tower: CellInfoGsm:{mRegistered=NO mTimeStampType=oem_ril mTimeStamp=28512754213601ns CellIdentityGsm:{ #### correct cell id#####} CellSignalStrengthGsm: ss=14 ber=99 mTa=2147483647}
12-23 08:20:13.251 12263 12299 D DejaVu Backend: getMobileTowers(): GSM tower: CellInfoGsm:{mRegistered=NO mTimeStampType=oem_ril mTimeStamp=28512754213601ns CellIdentityGsm:{ #### correct cell id#####} CellSignalStrengthGsm: ss=24 ber=99 mTa=2147483647}
12-23 08:20:13.251 12263 12299 D DejaVu Backend: getMobileTowers(): GSM tower: CellInfoGsm:{mRegistered=NO mTimeStampType=oem_ril mTimeStamp=28512754213601ns CellIdentityGsm:{ #### correct cell id#####} CellSignalStrengthGsm: ss=14 ber=99 mTa=2147483647}
12-23 08:20:13.251 12263 12299 D DejaVu Backend: getMobileTowers(): GSM tower: CellInfoGsm:{mRegistered=NO mTimeStampType=oem_ril mTimeStamp=28512754213601ns CellIdentityGsm:{ #### correct cell id#####} CellSignalStrengthGsm: ss=11 ber=99 mTa=2147483647}
12-23 08:20:13.251 12263 12299 D DejaVu Backend: getMobileTowers(): GSM tower: CellInfoGsm:{mRegistered=NO mTimeStampType=oem_ril mTimeStamp=28512754213601ns CellIdentityGsm:{ #### correct cell id#####} CellSignalStrengthGsm: ss=16 ber=99 mTa=2147483647}
12-23 08:20:13.251 12263 12299 D DejaVu Backend: getMobileTowers(): GSM tower: CellInfoGsm:{mRegistered=NO mTimeStampType=oem_ril mTimeStamp=28512754213601ns CellIdentityGsm:{ ####correct cell id#####} CellSignalStrengthGsm: ss=17 ber=99 mTa=2147483647}
12-23 08:21:13.204 12263 12283 D DejaVu Backend: scanAllSensors() - emitterCache is null?!?
12-23 08:22:13.237 12263 12297 D DejaVu Backend: scanAllSensors() - emitterCache is null?!?
that line repeats many times.
here i switched 2G to 3G and since nothing happens disabled and reenabled app in UnifiedNlp:
12-23 08:45:13.243 12263 12297 D DejaVu Backend: scanAllSensors() - emitterCache is null?!?
12-23 08:46:13.223 12263 12282 D DejaVu Backend: scanAllSensors() - emitterCache is null?!?
12-23 08:46:43.260 12263 12297 D DejaVu Backend: onOpen() entry.
12-23 08:46:43.267 12263 12263 D DejaVu GpsMonitor: onCreate()
12-23 08:46:43.270 12263 12263 D DejaVu GpsMonitor: GpsMonitor onBind() entry.
12-23 08:46:43.276 12263 12263 D DejaVu Backend: mConnection.onServiceConnected()
12-23 08:46:43.280 12263 13665 D DejaVu Backend: getMobileTowers(): getAllCellInfo() returned 4records.
12-23 08:46:45.476 12263 13671 D DejaVu Backend: getMobileTowers(): getAllCellInfo() returned 4records.
12-23 08:46:47.464 12263 13676 D DejaVu Backend: getMobileTowers(): getAllCellInfo() returned 4records.
12-23 08:46:49.474 12263 13679 D DejaVu Backend: getMobileTowers(): getAllCellInfo() returned 4records.
12-23 08:46:51.466 12263 13682 D DejaVu Backend: getMobileTowers(): getAllCellInfo() returned 4records.
12-23 08:46:53.468 12263 13685 D DejaVu Backend: getMobileTowers(): getAllCellInfo() returned 4records.
12-23 08:46:55.473 12263 13692 D DejaVu Backend: getMobileTowers(): getAllCellInfo() returned 4records.
12-23 08:46:57.470 12263 13697 D DejaVu Backend: getMobileTowers(): getAllCellInfo() returned 4records.
12-23 08:46:59.472 12263 13700 D DejaVu Backend: getMobileTowers(): getAllCellInfo() returned 4records.
12-23 08:47:01.468 12263 13704 D DejaVu Backend: getMobileTowers(): getAllCellInfo() returned 4records.
12-23 08:47:03.484 12263 13709 D DejaVu Backend: getMobileTowers(): getAllCellInfo() returned 4records.
12-23 08:47:05.480 12263 13715 D DejaVu Backend: getMobileTowers(): getAllCellInfo() returned 4records.
12-23 08:47:07.481 12263 13718 D DejaVu Backend: getMobileTowers(): getAllCellInfo() returned 4records.
12-23 08:47:09.474 12263 13725 D DejaVu Backend: getMobileTowers(): getAllCellInfo() returned 4records.
12-23 08:47:11.476 12263 13744 D DejaVu Backend: getMobileTowers(): getAllCellInfo() returned 4records.
12-23 08:47:13.483 12263 13754 D DejaVu Backend: getMobileTowers(): getAllCellInfo() returned 4records.
12-23 08:47:15.471 12263 13765 D DejaVu Backend: getMobileTowers(): getAllCellInfo() returned 4records.
12-23 08:47:17.477 12263 13769 D DejaVu Backend: getMobileTowers(): getAllCellInfo() returned 4records.
12-23 08:47:19.472 12263 13774 D DejaVu Backend: getMobileTowers(): getAllCellInfo() returned 4records.
12-23 08:47:21.478 12263 13776 D DejaVu Backend: getMobileTowers(): getAllCellInfo() returned 3records.
after that i made many manipulations (switching modes, wifi, turning on-off airplane mode...) with phone in attempt to see any 3G cells in log and not succeeded at all.
but i found this:
12-23 08:53:11.475 12263 16035 D DejaVu Backend: getMobileTowers(): getAllCellInfo() returned 5records.
12-23 08:53:11.476 12263 16035 D DejaVu Backend: getMobileTowers(): GSM tower: CellInfoGsm:{mRegistered=YES mTimeStampType=oem_ril mTimeStamp=30490983214826ns CellIdentityGsm:{#### correct cell id#####} CellSignalStrengthGsm: ss=28 ber=99 mTa=2147483647}
12-23 08:53:11.476 12263 16035 D DejaVu Backend: getMobileTowers(): GSM tower: CellInfoGsm:{mRegistered=NO mTimeStampType=oem_ril mTimeStamp=30490983214826ns CellIdentityGsm:{#### correct cell id#####} CellSignalStrengthGsm: ss=17 ber=99 mTa=2147483647}
12-23 08:53:11.476 12263 16035 D DejaVu Backend: getMobileTowers(): GSM tower: CellInfoGsm:{mRegistered=NO mTimeStampType=oem_ril mTimeStamp=30490983214826ns CellIdentityGsm:{#### correct cell id#####} CellSignalStrengthGsm: ss=17 ber=99 mTa=2147483647}
12-23 08:53:11.476 12263 16035 D DejaVu Backend: getMobileTowers(): GSM tower: CellInfoGsm:{mRegistered=NO mTimeStampType=oem_ril mTimeStamp=30490983214826ns CellIdentityGsm:{#### correct cell id#####} CellSignalStrengthGsm: ss=17 ber=99 mTa=2147483647}
12-23 08:53:11.476 12263 16035 D DejaVu Backend: getMobileTowers(): GSM tower: CellInfoGsm:{mRegistered=NO mTimeStampType=oem_ril mTimeStamp=30490983214826ns CellIdentityGsm:{ mMcc=2147483647 mMnc=2147483647 mLac=2147483647 mCid=2147483647 mArfcn=41 mBsic=0x32} CellSignalStrengthGsm: ss=16 ber=99 mTa=2147483647}
12-23 08:53:11.483 12263 16038 D DejaVu RfEmitter: updateLocation(RF Emitter: Type=MOBILE, ID='GSM/2147483647/2147483647/2147483647/2147483647', ASU=16, Note='') emitter is new.
idk what 2147483647 is, but apparently it is not cell id at all =)
from dejavu.
I assume the "#### correct cell id#####" string is from your edit to remove sensitive information.
2147483647 is 0x7FFFFFFF in hex, so that looks like Integer.MAX_VALUE and looking at the constructor for CellIdentityGsm that is what is put into all the fields when the record is built. Comments on mMcc and mMnc indicate that the valid range is 0..999, so I'll add a check for that before I trust the values. I wish that my phone supported that API: If things work as I hope your phone should get a pretty good location from mobile towers alone.
from dejavu.
I've put another test version of DejaVu out where you can test it. Link is https://www.dropbox.com/s/fxpexikeu3pfvqq/DejaVu-1.0.4a-debug.apk?dl=0
If this fixes your issue then I'll release the change.
Thank you for helping finding this bug and helping me fix it.
from dejavu.
If this fixes your issue then I'll release the change.
well it does not create weird record in database anymore, but still can't see any 3G cells. This mean i normally cannot get location from GSM at all. Because i use 3G for everyday connection which coverage is more than 100%. When radiomodule sees 3G cells it does not even try scan 2G band at all. The only way to make phone scan for 2G cells is switch off 3G connectivity. Which is sad.
let clear some moments about log above. First of all at the begining 3G disabled and database is totally clear. At 08:20:13.249 app found 7 2G cells and write them to db. At log brake i enable 3G mode and (as i understand) at 08:46:43.280 your app found some new cells. But they not writed to db. I am pretty shure that founded cells are new ones because 3G is enabled now. Satstat clearly indicates that phone assosiated with 3G network and showing 3g cell id, and while phone is in 3G mode 2G band is ignored.
from dejavu.
The processing after the point where the log messages were generated is identical, so it seems unlikely to me that there can be a difference between 2G and 3G as far as what gets into the database.
If I can see the unedited messages emitted by DejaVu, preferably with a copy of the database, I might be able to see more. Could you filter your logcat to just show the DejaVu related lines (no other editing or clean up please) and get a copy of the database:
adb root
adb pull /data/data/org.fitchfamily.android.dejavu/databases/rf.db
If you can email them to [email protected] I can take a closer look to see what did not made it into the database.
from dejavu.
Ok. Now i clean app data. disable and reenable app in UnifiedNlp. Phone is normal GSM mode (all "G"s are enabled). now it gathers sattelites and i'll send logcat log and db to email. and screenshot from satstat. just in case :)
from dejavu.
Private correspondence with @sibrat confirmed above commits fixed issues.
from dejavu.
Related Issues (20)
- [Request] Add "Active Mode" to build initial database HOT 3
- Not fetching location HOT 2
- 5GHz WLAN HOT 16
- Update WiFi blacklist HOT 2
- Wrong locations reported HOT 4
- Turn on GPS when new emitter seen and location unknown
- crashes WhatsApp (ArrayIndexOutOfBoundsException) HOT 1
- No known location in UnifiedNlp HOT 1
- Only 2.4 GHz WLAN recorded in the db HOT 1
- Runtime version check missing before TelephonyManager.getNeighboringCellInfo() HOT 2
- Android 11 requires permanent location permission HOT 9
- Bluetooth beacons
- Future development HOT 7
- Bouding box uses wrong conversion between degrees and meters
- Blacklist compares mixed case with lower case
- Blacklist not used
- Don't move mobile emitters
- Checking for expected emitters has bad performance
- Ignore invalid LAC
- How to open database HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from dejavu.