Счетчик посещений

Инструкция по установке драйвера DVBWorld USB2102 DVB-S/PCI2002(и многих прочих)для Linux.English Version

Обновлено 26.10.2008:

Все драйвера в ядре 2.6.28
Кто не найдет своих драйверов там, пользуйтесь ссылкой
http://mercurial.intuxication.org/hg/s2-liplianin.

Обновлено 20.08.2008:

Приглашаю всех качать с:
http://liplianindvb.sourceforge.net.
Кто не найдет своих драйверов там, пользуйтесь предыдущими ссылками

Обновлено 07.07.2008:

Версия для linux 2.6.26 и/или последного v4l-dvb. dvblipl07072008.tar.bz2.

Обновлено 01.07.2008:

Обнаружился баг в драйвере для карт на чипе DM1105(N). Проявляется зависанием при включении компьютера. Состоит в том, что в двух местах кода вместо j прописано i. Спасибо Крису из Кейптауна, Южная Африка за сообщение. dvblipl01072008.tar.bz2.

Обновлено 01.05.2008:

Переделал архив, который оказался вовсе не bzip2, а gzip dvblipl06042008.tar.bz2. Теперь формат соответствует.

Обновлено 06.04.2008:

Публикую версию драйвера 2002/2102 с экспериментальной поддержкой карты TV878DS USB. Брать файл dvblipl06042008.tar.bz2. Если у вас такая карта, можете смело писать на liplianin-at-me-dot-by работает ли она. Также вернул таблицу инициализации фронтенда STV0299 к прежнему значению.

Обновлено 23.03.2008:

Публикую версию драйвера 2002/2102, которая не требует патчить ядро или v4l-dvb. Брать файл dvblipl.tar.bz2. Проверено на linux-2.6.24.3. Устанавливается просто:

   
	tar -xvf dvblipl.tar.bz2
	cd dvblipl
	make 
	make install 

Обновлено 20.03.2008: Публикую патч для ядра linux-2.6.23.12. Не требует обновления v4l-dvb. Брать файл dvb-igorlipl.diff. Содержит драйвера 2002/2102 с поддержкой пульта дистанционного управления. Также публикую lirc.conf для этих карт.

Обновлено 16.03.2008: Публикую патч для ядра linux-2.6.23.12. Не требует обновления v4l-dvb. Брать файл dvb-liplianin.diff. Содержит драйвера 2002/2102 и мобильника Benq-Siemens EF81;-) Значительно увеличена стабильность драйвера 2002 и уменьшена загрузка процессора. Как начало работы над ПДУ для 2002 добавлен параметр ir_debug. При

modprobe dm1105 ir_debug=1
можно командой
dmesg
просмотреть коды нажатых клавиш на ПДУ. Внедрена экспериментальная поддержка Axess DM05 и DM713S карт на чипе DM1105. Можете править константы DM05_LNB_MASK, DM05_LNB_13V, DM05_LNB_18V и писать мне о результате на liplianin(at)me(dot)by.

Обновлено 10.01.2008: Публикую патч для ядра linux-2.6.23.12. Не требует обновления v4l-dvb. Брать файл dm1105-liplianin.diff. Содержит драйвера 2002/120 и мобильника Benq-Siemens EF81;-)

Обновлено 23.12.2007:Добавил поддержку устройства PCI\VEN 109F:036F SUBSYS 2002:0000.

Обновлено 14.12.2007: Уточнил инструкцию, а именно указал на команду make kernel-links.

Обновлено 10.12.2007: Драйвера 2102/110 объединены в один diff.
Брать можно здесь: v4l-dvb-liplianin.diff
По историческим причинам сохраняю отдельные diff-ы, но обновлять их не стану.

Обновлено 10.12.2007: Драйвер PCI2002. обьявляю работающим стабильно.
Брать можно здесь: v4l-dvb-liplianin.diff

Обновлено 09.12.2007: Драйвер PCI2002. уже в работоспособном состоянии.

Обновлено 9.11.2007 21:40 GMT+2 - объявляю о начале работы над драйвером DVBWorld 2002 PCI.

Обновлено 27.10.2007 15:00 GMT+2 - добавлена полезные ссылки.

Обновлено 27.10.2007 14:00 GMT+2 - добавлена описание обмена информацией с картой по шине USB.

Обновлено 20.10.2007 02:46 GMT+2 - добавлена поддержка пульта дистанционного управления.

Для начала качаем с сайта http://www.linuxtv.org последние драйвера v4l-dvb командой:

	hg clone http://linuxtv.org/hg/v4l-dvb

Для не желающих разбираться с этим сайтом привожу простую ссылку: http://linuxtv.org/hg/v4l-dvb/archive/tip.tar.bz2. Получаем файл вида v4l-dvb-44dad58ec6e2.tar.bz2.

Сам драйвер для USB2102 в виде diff файла берем по ссылке: http://liplianin.at.tut.by/v4l-dvb-liplianin.diff.

Фирмваре выделяем из драйвера Windows. Как извлечь фирмваре из драйвера Windows – http://linuxtv.org/wiki/index.php/Acorp_DS120. Или читаем ниже. Или скачиваем готовое по ссылке http://liplianin.at.tut.by/dvb-usb-dw2102.fw. Помещаем его в /lib/firmware.

Имеем уже все что надо из файлов. Осталось ручки приложить (а те, у кого голова умная, могут и не читать – сами разберутся ).

Далее полученный архив v4l-dvb-44dad58ec6e2.tar.bz2 помещаем например в папку /work и распаковываем командой:

 	tar -xvf v4l-dvb-44dad58ec6e2.tar.bz2

Получился каталог v4l-dvb. Помещаем туда наш v4l-dvb-liplianin.diff файл. И применяем этот diff (он же patch) командой из этого же каталога:

	patch -p1 -N < v4l-dvb-liplianin.diff

Получился каталог исходных файлов драйверов v4l-dvb с включенным в него драйвером DVBWorld DW2102 USB2 DVB-S.

Внимание! Если вы до этого уже делали попытки установить v4l-dvb, особенно из других каталогов, то,
чтобы указать команде make откуда брать исходники, надо дать команду

	make kernel-links

Конфигурируем командой:

	make menuconfig

Она показывает нам красивое меню:


Выбираем там в разделе Multimedia devices;


DVB/ATSC adapters;


Dvbworld DW2102. Сохраняем.


Далее:

	make 
	make install 

Или одной строкой:

	make && make install.

Готово!

Вставляем 2102 в USB, при этом драйвер грузится в память автоматически, и она уже должна работать!

Linux не обязательно перезагружать после обновления драйвера. Достаточно дать команду:

	rmmod dvb-usb-dw2102

а затем передернуть USB карточку.

Когда драйвер включат в основную ветку v4l-dvb, станет проще – не надо будет скачивать патч и его применять (или накладывать).

USB ID карты.

VID:PID = 04B4:2102

Состав.

Sharp BS2F7VZ0194A тюнер, а в нем:

-тюнер похож на TSA5059

-STM STV0299B демодулятор

Контроллер Cypress CY7C68013 с поддержкой USB 2.0

Фирмваре.

Оно находится в файле DVBUSBS2102.sys по адресу: смещение 0x47C0, длина 8192(0x2000).

Извлекается при помощи скрипта:

 #!/usr/bin/perl
 
 use File::Temp qw/ tempdir /;
 use IO::Handle; 
 
     extract("DVBUSBS2102.sys", 0x47c0, 8192, "dvb-usb-dw2102.fw");

Обмен по USB.

Согласно Usbsnoop.log, приемник загружает фирмваре кусками по 64 байта через endpoint 0(как это по русски?).

 000005:  OUT: 000001 ms 000057 ms 40 a0 92 7f 00 00 01 00 >>>  01
 000006:  OUT: 000000 ms 000058 ms 40 a0 00 e6 00 00 01 00 >>>  01
 000007:  OUT: 000000 ms 000058 ms 40 a0 00 00 00 00 40 00 >>>  02 08 5d 00 01 02 02 03 03 04 04 05 05 12 07 bc 02 0c 59 02 07 b8 c0 e0 c0 83 c0 82 90 e6 b5 e0 44 01 f0 d2 01 12 0a 09 74 01 f0 d0 82 d0 83 d0 e0 32 32 02 00 4e 8f 31 8d 32 8a 33 8b 34 d3 22
 ...... 
 000134:  OUT: 000000 ms 000086 ms 40 a0 c0 1f 00 00 40 00 >>>  aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
 000135:  OUT: 000000 ms 000086 ms 40 a0 92 7f 00 00 01 00 >>>  00
 000136:  OUT: 000002 ms 000086 ms 40 a0 00 e6 00 00 01 00 >>>  00

Запись в регистры STV0299 (значение a1 в регистр 00,значение 15 в регистр 01 и значение 00 в регистр 02):

 000413:  OUT: 000000 ms 006697 ms 40 b2 00 00 00 00 03 00 >>>  2a 00 a1
 000414:  OUT: 000001 ms 006697 ms 40 b2 00 00 00 00 03 00 >>>  2a 01 15
 000415:  OUT: 000001 ms 006698 ms 40 b2 00 00 00 00 03 00 >>>  2a 02 00

Чтение из регистров STV0299 (регистр 28, значение 00):

 000478:  OUT: 000001 ms 006738 ms c0 b5 28 00 00 00 02 00 <<<  00 b5

Запись в PLL через i2c контроллер STV0299, где последовательность c0 42 08 e1 00 есть i2c сообщение для PLL по адресу c0.

 000491:  OUT: 000001 ms 006748 ms 40 b2 00 00 00 00 03 00 >>>  2a 05 b5
 000492:  OUT: 000040 ms 006749 ms 40 b2 00 00 00 00 07 00 >>>  2c 05 c0 42 08 e1 00

Питание LNB, где XX=00 для 13v, XX=01 для 18v.

 000503:  OUT: 000001 ms 038730 ms 40 b2 00 00 00 00 02 00 >>> 30 XX

Дистанционное управление, где байт ff - код клавиши:

 000193:  OUT: 000075 ms 006766 ms c0 b8 00 00 00 00 02 00 <<< ff b8

Полезные ссылки

Конечно же: http://www.usb.org

FAQ по Usbsnoop: http://mxhaard.free.fr/spca50x/Download/snoopy.pdf

USB сниффер: http://benoit.papillault.free.fr/usbsnoop/sniff-bin-1.8.zip

Парсер для usbsnoop.log: http://www.isely.net/downloads/pvrusb2-mci-20070428a.tar.bz2

Проект Usbreplay (там тоже есть парсер): http://mcentral.de/wiki/index.php/Usbreplay

Командуем:

cat usbsnoop.log | parser.pl > usbsnoopparsed.log

Затем думаем над содержимым usbsnoopparsed.log.=)

Поможет в нашем деле модуль usbmon. С его помощью можно проверить пересылки по USB под Linux'ом. Читайте /usr/src/linux/Documentation/usb/usbmon.txt

(c)Copyright. Igor M. Liplianin. 2007, 2008