問題
こんにちは。私は Sunplus USB カメラ (Siri A9 UVC) を持っていて、それを PC ウェブカメラとして使用しようとしています。何を試しても、v4l2 では表示されますが、それを使用しているアプリが壊れてしまいます。たとえば、USB カメラに切り替えると Cheese が停止します。
テストとして、fswebcam を使用して写真を撮りました。しばらく停止した後、次のように出力されます。
karol@karol-hp2:~$ fswebcam --jpeg 85 -d /dev/video2 web-cam-shot.jpg
--- Opening /dev/video2...
Trying source module v4l2...
/dev/video2 opened.
No input was specified, using the first. (here stalls)
Unable to find a compatible palette format.
Win10(同じラップトップ)では、カメラは問題なく動作します。しかし、ここでは、カメラを使用するアプリが壊れるだけでなく、パルスオーディオカメラを接続すると、すべてのオーディオ デバイスが設定から消えます。
システム
私は使用していますウブントゥ 21.04;
カーネルバージョン -5.11.0-34-ジェネリック
デバイス/ドライバーの仕様:
USBデバイス( lsusb
):
Bus 001 Device 008: ID 04fc:6333 Sunplus Technology Co., Ltd Siri A9 UVC chipset
ハードウェア仕様( lshf
):
*-usb:1
description: Video
product: Mass Storage
vendor: iCatchtek Co Ltd
physical id: 2
bus info: usb@1:2
version: 1.00
serial: 01.00.00
capabilities: usb-2.00
configuration: driver=snd-usb-audio maxpower=100mA speed=480Mbit/s
v4l2 デバイス ( v4l2-ctl --list-devices
):
'OBS (platform:v4l2loopback-000):
/dev/video13
Mass Storage (usb-0000:00:14.0-2):
/dev/video2
/dev/video3
/dev/media1
HP Wide Vision HD Camera: HP Wi (usb-0000:00:14.0-5):
/dev/video0
/dev/video1
/dev/media0
最後に、v4l2 カメラの詳細 ( v4l2-ctl -d 2 -D
):
Driver Info:
Driver name : uvcvideo
Card type : Mass Storage
Bus info : usb-0000:00:14.0-2
Driver version : 5.11.22
Capabilities : 0x84a00001
Video Capture
Metadata Capture
Streaming
Extended Pix Format
Device Capabilities
Device Caps : 0x04200001
Video Capture
Streaming
Extended Pix Format
Media Driver Info:
Driver name : uvcvideo
Model : Mass Storage
Serial : 01.00.00
Bus info : usb-0000:00:14.0-2
Media version : 5.11.22
Hardware revision: 0x00000100 (256)
Driver version : 5.11.22
Interface Info:
ID : 0x03000002
Type : V4L Video
Entity Info:
ID : 0x00000001 (1)
Name : Mass Storage
Function : V4L2 I/O
Flags : default
Pad 0x01000007 : 0: Sink
Link 0x02000010: from remote pad 0x100000a of entity 'Extension 3': Data, Enabled, Immutable
答え1
多くのデバイス アクセスの問題は、グループ メンバーシップの変更によって解決できます。
具体的には、ls -l
グループ権限 (2 番目の「rwx
」トリプレット) が「rw
」(例:「-rw-rw----
」) であることが示される場合、デバイスを所有するグループに自分自身を追加するとrw
アクセスが許可されます。
方法は次のとおりです。
device="/dev/whatever"
sudo adduser $USER $(stat -c "%G" $device)
rw
これにより、デバイスを使用できるグループのメンバーになることができます。しかし、もう1つのステップがあります。
すべてのプロセスを新しいグループのメンバーにするには、ログアウトしてログインします。グループ メンバーシップは、同時に設定されますlogin
。
新しいグループに単一のプロセスを作成するには(ログアウト/ログイン前のテスト用):
newgrp $(stat -c "%G" $device)
または、グループ名を入力するだけです。 を参照してくださいman newgrp
。