Форум русскоязычного сообщества Ubuntu


Считаете, что Ubuntu недостаточно дружелюбна к новичкам?
Помогите создать новое Руководство для новичков!

Автор Тема: Самодельный IR приемник и LIRC. В Windows работает, в Linux нет.  (Прочитано 5789 раз)

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

Оффлайн xintrea

  • Автор темы
  • Новичок
  • *
  • Сообщений: 38
    • Просмотр профиля
Здравствуйте!

Достал из своих загажников вот такой самодельный девайс

http://www.cesko.host.sk/girderplugin.htm

Через него видятся команды с пульта в винде через программу WinLIRC. А вот в линухе (Ubuntu 7.04) завести данный девайс не могу. Делаю все вот по этому HOWTO

https://help.ubuntu.com/community/InstallLirc/Feisty

И уткнулся в то, что не могу сгенерировать lircd.conf...


В данный момент, при запуске компа, в логе видна надпись

##################################################
## LIRC IS NOT CONFIGURED ##
## ##
## read /usr/share/doc/lirc/html/configure.html ##
##################################################


Если сразу после старта посмотреть

# dmesg | grep lirc или
# dmesg | grep LIRC


то ничего не показывается. Так же, следущие команды

# lsmod lirc
# ps aux | grep lirc


тоже ничего не показывают.



Если запустить вот такой скрипт

setserial /dev/ttyS0 uart none
setserial /dev/ttyS1 uart none
modprobe lirc_dev
modprobe lirc_serial
/etc/init.d/lirc start


то в конце скрипта запуск демона lirc снова будет неудачным

##################################################
## LIRC IS NOT CONFIGURED ##
## ##
## read /usr/share/doc/lirc/html/configure.html ##
##################################################
Starting lirc daemon:.


Но после выполнения этого скрипта имеем

# dmesg | grep irc
[ 281.197664] lirc_dev: IR Remote Control driver registered, at major 61
[ 281.206875] lirc_serial: no version for "lirc_unregister_plugin" found: kernel tainted.
[ 282.209388] lirc_serial: auto-detected active high receiver
[ 282.209400] lirc_dev: lirc_register_plugin: sample_rate: 0

# lsmod | grep lirc
lirc_serial 13952 0
lirc_dev 16116 1 lirc_serial

# ps aux | grep lirc
Нет процесса



То есть вроде как все должно работать, только нужен нормальный файл /etc/lirc/lircd.conf. В интернете готового файла для моего девайса и управлялки не нашел. В HOWTO его предлагают сгенерировать через программу irrecord.



И дальше идет непонятка. Мой девайс подключен к COM1 (/dev/ttyS0). В HOWTO написано, что надо запускать команду

# irrecord -d /dev/lirc0 lircd.conf

Файл /dev/lirc0 появляется после загрузки модулей modprobe lirc_dev и lirc_serial . Это не ссылка на компорт, а файл устройства.

crw-rw---- 1 root root 61, 0 2008-05-28 14:11 lirc0

При запуске вышеприведенной команды (irrecord), начинается процесс распознавания клавиш. То есть, доходим до диалога

Now start pressing buttons on your remote control.
It is very important that you press many different buttons and hold them
down for approximately one second. Each button should generate at least one
dot but in no case more than ten dots of output.
Don't stop pressing buttons until two lines of dots (2x80) have been generated.
Press RETURN now to start recording.

Нажимаем Enter, потом начинаю давить на разные (или на одну) кнопки с продолжительностью 1 сек. Вроде как должны появляться точечки на каждое нажатие, но они не появляются. Через 10 секунд появляется такое сообщение

irrecord: no data for 10 secs, aborting
irrecord: gap not found, can't continue


и програма заканчивается.


Пробовал запускать irrecord в RAW режиме, добавив force опцию -f, вот так

# irrecord -d /dev/lirc0 -f lircd.conf

В этом случае имеем то же самое

irrecord: no data for 10 secs, aborting
irrecord: gap not found, can't continue



Если попытаться запустить эту команду с указанием COM1 (от рута)

# irrecord -d /dev/ttyS0 lircd.conf

то в ответ получаю

irrecord: could not init hardware (lircd running ? --> close it, check permissions)

Права на что нужно проверить? На файлы компортов? Они у меня такие

crw-rw---- 1 root dialout 4, 64 2008-05-28 18:07 ttyS0
crw-rw---- 1 root dialout 4, 65 2008-05-28 18:07 ttyS1


но под рутом как бы неважно, доступ должен быть полным...


Вот. Не знаю больше куда рыть и что делать, чтобы считать хоть какой сигнал с компорта. Как же запустить это LIRC? Как запустить генерацию файла lircd.conf?

Оффлайн jel

  • Активист
  • *
  • Сообщений: 828
    • Просмотр профиля
Похоже, что у тебя грузится неверный плагин для твоей железки.

hardware.conf для твоего девайса должен выглядеть так:
# /etc/lirc/hardware.conf
#
#Chosen Remote Control
REMOTE="Home-brew (Igor Cesko's variant)(16x50 UART compatible serial port)"

# Arguments which will be used when launching lircd
LIRCD_ARGS=""

#Don't start lircmd even if there seems to be a good config file
#START_LIRCMD=false

#Try to load appropriate kernel modules
LOAD_MODULES=true

# Run "lircd --driver=help" for a list of supported drivers.
DRIVER=""
# If DEVICE is set to /dev/lirc and devfs is in use /dev/lirc/0 will be
# automatically used instead
DEVICE=""
MODULES="lirc_dev lirc_serial_igor"

# Default configuration files for your hardware if any
LIRCD_CONF=""
LIRCMD_CONF=""


Чтобы освободить порт для lirc нужно поставить пакет setserial и сконфигурировать примерно так:
это /etc/serial.conf

#
###PORT STATE GENERATED USING AUTOSAVE-ONCE###
###AUTOSAVE-ONCE###
###AUTOSAVE-ONCE###
###AUTOSAVE###
#
# If you want to configure this file by hand, use
# dpkg-reconfigure setserial
# and change the configuration mode of the file to MANUAL. If you do not do this, this file may be overwritten automatically the next time you upgrade the
# package.
#
#/dev/ttyS0 uart 16550A port 0x03f8 irq 4 baud_base 115200 spd_normal skip_test
/dev/ttyS0 uart none
/dev/ttyS1 uart 16550A port 0x02f8 irq 3 baud_base 115200 spd_normal skip_test

тогда lircd сможет нормально стартовать на свободном порту (здесь ttyS0)

Когда все это сделаешь - можно генерировать lircd.conf для твоего пульта.

Оффлайн xintrea

  • Автор темы
  • Новичок
  • *
  • Сообщений: 38
    • Просмотр профиля
Спасибо! Теперь смог запустить lircd.

Только всеравно данные не принимаются. Вот какие действия я делал.


Создал файл /etc/serial.conf, прописал в него

/dev/ttyS0 uart none
/dev/ttyS1 uart 16550A port 0x02f8 irq 3 baud_base 115200 spd_normal skip_test


Теперь модули lirc_dev и lirc_serial нормально стартуют.

(Кстати, не пойму, у вас написан модуль "lirc_serial_igor", но у меня такого модуля нет. В HOWTO https://help.ubuntu.com/community/InstallLirc/Feisty написано, что для самодельного приемника надо использовать модули "lirc_dev lirc_serial". Где вы достали модуль lirc_serial_igor ? Может, и мне такой нужен?)

Далее встал вопрос о lircd.conf. Все таки я нашел конфиг для моего пульта. Почему-то не сразу понял, что надо по модели пульта искать а не по модели IR-приемника.

Конфиг такой http://lirc.sourceforge.net/remotes/sony/RMT-831

Насколько я понимаю, данный текст надо сохранить в виде файла /etc/lirc/lircd.conf, обязательно с UNIX переводом строк. Так и сделал. Правда наткнулся на ЗАЛИПУХУ. Тому кто делает такие залипухи надо лечиться срочно! Это люди просто из параллельной вселенной! Это ж какое извратное мЫшление нужно иметь, чтоб так систему конфигов строить.

ОКАЗЫВАЕТСЯ. При старте lircd, происходит считывание файла /etc/lirc/lircd.conf. Файл /etc/lirc/lircd.conf имеет текстовый формат, строки с комментариями начинаются со знака #. Вроде все как обычно. Однако нет! Первый КОММЕНТАРИЙ данного файла содержит ФЛАГ (ужос!), изменен ли этот файл или нет. То есть, если начало файла будет таким

#UNCONFIGURED
# To find out how to get a proper configuration file please read:
# /usr/share/doc/lirc/README.Debian

то независимо от того, есть ли далее текст конфигурации или нет, данный файл просматриваться не будет, и будет выведено сообщение, что lircd.conf не содержит конфигурацию. Пока это понял, думал что сам тронусь. Это какие-то биороботы такие залипухи делают. Кстати, в интернете из-за этой залипухи много непоняток, почему конфиг не применяется. Многие, как и я, просто добавляют текст конфига ниже данного заголовка.

В общем, после того как убрал этот заголовок в файле lircd.conf, демон lircd стал запускаться. Вот что теперь рассказывает dmesg и ps сразу после старта компьютера

# dmesg | grep lirc
[ 116.249003] lirc_dev: IR Remote Control driver registered, at major 61
[ 116.258086] lirc_serial: no version for "lirc_unregister_plugin" found: kernel tainted.
[ 117.258074] lirc_serial: auto-detected active high receiver
[ 117.258084] lirc_dev: lirc_register_plugin: sample_rate: 0

# ps aux | grep lirc
root 4967 0.0 0.0 2880 552 ? Ss 11:03 0:00 /usr/sbin/lircd --device=/dev/lirc0


То есть, вроде как все должно работать. НО НЕ РАБОТАЕТ!

Для теста рекомендуют запускать программу irw. И она должна в консоль выдавать названия кнопок, прописаных в lircd.conf. Но ничего не происходит. Куда еще копать то?

Оффлайн xintrea

  • Автор темы
  • Новичок
  • *
  • Сообщений: 38
    • Просмотр профиля
Ну вот, еще сутки продолбался, стало ясно в чем дело. Модули ядра lirc_dev и lirc_serial в официальном репозитарии убунты нерабочие. Можно было и не тратить время на настройку. Модули тупо не видят данных на COM-порте.

Я деинсталлировал пакеты lirc и lirc-modules-source. Взял исходники LIRC с официального сайта http://www.lirc.org. Собрал из них, установил.

В этой сборке модули ядра оказались рабочими.

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

Пришлось снова поставить пакет apt-get install lirc. И использовать демоны из него.

Пожже напишу подробнее.

Оффлайн wbtrap

  • Новичок
  • *
  • Сообщений: 1
    • Просмотр профиля
Спасибо! Теперь смог запустить lircd.

Только всеравно данные не принимаются. Вот какие действия я делал.


Создал файл /etc/serial.conf, прописал в него

/dev/ttyS0 uart none
/dev/ttyS1 uart 16550A port 0x02f8 irq 3 baud_base 115200 spd_normal skip_test


Теперь модули lirc_dev и lirc_serial нормально стартуют.

(Кстати, не пойму, у вас написан модуль "lirc_serial_igor", но у меня такого модуля нет. В HOWTO https://help.ubuntu.com/community/InstallLirc/Feisty написано, что для самодельного приемника надо использовать модули "lirc_dev lirc_serial". Где вы достали модуль lirc_serial_igor ? Может, и мне такой нужен?)

Далее встал вопрос о lircd.conf. Все таки я нашел конфиг для моего пульта. Почему-то не сразу понял, что надо по модели пульта искать а не по модели IR-приемника.

Конфиг такой http://lirc.sourceforge.net/remotes/sony/RMT-831

Насколько я понимаю, данный текст надо сохранить в виде файла /etc/lirc/lircd.conf, обязательно с UNIX переводом строк. Так и сделал. Правда наткнулся на ЗАЛИПУХУ. Тому кто делает такие залипухи надо лечиться срочно! Это люди просто из параллельной вселенной! Это ж какое извратное мЫшление нужно иметь, чтоб так систему конфигов строить.

ОКАЗЫВАЕТСЯ. При старте lircd, происходит считывание файла /etc/lirc/lircd.conf. Файл /etc/lirc/lircd.conf имеет текстовый формат, строки с комментариями начинаются со знака #. Вроде все как обычно. Однако нет! Первый КОММЕНТАРИЙ данного файла содержит ФЛАГ (ужос!), изменен ли этот файл или нет. То есть, если начало файла будет таким

#UNCONFIGURED
# To find out how to get a proper configuration file please read:
# /usr/share/doc/lirc/README.Debian

то независимо от того, есть ли далее текст конфигурации или нет, данный файл просматриваться не будет, и будет выведено сообщение, что lircd.conf не содержит конфигурацию. Пока это понял, думал что сам тронусь. Это какие-то биороботы такие залипухи делают. Кстати, в интернете из-за этой залипухи много непоняток, почему конфиг не применяется. Многие, как и я, просто добавляют текст конфига ниже данного заголовка.

В общем, после того как убрал этот заголовок в файле lircd.conf, демон lircd стал запускаться. Вот что теперь рассказывает dmesg и ps сразу после старта компьютера

# dmesg | grep lirc
[ 116.249003] lirc_dev: IR Remote Control driver registered, at major 61
[ 116.258086] lirc_serial: no version for "lirc_unregister_plugin" found: kernel tainted.
[ 117.258074] lirc_serial: auto-detected active high receiver
[ 117.258084] lirc_dev: lirc_register_plugin: sample_rate: 0

# ps aux | grep lirc
root 4967 0.0 0.0 2880 552 ? Ss 11:03 0:00 /usr/sbin/lircd --device=/dev/lirc0


То есть, вроде как все должно работать. НО НЕ РАБОТАЕТ!

Для теста рекомендуют запускать программу irw. И она должна в консоль выдавать названия кнопок, прописаных в lircd.conf. Но ничего не происходит. Куда еще копать то?

Аналогичная проблема!
У меня приемник по схеме с Light Alloy!
# sudo /etc/init.d/lirc restart работает нормально

# sudo irrecord /dev/lirc0 lircd.conf

стартует но с пульта нет сигнала
куда двигатся дальше?
« Последнее редактирование: 20 Августа 2008, 16:18:16 от wbtrap »

 

Страница сгенерирована за 0.061 секунд. Запросов: 23.