I would like to geotag my photos taking on a Canon EOS Rebel T4i. However, I would like to avoid paying $300+ for the Canon GPS receiver, so I thought maybe I would use an Arduino and a GPS module (eg. u-blox GPS) to built my own receiver. Ideally, I would like to mount this on the hot-shoe, and have the camera get the GPS data automatically for every photo.

I have experience working with Arduino and GPS hooked up to it; however, I don't know how to interface it with a Canon Rebel or if it's even possible to do it. Anyone know if this can be done?

FYI, currently I am using a Canon EOS Rebel T4i, but plan on upgrading to 80D/T7i/M5 or equivalent in the future.

  • There is no possible way you will come out ahead when you factor in the time it takes to build and debug such a device. Jun 17, 2018 at 5:31
  • 5
    @whatsisname - some people have more free time then they have expendable funds. Some people also like making a point, in this case, the point of companies charging 300$ for something that should cost 15$.
    – nbubis
    Jun 17, 2018 at 10:25
  • 2
    I am not trying to 'come out ahead' other than cost when wanting to do this. I like playing with arduino, and GPS data for me is a nice to have, rather than need. So if this isn't possible, I would rather go without GPS than pay $300.
    – E.L.
    Jun 18, 2018 at 11:53
  • One would hope that you wouldn't have to use an Arduino at all, as there is a standard serial protocol to attach a GPS receiver to another device -- but it doesn't seem that Canon uses that standard protocol. You may be faced with having to reverse engineer the protocol they do use. It looks like most people just use a gps logger and add merge the geo data with the pictures on a computer. Jun 18, 2018 at 12:53

3 Answers 3


I run an app on my phone that logs GPS positions and use the exif time stamps on the images to sync later on a PC with a script that writes the GPS coordinates to the image files.

  • 4
    This is a working solution but does not answer the question, which is valid on its own and deserves an answer for people who come here in search for a similar solution.
    – pipe
    Jun 17, 2018 at 11:19
  • 1
    @pipe yes I agree. I put it in as an answer because it's more that than it is a comment. It's a handy fallback for anyone facing the problem of Geo tagging who isn't an electronics enthusiast.
    – user16259
    Jun 17, 2018 at 15:00
  • If this qustion had included the actual script then I'd say it's an answer. As it is now I feel that it's a comment.
    – Andreas
    Aug 3, 2018 at 9:33

There's no standard way to communicate the GPS data. But, there is an easy way to keep your GPS in sync with each shot you take.

The center pin on the hotshoe and the sides of the shoe are connected to a normally-open switch that closes when the shutter is pressed — at least, for any ISO standard hotshoe. You can use that.

In fact, see this post over on Electronic Stack Exchange, with some suggested circuits, including protection against overvoltage — there won't (or shouldn't, on a normal camera) be anything coming from the camera but you may want to protect against what you might put in. (For modern cameras, < 6V should be fine, and more is probably okay, but… better safe than out a camera.)

If it's okay for your device to just keep running and keep a trace of your position, you don't even need that — keep the log and synchronize later. This will take more battery than waking up, but will be somewhat less complicated in exchange.

  • How does it send the GPS data to the camera? Is that via the hotshoe, or another connection?
    – vclaw
    Jun 17, 2018 at 9:21
  • It doesn't send the data. It just uses the signal to wake up and record the location. Later, you run a script to synchronizes this record with the photograph timestamps.
    – mattdm
    Jun 17, 2018 at 12:45
  • 1
    How does Canon's GP-E2 write the data? I want to avoid doing any post-processing/syncing work, either with an external circuit or an app on the phone. My biggest road block at this point is writing the Lat/Long/Alt data to the file in-camera.
    – E.L.
    Jun 18, 2018 at 11:56

From the couple of Arduino with GPS articles I've seen (Still waiting for my order to arrive from Amazon) you should be able to use the hot-shoe as a switch via a couple of resistors and sense the closure on one of the analog inputs and have the read the GPS when triggered.

  • 2
    I think the existing answers already cover this approach.
    – mattdm
    Aug 3, 2018 at 9:11

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.