IRKitで体験した、ちょっと不思議な現象
参照:IRKit
暫く前から、IRKitを操作するアプリ(QuickIR)が動作しなくなっていたので
久しぶりの IRKitネタです。
QuickIRも随分と長いことアップデートしていないし、バグだったら原因を調べなきゃなぁ、とは思っていたのですが、他の事をやっていたり風邪で体調を崩したりと、色々あって放置状態でした。やっと2週間ほど前から調べ出したのですが、直接の原因は、保存してあるIRKitデバイスのホスト名("IRKitXXXX.local" と言ったBonjourのホスト名)から、socket.gethostbyname()でIPアドレスが引けなくなっている事でした。これは Bonjour の DNS Service Discovery(DNS-SD)で名前解決ができなくなっているという意味だと思われました。
QuickIRのモジュール"resolve_irkit.py" で IRKitを検索させても検出されません。それなら、Bonjour や Avahiのコマンドで直接検索させたらどうかと試してみたところ、
$ dns-sd -B _irkit._tcp
Browsing for _irkit._tcp
DATE: ---Wed 20 Sep 2016---
10:21:41.663 ...STARTING...
|
上はMacで実行した際の結果ですが、このまんまダンマリ。IRKitは検出されません。が、一旦IRKitの電源を切って再度電源を入れると、IRKitの LEDが青色点灯になった時に
$ dns-sd -B _irkit._tcp
Browsing for _irkit._tcp
DATE: ---Wed 20 Sep 2016---
10:21:41.663 ...STARTING...
Timestamp A/R Flags if Domain Service Type Instance Name
10:28:15.033 Add 2 4 local. _irkit._tcp. IRKitXXXA
10:28:25.137 Rmv 0 4 local. _irkit._tcp. IRKitXXXA
|
という具合に、一度だけ現われ(Add)ますが、約10秒後に消失(Rmv)しています。この現象は、Raspberry Piの Avahiでも同じで、
# avahi-browse -r _irkit._tcp
+ eth1 IPv4 IRKitXXXA _irkit._tcp local
= eth1 IPv4 IRKitXXXA _irkit._tcp local
hostname = [IRKitXXXA.local]
address = [192.168.xx.yy]
port = [80]
txt = []
- eth1 IPv4 IRKitXXXA _irkit._tcp local
|
といった状態。こちらも IRKitが起動したとき一度だけ現われて暫くすると消えてしまっていました。この事から、Mac が故障したとか異常な状態になっているわけではなく、IRKitか家のネットワークに問題がありそうに思えました。
しかし、iPhoneの IRKit操作アプリ(リモコンNK)からは IRKitの操作は問題なくできています。LANに接続しているNASや他のWi-Fiデバイス等にも問題は起きていません。
IRKitの故障かファームウェアのバグ、暴走などを疑って、IRKitをリセットして再セットアップを何度か行ってみましたが、現象は一向に変わらず。手詰まりになって来たため、IRKitのサポートにメール連絡を入れたところ、すぐに返信をいただきました。(素早い対応に感謝!)内容を要約すると、
- このような現象が経年劣化(故障)で起こるようになるとは考えにくい
- ルーターとの相性や設定との組み合わせでこういった問題が現れる可能性はありそう
- 可能なら他のルーターに接続した際にも同様の問題が現れるか試してほしい
との事でした。ルーターの設定と言われて、ハタと思い出した事がありました。そう言えば、1ヵ月ほど前に設定を少し変更していたのでした。
光TVやオンデマンドのストリーミングサービスなどを導入し、セットトップBox、iPhoneやタブレットなど複数のデバイスがWi-Fiで繋がっている場合、視聴を複数のデバイスで行おうものなら Wi-Fiの帯域を使い切ってしまいます。誰かが番組を観始めると Wi-Fiに繋がらない、すぐに接続が切れるなんて現象が起きるそうです。
この現象は、ストリーミングサーバーと各デバイスがユニキャスト(1対1)接続になっているからで、これを回避するにはストリーミングサーバーと各デバイスをマルチキャスト(1対多)接続してネットワーク負荷を軽減させると良いそうな。(実のところ、良く理解できてません。(^^;) まったくネットワークインフラは難しい・・・)
ただマルチキャストのために全帯域を使い切ってしまっては本末転倒ですよね。で、ウチのWi-Fiルーターではマルチキャスト伝送に使用する帯域に制限をかけられるようで、具体的には、こんな具合に設定。
光TVなどのマルチキャスト・ストリーミングサーバーは IPv6なので、「IPv6ブリッジ」を有効にします。
次に、無線LAN設定の拡張設定で「IPv6マルチキャスト」を「すべて転送する」にし、「マルチキャスト伝送速度(Mbps)」を利用するストリーミングサービスの伝送速度に合わせて設定します。(この設定値で帯域制限がかかるのではないかと・・・)
SD画質で2〜4Mbps程度、HD画質で6〜8Mbps程度になるらしいので、「マルチキャスト伝送速度(Mbps)」をこれより少し高目に設定してやれば帯域不足でコマ落ちやノイズの発生は起きないのでは?と適当な考えで「11Mbps」(6の上は11なのです)に設定してみたのでした。
実は、この設定を(2.4GHz帯Wi-Fiに)行ったことが IRKitが Bonjourで検出されなくなった原因だったのでした。
更に色々と試したところ、「IPv6ブリッジ」と「IPv6マルチキャスト」とは関係なく(それぞれ「使用しない」、「ストリーミングのみ転送しない」に戻す)、本現象に関係するのは「マルチキャスト伝送速度(Mbps)」だけで、この設定値を「6Mbps」以上にすると現象が発生すると言うことが分かりました。
ですが、これ以上の詳しい原因は分かりません。(根本原因は自分の理解不足です。申し訳ない。m(_ _)m)Bonjourもネットワークに接続した時に、LAN内の全デバイスに向けて自分の提供サービス等をブロードキャストする筈なので、これもマルチキャストの一種になるのかなぁ?そのとき「マルチキャスト伝送速度(Mbps)」の設定が影響して、「自分はこんなサービス提供できま〜す」、「あ、やっぱりいいです。忘れてくださ〜い。」と言ったことになるとか・・・
と言うことで、今回の教訓は「良く理解できない(拡張)設定はいじるな!」です。
ところでIRKitですが、現在はどこも在庫切れ状態ですね。もう生産終了なの?今は新製品の準備中と言うことは知っていますけど、できれば併売もして欲しいですと尋ねてみたところ、『現在はNature Remo(新製品)の開発を進めていますが、IRKitは依然として人気があるので、もう一度生産しようと考えています。』とのお返事をいただきました。暫くしたら在庫が復活するでしょうとの事。IRKitの追加購入を考えている方、まだ手にしていない方々、もう暫く待ちましょう。ワタシはもう1〜2台購入したいと思っています。
|