Wireless Display Software For Linux OS (WDS) を入れてみたときのメモ

# WDSでできることの一つ

+ アンドロイド端末のキャスト機能でWifi経由でPCに画面をシェアできる

# リポジトリ

+ https://github.com/intel/wds

# 試したときの環境

+ lubuntu 18.10
+ Atheros9k

# 入れ方

## connmanを入れる

（ソースコードからビルドしようとしたらlibdbus-1-dev (1.12)がすでに入ってるにもかかわらず、1.4以上が必要というわけのわからないエラーが出てきてとても困った。
が、普通にパッケージがあることに気づく。）

```
# apt-get install connman
```

## wpa_supplicantをいれる

これもソースコードからビルドしようとしたが、`/sbin/wpa_supplicant` にすでに入っていたうえに、すでに起動されていたよう。

## gstreamer系のパッケージを入れる

gstreamerと名のつくものをとにかくいれまくった

```
$ dpkg -l gstreamer*
要望=(U)不明/(I)インストール/(R)削除/(P)完全削除/(H)保持
| 状態=(N)無/(I)インストール済/(C)設定/(U)展開/(F)設定失敗/(H)半インストール/(W)トリガ待ち/(T)トリガ保留
|/ エラー?=(空欄)無/(R)要再インストール (状態,エラーの大文字=異常)
||/ 名前                        バージョン         アーキテクチャ     説明
+++-===========================-==================-==================-===========================================================
un  gstreamer1.0-alsa           <なし>             <なし>             (説明 (description) がありません)
un  gstreamer1.0-audiosink      <なし>             <なし>             (説明 (description) がありません)
un  gstreamer1.0-audiosource    <なし>             <なし>             (説明 (description) がありません)
ii  gstreamer1.0-clutter-3.0:am 3.0.26-1           amd64              Clutter PLugin for GStreamer 1.0
un  gstreamer1.0-doc            <なし>             <なし>             (説明 (description) がありません)
un  gstreamer1.0-fluendo-mp3    <なし>             <なし>             (説明 (description) がありません)
ii  gstreamer1.0-gl:amd64       1.14.4-1ubuntu1    amd64              GStreamer plugins for GL
ii  gstreamer1.0-libav:amd64    1.15.0.1+git201807 amd64              libav plugin for GStreamer
ii  gstreamer1.0-plugins-bad:am 1.14.4-1ubuntu1    amd64              GStreamer plugins from the "bad" set
un  gstreamer1.0-plugins-bad-fa <なし>             <なし>             (説明 (description) がありません)
un  gstreamer1.0-plugins-bad-vi <なし>             <なし>             (説明 (description) がありません)
ii  gstreamer1.0-plugins-base:a 1.14.4-1ubuntu1    amd64              GStreamer plugins from the "base" set
ii  gstreamer1.0-plugins-good:a 1.14.4-1ubuntu1    amd64              GStreamer plugins from the "good" set
ii  gstreamer1.0-plugins-ugly:a 1.14.4-1           amd64              GStreamer plugins from the "ugly" set
un  gstreamer1.0-plugins-ugly-a <なし>             <なし>             (説明 (description) がありません)
ii  gstreamer1.0-pulseaudio:amd 1.14.4-1ubuntu1    amd64              GStreamer plugin for PulseAudio
un  gstreamer1.0-tools          <なし>             <なし>             (説明 (description) がありません)
ii  gstreamer1.0-vaapi:amd64    1.14.4-1           amd64              VA-API plugins for GStreamer
un  gstreamer1.0-vaapi-doc      <なし>             <なし>             (説明 (description) がありません)
un  gstreamer1.0-videosink      <なし>             <なし>             (説明 (description) がありません)
un  gstreamer1.0-videosource    <なし>             <なし>             (説明 (description) がありません)
un  gstreamer1.0-visualization  <なし>             <なし>             (説明 (description) がありません)
ii  gstreamer1.0-x:amd64        1.14.4-1ubuntu1    amd64              GStreamer plugins for X11 and Pango
```

+ 下記コマンドが一番効いた

+ コーデックがないみたいなエラーがこれで治った

```
# apt install gstreamer1.0-plugins-bad-videoparsers
```
```
# apt install ubuntu-restricted-extras
```

# 呼び出すとき

+ wdsのソースコードをビルドしておく
+ タブを２つ開いておく
+ 片方のタブでconnmanを呼び出しておく。あとはwifi, p2p, agentをgithubのREADMEにかかれている通りの状態にしておく。
+ もう片方のタブで ./sink-test (wds/sink以下にある) を呼び出す
+ アンドロイド端末でキャストを選択。接続先にwdsを入れたPCが出てくるので選択。
+ connmanを呼び出しておいたタブでyes/noがきかれるのでyesを選択。
+ あとは画面がシェアされるはず。

# 備考

+ 残念ながら0.5秒ぐらい遅延する。ただ、ビデオとかゲームみたいなリッチなコンテンツでもキャストできる。
+ 音声もキャストできる