Huawei E1550 3G モデム

提供: ArchWiki
移動先: 案内検索

この記事では 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 などで普通に使ってください。

ノート: NetworkManager で 3G モデムを使用するには、modemmanager パッケージをインストールして NetworkManager.service再起動する必要があります。その後 NetworkManager のアプレットで 'Enable Mobile Broadband' が選択できます。

AT コマンド

有用なコマンド:

  • AT^U2DIAG=0 - the device is only Modem
  • AT^U2DIAG=1 - device is in modem mode + CD ROM
  • AT^U2DIAG=255 - the device in modem mode + CD ROM + Card Reader
  • AT^U2DIAG=256 - the device in modem mode + Card Reader
  • AT+CPIN=<PIN-CODE> - enter PIN-code
  • AT+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 sendsms TEXT +7123456789 -text qwe

USSD リクエスト

huawei-ussdAUR[リンク切れ: アーカイブ: aur-mirror] パッケージを使ってください。もしくは ussd.php ツールを使ってください。

参照