HUAWEI E169 USB 3GドングルをドコモXi SIM用にもう1台購入

また買ってしまったHuawei E169 USB UMTS/WCDMAモデム。前回のは白色だったが、それと区別できるよう黒色のものを選択。

また買ってしまったHuawei E169 USB UMTS/WCDMAモデム。前回のは白色だったが、それと区別できるよう黒色のものを選択。

TP-Link TL-WR703N上のOpenWrtで使うためにHuawei E169 USB 3Gドングルを1台購入していた。これにはみまもりSIMカードを入れているが、ドコモXi SIMカード(元々は父用の回線)を挿すためにさらにもう1台購入した。

もうこうなったらマニアと言われてもしょうがない。正直、自分でもなんでここまでこってるのかわからなくなってきた。

前回のは白色だったが、それと区別できるよう黒色のものを選択。

前回購入したのと同じ販売者から購入。$23.60だったが、交渉して送料込みで$20.00にまけてもらった。

Windows 7上でMobile Partnerアプリが無事ドコモXi SIMを認識

Windows 7上でMobile Partnerアプリが無事ドコモXi SIMを認識

Windows 7上でMobile Partnerアプリが無事ドコモXi SIMを認識。

ただしSMS送信については”台湾ROMを積みドコモXi SIMカードを挿したHTC J ISW13HTからSMSを送信する | あくまで暫定措置としてのブログ“に書いたように、ドコモXi SIMカードからSMSを発信する際には、”validity period”を3日にする必要があることがわかっている。Mobile Partnerでは”Storage Period”と呼んでいる。3日そのものはメニューの選択肢にないが、要はそれ未満ならよさそうだ(下図)。この変更をしないとSMS送信はできなかった。

SMS送信するには

SMS送信するには”Storage Period”を3日間以下にすることが必要な模様

前回と同様ファームウェアのアップグレード。

Asteriskのchan_dongleの設定に必要なモデムのIMEIは”Send SMS or Email using 3G/GSM modem – OpenWrt Wiki“を参考に、この記事の末尾に示した方法でわかる…が、Windows上でMobile Partnerに表示させるほうが楽ちんであった。

ところで、chan_dongleでもこのSIMカード(に結びつけられている回線)からのSMS発信するには、上で述べたvalidity periodを特に指定する特殊な設定をする必要がありそうだが、そもそもこのSIMカードからのSMS発信はしないつもり。ドコモでは家族間割引に加入していても、加入者間のSMSには、そうでない場合と同様しっかり課金される。なので特にドコモSIMカードからSMS発信するメリットがない。ちなみに、Auなら家族間は無料のようだし、ソフトバンクにいたっては、ソフトバンク加入者間なら無料という太っ腹ぶり。その点ドコモはちまちま課金する印象。

一方SMS受信の方は、特殊な設定なしにできる。受信できるだけで十分。そもそもこの番号宛のSMSが来る可能性はそもそも極めて低い。

root@OpenWrt:~# picocom -b 9600 -f n -p n -d 8 -r /dev/ttyUSB3
picocom v1.7

port is : /dev/ttyUSB3
flowcontrol : none
baudrate is : 9600
parity is : none
databits are : 8
escape is : C-a
local echo is : no
noinit is : no
noreset is : yes
nolock is : no
send_cmd is : sz -vv
receive_cmd is : rz -vv
imap is :
omap is :
emap is : crcrlf,delbs,

Terminal ready
AT
OK
ATI
Manufacturer: huawei
Model: E169
Revision: 11.314.12.31.00
IMEI: XXXXXXXXXXXXXXX
+GCAP: +CGSM,+DS,+ES

OK

picocomの終了はControl-A, Control-X

SMS Tutorial: Introduction to AT Commands, Basic Commands and Extended Commands

広告

ノートPCの内蔵電池の交換

自分にとってこのブログの主目的は自分用備忘録。何かプロジェクトをやっているときには、記録しておくべきことを次々と記録している。なのでそういった雑多な情報が列挙されただけの草稿がどんどん溜まっている。いずれは人様が見ても分かる形にして公開…とは考えているが、興味をなくした・追求する意味がなくなった、などの理由や、単に面倒になった、という理由で、完成させないまま公開してしまうことも多い。

そうでなくても、今回のように、時系列で情報を記録していて、最終的にそれが無意味だった、とわかることもある。人様が見ても、という観点からは、そういうときには構成を変えるべきかもしれないが、やはりそれは面倒なのでそのまま公開してしまおう。


またしょうもない問題発生。

2010年にアメリカから帰国する前に、過渡期を乗り切るために買ったAsus EeePC 1005HAがBIOS起動時に”Checking NVRAM…”というメッセージを長く出すようになった。ちょっと前までは、そのメッセージの後それでもなんとか起動はしていたが、ついに、その後画面がクリアされるものの起動しなくなってしまった。

マザーボード付属の内蔵CMOS用バッテリが切れたものと思われる。”片下広場: ASUS EeePC 1005HAの分解&マザーボード電池交換。“(キャッシュ)に詳細な分解方法が出ているが、気になったのは以下:

換装用に買ったリチウムイオン電池は、SANYOのML2016です。デフォルトでついてるのは、ML1220ですが、ML2016の方が容量が倍(15mA→30mA)なので、こちらを選択しました。

ML1220を利用した、電線もコネクタも接続済みで置き換えるだけでいいものが$7程度で手に入るeBayでも同様だ。なのでそれを利用しようかと思っていたが、上を読むとちょっと考えてしまう。置き換えは素人には相当手間な作業なので、できることならこれ一回でPC全体の寿命まで持たせたいからだ。上記記事のコメントで、ヤフオクでML2016を利用してすぐに置き換えられる状態になっているものが入手できた、という情報があったが今は見当たらない。う~ん。

ちなみに、ML2016って充電池なのね。しかし、この際充電池であることは重要なのだろうか。Amazon.co.jpで扱っている他機種向けの「そのまま置き換えキット」の類はたいがいCR2032など一次電池を利用したもののようだ。若干例外があるがスペックがよくわからないバルク品なのでパス。なんにしろ1005HAは充電池使用が前提の作りなんだろうから、変な冒険はやめよう。

結局MaxellのML2016の2個パックをAliexpress.comで送料無料の$7.55で購入。とりあえず2個必要ないんだが、この値段なら1個だけ買うのと変わらない。

分解方法についてはビデオがいくつか見つかった。以下のはバッテリの装着位置にバリエーションがありうることを示している。

以下のは全般的流れを示す。言葉がわからないのが残念。

ちなみに、このすぐ後述べるバッテリ(今まで話題にしてきたマザボにつながった内蔵バッテリではなく)が事実上「空」のままのせいだと思われるが、バッテリを外してAC電源のみで立ち上げると、NVRAMの問題はなくすんなりと立ち上がる…って、え、じゃぁ内蔵バッテリの問題ではなかったのか!しまった…。注文のキャンセルに応じてくれるかな…。

このネットブックには他の大きな問題もあって、それはバッテリが上がってしまって、しかも充電が全くできないこと。元々インストールされたWindows 7 Starter Editionは起動しなくなってしまっていて(これもいつか直そうと思いつつそのまま…)、主にLubuntu 14.04 LTSを使っているが、ひょっとしたらそれはUbuntuの問題ではないかと思っている。

4年以上前のPCと言っても(しかもネットブック)、メインのものではなく、せいぜいたまにポータブルな使用方法を軽い用途のためにしたいときに使うだけで決してヘビーに使うわけではないから、スペック的にはさして不満があるわけではなく、まだまだ活躍してもらいたい。とはいえ、バッテリ使用はできることは大いに望ましい。が、Ubuntuの問題である可能性があるのなら、Windows 7 Starter Editionを再インストールして(そんな日がいつか来たなら…)事態が改善するかを見て、それでどうするか考えよう。

さて、内蔵バッテリの問題というと、頼まれて元々VistaがインストールされていたのにWindows 8をインストールしたソニーVAIO VGN-FZ70B (PCG-382N) (サポートページ)が突然起動しなくなって久しい。これこそは内蔵バッテリの問題じゃないかと思っている。

分解方法の情報が欲しい。【分解修理マニュアル】 VAIO VGN-FZ30 FZ50 FZ70 FZ90 typeF ◆ /【Buyee】 Japan Shopping Service | Buy from Yahoo!なんてのが売りに出ているが、それ以外の情報が見当たらない。

一般論として以下のようなビデオがあるが、いかにも大変そうだ。

考えようによっては、内蔵バッテリが原因ならまだ解決しやすい方で、それ以外の原因の場合、素人にはとても対処できない。

Windowsタブレットが2万円で手に入るご時世に、そんな何年も前のPCに手間暇・金をかけるのは馬鹿げてると思う向きもあるだろうが、自分はそういう消費万歳的思考が嫌いだ。大嫌いだ。可能な限り大事にしたいと思ってる。

Empty: Tcl/Expect replacement

Empty claims to be a “Tcl/Expect replacement”. You can install it on OpenWrt with opkg, but no documentation will be available. I am copying the manual obtained from the source archive below for my own reference.

Unlike Expect, Empty does not seem to offer regexp-based pattern matching against output strings, which may or may not be a deal breaker depending on your usage case.


empty

NAME
SYNOPSIS
DESCRIPTION
EXAMPLES
SECURITY
RETURN VALUES
SEE ALSO
AUTHOR


NAME

empty − run processes under pseudo-terminal sessions

SYNOPSIS

empty −f [−i fifo1 −o fifo2] [-p file.pid] [−L file.log] command [command args]
empty
−w [−Sv] [−t n] [−i fifo2 −o fifo1] key1 [answer1] … [keyX answerX]
empty
−s [−Sc] −o fifo1 [request]

empty
−r [−b size] [−t n] [−i fifo2]
empty
−l
empty
−k [pid] [signal]
empty
−h

DESCRIPTION

empty is an utility that provides a simple interface to execute and/or interact with processes under pseudo-terminal sessions. This tool is definitely useful in programming of shell scripts which are used to communicate with interactive programs like telnet or ftp. In some cases empty can be a substitution for TCL/expect or other similar programming tools.

There are several common forms of command lines for empty. But the first execution of empty is usually a start in the daemon mode to fork a new command (process) under PTY-session. This can be done with −f key. An interface for the input and output data channels of the forked process is performed by two fifo files which names may be specified with −i and −o keys. These files are automatically created/deleted any time you start/exit empty daemon, so you must not create them manually. If you did not specify these fifo files in the command line, empty names them by itself basing on its PID and PID of forked PTY process.

At this point any application can easily communicate with forked process by writing data to the input fifo and reading answers from the output fifo, see EXAMPLES section for the details. To simplify this operations, empty offers an interfase to just send any data (use −s key), or even to watch the output fifo for multiple keyphrases and reply to the input fifo with one of the responses (see −w key).

Note! Input fifo for empty -f … is usually an output fifo for empty -w and empty -s forms. And output fifo of empty -f … is an input fifo for empty -w

If something goes wrong the forked process may be killed by the standard kill command, or using −k key of empty. See −p option to save PID of empty daemon process.

The following options are available:

−f fork, spawn, start or execute a new process specified by the command and its arguments. If you omit fifo files, empty with its job control algorithm will create them under /tmp directory using this templates:
empty.PPID.PID.in and empty.PPID.PID.out, here PPID is usually your shell system process ID and PID is system process ID of empty-daemon.
−s send data (request) to the forked process. If fifo file was not specitied with −o key, empty will try to find an automatically created fifo file it in
/tmp directory. Instead of command line you can send your
request or data directly to standard input (stdin) of
empty
−w watch for one or more keyphrases and if specified send the appropriated response to the input fifo. If response is not set, empty waits for the proper keyphrase then exits. With −w key empty returns the number of matched keyphrase-response pair, or 255 if fails to find this match
(see -t key for details of possible exit on timeout).
−r read from output FIFO one line (default) or one block of data (if −b size was specified). If −t n key was placed, exit on timeout.
−l list automatically created jobs by your shell.
NB! Your custom jobs, which fifo files you specified with −i and −o keys, are not displayed. So if you did not specify fifo files with
-i and -o keys all operations are done under the job marked current
−k send signal to the process with pid. If you did not specify pid, empty tries to find it within the list of automatically created jobs. If
signal is omitted the default SIGTERM is used.
−h print short help message and exit
−i fifo1 a fifo file, which is used as input for a forked process.
−o fifo2 a fifo file, which is used as output for a forked process.
−L file.log This option allows to log the whole empty session to a file. Marks >>> and <<< show the directions of data flow.
−p file.pid Save PID of empty daemon process to a file
−t n If input FIFO is empty, wait for n seconds (default is
10) to receive the keyphrase then exit on timeout with 255 code.
−c force empty to use stdin for data or requests.
−S Strip the last character from the input. Works with -s and -w keys
−v kvazi verbose mode. Show all contents of received buffer.

EXAMPLES

Start a new PTY-session with telnet to localhost:
empty -f -i in.fifo -o out.fifo -p empty.pid -L empty.log telnet localhost
Interact with telnet:
empty −w −i out.fifo −o in.fifo ogin ’my_user\n’

empty −w −i out.fifo −o in.fifo assword ’my_password\n’

Send commands to telnet with empty:

empty −s −o in.fifo who
empty −s −o in.fifo “ls −la /\n”

The same using STDIN:

echo who | empty −s −o in.fifo
echo “ls −la /” | empty −s −o in.fifo

Just cat output from telnet:

cat out.fifo

Read one line from out.fifo:

empty −r -i out.fifo

Send commands to telnet with ordinary echo:

echo “who am i” > in.fifo
echo “uname -a” > in.fifo

Kill a process with PID
1234:

empty -k 1234

or

kill 1234

Telnet session with automatically created jobs:

empty -f telnet localhost

Interact with telnet using job control:

empty −w ogin ’my_user\n’
empty −w assword ’my_password\n’

List automatically created jobs:

empty −l
PPID PID TYPE FILENAME
479 706 in /tmp/empty.479.706.in
479 706 out /tmp/empty.479.706.out
479 711 in /tmp/empty.479.711.in
479 711 out /tmp/empty.479.711.out
479 711 current

SECURITY

It is considered insecure to send a password in the command line like this:

empty −w assword ’my_password\n’

or like this:

empty −s ’my_password\n’

The reason is that the command line arguments are visible to the system while empty is running. Any local user can see them with ps(1), sometimes they are visible even remotely with finger(1). Also your server may have some monitoring tools which may store the output from ps(1) in their logs. There are also other, more complicated ways to compromise this information. Generally, you should take command line arguments as (possibly) visible to every one unless you really know what you’re doing.

empty with ’-s’ flag runs quickly in most cases, but still it can hang for a number of reasons (like fifo overloading), and even if it runs quick you still cannot be sure that no one will see its command line arguments even in this short time. empty with ’-w’ flag is even worse because it must wait for the keyphrase.

A better way to send the password to the supervised program is to read it from file:

empty −s [common options] <./password-file

or from a pipe:

get-password-of-user “$user” |empty -s [common options]

You should still make sure that you do not send any password via command line while creating this file, and certainly you should set some safe permissions to this file AND its directory (with the parent directories) before reading the password from the file OR writing the password to it.

Another possible way is to use your shell’s builtin (but see below):

echo “$password” |empty −s [common options]

Many shells like bash(1), csh(1) and FreeBSD’s sh(1) do not call external echo(1) command but use their own builtin echo command. Since no external command is started (the shell itself does all that echo(1) must do), nothing is shown in the process list. It is beyond this manual page to discuss the way to make sure that your shell uses the builtin command.

RETURN VALUES

If any error occurs empty usually exits with code 255. Otherwise zero or some positive value (see −w key) is returned.

SEE ALSO

expect(1),
chat(8)

AUTHOR

empty was made by Mikhail E. Zakharov. This software was based on the basic idea of pty version 4.0 Copyright (c) 1992, Daniel J. Bernstein but no code was ported from pty4. SECURITY section of this manual page was contributed by Sergey Redin.


OpenWrt 12.09 Aptitude Adjustment用Asterisk18のChan_Mobileを使う

またまた3ヶ月以上前の未完成記事。今後完成させるとは思えないのでこのまま公開。

ちなみにOpenWrt自身はBarrierBreaker 14.07の正式版が既に公開されているのだが、これに対応しているAsterisk18にはchan_mobileは含まれていない。


モバイルPSTNのPBX収容 | あくまで暫定措置としてのブログ

USB GSM/UMTSモデムを介したSMSやMMSの送信 | あくまで暫定措置としてのブログ

OpenWrt 12.09 Aptitude Adjustment用Asterisk18のchan_mobile – voip-info.orgChan_Mobileが用意されている。Bluetoothで携帯端末と接続しそれをモデムのように使うチャンネル・ドライバだが、同様な仕組みのMiax: Mobile Inter Asterisk eXchange Clientを使うことに失敗したのでこれも試してみることにした。

Asterisk – OpenWrt Wiki

HOWTO build and configure chan_mobile on Trixbox

stocksy.co.uk – Networks – Use an old Mobile Phone as a GSM Gateway in Asterisk

Asterisk Google Talk – voip-info.org

Asterisk connection with Mobile phone using Chan_Mobile | Hasnain Ali Blog

releasing PBX (supporting Asterisk) interface for LuCI (Page 1) — Community Releases / Announcements — OpenWrt” LuCI-PBXは手書きの設定ファイルを全て消してしまう上、Chan Mobileには対応していない。

いちいちパッケージをインストールするのが煩わしいので一気に
opkg remove $(opkg list | grep -e “^asterisk18” | awk ‘{print $1}’)

srtpはソフトフォン側でdisableしなくてはならない

ソフトフォンから携帯に
ソフトフォン側でコーデックとしてGSMのみ使うとすると

[Aug 14 05:23:43] WARNING[22417]: translate.c:162 framein: no samples for gsmtolin

同様にPCMUのみ使うとすると

[Aug 14 05:24:30] WARNING[22419]: translate.c:162 framein: no samples for ulawtolin

要はSLINとのトランスコーディングがうまくいってないのだが、これはおそらく呼び出し音だけの話で通話そのものには影響がない?

Using ffmpeg to convert to Asterisk Native SLN – voip-info.org

電話発信中にポーズを起こす記号

電話発信中にポーズを起こしたいことがる。例えば一旦自動応答システムに繋がってから、残りの番号(例えば内線番号)を入力したいとき。

Androidでは”,”で2秒ポーズ“;”もポーズするが、この場合はユーザが許可を出さないと次に進まない

ソフトバンクのガラケーSamsung 740SCでは、番号入力時に”*”を2回押すことで”P”記号になり、それがポーズを起こす模様