Android GPS module - Hardware Hacking General

Hi,
I am student from the Ruhr-university of Bochum, Germany, and I am working on my master thesis which is dealing with anti spoofing techniques for GPS. I already recognized, that I need to modify the Android GPS subsystem in order to be able to go on with my work as planned. So, I need more information about the GPS modules in the android devices (better: detailed information about one particular module). My aim is to get more GPS properties from the module than currently is given to the Android OS. In fact, I need to get information about the gps signals, like phase, signal strength, etc.
Can anybody help me with this? Where can I find information about any GPS module or is there any known project or hack which is able to get the signal properties?
best regards,
Tordred

I Think you are looking for this:
http://developer.android.com/guide/topics/location/strategies.html
http://developer.android.com/reference/android/location/LocationManager.html
http://developer.android.com/reference/android/location/GpsStatus.html
http://developer.android.com/reference/android/location/GpsSatellite.html

No, sorry. I am not looking for location related stuff. It is not the location I am interested in, it is the GPS signal itself. And this stuff is not supported by the original android implementation.

You can only get as much info as the GPS module is putting out.
The two protocols are NMEA-0183 and SiRF Binary protocol (if applicable).

Renate NST said:
You can only get as much info as the GPS module is putting out.
The two protocols are NMEA-0183 and SiRF Binary protocol (if applicable).
Click to expand...
Click to collapse
Thanks for your answer, I just took a deeper look on the SiRF protocol and it seems to be possible to get the data I need with this protocol. I saw that the Galaxy S2 has built in the SiRFStar IV chip. Does anybody know something about this chip? Is it a "uncut" chip in the Galaxy S2 and is it perhaps possible to "talk" to it using the protocol?

I don't do much with SiRF Binary; on a PC I use it to select the WAAS satellite.
Give it a try, just switch out of NMEA-0183 using the $PSRF100,0 message.

Renate NST said:
I don't do much with SiRF Binary; on a PC I use it to select the WAAS satellite.
Give it a try, just switch out of NMEA-0183 using the $PSRF100,0 message.
Click to expand...
Click to collapse
Now I have a Galaxy Nexus, which has also built in the sirfstarIV gps chip. I am trying to switch out of NMEA, but I am not very familiar with linux ans serial ports. I am trying to send the switch message via terminal to the gps chip, but it seems not be successful.
I already know, that the serial port is the ttyO0, as mentioned in the sirfgps.conf file. I tried to configure it with "setserial" and "stty" and I tried to send a message with "echo", but there is no response.
Can somebody explain to me how I use the serial port correctly?

First try to get the NMEA-0183 working.
The default spec baud is 4800.
You should be able to connect to the GPS chip and without issuing any commands receive NMEA sentences.
Hmm. For built-in chips you have to probably power it up somehow.

It seems the ttyO0 is not the serial port of the gps chip but the serial port of the kernel... I am getting an output using the microcom command, but I can not read it. I tried several baud rates, but it is always unreadable.

Sound like a cool project, but we cannot help you unless you specify exactly what device/model you are using. Its a Nexus I9250 or SGS2 I9100 ??? Is it branded by some other operator etc? Sometimes the best thing is to open the damn thing and see what's inside. (But the Nexus has been in some tear-downs/take-aparts, google it!)
Also have a look at:
"Accessing uart on Galaxy Nexus i9250"
Then you'll need the Service Manual with the schematics to figure out how the GPS is wired. On the I9100 its wired to the modem (BP/CP) and on the I9250 its wired to both AP and to the MUX... (You've got some reading to do...)
But you should be able to find the correct port from dmesg, logcat and the various *.rc scripts...

I tried to get a i9100 because of the sirf gps chip, but I got a i9250 with the ICS 4.04 Stock Rom, which has the same chip built in. I rooted the device using the NexusTool and installed busybox on it.
I have already read several threads to get an orientation how to get access to the serial ports and how to deal with the gps chip:
- [MOD/SETTINGS TWEAK] SiRF GPS on SGS2
- [A][SGS2][Serial] How to talk to the Modem with AT commands
- Accessing uart on Galaxy Nexus i9250
- The all-in-one Galaxy S2 Hack Pack
In order to get an output(or some kind of action in the gps chip) I wrote an app, which is trying to get a gps fix in an background service. So my phone is always trying to get a fix. When I now look into the dmesg or logcat output, there is no hint on gps. I read about those .rc scripts, but i can not find them on my device.
In the /vendor/sirfgps.conf I found the lines ...
Code:
UART_DRIVER = /dev/ttyO0
UART_BAUD_RATE = 2
...where 2 stands for 460800 Baud. I tried to connect to this port using the command
Code:
microcom -s 460800 /dev/ttyO0
with a terminal emulator app, but the output was not readable. I tried several other baud rates, but it is always unreadable.

What do you mean with "...the output was not readable.."??
Do you get anything? Can you post it.
If you get "something", then, you're either:
- using the wrong UART port
- the wrong baudrate, parity, stop bit settings etc.
- receiving data in some unknown format, possibly encrypted.
Please, post (on Pastie) your dmesg output (as it appears) immediately after bootup. And possibly a full debug logcat using the "Logcat Extereme" App, when turning on and off GPS.
Also you should not use apps for trying to read this data, as your app runs in VM which doesn't have full root FS access, regardless of SU. You first try getting data from a terminal session either from phone side (adb) or from PC (Realterm etc.) side.

Is this true?
Hello, i'm new here.
I'm wondering is it true that my Galaxy young gps module are :
1. Broadcom BC2075 (AGPS support chip)
2. Broadcom BC4751 (GPS receiver)
i'm using ES file exprorer on my rooted system and find glconfig2075.xml and glconfig4751.xml. in /etc/gps/ system folder. Nothing found in my cheap prerooted with no gps support tablet.
If this is true then there is some relief that it is kinda easy to find what my gps are in situ, rather than look out in the cloud via google.

It's still hazy to me, why is it that the same hardware but a software change from 10 minutes up to 5 seconds to receive satellite. Anywhere.

Android GPS Module
Renate NST said:
I don't do much with SiRF Binary; on a PC I use it to select the WAAS satellite.
Give it a try, just switch out of NMEA-0183 using the $PSRF100,0 message.
Click to expand...
Click to collapse
Hello
My Android phone those not have a GPS module on it and i need to install and GPS TEST
is there any APP that can help or do i need to get another phone am using a Techno W2

Related

XDA mini exec to GPS device dev

Hi all,
I am for Uni looking into using a GPS device (just a receiver) to pass your location to a PDA and with some work on some software on the device do some calculations and useful stuff re where you have gone, how fast etc. But the app on the PDA must be custom written
All i need from the GPS device is location (in longitude+latitude?) and this would be queried about every second.
a) how easy is it to get such an output from a receiver without a lot of premade software overhead?
b) just how accurate can GPS be? i read about 10m but down to 2/3m with WAAS?
c) anyone know of any good documentation on using GPS output for a PDA app?
d) any advice on good GPS devices that can do just this but as accurately as poss. i hear about the ability to get down to a few inches but this isnt publically available? (maybe wrong there)
any help or pointers would be very, very much appreciated.
Andy
Most GPS units send navigation data using the NMEA 0183 protocol, which is text-based (and thus easily parsable). Since you mention the XDA mini exec, I assume you're looking at Bluetooth GPS units -- these units will look like a COM port to the XDA, so you can use standard serial comms code to receive the NMEA data.
If you look around the net (e.g. google, sourceforge.net) you should be able to find a number of Windows applications that do what you want. Most of them will have been written for big Windows, but should be easily portable to the XDA platform.

Detect internal GPS device

Hello guys!
Can anyone help me to resolve next problem: I want to determine that internal GPS device is present in PPC or Smartphone. Can I do it programmatical or analizing regestry?
Regards.
This app called GPSTest does good job of searching the com ports and displaying the output from there.
http://www.smartphone.net/software_detail.asp?id=3170
Surur
Thanks, but I want solution for my app. So maybe someone know how it can be implemented. I searched all regestry, compare two devices with internal GPS and without but failed. Maybe I missed something.
surur said:
This app called GPSTest does good job of searching the com ports and displaying the output from there.
http://www.smartphone.net/software_detail.asp?id=3170
Surur
Click to expand...
Click to collapse
Besides, this App scanning all COM port to determine where GPS device, this is OK, but it couldn't say that it internal or external GPS.
Besides, it doesn't work on my MOTO Q9H.
here is a hint: GPS Test 1.04
Requirements: A bluetooth or built in GPS unit.
any ideas?
So you want to programmatically determine if a device has built-in GPS or not.
A quick and dirty way would be to take the model number and compare it to a list of known devices.
As I said, quick and dirty.
Surur
I think the only 'real' way to do it is scan the com ports like GPSTest and GPSViewer do. I mean if there was a better way, why doesn't existing software use it?
surur said:
Do you want to programmatically determine if a device has built-in GPS or not.
Click to expand...
Click to collapse
exactly.
surur said:
A quick and dirty way would be to take the model number and compare it to a list of known devices.
As I said, quick and dirty.
Surur
Click to expand...
Click to collapse
it's not a solution, sorry.
Enumerate the com ports on the device, opening each in turn and listen for $GPRMC messages?
...or for the device configured in the GPS control panel, look at the following registry key: HKEY_LOCAL_MACHINE\System\CurrentControlSet\GPS Intermediate Driver\Drivers\Control Panel Configured Device
or see http://www.geoframeworks.com/forum/Forum45-1.aspx
gingercat said:
Enumerate the com ports on the device, opening each in turn and listen for $GPRMC messages?
Click to expand...
Click to collapse
nice, but in this case I'll found com port on wich GPS device is present, but I don't know if this is Internal or External device.
gingercat said:
...or for the device configured in the GPS control panel, look at the following registry key: HKEY_LOCAL_MACHINE\System\CurrentControlSet\GPS Intermediate Driver\Drivers\Control Panel Configured Device
Click to expand...
Click to collapse
nice again ))) but some devices (for example MOTO Q9h) has empty regestry but Intermediate driver works and getting fixes.
and Smartphone doesn't have any Control Panel for GPS ((((
Chainfire said:
I think the only 'real' way to do it is scan the com ports like GPSTest and GPSViewer do. I mean if there was a better way, why doesn't existing software use it?
Click to expand...
Click to collapse
ok, I'll found COM port, but how can I determine is this internal device?
I don't think it possible to distinguish between the two reliably. What does it matter, after all? GPS is GPS
Once the COM port detected I think you should be able to know whether it's a BT connection or not (I think you can retrieve configured BT connections and know which COM ports are concerned). Then you should know if you have an internal GPS.
TheFox37 said:
Once the COM port detected I think you should be able to know whether it's a BT connection or not (I think you can retrieve configured BT connections and know which COM ports are concerned). Then you should know if you have an internal GPS.
Click to expand...
Click to collapse
unfortunately I have such device as MOTO Q9H, internal GPS device is configured throw bluetooth port ((( and I steel couldn't get clear algorithm for all devices.
unfortunately after analyzing big library as GeoFramework I understood that no universal way to detect internal GPS device ((( it's very sadly

Can't connect Bluetooth GPS Receiver

Hello
unfortunatly the search didn't work for me to find a solution (maybe anybody can help me..)
i simply want to pair my Universal with my bluetooth gps receiver.
in settings/connections/bluetooth i added a new device.
it took a while, then it found my gps receiver and asked me for passkey. i used "1234" - but i am unsure, if that was the right key (i'm 80% sure..)
after that i got a new entry in the list of the avaible devices.
so far so good... BUT:
the gps receiver only appers as "disconnected". when i want to "connect" to it, it says "Your device did not connect with GP-700. The connection failed or the passcode is incorrect."
maybe the passcode is incorrect, ok. but i can't insert a new passkey, because it won't ask me for new entry after searching for new devices. i also can't delete the gps receiver entry.
I checked the box in "select services to use from this device. Serial Port". is that correct?
...hmmm it has to be so simple but i can't pair... gr......
please help me
nobody knows an answer...? ;((
hi, we maybe able to help but need more info as i would for sure. what rom are you using? and possibly what radio version? i use a bt gps with mine and passcode is 1234. not sure if thats the case for all though. depending on the rom im using mine shows as disconnected sometimes but i also have to create a valid com port to use with it. hope that helps.
Also what program are you using with you BT device? Mine pairs with '0000'.
If I use Route66, I don't even need to pair it.
When using iGo8, I do pair it.
When using Google Maps, I also need to add a COM port (I use 1 as some programs can't use 0 - eg, MemoryMaps).
Hey, thanks for answering my question.
i am using Tomal v8.90 (light). My radio version is (after unlocking) 0.00.00. Should i flash it back to 1.18? do i have disadvantages?
i wanted to use tomtom..
hope these information helps
I think there's your problem. I'd flash either 1.15 or 1.18 radio.
hm... anybody can help me..?
ThaMasterT said:
hm... anybody can help me..?
Click to expand...
Click to collapse
Flash an updated radio...1.15
i flashed to 1.15 succesfully.
i found out, that 1234 for my device is the right passkey.
i connected in connections/bluetooth to my device (like i wrote above) and it says "connection successful". after that my device is listed under "disconnected" again. furthermore i can't connect to it, when i click on "connect" in the settings. i can't connect to it in tomtom, too...
when i click on the device (listed under connection-settings in "disconnected") the partnership settings will be displayed. here i can select services to use from device. it provide me a list with one item to check: "serial port". but even if i check or if not, it wouldn't affect anything(?). i simply can't connect to my device...
hey,
i solved that problem. i choosed "the right" com port to use the receiver.
thats a little weird, cus i already choosed some random com ports before and it never worked for me. unfortunately i didn't get some useful error messages or something from tomtom or other programs. now i tried a different port again and suddenly it worked...
sorry for the trivial problem and thank you very much for helping me.
btw: the device is still listed as "disconnected" in settings. who the **** cares...
i have the tomtom gps mkii sirf III and i don't get it paired or manually connected either, but then, when i installed the tomtom software, i found out, that it does not need to be paired in the windows settings first. ok, you might say, this is a coincidence, because tomtom works fine with their own hardware, of course. but no! in my settings there is also an "external gps" point, and all you need to do is put in a proper port and speed and it'll work. the easiest test for that would be google maps. in the beginning i also worried about pairing and connecting, but i found that i didn't have to do that.

Need something explained (GPS issues related)

In /data there are multiple log files that I am trying to decipher.
in SUPL_EVENT_LOG.txt I am seeing this
GN_SUPL_Config_Set: Set SLP IPAddress == lbs.geo.t-mobile.com, Port =
= 7275
It alternates with the supplement server configured on the device (per GPS fix threads)
GN_SUPL_Config_Set: Set SLP IPAddress == supl.google.com, Port == 7276
Why would the phone try to get the data from the lab server in TMO? It is def not accessible from the public Internet
Also, is there a way to find out the GPS chipset from the command line?
I know the phone sets it as a serial device, but how can get teh hardware information.
SOMEONE identified the chipset as the Broadcom InControl 20751 in another thread - don't know if that has been conclusively confirmed, but it's supposed to be a GPS/BT/FM 3 in one chip
if you check their web, interesting part is, not only is it Fm receive but Fm transmit as well
I suspect nokia is using it in their N8 that's coming out soon, as they've described Fm transmit capability on it - it'd be nice to have GPS nav instructions over the car stereo (as well as music files or audio books)
It would also be nice to have GPS that actually works.
That's interesting.
I think the device itself is a real gem, hopefully the hacker community will make it shine as bright as it can be , can't wait for custom ROM's for the device.

[Q] BT Serial Port SPP (rfcomm) maybe someday?

I can't post this in development because I an still a nobody ...
Would it be possible to add in rfcomm for Bluetooth SPP serial port? The Nook would make a great tablet for telescope mount control over BT. You can't do it with the iPad due to the security around the BT stacks. It would also allow NEMA GPS modules to be read for different applications.
I'm running CM7 7.0.2 and this isn't yet available.
Just a dream?
Not sure if this is what you're talking about, but you can send the GPS data to the Nook form a GPS device like a Cell phone or GPS receiver. I use a stand alone GPS receiver and sometimes my Droid cell phone to send my location to the Nook to use CoPilot and Google Maps on the Nook. That's at least half of what you're talking about right?
Calla969 said:
Not sure if this is what you're talking about, but you can send the GPS data to the Nook form a GPS device like a Cell phone or GPS receiver. I use a stand alone GPS receiver and sometimes my Droid cell phone to send my location to the Nook to use CoPilot and Google Maps on the Nook. That's at least half of what you're talking about right?
Click to expand...
Click to collapse
Hmm, you got me pondering...
I got out my trusty Garmin GPS 10 and I can pair but it's not connected. That could be for a couple of reasons (the Nook only connects on demand maybe.) But if what you are saying is correct, maybe it does support SPP since it uses a comm port for the GPS.
But, when I connected from my notebook and checked the services, SPP wasn't one of them (just OPEX and AD2P.) I will keep playing but I half expect that part of the SPP stack requirements are missing.
On the plus side, if the GPS will work too, that is a second plus since it's nice to be able to ask the GPS for the specific time and location during the telescope setup (it matters.)
I'll look for an app in the Market that might read an external GPS devices and show the location. I notice most apps are for reading the phone GPS (which we don't have.)
Thanks!
Android does not support SPP, but there are multiple apps in the market which do, Bluetooth GPS Provider is the one which I prefer as it works very well and just works no matter what.
Thanks folks,
I fired up the Garmin GPS 10 and it works using Bluetooth GPS. That means an application can add in the SPP. That is perfect and gives us hope!
I really appreciate the responses!
Awats said:
Thanks folks,
I fired up the Garmin GPS 10 and it works using Bluetooth GPS. That means an application can add in the SPP. That is perfect and gives us hope!
I really appreciate the responses!
Click to expand...
Click to collapse
Yes, apps can directly talk with a Blutooth GPS. There are a handful which do this, or again, Bluetooth GPS Provider will provide the BT GPS to every app that asks for GPS.
This isn't only about GPS. GPS is just one aspect. I want to communicate with any serial device over BT. My understanding from reading it that rfcomm and the applications can supply that function.
What I did notice last night is that even without an application that supplies rfcomm, the Nook would still discover the devices unlike the iPad. I could pair to pretty much anything I wanted but it wouldn't connect. That's normal from my perspective.
At least I know it can be made to work.
khaytsus said:
Android does not support SPP...
Click to expand...
Click to collapse
Well, the XOOM does at least. Not sure whether it was Motorola's or Google's doing though. I use a Bluetooth to Serial adapter from Roving Networks quite successfully with it. I'm unaware of any other devices that do it.
I agree that native Android doesn't support SPP but the rfcomm library does and if it's linked into the application, SPP works.
Now if I can only find a way to use VNC to control my PPC from the Nook without going through a remote server (maybe via adhoc or BT ...)
Any device at API level 5 (2.0) or above may support BluetoothSocket, RFCOMM and therefore SPP unless the OEM did something to screw it up.

Categories

Resources