@kousaker

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

ラズパイで「dns-sd」コマンドを実行できるようにしたい

解決したいこと

NatureRemo のインスタンス名を取得したく、ラズパイで「dns-sd -B _remo._tcp」を実行したのですが、
「-bash: dns-sd: コマンドが見つかりません」と表示されて失敗します。
ラズパイはデフォルトでdns-sdコマンドを実行できるような内容の記事がありましたが、私の環境では実行できませんでした。
dns-sdコマンドをラズパイで実行できるようにするにはどうすればよいでしょうか。

発生している問題・エラー、試したこと

1.「dns-sd -B _remo._tcp」を実行したが、失敗

$ dns-sd -B _remo._tcp
-bash: dns-sd: コマンドが見つかりません

2. コマンドが見つからないとのことなので、 avahi-utils のインストールを試してみるも、失敗

$ sudo apt install avahi-utils
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
以下のパッケージが新たにインストールされます:
  avahi-utils
アップグレード: 0 個、新規インストール: 1 個、削除: 0 個、保留: 0 個。
52.0 kB のアーカイブを取得する必要があります。
この操作後に追加で 126 kB のディスク容量が消費されます。
エラー:1 http://raspbian.raspberrypi.org/raspbian stretch/main armhf avahi-utils armhf 0.6.32-2
  404  Not Found [IP: 2a00:1098:0:80:1000:75:0:3 80]
E: http://raspbian.raspberrypi.org/raspbian/pool/main/a/avahi/avahi-utils_0.6.32-2_armhf.deb の取得に失敗しました  404  Not Found [IP: 2a00:1098:0:80:1000:75:0:3 80]
E: いくつかのアーカイブを取得できません。apt-get update を実行するか --fix-missing オプションを付けて試してみてください。

3. 「apt-get update」を試してみるが、失敗

$ sudo apt-get update
無視:1 http://raspbian.raspberrypi.org/raspbian stretch InRelease
エラー:2 http://raspbian.raspberrypi.org/raspbian stretch Release
  404  Not Found [IP: 2a00:1098:0:80:1000:75:0:3 80]
ヒット:3 http://archive.raspberrypi.org/debian stretch InRelease
パッケージリストを読み込んでいます... 完了
E: リポジトリ http://raspbian.raspberrypi.org/raspbian stretch Release には Release ファイルがなくなってい ます。
N: このようなリポジトリから更新を安全に行うことができないので、デフォルトでは更新が無効になっています。
N: リポジトリの作成とユーザ設定の詳細は、apt-secure(8) man ページを参照してください。

4.「--fix-missing」オプションを付けて試してみるも、失敗

 $ sudo apt install avahi-utils --fix-missing
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
以下のパッケージが新たにインストールされます:
  avahi-utils
アップグレード: 0 個、新規インストール: 1 個、削除: 0 個、保留: 0 個。
52.0 kB のアーカイブを取得する必要があります。
この操作後に追加で 126 kB のディスク容量が消費されます。
エラー:1 http://raspbian.raspberrypi.org/raspbian stretch/main armhf avahi-utils armhf 0.6.32-2
  404  Not Found [IP: 2a00:1098:0:80:1000:75:0:3 80]
E: http://raspbian.raspberrypi.org/raspbian/pool/main/a/avahi/avahi-utils_0.6.32-2_armhf.deb の取得に失敗しました  404  Not Found [IP: 2a00:1098:0:80:1000:75:0:3 80]
E: Internal Error, ordering was unable to handle the media swap
0 likes

3Answer

そもそも使用しているOSのバージョンが古過ぎるようです。

"stretch" (Debian 9 相当) を使用されているようですが、リポジトリからは既にパッケージが削除されておりサポート対象外と思われます。dns-sd パッケージに限らず、その他のパッケージも新規インストールや更新ができない状態のはずです。

最新版の "12 (bookworm)" もしくは一つ前の "11 (bullseye)" 辺りにOS自体を入れ替えることを検討してください。

2Like

Comments

  1. @kousaker

    Questioner

    @cubick
    ご回答ありがとうございます。
    OSを入れ替えて再試行してみます。

  2. @kousaker

    Questioner

    @cubick
    OSは bullseye を入れて、sudo apt updatesudo apt upgrete を実行後に
    sudo apt list avahi-utilsapt list avahi-daemon でインストールされていることを確認しました。
    その後に dns-sd -B _remo._tcpを実行したのですが
    「-bash: dns-sd: コマンドが見つかりません」のメッセージが表示され、症状は変わらずでした。

    $ sudo dns-sd -B _remo._tcp
    sudo: dns-sd: コマンドが見つかりません
    

    代わりに avahi-resolve は実行できるようになったので、NatureRemo のIPアドレスで検索してみたのですが、タイムアウトで取得できませんでした。

    $ avahi-resolve -4 -a 192.168.10.XX
    Failed to resolve address '192.168.10.XX': Timeout reached
    
  3. そもそも「NatureRemo の インスタンス名 」はなぜ必要なのでしょうか?IPアドレスであればルータの管理画面や、同じネットワークに繋がっているAndroid等からも (アプリを使ったりして) 比較的簡単に確認することが可能なはずです。

  4. NatureRemoのIPアドレスはルーターがDHCPで割り当てるからだと思いますよ…

  5. @kousaker

    Questioner

    DHCP固定割当エントリ機能で NatureRemo のIPアドレスを固定して、NatureRemo のLoacl APIを実行してみました。
    結果、応答なし。

    $ curl -X 'GET' 'http://192.168.10.**/messages' -H 'accept: application/json'
    curl: (28) Failed to connect to 192.168.10.** port 80: 接続がタイムアウトしました
    

    Nature Remo側に問題がありそうな気がしてきました。
    メーカーに問い合わせてみます。

    @cubick様、@itagagaki
    何度もお付き合いいただきましてありがとうございます。
    進展がありましたら改めてご報告いたします。

Comments

  1. @kousaker

    Questioner

    @itagagaki

    実行してみたところ、0.6.32-2がインストールされているようでした。

    $ apt list avahi-daemon
    一覧表示... 完了
    avahi-daemon/oldoldstable,now 0.6.32-2 armhf [インストール済み]
    
    $ apt list avahi-utils
    一覧表示... 完了
    avahi-utils/oldoldstable 0.6.32-2 armhf
    

    そうなると、1.の「コマンドが見つかりません」はインストール以外の理由でしょうか。

  2. dns-sdの代わりにavahi-browseコマンドは使えますか?

  3. @kousaker

    Questioner

    avahi-browseも(ついでにavahi-resolveも)コマンドが見つかりませんでした。
    本当にインストールされているか不安になってきました。。。

     $ avahi-browse
    -bash: avahi-browse: コマンドが見つかりません
    
    $ avahi-resolve
    -bash: avahi-resolve: コマンドが見つかりません
    
  4. @kousaker

    Questioner

    OS入れ替え後、dns-sdは相変わらず使えませんが、avahi-browseは使えるようになりました。
    avahi-browse -a -tを実行すると、NatureRemo に該当しそうな情報は表示されず、
    NatureRemo に割り当てたIPアドレスでavahi-resolveを実行したところ、タイムアウトになりました。

    $ avahi-resolve -4 -a 192.168.10.XX
    Failed to resolve address '192.168.10.XX': Timeout reached
    
  5. aptでlibavahi-compat-libdnssd-devをインストールできますか?

  6. @kousaker

    Questioner

    特にエラーも無くlibavahi-compat-libdnssd-devをインストールすることが出来ました。
    その後dns-sd -B _remo._tcpを試してみましたが、
    変わらず「-bash: dns-sd: コマンドが見つかりません」のメッセージが出ました。

    まだ何かが足りないようです。。

  7. Raspberry Pi OSからavahi-browseで見つからないということなんですが、たとえばMacOSやWindowsからdns-sdで探したらNatureRemoは見つかっていたりするんでしょうか?

  8. @kousaker

    Questioner

    Macは保有していないため試しておりません。
    Windowsで試すと
    「Browsing for _remo._tcp」が表示されたまま、以降応答なしとなります。
    なので現状、NatureRemoのホスト名を取得できておりません。

    ほかにルーター(Aterm:PA-WX11000T12(と今は使ってないAterm:WG2600HP3))で
    情報がせき止められているのかとも思い、設定画面を見てもそれらしい設定項目もなく。。。

  9. うーん、しかしiPhoneアプリからはコントロールできているわけですよね?
    WindowsではBonjourサービスは動いているんですよね?
    image.png

  10. @kousaker

    Questioner

    iPhone は持っていないので iPhone アプリからはコントロールできているかは不明です。
    Windows では Bonjour サービスは以下の通り動いております。

    image.png

    ※ WindowsへのBonjourインストールは、下記サイトを参考に Microsoft Store からではなく、ブラウザで直接ダウンロードするバージョンの iTunes をインストールしました。
    https://hiragram.github.io/koigao-website/windows_setup_bonjour.html

  11. あ、勝手にiPhoneかと思っていましたがAndroidでしょうか?それともNatureRemoは(ルーターにはつながっているのでしょうけど)他の機器とつながった実績はまだ無かったりするのでしょうか?

  12. @kousaker

    Questioner

    Androidユーザーです。
    NatureRemoでは、個別で追加した固有ボタンを Cloud API で実行できることを確認しております。
    よって他の機器との実績はあると認識しております。

    Local API で実行するために必要なホスト名を取得したく、今回の質問をさせていただきました。

  13. なるほど。Cloud APIって、たぶん外部のサーバーが間にはさまって間接的にやりとりするもので、機器同士が直接通信してはいないわけですよね、きっと。で、今回はじめてLAN内で直接対話しようとしていて、まだZeroconf/Bonjour/Avahiで直接つながった実績はないと。。

    これら(Avahi等)に使われているのは5353/udpということなので、まずは、このポートが通るようになっているかどうか、ルーターやRaspberry Pi OS、もしくはWindowsの設定を確認してみることかなと思います。パケットフィルタとかファイヤーウォールとか。

  14. @kousaker

    Questioner

    パケットフィルタは添付画像の内容で設定し、Windowsのファイアウォールは一時的に無効にして試したところ、
    Raspberry Pi および Windows 共に症状に変化無しでした。
    image.png

  15. それならイケそうですけどね。。ちょっとブラウズできない理由が思いつきません。いちど関係するもの全部を再起動してみるとか。。

    もし何か気づいたら書かせていただきます。

  16. @kousaker

    Questioner

    @itagagaki
    何度もお付き合いいただきありがとうございます。
    NatureRemo側に問題がありそうな気がしてきたので
    メーカーに問い合わせしてみます。

    進展がありましたら改めてご報告いたします。

@itagagaki様、@cubick

タイトルにある「dns-sd」コマンドは使えずじまいですが、
最終目的であるNatureRemo のインスタンス名を取得出来ましたのでご報告いたします。
原因はルーター設定にありました。

Atermの場合、「リモートワークWi-Fi(ネットワーク分離機能)」を”OFF”にすることで、
avahi-browse -a -tでNatureRemoが表示されPINGも通り、Local APIも正しく実行出来ました。

解決してみれば全く筋違いなところを調べており
お二方の貴重なお時間をいただいてしまい申し訳ございません。
改めてご協力に感謝いたします。

本質問はクローズいたします。

0Like

Your answer might help someone💌