USB 3G モデム

提供: ArchWiki
2020年12月31日 (木) 14:47時点におけるKusakata.bot2 (トーク | 投稿記録)による版 (Pkg/AUR テンプレートの更新)
ナビゲーションに移動 検索に移動

関連記事

世界には多数の携帯電話ネットワークが存在し、ポータブルな USB モデムデバイスによる UMTS (または EDGE や GSM) のモバイルインターネット接続を提供しています。

PIN の削除

まず最初に、通常の携帯の SIM カードを使って PIN が存在する場合は無効化してください。SIM カードが PIN を要求する場合、wvdial は動作しません。

PIN が削除できない場合、mmcli を使うことで SIM カードのロックを解除できます:

# mmcli -i SIMNUMBER --pin=XXXX

SIMNUMBER に指定する文字列は mmcli -Lmmcli -m X で確認できます。

デバイスの識別

次のコマンドの出力を確認してください:

$ lsusb

デバイスのベンダー・プロダクト ID が表示されます。デバイスによっては2つのプロダクト ID が表示されることがあります。下を参照。

モードスイッチング

携帯端末には2つのモードが存在します (1) USB フラッシュメモリストレージ (2) USB モデム。(ZeroCD とも呼ばれる) 1番目のモードは、他のオペレーティングシステムにインターネット通信プログラムを手渡すのに使われます。基本的には Linux ユーザーの関心を引くようなものではありません。さらに、端末によってはフラッシュメモリカードを追加することができる差し入れ口が付いていることもあります。

携帯端末をモデムモードに切り替えるユーティリティは usb_modeswitch です。公式リポジトリからインストールできます。

このパッケージには Udev ルールが入っています: /lib/udev/rules.d/40-usb_modeswitch.rules。このルールには多数の端末のエントリが含まれており、それによって端末を接続したときにモデムモードに切り替わります。

モードが切り替わると、プロダクト ID が別の値に変化してしまうことがあります。ベンダー ID は変化しません。これは lsusb の出力で確認できます。

"option" という名前の USB シリアルカーネルモジュールによってサポートされているデバイス (大抵は Option の携帯電話ですが、それ以外も多少サポートしています) もあり、usb_modeswitch をインストールしなくても使うことができます。

Udev 自体にも以前は /lib/udev/modem-modeswitch というユーティリティが含まれていました。udev 157 で、このユーティリティは /lib/udev/mobile-action-modeswitch に名前が変更され Mobile Action のケーブルを切り替えるためだけのツールに姿形を変えました。その他の端末については usb_modeswitch を使うようにしてください。

ノート: eject コマンドを使ってモードを切り替える方法がこちらに載っています。

接続

Network Manager

usbutilsusb_modeswitch をインストールしてから、NetworkManager でモデムを動作させるために modemmanager をインストールしてください。

NetworkManager と ModemManager サービス両方を起動してください。詳しくは systemd#ユニットを使う を参照。

mobile-broadband-provider-infonm-connection-editor をインストールしてください。

ModemManager に USB モデムを検出させるにはシステムの再起動が必要です。NetworkManager アプレットを再起動してから、モデムを一度抜いて再度接続すれば NetworkManager はメニューでモデムを認識します。特殊な設定は必要ありません。NetworkManager でのモデムの設定は手順通りにすれば問題ありません。必要なのはネットワークプロバイダからもらえるログイン情報だけです。

ModemManager の実行中は gammu は動作しません。SMS や Ussd コードは modem-manager-gui で使うことができます。

pppd

pppd を使って 3G 接続の設定ができます。詳しくは pppd による 3G と GPRS モデムを見てください。pppconfigAUR を利用してダイアログインターフェイスで簡単に pppd の設定を行うこともできます。

wvdial

次の記事を参照: wvdial

netctl

Netctl を使って USB モデムで接続を確立することもできます。netctl/etc/netctl/examples/mobile_ppp にサンプル設定ファイルを用意しています。

詳しい情報は netctl を見て下さい。

最低でも以下の項目を設定する必要があります:

/etc/netctl/mobile_ppp
Interface=cdc-wdmX
Connection=mobile_ppp
PhoneNumber=XxxxXXXX
AccessPointName=Broadband

詳しくは netctl の記事や netctl.profile を見てください。

libmbim

公式リポジトリから libmbim をインストールしてください。mbim-network を使うことでモデムを立ち上げられます。mmcli を呼び出すためのラッパーです。まずは mbim-network のプロファイルを作成してください:

/etc/mbim-network.conf
APN=Broadband

そして以下のコマンドでネットワークに接続します:

# mbim-network /dev/cdc-wdmX start

それからインターフェイスを立ち上げて IP アドレスを取得してください:

# ip link set wwanY up
# dhcpcd wwanY

sakis3g

モデムスティックが sakis3g によってサポートされている場合、オールインワンのコマンドラインスクリプトで上記の手順を全て自動化することができます。AUR から sakis3gAUR[リンク切れ: パッケージが存在しません]インストールしてください。

通信速度が遅い

Windows に比べて Linux での通信速度がやけに遅いという報告があります: [1]

完全な検証は取れていませんが、とりあえずの解決方法は以下の通りです。

ほとんどの場合、信号強度が弱いか同時接続人数が多すぎるのが、通信速度が遅い原因です。しかしながら、以下の方法を使って、通信速度を改善できる可能性があります。

QoS パラメータ

AT+CGEQMINAT+CGEQREQ コマンドを使うことで QoS を設定できます。通信速度を下げたり、制限することも可能です。/etc/wvdial.conf に以下の Init コマンドを追加してください:

Init6 = AT+CGEQMIN=1,4,64,640,64,640
Init7 = AT+CGEQREQ=1,4,64,640,64,640

Baud パラメータ

wvdial.conf で Baud パラメータを使うことでも通信速度を上げることができます。

Baud = 460800

ただし Huawei E261 の公式 Windows アプリケーションでは Windows Vista で Baud=9600 に設定しています。要検証。

使用帯域幅を確認

移動体通信事業者によって提供される 3G 通信では帯域幅が制限されていることがしばしばです。その場合、時間あたりに使用できる帯域が限定されます (例: 1GB/月)。どのネットワークアプリケーションが帯域を多く消費しているかを知るのはとても簡単ですが (例: 動画のストリーミング、ゲーム、torrent など)、累積の使用帯域幅を記録するのは煩わしいかもしれません。

通信量の記録を助けてくれるツールというものが存在します。コンソールツールである、vnstat はこれまでの通信量の記録を付けることができ、iftop はセッションごとの通信量を監視します。KDE を使っている場合、knemoAUR が役に立つでしょう。どのツールも公式リポジトリからインストールできます。

SMS の読み取り

Acer Aspire AS3810TG ノートパソコンに接続した Huawei EM770W (GTM382E) 3g カードでテスト済みです。

$ pacman -S gnokii
$ mkdir -p $XDG_CONFIG_HOME/gnokii

設定ディレクトリは ~/.config/gnokii です。

$ cp /etc/gnokiirc ~/.config/gnokii/config

~/.config/gnokii/config を以下のように編集:

port = /dev/ttyUSB0

設定によっては別のポートを使う必要があります。例えば /dev/ttyUSB1 など:

model = AT
connection = serial

/dev/ttyUSB0 を使うにはユーザーを uucp グループに追加する必要があります ("x" はユーザー名に置き換えて下さい):

# gpasswd -a x uucp
$ newgrp uucp

newgrpコマンドを使うことで、一度ログアウトしなくてもすぐに新しいグループが適用されます。

gnokii を起動:

$ xgnokii

"SMS" アイコンボタンをクリックすると、ウィンドウが開きます。"messages->activate sms reading" をクリックしてください。メッセージがウィンドウに表示されます。

コマンドラインスクリプト

GUI を起動せずに gnokii を使って (携帯のメモリではなく) SIM カードから SMS を読みだすコマンドラインスクリプト:

$ gnokii --getsms SM 0 end 2>&1|grep Text -A1 -B3|grep -v Text

説明:

gnokii # invoke gnokii
--getsms SM 0 end # read SMS from SM-memory location (=SIM card) starting at 0 and reading all occupied memory locations ("end")
2>&1 # connect STDERR to STDOUT to make sure the output from the --getsms command can be piped to grep
|grep Text # pipe output from gnokii to grep, anchoring at output containing "Text"
-A1 -B3 # print one line after the matched pattern and three lines before the matched pattern
|grep -v Text # grep result to another grep to exclude the "Text" line (-v for inverting the pattern)

SMS に "Text" という単語が含まれていると上手く出力されません。お好きにスクリプトは修正してください。

画質

モバイルブロードバンド接続でウェブを閲覧すると画質が落とされ、"shift+r improves the quality of this image" や "shift+a improves the quality of all images on this page" といったヒントが表示される場合、以下の手順に従って下さい:

公式リポジトリから tinyproxyインストールしてください。

/etc/tinyproxy/tinyproxy.conf を編集して以下の2行を追加:

AddHeader "Pragma" "No-Cache"
AddHeader "Cache-Control" "No-Cache"

tinyproxy を起動:

# systemctl start tinyproxy

プロキシサーバーとして localhost:8888 を使うようにブラウザを設定すれば完了です。Firefox ではなく、Google Chrome を使っている場合、Pragma や Cache-Control ヘッダが修正できないので特に有用です。