はじめに
Raspberry PiからWindows8 Proのマシンにxfreerdpを使ってリモートデスクトップで接続しているのだけど、うまくいかないところがあって使いづらくて気持ち悪かったので最新版をRaspberry Pi実機でコンパイルしてみましたよって話。
使いづらくて
Rasbian(wheezy)にインストールされているxfreerdpを使い始めて、以下の3点で使いづらさを感じていた。
- 日本語キーボードがうまく認識されない点
- フォントのスムージングができていない点
- 音の再生がうまく実装できていない点
日本語キーボードがうまく認識されない点
ローカルでWindows8にログインして、そのセッションを使用するとキーボードがある程度うまくいくのだけれど、ログインしていない状態でリモートから接続すると英語キーボードのままになってしまって、配列が変わるし、日本語変換できなくなるし、非常に効率が悪かった。
フォントのスムージングができていない点
また、フォントのスムージングについても設定ができなかったので、気持ち悪かった。
音の再生がうまく実装できていない点
音についても倍速再生みたいな面白い感じになってしまってとても聞けたものではなかった。
ALSA lib pcm.c:7339:(snd_pcm_recover) underrun occurred
というエラーが出た、どうやらalsaのキャシュが追いつかなくなって再生位置が狂うようだ。
ちなみに音のハードウエアの状況を確認すると以下のようになっていた。
$ cat /proc/asound/card0/pcm0p/sub0/hw_params access: RW_INTERLEAVED format: S16_LE subformat: STD channels: 1 rate: 44100 (44100/1) period_size: 512 buffer_size: 32768
ステレオなはずだけど。。。なんだろう?
上記のような理由で、Raspberry Piからのリモートデスクトップを効率よく使用できる環境にしたい、Raspberry Piがいわゆるシンクライアントにならないかなぁと考えて、最新版をgithubよりcloneしコンパイルし、最新版を使用してみることにした。
新しいのにしちゃえ
コンパイル
詳しくは
https://github.com/FreeRDP/FreeRDP/wiki/Compilation
を参照してほしい
ソースの取得
$ git clone git://github.com/FreeRDP/FreeRDP.git
$ cd FreeRDP
debianでの必要なパッケージの取得
$ sudo apt-get install build-essential git-core cmake libssl-dev libx11-dev libxext-dev libxinerama-dev \ libxcursor-dev libxdamage-dev libxv-dev libxkbfile-dev libasound2-dev libcups2-dev libxml2 libxml2-dev \ libxrandr-dev libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev
最新版をコンパイルするためにさらに必要なパッケージの取得
$ sudo apt-get install libavutil-dev libavcodec-dev
Makefileの作成
Raspberry Piの実機でコンパイルするのだが、前に設定したdistccによる分散コンパイルをする
$ CC=distcc cmake -DCMAKE_BUILD_TYPE=Debug -DWITH_SSE2=OFF -DWITH_NEON=OFF
distccで使用するサーバを環境変数に設定
$ export DISTCC_HOSTS="localhost 192.168.11.7 192.168.11.6"
make
$ CC=distcc make -j4
make install
なお、debianのパッケージでxfreerdpをすでにインストールしている場合は、予め削除しておく。
$ sudo make install
確認
コンパイルし、インストールできたので確認をする
どうやら、以前のバージョンとは引数が変わったようだ。
以前は
$ xfreerdp -k 0x00000411 -g 1600x1024 -u ユーザ名 -x l -z --disable-wallpaper --disable-full-window-drag --disable-menu-animations --disable-theming --gdi hw --plugin rdpsnd --data alsa -- --plugin drdynvc --data tsmf:decoder:ffmpeg -- --plugin cliprdr サーバのIPアドレス
としていたが、
$ xfreerdp /u:ユーザ名 /size:1600x1024 /v:サーバのIPアドレス -themes -wallpaper /gdi:hw +clipboard +fonts /sound:sys:alsa /multimedia:decoder:gstreamer
のように変わった
日本語キーボードの認識については、セッションが張られていない状態でもうまく認識できるようになった。
半角/全角キーを押すとIMEが普通に反応する。
fontのスムージングについては、+fontsオプションを付与することでスムージングが音になり、見やすさが格段に上がった。
汚くなくて、心地が良い。これほど、スムージングが影響するのかと思ったぐらい。
音であるが、、、githubのissueリストを覗くと対応はされているようだが、完全ではないようだ。
前に比べるとほんの少し安定したように思えたが、
ALSA lib pcm.c:7339:(snd_pcm_recover) underrun occurred
というエラーが出るし、聴くに耐えない感じだ。
改善された?
- 改善された点
- 日本語キーボードはうまく認識された
- フォントのスムージングができた
上記2点が改善されたのでRaspberry PiをThin Clientとして普通に使えるようになった。
- 改善されなかった点
- 音の再生がうまく実装できていない点
Raspberry PiでFlashは稼働させるのが無理なので、Music Unlimitedが聞きたかったところだが、代替の音楽は音楽サーバに上がっており、Raspberry Piから直セスアクセスできて、ローカルで再生できるので我慢できる。