RaspBMC を Raspberry Pi に、XBMC を Windows ラップトップに、UPnPlay を Android デバイスにインストールしました。Raspberry Pi は常にオンになっており、システムのサーバーとして機能することを目的としています。
関連する IP アドレス:
192.168.0.18:RPi
192.168.0.13: ラップトップ
192.168.0.1: ルーター
Android デバイスを WiFi に接続し、UPnPlay をオンにするか、ラップトップで XBMC を開始すると、以前は Raspberry Pi がデバイスのリストに表示されるまでに 5 ~ 10 分の遅延がありました。ただし、過去数週間、他のサービス (XBMC または UPnPlay) の実行中に Pi を再起動しない限り、Pi はまったく表示されません。Pi に ssh および sftp で接続でき、両方のデバイスから問題なく RaspBMC の Web インターフェイスにアクセスできます。
UPnP ネットワークの検出/通知メッセージが失われたりブロックされたりする可能性はありますか? これをどのように調査しますか?ネットワークに関する私の知識は、ポート転送に限られています。
私は UPnP の代替プロトコルの提案を歓迎します - それは私が遭遇した最初のプロトコルであり、以前のセットアップ (Apple TV にメディアを送信するデスクトップ上の XBMC) で問題なく動作しました。
編集:
ラップトップで Wireshark を使用したいくつかの分析では、ラップトップが期待どおりに動作していることを示しています。M-SEARCH および NOTIFY パケットを SSDP 経由で定期的に 239.255.255.250 (マルチキャスト アドレスであると思われます) に送信しています。ただし、RPi はユニキャスト パケットでこれらのパケットに応答しないだけでなく (Wikipedia で推奨されているように)、ブート時を除いて SSDP パケットも送信しません。
私は Wireshark とネットワーク分析全般に非常に慣れていませんが、ガイダンスやアドバイスをいただければ幸いです。
私が使用した Wireshark フィルターは "(udp.dstport == 1900 or ip.addr == 192.168.0.18) and !(ip.src == 192.168.0.1)" で、192.168.0.18 は私の RPi のアドレスです。これは正しいことですが、私が言ったように、私は Wireshark に非常に慣れていないので、間違っていたら訂正してください! 特に、M-SEARCH に対する RPi のマルチキャスト応答は ip.src = 192.168.0.18 であると想定しましたが、確かではありません (おそらく 192.168.0.1 または 239.255.255.250 である可能性があります)。
編集2:
この投稿に導かれて実行し/sbin/route -n
、次の出力を得ました。
pi@raspbmc:~$ /sbin/route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.0.1 0.0.0.0 UG 0 0 0 eth0
192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
これをどのように解釈すればよいかわかりませんが、リンクされたスレッドの他のコメントから判断すると、マルチキャストのエントリが欠落しているようです。繰り返しになりますが、リンクされたスレッドからのこのアドバイスに従って、 を実行しsudo route add -net 239.0.0.0 netmask 255.0.0.0 eth0
、これを に追加して/etc/rc.local
、RPi を再起動しましたが、UPnP クライアントのネットワーク デバイスのリストにまだ Pi が表示されません。また、マルチキャスト アドレスとして 239.255.255.250 を使用しようとしましたが (上記の編集 1 を参照)、エラーが発生しましroute: netmask doesn't match route address
た。
繰り返しますが、リンクされた投稿に従って、インストール済みの tshark を実行して実行しました (ネットワーク上の他のデバイス間で多くのトラフィックが見sudo tshark -i et0 multicast | grep 192.168.0.18
られたため、追加しました)。grep
これが出力です。
RPi はNOTIFY
パケットのクラスターを送信しますが、非常にまれです (このレコードは 20 分近くをカバーし、2 つのクラスターのみが送信されます)。ARP
パケットはここで説明されているとおりであると思います。これは、一部のデバイスがネットワーク上の他のデバイスの MAC アドレスを欠いていることを意味します。これは潜在的に心配なことではありますが (特定のデバイスは同じアドレスを 2 回以上要求します - なぜ彼らはこれを「忘れる」のですか?)、おそらくもっと心配なのは、これらのパケットが送信される頻度が低いことと、送信された場合でも、 、ネットワーク上のクライアントはまだ RPi を取得しません。
要約すると、次のようになります。
RPi は
NOTIFY
パケットを送信していますが、非常にまれです。これを制御する方法はありますか?RPi が
NOTIFY
(起動時ではなく、通常のイベントの過程で) パケットを送信した場合でも、ネットワーク上のクライアントはその存在を認識しません。M-SEARCH
RPi は、他のデバイスから送信されたパケットに応答していないようです。