Статьи пользователей » 16.08.2005 - Как заставить работать TB-тюнер GOTVIEW 7135 под Linux - ANdyCV

Как заставить работать TB-тюнер GoTView 7135 под Linux

Автор: ANdyCV
Редакция:GOTVIEW

Решил я себе прикупить новый тв-тюнер, для компьютера вместо своего старенького AverMedia 203 (на BT878), работавшего мне верой и правдой. Побудил меня к смене любимой железки тот факт, что у него нет стерео приёма на FM. По крайней мере в Linux. Да и просто разнообразия захотелось. Кроме того, многочисленные статьи расхваливали новый чип от Phillips.

К слову говоря, AverMedia 203 прекрасно работал под Windows и Linux. Соответственно, первое, что я сделал - это посмотрел обзоры на IXBT.com, посмотрел отзывы в различных форумах и понял, что ситуация неоднозначная.
Промахнуться мне очень не хотелось, жива ещё память о Pinnaсle PCTV Pro (чип BT878). Несмотря на то, что Pinnacle Systems имеет авторитет в дорогих железках и софте для телевидения, её тюнер имел софт, который регулярно вис и тормозил. Таким образом, Pinnacle был отвергнут по горькому опыту. Далее из конкурентов оставались AverMedia, Beholder и GoTView при всём при этом, цены этих тюнеров отличаются не в разы. Тут я написал на форум сайта www.pctuner.ru, посвященного только твтюнерам, где мне однозначно посоветовали приобретать GoTView PCI 7135. Сайт я этот считаю наиболее авторитетным и поэтому без особых размышлений купил себе GoTView PCI 7135 - далее буду называть его GTV.

Я принёс GTV домой, распаковал красивую коробочку, с заманчивыми и зазывными надписями.
Комплектация оказалась очень разумной. В коробке не было ненужных бирюлек, но было всё, что необходимо. Там были: аудио переходник, плата, пульт, инструкция, ИК приёмник, диск с драйверами. Посмотрев на всю эту красоту, я поставил софт под Windows и всё великолепно заработало... Пульт имеет нереально хорошую чувствительность и работает отлично. Программа телевидения скачивается по интернету и автоматически обновляется. Это тоже очень удобно. Ну из недостатков могу назвать только то, что у GTV нету плагина, который борется с рекламой. Это на мой взгляд большой минус. Но думаю, что в дальнейшем это решится программистами GoTView.

Вывод под Windows всё работает отлично, так что смело ставим оценку 5+. Хотя "+" это аванс на "противорекламный плагин".

Теперь решил я всё это запустить под Linux. Эту систему я очень люблю и стараюсь как можно больше времени проводить в ней. Причины моих предпочтений я объяснять не стану, т.к. это не входит в предмет описания. Так вот я запускаю Linux и ничего не работает. Далее в /var/log messages читаю...

saa7133[0]: found at 0000:02:05.0, rev: 240, irq: 185, latency: 32, mmio: 0xf7202000 <- вот найдена плата
saa7133[0]: subsystem: 5456:7135, board: UNKNOWN/GENERIC [card=0,autodetected] <- а вот она же неопознана.
Плохо.

saa7133[0]: board init: gpio is 0
saa7133[0]: dsp access wait timeout [bit=WRR]
saa7133[0]: dsp access wait timeout [bit=WRR]
saa7133[0]: i2c eeprom 00: 56 54 35 71 ff ff ff ff ff ff ff ff ff ff ff ff <- содержание EPROM твтюнера.

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

В общем вывод такой такой, твтюнер видится, но не опознаётся. Соответственно работать он не собирается.

Тут я решил, что вероятно кто-то уже заставил работать эту железку... и к своему удивлению обнаружил, что никому не удавалось полноценно запустить запустить GTV под Linux. Зато на форуме присутствует значительное количество людей, желающих использовать GoTView под Linux.

Далее я написал в support GoTView, где мне ответили, что Linux направление совсем не поддерживается. Это меня чрезвычайно расстороило.

В общем, ситуация образовалась патовая, никто не мог мне помочь. И выход был только один либо я всё делаю сам, либо не делает никто. А я не программист совсем, я юрист, только что закончивший институт.

Ладно, пришлось разбираться с нуля, к слову говоря это заняло у меня два месяца.
И если бы не помощь очень многих людей, то вряд ли бы я смог завершить эту работу так быстро.

Теперь по пунктам опишу последовательность действий. В качестве дистрибутива у меня стоит ASPLinux. Это мой любимый дистрибутив. Хотя уверен, что всё описанное будет работать и на других дистрибутивах. Моя версия ядра 2.6.12 и все уже откомпилированные модули именно для этой версии ядра. Если у вас например, ядро 2.6.9 или какое-либо другое, то Вам будет лучше исправить исходныей код ядра и перекомпилироваять ядро заново. Сложного в этом ничего нет.
Если же вы захотите, что бы я перекомпилировал модули, то вы можете попросить меня и я это сделаю. А ещё, если вы сами перекомпилируете своё ядро, то вы можете выложить эти модули для общего пользования. Всё-таки Linux это не Microsoft. Ещё раз повторюсь, что на мой взгляд наиболее правильное решение - это правки исходных текстов ядра и сборка нового.

Все действия описанные мною, производим под правами root. Это необходимо.

1) Находим модули ядра Linux. Как правило, они находятся в директории /lib/modules/ваша версия ядра. Впрочем путь может немного отличаться в зависимости от дистрибутива. Для тех, у кого нет исходных текстов ядра и проблемы с их скачкой, я выкладываю уже готовые модули. Для их установки, необходимо:

- зайти в /lib/modules/ваша версия ядра(например у меня 2.6.11-1.14.1aspsmp) /kernel/drivers/media/video/saa7134
Зашли? Отлично.

Мы должный увидеть файл saa7134.ko. Это файл, который является демоном (т.е. драйвером), нашего ТВтюнера. Мы его сохраняем на всякий случай. Т.е. переименовываем его оригинальный файл saa7134.ko в файл saa7134.ko.bak Для этого находясь в директории saa7134, пишем в консоли вот такую команду: cp saa7134.ko saa7134.ko.bak и нажимаем Enter.
Для тех, у кого этот файл совсем отсутствует, могу сообщить, что ваше ядро собрано без поддержки saa7134 и вам его необходимо перекомпилировать и включить поддержку в виде модуля - желательно. Или встроить в ядро. После сохранения оригинального файла, мы в эту папку пишем файл saa7134.ko , который я уже скомпилировал.

Точно по такому же алгоритму мы поступаем и с файлом tda9887.ko Он расположен /lib/modules/ваша версия ядра/kernel/drivers/media/video. Далее переименовываем его в tda9887.ko.bak пишем в терминале cp tda9887.ko tda9887.ko.bak. И копируем на его место мой файл tda9887.ko.
Из директории стерео или моно... это влияет только на режим работы радио. При этом всё равно будет отбражаться режим работы MONO. Но реально звук будет вс-таки стерео.

Или правим ручками файл tda9887.c

Ищем там структуру вида:
static struct tvnorm radio = {
.name = "radio",
.b = ( cFmRadio | cQSS ),
.c = ( cDeemphasisON | cDeemphasis50 ),
.e = ( cAudioIF_5_5 | cRadioIF_38_90 ),

И меняем её на следующую структуру:

static struct tvnorm radio = {
.name = "radio",
.b = ( cFmRadio | cQSS ),
.c = ( cDeemphasisOFF ),
.e = ( cAudioIF_5_5 | cRadioIF_38_90 ),

Всё, теперь у Вас радио работает в стерео режиме. Хотя GNOMERADIO показывать этого не будет.

Итак, файлы мы подменили... в принципе если вас не интересует пульта дистанционного управления, то этого достаточно.

ВНИМАНИЕ!!! Тщательно смотрите какой версии ядро у вас стоит. Т.к. при несовпедении версии ядра и модуля, никакой работоспособности я не гарантирую.
То есть, если модуль скомпилирован для ядра версии 2.6.12, а вы его подсунете ядру 2.6.9, то вы виноваты сами.

Если же вас интересует пульт ДУ, то необходимо заменить файл saa7134-inputs.c Впрочем с пультом я пока не успел разобраться до конца. Тут вообще ситуация не очень ясна. Но в прилагаемом мною файле он опознан т.е. в var/log/messages мы можем обнаужить строчку registered device for IR – что собственно и есть пульт.

Есть второй путь, на мой взгляд наиболее правильный. Это правка исходных текстов ядра с последующей перекомпиляцией оного.

Необходимо исправить 3 файла: saa7134-cards.c, tda9887.c, saa7134-input.c Последний стоит править если вы хотите поиграться с пультом ДУ.

Или использовать файлы, уже исправленные мною. что в общем то проще.

!!! Внимание, следите за соответствием версии ядра и файла.

Если же вы решили править, то вот алгоритм действий.
/usr/src/ваша версия ядра/drivers/media/video/saa7134/saa7134-cards.c
Ищем вот такую структуру:

[SAA7134_BOARD_FLYDVBTDUO] = {
/* LifeView FlyDVB-T DUO */
/* "Nico Sabbi */
.name = "LifeView FlyDVB-T DUO",
.audio_clock = 0x00200000,
.tuner_type = TUNER_PHILIPS_TDA8290,
//.gpiomask = 0xe000,
.inputs = {{
.name = name_tv,
.vmux = 1,
.amux = TV,
//.gpio = 0x0000,
.tv = 1,
},{
.name = name_comp1,/* Composite signal on S-Video input */
.vmux = 0,
.amux = LINE2,
//.gpio = 0x4000,
},{
.name = name_comp2,/* Composite input */
.vmux = 3,
.amux = LINE2,
//.gpio = 0x4000,
},{
.name = name_svideo,/* S-Video signal on S-Video input */
.vmux = 8,
.amux = LINE2,
//.gpio = 0x4000,
}},
}

и добавляем после нее еще одну... которая описывает нашу любимую карту.
А именно GoTView PCI 7135.
},
[SAA7135_BOARD_GOTVIEW_7135] = {
/* "Andrey Cvetcov" */
.name = "GoTview 7135 PCI",
.audio_clock = 0x00187de7,
.tuner_type = TUNER_PHILIPS_FM1216ME_MK3,
/*.tda9887_conf = TDA9887_PRESENT, - закомментировано намеренно */
.gpiomask= 0x00200003,
.inputs = {{
.name = name_tv,
.vmux = 1, /* Верно */
/* Use TV instead LINE0 - BigBiker */
.amux = TV,
.gpio = 0x00200003,
.tv = 1,

},{
.name = name_comp1, /* Composite signal on S-Video input */
.vmux = 3,
.amux = LINE1,
.gpio = 0x00200003,

},{
.name = name_comp2,/* Composite Input */
.vmux = 8,
.amux = LINE1,
.gpio = 0x00200003,
},{
.name = name_tv_mono,/* TV - mono only */
.vmux = 1,
.amux = LINE2,
.gpio = 0x00200003,
}},
.radio = {
.name = name_radio,
/* .vmux = TV */
.vmux = 1,
.amux = LINE2,
.gpio = 0x00200003,
},},
};

Т.е. мы должны получить в итоге:

[SAA7134_BOARD_FLYDVBTDUO] = {
/* LifeView FlyDVB-T DUO */
/* "Nico Sabbi */
.name = "LifeView FlyDVB-T DUO",
.audio_clock = 0x00200000,
.tuner_type = TUNER_PHILIPS_TDA8290,
//.gpiomask = 0xe000,
.inputs = {{
.name = name_tv,
.vmux = 1,
.amux = TV,
//.gpio = 0x0000,
.tv = 1,
},{
.name = name_comp1,/* Composite signal on S-Video input */
.vmux = 0,
.amux = LINE2,
//.gpio = 0x4000,
},{
.name = name_comp2,/* Composite input */
.vmux = 3,
.amux = LINE2,
//.gpio = 0x4000,
},{
.name = name_svideo,/* S-Video signal on S-Video input */
.vmux = 8,
.amux = LINE2,
//.gpio = 0x4000,

/* add new bracket - BigBiker */
}},
},
[SAA7135_BOARD_GOTVIEW_7135] = {
/* "Andrey Cvetcov" */
.name = "GoTview 7135 PCI",
.audio_clock = 0x00187de7,
.tuner_type = TUNER_PHILIPS_FM1216ME_MK3,
/*.tda9887_conf = TDA9887_PRESENT, -заккоментированно намерянно */
.gpiomask= 0x00200003,
.inputs = {{
.name = name_tv,
.vmux = 1,
/* Use TV instead LINE0 - BigBiker */
.amux = TV,
.gpio = 0x00200003,
.tv = 1,

},{
.name = name_comp1, /* Composite signal on S-Video input */
.vmux = 3,
.amux = LINE1,
.gpio = 0x00200003,

},{
.name = name_comp2,/* Composite Input */
.vmux = 8,
.amux = LINE1,
.gpio = 0x00200003,
},{
.name = name_tv_mono,/* TV - mono only */
.vmux = 1,
.amux = LINE2,
.gpio = 0x00200003,
}},
.radio = {
.name = name_radio,
/* .vmux = TV */
.vmux = 1,
.amux = LINE2,
.gpio = 0x00200003,
},
},
};
const unsigned int saa7134_bcount = ARRAY_SIZE(saa7134_boards);

Далее в этом же файле ищем сторочку

struct pci_device_id saa7134_pci_tbl[] = {
{
.vendor = PCI_VENDOR_ID_PHILIPS,
.device = PCI_DEVICE_ID_PHILIPS_SAA7134,
.subvendor = PCI_VENDOR_ID_PHILIPS,
.subdevice = 0x2001,
.driver_data = SAA7134_BOARD_PROTEUS_PRO,
},{

и добавляем посл неё следующее:

.vendor = 0x1131,
.device = 0x7133,
.subvendor = 0x5456, /* GoTView */
.subdevice = 0x7135, /* Model PCI 7135 */
.driver_data = SAA7135_BOARD_GOTVIEW_7135
},{

В итоге мы получаем следующую структуру:

struct pci_device_id saa7134_pci_tbl[] = {
{
.vendor = PCI_VENDOR_ID_PHILIPS,
.device = PCI_DEVICE_ID_PHILIPS_SAA7134,
.subvendor = PCI_VENDOR_ID_PHILIPS,
.subdevice = 0x2001,
.driver_data = SAA7134_BOARD_PROTEUS_PRO,
},{
.vendor = 0x1131,
.device = 0x7133,
.subvendor = 0x5456, /* GoTView */
.subdevice = 0x7135, /* Model PCI 7135 */
.driver_data = SAA7135_BOARD_GOTVIEW_7135

},{

Далее в этом же файле ищем структуру

case SAA7134_BOARD_AVERMEDIA_307:

и добавляем после неё
case SAA7135_BOARD_GOTVIEW_7135:
dev->has_remote = 1;
break;

и получаем вот что:
case SAA7134_BOARD_AVERMEDIA_305:

case SAA7134_BOARD_AVERMEDIA_307:
case SAA7135_BOARD_GOTVIEW_7135:
dev->has_remote = 1; /* <-это говорит ядру о том, что у карты есть пульт ДУ */
//case SAA7134_BOARD_SABRENT_SBTTVFM не успел его оттестировать.

Уффф всё, с файлом saa7134-cards.c закончили.

Теперь приступим к файлу saa7134.h
Ищем вот такую строчку

#define SAA7134_BOARD_FLYDVBTDUO 55

и после неё добавляем
#define SAA7135_BOARD_GOTVIEW_7135 56

И вот что получаем:

#define SAA7134_BOARD_FLYDVBTDUO 55
#define SAA7135_BOARD_GOTVIEW_7135 56 /* <- теперь наша карта имеет номер 56 т.е. modprobe saa734 card=56 */

#define SAA7134_MAXBOARDS 8
#define SAA7134_INPUT_MAX 8

С этим файлом тоже пока всё.
Теперь приступим к файлу 'saa7134-input.c'

Ищем в нём
case SAA7134_BOARD_AVERMEDIA_307:
ir_codes = md2819_codes;
mask_keycode = 0x0007C8;
mask_keydown = 0x000010;
polling = 50; // ms
/* Set GPIO pin2 to high to enable the IR controller */
saa_setb(SAA7134_GPIO_GPMODE0, 0x4);
saa_setb(SAA7134_GPIO_GPSTATUS0, 0x4);
break;

и после сразу дописываем

case SAA7135_BOARD_GOTVIEW_7135:
ir_codes = md2819_codes;
mask_keycode = 0x0007C8;
mask_keydown = 0x000010;
polling = 50; // ms
break;

И в итоге получаем вот такую картинку:

case SAA7134_BOARD_AVERMEDIA_307:
ir_codes = md2819_codes;
mask_keycode = 0x0007C8;
mask_keydown = 0x000010;
polling = 50; // ms
/* Set GPIO pin2 to high to enable the IR controller */
saa_setb(SAA7134_GPIO_GPMODE0, 0x4);
saa_setb(SAA7134_GPIO_GPSTATUS0, 0x4);
break;
case SAA7135_BOARD_GOTVIEW_7135:<-тут широкое поле для деятельности , т.к. эти настройки относятся ir_codes = md2819_codes; <- только к пульту ДУ и являются пробным и тестовым вариантом.
mask_keycode = 0x0007C8;
mask_keydown = 0x000010;
polling = 50; // ms
break;
case SAA7134_BOARD_VIDEOMATE_TV_PVR:
ir_codes = videomate_tv_pvr_codes;
mask_keycode = 0x00003F;
mask_keyup = 0x400000;
polling = 50; // ms
break;
}

В принципе всё... можно компилировать ядро.

вот содержимое моего скрипта запуска:

#!/bin/sh
/sbin/rmmod saa7134
/sbin/rmmod tda9887
/sbin/modprobe saa7134 card=56
/sbin/modprobe tda9887 secam=d

параметрами можно смело поиграться...
сам скрипт я тоже прилагаю... в принципе можно прописать загрузку модулей автоматически в /etc/modules.conf
тут никаких хитростей и тонкосетй нет. Мне просто на фоне экспериментов было удобнее пользоваться скриптом.

Теперь поговорим про пульт ДУ...
Ядро нужно компилировать вот с такими параметрами
CONFIG_VIDEO_BTTV := n
CONFIG_VIDEO_SAA7134 := m
CONFIG_VIDEO_IR := m
CONFIG_VIDEO_TUNER := m
CONFIG_VIDEO_TVAUDIO := n
CONFIG_VIDEO_CX88 := n

Хорошо, ядро мы скомпилировали

пишем:
cat /proc/bus/input/devices

и далее смотрим вывод

I: Bus=0011 Vendor=0001 Product=0001 Version=ab41
N: Name="AT Translated Set 2 keyboard"
P: Phys=isa0060/serio0/input0
H: Handlers=kbd event0
B: EV=120013
B: KEY=4 2000000 3802078 f840d001 f2ffffdf ffefffff ffffffff fffffffe
B: MSC=10
B: LED=7
^^^^^^^^^^^^^^^^^^^^^^^^^^
это нам не очень нужно... это просто клавиатура PS/2

это просто клавиатура -
I: Bus=0011 Vendor=0002 Product=0006 Version=0000
N: Name="ImExPS/2 Generic Explorer Mouse"
P: Phys=isa0060/serio1/input0
H: Handlers=mouse0 event1
B: EV=7
B: KEY=1f0000 0 0 0 0 0 0 0 0
B: REL=103
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
это просто мышка... на PS/2

I: Bus=0001 Vendor=5456 Product=7135 Version=0001
N: Name="saa7134 IR (GoTview 7135 PCI)"
P: Phys=pci-0000:02:05.0/ir0
H: Handlers=kbd event2
B: EV=100003
B: KEY=40fc310 82140000 0 0 0 0 2048000 180 4001 9e0000 7bb80 0 0
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
а вот это именно то что нам нужно... это и есть IR датчик GOTVIEW.

Хорошо...
а теперь посмотрим вывод /var/log/messages

пишем:
cat /var/log/messages | grep device

видим приблизительно следующее...

Jul 3 18:32:02 localhost kernel: saa7133[0]: registered input device for IR <- вот это нам интересно, ДУ приёмник видится ядром. Вот это нам и нужно.
Jul 3 18:32:02 localhost kernel: saa7133[0]: registered device video0 [v4l2] < - это собственно ТВ тюнер т.е. собственно Video for Linux
Jul 3 18:32:02 localhost kernel: saa7133[0]: registered device vbi0
Jul 3 18:32:02 localhost kernel: saa7133[0]: registered device radio0 <- это наше радио тоже прекрасно видится.

Итог, радио у нас играет, телевизор показывает и пульт видится…. Что и требовалось доказать. Теперь наша карта работает в Linux.

Для того, что бы подключить любую другую карту, неоходимо тщательно рассмотреть структуру и указать ряд параметиров сначала рассмотрим структуру:

SAA7134_BOARD_ДРУГАЯКАРТА_7134] = {
/* "Andrey Cvetcov" * ays14@yandex.ru/
.name = "GoTview 7135 PCI", <- название карты...
.audio_clock = 0x00187de7, <-аудиочастота (как правило 2 варианта этот и 0x00200000)
.tuner_type = TUNER_PHILIPS_FM1216ME_MK3, <-чип тюнера
/*.tda9887_conf = TDA9887_PRESENT, - закомментировано намеренно */
.gpiomask= 0x00200003, <-самое важное влияет на работу платы вцелом!!! битовая маска GPIO как правило спрашивается у производителя твтюнера. Т.е. какие биты пишутся при инициализации чипа.
.inputs = {{
.name = name_tv, <-название входа
.vmux = 1, /* Верно */ <- номер канала видеомикшера !!!! Важный параметр влияет на изображение
/* Use TV instead LINE0 - BigBiker */
.amux = TV, <-название канала аудиомикшера !!! влияет только на звук
.gpio = 0x00200003, <- битовая маска GPIO влияет на работу платы вцелом.
.tv = 1,

ну и далее по аналогии...
},{
.name = name_comp1, /* Composite signal on S-Video input */
.vmux = 3,
.amux = LINE1,
.gpio = 0x00200003,

},{
.name = name_comp2,/* Composite Input */
.vmux = 8,
.amux = LINE1,
.gpio = 0x00200003,
},{
.name = name_tv_mono,/* TV - mono only */
.vmux = 1,
.amux = LINE2,
.gpio = 0x00200003,
}},
.radio = {
.name = name_radio,
/* .vmux = TV */
.vmux = 1,
.amux = LINE2,
.gpio = 0x00200003,
},},
};

Далее мы можем сделать вывод о том, что для работы твтюнера необходимо знать:
1) .audio_clock = 0x00187de7, <-аудиочастота (как правило 2 варианта этот и 0x00200000)
2) .tuner_type = TUNER_PHILIPS_FM1216ME_MK3, <-чип тюнера - пишется например в обзорах на этот твтюнер.
3) .gpiomask= 0x00200003, <-самое важное влияет на работу платы вцелом!!! битовая маска GPIO как правило спрашивается у производителя твтюнера. Т.е. какие биты пишутся при инициализации чипа. Вот это спрашивается только у производителя. Или дебаггером ковыряется.
4) .vmux = 1, <- номер канала видеомикшера !!!! Важный параметр влияет на изображение можно подобрать методом начного тыка или внимательным рассмотрением файла saa7134-cards.c
5) .amux = TV, <-название канала аудиомикшера !!! влияет только на звук можно подобрать методом начного тыка или внимательным рассмотрением файла saa7134-cards.c

Вот с этими данными можно благополучно... подключить любой твтюнер...

Важное примечание о звуке: часто задаюто вопрос типа...
"я всё сделал, картинка есть а вот звука нету... в чём проблема?"

Вот что нужно сделать в такой ситуации:

1) Воткнуть вход колонок (только компьютерных , мощные колонки напрямую включать нельзя, только через усилитель) или наушники в выход твтюнера (если смотреть на компьютер сверху, то самая правая дырка)и запустить программу просмотра ТВ, в которой настроен канал где уже есть звук. И убедиться что звук у Вас есть.

Если вы всё правильно правили, вы услышите звук.

2) Итак, твтюнер у вас звук выводит, значит проблемы в микшере или настройках звуковой карты.

3) Покрутите уровни громкости в alsamixer. Например запустите в консоли alsamixer и поиграйтесь уровнями громкости...
Универсального совета тут нет и быть не может. Ситуации разные.

С пультом ничего сложного разобраться нет. Думаю, что скоро будет вторая часть этой статьи, посвящённая только пульту.
Более подробно про самостоятельную настройку пульта Вы можете прочитать тут:

http://lafox.net/support/index.php?showtopic=2972
http://linux.net.ru/node/269?PHPSESSID=df55a670f17d3c934834e09d45b99729

Приятной вам работы в Linux…
С Уважаением Ваш Андрей. Если у Вас буду вопросы, то пишите. с Удовольствием отвечу.

Приложения:

1) патч для ядра 2.6.12
2) Исходные исправленные файлы ядра 2.6.12
3) Компилированные модули ядра 2.6.12
Скачать
Огромное СПАСИБО… форуму ASPLinux и отдельно:
ukv; GoRo, Bomberman; Andriy (ASPLinux), bigbiker, pahan – это те люди, которые очень значительно помогли и облегчили мне работу.

Обсудить на форуме

@Mail.ru Rambler's Top100