Здесь будут шапка и навигация. Вернуться на сайт.

 

ТВ Тюнер

С EeePс отлично уживаются ТВ-тюнеры с подключением по USB. Модели для цифрового телевидения DVB можно «впаять» в качестве мода - поскольку, как правило, они очень компактны и экономичны. Однако для большинства обывателей в нашей стране цифровое телевидение пока недоступно. Поэтому стоит обратить внимание на аналоговые и гибридные устройства.

К моделям, предназначенным для работы под Windows обычно прилагаются диски с драйверами. Поэтому рассматривать особенности работы с ними мы не будем - всё и так уже достаточно хорошо описано в различных руководствах и мануалах.

С Linux всё немного сложнее, и перед тем, как купить какое-либо устройство, рекомендуется узнать его технические характеристики и элементную базу, и попытаться найти ответ на вопрос, удастся ли без проблем «завести» данное устройство под Linux. На текущий момент на рынке есть устройства, выполненные на инновационной элементной базе, которая пока не поддерживается linux-сообществом. Поэтому, купив тюнер «не глядя» вы рискуете в лучшем случае подождать несколько месяцев до того, как для него напишут драйвера, а в худшем - остаться вообще без таковых.

В качестве примера рассмотрим настройку под Eee тв-тюнера Pinnacle TV Hybrid Stick.

www.mpc.ru_images_news_4192_hybrid-stick-mac_lg.jpg

Настройка в UBUNTU Linux

Поскольку мы будем настраивать устройство для работы с Linux, совершенно неважно, что изначально оно предназначалось для Macintosh.

pinnaclesys.ru_images_products_product91877_a.jpg

Для данной модели (330E EU) имеются как драйвера ядра, так и новые экспериментальные модули пользовательского режима. Последние удобны тем, что «не вмешиваются» глубоко в систему, а потому намного реже вызывают проблемы из-за конфликтов с другими модулями.

Для «обычных» дистрибутивов описание настройки драйвера для данного тюнера можно найти вот здесь: http://www.mcentral.de/wiki/index.php5/Installation_Guide

Что же касается Ubuntu - с ним ситуация сложнее. Разработчики придумали свою модель сборки и распространения ядра. Базовое ядро, не отягощенное модулями, собирается отдельно в модуль ядра. Ему соответствует файл конфигурации, согласно которому в этом ядре практически ничего нет - даже поддержки звука! Отдельно собирается пакет т.н. «Linux Ubuntu Modules» (LUM). Он содержит остальные модули (также есть пакет с проприетарными (restricted) модулями, но нам он в данный момент неинтересен). Такая модель, с одной стороны, более «отзывчива» к самым последним обновлениям модулей - поскольку они поставляются независимо. Но, с другой стороны, иногда становится весьма проблематичным собирать сторонние модули, привязывающиеся к конфигурации ядра (например, saa7134_alsa из исходников с v4l не собирается, поскольку конфигуратор замечает, что в ядре отключена поддержка звука).

Такая организация ядра Ubuntu создаёт и другие проблемы. Например, версия alsa в LUM отличается от alsa в исходниках ядра. Поэтому сборка сторонних модулей с привязкой к исходникам ядра вызовет позднее проблемы несовместимости.

Следует отдать должное автору модуля для разбираемого здесь тв-тюнера. Он вошёл в положение пользователей ubuntu и специально для них собирает бинарные модули для generic-ядра. Если вы пользуетесь generic-ядром, вы можете найти соответствующий модуль в комментариях в ланч-паде: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/204578

Если вы используете другое ядро (например, сборку с array.org), всё чуть сложнее. Именно для этого ядра мы и будем компилировать драйвер.

Примечание: по приведённой ссылке: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/204578 - есть также готовый пакет для ядра 2.6.24-20-eeepc. Поэтому - если вам не хочется заниматься самостоятельной сборкой для этого ядра - посмотрите внизу страницы по приведенной ссылке.

Данное руководство исходит из следующих предпосылок: Во-первых, у вас установлено ядро 2.6.24-20-eeepc, а также модуль заголовков этого ядра. На заголовки сделан симлинк 'build' в папке /lib/modules/2.6.24-20-eeepc/. Во-вторых, система загружена с этим ядром.

Если вы не хотите в конечном итоге превращать систему в «сборочный» компьютер и вам не нужны в повседневной работе пакеты разработчика (с суффиксом -dev) - самый простой способ - загрузиться с Live-Flash и сохранить образ основного корневого раздела (например, /dev/sda1) с помощью partimage или просто dd. Позднее, когда сборка пакета тюнера будет завершена, вы можете сохранить сам пакет на другом разделе и восстановить систему из сохранённого образа.

Так же - мы не будем указывать названия необходимых для сборки пакетов. Убунта достаточно умная, чтобы сама предложить нужный пакет. Поэтому, например, если при выполнении команды «hg» вы увидите сообщение о том, что для данной команды нужно установить пакет mercurial - просто установите этот пакет, как советует система, а затем запустите исходную команду снова.

Так же - мы не будем пользоваться sudo для выполнения команд от имени root. Мы просто однажды выполним sudo -i и введём свой пароль - и далее всё будем делать прямо в root-овой консоли.

Получение исходников LUM EeePC

1. Откройте в браузере сайт http://www.array.org/ubuntu/source.html. Скачайте оттуда патч для LUM (diff.bz). (стоит оговориться, что изначально версия ядра для экспериментов - 2.6.24-20-eeepc выбрана именно потому, что для неё есть исходники. в настоящий момент уже есть ядро 2.6.24-21-eeepc, однако Адам ещё не выложил исходники, поэтому мы ничего не сможем с ним поделать). Итак, скачайте патч, запишите версию патча (например, 2.6.24-20.29eeepc1) и ссылку на репозитарий - git://kernel.ubuntu.com/ubuntu/ubuntu-hardy-lum

2. Откройте сайт http://kernel.ubuntu.com, пройдите по ссылке GitWeb, а оттуда - к проекту (ubuntu/ubuntu-hardy-lum). С учетом имеющейся версии патча найдите тэг коммита с подходящей версией. В данном случае это будет Ubuntu-2.6.24-20.29. Нажмите на линк «tag» справа от строчки с версией. На открывшейся странице скопируйте object id (в данном случае это будет 3a2c3716c3f53fe8d36934334075f39f78cf4642).

Далее введите следующие команды:

# cd /usr/src
# git clone git://kernel.ubuntu.com/ubuntu/ubuntu-hardy-lum
# git checkout 3a2c3716c3f53fe8d36934334075f39f78cf4642

Вы получили оригинальные исходники LUM в папке /usr/src/ubuntu-hardy-lum. Теперь нам нужно пропатчить эти исходники, чтобы получить исходники LUM для нашего ядра. Скопируйте загруженный патч (который вы скачали на первом шаге) в папку into /usr/src/ubuntu-hardy-lum и примените его:

# cd /usr/src/ubuntu-hardy-lum
# zcat ubuntu-hardy-lum+eeepc_2.6.24-20.29eeepc1.diff.gz | patch -p1

Теперь вы получили исходники LUM для ядра 2.6.24-20-eeepc.

Получение и внедрение исходников драйвера em28xx

Посетите уже упомянутую выше страницу: http://www.mcentral.de/wiki/index.php5/Installation_Guide и посмотрите на шаг 10. Вам нужно выполнить содержащиеся там указания до команды «sudo ./build.sh». Буквально вам нужно сделать следующее:

# cd /usr/src
# hg clone http://mcentral.de/hg/~mrec/em28xx-new
# cd em28xx-new

Теперь внедрим исходники em28xx в исходники LUM:

# ./build.sh ubuntu

(после этого папка /usr/src/em28xx, в общем-то, уже не нужна).

Включение em28xx в конфиг LUM

Включение em28xx в исходники LUM вовсе не означает, что этот драйвер автоматически соберётся вместе с LUM. Для этого нужно прописать его в соответствующий Makefile. Делаем следующее.

1. Открываем файл /usr/src/ubuntu-hardy-lum/debian/config/i386: находим там строчку CONFIG_EEEPC_ACPI=m и добавляем после неё:

CONFIG_EEEPC_TVTUNER=m

(в общем-то, искать строчку для этого необязательно - просто, для конкретности изложения).

2. Открываем файл /usr/src/ubuntu-hardy-lum/ubuntu/Makefile: находим там строчку obj-$(CONFIG_EEEPC_ACPI) += acpi/eeepc-acpi/ и добавляем после неё:

obj=$(CONFIG_EEEPC_TVTUNER) += media/empia/

Сборка пакета LUM

Переходим в папку /usr/src/ubuntu-hardy-lum и выполняем:

# fakeroot debian/rules binary-arch arch=i386 flavours=«eeepc»

Эта операция займёт несколько минут. По её окончании в папке /usr/src вы найдёте готовый .deb пакет c LUM и драйвером empia.

Перенос драйвера в отдельный пакет

В общем-то, вы можете просто установить полученный пакет и радоваться жизни. Однако здесь есть ещё одна проблема: при обновлении система обнаружит, что пакет lum изменился, и предложит его обновить. В результате она перезагрузит новый пакет старым, полученным с репозитария array.org - и вы снова потеряете драйвер. Чтобы так не случилось, мы создадим отдельный пакет с драйвером.

Зайдите «внутрь» пакета .deb из Midnight Commander (просто нажмите enter) и «вытащите» оттуда папку empia. В пакете она находится здесь: CONTENT/lib/modules/2.6.24-20-eeepc/ubuntu/media/empia. Либо - если вы установили пакет, найдите её непосредственно в /lib/modules.

Структуру папки можно изменить: избавимся от подпапок и просто «свалим» все файлы в кучу. Получим примерно так:

ls -l empia
итого 656
-rw-r–r– 1 root root 74436 2008-08-09 02:56 drx3973d.ko
-rw-r–r– 1 root root 12924 2008-08-09 02:56 em28xx-audio.ko
-rw-r–r– 1 root root 30400 2008-08-09 02:56 em28xx-cx25843.ko
-rw-r–r– 1 root root 20752 2008-08-09 02:56 em28xx-dvb.ko
-rw-r–r– 1 root root 408300 2008-08-09 02:56 em28xx.ko
-rw-r–r– 1 root root 7908 2008-08-09 02:56 lgdt3304-demod.ko
-rw-r–r– 1 root root 7444 2008-08-09 02:56 mt2060.ko
-rw-r–r– 1 root root 8752 2008-08-09 02:56 qt1010.ko
-rw-r–r– 1 root root 24888 2008-08-09 02:56 tvp5150.ko
-rw-r–r– 1 root root 7676 2008-08-09 02:56 xc3028-tuner.ko
-rw-r–r– 1 root root 21508 2008-08-09 02:56 xc5000-tuner.ko
-rw-r–r– 1 root root 10668 2008-08-09 02:56 zl10353.ko

Далее - создаём папку корня пакета. Например, empack. Относительно этой папки создаём следующую структуру папок:

[empack]/lib/modules/2.6.24-20-eeepc/empia

empia - это наша папка с файлами драйвера.

Создаём в ней ещё одну папку:

[empack]/DEBIAN

Помещаем в неё два файла со следующим содержимым:

1. Файл с именем control (DEBIAN/control):

Package: empiatech-drivers-eeepc20
Version: 7eeepc
Section: kernel
Priority: optional
Architecture: i386
Essential: no
Maintainer: Markus Rechberger mrechberger@empiatech.com
Pre-Depends: dpkg (>= 1.10.24)
Depends: linux-ubuntu-modules-2.6.24-20-eeepc
Provides: empiatech-drivers
Description: Empiatech USB TV drivers
.
This package provides the latest drivers for
Empiatech based USB TV products for Asus EeePC
Package date/time 2008-08-09 17:18:35

2. Файл с именем postinst (DEBIAN/postinst):

#!/bin/bash
find /lib/modules/2.6.24-20-eeepc | grep video/em28xx | xargs rm -rf
find /lib/modules/2.6.24-20-eeepc | grep video/tvp5150.ko | xargs rm -rf
depmod -a

Этот файл должен быть исполняемым (права на оба файла вы можете установить согласно листингу: )

ls -la
итого 16
drwxr-xr-x 2 root root 4096 2008-08-09 17:55 .
drwxr-xr-x 4 root root 4096 2008-08-09 17:53 ..
-rw-r–r– 1 root root 503 2008-08-09 17:55 control
-rwxrwxr-x 1 root root 165 2008-08-09 17:37 postinst

Теперь поднимитесь до папки, где содержится папка с заготовкой пакета (empack) и выполните следующую команду:

# dpkg-deb –build empack

В результате вы получите пакет empack.deb, содержащий драйвер em28xx для вашего ядра.

Поздравляем! теперь вы можете сохранить драйвер в надёжном месте и (если хотите) восстановить систему из ранее созданного образа, чтобы избавиться от всех «девелоперских» пакетов.

Если драйвер не заработает сразу после установки - возможно, потребуется перезагрузка.

Пара слов про звук

Звук в тюнере обычно идет через отдельное устройство alsa. Чтобы его услышать, запускайте sox. Например, вы можете запускать tvtime вот таким скриптом:

#!/bin/bash

sox -r 48000 -w -t alsa hw:1,0 -t alsa hw:0,0 & pid=$!
sleep 2
tvtime –mixer=/dev/mixer:vol
wait tvtime
kill $pid

Либо пересоберите модифицированный tvtime отсюда: http://mcentral.de/hg/~mrec/tvtime (FIXME: надо о последнем поподробнее)

 
аксессуары/тв-тюнер.txt · Последние изменения: 09.10.10 20:54 (внешнее изменение)