Theta not found- theta X - linux 22.04

Hello,

We have a theta X (software version 2.71.1 -latest-)
And we have either a laptop (without NVIDIA) on ubuntu 22.04 or a Jetson Orin Nano (Jetpack 6.1) on ubuntu 22.04.
We notice exactly the same output on both.

We followed this guide: Linux Getting Started
as well as this one: USB API and Linux
and finally for the jetson: Setting Up NVIDIA Jetson Nano with RICOH THETA Z1 and X

We do not observe the same scenario at all when plugging the camera. (No pop-up screen)

We first tried without v4l2 installed.

lsusb
Bus 003 Device 012: ID 05ca:0373 Ricoh Co., Ltd RICOH THETA X

We notice that we have 05ca:0373, not 05ca:2715 (but we have 05ca:2717 on the Jetson Orin nano, after a few tweaks we do not remember the process of)

gphoto2 works well, we can take video etc.
However, we can’t start gstviewer :
./gst_viewer
THETA not found

Since the plan is to use theta X with ros2, we need gst.

The installation process:

libuvc-theta/build$ cmake ..

-- The C compiler identification is GNU 11.4.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/bin/cc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- No build type selected, default to Release
-- No target type selected, default to both shared and static library
-- Found PkgConfig: /usr/bin/pkg-config (found version "0.29.2") 
-- Checking for module 'libusb-1.0'
--   Found libusb-1.0, version 1.0.25
-- libusb-1.0 found using pkgconfig
-- Found JPEG: /usr/lib/x86_64-linux-gnu/libjpeg.so (found version "80") 
-- Found JPEG library using standard module
CMake Warning (dev) at /usr/share/cmake-3.22/Modules/FindPackageHandleStandardArgs.cmake:438 (message):
  The package name passed to `find_package_handle_standard_args` (JPEG) does
  not match the name of the calling package (JpegPkg).  This can lead to
  problems in calling code that expects `find_package` result variables
  (e.g., `_FOUND`) to follow a certain pattern.
Call Stack (most recent call first):
  cmake/FindJpegPkg.cmake:58 (find_package_handle_standard_args)
  CMakeLists.txt:45 (find_package)
This warning is for project developers.  Use -Wno-dev to suppress it.

-- Found JPEG: /usr/lib/x86_64-linux-gnu/libjpeg.so  
-- Building libuvc with JPEG support.
-- Looking for pthread.h
-- Looking for pthread.h - found
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Success
-- Found Threads: TRUE  
-- Configuring done
-- Generating done
-- Build files have been written to: /home/idlab332/test_thetaX/libuvc-theta/build


~/test_thetaX/libuvc-theta/build$ make

[  4%] Building C object CMakeFiles/uvc.dir/src/ctrl.c.o
[  9%] Building C object CMakeFiles/uvc.dir/src/ctrl-gen.c.o
[ 13%] Building C object CMakeFiles/uvc.dir/src/device.c.o
[ 18%] Building C object CMakeFiles/uvc.dir/src/diag.c.o
[ 22%] Building C object CMakeFiles/uvc.dir/src/frame.c.o
[ 27%] Building C object CMakeFiles/uvc.dir/src/init.c.o
[ 31%] Building C object CMakeFiles/uvc.dir/src/stream.c.o
[ 36%] Building C object CMakeFiles/uvc.dir/src/misc.c.o
[ 40%] Building C object CMakeFiles/uvc.dir/src/frame-mjpeg.c.o
[ 45%] Linking C shared library libuvc.so
[ 45%] Built target uvc
[ 50%] Building C object CMakeFiles/uvc_static.dir/src/ctrl.c.o
[ 54%] Building C object CMakeFiles/uvc_static.dir/src/ctrl-gen.c.o
[ 59%] Building C object CMakeFiles/uvc_static.dir/src/device.c.o
[ 63%] Building C object CMakeFiles/uvc_static.dir/src/diag.c.o
[ 68%] Building C object CMakeFiles/uvc_static.dir/src/frame.c.o
[ 72%] Building C object CMakeFiles/uvc_static.dir/src/init.c.o
[ 77%] Building C object CMakeFiles/uvc_static.dir/src/stream.c.o
[ 81%] Building C object CMakeFiles/uvc_static.dir/src/misc.c.o
[ 86%] Building C object CMakeFiles/uvc_static.dir/src/frame-mjpeg.c.o
[ 90%] Linking C static library libuvc.a
[ 90%] Built target uvc_static
[ 95%] Building C object CMakeFiles/example.dir/src/example.c.o
/home/idlab332/test_thetaX/libuvc-theta/src/example.c: In function ‘cb’:
/home/idlab332/test_thetaX/libuvc-theta/src/example.c:26:74: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
   26 | ame_format, frame->width, frame->height, frame->data_bytes, (int) ptr);
      |                                                             ^

[100%] Linking C executable example
[100%] Built target example

~/test_thetaX/libuvc-theta/build$ sudo make install

Consolidate compiler generated dependencies of target uvc
[ 45%] Built target uvc
Consolidate compiler generated dependencies of target uvc_static
[ 90%] Built target uvc_static
Consolidate compiler generated dependencies of target example
[100%] Built target example
Install the project...
-- Install configuration: "Release"
-- Installing: /usr/local/lib/libuvc.so.0.0.6
-- Installing: /usr/local/lib/libuvc.so.0
-- Installing: /usr/local/lib/libuvc.so
-- Installing: /usr/local/include/libuvc/libuvc.h
-- Installing: /usr/local/include/libuvc/libuvc_config.h
-- Installing: /usr/local/lib/libuvc.a
-- Up-to-date: /usr/local/include/libuvc/libuvc.h
-- Up-to-date: /usr/local/include/libuvc/libuvc_config.h
-- Installing: /usr/local/lib/cmake/libuvc/libuvcTargets.cmake
-- Installing: /usr/local/lib/cmake/libuvc/libuvcTargets-release.cmake
-- Installing: /usr/local/lib/cmake/libuvc/FindLibUSB.cmake
-- Installing: /usr/local/lib/cmake/libuvc/FindJpegPkg.cmake
-- Installing: /usr/local/lib/cmake/libuvc/libuvcConfigVersion.cmake
-- Installing: /usr/local/lib/pkgconfig/libuvc.pc
-- Installing: /usr/local/lib/cmake/libuvc/libuvcConfig.cmake


~/test_thetaX/libuvc-theta$ find /usr -name "*libuvc*"

/usr/local/include/libuvc
/usr/local/include/libuvc/libuvc.h
/usr/local/include/libuvc/libuvc_config.h
/usr/local/lib/pkgconfig/libuvc.pc
/usr/local/lib/libuvc.so.0.0.6
/usr/local/lib/libuvc.so.0
/usr/local/lib/cmake/libuvc
/usr/local/lib/cmake/libuvc/libuvcTargets.cmake
/usr/local/lib/cmake/libuvc/libuvcTargets-release.cmake
/usr/local/lib/cmake/libuvc/libuvcConfigVersion.cmake
/usr/local/lib/cmake/libuvc/libuvcConfig.cmake
/usr/local/lib/libuvc.so
/usr/local/lib/libuvc.a

~/test_thetaX/libuvc-theta-sample/gst$ make

cc -pthread -I/usr/local/include -I/usr/include/gstreamer-1.0 -I/usr/include/x86_64-linux-gnu -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/libusb-1.0   -c -o gst_viewer.o gst_viewer.c
cc -pthread -I/usr/local/include -I/usr/include/gstreamer-1.0 -I/usr/include/x86_64-linux-gnu -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/libusb-1.0   -c -o thetauvc.o thetauvc.c
cc gst_viewer.o thetauvc.o -o gst_viewer  -L/usr/local/lib -lgstapp-1.0 -lgstbase-1.0 -lgstreamer-1.0 -lgobject-2.0 -lglib-2.0 -luvc -lusb-1.0 -pthread
ln -sf gst_viewer gst_loopback

sudo apt install dsdp → to install theta
theta --info
Cannot open file --info !Problem reading file

Note that the settings have been reset, we tried with the camera in camera/video/live modes

lsb_release -a

No LSB modules are available.
Distributor ID:	Ubuntu
Description:	Ubuntu 22.04.5 LTS
Release:	22.04
Codename:	jammy

installing v4lt2, setting ricoh theta X in live streaming:

v4l2-ctl --list-devices
RICOH THETA X: RICOH THETA X (usb-0000:00:14.0-4): /dev/media1

and ./gst_loopback
THETA not found

What is the issue? I do not see any thread covering this particular problem.

Thanks for your attention,
Best regards

do you have the camera in live streaming mode prior to running ./gst_loopback. You can either use the buttons on the camera or the USB API to change the camera mode.

Hello Craig,

Yes i tried all modes (camera, video, live streaming), as the last one was indicated in one of the mentioned links.
Each was tried at least once both on the computer and the jetson orin nano for both gst_viewer et gst_loopback.
I only used the buttons on the camera and not any USB API though. Could that have any incidence?

Best0

The problem is still ongoing :slight_smile:

  • do you have another version of libuvc installed on your computer?
  • do you have a different Device ID when the camera is in live streaming mode versus camera mode?

Hello Craig,
Excellent questions. I didn’t think about mentioning it.
Yes i had a previous version of libuvc installed on my pc (Jetson i do not recall)
I installed the repos, realised I had several versions, removed everything (sudo apt remove libuvc + manually removed directory mentioning libuvc) before re-doing the whole process from scratch.
now (on both jetson and PC):
find /usr -name "*libuvc*"

/usr/local/include/libuvc
/usr/local/include/libuvc/libuvc.h
/usr/local/include/libuvc/libuvc_config.h
/usr/local/lib/pkgconfig/libuvc.pc
/usr/local/lib/libuvc.so.0.0.6
/usr/local/lib/libuvc.so.0
/usr/local/lib/cmake/libuvc
/usr/local/lib/cmake/libuvc/libuvcTargets.cmake
/usr/local/lib/cmake/libuvc/libuvcTargets-release.cmake
/usr/local/lib/cmake/libuvc/libuvcConfigVersion.cmake
/usr/local/lib/cmake/libuvc/libuvcConfig.cmake
/usr/local/lib/libuvc.so
/usr/local/lib/libuvc.a

On jetson

in camera mode:
Bus 002 Device 003: ID 05ca:0373 Ricoh Co., Ltd RICOH THETA X

in video mode (de-plugged, re-plugged):
Bus 002 Device 004: ID 05ca:0373 Ricoh Co., Ltd RICOH THETA X

in streaming mode (setting auto-switch to streaming when connected, the camera does the switch correctly -re-plugging-):
Bus 002 Device 006: ID 05ca:2717 Ricoh Co., Ltd RICOH THETA X
If I remember the community comments correctly, I should have 2713 or 2717, am I correct?

yet with v4l2-ctl --list-devices:

RICOH THETA X: RICOH THETA X (usb-3610000.usb-1.1):
	/dev/media1
Cannot open device /dev/video0, exiting.

./gst_viewer --> THETA not found
./gst_loopback --> THETA not found

Is there anything of notice here?
Thanks for your assistance!