Play with Ricoh THETA w/o Smartphones

TL;DR: Using gphoto2 with PTP/IP seems to give us a full control of Ricoh THETA without proprietary softwares nor hardwares. Ricoh THETA (and also gphoto2) are awesome.

Detailed explanation

We can connect a THETA with a PC through a USB or a Wireless LAN. Both of them use PTP, but seem to have some difference: for instance, we cannot set an exposure compensation value through a USB. Connecting through a Wireless LAN gives more control.

Connect a THETA through a Wireless LAN

THETA behaves as a Wireless LAN access point. Please connect it. That's all. Now you can do anything by using gphoto2 with PTP/IP mode:

$ # Create a command alias.
$ theta() { gphoto2 --port=ptpip:192.168.1.1 "--camera=PTP/IP Camera" "$@" }

$ # Set date/time in localtime.
$ # Because My THETA is a Japanese version, add JST+09 == +32400 sec.
$ theta --set-config datetime=$(($(date +%s) + 32400))

$ # Set an exposure compensation to -0.3EV.
$ theta --set-config exposurecompensation=7

$ # Take a picture.
$ theta --trigger-capture

$ # Retrieve all files (I recommended to do this with USB connection
$ # because of slowness).
$ theta --get-all-files

$ ...

The pictures can be seen by the viewers that support equirectangular projected images.

THETA has a compass and an accelerometer. The 3-DoF orientation data are stored in the EXIF, whose format has been reverse-engineered by @xanxys_.

Configure properties

/main/settings/datetime
/main/status/serialnumber
/main/status/manufacturer
/main/status/cameramodel
/main/status/deviceversion
/main/status/vendorextension
/main/status/batterylevel
/main/capturesettings/exposurecompensation
     0 -> +2.0EV
     1 -> +1.7EV
     2 -> +1.3EV
     3 -> +1.0EV
     4 -> +0.7EV
     5 -> +0.3EV
     6 ->  0.0EV
     7 -> -0.3EV
     8 -> -0.7EV
     9 -> -1.0EV
    10 -> -1.3EV
    11 -> -1.7EV
    12 -> -2.0EV
/main/other/5001 same as /main/status/batterylevel
/main/other/5010 same as /main/capturesettings/exposurecompensation
/main/other/5011 same as /main/settings/datetime
/main/other/502c volume
/main/other/d006 ?? type: text
/main/other/d801 ?? type: text
/main/other/d802 ?? (seems not to affect images)
/main/other/d803 time to sleep, in seconds
/main/other/d805 Wi-Fi SSID
/main/other/d806 Wi-Fi password
/main/other/d807 Wi-Fi channel

References

cd ../

Yasuhiro Fujii <y-fujii at mimosa-pudica.net>