atコマンドでSIMの自番号を書き換える

atコマンドでSIMの自番号を書き換える

以前は、ATコマンドを打つターミナルの起動まででした。

自身の番号の書き込み

simに番号が付いていない場合がある。

; Subscriber Number example see output of cli ‘dongle show devices’ column “Number”

; may be empty, use for save in SIM commands AT+CPBS=”ON” and AT+CPBW=1,”+123456789″,145

http://wiki.e1550.mobi/doku.php?id=configuration

前回、これをみて試そうとしたがうまく行かないと言う記事を書いた。

https://community.asterisk.org/t/chan-dongle-subscriber-number/40485/6
のフォーラムでも同じように、SIMに番号を設定できない話題です。
ただ、AsteriskのCLIでATコマンドが通らない話もしているから、CLIではなく、cuなどで直接シリアルのターミナルでやって欲しい。


AT+CPBS=”ON”
AT+CPBW=1,”+123456789″,145
を実行すると、自番号を変更できるという説明に見えるが、実は他にも準備が必要である。
あくまでも、SIMに登録している自番号を変える事で、外から呼び出す番号を変えるものではありません。
日本のキャリア契約でも、機種変したり、スタッフのSIMの登録ミスなのかわからないのですが、自番号が登録されていないことがあります。
これまでは、shopへ行き、SIM交換をしてもらう必要がある。(これをやる前に、iPhoneの初期化してくださいとか、端末の故障などを疑われて、SIM交換まで大変だった記憶があります。)

自番号を表示するコマンド

AT+CNUM
OK
本当はここに表示されるはずですが、OKが返されるだけです。
ジャパンSIMのiPhone用黒シムや、海外のSIMなど見かけました。(あとは前述した、日本の普通の契約でも、スタッフのミス?か磁気の影響で消えたとか?

SoftbankSIMでちゃんと自番号が登録されている物で行ってみた
AT+CNUM
ERROR+CNUM: “”,”070xxxxxxxx”,129
と返された。ERRORが付いているのは、なぜか理解ができない。

SIMの電話帳を見る

SIMの電話帳とはなに?という方は、まだ知識が足りないので、よそで調べてきてから、進めてください。

開く電話帳を選ぶ
電話帳の種類には、
(“ME”,”SM”,”MT”,”ON”,”DC”,”MC”,”RC”,”EN”,”AD”,”QD”,”SD”,”FD”)
といろいろあります。

values reserved by this TS:”DC” ME dialled calls list (+CPBW may not be applicable for this storage) $(AT R97)$”EN” SIM (or ME) emergency number (+CPBW is not be applicable for this storage) $(AT R97)$”FD” SIM fixdialling-phonebook”LD” SIM last-dialling-phonebook”MC” ME missed (unanswered received) calls list (+CPBW may not be applicable for this storage)”ME” ME phonebook”MT” combined ME and SIM phonebook”ON” SIM (or ME) own numbers (MSISDNs) list (reading of this storage may be available through +CNUMalso) $(AT R97)$”RC” ME received calls list (+CPBW may not be applicable for this storage) $(AT R97)$”SM” SIM phonebook”TA” TA phonebook: integer type value indicating the number of used locations in selected memory: integer type value indicating the total number of locations in selected memory

https://www.activexperts.com/sms-component/at/commands/?at=%2BCPBS

コピペしたらわけわからなくなったのですが、精査してませんが、このような種類の電話帳があるようです。
“DC” ダイヤルコールリスト
“EN” 緊急番号
“FD” SIM fixdialling-phonebook
“LD” SIMの最後のダイヤルした電話番号リスト
“MC” 電話を逃した(未応答の)コールリスト
“ME” “retrieve mode” to the internal phonebook.
“MT”は、MEとSIMの電話帳を組み合わせたものです
“ON”  own numbers (MSISDNs) list
“RC”私はコールリストを受信しました
“SM” SIM電話帳
“TA” TA電話帳

とりあえず、このページで使うのは、”ON”と”SM”です。

普通の電話帳を見る

まずは、普通のSIMの電話帳を見ます。
AT+CPBS=”SM”   SIMの電話帳へ切り替える
AT+CPBR=1 1番目だけ見る


電話帳の確認
AT+CPBS?
+CPBS: “SM”,4,250
現在SMを選んでいる
4=使用しているアドレス帳の数
250=全体のアドレス帳の数

AT+CPBR=1,99  1~99まで見る
ただ、AT+CPBS? で調べた最大アドレス帳を確認して、それより大きいものを指定すると、Errorが返される
SIMにより、最大が50や250などがある。

電話帳の追加、削除

AT+CPBW=1,”+8190xxxxxxxx”,145 で登録
AT+CPBW=,”6187759088″,129,”Adam”  リスト番号がないと、空き領域に追加される

3つめのオプションは、国番号をつけるかどうかのようです。
とりあえず、国番号が付くのは、145
その国だけのものは、129
177はそのキャリアだけの番号
かな?

129 – National number type
161 – National number type
145 – INternational number type
177 – Network specific number

http://m2msupport.net/m2msupport/sim-phonebook-at-commands/

AT+CPBW=1 で削除。リスト番号だけで登録が削除のようです。
複数一気に消す方法はわかりません。調べてません。

自身の番号を書き込む

前述の通り、電話帳を自身の番号に切り替える。
AT+CPBS=”ON” 自身の番号の登録用アドレス帳へ変更
このあと、ターミナルを放置すると、電話帳はSMに変更されるので、すぐに次のコマンド登録へ進む

念のため開いているアドレス帳の確認
AT+CPBS?
+CPBS: “ON”,1,4
4つ領域があるのは不明

登録
AT+CPBW=1,”+123456789″,145
OK
やっと成功した。
何年も調べていて、わからなかったのです。

自番号の確認は
AT+CNUM
+CNUM: “”,”+447xxxxxxxx”,145
と返されます。

+CPBS: “ON”,1,4
の状態だと、
AT+CPBR=1
+CPBR: 1,”+447xxxxxxxx”,145,””
と返される。

最後に

私は、Asteriskを起動したまま、シリアルのターミナルを開いて作業をしていた。本当は好ましくない。
いろいろと作業したりすると、Asteriskからシリアルポートを見失うようなので、ターミナルの作業を終えたら、Asterisk側のチェックが必要。

まとめ

AT+CPBS="ON" が有効のONだと勘違いしていた。
そして、SIMの電話帳の1番に書けばいいと勘違いしていた。

AT+CPBS="ON"をして、一定時間経つと、SMに切り替わっているようだ

以下は、別の要件のめもです。

システム設定 SYSCFG

AT^SYSCFG?
^SYSCFG:2,2,3FFFFFFF,1,2

AT^SYSCFG=14,3,400000,1,2
が自分のところは良いかな。
3G only,3G first,WCDMA指定,roaming有り、最後は分からないからそのまま。
ちなみに、実行したらAsteriskからドングルを見失ったので、Asteriskを再起動した

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

https://wiki.archlinux.jp/index.php/Huawei_E1550_3G_%E3%83%A2%E3%83%87%E3%83%A0


USB機器への通電を制御する

以前も書いたと思うけれども、まだ解決ができていない。
その続き

この時、BuffaloのHUBを買ったが、その後使っていない、どうしてかは忘れた。
このコマンドでは解決できていない。


普通にLinuxに接続しているUSB機器が、しばらく調子がよかったので、放置していたが、きょうUSB機器が認識しない。
やはり、何か対策をしなければならない。

今回は、U2H-SW4Sという機種を探していたが、2010年の製品のため、ほとんど流通していない。

http://d.hatena.ne.jp/tueda_wolf/20120624/p1

下記のページが結構詳しい。
http://nsb.homeip.net/wp/?p=59
http://vladi.cocolog-nifty.com/blog/2014/08/usbusbpx-w3u3s3.html

電源制御の可能なHUBはいくつかあるようだ。

Windowsでは「USBセレクティブ・サスペンド」と言う機能で使用しているようだ


制御ソフト

ELECOM U2H-SW4S用 iteclubさん
すでにホームページが閉鎖されている。http://web.archive.org/web/20130324153340/http://www.iteclub.net/wordpress/2011/08/12/u2h-sw4x_control_software/
Linux版のコンパイルがうまく行かないようで、これに対して修正差分を公開している方  http://blog.livedoor.jp/nekoshin1/archives/52276207.html

ELECOM U2H-SW4S用 stkchpさん
U2H-SW4SのON/OFFユーティリティ(Linux向け)

ELECOM U2H-SW4S用 nonakapさん
https://github.com/nonakap/u2hsw4sctl

汎用のパワーコントロールのsourceを提供してくれている。
NIIBE Yutakaさん
http://www.gniibe.org/development/ac-power-control-by-USB-hub/index.htmlの中で、C用Python用

下記のHUBで動作を確認しているようだ。他のHUBでも動いている。当方が所有する適当なHUBでも認識していた。型番は後で確認する。lsusbで見ると「0451:2077 Texas Instruments, Inc. TUSB2077 Hub」

  • Elecom’s U2H-G4S: www.elecom.co.jp (indicator depends on power) 04b4:6560
  • Sanwa Supply’s USB-HUB14GPH: www.sanwa.co.jp (indicators don’t)
  • Targus, Inc.’s PAUH212: www.targus.com (indicators don’t) 04cc:1521
  • Hawking Technology’s UH214: hawkingtech.com (indicators don’t)

仮想シリアルポートでdongleを別のサーバーで使用する

socatで仮想シリアルポートを行うようだ。

実際に稼働している方のページを見つけた。
レンタルサーバーにAsteriskをインストールし、ドングルは手元のサーバーに差して、レンタルサーバーと手元サーバーを仮想シリアルポートで接続している
https://www.libreadmin.es/gsm-gateway-con-asterisk-y-una-llave-3g/

socatの使用例は、
https://qiita.com/uhey22e/items/dc41d7fa1075970e66a1

でも、ちょっとコマンドが多くて、しんどいな。

マルチパートのSMSとは何か

前回のブログの続き。
前回は、マルチパートSMSに対応した、chan_dongleを入れたが、長文SMSの受信が、分割して届いた件を調査する。

まずは、マルチパートSMSとは何か。
勝手に、長文SMSの事だと思ったが、可能性としてはマルチメディア対応のSMSの事かもしれない。でもこれはMMSと通常呼びますし、しかもデータ網を使用する。

とりあえずググる。

AndroidでマルチパートバイナリSMSを送信するには? Answers. あなたはデータSMSでこれを行うことができます、私はそれをやった! データをパケット制限に分割し、以下を使用する必要があります。 

https://code.i-harness.com/ja/q/a8ba70

こちらは、「マルチパートバイナリSMS」と言っている。Androidアプリケーション開発の話だと思う。

結局、有意義な情報は無かった。通常マルチパートというと、例えばEmailでいえば、テキストメールとHTMLメールを混在させているものを言ったりする。SMSは普通テキストメールなので、長文対応であれば、HTMLメールをやりとりすることも可能かもしれないが、送信・受信ともに対応していないとダメだし、聞いたことがない。

マルチメディア対応のSMSとしては、MMSがあるが、日本であれば、ソフトバンクが、キャリアメールをMMSとして利用しているが、ドコモは未対応。

また、2018年に、日本の電話会社(ドコモ、AU、ソフトバンク)が発表した「+メッセージ」は、RCSという規格のものである。現在、+メッセージは日本国内でしか使えないものではある。海外キャリアや日本国内MVNOで使えないものでは、使い道がなさそうだ。

コンカチSMS

話が戻り、マルチパートSMSとはなんだったのか。長文SMSの事であれば、「コンカチSMS」という名前がある。コンカチネーション、英語ですとConcatenated SMS。
2000年代後半から2010年代前半にかけて、広く普及していましたが、日本ではソフトバンク以外では、2017年に開始された。
AU 2017年5月26日以降 http://news.kddi.com/kddi/corporate/newsrelease/2017/05/26/2464.html
ドコモ(開始日不明) https://www.nttdocomo.co.jp/service/sms/charge/index.html
ソフトバンク https://www.softbank.jp/mobile/service/mail/iphone/sms-mms/

ソフトバンクは、純粋なSMSは70文字の制限がある。ソフトバンクのホームページでは分かりにくいが、カスタマーサポートに電話し、4~5人担当者が変わり、自分の中では理解した。これについては、いつかブログにまとめたい。ソフトバンクは、SMSが長文になった場合は自動的にMMSを使用する事で長文を可能にしている。ただこれはソフトバンク製の携帯やスマホを使っている場合の話で、SIMフリースマホなどを使用している場合は、できないと思われる。データ通信を完全に切っている場合も同様。

また、各キャリアとも、事業者間は、70文字の制限があるようだ。(この記事を書くまで、私は事業者間も670文字まで送られるようになったと思っていた)

日本国内の事業者間は、70文字までだが、海外からのSMSは70文字を超える物でも受け付けるようである。(国際SMS送信は70文字までである)

結論

マルチパートSMSとはなにか、chan_dongleのsourceを読むしかない。

winmail.datの添付になっています

winmail.datの添付になっています

時折、winmail.datを添付して、メールする方がいます。
この問題点は、
・送信者が気づかない点
・受信者は開けない
の2点があります。

winmail.datとは何か?

簡単に書くと、Microsoftの独自形式。TNEF 形式といいます。
outlookを使用している方が、添付ファイルを付けて送信するとこの形式になる場合があります。

winmail.datが送信される事は、マイクロソフトも把握しています。

なぜ、送信者が気づかないのか。

この、winmail.datは、(マイクロソフト製のメールソフト)outlookから送信した場合に、添付されることがあります。同じメールソフトやマイクロソフト製のメールであれば、問題ないため、同じ職場内では問題が無いことが大部分。

しかし、世の中には、マイクロソフト以外の様々なメールソフトがあることを認識しないといけません。

送信者はどうすれば良いか

Outlook 2003/2007/2013/2016(これ以外のバージョンでも可能性はある)
の使用者は、標準設定のままでは、winmail.datになることがあります。
ファイル添付したものが、TNEF 形式になるのかどうかは、複雑な条件があるために利用者が選択ができない。

そこで、送信者自身がTNEFが送信されないような設定の変更をするしかない。
マイクロソフトの案内では4つの方法が示されているが、おすすめは二通り。

やり方がわからなければ、パソクラ・えむけいプランに相談を(有料)

方法 1 : 既定のメッセージ形式を変更する
送信者は、以下の手順を使用すると、送信する電子メール メッセージの形式を変更できます。[ツール] メニューオプション] をクリックし、[メール形式] をクリックします。
[このメッセージ形式で作成する] の [テキスト形式] をクリックし、[OK] をクリックします。
注: 特定の受信者には RTF 形式を使用し、その他の受信者にはテキスト形式を使用して送信するには、個人用アドレス帳または受信者の連絡先レコードにある、受信者のオプションを設定する必要があります。


方法 4: Outlook リッチ テキスト形式のインターネット電子メール設定を行う

Outlook 2003 および Outlook 2007 では、[ツール] メニューオプションをクリックします。
[メール形式] タブをクリックします。
[インターネット メール形式] をクリックします。
Outlook リッチ テキストのオプション] には、 HTML 形式に変換] または [テキスト形式に変換をクリックします。

https://support.microsoft.com/ja-jp/help/278061/email-received-from-a-sender-using-outlook-includes-a-winmail-dat-atta

受信者はどうすれば良いか

送信者に話しをしても理解をしてくれないことが多々あります。
その場合は、自分自身でどうにかするしかありません。

winmail.dat変換ツール
インストールが不要なため、事情がありパソコンにソフトをインストールできない方向け。ただし、添付ファイルを提供者サーバーに転送しサーバー処理を行うため、その点のセキュリティーリスクを考える。

Winmail Opener
PCへのインストールが必要。関連付けをすると、簡単に開ける。
サイトは英語、日本語がよい場合は機械翻訳ページを。
インストール後は、日本語になる。(21言語対応)

対応しているメールソフト

  • Outlook(単体製品やOffice製品に付属のもの。Outlook Expressのことではない)
  • Gmail(Webインターフェイス)
  • Yahoo Mail(Webインターフェイス)JapanもUSも対応。USはファイル名文字化けあり
  • マイクロソフト製のメールソフト「Outlook Express,Windows mail,Windows Live mail,メール(win8,8.1,10に付属)」は読める可能性があるが、情報不足です

対応していないメールソフト

  • Thunderbird
  • Outlook(Webインターフェイス)ほんと?再度検証します
  • iPhoneの標準メール

対応していないメールソフトでも、GmailやYahooに転送してウェブインターフェイスで読む方法もあります。

Upgrading Asterisk 11 compatible with chan_dongle to Asterisk 13 running on ubuntu

Asterisk13に対応しているchan_dongleがマルチパートのsmsに対応しているとのことで、気になっていましたが、今回Asterisk11をAsterisk13にバージョンアップしてみました。

事前準備

今回は、Asterisk11からのバージョンアップのため、設定ファイルをバックアップを取ります。当方はiaxとdongleしか使っていないので、設定はそのままで動きました。

Asterisk13のインストールは、voip-info.jpに書いていますがそちらはcentosでのやり方。当方のサーバーはubuntuなので、若干方法が変わります。

Asterisk12以降は、janssonが必要なため、あらかじめインストール。

apt install libjansson-dev

を実行。他にも必要かもしれませんが、とりあえず、次に進みます。

Asterisk13のsourceをダウンロード。

ダウンロードは、http://www.asterisk.org/downloads から行う。
ダウンロード先は、
http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-13-current.tar.gz
となっているが、実際に展開すると
asterisk-13.23.1 など、最新のものがダウンロード出来る。(2018/12/02現在)

cd /usr/local/src
wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-13-current.tar.gz
tar xvfz asterisk-13-current.tar.gz
cd asterisk-13-current.tar.gz
./configure
make
make instal

./configure を実行した部分で、必要なもの(足りない物)があれば、メッセージが出ます。当方は、Asterisk11を動かしていたり、他のプログラムで事前に入れていたかもしれないので、janssonが足りないだけでした。

make sampleやmake configまでやってしまうと、設定ファイルが上書きされてしまうので注意。バックアップを取っていれば良いけど、サンプルなどは使いませんので、今回は行いません。

chan_dongleのダウンロードと設定

以前の記事にも書いたのですが、マルチパートのsmsができるんじゃないかなと期待の、chan_dongleを入れます。いろんな方が、Asterisk13に対応をさせたモジュールを公開しているのですが、今回は、oleg-krvさんのを入れます。
メインページは、https://code.google.com/archive/p/asterisk-chan-dongle/
配布ページは、https://github.com/oleg-krv/asterisk-chan-dongle/tree/asterisk13 のような感じです。

wget https://github.com/oleg-krv/asterisk-chan-dongle/archive/asterisk13.zip
unzip asterisk13.zip
cd asterisk-chan-dongle-asterisk13/
aclocal && autoconf && automake -a
DESTDIR="/usr/lib/asterisk/modules" ./configure --with-asterisk=/usr/include/
make
make instal

asterisk -vvvvvvvvvvvvvr
cliで、core stop now

をして、asterisk

で実行し、再度、asterisk -vvvvvvvvvvvvvvrを実行

バージョン表記が asterisk13になっている点

module show like chan_dongle

でモジュールが読み込まれていれば、正常。

その後、発着信テストをして、問題なかったです。設定ファイルは全く変更無しでした。

長文のSMSをドングル宛に送ってみたが、分割されて届いた。これまでと変わらない。マルチパートのsmsの意味を取り違えていたのかもしれない。画像等が含まれたSMSのことか?でも、それは通常、MMSというだろうし。次回はマルチパートのSMSについて調べる事と、もしかしたら、extentionの記述を変えないといけないかもしれないので、調べてみる。