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あたりでさくっと仕上げてほしい感じ。

AppleTV

http://www.apple.com/appletv/
iTVはどこかで商標取れなかったかね?
あくまでiPodのようなsyncデバイスとして位置づけたのか... 母艦Macという発想から、もう一歩踏み込んでほしかった。
なぜにケーブルが別売りなんだろう。Appleっぽいスマートさだけど、これは逆効果。3rdパーティ市場の参入余地としては面白味がないし。Ethernetケーブルくらい付けてもコストは大差ないでしょうに。
ネットワーク経由でsyncできるというプロトコルは、早々に解析されるんだろうな。楽しみだ。iPodなんかにも応用できるといいな。

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と相談中。「でも、ちゃんと読むよ」とは言ってくれてます。
そんなに急がなくても取り込まれればいいんですけど(^^)。

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をデバッグしていたら、データが壊れるのに気が付いたみたい。そのあとのフォローの中身は、わたしにはついていけない(--;。