パペロのボリュームスイッチは
- 右に倒すとボリュームアップ
- 左に倒すとボリュームダウン
- まっすぐ押し込むと消音
- 再度押し込むと消音解除
という動作ですが、消音についてエンドユーザは気がつかないことが多く、気づかずに消音にしてしまい「パペロから音が出なくなった」というクレームになりがちです。消音状態は電源を切っても保持されるので、ユーザは消音動作について知るまで「パペロが使えない」状況が続くことになります。
色々な考え方があるとは思いますが、いっそのこと「消音状態は電源を切ると解除される」という動作に変更して出荷するというのも一つの方法だと思われますので、その設定方法をご紹介します。
ボリューム情報保持ファイル
パペロのボリューム情報を保持しているファイルは
/Extension/robot_platform/conf/VolumeLevel.conf
です。中身は
volumeLevel=10
mute=0
という様なテキストファイルです。”mute=0″が音が出る状態で”mute=1″が消音状態です。したがって起動時に”mute=1″なら”mute=0″に書き換えればよいことになります。
ファイルを書き換えるコマンド
”mute=1″を”mute=0″に書き換えるには、sedを使って、
sed -i 's/mute=1/mute=0/' /Extension/robot_platform/conf/VolumeLevel.conf
でできます。sedはオプション無指定のときは結果を標準出力に出力しますが、-iオプションでファイルを直接書き換えます。
“mute=1″の時だけ書き換えるには、
if grep "mute=1" /Extension/robot_platform/conf/VolumeLevel.conf ; then
sed -i 's/mute=1/mute=0/' /Extension/robot_platform/conf/VolumeLevel.conf
fi
とすればよいでしょう。
起動スクリプト
パペロの音声関係のプロセスは
/Extension/script/S98-*
のスクリプトで起動されるようですので、その前に実行される様に、
/Extension/script/S97-pre-sound-ctrl
というファイルを作成して処理を記述します。あまり意味はありませんが一応作法にのっとって、以下の様な内容としました。
#!/bin/sh
export PATH=/usr/bin:/bin:/usr/sbin:/sbin
VL_CONF=/Extension/robot_platform/conf/VolumeLevel.conf
start() {
if [ -w $VL_CONF ] ; then
if grep "mute=1" $VL_CONF ; then
sed -i 's/mute=1/mute=0/' $VL_CONF
fi
fi
}
stop() {
echo do nothing
}
restart() {
stop
start
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
*)
echo "usage: $0 { start | stop | restart }" >&2
exit 1
;;
esac
exit 0
シンボリックリンク時の注意
VolumeLevel.confは実体を/tinyに移してシンボリックリンクにする方が良い場合が多いと思われますが、その状態で上記スクリプトを実行すると、シンボリックリンクが削除されて実ファイルになってしまいます(通常のlinuxディストリビューションのsedであれば–follow-symlinksオプションでこの動作を変更できますが、PaPeRo i のbusyboxのsedにはこのオプションはありません)。したがって、その様な場合には/Extension/script/S97-pre-sound-ctrlの
VL_CONF=/Extension/robot_platform/conf/VolumeLevel.conf
の行を
VL_CONF=/tiny/hot/VolumeLevel.conf
という様に実体のファイル名に変更してください。