FreeRDPでノートパソコンやタブレットをサブモニターにする

nogajun
nogajun

自宅の作業では、デスクトップPCとノートパソコンを使ってます。

キーボード・マウスをネットワーク上で共有するBarrierを使うと、メインマシンからノートパソコンを操作できるので、メインマシンで作業しながらノートパソコンで資料を開いたりYouTubeを流したりしてます。

普段は、それで困ることはないのですが1つ困ることが出てきました。

学生として通っている大学のサイトが、別マシンからログインすると強制的にセッションを切ってしまうアレな仕様で、ノートパソコンで授業動画を見ながらデスクトップの作業ができません!

これは困った…。

そう思っていたところ「Use a laptop as a 2nd display on Linux using FreeRDP」という記事を見かけたので試したところ、うまくいかない…。

それで、あきらめかけてましたが、検索して見つけたVirtScreenのIssueのコメントを見て、それと合わせて試すと、うまく動いたので作業メモです。

この記事が役に立ったらコーヒーをおごろう

下のリンクはBuy me a coffeeという投げ銭システムのリンクです。役に立ったと思ったら、ぜひ投げ銭をお願いします。

evdiモジュールのインストール

evdiカーネルモジュールを使って仮想モニターを作るのでevdi-dkmsをインストールします。

$ sudo apt install evdi-dkms

evdiモジュールをインストールしたらmodprobeを使って組み込みます。initial_device_countはモニターの数でとりあえずは1つでいいので1を指定しています。

$ sudo modprobe evdi initial_device_count=1

仮想モニターの設定

evdiモジュールを組み込むとグラフィックプロバイダが増えているはずなのでxrandr --listprovidersで確認します。

$ xrandr --listproviders
Providers: number : 2
Provider 0: id: 0x55 cap: 0xf, Source Output, Sink Output, Source Offload, Sink Offload crtcs: 4 outputs: 3 associated providers: 1 name:AMD Radeon Graphics @ pci:0000:05:00.0
Provider 1: id: 0x76b cap: 0x2, Sink Output crtcs: 1 outputs: 1 associated providers: 1 name:modesetting

0がRadeonで1がevdiのグラフィックプロバイダですね。ソースを設定します。

$ xrandr --setprovideroutputsource 1 0

仮想モニターを強制的に有効化します。

$ sudo sh -c "echo on > /sys/kernel/debug/dri/1/DVI-I-1/force"

仮想モニターの解像度を設定します。フルHD(1920x1080)なら設定する必要はありませんが、自分が使っているXiaomi Redmibookは2560x1600で解像度が無いのでcvtコマンドでmodelineを設定しています。

$ cvt 2560 1600 60
# 2560x1600 59.99 Hz (CVT 4.10MA) hsync: 99.46 kHz; pclk: 348.50 MHz
Modeline "2560x1600_60.00"  348.50  2560 2760 3032 3504  1600 1603 1609 1658 -hsync +vsync

modelineを求めたらnewmodeで設定します。

$ xrandr --newmode "2560x1600_60.00"  348.50  2560 2760 3032 3504  1600 1603 1609 1658 -hsync +vsync

解像度を登録したら仮想モニターに設定します。

$ xrandr --addmode DVI-I-1-1 2560x1600_60.00
$ xrandr --output DVI-I-1-1 --mode 2560x1600_60.00 --right-of HDMI-A-0

これで仮想モニターの設定は終わりです。ここでデスクトップの画面解像度設定を開くと仮想モニターが見えるはずです。

画面設定

FreeRDPの設定

freerdp2-shadow-x11をインストールして起動します。ホスト側はこれで終わりです。

$ sudo apt install freerdp2-shadow-x11
$ freerdp-shadow-cli -auth -may-interact /monitors:1

FreeRDPの準備が出来たので、仮想モニターを写すノートパソコン側です。元記事では、この設定がベストで他のRDPクライアントはカーソルが見えないし確実に動作しないというふうに書いていますが、自分で試した限りは大丈夫そうでした。

$ sudo apt install freerdp2-x11
$ xfreerdp /v:(ホストのIP) /cert-ignore /floatbar:sticky:off,show:always -gfx /rfx /f

まとめ

とりあえず動画が再生できることは確認できたので目的は達成できそうです。あとは設定を見直して、すぐに使えるようにできればいいかな。

この記事が役に立ったらコーヒーをおごろう

下のリンクはBuy me a coffeeという投げ銭システムのリンクです。役に立ったと思ったら、ぜひ投げ銭をお願いします。