Форум XBMC и Kodi. Помощь, поддержка, обсуждение, плагины.

Форум XBMC и Kodi. Помощь, поддержка, обсуждение, плагины. (http://xbmc.ru/forum/index.php)
-   Поддержка платформы Linux \ Live (http://xbmc.ru/forum/forumdisplay.php?f=7)
-   -   Как подключить родной пульт ASRock ION 330HT в openSUSE 11.3 (инструкция) (http://xbmc.ru/forum/showthread.php?t=392)

spinner 29.07.2010 18:23

Как подключить родной пульт ASRock ION 330HT в openSUSE 11.3 (инструкция)
 
Всем привет.

Полгода назад друг спросил у меня как это сделать. Но девайса для экспериментов у меня не было и я ему лишь подсказал как распаковать DEB-пакеты. В итоге он купил другой пульт...

Недавно я таки обзавелся своим экземпляром этой чудесной железки и решил вести ритуальную пляску с бубном до окончательной победы. Результатами делюсь со всеми, кому интересно. Надеюсь это избавит кого-нибудь от многочасового гугления:

Шаг первый: получаем исходный код драйверов

Драйвера скачиваются с сайта производителя:

Код:

wget http://europe.asrock.com/downloadsite/drivers/Nettop/Ubuntu/IR(10.04).zip
Распаковываем вложенные матрешкой ZIP'ы и получаем два исходных файла: lirc-nct677x-src-1.0.4-ubuntu10.04.deb и lirc-nct677x-1.0.4-ubuntu10.04.deb.

Для того, чтобы распотрошить дебиановские пакеты нужно установить утилиту dpkg из пакета deb:

Код:

zypper install deb
Потрошим дебиановские пакеты:

Код:

dpkg -x lirc-nct677x-1.0.4-ubuntu10.04.deb conf
dpkg -x lirc-nct677x-src-1.0.4-ubuntu10.04.deb src

В результате получаем две директории: src и conf, с исходниками и конфигурационными файлами соответственно. Конфиги понадобятся нам в самом конце, так что приступаем к укрощению исходников.

Шаг второй: Подготовка ядра

Для начала нужно убедиться, что установлены исходники ядра. В нашем примере мы используем официальное сусешное ядро 2.6.34-12-desktop. Заодно установим lirc, чтобы не возиться потом со скриптами запуска.

Код:

zypper install kernel-desktop-devel kernel-devel lirc
Теперь переходим в /usr/linux и готовим исходники ядра к сборке модулей:

Код:

make menuconfig
Нужно убедиться, что в разделе конфигурации General Setup в поле Local version мы видим "-12-desktop". Далее:

Код:

make prepare
По идее, этого достаточно, чтобы начать собирать модуль. Но поверьте, гораздо спокойнее жить когда ядро собрано на целевой системе. Поэтому рекомендую не полениться и собрать ядро, модули, установить всё и перезагрузиться уже в свое ядро. Знаю что «боянище», тем не менее:

Код:

make && make modules_install && make install
После перезагрузки заругался драйвер NVIDIA на невозможность сделать vmalloc. Вылечилось установкой параметра ядра при загрузке vmalloc=512m. Разумеется, можно этот параметр подкрутить перед сборкой ядра в конфиге. Пусть это будет домашним заданием особо въедливым читателям.

Шаг третий: сборка LIRC

Теперь нам нужны исходники LIRC, версия 0.8.6 для нашего случая. Скачиваем с www.lirc.org и распаковываем в /usr/src/lirc-0.8.6.

Конфигурируем LIRC с помощью ./configure, в меню выбираем Driver Configuration > IRDa/CIR hardware > WinBond 8769L, возвращаемся и выходим через Save configuration & run configure.

Не спешите запускать сборку — исходники LIRC придется патчить. Во-первых, нужно подсказать LIRC куда в новых для него ядрах подевался файл autoconf.h

Код:

ln -s /usr/src/linux/include/generated/autoconf.h /usr/linux/include/linux/autoconf.h
Пуристы могут вместо этого заменить linux/autoconf.h на generated/autoconf.h по всему дереву исходников LIRC.

Во-вторых, нужно подкрутить drivers/lirc_dev/lirc_dev.h:

Код:

cd /usr/src/lirc-0.8.6/drivers/lirc_dev
wget http://launchpadlibrarian.net/39884031/lirc-LP529514.patch
patch < lirc-LP529514.patch

Теперь LIRC можно собирать и устанавливать:

Код:

make && make install
Теперь приступаем к сборке модуля:

Шаг четвертый: сборка модуля ИК-порта

Исходники драйвера ИК-порта тоже переносим в /usr/src/lirc-nct677x-src-1.0.4-ubuntu9.10.
Заходим в эту директорию и собираем модуль командой:

Код:

make -C lirc_wb677 KSRC=/usr/src/linux KVER="2.6.34-12-desktop" modules
Если всё сделано правильно, модуль соберется, но ругнется на отсутствующие определения двух функций — lirc_register_driver и lirc_unregister_driver. Это неприятно, но с этим жить оказывается можно. Честным путем такой модуль загружаться откажется, но если его принудить, то будет работать без вопросов.

Устанавливаем модуль:

Код:

cp lirc_wb677/lirc_wb677.ko /lib/modules/2.6.34-12-desktop/misc/lirc_wb677.ko
depmod -a

Загружаем модули:

Код:

modprobe lirc_dev
modprobe -f lirc_wb677

Шаг пятый: сборка всего вместе и проверка

Осталось немного: сконфигурировать LIRC и проверить.

Заходим в директорию conf, в которую распаковывали конфигурационные файлы и находим там lircd.conf.wb677. Копируем его как /etc/lirc/lircd.conf

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

Код:

000000037ff07bf2 00 Home mceusb
000000037ff07bf2 00 Home mceusb
000000037ff07bf2 01 Home mceusb
000000037ff07be1 00 Up mceusb
000000037ff07be1 01 Up mceusb
000000037ff07be0 00 Down mceusb
000000037ff07be0 01 Down mceusb
000000037ff07bdd 00 OK mceusb
000000037ff07bdd 01 OK mceusb

Дальнейшие шаги уже зависят от фантазии. Я просто прописал команды загрузки модулей в /etc/init.d/lirc, чтобы они выполнялись, когда тот получает команду start.

Пульт работает.

bsp 29.07.2010 18:55

У меня вопрос , а к XBMC Вы его прикрутили этот пульт? Если можно, то hardware.conf, lircd.conf и lircmap плз приложите к сообщению. Интересно посмотреть.
И вот это :
"Я просто прописал команды загрузки модулей в /etc/init.d/lirc, чтобы они выполнялись, когда тот получает команду start."
Поподробней нельзя на эту тему?

spinner 29.07.2010 19:31

Вложений: 1
В установленном из репозитория PACKMAN XBMC (9.11) работает без вопросов.

hardware.conf и lircmap в системе отсутствует (?!), lircd.conf взят из пакета с драйвером. Приложил.

spinner 29.07.2010 19:33

Цитата:

Сообщение от bsp (Сообщение 2843)
"Я просто прописал команды загрузки модулей в /etc/init.d/lirc, чтобы они выполнялись, когда тот получает команду start."
Поподробней нельзя на эту тему?

Код:

case "$1" in
    start)
        modprobe lirc_dev
        modprobe -f lirc_wb677

        echo -n "Starting lircd "

Вот так :)

bsp 29.07.2010 19:40

Цитата:

Сообщение от spinner (Сообщение 2845)
В установленном из репозитория PACKMAN XBMC (9.11) работает без вопросов.

Именно это и интересовало. У Вас , если смотреть на lirc-nct677x-src-1.0.4-ubuntu10.04.deb, ось на базе ubuntu10.04. А XBMC 9.11 из пакетов стабильной версии собран.
В обычной мини убунте 10.04 у меня проблема с пультом . irw показывает коды для кнопок пульта без проблем. А irrecord запускается , но не реагирует на пульт.
Press RETURN to continue.
Now enter the names for the buttons.
Please enter the name for the next button (press <ENTER> to finish recording)
KEY_1

Now hold down button "KEY_1".
irrecord: no data for 10 secs, aborting
The last button did not seem to generate any signal.
Press RETURN to continue.

Спасибо за ответ.

Joky 29.07.2010 22:40

to bsp:
вы ошибаетесь, у него не ubuntu, а openSUSE, поэтому такие замороченные шаги.

у меня в мини ubuntu 10.04 этот пульт и считыватель работает нормально, хотя пришлось пошаманить

bsp 29.07.2010 23:39

Цитата:

Сообщение от Joky (Сообщение 2849)
to bsp:
вы ошибаетесь, у него не ubuntu, а openSUSE, поэтому такие замороченные шаги.

у меня в мини ubuntu 10.04 этот пульт и считыватель работает нормально, хотя пришлось пошаманить

По мне хоть убунту, лубунту , рунту - всё одно линуксовая ось. А openSUSE эта драйвер от lirc-nct677x-src-1.0.4-ubuntu10.04.deb юзает.
А Вам и шаманить то наверное не надо было, если специально драйвер для 10.04 под Ваш пульт написали, да и на 35 страницах на основном форуме по этому вопросу http://forum.xbmc.org/showthread.php?t=61840 и здесь http://forum.sabayon.org/viewtopic.p...102c3dc49f8163 и здесь https://bbs.archlinux.org/viewtopic.php?pid=727145
Мне другое в этом вопросе интересно было . На сайте lirc написано , что он поддерживает 2.6.31 и тестировался на нём. http://lirc.org/faq.html#compilation
А бубунта 10.04 с 2.6.32.хх пошла
~$ uname -v -r
2.6.32-24-generic #38-Ubuntu
Может поэтому и праблы с пультом?

spinner 30.07.2010 02:03

Цитата:

Сообщение от bsp (Сообщение 2850)
По мне хоть убунту, лубунту , рунту - всё одно линуксовая ось. А openSUSE эта драйвер от lirc-nct677x-src-1.0.4-ubuntu10.04.deb юзает.

Ну что Вы, нельзя же так всё под одну гребенку. Конечно, все "*бунты" близкие родственники, но с openSUSE у них огромное количество различий. И самое неприятное - отличающийся подход к конфигурированию системы.

Так исторически сложилось, что я "сусешник" и мое нежелание жить с Убунтой в медиацентре вызвано именно нежеланием тратить время на изучение, что там и где у ней закопано. Как говорится у классиков "лучше сейчас три дня потерять, зато потом за полчаса долететь".

Я ни вкоем случае не хочу сказать, что Ubuntu это плохо. И в случае с XBMC она является наименее безболезненным выбором, т.к. работает все в общем-то "из коробки". Но дело в том, что я на установке XBMC останавливаться не собираюсь, и буду обучать свой медиацентр разным премудростям. И тут очень важно точно знать, какие гайки в какую сторону крутить.

Также неверно, что в моем примере openSUSE использует драйвер от Ubuntu. Так можно было бы сказать, если бы я нашел способ установить и заставить работать убунтовкий бинарный пакет. А тут совершенно о другом речь: инженеры ASRock запаковали драйвер только для Ubuntu, видимо на остальных сил не хватило. Потому-то из src-пакета был выпотрошен и укрощен исходник драйвера, то есть модуля ядра. А модулю наплевать на дистрибутив, т.к. он живет внутри ядра и с внешним миром общается только посредством жестко стандартизированных механизмов.

Это очень важно понимать, т.к. описаный мной путь с небольшими отклонениями можно использовать на вообще любом дистрибутиве использующим ядро 2.6.34, будь то хоть Gentoo или Arch или ASPLinux. Кому что по душе.

Вот про LIRC Вы совершенно правы, в новых версиях ядра изменен API, которым он пользуется. Из-за этого собрать его не найдя подходящий патч невозможно.

P.S. Не принимайте близко к сердцу - люблю потеоретизировать :cool:

bsp 30.07.2010 07:53

spinner
Описание у Вас про пульт в openSUSE прекрасное. Мега зачёт.
И мне все равно кто какую ось юзает. И холивар на эту тему разводить совсем не хочу.
Мне нужно понять будет ли что в обновлениях 10.04 в сторону улучшения драйверов для пультов и как скоро. Или lirc.org об этом позаботится. Я у них нашёл присланный кем-то lirc_0.8.7pre специально заточенный под Aureal пульт, присланный каким-то энтузиастом. Отсюда вопрос стоит ли сейчас бежать в сторону 10.04 или юзать старый стабильный пакет хбмс на базе 9.10, тем более, что он работает неплохо.
Непонятно, есть ли необходимость в kernel 2.6.32.xx в связке с новыми версиями xbmc. То есть обязательно ли для новых версий XBMC использовать ось с kernel 2.6.32.xx или можно поставить ту же кармик с kernel 2.6.31.19 и на неё xbmc svn 32246 например. Тогда вопрос насколько корректно эта связка будет работать и будет ли вообще работать. Или хбмс запросит апгрейда ядра оси ?
Или такой вариант , можно ли кодеки нового svn вклеить в старый релиз 1.9.11 svn26018 ?
Ну не нравится мне просто как много вопросов возникает по новой 3хххххх сборке . Пока только один плюс - это в обработке разного формата видео.
Путанно конечно , но смысл думаю понятен. Тоже люблю потеоретить.

bigbax 02.08.2010 23:29

------------------------------------------


Текущее время: 02:44. Часовой пояс GMT +3.

Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.