Yes, only in client mode. On direct mode it works like charm.
Restlet client, mobile app, python code.
After it hangs it wont respond to osc/info or /osc/commands/execute
My colleague even made requests from router to check if it will work. So two cameras have same behaviour.
And it doesn’t matter what is making a calls, it will always hang itself
thank you for this detailed response. I will try some tests myself. If I can replicate the failure, I will submit a report to Ricoh. Thanks for the good detail.
Theta is responding to DNS calls while being hung. Which means, we can discover it over network but we can’t call any API because it will timeout. As far as i remember Android NSD uses DNS-SD. Python code used mDNS
I’ve updated camera to latest update (so update was made today). Issue persist. After some random time(and number of requests), camera stops responding to any api calls but it is still visible in network
i’m also checking it via: “avahi-discover” command on my linux.
From my further tests, when camera hangs, i was able to discover via avahi, but while clicking for more details avahi also returns timeout: “Error: org.freedesktop.Avahi.TimeoutError: Timeout reached”. It looks like internal server is shutting down
You have a great point here. I believe the THETA V client mode now works with mDNS as well as DNS-SD.
Testing is difficult right now as there are differences in the network which makes the problems difficult to replicate. I’ll keep trying and will also send this information to a guy I know at Ricoh.
I’ve been thinking about this more. As the THETA V is using Network Service Discovery, I think that DNS-SD is the main supported method.
NSD implements the DNS-based Service Discovery (DNS-SD) mechanism, which allows your app to request services by specifying a type of service and the name of a device instance that provides the desired type of service. DNS-SD is supported both on Android and on other mobile platforms.
While mDNS does work, it is probably not tested as thoroughly. I’m still thinking that we should try and use DNS-SD when possible.
I know a developer that is using this for testing:
Are you writing a Java (plug-in or Android) application? Or, are you just looking for the IP address?
You can probably find the device if you look for the string below.
_osc._tcp.
Once you locate the device, use digest authentication when you send the OSC (WebAPI) commands.
For digest auth, I have not tried the solutions below myself, but other people seem to have it working. If you implement something, please post an example.
Important If you are developing a plug-in, there is a different method to use the WebAPI. The above assumes you are working on an Android mobile application.
Thank you for your reply, haha, I am developing the Android mobile terminal. The client mode of THETA V has been bothering me for a long time, until I saw your post yesterday. That Android Developers page is very helpful to me, thank you very much.
There are two ways to connect your mobile app to the RICOH THETA with Wi-Fi.
Access Point (AP) mode where the THETA camera functions as a hotspot. The mobile phone connects to the THETA as if the camera were a hotspot or Wi-Fi router
Client Mode (CM) where the THETA camera connects to your home or office router. Your mobile phone connects to the same router
Authentication
The RICOH THETA requires Digest Authentication for client mode. When you use client mode, you must use Digest Authentication in addition to the username and password.
On the THETA V, the username is similar to this: THETAYL00105377
The password is the numerical digits. Example: 00105377
HTTP GET example
In the example below, I am using curl on Linux Ubuntu 20.04 from the command line to test a HTTP GET command to a RICOH THETA V. You can also run curl on Mac or Windows.
$ curl --digest --user "THETAYL00105377:00105377" -X GET http://192.168.2.101/osc/info
I’m exploring using the camera in Client mode (model THETA Z1). I am able to run osc/info and osc/status fine (Digest auth is working) but it times out when attempting any kind of osc/commands/execute. If I switch to Direct mode all the commands work perfectly… is Client mode intended only for info, status and perhaps downloading the images?
What’s more is that if I run the command without digest authentication it does immediately return with Unauthorized, but once I add digest authentication it just hangs… and only on commands/execute, on osc/info and osc/status it works.
Edit: Okay, I got it to work. For some reason the info and status end points would accept the way I programmed my digest authentication, however commands/execute wouldn’t. I reworked my authentication code and now it works.
Usually, the state (POST) and info (GET) work without the headers. There may be some difference in how the HTTP header is sent in the two versions of your code.
I am curious as to what people are using client mode for. If you have a moment, can you either post your use case here or send me a DM.
I am interested in use cases as I am thinking of building a client mode desktop demonstration for the THETA X connected to Ethernet. As the THETA X can run indefinitely over Ethernet, I am thinking of building a desktop kiosk demo, either on Windows or Linux desktop or both as a “get ideas started” type of demo for using the THETA X for commercial use.