Настройка тюнера Behold TV 409 FM в Linux
Не буду описывать за что и почему выбрал именно этот тюнер, сразу перейду к делу.
Тюнер система видит. Запустил Tvtime и разочаровался отсутствием всего, что должно быть. Залез в Интернет в надежде найти информацию о настройке тюнера, но было только о старых моделях. Немного помучив форум бехольдера,
удалось настроить тюнер, но до сих пор осталась единственная проблема.
Для настройки брал исходники video4linux c
http://dl.bytesex.org. Качайте последние.
Постараюсь выложить готовые исходники. Извините, но патчи пока делать не умею.
Вам понадобится изменить файлы
saa7134.h,
saa7134-cards.c,
tda9887.c и
saa7134-inputs.c.
В файле
saa7134-cards.c описываем следующую конфигурацию после всех структур тюнеров:
Код:
[SAA7134_BOARD_BEHOLDTV_409FM] = {
/* <http://tuner.beholder.ru>, Sergey <skiv@orel.ru> */
.name = "Beholder BeholdTV 409 FM",
.audio_clock = 0x00187de7,
.tuner_type = TUNER_PHILIPS_FM1216ME_MK3,
.radio_type = UNSET,
.tuner_addr = ADDR_UNSET,
.radio_addr = ADDR_UNSET,
.tda9887_conf = TDA9887_PRESENT,
.inputs = {{
.name = name_svideo,
.vmux = 8,
.amux = LINE1,
},{
.name = name_comp1,
.vmux = 1,
.amux = LINE1,
},{
.name = name_tv,
.vmux = 3,
.amux = TV,
.tv = 1,
}},
.radio = {
.name = name_radio,
.amux = LINE2,
},
},
В этом же файле перед строкой
/* --- boards without eeprom + subsystem ID --- */ добавляем следующее:
Код:
.vendor = PCI_VENDOR_ID_PHILIPS,
.device = PCI_DEVICE_ID_PHILIPS_SAA7133, /* 35-й видится как 33-й, для автоопределения */
.subvendor = 0x0000,
.subdevice = 0x4091,
.driver_data = SAA7134_BOARD_BeholdTV_409FM,
},{
Здесь же указываем, что тюнер имеет пульт. Для этого дописываем строку
Код:
case SAA7134_BOARD_BeholdTV_409FM:
перед
dev->has_remote = 1;Теперь открываем файл
saa7134.h, в котором определяем наш тюнер:
после последней строки (у меня была
#define SAA7134_BOARD_KWORLD_XPERT 63) дописываем наш тюнер
Код:
#define SAA7134_BOARD_BeholdTV_409FM 64
Закрываем файл, больше с ним работать не будем.
Далее открываем
tda9887.c. Чтобы наш секам определялся первым переставляем местами записи стандартов
SECAM-L и
SECAM-DK (первым должен идти SECAM-DK). Все, файл закрываем.
Далее будем описывать пульт нашего тюнера. Единственное что работает у меня на данный момент, это кнопки вверх, вниз, влево, вправо и цифры.
В файле
saa7134-inputs.c уже определены настройки для пульта предыдущих моделей. Осталось дописать туда наш тюнер.
В структуру
Код:
case SAA7134_BOARD_MANLI_MTV001:
case SAA7134_BOARD_MANLI_MTV002:
ir_codes = manli_codes;
mask_keycode = 0x001f00;
mask_keyup = 0x004000;
mask_keydown = 0x002000;
polling = 50; // ms
break;
после
case SAA7134_BOARD_MANLI_MTV002: дописываем
Код:
case SAA7134_BOARD_BEHOLDTV_409FM:
Все, можете компилировать.
Копируем новые модули (не забудьте сделать копии старых модулей) в
/lib/modules/ваше ядро/kernel/drivers/media, заменяя при этом соответствующие файлы новыми.
Можете перегрузить компьютер и пользоваться тюнером (в данном случае лучше перегрузить компьютер, чем воспользоваться /sbin/modprobe). В файле /etc/modprobe.conf у меня присутствует единственная запись:
Код:
alias char-major-81 saa7134.
Вот мой вывод
dmesg | grep saaКод:
saa7130/34: v4l2 driver version 0.2.14 loaded
saa7130/34: snapshot date 2005-08-01
saa7133[0]: found at 0000:02:09.0, rev: 240, irq: 209, latency: 64, mmio: 0xfeaff000
saa7133[0]: subsystem: 0000:4091, board: Behold TV 409FM [card=64,autodetected]
saa7133[0]: board init: gpio is c0c000
saa7133[0]: registered input device for IR
saa7133[0]: DSP access wait timeout [bit=WRR]
saa7133[0]: DSP access wait timeout [bit=WRR]
saa7133[0]: DSP access wait timeout [bit=WRR]
saa7133[0]: i2c eeprom 00: 00 00 91 40 54 20 00 00 00 00 00 00 00 00 00 01
saa7133[0]: i2c eeprom 10: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
saa7133[0]: i2c eeprom 20: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
saa7133[0]: i2c eeprom 30: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
: chip found @ 0xc0 (saa7133[0])
saa7133[0]: registered device video0 [v4l2]
saa7133[0]: registered device vbi0
saa7133[0]: registered device radio0
Вот вывод
dmesg | grep tdaКод:
tda9885/6/7: chip found @ 0x86
А вот
dmesg | grep tunerКод:
tuner 1-0060: type set to 38 (Philips PAL/SECAM multi (FM1216ME MK3))
P. S.Если радио не работает в стерео, то в tda9887.c переставляем местами значения адресов в строках
#define cDeemphasisOFF 0x00 // bit c5
#define cDeemphasisON 0x20 // bit c5Должно получиться так:
Код:
#define cDeemphasisOFF 0x20 // bit c5
#define cDeemphasisON 0x00 // bit c5
(Сейчас (для последних версий) это можно и не делать, заработало стерео без исправлений адресов)
Проблемы, которые у меня возникли:
- на одном канале (из 36) отсутствовал звук (в Windows присутствует стереозвук на этом канале), который можно было получить точной подстройкой канала, причем в этом случае звук был стерео (на другом канале звук был: он тоже работает в стерео). И еще на одном канале качество картинки было не ахти, хотя в Windows оно нормальное. Здесь тоже помогала точная подстройка.
Работа тюнера проверялась в программах tvtime, xawtv, gqradio, gnomeradio, kradio. Позже проверю в остальных программах (kdetv и других соотвутствующих).