HNT-BT1の解析と100%活用術 2005.08.14


ハギワラさんのソニー「クリエ」対応BluetoothアダプターHNT-BT1をちょっと解析してみました
この製品は、Bluetooth機能を持たないクリエに、Bluetooth機能を付加するためのアダプタで
街歩きナビ「ルプラン」のGPS、GU-BT1と、Bluetooth携帯電話を使ったダイヤルアップに対応しています
また、Tシリーズ以降のコネクタであれば、OS4のクリエでも使えるという報告も有り
事実ボクのところでも、SJ20/Uや、何と乾電池マシンのSL10/Uでも使用可能で驚きました

このようにHNT-BT1は結構スグレ者で、クリエ愛好家の必須アイテムと言えると思います
クリエ終焉にも関わらず、このような製品をリリースして頂いたハギワラさんに厚く感謝申し上げます

さて、今回の記事内容ですが、以下の通りであります
1. 一般に公開されていない、HNT-BT1の内部機能と制御コマンドの解析
2. 付属ユーティリティBT_Ada_utlで不足する機能をカバーする活用方法


■HNT-BT1内部機能と制御コマンドの解析
HNT-BT1は、プロトコルスタックを内蔵した「シリアル−Bluetooth変換器」です
分解してはおりませんが、おそらく中身は このチップ が使用されていると思われます

通信の制御方法としては、以下の2つの方式が有るようです、
なお、方式の名称については、何と呼べば良いかわかりませんので
ここでは仮に「プリセット方式」「ダイレクト方式」と呼ぶことにします

プリセット方式
予めアダプタ側のメモリに、接続相手先の情報を登録しておくことで、
登録した接続相手先に自動的に接続する方式です
付属ユーティリティのBT_Ada_utlで設定した相手機器は、すべてこの方式での接続となります
この方式では「SPP」「DUN」どちらかのプロファイルが選択可能です

ダイレクト方式
アダプタ側のメモリに登録はせずに、その都度コマンドで、相手機器のデバイスアドレスを指定して接続する方式です
ルプランのアプリを解析したところ、GU-BT1との接続には、こちらの方式が使われることを確認しております
この方式では「SPP」のプロファイルのみ使用可能なようです

制御コマンド表
以下に、今回の解析作業で、確認出来たコマンドをまとめます

なお、コマンド発行に先立ち、まず、表の一番上にあります「+++」を実行し
コマンドモードに移行する必要があります → コマンドモードに移行すると橙色LEDが点灯します

また、コマンドモードから脱出する方法は以下の2通りです
 1. ポートをクローズする(RTSを落とす)
 2. ATDコマンドを実行する(ダイレクト方式のみ)

コマンド リザルト 機能の説明 コマンド実行例
+++ OK コマンドモードへ移行 コマンド:+++[CR]
リザルト:[CR][LF]OK[CR][LF]
ATI0 ベンダー名 ベンダー名の取得 コマンド:ATI0[CR]
リザルト:[CR][LF]HAGIWARA[CR][LF]
ATI1 プロダクト名 プロダクト名の取得 コマンド:ATI1[CR]
リザルト:[CR][LF]HNT-BTA1[CR][LF]
AT+RFWVER ファームウェアバージョン ファームウェアバージョンの取得 コマンド:AT+RFWVER[CR]
リザルト:[CR][LF]1.0.0[CR][LF]
AT+RLOCNAME アダプタ名 アダプタ名の取得 コマンド:AT+RLOCNAME[CR]
リザルト:[CR][LF]CLIE-BT Adapter[CR][LF]
AT+WLOCNAME OK アダプタ名の設定 コマンド:AT+WLOCNAME=CLIE-BT Adapter[CR]
リザルト:[CR][LF]OK[CR][LF]
AT+RTNM ターゲットデバイス名 ターゲットデバイス名の取得 コマンド:AT+RTNM[CR]
リザルト:[CR][LF]F900iT[CR][LF]
AT+WTNM OK ターゲットデバイス名の設定 コマンド:AT+WTNM=F900iT[CR]
リザルト:[CR][LF]OK[CR][LF]
AT+RTARGETADDR ターゲットデバイスアドレス ターゲットデバイスアドレスの取得 コマンド:AT+RTARGETADDR[CR]
リザルト:[CR][LF]0123456789AB[CR][LF]
AT+WTARGETADDR OK ターゲットデバイスアドレスの設定 コマンド:AT+WTARGETADDR=0123456789AB[CR]
リザルト:[CR][LF]OK[CR][LF]
AT+RPINCODE PINコード PINコードの取得 コマンド:AT+RPINCODE[CR]
リザルト:[CR][LF]1234[CR][LF]
AT+WPINCODE OK PINコードの設定 コマンド:AT+WPINCODE=1234[CR]
リザルト:[CR][LF]OK[CR][LF]
AT+RTARGET プロファイル番号 プロファイル番号の取得
番号は 1:SPP、2:DUN
コマンド:AT+RTARGET[CR]
リザルト:[CR][LF]1[CR][LF]
AT+WTARGET OK プロファイル番号の設定
番号は 1:SPP、2:DUN
コマンド:AT+WTARGET=1[CR]
リザルト:[CR][LF]OK[CR][LF]
AT+RSECMODE セキュリティモード セキュリティモードの取得
モードは 0:OFF、1:ON
コマンド:AT+RSECMODE[CR]
リザルト:[CR][LF]1[CR][LF]
AT+WSECMODE OK セキュリティモードの設定
モードは 0:OFF、1:ON
コマンド:AT+WSECMODE=1[CR]
リザルト:[CR][LF]OK[CR][LF]
AT+RENCRYPTION 暗号化モード 暗号化モードの取得
モードは 0:OFF、1:ON
コマンド:AT+RENCRYPTION[CR]
リザルト:[CR][LF]1[CR][LF]
AT+WENCRYPTION OK 暗号化モードの設定
モードは 0:OFF、1:ON
コマンド:AT+WENCRYPTION=1[CR]
リザルト:[CR][LF]OK[CR][LF]
AT+RCONTOUT タイムアウト秒数 タイムアウト秒数の取得
秒数は 5〜60
コマンド:AT+RCONTOUT[CR]
リザルト:[CR][LF]30[CR][LF]
AT+WCONTOUT OK タイムアウト秒数の設定
秒数は 5〜60
コマンド:AT+WCONTOUT=30[CR]
リザルト:[CR][LF]OK[CR][LF]
AT+INQ addr1 addr2 ・ ・ ・ addrN OK 通信可能範囲に存在する
相手Bluetooth機器の検索と
デバイスアドレスの列挙
コマンド:AT+INQ[CR]
リザルト:[CR][LF]0123456789AB[CR][LF]
     [CR][LF]BA9876543210[CR][LF]
     [CR][LF]OK[CR][LF]
AT+RNAME デバイス名 相手デバイスアドレスから
デバイス名への名前解決
コマンド:AT+RNAME=1234567890AB[CR]
リザルト:[CR][LF]F900iT[CR][LF]
AT+PINCODE OK PINコードのダイレクト指定 コマンド:AT+PINCODE=1234[CR]
リザルト:[CR][LF]OK[CR][LF]
ATD OK 相手デバイスアドレスのダイレクト指定と
コマンドモードから脱出
コマンド:ATD0123456789AB[CR]
リザルト:[CR][LF]CONNECT[CR][LF]
注1) 上表のコマンド実行例は、すべて正常終了の場合です
注2) コマンド実行が失敗した場合のリザルトは[CR][LF]ERROR[CR][LF]です
注3) シリアル通信の設定は、115200bps、8bit、パリティなし、ストップ 1bit、RTS-CTSハンドシェイクです


■パワーユーザの為の活用方法
ここまで本記事を読まれて、大部分の方は「何の事だかサッパリわからん」と思われているでしょう
さぁ、ここからは具体的な活用方法の事例ですよ〜

冒頭で申し上げた通りHNT-BT1は、GU-BT1Bluetooth携帯電話の組み合わせの運用であれば
何も問題無く、快適に使用する事が出来ます(その為の製品ですから当然です)

ところが、以前ボクの記事で紹介済みの、Mac miniのBluetoothアクセスポイントのような機器と
Bluetooth携帯電話の組み合わせで運用の場合はどうでしょう?

現状では、接続相手が変わるたびに、いちいちBT_Ada_utlを立上げ、
設定を変更し、PIN認証をやり直さねばなりません
パワーユーザのあなたは、こんな面倒な事をしたくありません、さぁどうしましょう・・・

そんな時こそ、上の解析結果が役に立つのです
いちいちBT_Ada_utlで設定するのではなく、Bluetoothアクセスポイントについては
ネットワーク設定でログインスクリプトを作り、上で申しました「ダイレクト方式」で接続させてみましょう


まず「接続の設定」でHNT-BT1(SPP)の接続を追加します


ボーレィトは115200にしてください


次に「ネットワークの設定」で新しい接続を追加、接続はHNT-BT1(SPP)とします


DNSアドレスとIPアドレスは自動取得にします(これはボクの場合)


ログインスクリプトを以下のように入力します
下図ではAT+PINCODE=1234となっていますが、ここはあなたがお使いのPINコードにしてください
下図ではATD0123456789ABとなっていますが、ここはあなたがお使いの相手デバイスアドレスにしてください



以上でネットワーク設定は完了です
さぁ、接続してみましょう、うまく接続出来ましたか?

自宅ではBluetoothアクセスポイント、外ではBluetooth携帯電話といったような運用が
これで快適に行えるようになりました、めでたし、めでたし


■まとめ
本記事において公開いたしましたHNT-BT1の制御コマンドは、ボクが勝手に解析したものです
よって正確性、信頼性に欠ける部分、実際の製品仕様とは異なる解釈が含まれているかも知れませんが
その点はご了承、宜しくお願い申し上げます
本記事が多くのpalmware作家の方や、パワーユーザの方の参考になりましたら幸いです


Copyright 2005. Mini's materials room. OSAKA JAPAN

[戻る]