APi version & firmware differences for SC and SC2

Hello.

I need to understand the integration difference we need to handle when discussing API versions vs Cameras Firmware? We’re building the integration to support SC and SC2.

For API versions, it seems 2.1 supports both SC and SC2, right? If so, how does the firmware version come into play here for the 2 camera models?

Thank you.

v 2.1 support both SC and SC2. However, for the SC, I believe you need to check the API version with http://192.168..1.1/osc/info or camera.getOptions and get the clientVersion.

https://api.ricoh/docs/theta-web-api-v2.1/options/client_version/

For the SC, the default is 1. Set it to 2 and then it will use the same API level as the SC2.

https://api.ricoh/docs/theta-web-api-v2.1/protocols/info/https://api.ricoh/docs/theta-web-api-v2.1/protocols/info/

https://api.ricoh/docs/theta-web-api-v2.1/getting_started/

I believe the SC starts off using apiLevel 1, but you can set it to 2. I believe all firmware versions of the SC work the same with regards to the apiLevel.

POST /osc/commands/execute
{
    "name": "camera.startSession",
    "parameters": {}
}

You will get this type of response

{
    "name": "camera.startSession",
    "state": "done",
    "results": {
        "sessionId": "SID_0001",
        "timeout": 180
    }
}

You need to then specify the API version (on the SC).

POST /osc/commands/execute
{
    "name": "camera.setOptions",
    "parameters": {
        "sessionId": "SID_0001",
        "options": {
            "clientVersion": 2
        }
    }
}

I do not have an SC for testing. However, you can easily check the default API version with info.

This article shows the method to get the firmware version. However, the same info command shows the apiLevel.

https://theta360developers.github.io/webapi/version/2021/01/28/upgrading-firmware.html

For example, using curl as a test, run curl http://192.168.1.1/osc/info on the command line and like for the key apiLevel. In the example, the apiLevel is 2. If the apiLevel is 1 on the SC, you should change it to 2 using the explanation above. You need to change the API version at the start of every session.

This is a small amount of lines in the mobile app. The same app can work with both the SC and the SC2, just check for the apiLevel and then if it is 1, then set it to 2. I believe this will work with any SC firmware. The SC came out after the S.

$ curl http://192.168.1.1/osc/info
{"manufacturer":"RICOH","model":"RICOH THETA SC2","serialNumber":"20001005","firmwareVersion":"01.51","supportUrl":"https://theta360.com/en/support/","gps":false,"gyro":true,"endpoints":{"httpPort":80,"httpUpdatesPort":80},"apiLevel":[2],"api":["/osc/info","/osc/state","/osc/checkForUpdates","/osc/commands/execute","/osc/commands/status"],"uptime":1395,"_wlanMacAddress":"58:38:79:2b:ad:c5","_bluetoothMacAddress":"6c:21:a2:47:d9:05"}

If you continue to have problems, please post again. I think @jcasman may have an SC. We may be able to do more precise testing with the actual unit. Sadly, I sent my SC to a co-working for testing.

Thank you for your answer. We moved on with the integration and as you said, it seems the SC defaults to 1. Our engineer seems to have figured out how to handle the difference in that manner.
Thanks

2 Likes