I'm planning on setting up a timelapse camera with the official raspberry pi camera v2 using raspistill. The frequency of the captured images is relatively high (10+ fps), but I do NOT need realtime display. I just need to save the images.

I've read a lot of blogs/forums that say the SD cards have limited read/write cycles and often become corrupt. I can not afford to suffer this loss while capturing images, as I will not be on location 24/7 (offline). Therefore I would like to find the safest way to store the images while maintaining the highest framerate possible.

Here are the options I could think of for writing the images, but I'm not sure how the resulting write rates would compare as well as which ones are more likely to fail

  1. Write to local SD, once full, transfer to local high volume USB
  2. Write directly to local high volume USB
  3. Stream to remote data logger with high volume USB via ethernet (Pi3 only)
  4. Stream to remote data logger with high volume USB via wifi

Obviously the Pi3 has more "power" than the Pi0w, but I would like to know how each model would measure up with each option, as it would be nice if the Pi0w could work, given its small form factor.

I've read USB and SD pretty much share the same vulnerabilities, so really it comes down to whose faster in that comparison. The idea of streaming sounds nice, since I shouldn't have to touch the SD card or USB, hence avoid corruption and system failure. I would only need to stream the data to a data logger i.e. a local network. That being said, I suspect that streaming would bound my framerate in comparison to local writes.

So again, I would like to find the safest way to store the images while maintaining the highest framerate possible. Do any of the options I highlighted significantly outweigh the rest? Are there other alternatives?

The SD disk and the USB do have limited writes, but, in many cases, I think that this limitation is oversold. Depending on how long you're going to run this, it might make sense to just write on the SD card and back it up periodically. (Note that reads don't create the same wear - It's the writes that are limited.)

If you want to avoid the SD, your question includes a pretty extensive list of options.

Two additional options:

  • An external hard drive (not a "USB stick") connected by USB would probably be the best of them, in my opinion, if you want long-term storage without going through the SD card. This drive may or may not require its own power source.

  • If you are willing to accept data lost when power is lost, you can also create RAM disk. That will look like a directory on your file system so you can write files there, but it will actually keep the data in RAM so no write to SD at all. This has the advantage that it is fast and does not write to the SD. It has the disadvantage that it uses your RAM and the data will be lost when the machine loses power.

Both options are good, but they are applicable to different circumstances. They can also be used together - For example write quickly to the RAM disk for speed and have a background process copy some of the images out to a permanent storage device in the background.

References:

  • If I connect an external hard drive, I image the write speed is limited by the Pi hardware, not the hard disk. Do you know what these limitations would be with the Pi3 and Pi0? – ThatsRightJack Sep 10 '17 at 6:59
  • No, I haven't tried high speed, high speed IO to external drive on Pi. I did the RAM disk, and it works great, but it's only really useful if you have some other process that's going to down-sample and then write lower frequency somewhere else, or you have no need to archive long-term. @ThatsRightJack – Brick Sep 11 '17 at 1:00

Your Answer

 
discard

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

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