[メモ] ラズパイ/TinkerBoard: xrdp(リモートデスクトップ)を使う。音も鳴らそう!


概要

Raspbianが、Stretch(Debian 9)ベースになり、パッケージレポジトリのxrdpは 0.9.1ベースになりました。
それによって、テキストのコピペなど簡単にできるようになりましたね。しかも、apt install xrdpするだけ。

それだけの説明だと、つまらないので、pulseaudio(デフォルトパッケージから外されましたが..)を使った、リモート経由で音も聞けるようにビルドしたファイルを用意したので、それの使い方も書きます。

#(追記:2017-8-25) TinkerBoardでも同じファイルを使って、できました。手順の2.と3.を参考に。

環境

  • Raspberry Pi: 2 model B
  • Raspbian: 2017-08-16-raspbian-stretch
  • Windows 7 (64bit)の Remote Desktop Connection/リモートデスクトップ接続を使用。

手順

  1. 初期設定

    • RaspbianイメージをmicroSDに焼く。(おすすめツール Etcher)
    • sshを使う場合、bootパーティションに、sshというファイル名で空ファイル作成。
    • 起動。
    • ターミナル起動
    • パッケージ更新・再起動:
      sudo apt update && sudo apt upgrade -y && sudo reboot
    • その他設定(お好みで。または設定終了後、リモートデスクトップ上から)
      • キーボードの設定
        メニュー > 設定 > キーボードとマウス
      • タイムゾーン
        sudo dpkg-reconfigure tzdata
      • 日本語関係(フォント,入力)
        sudo apt install -y fonts-ipafont fonts-ipaexfont fonts-takao ibus-mozc
      • ロケール
        sudo dpkg-reconfigure locales # ja_JP.UTF-8にする
      • ユーザパスワード変更: passwd
      • 再起動
      • Mozc入力設定(101キーボードなど)
        メニュー>設定 > Mozcの設定
        キー設定の選択 > [編集] を押したら、入力キーをクリックして、ソート。
        Hankaku/ZenkakuCtrl+Spaceとかに変更する
  2. xrdp関連のパッケージインストール

    sudo apt install -y xorgxrdp xrdp 
    
  3. (お好みで)pulseaudio経由で、リモートで音も鳴らす場合は、コレもする。

    • xrdpを終了させるので、リモートデスクトップ上で実行しないこと。 (sshなどでログインして行おう)
    ## Pulseaudioをインストール
    sudo apt install pulseaudio --install-suggests -y
    # 設定書き換え
    # /etc/pulse/default.pa の最後に2行追加 module-xrdp-sink.soとmodule-xrdp-source.so
    grep module-xrdp-sink.so /etc/pulse/default.pa || sudo sed -i -e '$amodule-xrdp-sink.so' /etc/pulse/default.pa
    grep module-xrdp-source.so /etc/pulse/default.pa ||sudo sed -i -e '$amodule-xrdp-source.so' /etc/pulse/default.pa
    # start-pulseaudio-x11 を自動起動させる
    ## For RPi
    f=~/.config/lxsession/LXDE-pi/autostart ; if [ -e $f ]; then grep 'start-pulseaudio-x11' $f > /dev/null  || sed -i -e '$a@start-pulseaudio-x11' $f; fi
    ## For Tinker Board
    f=~/.config/lxsession/LXDE/autostart ; if [ -e $f ]; then grep 'start-pulseaudio-x11' $f  > /dev/null || sed -i -e '$a@start-pulseaudio-x11' $f; fi
    
    ## pulseaudioに対応したファイルをダウンロード
    wget https://github.com/mt08xx/files/raw/master/xrdp-audio_armhf-20170821-1.tbz
    tar xf xrdp-audio_armhf-20170821-1.tbz
    cd xrdp-audio_armhf/
    #ファイル確認
    ls -l
    # モジュールをコピー
    sudo cp -v *.so /usr/lib/pulse-10.0/modules/
    # ここのxrdpをインストール
    # sudo dpkg -i ./xrdp_0.9.1-9_armhf.deb
    
    # サービス・プロセス停止
    sudo systemctl stop xrdp xrdp-sesman
    sudo killall -9 xrdp-chansrv
    sudo killall -9 xrdp-sesman
    sudo killall -9 xrdp-sessvc
    
    # debからファイルを抽出して、上書きコピー
    dpkg -x xrdp_0.9.1-9_armhf.deb ./ext
    sudo cp -r ext/usr/{lib,bin,sbin} /usr
    rm -rfv ./ext
    
    # 再起動
    sync && sleep 5 && sudo reboot
    
  4. Windowsでリモートデスクトップ接続を起動

    • オプションを表示させると
    • いろいろ設定できる。Displayのとこで画面サイズとか指定できる。接続ボタンをおす
    • なんか聞かれたら、接続とか、OKとか押せばいいかと...(ぉぃ
    • こんなのがでてきたら、SessionでXorg、username、passwordを入れて、[OK]をおして、
    • ログイン

おまけ

  • 再起動後、ターミナルを開いて、音を再生。
    aplay /usr/share/sounds/alsa/Front_Center.wav
    鳴ったかな?
  • Chromium開いて、Youtubeとか、見てみよう。

  • xrdp-audio_armhf-20170821-1.tbz の中身

    配布ファイル
    pi@raspberrypi:~/xrdp-audio_armhf $ ls -l
    total 432
    -rwxr-xr-x 1 pi pi  23952 Aug 21 20:03 module-xrdp-sink.so
    -rwxr-xr-x 1 pi pi  19496 Aug 21 20:03 module-xrdp-source.so
    -rw-r--r-- 1 pi pi 393574 Aug 21 20:04 xrdp_0.9.1-9_armhf.deb
    pi@raspberrypi:~/xrdp-audio_armhf $ 
    

ビルドメモ

  • Debianのソースからビルドを使用
  • xrdpのビルドのconfigureのオプションに--enable-mp3lame--enable-pixmanを追加。
  • pulseaudioのconfigure間で実行させて、config.hを生成したら、CTRL-Cして、module-xrdp-{sink,source}.so をビルド。
  • 手順

    # ソース取得できるように設定
    # /etc/apt/sources.list の #deb-src の#をはずして、apt update
    sudo bash -c "sed  -i -e 's/#deb-src/deb-src/' /etc/apt/sources.list && apt update"
    
    # ワークフォルダ
    mkdir ~/work && cd ~/work
    
    #xrdp のビルドに必要なパッケージ取得
    sudo apt-get build-dep -y xrdp  pulseaudio && sudo apt install -y libmp3lame-dev
    
    # ソース取得
    apt-get source xrdp pulseaudio
    
    #xrdp
    ### xrdpのソースフォルダへ移動
    cd xrdp-0.9.1
    # debian/rules を編集 : --enable-mp3lame --enable-pixman を configureに追加
    sed -i -e 's@--enable-ipv6 \\@--enable-ipv6 --enable-mp3lame --enable-pixman \\@' debian/rules
    # xrdpビルド開始
    dpkg-buildpackage -us -uc
    # => workに xrdp_0.9.1-9_armhf.deb ができる
    
    #module-xrdp-sink.so とmodule-xrdp-source.soのビルド
    ### pulseaudio の config.h
    cd ~/work/pulseaudio-10.0
    # ビルドを開始させる。。が、configureが終わった(config.hが生成された)くらいで、CTRL-Cを押す。
    dpkg-buildpackage -us -uc
    
    ## モジュールのビルド
    cd ~/work/xrdp-0.9.1/sesman/chansrv/pulse/
    #変更前:PULSE_DIR = /home/lk/pulseaudio-1.1
    #変更後:PULSE_DIR = /home/pi/work/pulseaudio-10.0
    sed -i -e 's@/home/lk/pulseaudio-1.1@/home/pi/work/pulseaudio-10.0@g'  Makefile
    make
    # 生成物をworkにコピー
    cp -v *.so ~/work
    

xrdpインストールログ

  • メモ

    インストールログ
    pi@raspberrypi:~ $ sudo apt install -y xrdp xorgxrdp
    Reading package lists... Done
    Building dependency tree       
    Reading state information... Done
    The following additional packages will be installed:
      ssl-cert x11-apps x11-session-utils xbitmaps xfonts-75dpi xfonts-base xfonts-scalable xorg
      xorg-docs-core
    Suggested packages:
      openssl-blacklist xorg-docs x11-xfs-utils guacamole
    The following NEW packages will be installed:
      ssl-cert x11-apps x11-session-utils xbitmaps xfonts-75dpi xfonts-base xfonts-scalable xorg
      xorg-docs-core xorgxrdp xrdp
    0 upgraded, 11 newly installed, 0 to remove and 0 not upgraded.
    Need to get 10.8 MB of archives.
    After this operation, 17.1 MB of additional disk space will be used.
    Get:1 http://mirrordirector.raspbian.org/raspbian stretch/main armhf ssl-cert all 1.0.39 [20.8 kB]
    Get:2 http://mirrordirector.raspbian.org/raspbian stretch/main armhf x11-apps armhf 7.7+6 [544 kB]
    Get:3 http://mirrordirector.raspbian.org/raspbian stretch/main armhf x11-session-utils armhf 7.7+2 [61.4 kB]
    Get:4 http://mirrordirector.raspbian.org/raspbian stretch/main armhf xbitmaps all 1.1.1-2 [32.1 kB]
    Get:5 http://mirrordirector.raspbian.org/raspbian stretch/main armhf xfonts-75dpi all 1:1.0.4+nmu1 [3,367 kB]
    Get:6 http://mirrordirector.raspbian.org/raspbian stretch/main armhf xfonts-base all 1:1.0.4+nmu1 [5,911 kB]
    Get:7 http://mirrordirector.raspbian.org/raspbian stretch/main armhf xfonts-scalable all 1:1.0.3-1.1 [304 kB]
    Get:8 http://mirrordirector.raspbian.org/raspbian stretch/main armhf xorg-docs-core all 1:1.7.1-1 [83.8 kB]
    Get:9 http://mirrordirector.raspbian.org/raspbian stretch/main armhf xorg armhf 1:7.7+19 [38.4 kB]         
    Get:10 http://mirrordirector.raspbian.org/raspbian stretch/main armhf xorgxrdp armhf 0.9.1-9 [73.1 kB]     
    Get:11 http://mirrordirector.raspbian.org/raspbian stretch/main armhf xrdp armhf 0.9.1-9 [402 kB]         
    Fetched 10.8 MB in 17s (606 kB/s)                                                                         
    Preconfiguring packages ...
    Selecting previously unselected package ssl-cert.
    (Reading database ... 122654 files and directories currently installed.)
    Preparing to unpack .../00-ssl-cert_1.0.39_all.deb ...
    Unpacking ssl-cert (1.0.39) ...
    Selecting previously unselected package x11-apps.
    Preparing to unpack .../01-x11-apps_7.7+6_armhf.deb ...
    Unpacking x11-apps (7.7+6) ...
    Selecting previously unselected package x11-session-utils.
    Preparing to unpack .../02-x11-session-utils_7.7+2_armhf.deb ...
    Unpacking x11-session-utils (7.7+2) ...
    Selecting previously unselected package xbitmaps.
    Preparing to unpack .../03-xbitmaps_1.1.1-2_all.deb ...
    Unpacking xbitmaps (1.1.1-2) ...
    Selecting previously unselected package xfonts-75dpi.
    Preparing to unpack .../04-xfonts-75dpi_1%3a1.0.4+nmu1_all.deb ...
    Unpacking xfonts-75dpi (1:1.0.4+nmu1) ...
    Selecting previously unselected package xfonts-base.
    Preparing to unpack .../05-xfonts-base_1%3a1.0.4+nmu1_all.deb ...
    Unpacking xfonts-base (1:1.0.4+nmu1) ...
    Selecting previously unselected package xfonts-scalable.
    Preparing to unpack .../06-xfonts-scalable_1%3a1.0.3-1.1_all.deb ...
    Unpacking xfonts-scalable (1:1.0.3-1.1) ...
    Selecting previously unselected package xorg-docs-core.
    Preparing to unpack .../07-xorg-docs-core_1%3a1.7.1-1_all.deb ...
    Unpacking xorg-docs-core (1:1.7.1-1) ...
    Selecting previously unselected package xorg.
    Preparing to unpack .../08-xorg_1%3a7.7+19_armhf.deb ...
    Unpacking xorg (1:7.7+19) ...
    Selecting previously unselected package xorgxrdp.
    Preparing to unpack .../09-xorgxrdp_0.9.1-9_armhf.deb ...
    Unpacking xorgxrdp (0.9.1-9) ...
    Selecting previously unselected package xrdp.
    Preparing to unpack .../10-xrdp_0.9.1-9_armhf.deb ...
    Unpacking xrdp (0.9.1-9) ...
    Setting up x11-session-utils (7.7+2) ...
    Setting up xbitmaps (1.1.1-2) ...
    Setting up ssl-cert (1.0.39) ...
    Setting up xfonts-75dpi (1:1.0.4+nmu1) ...
    Processing triggers for libc-bin (2.24-11+deb9u1) ...
    Setting up xrdp (0.9.1-9) ...
    
    Generating 2048 bit rsa key...
    
    ssl_gen_key_xrdp1 ok
    
    saving to /etc/xrdp/rsakeys.ini
    
    Created symlink /etc/systemd/system/multi-user.target.wants/xrdp-sesman.service → /lib/systemd/system/xrdp-sesman.service.
    Created symlink /etc/systemd/system/multi-user.target.wants/xrdp.service → /lib/systemd/system/xrdp.service.
    Processing triggers for systemd (232-25+deb9u1) ...
    Processing triggers for man-db (2.7.6.1-2) ...
    Setting up x11-apps (7.7+6) ...
    Setting up xfonts-scalable (1:1.0.3-1.1) ...
    Setting up xorgxrdp (0.9.1-9) ...
    Setting up xorg-docs-core (1:1.7.1-1) ...
    Setting up xfonts-base (1:1.0.4+nmu1) ...
    Processing triggers for fontconfig (2.11.0-6.7) ...
    Setting up xorg (1:7.7+19) ...
    Processing triggers for libc-bin (2.24-11+deb9u1) ...
    pi@raspberrypi:~ $
    

...

  • # (追記)Youtubeを、しばらく見てると、音が止まってしまう模様... う~ん..
    =>(2017-8-23) ネットワークの品質の問題だった? 様子見
  • # sudo apt update すると、公式のxrdpにアップグレードできる(=元に戻される)、、、とでてくる。うまい方法を考えますて教えてください..
    =>(2017-8-23) しょうがないので、debからファイルを抽出し、上書きするように記事を変更

    pi@raspberrypi:~/xrdp-audio_armhf $ sudo apt update
    ヒット:1 http://archive.raspbian.org/raspbian stretch InRelease
    ヒット:2 http://mirrordirector.raspbian.org/raspbian stretch InRelease
    ヒット:3 http://archive.raspberrypi.org/debian stretch InRelease
    パッケージリストを読み込んでいます... 完了
    依存関係ツリーを作成しています
    状態情報を読み取っています... 完了
    アップグレードできるパッケージが 1 個あります。表示するには 'apt list --upgradable' を実行してください。
    pi@raspberrypi:~/xrdp-audio_armhf $ apt list --upgradable -a
    一覧表示... 完了
    xrdp/stable 0.9.1-9 armhf [0.9.1-9 からアップグレード可]
    xrdp/now 0.9.1-9 armhf [インストール済み、0.9.1-9 にアップグレード可]
    pi@raspberrypi:~/xrdp-audio_armhf $
    
  • (追記) Debianのソースからビルドする手順を書きました。やってることは、debian/rulesを変更して、xrdpのビルドのconfigureのオプションに--enable-mp3lame--enable-pixmanを追加するだけです。

...

  • [2017-8-22 8:34am(JST)頃] 1000 contribution 達成 :-)