Ubuntu 24.04で、LN940搭載機種のモバイルネットワーク通信を行なうには
最近、LN940モバイルネットワークカードを搭載したノートPCを入手し、それにより外でもネットワークが利用出来るようになった。
WindowsではAPN設定程度で通信可能になったが、Ubuntuでの接続はやや梃摺ったのでその方法を纏めた。
基本的には、次のサイトの内容を参考にさせていただいた。このサイト様ではATコマンドを使用した設定方法も紹介されているが、ATコマンドによる設定は機能しなかった。電波は拾うのだが、インターネットに接続できない。
https://pg-mana.net/blog/mousepro-lte/
上記のサイトで詳しく解説されているので詳細は省くが、以下のコマンドを起動時、スリープ復帰時にそれぞれ毎回実行するようにudevやsystemdを設定し、APN設定を済ませればよい。
sudo usb_modeswitch -v 1bc7 -p 1900 -u 1
上記サイトで紹介されている方法だけでも十分機能するのだが、スリープから復帰した際にモバイルネットワークに繋がらなくなってしまう。
どうもスリープ復帰後に上手く再接続のためのコマンドをモデムに送れていないようで、モデムが存在しない扱いになってしまっているようであった。
本解説では、ここからスリープ復帰後でも正常に再接続出来るようにしていく。
コマンドを上手く送れず誤作動しているとなれば、デバイスをリセットしてしまえば何より手っ取り早い。
幸いにもLN940モデムはm.2接続ながら内部的にはUSB接続なようなので、usbresetコマンド一つでリセット可能だ。
以下のコマンドを実行すれば、デバイスをリセット出来る。
usbreset 1bc7:1900
これをスリープ復帰時に毎回手動で実行するのは面倒なので、スリープ復帰時に自動で実行されるようにする。
/usr/lib/systemd/system-sleep/下に、以下の内容でシェルスクリプトを作成し配置する。実行権限を与えておくのを忘れずに。
#!/bin/bash
case "$1" in
pre)
:
;;
post)
/usr/bin/usbreset 1bc7:1900
;;
esac
exit 0
/usr/lib/systemd/system-sleep/下に置いたスクリプトは、それぞれスリープ時とスリープ復帰時に起動される。ではスリープなのか復帰なのかをどう判断するのかと言うと、シェルスクリプトにそれぞれpreとpostといった引数が渡されるので、それを基に判断するのだ。
このシェルスクリプトでは、スリープ時(pre)では「:」を実行、つまり何もせず、スリープ復帰時(post)にはモバイルネットワークカードをリセットしている。
これで、スリープ復帰後もモバイルネットワークに接続出来るようになった。スリープ復帰後、数十秒〜1分程度でモバイルネットワークに再接続されるはずだ。
おまけ : SMSを送受信する
モバイルデータ通信だけでなく、ちゃんと電話番号も発行されているSIMであれば、ショートメールの送受信も行なえる。二段階認証のコードの受信などが、携帯電話を使わず完結するため便利だ。
自分の環境では、chattyにてショートメールを送受信出来た。
chattyは次のコマンドまたは、アプリストアでインストールできる。
sudo apt install chatty
後は、アプリを起動すれば、もう既にショートメールの送受信が可能な状態になっている。
左上の+を押し、「New Message」から電話番号を入力して送信するか、挿入したSIMの電話番号にSMSを送ると、送受信できているのが確認できるはずだ。
尚、音声通話も試したが、音声通話を試みるとモバイルネットワークごと切断され通話できず、usbresetコマンドでデバイスをリセットするまでモデムが使用出来なくなってしまう。どうやら音声通話は不能なようだ。