This is just a brief note to self about getting information about the camera in SailfishOS with v4l-utils.
This post primarily consists of a list of some commands that showed me some, hopefully useful, information and the corresponding output.
Maybe this is useful for someone else as well.
First of all, one has to install v4l-utils.
This can be done as follows:
zypper ar http://repo.merproject.org/obs/home:/nielnielsen/sailfish_latest_armv7hl/home:nielnielsen.repo zypper ref home_nielnielsen pkcon install v4l-utils
At first, outputs that were taken on a OnePlus One smartphone running SailfishOS are shown (Later on, I also put the corresponding outputs from the original Jolla phone.).
The kernel with which I took the data from the OnePlus One was:
[root@localhost ~]# uname -a Linux localhost 3.4.67-cyanogenmod-gb4c3166-dirty #4 SMP PREEMPT Mon Jan 4 19:14:07 UTC 2016 armv7l armv7l armv7l GNU/Linux [root@localhost ~]# ll /dev/video total 0 lrwxrwxrwx 1 root root 12 Feb 27 13:07 venus_dec -> /dev/video32 lrwxrwxrwx 1 root root 12 Feb 27 13:07 venus_enc -> /dev/video33
Below are commands that provided some information about the video subsystem including their output:
[root@localhost nemo]# v4l2-ctl --list-devices VIDIOC_QUERYCAP: failed: Invalid argument VIDIOC_QUERYCAP: failed: Invalid argument VIDIOC_QUERYCAP: failed: Inappropriate ioctl for device VIDIOC_QUERYCAP: failed: Inappropriate ioctl for device VIDIOC_QUERYCAP: failed: Inappropriate ioctl for device VIDIOC_QUERYCAP: failed: Inappropriate ioctl for device VIDIOC_QUERYCAP: failed: Inappropriate ioctl for device VIDIOC_QUERYCAP: failed: Inappropriate ioctl for device VIDIOC_QUERYCAP: failed: Inappropriate ioctl for device VIDIOC_QUERYCAP: failed: Inappropriate ioctl for device VIDIOC_QUERYCAP: failed: Inappropriate ioctl for device VIDIOC_QUERYCAP: failed: Inappropriate ioctl for device VIDIOC_QUERYCAP: failed: Inappropriate ioctl for device VIDIOC_QUERYCAP: failed: Inappropriate ioctl for device VIDIOC_QUERYCAP: failed: Inappropriate ioctl for device VIDIOC_QUERYCAP: failed: Invalid argument VIDIOC_QUERYCAP: failed: Invalid argument VIDIOC_QUERYCAP: failed: Inappropriate ioctl for device VIDIOC_QUERYCAP: failed: Inappropriate ioctl for device msm_vdec_8974 (): /dev/video32 /dev/video33 /dev/video34 /dev/video35 /dev/video38 /dev/v4l-subdev6 /dev/v4l-subdev0 /dev/v4l-subdev1 /dev/v4l-subdev2 /dev/v4l-subdev3 /dev/v4l-subdev4 /dev/v4l-subdev5 /dev/v4l-subdev7 /dev/v4l-subdev8 /dev/v4l-subdev9 /dev/v4l-subdev10 /dev/v4l-subdev11 /dev/v4l-subdev12 /dev/v4l-subdev13 /dev/v4l-subdev14 /dev/v4l-subdev15 /dev/v4l-subdev16 /dev/v4l-subdev17 ���� (c���pKͶ): /dev/video1 /dev/video2 Failed to open /dev/video0: Device or resource busy [root@localhost nemo]# v4l2-ctl -D -d /dev/video32 Driver Info (not using libv4l2): Driver name : msm_vidc_driver Card type : msm_vdec_8974 Bus info : Driver version: 0.0.1 Capabilities : 0x04003000 Video Capture Multiplanar Video Output Multiplanar Streaming [root@localhost nemo]# v4l2-ctl -D -d /dev/video33 Driver Info (not using libv4l2): Driver name : msm_vidc_driver Card type : msm_venc_8974 Bus info : Driver version: 0.0.1 Capabilities : 0x04003000 Video Capture Multiplanar Video Output Multiplanar Streaming [root@localhost nemo]# v4l2-ctl -D -d /dev/video38 Driver Info (not using libv4l2): Driver name : wifi-display Card type : msm Bus info : Driver version: 0.0.1 Capabilities : 0x04000001 Video Capture Streaming [root@localhost nemo]# v4l2-ctl -V -d /dev/video32 VIDIOC_G_FMT: failed: Resource temporarily unavailable [root@localhost nemo]# v4l2-ctl -V -d /dev/video33 VIDIOC_G_FMT: failed: Resource temporarily unavailable [root@localhost nemo]# v4l2-ctl -V -d /dev/video38 Format Video Capture: Width/Height : 1280/720 Pixel Format : 'H264' Field : Any Bytes per Line: 0 Size Image : 1413120 Colorspace : Unknown (00000000) [root@localhost nemo]# v4l2-ctl --list-formats -d /dev/video32 ioctl: VIDIOC_ENUM_FMT Index : 0 Type : Video Capture Multiplanar Pixel Format: 'NV12' Name : Y/CbCr 4:2:0 [root@localhost nemo]# v4l2-ctl --list-formats -d /dev/video33 ioctl: VIDIOC_ENUM_FMT Index : 0 Type : Video Capture Multiplanar Pixel Format: 'MPG4' Name : Mpeg4 compressed format Index : 1 Type : Video Capture Multiplanar Pixel Format: 'H263' Name : H263 compressed format Index : 2 Type : Video Capture Multiplanar Pixel Format: 'H264' Name : H264 compressed format Index : 3 Type : Video Capture Multiplanar Pixel Format: 'VP80' Name : VP8 compressed format [root@localhost nemo]# v4l2-ctl --list-formats -d /dev/video38 ioctl: VIDIOC_ENUM_FMT [root@localhost ~]# v4l2-sysfs-path -d Device fd8c0000.qcom,msm-cam: video0(video, dev 81:6) v4l-subdev0(v4l subdevice, dev 81:7) v4l-subdev1(v4l subdevice, dev 81:8) v4l-subdev10(v4l subdevice, dev 81:17) v4l-subdev11(v4l subdevice, dev 81:19) v4l-subdev12(v4l subdevice, dev 81:21) v4l-subdev13(v4l subdevice, dev 81:22) v4l-subdev14(v4l subdevice, dev 81:23) v4l-subdev15(v4l subdevice, dev 81:24) v4l-subdev16(v4l subdevice, dev 81:25) v4l-subdev17(v4l subdevice, dev 81:26) v4l-subdev2(v4l subdevice, dev 81:9) v4l-subdev3(v4l subdevice, dev 81:10) v4l-subdev4(v4l subdevice, dev 81:11) v4l-subdev5(v4l subdevice, dev 81:12) v4l-subdev6(v4l subdevice, dev 81:13) v4l-subdev7(v4l subdevice, dev 81:14) v4l-subdev8(v4l subdevice, dev 81:15) v4l-subdev9(v4l subdevice, dev 81:16) Device fda0c000.qcom,cci/20.qcom,camera: video1(video, dev 81:18) Device fda0c000.qcom,cci/6c.qcom,camera: video2(video, dev 81:20) Device fe02c000: hw:0(sound card, dev 0:0) hw:0,0(pcm capture, dev 116:60) hw:0,1(pcm capture, dev 116:58) hw:0,10(pcm capture, dev 116:44) hw:0,11(pcm capture, dev 116:42) hw:0,12(pcm capture, dev 116:40) hw:0,13(pcm capture, dev 116:38) hw:0,14(pcm capture, dev 116:36) hw:0,15(pcm capture, dev 116:34) hw:0,16(pcm capture, dev 116:30) hw:0,17(pcm capture, dev 116:29) hw:0,19(pcm capture, dev 116:26) hw:0,2(pcm capture, dev 116:56) hw:0,20(pcm capture, dev 116:24) hw:0,22(pcm capture, dev 116:21) hw:0,23(pcm capture, dev 116:19) hw:0,24(pcm capture, dev 116:17) hw:0,25(pcm capture, dev 116:15) hw:0,26(pcm capture, dev 116:14) hw:0,27(pcm capture, dev 116:13) hw:0,28(pcm capture, dev 116:12) hw:0,29(pcm capture, dev 116:11) hw:0,3(pcm capture, dev 116:54) hw:0,30(pcm capture, dev 116:10) hw:0,31(pcm capture, dev 116:9) hw:0,32(pcm capture, dev 116:8) hw:0,34(pcm capture, dev 116:6) hw:0,35(pcm capture, dev 116:5) hw:0,36(pcm capture, dev 116:3) hw:0,5(pcm capture, dev 116:51) hw:0,6(pcm capture, dev 116:49) hw:0,8(pcm capture, dev 116:46) hw:0,0(pcm output, dev 116:59) hw:0,1(pcm output, dev 116:57) hw:0,10(pcm output, dev 116:43) hw:0,11(pcm output, dev 116:41) hw:0,12(pcm output, dev 116:39) hw:0,13(pcm output, dev 116:37) hw:0,14(pcm output, dev 116:35) hw:0,15(pcm output, dev 116:31) hw:0,17(pcm output, dev 116:28) hw:0,19(pcm output, dev 116:25) hw:0,2(pcm output, dev 116:55) hw:0,20(pcm output, dev 116:23) hw:0,21(pcm output, dev 116:22) hw:0,22(pcm output, dev 116:20) hw:0,23(pcm output, dev 116:18) hw:0,24(pcm output, dev 116:16) hw:0,3(pcm output, dev 116:53) hw:0,33(pcm output, dev 116:7) hw:0,35(pcm output, dev 116:4) hw:0,36(pcm output, dev 116:2) hw:0,4(pcm output, dev 116:52) hw:0,5(pcm output, dev 116:50) hw:0,6(pcm output, dev 116:48) hw:0,7(pcm output, dev 116:47) hw:0(mixer, dev 116:62) hw:0,1000(sound hardware, dev 116:61) comprC0D18(unknown, dev 116:27) comprC0D9(unknown, dev 116:45) Device virtual0: video32(video, dev 81:0) Device virtual1: video33(video, dev 81:1) Device virtual2: video34(video, dev 81:2) Device virtual3: video35(video, dev 81:3) Device virtual4: video38(video, dev 81:4) Device virtual5: video39(video, dev 81:5) Device virtual6: timer(sound timer, dev 116:33) [root@localhost ~]# v4l2-ctl -P -d /dev/video32 Streaming Parameters Video Capture: Frames per second: invalid (0/0) Read buffers : 0 [root@localhost ~]# v4l2-ctl -P -d /dev/video33 Streaming Parameters Video Capture: Frames per second: invalid (0/0) Read buffers : 0 [root@localhost ~]# v4l2-ctl -P -d /dev/video38 VIDIOC_G_PARM: failed: Invalid argument [root@localhost ~]# v4l2-ctl --list-formats-out -d /dev/video32 ioctl: VIDIOC_ENUM_FMT Index : 0 Type : Video Output Multiplanar Pixel Format: 'MPG4' (compressed) Name : Mpeg4 compressed format Index : 1 Type : Video Output Multiplanar Pixel Format: 'MPG2' (compressed) Name : Mpeg2 compressed format Index : 2 Type : Video Output Multiplanar Pixel Format: 'H263' (compressed) Name : H263 compressed format Index : 3 Type : Video Output Multiplanar Pixel Format: 'VC1G' (compressed) Name : VC-1 compressed format Index : 4 Type : Video Output Multiplanar Pixel Format: 'VC1L' (compressed) Name : VC-1 compressed format G Index : 5 Type : Video Output Multiplanar Pixel Format: 'H264' (compressed) Name : H264 compressed format Index : 6 Type : Video Output Multiplanar Pixel Format: 'HEVC' (compressed) Name : HEVC compressed format Index : 7 Type : Video Output Multiplanar Pixel Format: 'HVCH' (compressed) Name : HEVC compressed format Index : 8 Type : Video Output Multiplanar Pixel Format: 'VP80' (compressed) Name : VP8 compressed format Index : 9 Type : Video Output Multiplanar Pixel Format: 'DIV3' (compressed) Name : DIVX 311 compressed format Index : 10 Type : Video Output Multiplanar Pixel Format: 'DIVX' (compressed) Name : DIVX 4/5/6 compressed format [root@localhost ~]# v4l2-ctl --list-formats-out -d /dev/video33 ioctl: VIDIOC_ENUM_FMT Index : 0 Type : Video Output Multiplanar Pixel Format: 'NV12' (compressed) Name : Y/CbCr 4:2:0 Index : 1 Type : Video Output Multiplanar Pixel Format: 'NV21' (compressed) Name : Y/CrCb 4:2:0 [root@localhost ~]# v4l2-ctl --list-formats-out -d /dev/video38 ioctl: VIDIOC_ENUM_FMT
Finally, the corresponding outputs from the original Jolla phone are shown. The kernel used on the Jolla phone was:
[root@Jolla nemo]# uname -a Linux Jolla 3.4.108.20150901.1 #1 SMP PREEMPT Thu Sep 17 18:32:22 UTC 2015 armv7l armv7l armv7l GNU/Linux [root@Jolla nemo]# ll /dev/video ls: cannot access /dev/video: No such file or directory
The output of the video related information is shown below:
[root@localhost nemo]# v4l2-ctl --list-devices # The device reboots reproducibly and thus no data could be obtained. root@Jolla nemo]# v4l2-ctl -D -d /dev/video0 Driver Info (not using libv4l2): Driver name : Card type : Bus info : Driver version: 3.4.108 Capabilities : 0x04000001 Video Capture Streaming [root@Jolla nemo]# v4l2-ctl -D -d /dev/video1 Driver Info (not using libv4l2): Driver name : ov8825 Card type : Bus info : Driver version: 3.4.108 Capabilities : 0x04000001 Video Capture Streaming [root@Jolla nemo]# v4l2-ctl -D -d /dev/video2 Driver Info (not using libv4l2): Driver name : Card type : Bus info : Driver version: 3.4.108 Capabilities : 0x04000001 Video Capture Streaming [root@Jolla nemo]# v4l2-ctl -D -d /dev/video3 Driver Info (not using libv4l2): Driver name : ov2675 Card type : Bus info : Driver version: 3.4.108 Capabilities : 0x04000001 Video Capture Streaming [root@Jolla nemo]# v4l2-ctl -D -d /dev/video38 Driver Info (not using libv4l2): Driver name : wifi-display Card type : msm Bus info : Driver version: 0.0.1 Capabilities : 0x04000001 Video Capture Streaming [root@Jolla nemo]# v4l2-ctl -D -d /dev/video39 Failed to open /dev/video39: No such device [root@Jolla nemo]# v4l2-ctl -D -d /dev/video100 VIDIOC_QUERYCAP: failed: Inappropriate ioctl for device /dev/video100: not a v4l2 node [root@Jolla nemo]# v4l2-ctl -V -d /dev/video0 Format Video Capture: Width/Height : 0/0 Pixel Format : '' Field : Any Bytes per Line: 0 Size Image : 0 Colorspace : Unknown (00000000) [root@Jolla nemo]# v4l2-ctl -V -d /dev/video1 Format Video Capture: Width/Height : 0/0 Pixel Format : '' Field : Any Bytes per Line: 0 Size Image : 0 Colorspace : Unknown (00000000) [root@Jolla nemo]# v4l2-ctl -V -d /dev/video2 Format Video Capture: Width/Height : 0/0 Pixel Format : '' Field : Any Bytes per Line: 0 Size Image : 0 Colorspace : Unknown (00000000) [root@Jolla nemo]# v4l2-ctl -V -d /dev/video3 Format Video Capture: Width/Height : 0/0 Pixel Format : '' Field : Any Bytes per Line: 0 Size Image : 0 Colorspace : Unknown (00000000) [root@Jolla nemo]# v4l2-ctl -V -d /dev/video38 Format Video Capture: Width/Height : 640/480 Pixel Format : 'H264' Field : Any Bytes per Line: 0 Size Image : 462848 Colorspace : Unknown (00000000) [root@Jolla nemo]# v4l2-ctl -V -d /dev/video39 Failed to open /dev/video39: No such device [root@Jolla nemo]# v4l2-ctl -V -d /dev/video100 VIDIOC_QUERYCAP: failed: Inappropriate ioctl for device /dev/video100: not a v4l2 node [root@Jolla nemo]# v4l2-ctl --list-formats -d /dev/video0 ioctl: VIDIOC_ENUM_FMT Index : 0 Type : Video Capture Pixel Format: 'NV12' Name : NV12BAYER Index : 1 Type : Video Capture Pixel Format: 'NV21' Name : NV21BAYER Index : 2 Type : Video Capture Pixel Format: 'NV16' Name : NV16BAYER Index : 3 Type : Video Capture Pixel Format: 'NV61' Name : NV61BAYER Index : 4 Type : Video Capture Pixel Format: 'YM12' Name : YU12BAYER Index : 5 Type : Video Capture Pixel Format: 'BG10' Name : RAWBAYER Index : 6 Type : Video Capture Pixel Format: 'STAE' Name : SAEC Index : 7 Type : Video Capture Pixel Format: 'STWB' Name : SAWB Index : 8 Type : Video Capture Pixel Format: 'STAF' Name : SAFC Index : 9 Type : Video Capture Pixel Format: 'IHST' Name : SHST [root@Jolla nemo]# [root@Jolla nemo]# v4l2-ctl --list-formats -d /dev/video1 ioctl: VIDIOC_ENUM_FMT Index : 0 Type : Video Capture Pixel Format: 'NV12' Name : NV12BAYER Index : 1 Type : Video Capture Pixel Format: 'NV21' Name : NV21BAYER Index : 2 Type : Video Capture Pixel Format: 'NV16' Name : NV16BAYER Index : 3 Type : Video Capture Pixel Format: 'NV61' Name : NV61BAYER Index : 4 Type : Video Capture Pixel Format: 'YM12' Name : YU12BAYER Index : 5 Type : Video Capture Pixel Format: 'BG10' Name : RAWBAYER Index : 6 Type : Video Capture Pixel Format: 'STAE' Name : SAEC Index : 7 Type : Video Capture Pixel Format: 'STWB' Name : SAWB Index : 8 Type : Video Capture Pixel Format: 'STAF' Name : SAFC Index : 9 Type : Video Capture Pixel Format: 'IHST' Name : SHST [root@Jolla nemo]# [root@Jolla nemo]# v4l2-ctl --list-formats -d /dev/video2 ioctl: VIDIOC_ENUM_FMT Index : 0 Type : Video Capture Pixel Format: 'NV12' Name : NV12YUV Index : 1 Type : Video Capture Pixel Format: 'NV21' Name : NV21YUV Index : 2 Type : Video Capture Pixel Format: 'YUYV' Name : YUYV [root@Jolla nemo]# [root@Jolla nemo]# v4l2-ctl --list-formats -d /dev/video3 ioctl: VIDIOC_ENUM_FMT Index : 0 Type : Video Capture Pixel Format: 'NV12' Name : NV12YUV Index : 1 Type : Video Capture Pixel Format: 'NV21' Name : NV21YUV Index : 2 Type : Video Capture Pixel Format: 'YUYV' Name : YUYV [root@Jolla nemo]# [root@Jolla nemo]# v4l2-ctl --list-formats -d /dev/video38 ioctl: VIDIOC_ENUM_FMT [root@Jolla nemo]# v4l2-ctl --list-formats -d /dev/video39 Failed to open /dev/video39: No such device [root@Jolla nemo]# v4l2-ctl --list-formats -d /dev/video100 VIDIOC_QUERYCAP: failed: Inappropriate ioctl for device /dev/video100: not a v4l2 node [root@Jolla nemo]# v4l2-sysfs-path -d Device i2c-4/4-002a: video0(video, dev 81:1) Device i2c-4/4-0060: video2(video, dev 81:4) Device platform/msm_cam_server.0: video100(video, dev 81:0) v4l-subdev0(v4l subdevice, dev 81:3) v4l-subdev1(v4l subdevice, dev 81:6) v4l-subdev10(v4l subdevice, dev 81:15) v4l-subdev2(v4l subdevice, dev 81:7) v4l-subdev3(v4l subdevice, dev 81:8) v4l-subdev4(v4l subdevice, dev 81:9) v4l-subdev5(v4l subdevice, dev 81:10) v4l-subdev6(v4l subdevice, dev 81:11) v4l-subdev7(v4l subdevice, dev 81:12) v4l-subdev8(v4l subdevice, dev 81:13) v4l-subdev9(v4l subdevice, dev 81:14) Device platform/soc-audio.0: hw:0(sound card, dev 0:0) hw:0,0(pcm capture, dev 116:27) hw:0,1(pcm capture, dev 116:25) hw:0,10(pcm capture, dev 116:10) hw:0,12(pcm capture, dev 116:7) hw:0,13(pcm capture, dev 116:5) hw:0,14(pcm capture, dev 116:3) hw:0,2(pcm capture, dev 116:23) hw:0,3(pcm capture, dev 116:21) hw:0,5(pcm capture, dev 116:18) hw:0,6(pcm capture, dev 116:16) hw:0,8(pcm capture, dev 116:13) hw:0,9(pcm capture, dev 116:12) hw:0,0(pcm output, dev 116:26) hw:0,1(pcm output, dev 116:24) hw:0,10(pcm output, dev 116:9) hw:0,11(pcm output, dev 116:8) hw:0,12(pcm output, dev 116:6) hw:0,13(pcm output, dev 116:4) hw:0,14(pcm output, dev 116:2) hw:0,2(pcm output, dev 116:22) hw:0,3(pcm output, dev 116:20) hw:0,4(pcm output, dev 116:19) hw:0,5(pcm output, dev 116:17) hw:0,6(pcm output, dev 116:15) hw:0,7(pcm output, dev 116:14) hw:0,9(pcm output, dev 116:11) hw:0(mixer, dev 116:28) Device virtual0: video1(video, dev 81:2) Device virtual1: video3(video, dev 81:5) Device virtual2: video38(video, dev 81:16) Device virtual3: video39(video, dev 81:17) Device virtual4: timer(sound timer, dev 116:33) [root@Jolla nemo]# v4l2-ctl -P -d /dev/video0 VIDIOC_G_PARM: failed: Invalid argument [root@Jolla nemo]# [root@Jolla nemo]# v4l2-ctl -P -d /dev/video1 VIDIOC_G_PARM: failed: Invalid argument [root@Jolla nemo]# [root@Jolla nemo]# v4l2-ctl -P -d /dev/video2 VIDIOC_G_PARM: failed: Invalid argument [root@Jolla nemo]# [root@Jolla nemo]# v4l2-ctl -P -d /dev/video3 VIDIOC_G_PARM: failed: Invalid argument [root@Jolla nemo]# v4l2-ctl -P -d /dev/video38 VIDIOC_G_PARM: failed: Invalid argument [root@Jolla nemo]# v4l2-ctl -P -d /dev/video39 Failed to open /dev/video39: No such device [root@Jolla nemo]# v4l2-ctl -P -d /dev/video100 VIDIOC_QUERYCAP: failed: Inappropriate ioctl for device /dev/video100: not a v4l2 node [root@Jolla nemo]# v4l2-ctl --list-formats-out -d /dev/video0 ioctl: VIDIOC_ENUM_FMT [root@Jolla nemo]# [root@Jolla nemo]# v4l2-ctl --list-formats-out -d /dev/video1 ioctl: VIDIOC_ENUM_FMT [root@Jolla nemo]# [root@Jolla nemo]# v4l2-ctl --list-formats-out -d /dev/video2 ioctl: VIDIOC_ENUM_FMT [root@Jolla nemo]# [root@Jolla nemo]# v4l2-ctl --list-formats-out -d /dev/video3 ioctl: VIDIOC_ENUM_FMT [root@Jolla nemo]# v4l2-ctl --list-formats-out -d /dev/video38 ioctl: VIDIOC_ENUM_FMT [root@Jolla nemo]# v4l2-ctl --list-formats-out -d /dev/video39 Failed to open /dev/video39: No such device [root@Jolla nemo]# v4l2-ctl --list-formats-out -d /dev/video100 VIDIOC_QUERYCAP: failed: Inappropriate ioctl for device /dev/video100: not a v4l2 node