Z1 USB API Problem with continuous shooting (firmwares 2.30.1 and 3.0)

Hi,

I encountered a problem with the latest firmware(2.30.1) while performing continuous shooting (using USB API via gphoto2, dual fish-eye mode). The Z1 camera becomes unable to shoot after a few minutes (the duration varies randomly between 0 and 20 minutes). This is a critical issue affecting our product.

There were no issues with the previous firmware version(2.11.1).

Could you please provide instructions on how to rollback(downgrade) the firmware of the Z1 Theta camera?

Alternatively, I would like to inquire if there are any plans for a new firmware release.

Thank you.

There is no way to roll back the firmware.

We will submit this information. On the GitHub of the API specs, it seems like the v3 of the Z1 firmware is being worked on.

can you confirm that you are using this:

theta-api-specs/theta-usb-api/property/still_capture_mode.md at main · ricohapi/theta-api-specs · GitHub

What do you have the interval set to?

Can you replicate this problem with the WebAPI?

Thank you for the prompt response.

But I think there should be a way to rollback the firmware.

Oh! I see, the explanation was insufficient.

we are looping the following sequences w/ still capture mode (single-shot shooting) until the user stops:

  1. trigger
  2. wait for the image file created
  3. get(download) the file

5013 property:

~ # gphoto2 --get-config /main/other/5013
Label: Still Capture Mode
Readonly: 0
Type: MENU
Current: 1
Choice: 0 1
Choice: 1 3
Choice: 2 32770
Choice: 3 32771
Choice: 4 32772
Choice: 5 32773
Choice: 6 32774
Choice: 7 32775
Choice: 8 32776
END
~ #

thanks, in advance.

What API are you using to check the status of the camera to see that it is ready for the next take picture command?

In order to replicate the problem, can you share the list of USB APIs you are using so that we can verify the behavior of the APIs?

Are you using the following API in step 2?

theta-api-specs/theta-usb-api/event/capture_complete.md at main · ricohapi/theta-api-specs · GitHub

  1. trigger
  2. wait for the image file created (question: how are you checking this?)
  3. get(download) the file

For step 1, you’re using this, right:

theta-api-specs/theta-usb-api/operation/initiate_capture.md at main · ricohapi/theta-api-specs · GitHub

Oh, we use the gphoto2 library in a ROS node.
I’ll find out a way if I can provide the ROS node deb package (which means binary) or the source code.

Can you try firmware 3.0.1? Notification of firmware update for “RICOH THETA Z1“ camera. - トピックス(米国)

If the problem still occurs, can you list the sequence of steps with the USB API.

  1. trigger
  2. wait for the image file created (question: how are you checking this?)
  3. get(download) the file

In particular, are you using a status check with step 2? Or, are you using a specified time to wait and then take the next image? What is the time between shots?

Can you try firmware 3.0.1? Notification of firmware update for “RICOH THETA Z1“ camera. - トピックス(米国)

Unfortunately, we have the same problem with the latest firmware 3.0.1.

In particular, are you using a status check with step 2? Or, are you using a specified time to wait and then take the next image? What is the time between shots?

We are waiting for the GP_EVENT_FILE_ADDED event of the gphoto2 library. We take shots continuously, meaning without any time span.

thanks in advance.

for the clarity,

# gphoto2 --get-config /main/status/deviceversion
Label: Device Version
Readonly: 1
Type: TEXT
Current: 3.01.1
END

Is it possible to map the USB API commands (MTP level command sequence) you are using with libgphoto2 to the USB API commands?

We need to try and replicate the problem.

For example, do you think the GP_EVENT_FILE_ADDED corresponds to this?

theta-api-specs/theta-usb-api/event/object_added.md at main · ricohapi/theta-api-specs · GitHub

We’d like to use a bash script and either ptpcam or gphoto2 (command line program) to replicate the problem.

Can you put use a command line tool in a bash script and replicate the problem using MTP level command sequence?

I’ll make a sample for reproducing the error.

Here’s a sample project for reproducing the issue.
The “error-*.log” files are my error cases.

Thanks in advance.

ps. Sorry for the late response. (I was on vacation for a few days).
shoot-forever.zip (15.4 KB)

summary of Oppkey tests of the libgphoto2 test code from @dhp

model firmware tested result
Z1 3.01.1 does not work
X 2.00.0 works. console shows error, but pictures are taken
V 3.82 works as expected
SC2B 6.33 works. no errors

I’ll submit this information. I needed to install some libraries for the build.

install

sudo apt install libgphoto2-dev
sudo apt install libboost-all-dev

mkdir build
cd build
cmake ..
make
[ 50%] Building CXX object CMakeFiles/shoot-forever.dir/shoot-forever.cpp.o
[100%] Linking CXX executable shoot-forever
[100%] Built target shoot-forever
./shoot-forever 
starting...

results with Z1

I tried on two different x86 Linux machines and the program seems to stop here:

The blue light on the body of the Z1 flashes

Using ptpcam, you can see the firmware on the Z1. Also showing that USB API basic command works on the same computer, same camera.

theta --info

THETA Device Info
==================
Model: RICOH THETA Z1
  manufacturer: Ricoh Company, Ltd.
  serial number: '10010104'
  device version: 3.01.1
  extension ID: 0x00000006
  image formats supported: 0x00000005
  extension version: 0x006e

results with THETA X

theta --info

THETA Device Info
==================
Model: RICOH THETA X
  manufacturer: Ricoh Company, Ltd.
  serial number: '14113409'
  device version: 2.00.0
  extension ID: 0x00000006
  image formats supported: 0x00000004
  extension version: 0x006e

works as expected, but error messages appear on the console.

[2023-07-17 19:16:55 PDT] gp_camera_trigger_capture() FAILED!!
[2023-07-17 19:16:55 PDT] gp_camera_trigger_capture() FAILED!!

when running the sample on THETA X, the images look fine.

results with THETA V

works as expected

./shoot-forever 
starting...
[2023-07-17 17:33:24 PDT] downloading: "/store_00020001/DCIM/100RICOH/R0010770.JPG" --> "/tmp/R0010770.JPG"
[2023-07-17 17:33:24 PDT] got an image:"/store_00020001/DCIM/100RICOH/R0010770.JPG"
[2023-07-17 17:33:26 PDT] downloading: "/store_00020001/DCIM/100RICOH/R0010771.JPG" --> "/tmp/R0010771.JPG"
[2023-07-17 17:33:26 PDT] got an image:"/store_00020001/DCIM/100RICOH/R0010771.JPG"
[2023-07-17 17:33:28 PDT] downloading: "/store_00020001/DCIM/100RICOH/R0010772.JPG" --> "/tmp/R0010772.JPG"
[2023-07-17 17:33:28 PDT] got an image:"/store_00020001/DCIM/100RICOH/R0010772.JPG"
[2023-07-17 17:33:30 PDT] downloading: "/store_00020001/DCIM/100RICOH/R0010773.JPG" --> "/tmp/R0010773.JPG"
[2023-07-17 17:33:30 PDT] got an image:"/store_00020001/DCIM/100RICOH/R0010773.JPG"
[2023-07-17 17:33:32 PDT] downloading: "/store_00020001/DCIM/100RICOH/R0010774.JPG" --> "/tmp/R0010774.JPG"
[2023-07-17 17:33:33 PDT] got an image:"/store_00020001/DCIM/100RICOH/R0010774.JPG"
[2023-07-17 17:33:35 PDT] downloading: "/store_00020001/DCIM/100RICOH/R0010775.JPG" --> "/tmp/R0010775.JPG"
[2023-07-17 17:33:35 PDT] got an image:"/store_00020001/DCIM/100RICOH/R0010775.JPG"
[2023-07-17 17:33:37 PDT] downloading: "/store_00020001/DCIM/100RICOH/R0010776.JPG" --> "/tmp/R0010776.JPG"
[2023-07-17 17:33:37 PDT] got an image:"/store_00020001/DCIM/100RICOH/R0010776.JPG"
^C

results with SC2B

theta --info

THETA Device Info
==================
Model: RICOH THETA SC2
  manufacturer: Ricoh Company, Ltd.
  serial number: '40100146'
  device version: 06.33
  extension ID: 0x00000006
  image formats supported: 0x00000004
  extension version: 0x006e

results

working as expected

./shoot-forever 
starting...
[2023-07-17 17:41:40 PDT] downloading: "" --> "/tmp/"
[2023-07-17 17:41:40 PDT] gp_camera_file_get() FAILED!!
[2023-07-17 17:41:40 PDT] failed to download: ""
[2023-07-17 17:41:40 PDT] got an image:""
[2023-07-17 17:41:51 PDT] downloading: "/store_00010001/DCIM/100RICOH/R0010075.JPG" --> "/tmp/R0010075.JPG"
[2023-07-17 17:41:52 PDT] got an image:"/store_00010001/DCIM/100RICOH/R0010075.JPG"
[2023-07-17 17:42:03 PDT] downloading: "/store_00010001/DCIM/100RICOH/R0010076.JPG" --> "/tmp/R0010076.JPG"
[2023-07-17 17:42:03 PDT] got an image:"/store_00010001/DCIM/100RICOH/R0010076.JPG"
[2023-07-17 17:42:14 PDT] downloading: "/store_00010001/DCIM/100RICOH/R0010077.JPG" --> "/tmp/R0010077.JPG"
[2023-07-17 17:42:15 PDT] got an image:"/store_00010001/DCIM/100RICOH/R0010077.JPG"
[2023-07-17 17:42:26 PDT] downloading: "/store_00010001/DCIM/100RICOH/R0010078.JPG" --> "/tmp/R0010078.JPG"
[2023-07-17 17:42:26 PDT] got an image:"/store_00010001/DCIM/100RICOH/R0010078.JPG"
[2023-07-17 17:42:37 PDT] downloading: "/store_00010001/DCIM/100RICOH/R0010079.JPG" --> "/tmp/R0010079.JPG"
[2023-07-17 17:42:37 PDT] got an image:"/store_00010001/DCIM/100RICOH/R0010079.JPG"