■xrdp側の環境
クライアント側は「ローカルで音を出すよ」って宣言できるrdpクライアントなら何でも良い
$ lsb_release -d
No LSB modules are available.
Description: Debian GNU/Linux 12 (bookworm)
■xrdpサーバ側のサウンドドライバが「ダミー出力」や「Dummy Output」では音が出ないというのが課題
■xrdpサーバ側の現状
xrdpのモジュールを入れるかソースからコンパイルするかが必要な状況
$ dpkg -l | awk '$1 ~ /ii/ && $2 ~ /xrdp|remmina/{print $2,$3,$4}'
xorgxrdp 1:0.9.19-1 amd64
xrdp 0.9.21.1-1 amd64
■サーバ側バックポートを追加、backports版のxrdpモジュールを使う
debianはデフォルトがpulseaudioではなくpipewireなので。
$ tail -3 /etc/apt/sources.list
# pipewire-module-xrdp
deb http://deb.debian.org/debian/ bookworm-backports main non-free-firmware contrib non-free
■bpo12版のxrdpとpipewire-module-xrdpをインストールして対処
「-t bookworm-backports」でリポジトリを指定
$ sudo apt-get update
$ apt-cache search pipewire-module-xrdp
pipewire-module-xrdp - audio over xrdp for PipeWire based systems
$ sudo apt-get purge xrdp
$ sudo apt-get install -y pipewire
$ sudo apt-get -t bookworm-backports install -y xrdp pipewire-module-xrdp
$ dpkg -l | awk '$1 ~ /ii/ && $2 ~ /xrdp|remmina/{print $2,$3,$4}'
libpipewire-0.3-modules-xrdp:amd64 0.2-2~bpo12+1 amd64
pipewire-module-xrdp 0.2-2~bpo12+1 all
xorgxrdp 1:0.9.19-1 amd64
xrdp 0.9.24-5~bpo12+1 amd64
■xrdp起動エラーの対処
証明書を読み込む権限のお話なので
$ sudo systemctl restart xrdp.service
...
xrdp[2573]: [ERROR] xrdp_iso_send: trans_write_copy_s failed
$ sudo adduser xrdp ssl-cert
$ sudo systemctl restart xrdp.service
$ sudo systemctl status xrdp.service
■クライアント側に必要なのはremminaだけ。backports版である必要はない
$ dpkg -l | awk '$1 ~ /ii/ && $2 ~ /xrdp|remmina/{print $2,$3,$4}'
remmina 1.4.29+dfsg-1 amd64
remmina-common 1.4.29+dfsg-1 all
remmina-plugin-rdp:amd64 1.4.29+dfsg-1 amd64
remmina-plugin-secret:amd64 1.4.29+dfsg-1 amd64
remmina-plugin-vnc:amd64 1.4.29+dfsg-1 amd64
■remminaクライアント側は「ローカル」で鳴らすように設定するだけ
■xrdpサーバ側で出した音がローカルで鳴る
音質の途切れ具合いはレイテンシ等の調整でなんとかなる気はするけど?
$ sudo ps aux | awk '/pw-cl[i]/{print substr($0,68)}' | awk '{for(a=1;a<=NF;a++){print " "$a}}'
pw-cli
-m
-d
load-module
libpipewire-module-xrdp
sink.node.latency=2048
sink.stream.props={node.name=xrdp-sink}
source.stream.props={node.name=xrdp-source}