Closed Eldir1 closed 1 year ago
I'd also like to do this. I'v tried to set exposure time as this:
let mut ctrl_lists = ControlList::new();
let exp_time: SmallVec<[i32; 1]> = smallvec![100000]; // 100 ms
ctrl_lists.set::<ExposureTime>(ExposureTime::try_from(ControlValue::Int32(exp_time)).unwrap());
actcam.start(Some(&ctrl_lists)).unwrap();
However, when running like this i get Errors from IPCPipe after allocating the buffers.
[3:06:31.495482900] [5654] ERROR IPCPipe ipc_pipe_unixsocket.cpp:134 Call timeout!
[3:06:31.495603509] [5654] ERROR IPCPipe ipc_pipe_unixsocket.cpp:66 Failed to call sync
[3:06:31.495656138] [5654] ERROR IPAProxy raspberrypi_ipa_proxy.cpp:253 Failed to call start
[3:06:31.503491688] [5654] ERROR IPCUnixSocket ipc_unixsocket.cpp:191 Failed to send: Connection refused
[3:06:31.503593556] [5654] ERROR IPCPipe ipc_pipe_unixsocket.cpp:66 Failed to call sync
[3:06:31.503647481] [5654] ERROR IPAProxy raspberrypi_ipa_proxy.cpp:438 Failed to call mapBuffers
I get the same errors even when i didn't set anything, just passing the controlList to start() method.
However, when running like this i get Errors from IPCPipe after allocating the buffers.
[3:06:31.495482900] [5654] ERROR IPCPipe ipc_pipe_unixsocket.cpp:134 Call timeout! [3:06:31.495603509] [5654] ERROR IPCPipe ipc_pipe_unixsocket.cpp:66 Failed to call sync [3:06:31.495656138] [5654] ERROR IPAProxy raspberrypi_ipa_proxy.cpp:253 Failed to call start [3:06:31.503491688] [5654] ERROR IPCUnixSocket ipc_unixsocket.cpp:191 Failed to send: Connection refused [3:06:31.503593556] [5654] ERROR IPCPipe ipc_pipe_unixsocket.cpp:66 Failed to call sync [3:06:31.503647481] [5654] ERROR IPAProxy raspberrypi_ipa_proxy.cpp:438 Failed to call mapBuffers
I get the same errors even when i didn't set anything, just passing the controlList to start() method.
This looks like a distinct issue that you have IPA modules isolated which aren't working.
Please check issue #2 and specifically this comment https://github.com/lit-robotics/libcamera-rs/issues/2#issuecomment-1430644226
Are you sure that your camera supports the specified control? Currently it will just silently fail. There's definitely some improvements to be done.
I am using a Raspberry Pi 4 with the new Raspberry Pi Global Shutter Camera ( IMX296 ). I tried with following control settings: ExposureTime, FrameDuration, MeteringMode, DigitalGain, AnalogueGain. None of them worked for me. I get the same error i described befor for all of them. Even when i don't add any setting to the control list, and simply pass the empty list to the start() function i get these errors.
@Sc0rpe sorry I was referring to @Eldir1's issue regarding controls not working. Yours seems to be a different issue as @kbingham described. Does it work with start(None)
? If not, then it is not related to controls, you have issues with libcamera installation.
@chemicstry Yes it works fine with start(None) !
Then I would suspect that in isolated IPA mode the IPA might be crashing. That's hard to debug (or hard for me to describe how to debug, but feel free to dig in if you want). But if you can make sure you are running without Isolated IPA's I think it will either A) work or B) - actually tell you where the fault is
If you can share a sample app/code that crashes/fails it would help for replicating the issue too.
Actually it is the video_capture example i am running. I have just added some lines before the cam.start() call. For example:
let mut ctrl_lists = ControlList::new();
ctrl_lists.set(AnalogueGain(2.0)).unwrap();
cam.start(Some(&ctrl_lists)).unwrap();
I also got the opportunity to check this with the raspberry pi v1.3 camera module (sensor OV5647). Same error! @kbingham I am quite new to Rust and libcamera, so it will be really hard for me to debug. But if there is a way to assist you, i will do so. You said something about isolated IPA's.
Indeed I don't expect this to be specific to the camera, it's how you've installed or set up libcamera (or perhaps how someone else like the distro has).
Are you using libcamera from raspbian? Or did you build it yourself?
I am running raspbian bullseye 32-bit lite. As the documentation on https://crates.io/crates/libcamera stated, i installed libcamera v0.0.4 myself.
Ok - I would suspect that the reason you have IPA failures is because you didn't have all the required dependencies installed when you built and installed libcamera v0.0.4 yourself.
@kbingham Thanks! You were right.
I ran meson --reconfigure build
in my libcamera source directory.
And i saw a message that gnutls
and libcrypto
where missing. Thats why the IPA modules ran in isolated mode.
I installed the missing dependencies and built libcamera again. Now everything works fine.
Thank you very much! :)
@Eldir1 did you solve your issue?
Thank's for this good support!
Hello,
thank's a lot for your great work. Is setting of camera controls currently not supported or did I use it the wrong way?
The original documentation of libcamera explains, that ControlList should be constructed from ControlInfoMap, but this class is currently in the Rust part only poorly supported. So I couldn't use ControlInfoMap to read the content of the map.
:smile: