SmallStyle


2009-01-07

_ ThinkPad X41 での起動時の BIOS 2010 エラーのビープをどうにかする

先日,ThinkPad X41 の HDD を CF に換装して発生するようになった BIOS 2010 エラー.この表示そのものを回避することはできなさそうなので,せめてビープ音だけでもならないようにしたいということでその対策を調べてみた.

ThinkPad には音量調整のホットキーがあり,このキーのうちミュートキーを有効にしてシャットダウンすると,起動時のビープ音が発生しない.音量調整で単純にミュート状態にしてやれば,ビープ音がならないようになるのかなと,試してみると、どうもこれは効果がないっぽい.ThinkPad のホットキーによる操作がなんか特殊なのかなと,いろいろ調べてみると,どうやら IBM ThinkPad ACPI Extras Driver を利用すると,ホットキーの操作を実現できるようだ.

そんなわけで試しに以下を実行してみる.

$ sudo sh -c "echo mute > /proc/acpi/ibm/volume"

テスト用で何かしら音を出しておくと,コマンド実行後にミュート状態になることが確認できる.音を出したいときは,

$ sudo sh -c "echo up > /proc/acpi/ibm/volume"

とか.README を参照するとミュート状態を解除するには,up か down を指定しないとダメ.音量はレベルで指定もできるけどミュートの解除には使えないそうです.

そんなこんなで本題である BIOS エラーのビープ音についてですが,以下のようなスクリプトで起動,終了時に音量操作をするようにしてみました.正常に起動,終了する分にはこれで心臓に悪いビープ音からは解放されたみたいだ.

#!/bin/sh

ACPI_IBM_VOLUME=/proc/acpi/ibm/volume
MYNAME=acpi-ibm-volume
MYCONF=$MYNAME.conf

# default value
VOL_LEVEL=10
MUTE_MODE=off

[ -r $ACPI_IBM_VOLUME ] || exit 0

. /lib/lsb/init-functions

enable_mute() {
    cat $ACPI_IBM_VOLUME > /etc/$MYCONF
    echo mute > $ACPI_IBM_VOLUME
}

disable_mute() {
    if [ -r /etc/$MYCONF ];then
        VOL_LEVEL=`grep  level /etc/$MYCONF|awk '{print $2}'`
        MUTE_MODE=`grep  mute /etc/$MYCONF|awk '{print $2}'`
    fi
    if [ "$MUTE_MODE" = "on" ]; then
      exit 0
    fi
    echo down > $ACPI_IBM_VOLUME
    echo "level $VOL_LEVEL" > $ACPI_IBM_VOLUME
}

case "$1" in
    start)
        log_begin_msg "Setting ThinkPad Mute mode..."
        disable_mute
        log_end_msg 0
        exit 0
        ;;
    stop)
        log_begin_msg "Enable ThinkPad Mute mode..."
        enable_mute
        log_end_msg 0
        exit 0
        ;;
    *)
        echo "Usage: $0 {start|stop}" >&2
        ;;
esac

:

スクリプトはかなりやっつけなんでおかしなところがありそな感じ.ツッコミなりなんなりと…

本日のツッコミ(全7件) [ツッコミを入れる]
_ suomi (2010-01-10 12:41)

これ,Linux用のスクリプトなんですよね.<br><br>Windows xp用のスクリプトを書いていただけないでしょうか.スクリプトは書いたことが無く,ただの休止状態移行用のスクリプトも探したのですが見つかりませんでした.<br><br>今のところ,この手のツールを作った人はいないようです.<br><br>ぜひ!

_ hb (2010-01-11 02:00)

Windows環境から入れなおさないといけないのでちょっと対応は難しいです,ごめんなさい.<br><br>スクリプト自体は スタートアップ・シャットダウン時に ThinkPad の Driver をたたいているだけなので,Windows でも同じようにコマンドラインから呼び出す方法があれば,あとはグループポリシーとかで,スタートアップ・シャットダウンに処理をすることでできるような気はします.

_ suomi (2010-01-11 16:41)

ご迷惑をおかけしました.<br><br>気が向いたら,研究をお願いします.音量関係のACPIドライバーを検索してみると,Linux系のページしかありませんでした.(;_;)

_ suomi (2010-05-04 15:47)

Windows汎用でこんなプログラムを見つけました.<br><br>大変シンプルなものです.終了,サスペンド,休止状態,に入る時にミュートします.<br><br>auto-mute<br>http://www.karpolan.com/software/auto-mute/<br><br>パソコン起動時に大音量で起動音が鳴ることを防ぐ「Auto Mute」窓の杜 2010-01-28<br>http://www.forest.impress.co.jp/docs/review/20100128_345364.html<br><br>純正のhotkeyプログラムでミュートできると思い,ホットキーでミュートボタンを設定したときにレジストリーの変化を調べたのですが,わかりませんでした.<br><br>時間があるときに,Windows対応をしていただけることを切に願います.

_ ubuntu_beginner (2015-02-23 13:58)

私も最近x41をssdに換装しubuntuをいれて使用しているのですが、起動時のビープ音に悩まされていました。 <br>よろしければThinkPad ACPI Extras Driver の利用の仕方について詳しく教えていただけないでしょうか?

_ hb (2015-02-24 02:30)

残念ながらもう6年も前のことでよく覚えていません. <br> <br>また,今ではどうやら入手できなくなってしまったようですが,BIOSのバージョンを1.0へ下げることで,エラーを回避するということも当時はできました.

_ ubuntu_beginner (2015-02-24 14:28)

そうですか、ありがとうございました。 <br>


最近の日記