5
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

FreeBSD で USB 接続の HDMI キャプチャが使えた

Last updated at Posted at 2024-12-08

この投稿は FreeBSD Advent Calendar 2024 9 日目の記事です。
ずいぶん前に USB 接続の HDMI キャプチャを買っていました。 SBC やサーバの画面をディスプレイを切り替えて作業するのが面倒でメインマシンのデスクトップに表示できたら楽だなと思ったのと、記録用に手軽にキャプチャができると良いなと思ったのが購入のきっかけです。
しかし、当時どうしても FreeBSD で動かすことができず、ずっと放置していました。
先日、ふと思い立って FreeBSD で使ってみたら動くではないですか!
というわけで、私が調べた限りでは動かし方が見当たらなかったので記録として残しておきます。

今回の主役

4 年前に買った USB 接続の HDMI キャプチャです。 USB 接続で FullHD でキャプチャできます。FreeBSD は 12.2 とか 11.4 の頃です。

image.png

認識状況

環境は FreeBSD 14.1 です。先日 14.2 が出ましたが、まだアップグレードしていません。
このデバイスは以下のように認識しています。

  • dmesg
    ugen1.11: <MACROSILICON USB3. 0 capture> at usbus1
    uaudio0 on uhub4
    uaudio0: <MACROSILICON USB3. 0 capture, class 239/2, rev 2.00/21.00, addr 10> on usbus1
    uaudio0: No playback.
    uaudio0: Record[0]: 96000 Hz, 1 ch, 16-bit S-LE PCM format, 2x4ms buffer. (selected)
    uaudio0: No MIDI sequencer.
    pcm11 on uaudio0
    uaudio0: No HID volume keys found.
    uhid1 on uhub4
    uhid1: <MACROSILICON USB3. 0 capture, class 239/2, rev 2.00/21.00, addr 10> on usbus1
    
  • usbconfig list
    ugen1.11: <MACROSILICON USB3. 0 capture> at usbus1, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=ON (500mA)
    

この頃の 2000 円以下で売られていたデバイスは MS2109 というチップを使っていることが多いそうなので、おそらくこのデバイスも同じチップを使っていると思われます。最近は MS2130 というデバイスを使っていることが多いようですが、持っていないので同じように使えるかは分かりません。

dmesg を見る限りではオーディオデバイスと HID に見えるようです。 HDMI キャプチャなのにビデオっぽいデバイスはなくて、 HID を持っているようです。オーディオは当然として、 HID は何に使うのだろう...。

Mac や Windows だとどう見える?

Mac や Windows だとカメラデバイスとして見えます。よって、Windows ならばカメラアプリでキャプチャした画像を見られます。 Mac ならば QuickTIme Player で良さそうです。

  • デバイスマネージャ
    image.png
  • カメラアプリでキャプチャした画像を表示を表示
    image.png
    NanoPi R5S に Ubuntu を入れてあります

FreeBSD はどうする?

Mac や Windows ではカメラとして見えるので、 FreeBSD も同じようにカメラとして見えないか試してみます。

カメラを使うなら cuse

キャラクタデバイスとして見えるようにする必要があるらしいので、 cuse をロードします。

> sudo kldload cuse

カメラなので webcamd

カメラとして扱うので、 webcamd を使います。以前はこれを使ってもうまくいかなかった気がします...。

> sudo pkg install webcamd
> sudo webcamd -d ugen1.11
webcamd 4763 - - Attached to ugen1.11[0]
webcamd 4763 - - Creating /dev/video0
webcamd 4763 - - Creating /dev/video1

-d は認識している USB ポートを指定します

video0, video1 と 2 つのデバイスを認識しますが、使うのは video0 のみです。このデバイスは webcamd ユーザしか使えない状態になっているので、一般ユーザでも読めるようにします。

> ls -al /dev/video*
crw-rw----  1 webcamd webcamd  0xef 12月  8 23:59 /dev/video0
crw-rw----  1 webcamd webcamd  0xf0 12月  8 23:59 /dev/video1
> sudo chmod -v 666 /dev/video*

任意のビューワーで表示する

とりあえず pwcview で表示してみます。
Windows で表示した画像と同じ画像が表示されずはずです。

> pwcview -d /dev/video0 -f 30

無事に表示できました。
image.png

気になるところ

他にも、 VLC や OBS, mplayer でも表示できました。
ただ、音を出せたのは mplayer だけだったのですが、音を出すと音は途切れ途切れでキャプチャ画面もカクカクになって使い物にならなかったです。 VLC は音が出ないし画面もカクカクでやはり使い物にならないです。原因までは追いかけていません。
このデバイス、結構熱を持ちます。筐体がアルミ製なのは納得ができます。

まとめ

4 年間放置しましたがいつの間にか使えるようになっていました。不便だなと思っていた部分が解消されて快適に過ごせそうです。挿したらサクッと使えるように devd を設定をしておくとさらに快適になりそうです。

5
1
5

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?