ウルトラベースX4とネットワークの問題

Thinkpad X40用にウルトラベースX4を導入した。頻繁に持ち運ぶので、配線を付けたり外したりする手間が減るかと期待したのだが、刺しっぱなしのLANケーブルが原因でAccess Connectionsのプロファイル設定が上手くいかなくなる現象が発生した。解決策をメモしておく

筆者の環境の場合、家の中では基本的には無線LANを使用している。LANケーブルで接続していると、家の中を移動するときに一々接続を切り換えなければいけないからだ。Webブラウザやメーラーはともかく、SSHやメッセンジャー、IRCなどの接続が切れると再接続が面倒なので、ウルトラベースにドッキングした場合でも、基本的には無線を使用し、必要なときにだけ(大容量のファイルをファイルサーバに転送するときなど)有線を使用したい。

問題はドッキング済みの状態でX40を再起動すると発生する。システムを再起動すると有線のネットワークインターフェースが有効になり(再起動前は無効になっていたのに!)、Access Connectionsが無線のプロファイルを適応する前に、有線LANが確立してしまうのだ。筆者の環境の場合、DHCPサーバを無線、優先どちらのMACアドレスでも同じIPを振るように設定してあるため、先に有線の接続が確立してしまうと、無線の接続に失敗してしまう。もっとも簡単な方法だと、LANケーブルを抜いておけば解決するのだが、背面に接続されているLANケーブルを頻繁に抜き差しするのは煩わしい。

解決策として、Windowsが再起動してAccess Connectionsが無線のプロファイルを適応する前に有線LANのインターフェースを無効化する方法を考えた。幸い、Access Connectionsはプロファイルの適応前に自動で実行するアプリケーションの指定が出来るので、デバイスの無効化が可能なアプリケーションさえ存在すれば問題は解決する。

デバイスの無効化はMicrosoftが無料で公開しているDevConというコマンドラインツールで行うことが出来る。パッケージをダウンロードして展開すると、devcon.exeという実行ファイルが入っている。このファイルをパスが通っている適当な場所(C:\windows\system32など)にコピーする。デバイスの無効化に当たり、有線LANのネットワークインターフェースのインスタンスIDを特定する必要があるので、コマンドプロンプトを起動し、以下のコマンドで検索する。

>devcon find PCI*

いくつか候補が出るので、「Intel(R) PRO/1000 MT Mobile Connection」と書かれた行を探し、コロンより左側の部分(PCI\VEN_xxxx&DEV_xxx&SUBSYS_xxx&REV_xx\x&xxxxxx&x&x)をコピーする。これがインスタンスIDとなるので、このIDを用いてデバイスの無効化を行う。

>devcon disable "@PCI\VEN_xxxx&DEV_xxx&SUBSYS_xxx&REV_xx\x&xxxxxx&x&x"

デバイスマネージャかネットワークの設定でデバイスが正常に無効化されたのを確認したら、適当なテキストエディタを立ち上げて、このコマンドをペーストする。Access Connectionsは.exeファイルか.batもしくは.cmdファイルしか実行してくれないので、コマンドを.batファイルとして保存する必要があるのだ。「disable_eth.bat」など適当な名前を付けてどこかに保存したら、Access Connectionsを開きプロファイルの編集画面を出す。「追加設定」タブの「アプリケーションの自動実行」を開くと「特殊設定」という項目があるので選択する。この特殊設定内に登録したアプリケーションはプロファイル適応の前に実行されるので、ここに先ほど保存した.batファイルを登録すれば自動的にインターフェースが無効化されるようになる。

以上の設定で再起動後でも確実に無線LANに接続されるようになった。