Huawei E1550 3G モデム
この記事では Huawei E1550 3G モデムを設定する方法を説明します。以下の設定が必要です:
- モデムモードに切り替える必要があります。
- 適切なドライバー (usbserial) をロードする必要があります。
目次
デバイスの準備
モデムモードに切り替える
デフォルトではカーネルはモデムを USB ストレージデバイス (SCSI CD-ROM) として認識します。モデムには MicroSD カードリーダーと内部フラッシュが含まれているため間違いではありません。
モデムにするには以下のコマンドを実行する必要があります:
$ /lib/udev/usb_modeswitch --vendor 0x12d1 --product 0x1446 --type option-zerocd
公式リポジトリの usb_modeswitch も参照してください。udev-157 から modem-modeswitch は名前が変更され コミット で説明されているように変更が加えられました。このパッケージに修正は必要ありません。インストールするだけで使えます。
また、udev の設定を作成する方法もあります:
/etc/udev/rules.d/15-huawei-e1550.rules
ACTION=="add", SUBSYSTEM=="usb", ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="1446", RUN+="/lib/udev/usb_modeswitch --vendor 0x12d1 --product 0x1446 --type option-zerocd"
上記のファイルを作成すると、モデムの USB ID が 12d1:140c
に変化し /proc/bus/usb/devices
は新しい USB エンドポイントを表示するようになります。
ドライバーのロード
モデムの適切なドライバーは usbserial ですが、モデムが認識されないため、ID を指定して強制的にロードする必要があります:
# modprobe usbserial vendor=0x12d1 product=0x140c
もしくは /etc/modprobe.d/modprobe.conf
に以下を記述してください:
options usbserial vendor=0x12d1 product=0x140c
既にロードされている場合は rmmod usbserial
を忘れずに実行してください。
デバイスの命名 (任意)
udev ルールを使って ttyUSB*
ポートのシンボリックリンクを作成することで設定を読みやすくすることができます。
モード切替の後、USB ID 12D1:1001
と認識される、シリアルポートが3つある Huawei デバイスの場合:
SUBSYSTEMS=="usb", ATTRS{modalias}=="usb:v12D1p1001*", KERNEL=="ttyUSB*", ATTRS{bInterfaceNumber}=="00", ATTRS{bInterfaceProtocol}=="ff", SYMLINK+="ttyUSB_utps_modem" SUBSYSTEMS=="usb", ATTRS{modalias}=="usb:v12D1p1001*", KERNEL=="ttyUSB*", ATTRS{bInterfaceNumber}=="01", ATTRS{bInterfaceProtocol}=="ff", SYMLINK+="ttyUSB_utps_diag" SUBSYSTEMS=="usb", ATTRS{modalias}=="usb:v12D1p1001*", KERNEL=="ttyUSB*", ATTRS{bInterfaceNumber}=="02", ATTRS{bInterfaceProtocol}=="ff", SYMLINK+="ttyUSB_utps_pcui"
モード切替の後、USB ID 12D1:1003
と認識される、シリアルポートが2つある Huawei デバイスの場合:
SUBSYSTEMS=="usb", ATTRS{modalias}=="usb:v12D1p1003*", KERNEL=="ttyUSB*", ATTRS{bInterfaceNumber}=="00", ATTRS{bInterfaceProtocol}=="ff", SYMLINK+="ttyUSB_utps_modem" SUBSYSTEMS=="usb", ATTRS{modalias}=="usb:v12D1p1003*", KERNEL=="ttyUSB*", ATTRS{bInterfaceNumber}=="01", ATTRS{bInterfaceProtocol}=="ff", SYMLINK+="ttyUSB_utps_pcui"
インターネットに接続
2つまたは3つの /dev/ttyUSB*
デバイスが追加されたはずです。最初のデバイス (他にデバイスがない場合は ttyUSB0
) が PPP 互換モデムです。pppd, kppp, gnome-ppp, network-manager などで普通に使ってください。
AT コマンド
有用なコマンド:
AT^U2DIAG=0
- the device is only ModemAT^U2DIAG=1
- device is in modem mode + CD ROMAT^U2DIAG=255
- the device in modem mode + CD ROM + Card ReaderAT^U2DIAG=256
- the device in modem mode + Card ReaderAT+CPIN=<PIN-CODE>
- enter PIN-codeAT+CUSD=1,<PDU-encoded-USSD-code>,15
- USSD request, result can be found (probably) in /dev/ttyUSB2.
"*100#" を PDU 形式にエンコード:
$ perl -e '@a=split(//,unpack("b*","*100#")); for ($i=7; $i < $#a; $i+=8) { $a[$i]="" } print uc(unpack("H*", pack("b*", join("", @a))))."\n"'
PDU 形式の "AA180C3602" をデコード:
$ perl -e '@a=split(//,unpack("b*", pack("H*","AA180C3602"))); for ($i=6; $i < $#a; $i+=7) {$a[$i].="0" } print pack("b*", join("", @a)).""'
応答デコード (this example is balance response: 151.25):
$ perl -e 'print pack("H*", "003100350031002C003200350020044004430431002E0020");'
オペレーターによっては PDU でエンコードされた USSD が返ってきます。適切なデコード方法を確認してください。
AT+CSQ
- 信号品質を取得 (AT+CSQ=?)AT+GMI
- メーカー名を取得AT+GMM
- モデル名を取得AT+GMR
- 型番を取得AT+GMN
- IMEI を取得AT+COPS?
- オペレーターの情報を取得AT^CARDLOCK="NCK-code"
- モデムのロックを解除。NCK コードは IMEI で計算してください。ロック解除後あらゆる GSM プロパイダーでモデムが使えるようになります。AT^SYSCFG=mode, order, band, roaming, domain
- システム設定
Mode:
- 2 Automatic search
- 13 2G ONLY
- 14 3G ONLY
- 16 No change
Order:
- 0 Automatic search
- 1 2G first, then 3G
- 2 3G first, then 2G
- 3 No change
Band:
- 80 GSM DCS systems
- 100 Extended GSM 900
- 200 Primary GSM 900
- 200000 GSM PCS
- 400000 WCDMA IMT 2000
- 3FFFFFFF Any band
- 40000000 No change of band
Roaming:
- 0 Not supported
- 1 Roaming is supported
- 2 No change
Domain:
- 0 CS_ONLY
- 1 PS_ONLY
- 2 CS_PS
- 3 ANY
- 4 No change
SMS の送信
gammu を使うことができます。
~/.gammurc
を編集:
[gammu] port=/dev/ttyUSB0 connection=at name=huawei e1550 model=
設定ファイルを自動生成することもきます:
$ gammu-detect > ~/.gammurc
実行コマンド:
# gammu sendsms TEXT +7123456789 -text qwe
デバイス情報を得るには:
# gammu identify
GUI フロントエンドには wammuAUR や modem-manager-gui があります。
USSD リクエスト
ussd ツールを使ってください。