UbuntuでFibocom L860-GLを使えるようにする
Posted At:
最近のラップトップではLTEモジュールを搭載しているものが多くなってきましたね。
最近ThinkPad X1 Yoga Gen5を買ったのですが、これに搭載されていたLTEモジュールが「Fibocom L860-GL」というものでした。
これをUbuntuで動かすために試行錯誤した結果なんとか使えるようになったのでメモとして残しておきます。
うまくいかなかったり壊れたりしても責任は一切取れませんのでそこはご了承ください。
動作確認環境
- PC: ThinkPad X1 Yoga Gen5
- OS: Ubuntu Desktop 20.10
- SIM: IIJmio タイプD
準備
Linuxカーネルモジュールをビルドする環境が必要なのでgccなどをインストールしておきます。
sudo apt-get install build-essential
lspciコマンドでPCにL860-GLがインストールされているか確認します。
lspci
Intel Corporation Device 7560 (rev 01)と書いてあれば大丈夫です。
諸々説明
L860-GLの前身(?)のL850-GLの動かし方は調べればそこそこ出てきますがL860-GLは全然出てきませんでした。
このL860-GLは、筐体にはM.2スロットにインストールされていますがこのモジュールはPCIeで動くモードとUSBで動くモードがあります。
PCIeはWindowsで使用する時に使われるらしくLinuxではUSBモードでしか動かせません。
(PCIeで動かそうとしている猛者もいるようですが私の環境では動きませんでした)
L860-GLをUSBモードにするにはBIOSでLTEモジュールのPCIeを無効にする必要があるらしいですがそんな設定は少なくともThinkPad X1 Yoga Gen5にはありませんでした。
なので、先述したLinuxカーネルモジュールでPCIeを無効化してUSBモードにする必要があるわけです。
ビルド
先人が作成したL850-GL用のカーネルモジュールをforkしてL860-GLで使えるようにしたものをGitHubに置いてあるのでそれをクローンします。
先人に感謝。
git clone https://github.com/mrtska/xmm7560_usb
これをビルドしてインストールします。
cd xmm7560_usb
make
sudo make install
Secure Bootが有効な環境なら適切にモジュールに署名を付ける必要があります。
カーネルモジュールをロードします。
sudo insmod xmm7560_usb.ko
しばらくするとUSBモデムが認識されるようになります。
lsusb | grep MODEM
ID 8087:095a Intel Corp. MODEM + 2 CDC-ACM + 3 CDC-NCM + SS
これでUSBモードにすることが出来ました。
LTEモジュールの設定
ここまではL850-GLのやり方と一緒ですが、設定方法がL860-GLは違いました。
L860-GLは起動時点では機内モードに設定されているのでまずはそれを解除してやる必要があります。
現在のモードが何かを確認するにはscreenコマンドで/dev/ttyACM0にコマンドを投入します。
screen /dev/ttyACM0
screen内で下記のコマンドを投入します。入力したコマンドは表示されないので間違えないで入力する必要があります。
AT+CFUN?
このように返ってきた場合は機内モードになっています。
+CFUN: 4,0
機内モードを解除するにはscreen内でAT+CFUN=1
と入力しますが+CFUN: 4,0
から変わりません。
L860-GLではFCC Lockという謎のロック機構があり、これを解除しないと機内モードから変更できないようです。
FCC Lockが現時点でどうなっているかを確認するには下記のコマンドを投入します。
at@nvm:fix_cat_fcclock.fcclock_mode?
2と返ってくればFCC Lockが有効になっている状態です。
0にすれば解除できるので0にします。
at@nvm:fix_cat_fcclock.fcclock_mode=0
0にした後にAT+CFUN=1
を実行すれば機内モードが解除されます。
後はUbuntu上でMobile Broadbandの設定をしてあげれば繋がるようになります。
私はIIJmioを使っているのでIIJmioのAPNを設定して接続すれば繋がりました。
Tag: Fibocom L860-GL