Estou tentando controlar uma unidade de HVAC IR em minha casa com um Raspberry Pi 2 e um escudo infravermelho (veja aqui: http://bit.ly/29iC0lr ).
Segui as instruções na página do produto de blindagem de infravermelho com dicas de alguns outros lugares e o recebimento de sinais do controle remoto HVAC funciona muito bem. Consegui criar um arquivo .conf e o irsend vê os botões que configurei quando uso o comando LIST, mas quando tento SEND_ONCE, recebo esta resposta:
irsend: hardware does not support sending
Passei várias horas testando vários sistemas operacionais (incluindo piCore 6.1-v7 e Raspbian Jesse 2016-05-27 e 2015-11-21) e duas versões do LIRC (0.9.0 e 0.9.4), mas sempre obtive o mesmo resultado.
Confirmei que o LED IR está funcionando usando uma câmera digital e um script python que opera manualmente o pino GPIO.
Alguém pode me indicar a direção certa para solucionar isso? Existe alguma maneira de descobrir por que o LIRC parece pensar que meu hardware não possui um transmissor?
Desde já, obrigado.
Nota: meu /boot/config.txt inclui esta linha para lirc-rpi
dtoverlay=lirc-rpi,gpio_in_pin=18,gpio_out_pin=17
[EDIT 7-7-2016]
Aqui estão algumas informações adicionais, incluindo a saída de vários comandos na seção Solução de problemas nesta página: http://aron.ws/projects/lirc_rpi/
A saída de cat /sys/kernel/debug/gpio
não parece correta, mas eu não Não sei o que fazer sobre isso. : - \
Eu tenho a seguinte linha em /etc/rc.local:
modprobe lirc_rpi gpio_in_pin=18 gpio_out_pins=17
Eu também tentei um pouco de código semelhante no / etc / modules, mas não fez nenhuma diferença.
pi@raspberrypi:~ $ ls -l /dev/lirc*
crw-rw---- 1 root video 244, 0 Jul 7 11:27 /dev/lirc0
lrwxrwxrwx 1 root root 21 Jul 7 11:27 /dev/lircd -> ../var/run/lirc/lircd
pi@raspberrypi:~ $ dmesg | grep lirc
[ 5.219904] lirc_dev: IR Remote Control driver registered, major 244
[ 5.230067] lirc_rpi: module is from the staging directory, the quality is unknown, you have been warned.
[ 6.196796] lirc_rpi: auto-detected active low receiver on GPIO pin 18
[ 6.197243] lirc_rpi lirc_rpi: lirc_dev: driver lirc_rpi registered at minor = 0
[ 6.197248] lirc_rpi: driver registered!
pi@raspberrypi:~ $ sudo cat /sys/kernel/debug/gpio
GPIOs 0-53, platform/3f200000.gpio, pinctrl-bcm2835:
gpio-35 (? ) in hi
gpio-47 (? ) out lo
pi@raspberrypi:~ $ cat /proc/interrupts
CPU0 CPU1 CPU2 CPU3
16: 0 0 0 0 ARMCTRL 16 Edge bcm2708_fb dma
20: 1500 0 0 0 ARMCTRL 20 Edge DMA IRQ
32: 145314 0 0 0 ARMCTRL 32 Edge dwc_otg, dwc_otg_pcd, dwc_otg_hcd:usb1
49: 0 0 0 0 ARMCTRL 49 Edge 3f200000.gpio:bank0
50: 0 0 0 0 ARMCTRL 50 Edge 3f200000.gpio:bank1
65: 26 0 0 0 ARMCTRL 65 Edge 3f00b880.mailbox
66: 2 0 0 0 ARMCTRL 66 Edge VCHIQ doorbell
75: 1 0 0 0 ARMCTRL 75 Edge
77: 120 0 0 0 ARMCTRL 77 Edge DMA IRQ
82: 192 0 0 0 ARMCTRL 82 Edge mmc0
83: 5 0 0 0 ARMCTRL 83 Edge uart-pl011
96: 0 0 0 0 ARMCTRL 96 Edge arch_timer
97: 3798 2724 1275 1139 ARMCTRL 97 Edge arch_timer
FIQ: usb_fiq
IPI0: 0 0 0 0 CPU wakeup interrupts
IPI1: 0 0 0 0 Timer broadcast interrupts
IPI2: 2225 2478 3697 2901 Rescheduling interrupts
IPI3: 7 6 8 9 Function call interrupts
IPI4: 3 5 0 1 Single function call interrupts
IPI5: 0 0 0 0 CPU stop interrupts
IPI6: 0 0 0 0 IRQ work interrupts
IPI7: 0 0 0 0 completion interrupts
pi@raspberrypi:~ $ lsmod
Module Size Used by
cfg80211 419759 0
rfkill 16659 2 cfg80211
8192cu 528485 0
evdev 10226 1
snd_bcm2835 19739 0
bcm2835_gpiomem 3023 0
snd_pcm 74833 1 snd_bcm2835
snd_timer 18164 1 snd_pcm
lirc_rpi 6638 0
snd 52116 3 snd_bcm2835,snd_timer,snd_pcm
lirc_dev 8169 1 lirc_rpi
rc_core 16910 1 lirc_dev
uio_pdrv_genirq 2966 0
uio 8228 1 uio_pdrv_genirq
ipv6 341892 30
/boot/config.txt
?Respostas:
Para mim, esta etapa adicional ajudou:
editar
/etc/lirc/lirc_options.conf
e definirdriver = devinput
como
driver = default
e, em seguida, reiniciar ou reiniciar o serviço lircd
fonte
Ok, encontrei a resposta, ou melhor, alguém muito mais informado sobre Linux do que eu ( /raspberrypi//users/49162/jonathan-dieter ) a encontrei. :)
Em vez de carregar o módulo lirc_rpi em / etc / modules ou /etc/rc.local, ele sugeriu adicionar um novo arquivo de configuração ao /etc/modprobe.d/ (no meu caso /etc/modprobe.d/ir-remote.conf ) com a seguinte linha:
Meu melhor palpite sobre por que isso fez a diferença é que o módulo estava carregando com as configurações padrão ANTES do comando em / etc / modules ou rc.local executado. Como ele já estava carregado, o sistema ignorou minha tentativa subseqüente e o pino de saída nunca foi configurado corretamente (isso está sob Raspbian Jessie BTW).
Outra observação sobre a unidade HVAC que pode ser útil. Não pude usar o irrecord para salvar os comandos do controle remoto. Parece que os sistemas HVAC funcionam um pouco diferente de uma TV ou videocassete.
Essas duas páginas ( http://www.instructables.com/id/Reverse-engineering-of-an-Air-Conditioning-control/?ALLSTEPS e http://absurdlyfficient.blogspot.com/2013/03/lirc-raspi -remote-control-configuration.html, especialmente os dois primeiros comentários) me ajudou a descobrir como gravar a saída bruta do mode2, normalizá-la e depois transmiti-la com irsend.
fonte
Depois de seguir este guia: http://www.raspberrypiwiki.com/index.php/Raspberry_Pi_IR_Control_Expansion_Board , encontrei o mesmo problema descrito nesta pergunta:
Eu tentei adicionar esta linha:
no /etc/modprobe.d/ir-remote.conf, mas isso também não ajudou.
Quando iniciei o daemon LIRC com o seguinte comando:
funcionou! O dispositivo precisa ser o mesmo que você configurou no arquivo /etc/lirc/hardware.conf. Portanto, as etapas são:
irsend: hardware does not support sending
sudo lircd --device /dev/lirc0
para iniciar o daemon LIRCirsend SEND_ONCE /home/pi/lircd.conf KEY_VIDEO_PREV
fonte