LIRC nie przesyła (irsend: sprzęt nie obsługuje wysyłania)

11

Próbuję kontrolować IR HVAC w moim domu za pomocą Raspberry Pi 2 i osłony na podczerwień (patrz tutaj: http://bit.ly/29iC0lr ).

Postępowałem zgodnie z instrukcjami na stronie produktu z osłoną IR, z poradami z kilku innych miejsc, a odbiór sygnałów z pilota HVAC działa świetnie. Byłem w stanie utworzyć plik .conf i irsend widzi przyciski, które skonfigurowałem, kiedy używam polecenia LIST, ale kiedy próbuję SEND_ONCE, otrzymuję tę odpowiedź:

irsend: hardware does not support sending

Spędziłem kilka godzin, próbując różnych systemów operacyjnych (w tym piCore 6.1-v7 i Raspbian Jesse 2016-05-27 i 2015-11-21) oraz dwóch wersji LIRC (0.9.0 i 0.9.4), ale zawsze otrzymywałem ten sam wynik.

Potwierdziłem, że dioda podczerwieni działa za pomocą aparatu cyfrowego i skryptu python, który ręcznie obsługuje pin GPIO.

Czy ktoś może skierować mnie w dobrym kierunku, aby rozwiązać ten problem? Czy jest jakiś sposób, aby dowiedzieć się, dlaczego LIRC wydaje się sądzić, że mój sprzęt nie ma nadajnika?

Z góry dziękuję.

Uwaga: mój /boot/config.txt zawiera tę linię dla lirc-rpi

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

[EDYCJA 7-7-2016] Oto dodatkowe informacje, w tym dane wyjściowe z kilku poleceń w sekcji Rozwiązywanie problemów na tej stronie: http://aron.ws/projects/lirc_rpi/ Dane wyjściowe cat /sys/kernel/debug/gpionie wyglądają dobrze, ale nie „ wiem co z tym zrobić. : - \

Mam następujący wiersz w pliku /etc/rc.local:

modprobe lirc_rpi gpio_in_pin=18 gpio_out_pins=17

Próbowałem również podobnego fragmentu kodu w / etc / modułów, ale to nie miało znaczenia.

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
źródło
Czy możesz edytować pytanie i dołączyć wpisy związane z LIRC, które wprowadziłeś /boot/config.txt?
joan
OK, zaktualizowałem pytanie.
gq9000,
Kolejna aktualizacja z informacjami o rozwiązywaniu problemów ze strony projektu lirc_rpi. Wygląda na to, że moduł nieprawidłowo przydziela piny GPIO. Wszelkie pomysły, jak to naprawić?
gq9000,
Jak dokładnie potwierdziłeś, że IR działa? Czy możesz udostępnić ten skrypt w języku Python? Mam ten sam problem, moja konfiguracja wydaje się być poprawna, czytanie przez mode2 działa dobrze, ale irsend nadal daje mi ten błąd.
m1gu3l
Nie mam już skryptu, ale prawdopodobnie wyglądało to mniej więcej tak: rpiblog.com/2012/09/… Wystarczy zmienić ten skrypt, aby użyć styku wyjściowego (17), uruchomić go i skierować aparat cyfrowy lub aparat telefonu komórkowego na LED. Powinieneś zobaczyć słabe białe światło migające na środku diody LED.
gq9000,

Odpowiedzi:

10

Dla mnie ten dodatkowy krok pomógł:
edit /etc/lirc/lirc_options.confi zestaw
driver = devinput
do
driver = default
, a następnie ponownie uruchomić usługę lub restart lircd

Mikk
źródło
4

Dobra, znalazłem odpowiedź, a raczej ktoś o wiele bardziej znający się na Linuksie niż ja ( /raspberrypi//users/49162/jonathan-dieter ) ją znalazł. :)

Zamiast ładować moduł lirc_rpi do / etc / modules lub /etc/rc.local, zasugerował dodanie nowego pliku konfiguracyjnego do /etc/modprobe.d/ (w moim przypadku /etc/modprobe.d/ir-remote.conf ) w następującym wierszu:

options lirc_rpi gpio_in_pin=18 gpio_out_pin=17

Moim najlepszym przypuszczeniem, dlaczego to zrobiło różnicę, jest to, że moduł ładował się z ustawieniami domyślnymi PRZED uruchomieniem polecenia w / etc / modules lub rc.local. Ponieważ został już załadowany, system po prostu zignorował moją kolejną próbę, a pin wyjściowy nigdy nie został poprawnie skonfigurowany (dotyczy Raspbian Jessie BTW).


Jeszcze jedna uwaga na temat urządzenia HVAC, która może być pomocna. Nie byłem w stanie użyć polecenia irrecord do zapisania poleceń z pilota. Wygląda na to, że systemy HVAC działają nieco inaczej niż telewizor lub magnetowid.

Te dwie strony ( http://www.instructables.com/id/Reverse-engineering-of-an-Air-Conditioning-control/?ALLSTEPS i http://absurdlycertain.blogspot.com/2013/03/lirc-raspi -remote-control-configuration.html szczególnie pierwsze dwa komentarze) pomogły mi wymyślić, jak nagrać nieprzetworzone dane wyjściowe z trybu 2, znormalizować je, a następnie przesłać z irsend.

gq9000
źródło
1

Po wykonaniu tego przewodnika: http://www.raspberrypiwiki.com/index.php/Raspberry_Pi_IR_Control_Expansion_Board napotkałem ten sam problem, jak podano w tym pytaniu:

irsend: hardware does not support sending

Próbowałem dodać tę linię:

options lirc_rpi gpio_in_pin=18 gpio_out_pin=17

w /etc/modprobe.d/ir-remote.conf, ale to też nie pomogło.

Kiedy uruchomiłem demona LIRC za pomocą następującego polecenia:

sudo lircd --device /dev/lirc0

zadziałało! Urządzenie musi być takie samo, jak skonfigurowane w pliku /etc/lirc/hardware.conf. Kroki są następujące:

  1. Postępuj zgodnie z tym przewodnikiem: http://www.raspberrypiwiki.com/index.php/Raspberry_Pi_IR_Control_Expansion_Board
  2. Gdy dojdziesz do sekcji o nazwie „Funkcja nadawania IR” punkt 5. i pojawi się błąd: irsend: hardware does not support sending
  3. Następnie uruchom następujące polecenie w konsoli: sudo lircd --device /dev/lirc0aby uruchomić demona LIRC
  4. Teraz biegnij irsend SEND_ONCE /home/pi/lircd.conf KEY_VIDEO_PREV
Igor
źródło
Mam te same wyniki. Domyślna instalacja nie działa, ale działa z podanym poleceniem. Czy rozumiesz, dlaczego to prawda? Chciałbym zmodyfikować init.d, aby odpowiednie polecenie było uruchamiane podczas rozruchu.
tim11g