Автор Тема: Как наложить патч на модуль ядра?  (Прочитано 5555 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн ludoed

  • Местный
  • *****
  • Автор темы
  • Сообщений: 860
  • ludoed1970@jabber.ru
Как наложить патч на модуль ядра?
« : Ноябрь 28, 2010, 13:00:24 »
После долгого перерыва продолжил мучить TV-тюнер.
Выяснил, что проблема с отсутствием звука закопана в модуле saa7134_alsa
Вот тут http://linuxtv.org/hg/v4l-dvb/rev/1b4ac3e8b854566ebf02a11613d310e5595c5a31
опубликован патч для модуля ядра
Подозреваю, что раз патч до сих пор в ядро не вошел, разработчики забили на поддержку тюнера 7-летней давности, но железка-то рабочая! Жалко...
Надо как-то самому учиться решать проблему
скачал с этой же страницы пакет с исходниками по ссылке
http://linuxtv.org/hg/v4l-dvb/archive/1b4ac3e8b854.zip
Но там вместо кода одного только модуля до хрена еще каких-то исходников, относящихся к video4linux
Вот теперь не могу понять, как к этой куче подступиться.
1. Непосредственно наложить патч.
Исходник нашел (путь там прописан). Патч на веб странице есть. Куда его вставить - тоже нашел
Его как - тупо gedit'ом надо вставить, или какая-то команда есть? Не напахать бы...
2. Как и где это потом компилировать. В смысле - header'ы ядра у меня установлены, build-essential - тоже. НО:
Если компилить прямо в этой папке - он хедеры ядра возьмет установленные через apt - или из этой распакованной папки, где исходник модуля и еще куча всякой посторонней мути неизвестно какой версии?
3. Если оно получится - как ЭТО потом инсталлить? выгрузить модуль, подменить файлик и снова загрузить модуль? или через make install (checkinstall) заморочиться надо будет?

Ну, и общие вопросы: после каждого обновления ядра ЭТО надо будет перекомпилировать? Нельзя ли как-нибудь автоматизировать процесс, ну, там, через DKMS или еще как...
все юниксы очень дружелюбны.. они просто очень разборчивы в друзьях ;)

Настоящее труЪ: самописное ядро, выращенные на кухне кристаллы и программирование перемычками :)

Оффлайн butjapka

  • Местный
  • *****
  • Сообщений: 1147
  • Компьютер думает так, как думает его хозяин.
Re: Как наложить патч на модуль ядра?
« Ответ #1 : Ноябрь 28, 2010, 19:55:11 »
ну посмотрите например вот эту тему, сам патчи не накладывал, пробуйте...

Оффлайн sivers

  • Новичок
  • **
  • Сообщений: 16
Re: Как наложить патч на модуль ядра?
« Ответ #2 : Декабрь 26, 2010, 00:54:23 »
После долгого перерыва продолжил мучить TV-тюнер.
Выяснил, что проблема с отсутствием звука закопана в модуле saa7134_alsa

Мой тюнер AverMedia 509 также обнаруживается, как saa7134
Я не пробовал настраивать его в рунту, но он отлично работает в убунту - должен и здесь.
После лазанья в инете сделал скрипт "автоматической" настройки тюнера,
чтоб не мучиться при переустановке. Приведу его фрагмент:
#!/bin/sh
# При создании скрипта использовались следующие ресурсы:
# http://habrahabr.ru/blogs/ubuntu/75745/
# http://www.beholder.ru/bb/viewtopic.php?p=44751
# Скорее всего скрипт придется запустить 2 раза - до перезагрузки и после

# Для просмотра тв мы будем использовать tvtime,
# для управлением с пульта пакет lirc
# apt-get install tvtime
# apt-get install lirc

# Создаем конфиги модуля ядра, чтоб появилось устройство /dev/video0
sudo echo "alias char-major-81 videodev" > /etc/modprobe.d/saa7134.conf
sudo echo "options i2c-algo-bit bit_test=1" >> /etc/modprobe.d/saa7134.conf
sudo echo "options saa7134 card=102 tuner=38" >> /etc/modprobe.d/saa7134.conf
sudo echo "options saa7134 secam=d gbuffers=4" >> /etc/modprobe.d/saa7134.conf
sudo echo "" >> /etc/modprobe.d/saa7134.conf
sudo echo "alias char-major-81-0 saa7134" >> /etc/modprobe.d/saa7134.conf
sudo echo "alias char-major-81-1 off" >> /etc/modprobe.d/saa7134.conf
sudo echo "alias char-major-81-2 off" >> /etc/modprobe.d/saa7134.conf
sudo echo "alias char-major-81-3 off" >> /etc/modprobe.d/saa7134.conf

# Перезагружаемся и настраиваем alsamixer (все регуляторы громкости на 100%)
amixer -c 0 sset Master 100% unmute
amixer -c 0 sset Surround 100% unmute
amixer -c 0 sset Line 100% unmute cap
amixer -c 1 sset Line,1 100% unmute
amixer -c 1 sset Line,2 100% unmute
amixer -c 1 sset Video 100% unmute
# Тут можно пользоваться командой alsamixer и вручную выставить регуляторы на максимум.
# Также проследите, чтоб регуляторы не были отключены.
# Под регулятором не должно быть значка "ММ" (переключается клавишей "М")
# Регулеровки лучше сделать для всех карт (переключая их по F6)

# Чтобы убедиться, что ядро поддерживает тюнер и узнаеть его параметры
dmesg | grep saa7 | less
# Тут важно, чтобы карта была обнаружена и опознана (card=67, например),
# тюнер (tuner) был обнаружен, драйвер alsa для карты был загружен.

Дальше у меня идет настройка tvtime и lircd (для управления с пульта). Весь скрипт могу приложить, если заработает звук после приведенных выше настроек.

Оффлайн ludoed

  • Местный
  • *****
  • Автор темы
  • Сообщений: 860
  • ludoed1970@jabber.ru
Re: Как наложить патч на модуль ядра?
« Ответ #3 : Декабрь 26, 2010, 12:00:04 »
Не поможет.
Ваш тюнер новее, у него есть цифровое управление звуком. В моем - нет
Все это уже неоднократно пробовано
Звуковой чип тюнера должен обнаруживаться командой
arecord -lкак вторая звуковая карта. А он не обнаруживается.
Значит - проблема в модуле ядра

все юниксы очень дружелюбны.. они просто очень разборчивы в друзьях ;)

Настоящее труЪ: самописное ядро, выращенные на кухне кристаллы и программирование перемычками :)