前回の投稿で、接続できなくなったDLNAクライアントは、メディアサーバー側で使用しているライブラリーの実装変更であることがわかり、ライブラリーを修正しました。今回は、それを使い、Synologyに修正モジュールを作成してもらいました。
一部のDLNAクライアントで接続できなくなった問題の原因となっているライブラリー
Snylogyのサポートからの情報によると、Synologyの「メディアサーバー」が使用している今回の問題の原因となったライブラリーは libupnp (pupnp) です。
The Portable SDK for UPnP* Devices (libupnp)
このライブラリーは、以前は Source Forge で管理されていましたが、現在は、GitHubで管理されています。
https://github.com/pupnp/pupnp/
このライブラリーは、ユニバーサル プラグ アンド プレイ(UPnP)の実装を容易にするためのライブラリーです。
DLNAでは、機器発見にUniversal Plug and Play(UPnP)で規定されたSimple Service
Discovery Protocol(SSDP)を用います。そのため、Synologyの「メディアサーバー」ではUPnPを実現するために、このUPnPのライブラリーを利用しています。
libupnp (pupnp)の接続できない問題に対応するissue
Synologyのサポートから連絡があったように、接続できない問題に対応するissueがGitHubに登録されています。
[1.14.6] Compatibility issues #342
https://github.com/pupnp/pupnp/issues/342
このissueによると、
pupnp/upnp/src/genlib/miniserver/miniserver.c の host_header_is_numeric() 関数の実装の影響で、HttpリクエストヘッダーのHostの値として、ポート番号が省略されているとレスポンスを正しく返えせない問題がある。 RFC7230 によると、Hostの値としては、ホスト名は必須であるが、ポート番号は省略可能とされている。なので、この関数の実装に問題がある。
とのこと。コードを見てみると、たしかに、ポート番号が省略されたときの処理が適切ではないです。
修正とプルリクエスト
さて、「メディアサーバー」は、使用しているライブラリーであるlibupnp (pupnp)が修正されれば、将来のバージョンで取り込む予定であるとのことです。
「メディアサーバー」の次回のバージョンで修正を早期に取り込んでもらえるように libupnp (pupnp) を修正し、プルリクエストを発行しました、そして、想定より早く、2週間後の2022年6月16日にマージされました。
libupnpの新バージョンのリリース
しかし、プルリクエストの修正コードはマージされましたが、ライブラリーを新しいバージョン(1.14.13)としてリリースがされていませんでした。メディアサーバーに取り込んでもらうためには、新しいバージョンとしてリリースされる必要があります。
その後、進捗があり、2022年8月3日に、libupnp (pupnp) 1.14.13がリリースされました。
これで、Synologyのメディアサーバーに問題を修正したlibupnp (pupnp)を反映してもらう準備が整いました。
Synologyサポートへの連絡
新しいバージョンとリリースされたので、Synologyのサポートにもう一度連絡を入れました。
Subject: チケット#30xxxxx の問題の対策が入った pupnp v1.14.13がリリースされました チケット#30xxxxx の問題(一部のDLNAクライアントからSynologyのメディアサーバーが見えなくなった問題)では、原因がメディアサーバーが利用している pupnp ライブラリーの問題ということになりました。 そのpupnpライブラリーが、2022/Jun/16に修正され、2022/Aug/03にv1.14.13 としてリリースされました。 ぜひともメディアサーバーに取り込んでいただきたく。
#30xxxxx
は、前回Synologyに問題の報告したときのチケット番号です。前回のチケットは、この時点でアーカイブされており、新規のコメントが記入できなかったので、新しいチケットを作成してSynologyのサポートに連絡を入れました。
すると12日間くらいして、以下の連絡がありました。
libupnp v1.14.13にてお問い合わせいただいていた事象が修正されたとのこと、ご連絡いただきありがとうございます。 確認させていただきましたところ、現時点では libupnp v1.14.13 のメディアサーバーへの反映について具体的な日程は未定となっております。 お客様のご了承を頂ける場合は、弊社開発担当者によりお客様環境のNASにパッチを適用させていただき、遭遇されているメディアサーバーの問題が解消されるかどうかを確認いただきたいと存じます。
今までは、サポートに連絡を入れてから2日から3日後には連絡あったのですが、今回は長くかかりました。しかし、連絡をくれた時点で、すでに、新しいライブラリーを取り込んだ、モジュールを作成済みとのこと。モジュールの作成に時間がかかっていたようです。
そして、問題が解消されるかの確認を手伝ったほしいとのこと。
将来のバージョンのメディアサーバーに取り込んでほしいので、動作確認に協力する旨を伝えました。
すると、私のSynologyのNAS DiskStation 1520+ に修正モジュールを適用してくれました。
新しいlibupnpを適用した修正モジュールの動作確認
修正モジュールを反映するためには、NASの再起動が必要であったので、まずは、NASを再起動しました。
その後、問題が発生していたDLNAクライアント(VGF-WA1)で、サーバーの検索をしました。
すると、DLNAクライアント(VGF-WA1)のDLNAサーバー一覧にSynologyのNASであるDiskStationが表示されるようになりました。また、音楽コンテンツも再生できることを確認できました。
一部のDLNAクライアントでSnylogyのNASのDLNAサーバーにアクセスできなくなったのは、SynologyのNASのDSM がバージョン7.x系にアップグレードしたときからでした。
修正モジュールを適用した後は、それまでのDSM 6.x系と同様に、問題なく動作することが確認できました。
動作確認の結果は、Synologyのサポートにも連絡しました。
この修正モジュールが製品に適用される時期
Synologyのサポートのやり取りで、問題を修正した修正モジュールの作成までたどり着けました。サポートからの情報によると、この修正モジュールは、Synologyのメディアサーバーに対するものではなく、SynologyのDSMに対するものであるとのことでした。
そのため、この修正モジュールは、DSMの更新で反映されることになります。しかし、現時点(2022年9月上旬)でいつDSMに反映されるかはわからないとのことでした。2022年秋にリリースされるVersion: 7.1.1では、取り込まれていません。DSMの公式リリースに取り込まれるのはもうしばらく待つ必要がありそうです。
この修正モジュールを先行して適用したいとき
この修正モジュールがSynologyのDSMの公式リリースに取り込まれるのはまだ先です。しかし、先行して適用したい場合は、サポートに連絡すれば、適用してくれるとのことでした。
もし、この修正モジュールを先行して適用してもらい時は、Synologyのサポートに連絡しましょう。
(2023/04/24追記) 2023年4月の投稿で説明しましたが、この修正モジュールは公式リリースに取り込まれました。2023年4月時点では、Synologyのサポートに連絡の必要はなく、DSMを最新版にアップデートするだけで適用されます。
Synologyのサポートに連絡を取る方法には二つあります。
- DSM内の「サポートセンター」アプリで連絡
- WEB上のSynologyのサポートサイトから連絡
なお、サポートを受けるためにはSynologyアカウントが必要となります。アカウントを作成していない場合は作成できます。
「サポートセンター」アプリから連絡するときは、上記のサポートセンターのアイコン(ヘッドセットを付けた人型のアイコン)から「サポートセンター」アプリを起動して、「サポートに問い合わせる」から連絡します。
なお、「サポートセンター」アプリから問い合わせた場合でも、返事等を受け取るのは、メールおよびWEBサイトとなります。
今回の投稿は、「メディアサーバー」で使われているUPnPのライブラリーをDSMに取り込んでもらたことの報告でした。
(2023/04/24追記) 修正モジュールがDSMの公式リリースに取り込まれました。詳しくは 2023年4月の投稿を参照してください。
本記事、ありがとうございます!
私もNAS-C5を使用しており、困っておりました<なかなか音響機器のみでNASにアクセスし音楽を流せるものが存在せず難渋しております。古い機器ですがNAS-C5に頼らざるを得ず>。
昨年11月に問題を検知しサポートセンターに問い合わせをしましたが原因特定までいたらず困っておりました。そんな中、サイト主さまの記事を発見し喜んでおりました。
早速私も先行提供を申し込みいたしました。
パッチを適用してもらうことはできましたでしょうか?
私は、先日、2台目のDiskStationにもパッチを適用してもらいました。早くDSM本体に取り込まれるとよいですね。
返信ありがとうございます。
一度作業をしていただいたのですが、事象の解消に至らず。
現在、サポートセンターからの折り返しを待っております。。。。。
去年の秋に発生したのであれば、DSM7がリリースされた頃なので、DSM7にアップグレードしたことが原因であり、同じ問題かと思います。
今回のパッチは、ソニーの古いDLNAクライアントデバイスなどからSynology NASのメディアサーバーが見つからない問題を解決するものです。もし、サーバーが見えているにもかからず再生できないなど問題であれば、別の原因となります。また、パッチを適用した後に、DMSのアップデートを実行すると、パッチが未適用に戻ってしまいますので注意してください。
ありがとうございます。
サポートセンターも同じ問題であるとの見解です。
デバイスリスト上クライアントが見えていませんし、クライアントからもサーバーの認識ができていません。
サポセンにて再度リモート更新をしていただいたのですが、事象は変わらず、本当に何の変化もないように見えている状況です。
現在、サポセンからの再度の折り返し待ちですが、もしダメなら正式なバージョンを待とうかとも。
ご報告が遅くなりました。
再度サポートセンターにてパッチ作業を行っていただき、12月9日に解決いたしました。
こちらの記事や主様のアドバイスに感謝いたします。
ありがとうございました。