みつきんのメモ

組み込みエンジニアです。Interface誌で「Yocto Projectではじめる 組み込みLinux開発入門」連載中

mediatombで「upnp error -203」

mediatombの謎のエラーでハマったのでメモ。

mediatomb起動時に以下のようなログが出て起動に失敗していた。

2015-02-11 16:59:01    INFO: Loading configuration from: /etc/mediatomb/config.xml
2015-02-11 16:59:02    INFO: Checking configuration...
2015-02-11 16:59:02    INFO: Setting filesystem import charset to ANSI_X3.4-1968
2015-02-11 16:59:02    INFO: Setting metadata import charset to ANSI_X3.4-1968
2015-02-11 16:59:02    INFO: Setting playlist charset to ANSI_X3.4-1968
2015-02-11 16:59:02    INFO: Configuration check succeeded.
2015-02-11 16:59:02   ERROR: main: upnp error -203
2015-02-11 16:59:02   ERROR: Could not bind to socket.
2015-02-11 16:59:02    INFO: Please check if another instance of MediaTomb or
2015-02-11 16:59:02    INFO: another application is running on the same port.
2015-02-11 16:59:02   ERROR: upnp_cleanup: UpnpUnRegisterRootDevice failed

socketのbindに失敗しているので、mediatombがすでに起動していないか、 他のアプリケーションがポートを使用していないか確認しろ。というアドバイス付き。

もちろんpsやnetstatしてみるけどそんな奴はいない。

原因

google先生などに聞いてみると、ここで以下のようなコメントを見つけた。

it seams like mediatomb needs itself a loopback network to be up in order to startup:

before running mediatomb i was playing with my network and somehow i disable the loopback interface (lo). after bringing it up everythings goes fine.

つまり、mediatomb自身がloopback network(127.0.0.1)に対して通信しようとするので、 loopbackインタフェイス(lo)が必要ということらしい。

対策

/etc/network/interfacesに以下のようにloopbackデバイスの定義を追加してみる。

auto lo
iface lo inet loopback

上記の編集を行ったあと、 PCを再起動するか以下のようにする。

$ /etc/init.d/networking restart
$ /etc/init.d/mediatomb restart

以下のようなログが出ていれば起動に成功している。

2015-02-11 17:53:46    INFO: Loading configuration from: /etc/mediatomb/config.xml
2015-02-11 17:53:46    INFO: Checking configuration...
2015-02-11 17:53:46    INFO: Setting filesystem import charset to ANSI_X3.4-1968
2015-02-11 17:53:46    INFO: Setting metadata import charset to ANSI_X3.4-1968
2015-02-11 17:53:46    INFO: Setting playlist charset to ANSI_X3.4-1968
2015-02-11 17:53:46    INFO: Configuration check succeeded.
2015-02-11 17:53:46    INFO: Initialized port: 49153
2015-02-11 17:53:46    INFO: Server bound to: 192.168.1.50
2015-02-11 17:53:47    INFO: MediaTomb Web UI can be reached by following this link:
2015-02-11 17:53:47    INFO: http://192.168.1.50:49153/

ログの情報どおりに、PCのブラウザからhttp://192.168.1.50:49153とアクセスして、 mediatombのページが表示できれば、mediatombは間違いなく起動している。