webcamd経由で使えるみたいだったのでdx.comで買ってみた。
とりあえずデバイスは生えるものの、使いたいMN88473が生えてこない。
root@pt2:/usr/ports/multimedia/webcamd # webcamd -d ugen0.4 -B Attached to ugen0.4[0] root@pt2:/usr/ports/multimedia/webcamd # w_scan w_scan version 20120415 (compiled for DVB API 5.10) guessing country 'JP', use -cto override using settings for JAPAN Country identifier JP not defined. Using defaults. scan type TERRESTRIAL, channellist 4 output format vdr-1.6 output charset 'UTF-8', use -C to override Info: using DVB adapter auto detection. /dev/dvb/adapter0/frontend0 -> TERRESTRIAL "Realtek RTL2832 (DVB-T)": good :-) Using TERRESTRIAL frontend (adapter /dev/dvb/adapter0/frontend0) Using DVB API 5.a frontend 'Realtek RTL2832 (DVB-T)' supports
linuxでは
[24669756.552777] usb 1-1.4: DVB: registering adapter 0 frontend 0 (Realtek RTL2832 (DVB-T))... [24669756.553206] usb 1-1.4: DVB: registering adapter 0 frontend 1 (Panasonic MN88473)...
みたいにfrontend1が生えてくるのだが。
root@pt2:/usr/ports/multimedia/webcamd # ls -l /dev/dvb/adapter0/ total 0 crw-rw---- 1 webcamd webcamd 0xa3 4月 16 13:16 demux0 crw-rw---- 1 webcamd webcamd 0xa4 4月 16 13:16 dvr0 crw-rw---- 1 webcamd webcamd 0xa5 4月 16 13:16 frontend0
むぅ。
得意のprintfデバッグで追いかけたところどうもdummyデバイスがないためのダメっぽい。
でっち上げてみる。
diff --git a/linux_i2c.c b/linux_i2c.c index c2c71e7..441a3e9 100644 --- a/linux_i2c.c +++ b/linux_i2c.c @@ -35,6 +35,27 @@ struct device_type i2c_client_type; #define I2C_ADDR_OFFSET_TEN_BIT 0xa000 #define I2C_ADDR_OFFSET_SLAVE 0x1000 +static const struct i2c_device_id dummy_id[] = { + { "dummy", 0 }, + { }, +}; + +static int dummy_probe(struct i2c_client *client, + const struct i2c_device_id *id) +{ + return 0; +} + +static int dummy_remove(struct i2c_client *client) +{ + return 0; +} +static struct i2c_driver dummy_driver = { + .driver.name = "dummy", + .probe = dummy_probe, + .remove = dummy_remove, + .id_table = dummy_id, +}; int i2c_transfer(struct i2c_adapter *adap, struct i2c_msg *msgs, int num) { @@ -241,7 +262,12 @@ i2c_new_dummy(struct i2c_adapter *adapter, u16 address) I2C_BOARD_INFO("dummy", address), }; - return (i2c_new_device(adapter, &info)); + struct i2c_client *p; + p=i2c_new_device(adapter, &info); + if (p==NULL) { + i2c_register_driver(NULL,&dummy_driver); + return i2c_new_device(adapter, &info); + } + return p; } struct i2c_client *
ダメっぽいな・・・(´・ω・`)
あ、出てきた。なんか不安定だな・・・
root@pt2:/usr/ports/multimedia/webcamd # w_scan -fc w_scan version 20120415 (compiled for DVB API 5.10) guessing country 'JP', use -c <country> to override using settings for JAPAN Country identifier JP not defined. Using defaults. scan type CABLE, channellist 4 output format vdr-1.6 output charset 'UTF-8', use -C <charset> to override Info: using DVB adapter auto detection. /dev/dvb/adapter0/frontend0 -> "Realtek RTL2832 (DVB-T)" doesnt support CABLE -> SEARCH NEXT ONE. /dev/dvb/adapter0/frontend1 -> CABLE "Panasonic MN88473": very good :-)) Using CABLE frontend (adapter /dev/dvb/adapter0/frontend1) Using DVB API 5.a frontend 'Panasonic MN88473' supports INVERSION_AUTO QAM_AUTO FEC_AUTO FREQ (42.00MHz ... 1002.00MHz) SRATE (1.000MSym/s ... 7.200MSym/s) 474000: sr6900 (time: 00:02) ^C ERROR: interrupted by SIGINT, dumping partial result... dumping lists (0 services)
アンテナをつながないといけないけどコネクタがPAL型みたいなので変換用のを取得予定。