Zeroconf.pyでiTunesにサーバー名を表示させてみる
なんか重い腰を上げる必要がでてきそうなので、少しリハビリしておく。
まずは準備体操くらいから。
mDNSを使ったサービスの登録と削除をPythonから行うには、Zeroconf.pyを使うのが定番だろう。
avahi+dbusでサービス通知するようなフレームワークを使うのが現代的だけど、組み込みでそこまでやるのはちょっといろいろとめんどくさい。もちろん、この組み合わせでも、Pythonから制御できる方法は提供されている。
Zeroconf.pyのライセンスはLGPLなので、モジュールとしてimportする分にはライセンスの問題はない。
プロジェクトサイトから最新版をダウンロードしてバージョンを調べる。
http://sourceforge.net/projects/pyzeroconf/
http://jaist.dl.sourceforge.net/sourceforge/pyzeroconf/pyzeroconf-0.12.tgz
"Multicast DNS Service Discovery for Python, v0.12"だそうだ。2005年から手がはいっていないのは、枯れているからか、それとも誰も使っていないからだろうか? fuseDAAPに含まれているものは、わずかだが手が入っているようだ。
Zeroconf.pyの末尾にテストプログラムが付いているので、それを真似する。
ServiceInfoに何を渡せばいいのかは、ソースにあるコメントを確認する。
"""Create a service description. type: fully qualified service type name name: fully qualified service name address: IP address as unsigned short, network byte order port: port that the service runs on weight: weight of the service priority: priority of the service properties: dictionary of properties (or a string holding the bytes for the text field) server: fully qualified name for service host (defaults to name)"""
こんな感じかな。
#!/usr/bin/python #-*- coding: utf-8 -*- EXECNAME = "mdns_test.py" VERSION = "a0.0" import Zeroconf import socket hostname = socket.gethostname() hostaddr = socket.gethostbyname(socket.gethostname()) daapZConfType = "_daap._tcp.local." daapZConfHost = hostname + "." + daapZConfType daapPort = 3689 r = Zeroconf.Zeroconf() info = Zeroconf.ServiceInfo( daapZConfType, daapZConfHost, socket.inet_aton(hostaddr), daapPort, 0, 0, '') r.registerService(info) r.unregisterService(info) r.close()
iTunesを起動しておいて、これを実行すると、リストのところにホスト名が現れてすぐ消えるのが確認できる。
iphone
http://www.apple.com/iphone/
おおー、出ている出ている。
すごいねぇ。
80年代のAppleを彷彿とさせるね。
ナレッジナビゲータを見るようだよ。
こういうのが出ると、日本にいるというのは、すぐに買えないというハンデが痛いと思うね。
日本で売ってたら、今日は会社休んで電話屋行きますよ。
来年なんて悲しすぎ。3Gだとキャリアはソフトバンクかな... WILLCOMあたりでさくっと仕上げてほしい感じ。
mephisto_tres 版 2.6.19 DMA高速化パッチ
http://iohack.sourceforge.jp/tanks/index.php?MEPHISTO_TRES2.6.19patch
2.6.18/19では、GLANTANKオリジナルの2.6.10-iop1に比べてDMA転送が遅いという問題があったのだけど、id:mephisto_tres 氏の調査によって、DMAが効いていないことが判明。パッチと資料を提供いただいたので、ページを作成した。
是非テストをお願いします。> all
tbmにもメールを打っておく。
RTCも入っているようなので、問題なく動作していれば、あとはドライバとユーティリティが揃えば完全になるな。
さっそく返事あり。tbmは、こんなでっかいパッチをEtchに取り込むのは、d-iはフリーズステイタスに入っているから、もうちょっと遅いという意見。でも、まだ可能性があって、Lennert Buytenhekと相談中。「でも、ちゃんと読むよ」とは言ってくれてます。
そんなに急がなくても取り込まれればいいんですけど(^^)。
The DAAPD Wiki
http://www.deleet.de/projekte/daap/
プロトコル情報など、新しいものが揃っている。
Lennertは口が悪い... orz
This was taken from one of the old Intel IOP DMA patch sets. It's buggy as hell. If you want to lose your data you should definitely apply it. See:
http://marc.theaimsgroup.com/?t=116666209400004&r=1&w=2
だってさ...
どうやら、XScaleでDMAが動作していなのには、ワケがあるようです。
Intelの人は2.6.19-iop1のCONFIG_NET_DMAをデバッグしていたら、データが壊れるのに気が付いたみたい。そのあとのフォローの中身は、わたしにはついていけない(--;。
Intel IOP ADMA support
http://marc.theaimsgroup.com/?l=linux-raid&m=116491866629073&w=2
かわりに、こんなのは使えないのかな...