EXIF metadata missing GPS and timezone info

I’m using the Fairphone camera app (com.fps.camera v8.00.01.0011.2.0). I’ve been taking a few hundred pictures in the last month, and all of them have missing GPS and timezone information in their embedded EXIF metadata. Camera app has location permission, location is accurate when checking on a map app in the middle of taking pictures, and location icon activates as expected when opening the camera app.

More specifically:

  • GPSLatitude/GPSLongitude are specified but are always zero
  • DateTime is specified, but OffsetTime is missing
  • DateTimeOriginal and OffsetTimeOriginal are missing

Here’s a dump of the EXIF metadata of a picture:

 IFD: Ifd<ID=(0) IFD-PATH=[IFD] INDEX=(0) COUNT=(10) OFF=(0x0008) CHILDREN=(2) PARENT=(0x0000) NEXT-IFD=(0x02a7)>
 - TAG: IfdTagEntry<TAG-IFD-PATH=[IFD] TAG-ID=(0x0100) TAG-TYPE=[SHORT] UNIT-COUNT=(1)> NAME=[ImageWidth] VALUE=[[4096]]
 - TAG: IfdTagEntry<TAG-IFD-PATH=[IFD] TAG-ID=(0x0110) TAG-TYPE=[ASCII] UNIT-COUNT=(19)> NAME=[Model] VALUE=[Fairphone (Gen. 6)]
 - TAG: IfdTagEntry<TAG-IFD-PATH=[IFD] TAG-ID=(0x0101) TAG-TYPE=[SHORT] UNIT-COUNT=(1)> NAME=[ImageLength] VALUE=[[3072]]
 - TAG: IfdTagEntry<TAG-IFD-PATH=[IFD] TAG-ID=(0x0112) TAG-TYPE=[SHORT] UNIT-COUNT=(1)> NAME=[Orientation] VALUE=[[1]]
 - TAG: IfdTagEntry<TAG-IFD-PATH=[IFD] TAG-ID=(0x0132) TAG-TYPE=[ASCII] UNIT-COUNT=(20)> NAME=[DateTime] VALUE=[2026:09:26 17:22:57]
 - TAG: IfdTagEntry<TAG-IFD-PATH=[IFD] TAG-ID=(0x0103) TAG-TYPE=[SHORT] UNIT-COUNT=(1)> NAME=[Compression] VALUE=[[6]]
 - TAG: IfdTagEntry<TAG-IFD-PATH=[IFD] TAG-ID=(0x0213) TAG-TYPE=[SHORT] UNIT-COUNT=(1)> NAME=[YCbCrPositioning] VALUE=[[1]]
 - TAG: IfdTagEntry<TAG-IFD-PATH=[IFD] TAG-ID=(0x8769) TAG-TYPE=[LONG] UNIT-COUNT=(1)>
   IFD: Ifd<ID=(1) IFD-PATH=[IFD/Exif] INDEX=(0) COUNT=(17) OFF=(0x00b7) CHILDREN=(0) PARENT=(0x0008) NEXT-IFD=(0x0000)>
   - TAG: IfdTagEntry<TAG-IFD-PATH=[IFD/Exif] TAG-ID=(0x829d) TAG-TYPE=[RATIONAL] UNIT-COUNT=(1)> NAME=[FNumber] VALUE=[[18800/10000]]
   - TAG: IfdTagEntry<TAG-IFD-PATH=[IFD/Exif] TAG-ID=(0x927c) TAG-TYPE=[UNDEFINED] UNIT-COUNT=(24)> NAME=[MakerNote] VALUE=[MakerNote<TYPE-ID=[00 00 00 00 00 00 00 00 00 00 00 40 85 62 c2 bd a1 cf 4a 41] LEN=(24) SHA1=[c80a05fd1e39f1a84a4cb6fab1d5d497de25e790]>]
   - TAG: IfdTagEntry<TAG-IFD-PATH=[IFD/Exif] TAG-ID=(0x829a) TAG-TYPE=[RATIONAL] UNIT-COUNT=(1)> NAME=[ExposureTime] VALUE=[[9999/1000000]]
   - TAG: IfdTagEntry<TAG-IFD-PATH=[IFD/Exif] TAG-ID=(0x9292) TAG-TYPE=[ASCII] UNIT-COUNT=(4)> NAME=[SubSecTimeDigitized] VALUE=[298]
   - TAG: IfdTagEntry<TAG-IFD-PATH=[IFD/Exif] TAG-ID=(0x9291) TAG-TYPE=[ASCII] UNIT-COUNT=(4)> NAME=[SubSecTimeOriginal] VALUE=[298]
   - TAG: IfdTagEntry<TAG-IFD-PATH=[IFD/Exif] TAG-ID=(0x9290) TAG-TYPE=[ASCII] UNIT-COUNT=(4)> NAME=[SubSecTime] VALUE=[298]
   - TAG: IfdTagEntry<TAG-IFD-PATH=[IFD/Exif] TAG-ID=(0x920a) TAG-TYPE=[RATIONAL] UNIT-COUNT=(1)> NAME=[FocalLength] VALUE=[[55900/10000]]
   - TAG: IfdTagEntry<TAG-IFD-PATH=[IFD/Exif] TAG-ID=(0x9209) TAG-TYPE=[SHORT] UNIT-COUNT=(1)> NAME=[Flash] VALUE=[[16]]
   - TAG: IfdTagEntry<TAG-IFD-PATH=[IFD/Exif] TAG-ID=(0x8827) TAG-TYPE=[SHORT] UNIT-COUNT=(1)> NAME=[ISOSpeedRatings] VALUE=[[174]]
   - TAG: IfdTagEntry<TAG-IFD-PATH=[IFD/Exif] TAG-ID=(0x9004) TAG-TYPE=[ASCII] UNIT-COUNT=(20)> NAME=[DateTimeDigitized] VALUE=[2026:09:26 17:22:57]
   - TAG: IfdTagEntry<TAG-IFD-PATH=[IFD/Exif] TAG-ID=(0xa003) TAG-TYPE=[LONG] UNIT-COUNT=(1)> NAME=[PixelYDimension] VALUE=[[3072]]
   - TAG: IfdTagEntry<TAG-IFD-PATH=[IFD/Exif] TAG-ID=(0xa403) TAG-TYPE=[SHORT] UNIT-COUNT=(1)> NAME=[WhiteBalance] VALUE=[[0]]
   - TAG: IfdTagEntry<TAG-IFD-PATH=[IFD/Exif] TAG-ID=(0x9003) TAG-TYPE=[ASCII] UNIT-COUNT=(20)> NAME=[DateTimeOriginal] VALUE=[2026:09:26 17:22:57]
   - TAG: IfdTagEntry<TAG-IFD-PATH=[IFD/Exif] TAG-ID=(0xa002) TAG-TYPE=[LONG] UNIT-COUNT=(1)> NAME=[PixelXDimension] VALUE=[[4096]]
   - TAG: IfdTagEntry<TAG-IFD-PATH=[IFD/Exif] TAG-ID=(0x9101) TAG-TYPE=[UNDEFINED] UNIT-COUNT=(3)> NAME=[ComponentsConfiguration] VALUE=[Exif9101ComponentsConfiguration<ID=[OTHER] BYTES=[1 2 3]>]
   - TAG: IfdTagEntry<TAG-IFD-PATH=[IFD/Exif] TAG-ID=(0xa001) TAG-TYPE=[SHORT] UNIT-COUNT=(1)> NAME=[ColorSpace] VALUE=[[1]]
   - TAG: IfdTagEntry<TAG-IFD-PATH=[IFD/Exif] TAG-ID=(0x9000) TAG-TYPE=[UNDEFINED] UNIT-COUNT=(4)> NAME=[ExifVersion] VALUE=[0220]
 - TAG: IfdTagEntry<TAG-IFD-PATH=[IFD] TAG-ID=(0x8825) TAG-TYPE=[LONG] UNIT-COUNT=(1)>
   IFD: Ifd<ID=(2) IFD-PATH=[IFD/GPSInfo] INDEX=(0) COUNT=(7) OFF=(0x0215) CHILDREN=(0) PARENT=(0x0008) NEXT-IFD=(0x0000)>
   - TAG: IfdTagEntry<TAG-IFD-PATH=[IFD/GPSInfo] TAG-ID=(0x0001) TAG-TYPE=[ASCII] UNIT-COUNT=(2)> NAME=[GPSLatitudeRef] VALUE=[]
   - TAG: IfdTagEntry<TAG-IFD-PATH=[IFD/GPSInfo] TAG-ID=(0x0002) TAG-TYPE=[RATIONAL] UNIT-COUNT=(3)> NAME=[GPSLatitude] VALUE=[[0/0 0/0 0/0]]
   - TAG: IfdTagEntry<TAG-IFD-PATH=[IFD/GPSInfo] TAG-ID=(0x0003) TAG-TYPE=[ASCII] UNIT-COUNT=(2)> NAME=[GPSLongitudeRef] VALUE=[]
   - TAG: IfdTagEntry<TAG-IFD-PATH=[IFD/GPSInfo] TAG-ID=(0x0004) TAG-TYPE=[RATIONAL] UNIT-COUNT=(3)> NAME=[GPSLongitude] VALUE=[[0/0 0/0 0/0]]
   - TAG: IfdTagEntry<TAG-IFD-PATH=[IFD/GPSInfo] TAG-ID=(0x0005) TAG-TYPE=[BYTE] UNIT-COUNT=(1)> NAME=[GPSAltitudeRef] VALUE=[00]
   - TAG: IfdTagEntry<TAG-IFD-PATH=[IFD/GPSInfo] TAG-ID=(0x0006) TAG-TYPE=[RATIONAL] UNIT-COUNT=(1)> NAME=[GPSAltitude] VALUE=[[0/0]]
   - TAG: IfdTagEntry<TAG-IFD-PATH=[IFD/GPSInfo] TAG-ID=(0x001b) TAG-TYPE=[UNDEFINED] UNIT-COUNT=(3)> NAME=[GPSProcessingMethod] VALUE=[stringable with binary data (3 bytes)]
 - TAG: IfdTagEntry<TAG-IFD-PATH=[IFD] TAG-ID=(0x010f) TAG-TYPE=[ASCII] UNIT-COUNT=(10)> NAME=[Make] VALUE=[Fairphone]

GPS location is stored only locally and can be accessed via file manager or gallery app. However it is not part of the technical metadata and can’t be accessed after transferring the pic to another device.

As I usually don’t need GPS location it’s no big deal for me. You may want to open a ticket with FP support.

Addendum: My FP6 runs on stock android.

Is “Save location Information” in settings in the camera app active?

Is in the 2nd settings set after the first setting set pops up and there is a further gear for settings. The setting is quite at the end of the settings list.

I set it to active right before taking a test pic.

It’s BTW the same with “Open Camera”. Geo tagging info is *not* stored in the technical exif info.

For me this looks like a deliberate Google/Android design choice…

Hm, it seems like the missing GPS info is a consequence of Android default policies: https://developer.android.com/training/data-storage/shared/media#media-location-permission

When a picture is selected by an app, Android redacts GPS info in EXIF metadata by default. Native apps can request an additional permission to retain the original metadata. Web apps have no way to request that permission: Chromium

Still, timezone issues are unrelated.

In general, the saving of GPS data works like this in the FP6 photo app. Interesting aspect from @emersion that google forbids GPS data to display.

So first here are my permissions for location for the camera app (I use german):

For me, if I open a phote in Googles Foto app always if I seledt “Info” a map like google maps is shown at the display (if the GPS sensor have contact and data are available at taking the picture). In an other Galarie app I can link the picture to a map (other than google maps) to show the location.

Normally I let me show the exif information with a desktop programm called irfanview.

Here the typical informations what FP6 stored:

Filename - IMG_20260720_095037232_HDR~2.jpg
ImageWidth - 3072
Model - Fairphone (Gen. 6)
ImageLength - 4096
DateTime - 2026:07:20 09:57:25
Orientation - Top left
Compression - 6 (JPG)
YCbCrPositioning - Centered
Exif-IFD-Offset - 183
GPS-IFD-Offset - 533
Make - Fairphone
FNumber - 1.88
MakerNote-IFD-Offset - 437
ExposureTime - 1/234.2 seconds
ResolutionUnit - Inch
SubsecTimeDigitized - 501
SubsecTimeOriginal - 501
SubsecTime - 501
FocalLength - 5.59 mm
Flash - Flash not fired, compulsory flash mode
ISOSpeedRatings - 100
XResolution - 72
YResolution - 72
DateTimeDigitized - 2026:07:20 09:50:39
ExifImageHeight - 3072
White Balance - Auto
DateTimeOriginal - 2026:07:20 09:50:39
ExifImageWidth - 4096
ComponentsConfiguration - YCbCr
ColorSpace - sRGB
ExifVersion - 0220

GPS information: -
GPSLatitudeRef - N
GPSLatitude - 51 37 31.290001 (51.625358)
GPSLongitudeRef - E
GPSLongitude - 7 28 54.400002 (7.481778)
GPSAltitudeRef - Above Sea Level
GPSAltitude - 103.08 m

As you see, DateTimeOriginal is present, OffsetTime and OffsetTimeOriginal is not present.

Beware there are great differences from vendor to vendor witch fields are supportet also programms/apps that read the correct fields. I’ve tried that before, using various programs, with differing results.

Hm, when I checked yesterday it didn’t work. Today it did, albeit stock camera app did not provide GPS altitude unlike Open Camera app. :thinking: