This GoPro sucks

As our steel bar surface is doused with a range of solvents on a daily basis, the pattern on it changes over time. I wanted to shoot a time lapse of it to watch it seethe. I was thinking like: a photo a day for six months.

First, I bought a Brinno camera, which is advertised as a time-lapse camera for job sites, with long battery life. They have 8 models, no grid comparing the features or specs, and no rhyme or reason to their pricing or model number ordering. I bought the one that claimed it had 20x optical zoom, but that was a lie, it's unadjustable super-wide-angle just like the others. The only way to get photos off of it is to pop the card. It's junk.

This is not at all what I was going for.
So then I got a GoPro Hero 7 Black. This might be a really nice camera if I was wearing it on my helmet, but for what I'm trying to do, it seems to be complete crap.

First, the maximum delay between photos is 60 seconds. So that's a whole lot of extra photos that I don't need. Which means I will have to offload those photos every few days to avoid filling up the card.

Getting photos off of it is incredibly tedious:

  1. Connect phone to GoPro over some Frankenfuckery that requires both Bluetooth and a private wifi network, WTF;
  2. Stop camera from recording;
  3. Download photos from GoPro to GoPro phone app (very slow);
  4. Delete photos from GoPro;
  5. Adjust camera zoom, because it resets every time;
  6. Start camera recording again;
  7. Transfer photos from GoPro phone app to Photos app (very slow);
  8. Delete photos from GoPro phone app;
  9. Finally you can get the photos from your phone to your computer.
Maybe this would be slightly less awful if I was paying them $10/month for their Clown Service, but fuck that noise.

Also it just... turns off at random. It's on unswitched wall power and it won't seem to stay awake for longer than 16 hours. Several times it has stopped after exactly 81 shots (minutes). There's a "go to sleep after" setting which defaults to 15 minutes but I have set to "none" and this is still happening. Also 81 is notably not 15.

And sometimes, my phone just won't connect to it. Rebooting the phone didn't work, but rebooting the GoPro did -- you know how you do that? You get up on a ladder, pull it down from the ceiling, unplug the wall power, take it out of the case, and pull the battery because there's no actual power button. Super convenient.

So, I've got this old cracked iPhone 6, and now I'm thinking maybe I should just tape that to the ceiling and run some time-lapse software on that instead. Probably should have started with that.

Dear Lazyweb, any recommendations on iOS time-lapse software? What I'm looking for is:

  • Ability to set the delay between shots to a large number, preferably 1 to 24 hours;
  • Ability to offload photos/videos without needing to un-mount the phone from the ceiling or attach a computer to it;
  • Bonus points if it will upload the photos/videos to iClown or Dropbox or somesuch on a semi-regular basis.
Tags: , , , , , ,

43 Responses:

  1. Jon Dowdall says:

    Personally I'd go with may not have same image quality and would need to find appropriate power but cannot beat it for flexibility / openness.

  2. Pagrus says:

    At our shop we had a Dropcam and it was kind of a pain to set up. Once it was in place it was pretty easy to grab stills though, and since it was in their clown we didn't have to worry about schlepping memory cards or other nonsense.

    You can have it if you want, although I have no idea what the status of the Dropcam clown service is nowadays.

  3. David J. says:

    The OSnap! app has an adjustable delay between shots from 0.25 sec to just under 49 hours, and exporting photos or videos to the camera roll is easy. (Manual, but easy.) There is a wifi transfer option I have not paid for.

    • jwz says:

      From reading their manual and FAQ, I think I have learned these things:

      1) Moving photos from in-app to phone-camera-roll is a manual process, meaning no way for photos/videos to just show up in iClown without putting fingers on the phone;

      2) Even if you upgrade to their wifi transfer thing, it's not going to work, because they did something crazy:

      Why won't the OSnap! WiFi Assistant connect to OSnap! on my iOS device?
      [...] Some home WiFi networks employ AP isolation, also known as client isolation, by default and disallow connected devices from 'seeing' each other on the network.

      • Tinus says:

        One would presume that you control the Wi-Fi network at your own establishment and can set up the access points so this isn’t an issue.

        • jwz says:

          A) Wow, figuring out how to disable that security feature sounds like a fun-assed project, thanks for that "opportunity".
          B) I tried it at home and it turns out that trying to use their "wifi sync" thing just makes the iOS app crash on downloading the second photo.

          So I'm giving it a shot now, but in "you can't download anything from the camera until you can physically pull it and plug it into a computer" mode.

  4. Andrew says:

    Would a Raspberry Pi with a camera work? It’s linux, you can write whatever perl cronjobs you want to grab photos, post them from your perl script or use rsync to pull them off, and a kit that even includes pan-tilt is pretty cheap.

    • jwz says:

      I assume the camera options are incredibly shitty. That does not sound like an engaging learning experience.

      • Bruce H says:

        Here's a camera add-on for the Pi that pulls 1080p. Dunno if that's good enough for you. Learning curve is middling to steep, depending on your linux chops.

        • jwz says:

          The great thing about hardware like this is that they think "fixed focus lens" conveys any information. Focal length, aperture, what's that? Brinno pulled the same shit. Cameras sold by people who don't camera.

          • ssl-3 says:

            I understand this conundrum.

            How about an RPi camera module that uses CS mount lenses? Then you can do whatever you want, with all the usual caveats that glass is expensive.


          • mcoate says:

            You should just be able to use any USB camera you want, doesn't need to be a module.

          • Zygo says:

            I think you'll find that the quality of the lenses makes most of those scalar parameters you are looking for meaningless. Like, "it's 28 mm focal length in the center, but 27.5 at the edges and 28.2 in the corners" and by the way it's manual focus with a special tool that doesn't always ship with the camera.

            That said, they're cheap and a lot of different configurations are available. Assuming you don't go cheap on the power supply or the SD card, you can put them in your ceiling and leave them there for 3 or 4 Debian releases without touching them.

      • Ham Monger says:

        Supposedly ( the V2 camera is 3280 x 2464 for stills. Or it can use a USB camera, if you have one you especially like, but that might be veering into the learning experience you described.

      • David E. Konerding says:

        I run a Pi with a Logitech c920. It has a piezo zoom, excellent image quality, with total command line control and a rich ecosystem of video streaming tools. I use it to monitor my 3d printer, I've used it to make a low-power microscope, and act as the guide camera for my solar telescope.

  5. Wout Mertens says:

    How a about a webpage that uses the iphone camera to make stills at your preferred schedule and then uploads them where you want them? Pretty simple to set up I would think.

    You'd leave the page open and the phone unlocked. The challenge would be to keep ios from closing the browser

  6. MattyJ says:

    In the grand tradition of not answering the question and suggesting time travel as a viable solution, you should have bought something like the Garmin VIRB Ultra 30 camera instead of a GoPro.

    It has an 'extended' timelapse setting with a max interval of (digs up camera, charges it, upgrades firmware, learns how to use it again) 999 minutes.

    You can spawn an ad-hoc wifi network from the camera to connect it to the iPhone app where you can download photos directly to your camera roll, completely control/adjust the camera, etc., without ever having to touch it (very nice for when you get it positioned juuuuust right on your helmet.) You can even have it stitch the pictures together into a video in-camera.

    The only thing I don't know about for this use is if/how it handles being plugged in all the time. I've only used it in the context of motorcycle trips with day-long usages over the course of a week or two. I do know that it turns almost everything off (lights, screen) when you're doing time-lapse, then wakes up when it needs to.

    Alright, let me have it.

  7. Mbourgon says:

    For part of what you're trying to do, there's a thing out there called "Eye Fi" - a SD card that has WiFi. It's supposed to also be able to connect to an app on a Mac or upload to Clown services, but this article talks about using something called pixelpipe that appears to be dead. (

    • jwz says:

      No there is not, Eye Fi went out of business in 2016. Also their product was an SD card and these days everything runs on microSD.

      • Tinus says:

        AliExpress has MicroSD to SD adapters that include a similar Wi-Fi sharing thing. Of course that only works if your device takes SD cards though. The search keyword is EZShare.

        It works through a crappy app but there is no real security so you can probably make it do what you want pretty easily.

  8. Christoph says:

    With a Raspberry, you're not limited to the add-on-cameras - you could use gphoto to control some compact point-and-shoot via USB:
    I have used that (with some way-oversized-for-your-application hardware) in the past and it wasn't much of a hassle.

    • jwz says:

      I mean, you might be right, but you said the word "gphoto" and it felt like I had just fellated a scorpion.

      • Leonardo Herrera says:

        Latest commit was on July 16, it may not be as bad as it was 13 years ago.

        • jwz says:

          Every time I update anything anywhere, I get a new version of "ncurses". Let me repeat that for those in the back, it is 2019 and someone keeps changing things in "ncurses". Checkin dates are not an indication of improvement. Or sanity. or even taste.

          • Nick Lamb says:

            Aren't we overdue another rant about how you shipped a new version of xscreensaver but somebody is still including old versions in Debian?

  9. I can't help with the camera, but I've been using Flashair SD cards for years now, and they're really handy for getting images from cameras into your computer. They connect to your AP and have a web server, so you can trivially script pulling down the images. The only problem is the range: If the AP is more than a few meters from the camera, things don't work so well.

  10. phuzz says:

    I've done something similar using a standard IP security camera. They range from pretty cheap up to the same price as a GoPro. Some have wifi, but I was using one that used PoE. Look for something that supports the ONVIF specification.
    The feed from most cameras can be accessed as a web page, so you can just wget an image whenever you want. I had a second script that would take a days worth of images and shove them through ffmpeg to make a video.

  11. Waider says:

    I've got a 2014-era HERO+ and it's reassuring to learn that the hardware is still flaky in 2019. There are a few camera hacker communities who have been doing various amounts of dismantling of GoPros and the upshot is that the App/Camera protocol is just some JSON over HTTP for the most part, and there's even a plain old web interface that you can run a web crawler on to download your images/movies[1]. There is the default wackiness where the GoPro would like to be your AP (the BlueTooth hookup is just to give you a means of turning it on and off without the powerdrain of the wireless hardware) and to be honest if you've got something lying around with a spare WiFi interface you can just use that as your GoPro gateway and suck the files down via HTTP - the camera will show up at and offer you DHCP service.

    The HTTP interface also allows you to take snapshots so you can have your gateway actually do the work of taking photos at intervals. Which, er, sort of puts you in the territory of "I bought an expensive untethered webcam".

    If you're interested in digging into the GoPro further (ha! ha! recompile-your-kernel territory!) you can drop a magic file on the SDCard named autoexec.ash and feed various commands directly to the RTOS part of the device. Some people have figured out how to increase the time lapse duration with this - searching for autoexec.ash should turn up results for you. Since my camera ain't your camera I'm reasonably sure the specific commands applicable to mine aren't applicable to yours, so I can't offer you exact solutions. If you're going down this route, however, it is possible to get a shell on the Linux portion of the GoPro, by which means you can configure the WiFi to be a client instead of an AP. Even without going this far, though, you can put commands in autoexec.ash that get passed to the Linux portion, so you can configure things that way.

    I have noted the occasional "camera-says-no" event, which has required various levels of manual intervention, but I can't say I've had it power itself off - might be something you can tweak via the autoexec.ash commands that isn't otherwise available via the provided API.

    Various API details here. This guy's GitHub in general is full of random little bits of GoPro hackery, some of which is useful as input to searching for other bits of GoPro hackery. Searching for "autoexec.ash" will also turn up some interesting bits and pieces.

    [1] caveat: on my hardware, the camera is capable of creating files > 2GB in size which the 32-bit web server is unable to serve completely.

  12. John says:

    CHDK and a Canon point and shoot?

    • Joel says:

      I have actually used CHDK in anger to build a photobooth. I do not recommend it.

      One of the couple of technical issues I ran in to is that the cameras were unreliable enough after being on for more than an hour that I ended up hooking them to a programmable power supply so I could reboot them before snapping pictures to avoid lockups.

      Not saying you couldn't make it work, just saying that this path is dark and full of hacks.

  13. Stefan says:

    I've had good experiences with network cameras, for example the Grandstream GVX3610.

    A simple script on a server pulls an image every x minutes from the well-known ONVIF URL. The camera's firmware and web interface are borderline shit, but I did not need to touch it after setting it up, and the three cameras I've installed have been running without issues for 4+ years.

  14. Zach Fine says:

    If you happen to have an older Canon point-and-shoot that can run CHDK firmware, or a Canon DSLR (an old Rebel T2i with kit lens can be had for less than a GoPro) that can run Magic Lantern firmware, then you're in luck.

    Both of those open-source replacement firmwares feature great time-lapse features with configurable intervals between shots (maximum of 8 hours between images with Magic Lantern). Dummy batteries to power such cameras indefinitely are cheap. Pop a Toshiba FlashAir SD card in there and you should be able to set up a script on a nearby computer to pull the latest images directly from the card over wifi.

    This reminds me that I really should be setting up my ancient Rebel (assuming it can run Magic Lantern) to shoot continuous time lapses of my neighborhood indefinitely, would be fun to see the changes over the years.

    • margaret says:

      Was thinking the same thing about my old EOS. I had done this from the crapware that Canon provides but was curious if there was a cli/api available and found that it is in fact possible to "control" the camera remotely. New firmware installed and a reading the Canon press release about a new SDK/API tells me in theory it's possible.

      At work we use these cameras with lenses from Edmund Optics. These are part of an automated workflow - from image capture to processing. Pricing may be appropriate for a company that does computational photography and less so for a bar.

  15. Tim says:

    Also in the grand tradition of ignoring all of the constraints and provisos above, a wildlife camera would do this. Some of them even quote f-stops! (there are many at that price with endless forgettable brand-names). However, you will almost certainly have to transfer the resulting photos by removing the SD card, like an animal.

  16. dzm says:

    Last time I had a need for a project like this (~2007) I used a generic "network camera" (some piece of crap video camera with an integrated web interface that would grab an image from the CCD while also connected to the local WiFi network). I then used a nSLUG (a really crappy Linksys NAS device) that could run some ARM-based Linux (effectively a 2007 hacky version of a RaspberryPI). On the nSLUG I ran a cron job that every 10 minutes grabbed a JPEG from that web interface, used your perl script to slap a time stamp on it, and dropped it into a directory for later processing. When I finally had all my images I used ffmpeg to crush them into a movie.

    Your mileage may vary, but I think this kind of solution probably is the closest thing to reasonable for your project. The haradest part will be finding a camera that has a HTTP interface that allows you to grab an image on demand AND offers the photo options you mention above (aperture, shutter speed, etc). Every time I've tried using an integrated solution from a vendor to do this kind of stuff I've ended up just incredibly angry, with less hours left in my life, and I end up data-scraping from the hardware while avoiding their stupid clown services.

  17. K J says:

    Yet another vote here for an IP security camera + a script to pull from the web interface. The last two times I needed to make a multi-year time lapse this is the technique I used and it was not a headache to get working. The cameras will generally top out at 4k, and you can get lenses in pretty much whatever reasonable F-stop, zoom, and quality combo you want to pay for.

  18. buzzert says:

    This is gonna be an awesome new xscreensaver!

  19. mojo says:

    I like LapseIt.

  20. guest says:

    Last time when I was doing something similar, it was:
    1. The cheapest "compact" camera I could find, used, preferably compatible with libgphoto2. If not on the list it may work too, but may require e.g. setting autofocus every photo. My one was something like 16MPix, but useful resolutions end with 4096px in width, as with more there is a lossy compression on the chip and there are factory problems with sensor visible.
    2. 3V DC power supply unit, generic, regulated, power requirements for the camera.
    3. Two sticks of wood with metal clips on them to pretend that there are batteries in the camera. Because cheap cameras have no aux power connector.
    4. Pi zero with GPhoto2 and a cronjob to take a photo, download it, upload it to my NAS and delete from camera.
    Works surprisingly well with running hours a day and shooting photos regularly.
    You can also use a cheap USB webcam, but resolution is crappy and choose something compatible.

  21. jwz says:

    Oh hey, I loaned that GoPro to someone else and they figured out why it is useless junk!

    • It only runs off the battery, even when it is plugged into the wall.
    • It will not charge the battery while it is "active".

    So you give it a full charge, press record, and it runs for 10 hours or something, then powers off, which means that now it starts charging its battery. You notice at hour 11 than it has turned off, so you press record again -- but now you don't have a full charge, because it's only been charging for an hour, so it turns off again 2 hours later.

    What an excellent design. Truly top notch.