Introducing Live View for Sony Alpha with the VIEW Intervalometer
Sony support in the world of intervalometers has always been a little hard to find. To help solve this, I've been putting a lot of research lately into improved support for Sony with the VIEW Intervalometer. This started with solving some key reliability issues earlier this year, which are now part of the libgphoto2 camera support library.
Since then, time-lapse with Sony has been quite reliable. There were just three things missing to bring it to the level of Canon and Nikon:
Live view for remote setup
Save to the camera instead of having to download every image
Well, I'm excited to announce I've now got live view working with newer Sony Alpha cameras, completing item #1 above! Item #2 is an annoying limitation of USB control for Sony, where they require all images be downloaded instead of saved to the cameras card. This works fine with the VIEW, since it has a full-size SD card slot where the images are stored, but requires longer intervals to keep up with transferring the large files. This can be overcome via Wifi control, which is planned to be added soon. For #3, it looks unless Sony improves the firmware, there's no hope at this time.
Anyway, back to the good news -- live view is working! This is nice because you can stream live view over the app and more conveniently set up motion keyframes, or just set up the shot from somewhere else altogether via app.view.tl over the internet.
I had previously believed live view wasn't possible over USB with Sony since there didn't seem to be any hidden commands in the protocol for this and Sony's software doesn't support it. Sony's USB protocol is quite limited and in my opinion, terribly designed. For example, to change ISO, you can only tell it to go up or down, then read what it is. To find the range of options, you need to move it up until it doesn't change anymore, then run it all the way down, one step at a time, until it again stops changing. Compare this with Nikon, where you can request the list of valid ISOs, choose one, then set it to be anything. No stepping blindly through a list. Canon is slightly more cumbersome -- the lists of everything are sent all at once when it first connects, then again if they change. They can't just be requested at anytime, but it still works just fine.
Then, someone mentioned that live view does indeed work (https://github.com/gphoto/libgphoto2/issues/123), so I researched it further, downloading a program claiming to support it and monitored the USB line. It worked!
And it's actually a very simple and nice design; there are no special commands for it -- instead, an image is requested from a specific address, one space higher than captured images. The live view image is always current at that address and it can be requested at anytime using the PTP protocol standard commands (not vendor-specific commands like for live view with Nikon and Canon).
Captured images (RAW or JPEG) are retrieved from the 0xffffc001 address, and the live view JPEG image is found at 0xffffc002. The only challenge here was that the object_info command for the live view image didn't return anything useful (like size), so I had to do a little work to get the JPEG out of the data downloaded (reused some code from the libgphoto2 live view section for Nikon), and didn't even use object info -- just the standard get_object, and then parsed the data. Here's the pull request adding this to libgphoto2: https://github.com/gphoto/libgphoto2/pull/128
Now, as of firmware version v1.5.0, live view is supported on most newer Sony Alpha cameras, including the A6300, A6500, A7II, A7RII and A7SII.
Thanks for your support of the VIEW Intervalometer -- I hope to continue to push the limits and further what we can do in time-lapse, and your support and feedback make this possible.