Hi @NetApex !
Appreciate you giving the camera a try! I have a very similar camera that does work. It looks like the one you have just has a wide angle lens, so hopefully the rest of the hardware works the same. Lets check the obvious stuff first.
- Are you using the 22 pin cable as shown in the camera setup docs? I noticed the camera you linked only ships with the 15 pin 1.0 mm pitch cable. This connector only has 2 CSI lanes and wont work with tachyon. You need the 22 pin 0.5 mm pitch cable with all 4 lanes. I have a set of these just to make sure I have a cable that will work with any SBC.
- Are you using the
CSI1
slot? You can use the DSI/CSI2
slot, but will need to configure the port for CSI operation first
- Before launching the gst pipeline, you will need to do the following:
export XDG_RUNTIME_DIR=/run/user/root
I noticed this wasnt explicit in the docs, I will make a note to add it!
Additionally, if you do not want to run the pipeline under root
/ sudo
, you can add your user to the video
group
$ sudo usermod -a -G video particle
(ill add this to the docs as well).
As the particle
user in the video
group, I can run the following pipeline (it will run continuously, so control-c to interrupt it and close the pipeline) and record still images:
particle@tachyon-fd6e0b17:~$ gst-launch-1.0 -e qtiqmmfsrc camera=0 name=qmmf \
> ! video/x-raw,format=NV12,width=1920,height=1080,framerate=30/1 \
> ! jpegenc \
> ! multifilesink location=/home/particle/snapshot.jpg
gbm_create_device(192): Info: backend name is: msm_drm
Setting pipeline to PAUSED ...
Pipeline is live and does not need PREROLL ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
^Chandling interrupt.
Interrupt: Stopping pipeline ...
EOS on shutdown enabled -- Forcing EOS on the pipeline
Waiting for EOS...
Got EOS from element "pipeline0".
EOS received - stopping pipeline...
Execution ended after 0:00:07.310100969
Setting pipeline to NULL ...
Freeing pipeline ...
I can run your pipeline, but I think the missing video encoding parameters just result in a blank image
gst-launch-1.0 qtiqmmfsrc camera=0 num-buffers=150 ! videoconvert ! jpegenc ! filesink location=test_csi1.jpg
gbm_create_device(192): Info: backend name is: msm_drm
Setting pipeline to PAUSED ...
Pipeline is live and does not need PREROLL ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
^Chandling interrupt.
Interrupt: Stopping pipeline ...
Execution ended after 0:00:52.012122961
Setting pipeline to NULL ...
Freeing pipeline ...
Can you try with explicit video format parameters like in the example pipeline? Once you can confirm the hardware is working, I would experiment with different pipeline parameters.
The last comment ill make is about the specific error
ERROR: from element /GstPipeline:pipeline0/GstQmmfSrc:qmmfsrc0: Camera service has died !
You can check and restart the camera service via
particle@tachyon-fd6e0b17:~$ systemctl status qmmf-server.service
● qmmf-server.service - QMMF Server Service
Loaded: loaded (/usr/bin/qmmf-server; enabled; vendor preset: enabled)
Active: active (running) since Tue 2024-06-18 04:29:47 CST; 1 years 0 months ago
Main PID: 3301 (C3-0-Handler)
Tasks: 19 (limit: 5763)
Memory: 333.6M
CGroup: /system.slice/qmmf-server.service
└─3301 /usr/bin/qmmf-server
Warning: some journal files were not opened due to insufficient permissions.
It should automatically restart if it crashes, but just in case you can manually restart it via
$ sudo systemctl restart qmmf-server.service
Ill add these notes to the caveats section as well.
so tl;dr
- Check the cable / CSI connector
- Run the
EXPORT
command above before using the pipeline + run as root or in video
group
- Try the example pipeline to see if the hardware works at all, then experiment with extra parameters
- Manually check/restart the camera service if needed
Let me know how things go!