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

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


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.


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

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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.