LIRC no transmitirá (irsend: el hardware no admite el envío)

11

Estoy tratando de controlar una unidad IR HVAC en mi casa con una Raspberry Pi 2 y un escudo infrarrojo (ver aquí: http://bit.ly/29iC0lr ).

Seguí las instrucciones en la página del producto de protección IR con consejos de algunos otros lugares y recibir señales del control remoto HVAC funciona muy bien. Pude crear un archivo .conf e irsend ve los botones que configuré cuando uso el comando LIST, pero cuando intento SEND_ONCE, obtengo esta respuesta:

irsend: hardware does not support sending

Pasé varias horas probando varios sistemas operativos (incluidos piCore 6.1-v7 y Raspbian Jesse 2016-05-27 y 2015-11-21) y dos versiones de LIRC (0.9.0 y 0.9.4) pero siempre obtuve el mismo resultado.

Confirmé que el LED IR funciona con una cámara digital y un script de Python que opera manualmente el pin GPIO.

¿Alguien puede señalarme en la dirección correcta para solucionar este problema? ¿Hay alguna forma de averiguar por qué LIRC parece pensar que mi hardware no tiene un transmisor?

Gracias por adelantado.

Nota: mi /boot/config.txt incluye esta línea para lirc-rpi

dtoverlay=lirc-rpi,gpio_in_pin=18,gpio_out_pin=17

[EDITAR 7-7-2016] Aquí hay información adicional, incluida la salida de varios comandos en la sección Solución de problemas de esta página: http://aron.ws/projects/lirc_rpi/ La salida de cat /sys/kernel/debug/gpiono se ve bien pero no No sé qué hacer al respecto. : - \

Tengo la siguiente línea en /etc/rc.local:

modprobe lirc_rpi gpio_in_pin=18 gpio_out_pins=17

También probé un código similar en / etc / modules pero no hizo ninguna diferencia.

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
fuente
¿Podría editar la pregunta e incluir las entradas relacionadas con LIRC que ha realizado /boot/config.txt?
juan
Bien, actualicé la pregunta.
gq9000
Otra actualización con información de solución de problemas de la página del proyecto de lirc_rpi. Parece que el módulo no está asignando correctamente los pines gpio. ¿¿Algunas ideas de como reparar esto??
gq9000
¿Cómo confirmó exactamente que IR está funcionando? ¿Podría por favor compartir este script de Python? Tengo el mismo problema, mi configuración parece estar bien, leer a través de mode2 funciona bien, pero irsend todavía me da este error.
m1gu3l
Ya no tengo el script, pero probablemente fue algo como esto: rpiblog.com/2012/09/... Simplemente cambie este script para usar el pin de salida (17), ejecútelo y apunte una cámara digital o la cámara de su teléfono celular en el LED. Debería ver una tenue luz blanca parpadeando en el centro del LED.
gq9000

Respuestas:

10

Para mí este paso adicional ayudó:
editar /etc/lirc/lirc_options.confy conjunto
driver = devinput
a
driver = default
y luego reiniciar o reiniciar el servicio lircd

Mikk
fuente
4

De acuerdo, encontré la respuesta, o mejor dicho, alguien mucho más conocedor de Linux que yo ( /raspberrypi//users/49162/jonathan-dieter ) la encontró. :)

En lugar de cargar el módulo lirc_rpi en / etc / modules o /etc/rc.local, sugirió agregar un nuevo archivo de configuración a /etc/modprobe.d/ (en mi caso /etc/modprobe.d/ir-remote.conf ) con la siguiente línea:

options lirc_rpi gpio_in_pin=18 gpio_out_pin=17

Mi mejor conjetura de por qué esto marcó la diferencia es que el módulo se estaba cargando con la configuración predeterminada ANTES de que se ejecutara el comando en / etc / modules o rc.local. Como ya estaba cargado, el sistema simplemente ignoró mi intento posterior y el pin de salida nunca se configuró correctamente (esto está bajo Raspbian Jessie BTW).


Otra nota sobre la unidad HVAC que podría ser útil. No pude usar irrecord para guardar los comandos del control remoto. Parece que los sistemas HVAC funcionan de manera un poco diferente a un televisor o videograbadora.

Estas dos páginas ( http://www.instructables.com/id/Reverse-engineering-of-an-Air-Conditioning-control/?ALLSTEPS y http://absurdlycertain.blogspot.com/2013/03/lirc-raspi -remote-control-configuration.html especialmente los primeros dos comentarios) me ayudaron a descubrir cómo grabar la salida sin procesar del modo 2, normalizarla y luego transmitirla con irsend.

gq9000
fuente
1

Después de seguir esta guía: http://www.raspberrypiwiki.com/index.php/Raspberry_Pi_IR_Control_Expansion_Board Me encontré con el mismo problema que se indica en esta pregunta:

irsend: hardware does not support sending

Intenté agregar esta línea:

options lirc_rpi gpio_in_pin=18 gpio_out_pin=17

en /etc/modprobe.d/ir-remote.conf, pero eso tampoco ayudó.

Cuando comencé el demonio LIRC con el siguiente comando:

sudo lircd --device /dev/lirc0

¡funcionó! El dispositivo debe ser el mismo que configuró en el archivo /etc/lirc/hardware.conf. Entonces los pasos son:

  1. Siga esta guía: http://www.raspberrypiwiki.com/index.php/Raspberry_Pi_IR_Control_Expansion_Board
  2. Cuando ve a la sección llamada "Función de transmisión IR", punto 5. y obtiene un error: irsend: hardware does not support sending
  3. Luego ejecute el siguiente comando en la consola: sudo lircd --device /dev/lirc0para iniciar el demonio LIRC
  4. Ahora corre irsend SEND_ONCE /home/pi/lircd.conf KEY_VIDEO_PREV
Igor
fuente
Tengo los mismos resultados. La instalación predeterminada no funciona, pero funciona con el comando que proporcionó. ¿Tienes alguna idea de por qué esto es cierto? Me gustaría modificar init.d para que se ejecute el comando adecuado en el arranque.
tim11g