ThinkPad X240のLTEが圏外になるのを修正した話

Windows10
この記事は約12分で読めます。
この記事を書いたひと
にゃぁ㌠

主にDQX(ドラゴンクエスト10)で活動していました(過去形)。
ゲーム記事多めです。
コロコロとかわる「好きなこと」だけを書いています。
なにかありましたらツイッターまでお気軽にご連絡ください(๑>ڡ<๑)

にゃぁ㌠をフォローする

わたしの環境

わたしはThinkPad X240のm.2スロットにSierra WirelessのEM7345を増設、LTEアンテナケーブルは付いていなかったので汎用のものをテキトーに配置、IIJmioのデータSIMタイプDを挿して常用しているのですが、何かの拍子にインターネット接続なしになったり、しまいには圏外になったりするので、1日じっくりかけて調べ倒したので、不測の事態に備えて調査内容を書き記そうと思います。

以下内容について保証しません。ご参考まで。

正常に動作する環境

わたしの環境での唯一の正解、つまり正常に動作する環境は、windowsのAPN設定ファイルが目的のAPN(ここでは自作のAPNプロファイルprofile-IIJmio)のみになっている状態です。

確認方法としてはコマンドプロンプト(※1)かパワーシェル(※2) で確認コマンドを入力することになります。

※1 Win+R>cmdと入力>OK
※2 左下窓マークを右クリック>Windows PowerShell

netsh mbn show profiles

コマンドの結果としては、インターフェイス「Mobile」のProfileが表示されます。

※ Mobileという部分は、通常は携帯電話、あるいは携帯電話1、携帯電話2のような名前になっていると思います。この例では、コマンドとして入力しやすいように、書き換えています。
(コントロール パネル\ネットワークとインターネット\ネットワーク接続)

この状態のみ、継続的にLTE接続を維持し、設定沿って必要に応じた通信経路を選択してくれます。理想的。

問題が起きる原因

主な原因としては、Windows設定画面(※3)にあるAPN設定の
「+APNを追加します」
からAPN設定を追加すると、強制的にprofileの実体(設定ファイル)が作成されてしまうことにあると考えています。

※3 設定(Win+I)>ネットワークとインターネット>携帯電話>詳細オプション

何回もテストを重ねて行って再現性がある状態までなんとか達しましたが、100%かどうかもわかりませんので(  ̄ノ∇ ̄) ̄ー ̄)ヒソヒソでお願いします。、これ、Windowsの不具合かと思われます。

ダメになっているときは大体ここが「適用済み」になっていて、利用してくれない状態になります(目的のAPNが「アクティブ化済み」になっているのが正常な状態 )。また、「規定のAPN」が目的のAPNの上位に設定された状態でしかも削除不可になっています。

その場合、だいたいは、windowsの設定自体が訳の判らないことになっているので、一度リセットする必要があります。多分。その方が心に余裕ができます。

リセット方法

リセットする方法としては、ファイルを消すことになるのですが、takeownしてicaclsで削除するよりは、netshコマンドでの削除がオススメです。
具体的には、netsh mbn show profileで全てのプロファイル名を表示し、netsh mbn delete profileするという手順です。

(例)
PS > netsh mbn show profiles
インターフェイス Mobile のプロファイル:
-------------------------------------
    2EE2ABB4-5A4C-4496-90E9-B1AD1886814B
    480367B4-DC2A-41E6-8B0F-DBB1563F8451
    AA724EDE-C467-4C2E-9FF8-D389EA36CE72
    A498B718-76B1-4BB9-ADDE-39503E095701
PS > netsh mbn delete profile interface=mobile name="2EE2ABB4-5A4C-4496-90E9-B1AD1886814B"
PS > netsh mbn delete profile interface=mobile name="480367B4-DC2A-41E6-8B0F-DBB1563F8451"
PS > netsh mbn delete profile interface=mobile name="AA724EDE-C467-4C2E-9FF8-D389EA36CE72"
PS > netsh mbn delete profile interface=mobile name="A498B718-76B1-4BB9-ADDE-39503E095701"

設定項目の取得

削除が終わってサッパリしたところで、登録内容をprofile.xml的な名前でファイルを用意して、netsh mbn addコマンドでファイルをprofileとして登録します。(※標準の設定画面から登録すると、動作が不安定になるから)

で、そのまえにxmlに登録するための情報を取得します。情報は先ほども登場したWindows設定画面(※3) から取得出来ます。

コピーボタンを押すとctrl+cしたのと同じようにコピーされるので、メモ帳などにペーストしておきます。

必要な情報は、このペースとした内容のIMSISIM ICCIDです。

取得した内容は以下で作成するファイルの適切な場所に配置します。

<SubscriberID>(~~~~IMSIを貼り付ける~~~~)</SubscriberID>
<SimIccID>(~~~~SIM ICCIDを貼り付ける~~~~)</SimIccID>

具体的には上記の2カ所です。

(例)C:\work\profile.xml UTF-8(BOMなし)
<?xml version="1.0"?>
<MBNProfileExt xmlns="http://www.microsoft.com/networking/WWAN/profile/v4">
	<Name>{profile-IIJmio}</Name>
	<Description>IIJmio</Description>
	<IsDefault>true</IsDefault>
	<ProfileCreationType>UserProvisioned</ProfileCreationType>
	<SubscriberID>(~~~~IMSIを貼り付ける~~~~)</SubscriberID>
	<SimIccID>(~~~~SIM ICCIDを貼り付ける~~~~)</SimIccID>
	<HomeProviderName>NTT DOCOMO</HomeProviderName>
	<AutoConnectOnInternet>true</AutoConnectOnInternet>
	<ConnectionMode>auto-home</ConnectionMode>
	<Context>
		<AccessString>iijmio.jp</AccessString>
		<UserLogonCred>
			<UserName>mio@iij</UserName>
			<Password>iij</Password>
		</UserLogonCred>
		<Compression>DISABLE</Compression>
		<AuthProtocol>CHAP</AuthProtocol>
		<IPType>IPv4v6</IPType>
	</Context>
    <PurposeGroups>
        <PurposeGroupGuid>{3E5545D2-1137-4DC8-A198-33F1C657515F}</PurposeGroupGuid>
    </PurposeGroups>
	<ProfileConditionedOn>
		<IMSI>(~~~~IMSIを貼り付ける~~~~)</IMSI>
		<IwlanApplicability>CellularAndIwlan</IwlanApplicability>
	</ProfileConditionedOn>
	<IsExclusiveToOther>true</IsExclusiveToOther>
</MBNProfileExt>

※このxmlはマイクロソフトさんが定義しているMobile Broadband Profile Schema v4に対応したフォーマットに従って記述しています。詳しくはマイクロソフトのデベロッパーセンターで確認できます。ただし英語‪(*´꒳`∩)‬

name は、日本語を含め好きな名前を付けて問題ないです。お好みで。

IPType は、SIMの提供元の対応状況によります。IIJmioは2012年からIPv6も対応したと言うことなので、IPv4とIPv6両方のAddressを取得できるよう、IPv4v6を設定しています。

AutoConnectOnInternet は、Mobile Broadband Profile Schema v4で定義されているのに、わたしの環境ではキャンセル(なかったことに)されます。が、XML構文エラーにはならないので、一応残しておきます。

PurposeGroupGuid は、多分固定です。一応、netsh mbn show purposeコマンドで目的グループのGUIDが取得できるのですが、これ、今のところ変わることが無いので、多分固定です。

PS > netsh mbn show purpose
目的グループの GUID:
-------------------------------------
{3E5545D2-1137-4DC8-A198-33F1C657515F}
{53E2C5D3-D13C-4068-AA38-9C48FF2E55A8}
{474D66ED-0E4B-476B-A455-19BB1239ED13}
{6D42669F-52A9-408E-9493-1071DCC437BD}
{31A32D76-E07F-499D-8FA3-DDA73BA77057}

わたしの環境では5種類確認できますが、適当に一番上で。

APN設定の登録

netsh mbn add profile interface="Mobile" name="C:\work\mbn_profile.xml"

ちなみに、どこかの設定値がおかしいとか文字を間違えていると、エラーが出力されて登録されません。

うまく行けば登録すると即時反映して、接続を開始します。

Firmwareの書き換えは最終手段

通常、EM7345を増設したあとに、lenovo の system update ツールを起動すると、必要なドライバをダウンロードしてくれるのですが、 そのパッケージに「Intel MBIM Firmware Updater」というプログラムが同梱されていて、適用後は、自動的に起動し、Firmwareの更新を監視して、アップデートを検出すると自動更新してくれる訳なのですが。

わたしの環境では、通信カード Sierra Wireless EM7345 の Firmware がver1.1(古い状態)のまま更新されないということがありました。

で、どうしたかというと、英語のフォーラムを読み漁って、
「Intel MBIM Firmware Updater」 のFirmwareファイルの作り方を調べてFirmwareを書き換えてリセットしました。(ここでは作り方は割愛します)

追記

ファームウェアを更新(上書き)する際、自動でできてしまうAPN設定があります。

これがいわゆる「規定のAPN」の正体です。
中を見てみるとProfileCreationType が DeviceProvisioned なので、SIMに設定されている情報から作成されていると思われ、参考になります。

もし認識されたとしても、APNを設定画面(※3)から作ろうとさえしなければ、netsh mbn show profilesでは認識できるけれど、実体は作られない(と考えている)ので、実体として存在するAPNに接続しに行く、結果、意図した接続経路設定に接続される、というような風に見えます。

(その後安定動作する頃には、show profile にも出てこなくなります)

(sleepから復帰後、しばらく show profile に出てきますが、実体は生成されません。というかされないで欲しい。)

このファイルの実体が作成されてしまった場合、ファイルの実体は C:\ProgramData\Microsoft\WwanSvc\Profiles に作成されます。

厄介なことに、ファイルの所有者が TrustedInstaller になっていて書き換えが出来ません。
ファームウェアを更新する度に新しい name で登録しようとするらしく、netsh mbn delete profile で削除せずに更新すると、前回作成されてしまったファイルは、コマンドからは対象として認識できないが消せもしないファイルとして残ってしまいます。
その場合、takeownして、icaclsでファイルを削除するしかなくなります。非常に面倒で不愉快になります(笑)

なので、最終手段としてFirmwareを書き換えた場合は、リセット方法の項目で示した手段で綺麗に掃除してあげて下さい。

その後

(2019/02/20追記)

その後、安定した接続が出来る様になってくると、profileの実体が出来ててしまっても、安定接続できるようになりました。謎。

ただし、アンテナは立っているのに圏外になるときが有り、この場合、モバイル接続のプロパティから、IPv4とIPv6のIP取得をDHCP自動に戻してあげて、ipconfig /renewすることで再接続してくれるようになりました。急がないならrenewしなくても、放っておけば接続しに行ってくれます。わりと早いタイミングで‪(*´꒳`∩)‬

ご参考まで。

(2019-04-04追記)

Windows10にBuild 18865を適用した際に、指紋センサーとLTEがお亡くなりになったのですが、どちらもドライバの再インストールからの電源再起動で復活しました。

Sierra ワイヤレス EM7345 ソフトウェア (Windows 10 32bit, 64bit/ 8.1 32bit, 64bit) - ThinkPad - JP
Validity 指紋認証ドライバー (Windows 10 32bit, 64bit) - デスクトップ, ノートブック, ワークステーション - JP
Validity 指紋認証ドライバー (Windows 10 32bit, 64bit) - デスクトッ&#1...

タイトルとURLをコピーしました