Ubuntu 24.04 における Chrome Remote Desktop 音声対応構築

これもマニア向けCRDインストール忘備録です



ステップ1: CRD のインストールと動作確認

  • 公式サイト から .deb を入手し、CRD をインストール。
  • PIN の設定など初期セットアップを済ませ、正常に接続できることを確認(この時点では仮想セッション)。
  • ステップ2: /opt/google/chrome-remote-desktop の改変(同一セッション使用)

    以下のように /opt/google/chrome-remote-desktop/chrome-remote-desktop を編集。

  • DISPLAY番号の指定を変更
    FIRST_X_DISPLAY_NUMBER = 20

    FIRST_X_DISPLAY_NUMBER = 0
  • X11 ロックファイルのチェックを無効化
    該当部分をコメントアウト:
    # while os.path.exists(X_LOCK_FILE_TEMPLATE % display):
    #     display += 1
  • Xvfb の起動とセッション処理を無効化し、既存セッション使用に変更
    # self._launch_server(server_args)
    # if not self._launch_pre_session():
    #     self.launch_desktop_session()
    display = self.get_unused_display_number()
    self.child_env["DISPLAY"] = ":%d" % display
  • ステップ3: CRD が作成する FIFO へ PipeWire 音声を転送

  • CRD セッション起動後、FIFO(命名例: /run/user/1000/crd_audio#XXXXX/fifo_output)が作成される
  • この FIFO に PipeWire の仮想 Sink をバインドする
  • 手動テスト用コマンド:
    pactl load-module module-pipe-sink file=/run/user/1000/crd_audio#*/fifo_output
     sink_name=chrome_remote_desktop_session
  • その後、以下で音声が確認できる:
    paplay --device=chrome_remote_desktop_session /usr/share/sounds/freedesktop/stereo/complete.oga
  • ステップ4: 仮想 Sink 自動検出・登録スクリプトの作成

    ~/.config/crd-audio/load-crd-sink.sh を作成:

    #!/bin/bash
    FIFO=$(ls -d /run/user/$(id -u)/crd_audio#*/fifo_output 2>/dev/null | head -n1)
    [ -n "$FIFO" ] && pactl load-module module-pipe-sink file="$FIFO"
     sink_name=chrome_remote_desktop_session
    

    権限付与:

    chmod +x ~/.config/crd-audio/load-crd-sink.sh

    ステップ5: systemd --user による仮想 Sink 自動起動

    ~/.config/systemd/user/crd-audio-sink.service を作成:

    [Unit]
    Description=Load CRD virtual audio sink
    After=default.target
    
    [Service]
    Type=oneshot
    ExecStart=%h/.config/crd-audio/load-crd-sink.sh
    
    [Install]
    WantedBy=default.target
    

    有効化と起動:

    systemctl --user daemon-reload
    systemctl --user enable --now crd-audio-sink.service

    ステップ6: 動作確認と再起動後の永続性チェック

    • CRD で GNOME 同一セッションが表示されること
    • 接続後に FIFO が自動検出され仮想 Sink が登録されていること
    • 音声出力が chrome_remote_desktop_session へ流れていること(例:YouTube 再生)
    • 再起動後も自動的に音声が出力されること

    構成図(概要)

    [ PipeWire Audio Apps ]
            │
            ▼
    [module-pipe-sink]  →  /run/user/1000/crd_audio#/fifo_output  → CRD → Remote Client
    

    補足事項

    • PipeWire 1.0.5 で動作確認
    • CRD 公式は仮想セッションを想定しているため、同一セッション構成は非公式改変

    まとめ

    この手順により、Ubuntu 24.04 における Chrome Remote Desktop で「同一セッション + 音声対応」を安定構築できます。 PipeWire を活かし、仮想 Sink → FIFO 経由で CRD に音声を転送します。systemd --user による自動化も含め、完全自動構成を実現しています。