2012年12月21日金曜日

FreeBSD 9.0 で ipfw + natd + em で通信速度が遅くなった

 前回に引き続き FreeBSD ネタ。 今,サーバーの更新をしようと思って,new machine に FreeBSD 9.0 をインストールしている。 そこでは ezjail を使って jail 環境を作り,その中で web server をたてよう,という作戦。 もともとあるシステムを移植したいので,元のサーバーで動いているサービスは全部動かないと困る。 その作業中に出くわした珍しいトラブルについて書こう。

 珍しいと言っても過去に遭遇された人が居たのだが,ネットで検索しても他の例がほとんど引っかからなかったので,珍しいんだと思っている。 どんなトラブルかというと,FreeBSD の比較的新しいバージョン(バージョン 7 以降ぐらいからおこっているみたい)で,network_interface として,emX か fxpX (X は整数。em1 とか fxp2 という名前の network_interface) を持つマシン上で,ipfw を使う際に,ipfw の中で divert port を使うと通信速度が極端に遅くなる,という症状。この divert port というのは,サーバーを通過するパケットを natd に渡して処理をしてもらうためのもので,ipfw というファイアーウォールの処理の初めの方で使われる。私が natd を使うのは,特定のポートに来たパケットを他のマシンに振り分けるのに使っている(なくてもいいという話もあるが…)。そのため /etc/ipfw.conf の初めの方に,上記の divert port へパケットを送れ,という処理を書いている。

2012年12月20日木曜日

FreeBSD, Perl の Net::SMTP::TLS ではまる

 Net::SMTP::TLS は2006年1月以来更新が止まっていて,2016年時点ではすでに非推奨になっている。 そこで,2016年11月に FreeBSD で,Perl で gmail からメールを送る:Net::SMTP::TLS をやめて,Net::SMTP,IO::Socket::SSL,Authen::SASL を使うことにした というのを書いたので,そちらも参照してみて欲しい。
1年ほど後に FreeBSD で Net::SMTP::TLS を使うには (2013/11 現在) というのを書いた。 そちらも参考にしてみて欲しい。
2009年3月に FreeBSD 上で FreeBSD,Perl スクリプトで,GmailのSMTPからメールを送るを書いた。その時は Net::SMTP::TLS のバージョンは 0.12 だった。

 その後も順調に Net::SMTP::TLS を使ってメールの配信をしていたのだが,FreeBSD 上で portupgrade をしたら,急にメールが送信できなくなってしまった。その時に出てきたメッセージが以下のようなもの。
  at /usr/local/lib/perl5/site_perl/5.16.2/Net/SMTP/TLS.pm line 181.
invalid SSL_version specified at /usr/local/lib/perl5/site_perl/5.16.2/IO/Socket/SSL.pm line 380.
[1] 40204 exit 2 ./Mail_gmail_smtp_587_namelist.pl test subject message "2011/01/01,07:00:00"
 実は,上記の出力はエラーを再現するためにさっき取ったものであり,Perl のバージョンが新しくなっている。このメッセージを見ると,Net::SMTP::TLS 自体がエラーを吐いてるのではなくて,Net::SMTP::TLS が呼び出している IO::Socket::SSL が文句を言ってる。どうも SSL_version がおかしいらしい。そんなこと言われてもなぁ…,と思ってしまった。この時の IO::Socket::SSL のバージョンは 1.76 だった。アップデートする直前の IO::Socket::SSL のバージョンは 1.59 だった。つまり,IO::Socket::SSL のバージョンが 1.59 から 1.76 に上がったらエラーが出るようになった(間に他のバージョンもあったはずだが,アップデートのタイミングでそうなった)。

2012年12月2日日曜日

Arduino コンパチマシン (Da Vinci 32u) で遊ぶ

 Strawberry Linux 社の ダ・ヴィンチ32U with Arduino Bootloader を買って遊んでみた。今回はその話を書こう。

 Strawberry Linux 社のDa Vinci 32u は,Arduino の Leonardo と同じ microcontroller(ATMEL 社の ATmega32u4)を搭載した小さな小さなコンピューターである。そのため,Arduino 社の提供している IDE (ソフトウェア統合開発環境,Integrated Development Environment)を利用でき,プログラムが簡単に組め,Arduino Leonardo コンパチと言ってもいい極小コンピューターとなっている。(註:形状やピンの配置が異なるので,ほんとはコンパチとは呼べないかも…)

Arduino というのはイタリアが発祥の極小コンピューターボードで,当初は Atmel 社の AVR シリーズの 8 bit コンピューター (microcontroller と呼ばれる) を小さな (6cm x 5cm ぐらい) ボードに載せ,その上や下にインターフェース用のボード (シールドと呼ばれる) を重ねられるようにしたものである。その最大の特徴はプログラムの作成とアップロードを容易にするプログラム開発環境 (IDE と呼ばれる)を用意したこと,みたい。それで使いやすいからということで有名になったみたい。最新版では ARM 社の 32 bit のチップを使ったもの(Arduino Due)も売り出されている。

2012年11月29日木曜日

GPS ログ 3 種を比較する

(追記)後日,GPS ログの比較(その2)というのを書いたので,そちらも見てみてください。
 最近気づいて気になっていた道路「砺波高岡道路」をバイクで走ってみた。 その時 3 種類の GPS 機器を持っていった。今回はその 3 種類の GPS のログを比較してみよう。

 きっかけは奈津子氏のサイト。 なにげに奈津子氏のサイトを見ていると,三重県名張市なのに「砺波高岡道路」と書かれた道路があるとのことだった。web 上の地図をいくつか見てみると,確かに Google の地図にも,Yahoo の地図にも「砺波高岡道路」と載っていた。(2012/11 時点。そのうち修正される可能性あり) そこで実際に走りに行ってみた。結果としては「伊賀コリドールロード」という広域農道が正式な名称みたいだった。

 そこで肝心の GPS のログの比較をしてみよう。 今回は以下の3つの機器の GPS データを比較した。 3つの機器とは,GARMIN 社製のポータブルナビ nüvi 3770V,Transystem 社製の TripMate 850, Adafruit が販売している Ultimate GPS unit,の3つである。 GARMIN 社の nüvi 3770V の心臓部はよく知らないが,TripMate 850 は MediaTek 社の MT3329 チップセットが使われているらしい。 また,Adafruit の Ultimate GPS unit は同じ MediaTek 社の MT3339 チップセットが使われている。 そこでこれら3種のログの比較をしてみた。 今回走ったルートのログで3つの機種の GPS ロガーとしての性能を比べてみた。 ちなみに,nüvi 3770V はバイクに RAM マウントで固定した。 TripMate 850 と Ultimate GPS unit は登山用の小さなバッグにいれてバイクのハンドル付近に固定しておいた。

2012年11月18日日曜日

GPS ロガーを作ってみよう〜♪

参考:Gms-g9 に挑戦してみた:後日,ロシアの GLONASS 等を受信できる GNSS ユニットに挑戦した。

Adafruit 社の Ultimate GPS unit と SparkFun 社で販売している OpenLog を組み合わせて,簡易 GPS ロガーを作ってみた。今回はその話について書こう。

 2011年からバイクのツーリングの記録用に GPS ロガーを使っている。GPS ロガーは,GPS の情報を時間と共に記録する乾電池や充電池で動く小さな装置。私が持っているのは台湾の Transystem というメーカーの TripMate 850 という機種。使われている GPS 用のチップが更新されたみたいで,現在 TripMate 850 は製造中止になったみたい。後継機種はいつ出るんやろ??

 2012年に入ってから,バイクにポータブルナビをつけてみた。その際,Bluetooth でナビと通信できるインターコムを買ってみたのだが,そのインターコムの電池のもちが悪い,というトラブルがあり,中身をごそごそいじってみた。その際,リチウムポリマーバッテリー(今後 LiPo バッテリーと記載)について調べたりした。調べる過程で LiPo バッテリーは模型ヘリコプターでよく使われているのを知ったりしたのだが,一番気になったのが Physical Computing の世界。Physical Computing はコンピューターのハードウェアをいじって遊ぶものなのだが,メインとなるコンピューター部分(Microcontroller と呼ばれる)と,モーターのコントロールユニットや測定素子のついたユニット(シールドと呼ばれるものや,Breakout Board と呼ばれるもの)を組み合わせていろいろなシステムを作るもの。自分で回路を組み立ててもいいし,シールドや Breakout Board をソケットで組み合わせるだけでもいい。その際,GPS センサーの Breakout Board として,台湾の MediaTek 社の MT3339 チップセットを使ったものが約 4,000 円と比較的安く売られているのを知った。MT3339 チップはきっと TripMate 850 で使われているチップの後継機種みたい。となると,自分で GPS logger を作れるかも,と思ってしまった。で,実際に作ってみた(組み立てるだけ,という感じだが…)。

2012年10月27日土曜日

最近 TripMate 850 の精度が悪い

 昨年(2011年)から,ツーリングなどの記録用に台湾製の TripMate 850 という GPS ロガーを使っている。 なかなか精度がいいので重宝しているのだが,最近,あまり精度よく記録してくれない…。 特にトンネルなどで GPS 衛星の捕捉ができなくなった後の記録の精度がよくないような気がする。 最近,バイク用にポータブルナビを買ったのだが, 記録としてはポータブルナビの方が道路をより良くなぞっている感じがする。 TripMate 850 も以前はもっと道にそった記録が残っていたのになぁ…。 もしや TripMate 850 が壊れた???

 今のところ TripMate 850 が壊れた,というよりは何か設定が悪くなったんだと考えている。 今考えている原因は AGPS。AGPS は,事前に GPS 衛星の位置情報を保持しておいて, GPS ロガーの起動時などに GPS 衛星の捕捉までにかかる時間を減らしてくれる機能。 当初はめんどくさかったので使っていなかったのだが,今年(2012年)の夏ぐらいに試してみた。 やり方は AGPS 用のツールを TripMate 850 本体内の micro SDカードに入れておいて, TripMate 850 をネットワークにつないである Windows マシンに USB ケーブルでつなく。 そして Windows マシンから TripMate 850 内の AGPS ツールを起動すると, 自動で Transystem 社 (TripMate 850 のメーカー) のサイトから情報を TripMate 850 に入れてくれる。 問題は AGPS のデータには有効期限があるという点。 有効期限は6日程度だったと思う。 TripMate 850 の記録データがよくない,と感じた時は, 事前に AGPS のデータを更新するのを忘れてしまっていた。 と言うことは,TripMate 850 は有効期限が切れた AGPS のデータを持っていたことになる。 そのため,GPS 衛星が捕捉できなくなった時に,間違った推測情報に基づいて捕捉を試みようとする事になり, うまく捕捉できない,あるいは捕捉できる衛星の数が少なくなる,と考えられる。 ただし,まだちゃんと検証できたわけではないのではっきりとした事は言えないが…。 今シーズンもまだ数回バイクで走れそうなので,その際に記録を取って確認してみようと思っている。

 AGPS のデータが無かったことにできるといいのだが,できるのかなぁ??? できないと毎回 AGPS のデータを更新しておかないとあかんからめんどくさいなぁ…。
(追記)この間紀伊半島を走った時に TripMate 850 を使ってみた。ナビの記録と比べると若干いまいちだったが,それなりの精度はでていた。また,小さなユニットを組み合わせたお手製の GPS logger と比べると精度はよかった。どうも電波の具合で精度がかなり違うみたいだった。TripMate 850 とお手製ロガーはジャケットに入れていたのだが,入れる場所が違っていた。ナビと同じように体から離した場所に置く方がいいのかもしれない。うーん,まだまだ調べることがありそうだ。

2012年10月17日水曜日

バイクにナビ作戦(その6):SENA SMH10 に挑戦・電源トラブルとその対処

(追記)後日,Sena SMH10 のファームウェアをアップデートしたというのを書いたので,そちらも見てみてください。
バイクにナビ作戦(その5):AQUA BOX による防水化に戻る

(注意) ここの記載にあるような処理を行うと メーカーの保証が受けられなくなると思います。 もし行う場合は,くれぐれも自己責任で行なってください。 ここの記述を見て作業したと言われても責任はもてません。 また,ここでの作業はとても繊細な作業が要求されます。 自己責任で作業される方は壊れても仕方ないという覚悟を持って作業してください。
 ポータブルナビ・GARMIN 社製 nüvi3770V とつなぐために Bluetooth Intercom を購入してみた。 当初,サインハウスの B+COM を候補にしていたが,なにせ高価なので二の足を踏んでしまった。 しかし,いろいろネットで調べていると, 韓国の SENA 社製の Bluetooth Intercom である SMH10 が良さそう,というのを知った。 ネットで購入すれば,並行輸入品だと B+COM の半額以下になりそうだった。 馴染みのバイク屋で聞くと何かあった時の対応がよくない,と言われたが, 思い切って並行輸入品の SENA SMH10 のデュアルバックをネットで購入してみた。 製品はアメリカからの輸入品だった。当然説明書は英語。 デュアルパックなので一つの箱に全て2個ずつ入っていた。 さっそく,2個のうちの一方を満充電にして磐梯・谷川ツーリングにつけて行ったのだが, 走りだして1時間もするとバッテリーがなくなってしまった。 ネットで見ていた限りでは普通に10時間以上使えるはずなのに,それが1時間ぐらいしかもたなかった。 磐梯・谷川ツーリングではとりあえず1セットしか持って行ってなかったので, 仕方なく SMH10 なしでツーリングを乗り切った。

 磐梯・谷川ツーリングから帰った後でツーリングに持っていかなかった方の SMH10 をテストしてみた。 テストの方法は,SMH10 を nüvi3770V と Bluetooth でつなぎ, nüvi3770V で音楽をかけてそれを SMH10 で鳴らし続けてみた。 nüvi3770V は途中でバッテリー切れを起こさないように AC アダプターにつないでおいた。 その状態で SMH10 が何時間もつかを試した。 その結果,少なくとも9時間は正常に機能していた。 後日ツーリングで使ってみたところ,高速道路だと風切り音で多少聞き取りにくい事もあったが, 一般道では快適に聞き取ることができ, タラタラしたペースで走っている時でも気晴らしに音楽を聞きながらツーリングすることができた。 このマシンはなかなか使える。

2012年9月23日日曜日

バイクにナビ作戦(その5):AQUA BOX による防水化

バイクにナビ作戦(その4):とりあえずバイクに設置に戻る

(より多くの写真を見たい人は Matsup's Motorcycles を見てくださいな)

磐梯吾妻スカイラインと谷川岳ツーリングに行き,さっそく購入したポータブルナビ,GARMIN nuvi3770V を使ってみた。印象としては,なれない土地だとナビはやっぱり便利だった。しかし,どうしても防水性能が気になった。やはり防水の袋をかぶせるだけの簡易防水だとかなり頼りない。それに雨なら上から袋をかぶせればいいかもしれないが, 濃い霧の中などだと袋の下が大きく開いているためにナビがビショビショになりそうな気がした。 そこで根本的な解決を図るべく,今回の作戦となった。

そこでツーリングの最後に新宿にある GPS ストアに行き,RAM マウントの AQUA BOX MW (RAM-HOL-AQ6U) の実物を見せてもらった。まずは静電容量方式タッチパネルが使えるか?という問題。これは意外にも,使えること,がわかった。なんで使えるんでしょ???さらに,その場で検討したところ,どうやら nüvi 3770V にクレードルをつけた状態で,ナビ本体とカーアダプター+シガーソケット,FM-VICS の制御箱が AQUA BOX MW に収まりそう,ということがわかった。 (たぶん大丈夫と思っただけで,実はギリギリだったのが後でわかってちょっと焦った…)

2012年9月20日木曜日

バイクにナビ作戦(その4):とりあえずバイクに設置

バイクにナビ作戦(その3):ナビを購入に戻る

バイクにナビを付けたくていろいろ悩んだ挙句,最終的に GARMIN 社製の nuvi3770V を買った。今回はナビをバイクに付けた報告。 この後で防水機能がある RAM マウントの AQUA BOX MW を導入したが,ここではそれ以前にまずはナビを載せた時の状況を述べている。アクアボックスに関してはこの次で書く予定。
(より多くの写真を見たい人は Matsup's Motorcycles を見てくださいな)

 作戦としては,マウントは RAM マウントの nüvi 3770V 用ホルダー,ホルダー専用ボール台,3 インチ金属アーム,2ボールハンドルバーベースを使ってみた。 固定位置は右ハンドルのブレーキレバーのホルダーと共締めでハンドルバーベースをつける。 その上のボールにアーム+ nüvi 3770V 用ホルダーを載せる作戦。 場所や向きは,メーター類が見えにくくならず,顔に近すぎず,ハンドルを切った時に当たらない場所を考えた。 大体はよかったが,唯一気に入らなかったのがナビの向き。 アームにはボールが付いている柱と干渉しないように両端に切り込みがあるが, この向きが両端で同じ方向で固定されているため,融通が効かない。 そのため,ナビの向きが若干よそを向いていて,ナビを見る時に首をかしげないといけない感じになってしまった。 (後日,樹脂製だけど右と左の相対的な位置を変更できるスイベルアーム (RAP-B-200-12U,樹脂製))にしてみた)

2012年9月10日月曜日

バイクにナビ作戦(その3):ナビを購入

バイクにナビ作戦(その2):バイクマウントの検討に戻る

バイクにナビを付けたくていろいろ悩んだ挙句,最終的に GARMIN 社製の nuvi3770V を買った。今回は届いたナビの報告。
(より多くの写真を見たい人は Matsup's Motorcycles を見てくださいな)

nüvi 3770V は GARMIN とは思えないような薄く洒落たポータブルナビ。厚みは 8.9 mm 弱。他に電子コンパス,FM-VICS,高解像度タッチスクリーン,Bluetooth,みちびき衛星対応,などの特徴を持っている。今回は東京・新宿にある GPS ストアのオンラインショップで購入してみた。価格は 32,100 円だった。ネットで見るともう少し安く売っている所もあったが,今後のサポートを考えてこのお店にしてみた。

nüvi 3770V 本体は,ディスプレイ以外には電源スイッチとクレードル用のコネクター,電源用の microUSB コネクター,しか付いていない。操作は基本的にタッチパネルで行うので,とてもシンプルな作りになっている。microUSB コネクターは,電源も供給してくれるが,当然コンピューターとの接続にも使用する。コンピューターにつなぐ際,ナビ本体が GARMIN モードとして接続するか大容量記憶装置として接続するかを尋ねてくる。GARMIN モードとして接続すると,ナビはコンピューターから独立していて単に電源を供給してもらっている状態になる。一方,大容量記憶装置として接続すると,コンピューターへデータをコピーしたり,逆にコンピューターからファイルをコピーしたりできるようになる。