Работа IR WirenBoard 55 wb-2207

На контроллере не работает ИК порт.
Пытался заставить работать ИК порт. После неопределенных действий - он таки все же работал но только до перезагрузки.
Что делал:

  1. Пытался собрать lirc-0.10.2 (безуспешно)
  2. Загружал драйвер modprobe lirc-pwm
  3. Просто пытался запустить /usr/sbin/lircd
  4. Перезапускал service wb-mqtt-lirc restart
    После этого реально пульт работал и работали правила по кнопкам. Но после перезагрузки все превратилось в тыкву(. Пытался повторить данные действия, но все безуспешно.
~/lirc-0.10.2# modinfo lirc-pwm
filename:       /lib/modules/4.9.22-wb1/kernel/drivers/staging/media/lirc/lirc_pwm.ko
license:        GPL
author:         Alexey Ignatov <lexszero@gmail.com>
description:    LIRC generic GPIO/PWM Transceiver driver
alias:          of:N*T*Clirc-pwmC*
alias:          of:N*T*Clirc-pwm
depends:        lirc_dev
staging:        Y
intree:         Y
vermagic:       4.9.22-wb1 mod_unload modversions ARMv5 p2v8
ps aux |grep lirc
root       302  0.0  1.0   4416  1344 ?        Ss   14:54   0:00 /usr/bin/irexec /etc/lirc/irexec.lircrc
root       310  0.0  1.1   4492  1408 ?        Ss   14:54   0:00 /usr/sbin/lircmd --nodaemon
root       833  1.6  1.8   7516  2296 ?        Ss   14:55   0:55 /usr/sbin/lircd --nodaemon
root      6233  0.3  3.1  34532  3832 ?        Sl   15:04   0:09 /usr/bin/wb-mqtt-lirc -c /etc/wb-mqtt-lirc.conf
root     17438  3.0  1.6   5960  1992 pts/0    S+   15:50   0:00 grep lirc

 apt show lirc
Package: lirc
Version: 0.9.4c-9
Priority: extra
Section: utils
Maintainer: lirc Maintainer Team <pkg-lirc-maint@lists.alioth.debian.org>
Installed-Size: 1 939 kB
Depends: liblirc0 (= 0.9.4c-9), init-system-h
dmesg | grep lirc # Поиск информации об ошибке в системных журналах
[   12.991356] lirc_dev: IR Remote Control driver registered, major 245
[   13.012809] lirc_pwm: module is from the staging directory, the quality is unknown, you have been warned.
[   13.095609] lirc_pwm: module is from the staging directory, the quality is unknown, you have been warned.
[   13.124724] lirc_pwm lirc-rfm69: GPIO receiver on pin 37
[   13.242992] lirc_pwm lirc-rfm69: lirc_dev: driver lirc-rfm69 registered at minor = 0
[   13.250784] lirc_pwm lirc-rfm69: probed
[   13.423805] lirc_pwm lirc-cir: PWM transmitter on lirc-cir, max duty 50%
[   13.430714] lirc_pwm lirc-cir: GPIO receiver on pin 79
[   13.549103] lirc_pwm lirc-cir: lirc_dev: driver lirc-cir registered at minor = 1
[   13.640471] lirc_pwm lirc-cir: probed
[  221.885251] lirc_pwm lirc-cir: Value on the pin #79 hasn't been changed! (wtf?) value=0, last=66985162, now=221767393, delta=154782231

Советую проверить - меняется ли на gpio приемника (79 по документации) уровень.
Ну и посмотрите debug вывод сервиса.

При запуске wiren вот это запущено

root@wirenboard-AEUQHNW4:~# ps aux|grep lirc
root       318  0.0  1.1   4492  1408 ?        Ss   11:04   0:00 /usr/sbin/lircmd --nodaemon
root       324  0.0  1.1   4416  1380 ?        Ss   11:04   0:00 /usr/bin/irexec /etc/lirc/irexec.lircrc
root       688  0.3  2.4  34532  2968 ?        Sl   11:04   0:02 /usr/bin/wb-mqtt-lirc -c /etc/wb-mqtt-lirc.conf
root       773  0.8  1.8   7400  2268 ?        Ss   11:04   0:05 /usr/sbin/lircd --nodaemon --debug

Дебаг ничего не показал. Либо я не то что то выставил.

oot@wirenboard-AEUQHNW4:~# journalctl -b 0 /usr/sbin/lircd
-- Logs begin at Tue 2024-01-09 19:02:38 MSK, end at Thu 2024-01-11 11:10:06 MSK. --
янв 11 11:04:38 wirenboard-AEUQHNW4 lircd-0.9.4c[773]: Info: lircd:  Opening log, level: Info
янв 11 11:04:44 wirenboard-AEUQHNW4 lircd-0.9.4c[773]: Info: Initial device: /dev/lirc1
янв 11 11:04:44 wirenboard-AEUQHNW4 lircd[773]: lircd-0.9.4c[773]: Debug: lircd:  Opening log, level: Debug
янв 11 11:04:44 wirenboard-AEUQHNW4 lircd[773]: lircd-0.9.4c[773]: Notice: Using systemd fd
янв 11 11:04:44 wirenboard-AEUQHNW4 lircd[773]: lircd-0.9.4c[773]: Warning: Running as root
янв 11 11:04:44 wirenboard-AEUQHNW4 lircd[773]: lircd-0.9.4c[773]: Info: Using remote: RM-887.
янв 11 11:04:44 wirenboard-AEUQHNW4 lircd-0.9.4c[773]: Info: Initial device: /dev/lirc1
янв 11 11:04:45 wirenboard-AEUQHNW4 lircd[773]: lircd-0.9.4c[773]: Notice: lircd(default) ready, using /var/run/lirc/lircd
янв 11 11:04:45 wirenboard-AEUQHNW4 lircd[773]: lircd-0.9.4c[773]: Notice: accepted new client on /var/run/lirc/lircd
янв 11 11:04:45 wirenboard-AEUQHNW4 lircd[773]: lircd-0.9.4c[773]: Info: Cannot configure the rc device for /dev/lirc1
янв 11 11:04:45 wirenboard-AEUQHNW4 lircd[773]: lircd-0.9.4c[773]: Notice: accepted new client on /var/run/lirc/lircd
янв 11 11:04:45 wirenboard-AEUQHNW4 lircd[773]: lircd-0.9.4c[773]: Info: removed client
янв 11 11:04:44 wirenboard-AEUQHNW4 lircd-0.9.4c[773]: Debug: lircd:  Opening log, level: Debug
янв 11 11:04:44 wirenboard-AEUQHNW4 lircd-0.9.4c[773]: Notice: Using systemd fd
янв 11 11:04:44 wirenboard-AEUQHNW4 lircd-0.9.4c[773]: Warning: Running as root
янв 11 11:04:44 wirenboard-AEUQHNW4 lircd-0.9.4c[773]: Info: Using remote: RM-887.
янв 11 11:04:44 wirenboard-AEUQHNW4 lircd-0.9.4c[773]: Notice: lircd(default) ready, using /var/run/lirc/lircd
янв 11 11:04:44 wirenboard-AEUQHNW4 lircd-0.9.4c[773]: Notice: accepted new client on /var/run/lirc/lircd
янв 11 11:04:44 wirenboard-AEUQHNW4 lircd-0.9.4c[773]: Info: Cannot configure the rc device for /dev/lirc1
янв 11 11:04:44 wirenboard-AEUQHNW4 lircd-0.9.4c[773]: Notice: accepted new client on /var/run/lirc/lircd
янв 11 11:04:44 wirenboard-AEUQHNW4 lircd-0.9.4c[773]: Notice: accepted new client on /var/run/lirc/lircd
lines 1-22
root@wirenboard-AEUQHNW4:~# mode2  -d /dev/lirc1
Using driver default on device /dev/lirc1
Ошибка сегментирования

Как это сделать?

Как сконфигурирован lirc-pwm, создающий lirc1?
Ну и, очевидно не остановлен lirc. Посмотрите что возвращает fuser /dev/lirc1

https://wirenboard.com/wiki/Работа_с_GPIO

Почему то нет 79
Правильно же я понял cat /sys/class/gpio/gpioN/value

root@wirenboard-AEUQHNW4:~# ls /sys/class/gpio/
export	 gpio160  gpio163  gpio166  gpio169  gpio171  gpio174  gpio20  gpio27  gpio5   gpio7	  gpiochip128  gpiochip32  unexport
gpio102  gpio161  gpio164  gpio167  gpio17   gpio172  gpio175  gpio24  gpio28  gpio6   gpio78	  gpiochip160  gpiochip64
gpio16	 gpio162  gpio165  gpio168  gpio170  gpio173  gpio2    gpio26  gpio39  gpio62  gpiochip0  gpiochip168  gpiochip96

Все остановлено

root@wirenboard-AEUQHNW4:~# fuser /dev/lirc1
root@wirenboard-AEUQHNW4:~# mode2  -d /dev/lirc1
Using driver default on device /dev/lirc1
Ошибка сегментирования
root@wirenboard-AEUQHNW4:~# ps aux |grep lirc
root     30081  0.0  1.5   5960  1908 pts/0    S+   16:16   0:00 grep lirc
root@wirenboard-AEUQHNW4:~#

Как посмотреть?

экспортируйте сначала соответствующий gpio.

echo 79 > /sys/class/gpio/export

Это не специфично для контроллера и относится к базовым командам ОС.

После экспорта - проверте, меняется ли состояние его.

Остановил службы, выгрузил драйвер

root@wirenboard-AEUQHNW4:~# service wb-mqtt-lirc stop
root@wirenboard-AEUQHNW4:~# service lircd stop
root@wirenboard-AEUQHNW4:~# modprobe -r lirc-pwm

Если этого не делать пишет что


root@wirenboard-AEUQHNW4:~# echo 79 > /sys/class/gpio/export
-bash: echo: ошибка записи: Устройство или ресурс занято

Экспортнул пин

root@wirenboard-AEUQHNW4:~# echo 79 > /sys/class/gpio/export

Далее вывод такой

root@wirenboard-AEUQHNW4:~# cat /sys/class/gpio/gpio79/value 
1

Если зажать кнопку на пульте иногда меняется на 0

root@wirenboard-AEUQHNW4:~# cat /sys/class/gpio/gpio79/value 
1
root@wirenboard-AEUQHNW4:~# cat /sys/class/gpio/gpio79/value 
1
root@wirenboard-AEUQHNW4:~# cat /sys/class/gpio/gpio79/value 
0
root@wirenboard-AEUQHNW4:~# cat /sys/class/gpio/gpio79/value 
1
root@wirenboard-AEUQHNW4:~# cat /sys/class/gpio/gpio79/value 
1

Что бы вернуть назад нужен unexport так?

root@wirenboard-AEUQHNW4:~# echo 79 > /sys/class/gpio/unexport

Да, нужно загрузить модуль. И только его. Ну и запустите mode2 --list-devices - псмотрите что есть.
Какой, кстати, версии lirc стоит?

При загрузке модуля

modprobe lirc-pwm - wiren уходит в перезагрузку

но модуль грузит

root@wirenboard-AEUQHNW4:~# ps aux|grep lirc
root      6176  0.0  1.5   5960  1924 pts/0    S+   12:09   0:00 grep lirc
root@wirenboard-AEUQHNW4:~# mode2 --list-devices
/dev/lirc1
/dev/lirc0
root@wirenboard-AEUQHNW4:~# mode2 -d /dev/lirc1
Using driver default on device /dev/lirc1
Ошибка сегментирования
root@wirenboard-AEUQHNW4:~# fuser /dev/lirc1
root@wirenboard-AEUQHNW4:~#

Mode2 все также не работает

Версия 0.9.4с-9


apt show lirc
Package: lirc
Version: 0.9.4c-9
Priority: extra
Section: utils
Maintainer: lirc Maintainer Team <pkg-lirc-maint@lists.alioth.debian.org>
Installed-Size: 1 939 kB
Depends: liblirc0 (= 0.9.4c-9), init-system-h

root@wirenboard-AEUQHNW4:~# /usr/sbin/lircd -v
lircd 0.9.4c

Нашел еще у себя lircd lircd 0.10.2 видимо после старых экскрементов
но он не запускается

root@wirenboard-AEUQHNW4:~# lircd -v
lircd 0.10.2
root@wirenboard-AEUQHNW4:~# lircd
lircd: symbol lookup error: lircd: undefined symbol: set_waitfordata_func

c mode2 разобрался он был тоже 10 версии. Удалили, убрал lirc 10 - переустановил пакет.

oot@wirenboard-AEUQHNW4:~# /usr/bin/mode2
Using driver default on device /dev/lirc1
Trying device: /dev/lirc1
Using device: /dev/lirc1
Warning: Running as root.
pulse 237516
space 174
pulse 93411
space 168
pulse 877347
space 154
pulse 137905
space 181
pulse 75
space 170
pulse 1566490
space 174

Уже хорошо. Ну - тогда запускайте сам демон, проверьте irw

irw молчит. Конфиг от пульта точно верный.

root@wirenboard-AEUQHNW4:~# irw -v
irw 0.9.4c
янв 12 15:24:14 wirenboard-AEUQHNW4 lircd[1042]: lircd-0.9.4c[1042]: Info: removed client
янв 12 15:24:12 wirenboard-AEUQHNW4 lircd-0.9.4c[1042]: Warning: Running as root
янв 12 15:24:12 wirenboard-AEUQHNW4 lircd-0.9.4c[1042]: Info: Using remote: SamsungBN59-01054A.
янв 12 15:24:12 wirenboard-AEUQHNW4 lircd-0.9.4c[1042]: Info: Using remote: RM-887.
янв 12 15:24:12 wirenboard-AEUQHNW4 lircd-0.9.4c[1042]: Notice: lircd(default) ready, using /var/run/lirc/lircd
янв 12 15:24:12 wirenboard-AEUQHNW4 lircd-0.9.4c[1042]: Notice: accepted new client on /var/run/lirc/lircd
янв 12 15:24:12 wirenboard-AEUQHNW4 lircd-0.9.4c[1042]: Info: Cannot configure the rc device for /dev/lirc1
янв 12 15:24:12 wirenboard-AEUQHNW4 lircd-0.9.4c[1042]: Notice: accepted new client on /var/run/lirc/lircd
янв 12 15:24:12 wirenboard-AEUQHNW4 lircd-0.9.4c[1042]: Notice: accepted new client on /var/run/lirc/lircd
янв 12 15:24:12 wirenboard-AEUQHNW4 lircd-0.9.4c[1042]: Notice: accepted new client on /var/run/lirc/lircd
янв 12 15:24:12 wirenboard-AEUQHNW4 lircd-0.9.4c[1042]: Notice: accepted new client on /var/run/lirc/lircd
янв 12 15:24:12 wirenboard-AEUQHNW4 lircd-0.9.4c[1042]: Info: removed client
янв 12 15:31:20 wirenboard-AEUQHNW4 lircd[1042]: lircd-0.9.4c[1042]: Notice: accepted new client on /var/run/lirc/lircd
янв 12 15:31:20 wirenboard-AEUQHNW4 lircd-0.9.4c[1042]: Notice: accepted new client on /var/run/lirc/lircd
янв 12 15:35:15 wirenboard-AEUQHNW4 lircd[1042]: lircd-0.9.4c[1042]: Info: removed client
янв 12 15:35:15 wirenboard-AEUQHNW4 lircd-0.9.4c[1042]: Info: removed client

А как в конфиге lirc (сейчас) описан этот lirc1?
То есть если отстановить lircd и попробовать mode2 - импульсы считываютс, потом запускаем lircd - и?
Да, заодно покажите с какими правами создан /dev/lirc1, кто вледелец

Остановка, запуск mode2, запуск lircd и запуск irw

янв 12 16:02:55 wirenboard-AEUQHNW4 lircd-0.9.4c[13475]: Info: lircd:  Opening log, level: Info
янв 12 16:02:56 wirenboard-AEUQHNW4 lircd-0.9.4c[13475]: Info: Initial device: /dev/lirc1
янв 12 16:02:56 wirenboard-AEUQHNW4 lircd-0.9.4c[13475]: Info: Initial device: /dev/lirc1
янв 12 16:02:56 wirenboard-AEUQHNW4 lircd[13475]: lircd-0.9.4c[13475]: Info: lircd:  Opening log, level: Info
янв 12 16:02:56 wirenboard-AEUQHNW4 lircd[13475]: lircd-0.9.4c[13475]: Notice: Using systemd fd
янв 12 16:02:56 wirenboard-AEUQHNW4 lircd[13475]: lircd-0.9.4c[13475]: Warning: Running as root
янв 12 16:02:56 wirenboard-AEUQHNW4 lircd-0.9.4c[13475]: Info: lircd:  Opening log, level: Info
янв 12 16:02:56 wirenboard-AEUQHNW4 lircd[13475]: lircd-0.9.4c[13475]: Info: Using remote: SamsungBN59-01054A.
янв 12 16:02:56 wirenboard-AEUQHNW4 lircd[13475]: lircd-0.9.4c[13475]: Info: Using remote: RM-887.
янв 12 16:02:56 wirenboard-AEUQHNW4 lircd[13475]: lircd-0.9.4c[13475]: Notice: lircd(default) ready, using /var/run/lirc/lircd
янв 12 16:02:56 wirenboard-AEUQHNW4 lircd-0.9.4c[13475]: Notice: Using systemd fd
янв 12 16:02:56 wirenboard-AEUQHNW4 lircd-0.9.4c[13475]: Warning: Running as root
янв 12 16:02:56 wirenboard-AEUQHNW4 lircd-0.9.4c[13475]: Info: Using remote: SamsungBN59-01054A.
янв 12 16:02:56 wirenboard-AEUQHNW4 lircd-0.9.4c[13475]: Info: Using remote: RM-887.
янв 12 16:02:56 wirenboard-AEUQHNW4 lircd-0.9.4c[13475]: Notice: lircd(default) ready, using /var/run/lirc/lircd
янв 12 16:04:54 wirenboard-AEUQHNW4 lircd[13475]: lircd-0.9.4c[13475]: Notice: accepted new client on /var/run/lirc/lircd
янв 12 16:04:54 wirenboard-AEUQHNW4 lircd[13475]: lircd-0.9.4c[13475]: Info: Cannot configure the rc device for /dev/lirc1
янв 12 16:04:54 wirenboard-AEUQHNW4 lircd-0.9.4c[13475]: Notice: accepted new client on /var/run/lirc/lircd
янв 12 16:04:54 wirenboard-AEUQHNW4 lircd-0.9.4c[13475]: Info: Cannot configure the rc device for /dev/lirc1
янв 12 16:05:40 wirenboard-AEUQHNW4 lircd[13475]: lircd-0.9.4c[13475]: Info: removed client
янв 12 16:05:40 wirenboard-AEUQHNW4 lircd-0.9.4c[13475]: Info: removed client
root@wirenboard-AEUQHNW4:/etc/lirc# cat hardware.conf
# /etc/lirc/hardware.conf
#
# 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

#Don't start irexec, even if a good config file seems to exist.
#START_IREXEC=false

#Try to load appropriate kernel modules
LOAD_MODULES=true

# Run "lircd --driver=help" for a list of supported drivers.
DRIVER="default"
# usually /dev/lirc0 is the correct setting for systems using udev 
DEVICE="/dev/lirc1"
MODULES=""

# Default configuration files for your hardware if any
LIRCD_CONF=""
LIRCMD_CONF=""
root@wirenboard-AEUQHNW4:/etc/lirc#
root@wirenboard-AEUQHNW4:/etc/lirc# cat lircd.conf
# Populated config files can be found at http://sf.net/p/lirc-remotes. The
# irdb-get(1) and lirc-setup(1) tools can be used to search and download
# config files.
#
# From 0.9.2 config files could just be dropped as-is in the lircd.conf.d
# directory and be included by this file.

include "lircd.conf.d/*.conf"
root@wirenboard-AEUQHNW4:/etc/lirc# cat lirc_options.conf
# These are the default options to lircd, if installed as
# /etc/lirc/lirc_options.conf. See the lircd(8) and lircmd(8)
# manpages for info on the different options.
#
# Some tools including mode2 and irw uses values such as
# driver, device, plugindir and loglevel as fallback values
# in not defined elsewhere.

[lircd]
nodaemon        = False
driver          = default
device          = /dev/lirc1
output          = /var/run/lirc/lircd
pidfile         = /var/run/lirc/lircd.pid
plugindir       = /usr/lib/arm-linux-gnueabi/lirc/plugins
permission      = 666
allow-simulate  = No
repeat-max      = 600
#effective-user =
#listen         = [address:]port
#connect        = host[:port]
#loglevel       = 6
#uinput         = ...
#release        = ...
#logfile        = ...

[lircmd]
uinput          = False
nodaemon        = False

# [modinit]
# code = /usr/sbin/modprobe lirc_serial
# code1 = /usr/bin/setfacl -m g:lirc:rw /dev/uinput
# code2 = ...


# [lircd-uinput]
# release-timeout = 200
root@wirenboard-AEUQHNW4:/etc/lirc#
root@wirenboard-AEUQHNW4:/etc/lirc# cat lirc_options.conf
# These are the default options to lircd, if installed as
# /etc/lirc/lirc_options.conf. See the lircd(8) and lircmd(8)
# manpages for info on the different options.
#
# Some tools including mode2 and irw uses values such as
# driver, device, plugindir and loglevel as fallback values
# in not defined elsewhere.

[lircd]
nodaemon        = False
driver          = default
device          = /dev/lirc1
output          = /var/run/lirc/lircd
pidfile         = /var/run/lirc/lircd.pid
plugindir       = /usr/lib/arm-linux-gnueabi/lirc/plugins
permission      = 666
allow-simulate  = No
repeat-max      = 600
#effective-user =
#listen         = [address:]port
#connect        = host[:port]
#loglevel       = 6
#uinput         = ...
#release        = ...
#logfile        = ...

[lircmd]
uinput          = False
nodaemon        = False

# [modinit]
# code = /usr/sbin/modprobe lirc_serial
# code1 = /usr/bin/setfacl -m g:lirc:rw /dev/uinput
# code2 = ...


# [lircd-uinput]
# release-timeout = 200
root@wirenboard-AEUQHNW4:/etc/lirc#

root@wirenboard-AEUQHNW4:/etc/lirc# ls -la /dev/lirc1
crw-rw---- 1 root video 245, 1 янв 12 15:23 /dev/lirc1

Так… Интересно…
Остановите сервис, в одном терминале запустите

lircd --nodaemon --device /dev/lirc1 --driver default

а в другом irw - ну и попробуйте что-то нажать.

Вообщем заработало


oot@wirenboard-AEUQHNW4:~# irw
0000000000000008 00 KEY_1 RM-887
0000000000000008 01 KEY_1 RM-887
0000000000000008 02 KEY_1 RM-887
0000000000000008 03 KEY_1 RM-887
0000000000000008 04 KEY_1 RM-887
0000000000000008 05 KEY_1 RM-887
0000000000000008 06 KEY_1 RM-887
0000000000000008 07 KEY_1 RM-887
0000000000000008 08 KEY_1

Не до конца был удален lirc 10. Почистил, переконфигурил пакет - работает. Спасибо за помощь.

Надеюсь с перезагрузкой все останется)

1 лайк

Ага, отлично.
Ну, можно ж статус сервиса после перезапуска проверить.