sonysony-camera-api

Why does the RX100M5 return error 12 (No such method) when trying to execute setContShootingMode?


EDIT: I accepted one of the answer's below, but there's a catch, and I'll state the details here:

You have to update the Smart Remote Embedded app on the Sony camera in order to access the missing functions. But if you try to do this using the on-board OS on the Sony camera, it will fail (at least it did for me). Instead, you must install the PlayMemories Camera Apps Downloader extension for Chrome: https://chrome.google.com/webstore/detail/playmemories-camera-apps/ohlghnkgcadghcdodlcjfhogekonhdei?utm_source=chrome-app-launcher-info-dialog

And with this extension installed, you must go to this website and sign in, in order to install the update from the browser via a USB connection to the camera: https://www.playmemoriescameraapps.com/portal/


The documentation for the Sony Camera Remote API claims that the RX100M5 supports many API functions, including setContShootingMode. However, this command fails when I attempt to execute it, and when I poll the camera for its available API functions, I receive a very small list of available functions.

These are the commands that I send to the camera:

res = requests.post(addr, json={"method":"startRecMode", "params":[], "id":1, "version":"1.0"})
print(res.text)
success = json.loads(res.text)
success = success['result'][0]
if success != 0:
    print("Failed to start rec mode")
    exit(-1)

time.sleep(1)

res2 = requests.post(addr, json={"method":"startLiveview", "params":[], "id":1, "version":"1.0"})
print(res2.text)
liveRes = json.loads(res2.text)
liveUrl = liveRes['result'][0]

time.sleep(1)

res = requests.post(addr, json={"method":"setShootMode", "params":["still"], "id":1, "version":"1.0"})
print(res.text)

time.sleep(1)

res = requests.post(addr, json={"method":"getAvailableApiList", "params":[], "id":1, "version":"1.0"})
print(res.text)

time.sleep(1)

res = requests.post(addr, json={"method":"setContShootingMode", "params":[{"contShootingMode":"Spd Priority Cont."}], "id":1, "version":"1.0"})
print(res.text)

And this is the console output produced by the code snippet:

 {"id":1,"result":[0]}

 {"id":1,"result":"http://192.168.122.1:8080/liveview/liveviewstream"}

 {"id":1,"result":[0]}

 {"id":1,"result":[["getVersions","getMethodTypes","getApplicationInfo","getAvailableApiList","getEvent","actTakePicture","stopRecMode","startLiveview","stopLiveview","getSupportedSelfTimer","setExposureCompensation","getExposureCompensation","getAvailableExposureCompensation","getSupportedExposureCompensation","setShootMode","getShootMode","getAvailableShootMode","getSupportedShootMode","getSupportedFlashMode"]]}

 {"id":1,"error":[12,"setContShootingMode"]}

As you can see, the setContShootingMode function is not available, and attempting to execute it fails. It should be available based on this table included in the API documentation:

Support API groups for each compatible camera

Why can I not use the majority of the functions present in this table on my RX100M5?


Solution

  • Have you connected to the PlaymemoriesApp store and downloaded an up-to-date version of 'Smart Remote'? The pre-installed remote app is quite limited (from my experience).

    Also, you may find that cameras with a mode-dial will limit what you can do in particular modes. You may use a particular mode to achieve continuous shooting.