O LIRC não transmitirá (irsend: o hardware não suporta o envio)

11

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/gpionã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
gq9000
fonte
Você pode editar a pergunta e incluir as entradas relacionadas ao LIRC às quais você fez /boot/config.txt?
Joan
Ok, eu atualizei a pergunta.
Gq9000 6/07
Outra atualização com algumas informações de solução de problemas na página do projeto de lirc_rpi. Parece que o módulo não está alocando corretamente os pinos do gpio. Alguma idéia de como consertar isso?
Gq9000 07/07
Como exatamente você confirmou que o RI está funcionando? Você poderia compartilhar esse script python? Eu tenho o mesmo problema, minha configuração parece boa, a leitura via mode2 funciona bem, mas o irsend ainda me dá esse erro.
M1gu3l #
Eu não tenho mais o script, mas provavelmente era algo como isto: rpiblog.com/2012/09/… Apenas altere este script para usar o pino de saída (17), execute-o e aponte uma câmera digital ou a câmera do seu celular no LED. Você deve ver uma fraca luz branca piscando no centro do LED.
gq9000

Respostas:

10

Para mim, esta etapa adicional ajudou:
editar /etc/lirc/lirc_options.confe definir
driver = devinput
como
driver = default
e, em seguida, reiniciar ou reiniciar o serviço lircd

Mikk
fonte
4

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:

options lirc_rpi gpio_in_pin=18 gpio_out_pin=17

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.

gq9000
fonte
1

Depois de seguir este guia: http://www.raspberrypiwiki.com/index.php/Raspberry_Pi_IR_Control_Expansion_Board , encontrei o mesmo problema descrito nesta pergunta:

irsend: hardware does not support sending

Eu tentei adicionar esta linha:

options lirc_rpi gpio_in_pin=18 gpio_out_pin=17

no /etc/modprobe.d/ir-remote.conf, mas isso também não ajudou.

Quando iniciei o daemon LIRC com o seguinte comando:

sudo lircd --device /dev/lirc0

funcionou! O dispositivo precisa ser o mesmo que você configurou no arquivo /etc/lirc/hardware.conf. Portanto, as etapas são:

  1. Siga este guia: http://www.raspberrypiwiki.com/index.php/Raspberry_Pi_IR_Control_Expansion_Board
  2. Quando você chega à seção chamada "Função de transmissão por infravermelho", ponto 5. e obtém um erro: irsend: hardware does not support sending
  3. Em seguida, execute o seguinte comando no console: sudo lircd --device /dev/lirc0para iniciar o daemon LIRC
  4. Agora corra irsend SEND_ONCE /home/pi/lircd.conf KEY_VIDEO_PREV
Igor
fonte
Eu tenho os mesmos resultados. A instalação padrão não funciona, mas funciona com o comando que você forneceu. Você tem alguma compreensão de por que isso é verdade? Gostaria de modificar o init.d para que o comando apropriado seja executado na inicialização.
tim11g 02/02