Наконец-то, дошли у меня руки оживить пульт ДУ под новой ОС.
Вот
такая карточка имеется и работает у меня с 2005 года, из них крайние 11 лет под Linux'ом:
В комплект, как видим, кроме собственно тюнера, входит также пульт ДУ и ИК-приемник, который подключается к COM-порту. Причем, благодаря
LIRC, с их помощью можно управлять не только работой ТВ-тюнера, но и другими приложениями: например, аудиопроигрывателем.
Под старым добрым
Scientific Linux 6 все это хозяйство, будучи единожды настроенным, в течение доброго десятка лет работало, как часы. Естественно, что с переходом на
CentOS 8, а в связи с
недавними событиями - с него на
Oracle Linux 8, мне захотелось, чтобы и там все это хозяйство работало так же легко и красиво.
Подводный камень заключался в том, что, начиная с ядра 4.10, модуль
lirc_serial был выпилен, а вместо него внедрен модуль
serial_ir ("коробочное" ядро CentOS 8 имеет версию 4.18, я же использую 5.5.3 с собственным конфигом). Соответственно, под новое окружение, был в своей версии 0.10 переработан с ног на голову и LIRC - ровно настолько, чтобы использовать старые файлы конфигурации оказалось совершенно невозможным.
В общем, пришлось настраивать LIRC с чистого листа - благо, этот процесс несложен и хорошо документирован. В теории. А на практике случилась редкостная задница. После того, как все было исполнено в соответствии с
маном, LIRC взлетать отказался. При этом было полное ощущение, что
lircd просто в упор не видит приемника, подключенного к COM-порту. Во всяком случае, выхлоп
irw молчал, как в танке, чего только ни делай. На поиски причин потратил уйму времени, но ясности это не прибавило. Я, грешным делом, даже подумал, что пропал контакт в разъеме порта, или же случайно коцнули шнурок, идущий к приемнику. Но нет - перезагружаю старую систему, и все под ней прекрасно находится и работает!
Как почти всегда бывает в подобных случаях, решение оказалось феерически простым и глупым. Надо было, всего-навсего, в файле /etc/lirc/lirc_options.conf вместо
code = /usr/bin/setserial /dev/ttyS0 uart none ,как
предписывалось в мане, прописать:
code = /usr/bin/setserial /dev/ttyS0 uart 16550Т.е., указать в явном виде тип используемого UART. И все, сразу ожил выход
irw в ответ на нажатие кнопочек пульта:
irw
0000000000fe203a 00 0/AV PinnacleSysPCTVRemote
0000000000feb21e 00 Zoom PinnacleSysPCTVRemote
0000000000fe851b 00 vol+ PinnacleSysPCTVRemote
0000000000feb21e 00 Zoom PinnacleSysPCTVRemote
0000000000fecb2b 00 Info PinnacleSysPCTVRemote
0000000000fe5338 00 8 PinnacleSysPCTVRemote
0000000000feb53c 00 Mute PinnacleSysPCTVRemote
0000000000fe4325 00 Chan_Last PinnacleSysPCTVRemote
0000000000fe173f 00 Chan+Play PinnacleSysPCTVRemote
0000000000feb21e 00 Zoom PinnacleSysPCTVRemote
0000000000fe8239 00 9 PinnacleSysPCTVRemote
0000000000fe631f 00 L PinnacleSysPCTVRemote
0000000000fe203a 00 0/AV PinnacleSysPCTVRemote
0000000000fe541a 00 middle PinnacleSysPCTVRemote
0000000000fec63e 00 Chan-Stop PinnacleSysPCTVRemote
0000000000fe2a0d 00 Play PinnacleSysPCTVRemote
0000000000fe880e 00 Rewind PinnacleSysPCTVRemote
..........................
Прикрутить остальное было уже делом техники:
Итого, для успешного запуска ДУ потребовалось в файле /etc/lirc/lirc_options.conf вместо
[lircd]
driver = default
device = auto
[modinit]
code = /usr/bin/setserial /dev/ttyS0 uart none
code1 = /usr/sbin/modprobe serial_irпрописать:
[lircd]
driver = pinsys
device = /dev/ttyS0
[modinit]
code= /usr/sbin/rmmod serial_ir
code1 = /usr/bin/setserial /dev/ttyS0 uart 16550
code2 = /usr/sbin/modprobe serial_irА все остальное - да, в полном соответствии с маном. Замечу попутно, что
mode2 при таких параметрах не работает - ну, да он нам и не нужен.
А самое обидное - это то, что вот это вот гадское
'setserial /dev/ttyS0 uart none' расползлось по всем форумам, руководствам, помойкам и шпаргалкам в качестве единственного и непререкаемо правильного варианта. Отдельные умники даже специально подчеркивали, что это необходимо для того, чтобы система не перехватывала управление портом. Мысль о том, что данная команда просто банально прибьет функционирование порта, в их головы как-то не приходила. Как, впрочем, и в мою. Ну, да ладно. Главное - что в итоге все получилось.