LIRC non trasmetterà (irsend: l'hardware non supporta l'invio)


11

Sto cercando di controllare un'unità HVAC IR a casa mia con un Raspberry Pi 2 e uno schermo a infrarossi (vedi qui: http://bit.ly/29iC0lr ).

Ho seguito le istruzioni sulla pagina del prodotto della schermatura IR con suggerimenti da alcuni altri luoghi e la ricezione dei segnali dal telecomando HVAC funziona alla grande. Sono stato in grado di creare un file .conf e irsend vede i pulsanti che ho configurato quando utilizzo il comando LIST ma quando provo SEND_ONCE, ottengo questa risposta:

irsend: hardware does not support sending

Ho trascorso diverse ore a provare vari sistemi operativi (tra cui piCore 6.1-v7 e Raspbian Jesse 2016-05-27 e 2015-11-21) e due versioni di LIRC (0.9.0 e 0.9.4) ma ho sempre ottenuto lo stesso risultato.

Ho confermato che il LED IR funziona utilizzando una fotocamera digitale e uno script Python che gestisce manualmente il pin GPIO.

Qualcuno può indicarmi la giusta direzione per risolvere questo problema? C'è un modo per scoprire perché LIRC sembra pensare che il mio hardware non abbia un trasmettitore?

Grazie in anticipo.

Nota: my /boot/config.txt include questa riga per lirc-rpi

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

[MODIFICA 7-7-2016] Ecco alcune informazioni aggiuntive, incluso l'output di diversi comandi nella sezione Risoluzione dei problemi di questa pagina: http://aron.ws/projects/lirc_rpi/ L'output di cat /sys/kernel/debug/gpionon sembra corretto ma non non so cosa fare al riguardo. : - \

Ho la seguente riga in /etc/rc.local:

modprobe lirc_rpi gpio_in_pin=18 gpio_out_pins=17

Ho anche provato un po 'di codice simile in / etc / modules ma non ha fatto alcuna differenza.

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

Potresti modificare la domanda e includere le voci relative a LIRC che hai effettuato /boot/config.txt?
Giovanna

Ok, ho aggiornato la domanda.
gq9000,

Un altro aggiornamento con alcune informazioni sulla risoluzione dei problemi dalla pagina del progetto di lirc_rpi. Sembra che il modulo non stia allocando correttamente i pin gpio. Qualche idea su come risolverlo ??
gq9000,

Come hai confermato esattamente che IR funziona? Potresti condividere questo script Python per favore? Ho lo stesso problema, la mia configurazione sembra a posto, la lettura tramite mode2 funziona bene, ma irsend mi dà ancora questo errore.
m1gu3l,

Non ho più lo script ma probabilmente era qualcosa del genere: rpiblog.com/2012/09/… Basta cambiare questo script per utilizzare il pin di output (17), eseguirlo e puntare una fotocamera digitale o la fotocamera del tuo cellulare al LED. Dovresti vedere una debole luce bianca lampeggiare al centro del LED.
gq9000,

Risposte:


10

Per me questo passaggio aggiuntivo ha aiutato:
modifica /etc/lirc/lirc_options.confe imposta
driver = devinput
su
driver = default
e quindi riavvia o riavvia il servizio lircd


4

Ok, ho trovato la risposta, o meglio qualcuno di Linux molto più ben informato di me ( /raspberrypi//users/49162/jonathan-dieter ) l'ha trovata. :)

Invece di caricare il modulo lirc_rpi in / etc / modules o /etc/rc.local, ha suggerito di aggiungere un nuovo file di configurazione in /etc/modprobe.d/ (nel mio caso /etc/modprobe.d/ir-remote.conf ) con la seguente riga:

options lirc_rpi gpio_in_pin=18 gpio_out_pin=17

La mia migliore ipotesi sul perché questo ha fatto la differenza è che il modulo si stava caricando con le impostazioni predefinite PRIMA che il comando in / etc / modules o rc.local funzionasse. Dato che era già caricato, il sistema ha semplicemente ignorato il mio tentativo successivo e il pin di uscita non è mai stato configurato correttamente (questo è sotto Raspbian Jessie BTW).


Un'altra nota sull'unità HVAC che potrebbe essere utile. Non sono stato in grado di utilizzare irrecord per salvare i comandi dal telecomando. Sembra che i sistemi HVAC funzionino in modo leggermente diverso rispetto a un televisore o un videoregistratore.

Queste due pagine ( http://www.instructables.com/id/Reverse-engineering-of-an-Air-Conditioning-control/?ALLSTEPS e http://absurdlycertain.blogspot.com/2013/03/lirc-raspi -remote-control-configuration.html esp. i primi due commenti) mi ha aiutato a capire come registrare l'output non elaborato da mode2, normalizzarlo e quindi trasmetterlo con irsend.


1

Dopo aver seguito questa guida: http://www.raspberrypiwiki.com/index.php/Raspberry_Pi_IR_Control_Expansion_Board Ho riscontrato lo stesso problema indicato in questa domanda:

irsend: hardware does not support sending

Ho provato ad aggiungere questa riga:

options lirc_rpi gpio_in_pin=18 gpio_out_pin=17

in /etc/modprobe.d/ir-remote.conf, ma neanche questo ha aiutato.

Quando ho avviato il demone LIRC con il seguente comando:

sudo lircd --device /dev/lirc0

ha funzionato! Il dispositivo deve essere uguale a quello configurato nel file /etc/lirc/hardware.conf. Quindi i passaggi sono:

  1. Segui questa guida: http://www.raspberrypiwiki.com/index.php/Raspberry_Pi_IR_Control_Expansion_Board
  2. Quando arrivate alla sezione chiamata "Funzione di trasmissione IR" punto 5. e ottenete un errore: irsend: hardware does not support sending
  3. Quindi eseguire il seguente comando nella console: sudo lircd --device /dev/lirc0per avviare il demone LIRC
  4. Adesso corri irsend SEND_ONCE /home/pi/lircd.conf KEY_VIDEO_PREV

Ho gli stessi risultati. L'installazione predefinita non funziona, ma funziona con il comando fornito. Hai qualche idea del perché questo è vero? Vorrei modificare init.d in modo che il comando corretto venga eseguito all'avvio.
tim11g
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.