[Linux Mint 20]カメラ無しPCで古いiPadをカメラにする(droidcam)


※2021/05/02:v1.6→v1.72へのアップデートを追記

先日、Ubuntu18.04LTSに入れた「droidcam」をLinux Mint 20にも入れようと思ったら、バージョンが1.5→1.6に上がっている上、公式サイトの手順が若干だが変わっていた(zip解凍したら、ファイルの日付が2020/11/5になってた)。

DroidCam(Dev47Apps)
https://www.dev47apps.com/

材料

  • PC:FMV-BIBLO MG70W(2007年製、Core2Duo [email protected]、4GBメモリ)
  • タブレット:iPad 3(iOS 9.3.5)、Sharp SH-02M(Android 10)
  • アプリ:Droidcam

インストール

iPad/Androidは公式のアプリストアから「Droidcam」をインストールする。

一方、PC=クライアントについては、公式手順に沿って進める。

Droidcam Linux
https://www.dev47apps.com/droidcam/linux/

Droidcamクライアント

まず、クライアントパッケージのダウンロード、解凍、インストール。

cd /tmp/
wget https://files.dev47apps.net/linux/droidcam_latest.zip
unzip droidcam_latest.zip -d droidcam
cd droidcam && sudo ./install-client

前回は「sudo ./install」だったので、ここからして若干変化あり。

標準のv4l2loopbackドライバ

次に、手順が更新されていたv4l2loopbackドライバ周り。

Droidcamカスタマイズなv4l2loopbackドライバがどうのこうのと書かれているものの、標準のv4l2loopbackドライバとやらが入っていればよさげなので、ここはすっ飛ばして良さそう・・・

$ sudo apt list | grep v4l2

WARNING: apt does not have a stable CLI interface. Use with caution in scripts.

gem-plugin-v4l2/focal 1:0.94-1build2 amd64
libv4l2rds0/focal 1.18.0-2build1 amd64
libv4l2rds0/focal 1.18.0-2build1 i386
qv4l2/focal 1.18.0-2build1 amd64
qv4l2/focal 1.18.0-2build1 i386
v4l2loopback-dkms/focal-updates,focal-updates 0.12.3-1ubuntu0.1 all
v4l2loopback-source/focal-updates,focal-updates 0.12.3-1ubuntu0.1 all
v4l2loopback-utils/focal-updates,focal-updates 0.12.3-1ubuntu0.1 all

って、入って無いし!(Ubuntu18.04LTSでは入ってた)

ということでv4l2loopbackドライバをインストールする。

$ sudo apt install v4l2loopback-dkms
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
提案パッケージ:
  v4l2loopback-utils
以下のパッケージが新たにインストールされます:
  v4l2loopback-dkms
アップグレード: 0 個、新規インストール: 1 個、削除: 0 個、保留: 1 個。
27.2 kB のアーカイブを取得する必要があります。
この操作後に追加で 109 kB のディスク容量が消費されます。
:
:
Loading new v4l2loopback-0.12.3 DKMS files...
Building for 5.4.0-53-generic
Building initial module for 5.4.0-53-generic
Done.

v4l2loopback.ko:
Running module version sanity check.
 - Original module
   - No original module exists within this kernel
 - Installation
   - Installing to /lib/modules/5.4.0-53-generic/extra/

depmod.....

DKMS: install completed.
$ sudo modprobe v4l2loopback
$ lsmod | grep v4l2loopback
v4l2loopback           40960  0
videodev              225280  1 v4l2loopback
$

Droidcamクライアントを起動すると

$ droidcam
Device /dev/video0 is 'Dummy video device (0x0000)' @ platform:v4l2loopback-000
Device /dev/video0 is 'Dummy video device (0x0000)' @ platform:v4l2loopback-000
Opened /dev/video0, fd:12
Audio loopback device not found.
Is snd_aloop loaded?
Audio: 

とログが流れて

DroidCamのクライアントアプリのウインドウが開いた。

ここでiPad側のDroidcamを起動し、表示されたiPadのIPアドレスを入力してConnectを押したところ、Droidcamの接続は成功した。しかし、VLCやCheeseで確認しようとしてもエラーになったり、そもそもデバイスが見つからないと言われてしまい、カメラの映像を見ることはできなかった。

Droidcamカスタムのv4l2loopbackドライバ

どこが気に入らないのかはわからないけれど、ひとまずは手順に新しく追加された「Droidcamカスタマイズドライバ」を追うことにした。

$ sudo apt install linux-headers-`uname -r` gcc make
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
gcc はすでに最新バージョン (4:9.3.0-1ubuntu2) です。
make はすでに最新バージョン (4.2.1-1.2) です。
linux-headers-5.4.0-53-generic はすでに最新バージョン (5.4.0-53.59) です。
linux-headers-5.4.0-53-generic は手動でインストールしたと設定されました。
アップグレード: 0 個、新規インストール: 0 個、削除: 0 個、保留: 1 個。
$ sudo ./install-video 
Webcam parameters: '640' and '480'
Building v4l2loopback-dc.ko
:
(ずらずらとmakeが走る)
:
Adding options v4l2loopback_dc width=640 height=480 to /etc/modprobe.d/droidcam.conf
Adding videodev to /etc/modules-load.d/droidcam.conf
Adding v4l2loopback_dc to /etc/modules-load.d/droidcam.conf
Done
$ lsmod | grep v4l2
v4l2loopback_dc        24576  0
v4l2loopback           40960  0
videodev              225280  2 v4l2loopback_dc,v4l2loopback
$

ということで手順にある通り、モジュールに「v4l2loopback_dc」が追加された。

動作確認(IP接続)

再度、CLIから「droidcam」を起動する。

$ droidcam
Device /dev/video0 is 'Dummy video device (0x0000)' @ platform:v4l2loopback-000
Device /dev/video1 is 'Droidcam' @ platform:v4l2loopback_dc-000
Opened /dev/video1, fd:12
Audio loopback device not found.
Is snd_aloop loaded?
Audio: 

同じくdroidcamクライアントのアプリが起動するが、先程とは少しログの内容が変わった。

iPad側のIPアドレスを入力してDroidcamを接続した状態とし、Mint側で「VLC」を起動すると、プレイリストで[デバイス]→[ビデオキャプチャー]に「Droidcam」が表示された。

Ubuntu(=Droidcam Ver1.5)のときは毎回デバイスを選ぶ必要があったが、Droidcamカスタムv4l2loopbackドライバを登録したことで、アプリでリストに表示されるようになったのだろう(公式にもそんな風に書かれている)。

そして、このDroidcamを選んで再生すると、iPadのカメラの映像をVLCで見ることができた。

なお、試した範囲では以下の通り。

  • VLC:ビデオキャプチャーでカメラの映像が表示・録画できた
  • zoom:カメラのテストで表示された
  • skype:カメラのテストで表示された
  • cheese:表示されるのだが、すぐにエラーになってしまった

Ubuntu18.04LTSではCheeseでも問題なく表示されていたのだが、Mintではうまくいかなかったのはちょっと残念だった(Cheeseのバージョンが違うのかも?)。

USB接続

DroidcamはIP接続の他、USB接続の2通りの接続が可能である。

iPad(iOS)の場合

今回のターゲットである「古いiPad」はUSB接続でも問題なくDroidcamを使用できた。

READMEを見る限り、iOSとは「usbmuxd」を利用して接続しているようだが、確認したところusbmuxdは導入済みだったので、追加作業せずに済んだ。

ちなみにiPadとUSB接続した上で以下のコマンドの実行でActiveとなっていた。

$ sudo systemctl status usbmuxd
● usbmuxd.service - Socket daemon for the usbmux protocol used by Apple devices
     Loaded: loaded (/lib/systemd/system/usbmuxd.service; static; vendor preset: enabled)
     Active: active (running) since Fri 2020-11-13 16:05:37 JST; 2s ago
       Docs: man:usbmuxd(8)
   Main PID: 21824 (usbmuxd)
      Tasks: 2 (limit: 4602)
:

Androidの場合

一方、Androidについては、Android側を開発者モードにした上で、Androidの開発ツールである「adb」を利用しての接続となり、ちょっとだけ敷居が高い。

  • adbのインストール
$ sudo apt install adb
  • Android端末

モード変更は機種やOSバージョンによって異なるだろうから、参考程度(自分はSH-02M)。

  1. [設定]→[デバイス情報]の「ビルド番号」を連打して開発者モードに移行
  2. [設定]→[システム]→[詳細設定]→[開発者向けオプション]→デバッグの[USBデバッグ]をONにする
  3. PCとAndroid端末をUSBで接続。接続してよいかと問われたらOKを押す
  4. PCの端末から以下のコマンドを実行し、Android端末を認識しているか確認
$ adb devices
List of devices attached
999999999999999 device
$

ここまでやった上でAndroidのDroidcamアプリを起動→PCのDroidcamクライアント起動→USB(Android)を選んでConnectを押す、でようやくAndroid端末とのUSB接続でDroidcamを利用できた。

なお、アプリや環境にも依るだろうが、やはりIP接続よりUSB接続の方が表示が早く感じられたので、自分が使う場合はUSB接続を選ぶことになるだろう。

その他

音声

Ubuntuで試したときはアレヤコレヤした結果で繋がったものの、変なドライバ情報が残ったりしてしまったので、今回は実施していない(すみません)。

ランチャー登録

Ubuntuと同じ手順で実施。

1点追加として、desktopファイルに「Categories=AudioVideo」を追記することで、Droidcamアイコンを「サウンドとビデオ」配下に配置できた。

雑感

  • Droidcamのバージョンが上がっているとは思っておらず、自分のメモが役に立たなくなっているとは・・・
  • 今時、カメラなしPCなんてほとんど無いだろうから、Droidcamを使うとしたら遠隔監視なのかなと。ただ、遠隔監視だとクラウドサービス(Alfred Cameraとか)があったりするので、やっぱり古いPCで使うことになるのかなぁ・・・。

追記(2021/05/02)

久々に立ち上げたらなんか使えなくなってしまった。Ver1.72になっていたので、ついでにアップデートした。

# 古いバージョンのディレクトリにて
$ sudo ./uninstall-dkms
$ sudo ./uninstall

# 新しいバージョンのディレクトリにて
$ sudo ./install-client
$ sudo apt install linux-headers-`uname -r` gcc make
$ sudo ./install-video
$ lsmod | grep v4l2
v4l2loopback_dc        24576  0
videodev              225280  1 v4l2loopback_dc

Linuxのdroidcamを起動し、スマホのdroidcamも起動して接続したところ、無事画像が映ったのでOK。