Lirc - konfiguracja pilota

Tematy związane z oprogramowaniem, instalacją, konfiguracją
GIGABYTE
Beginner
Posty: 224
Rejestracja: 13 lipca 2007, 00:17
Lokalizacja: Toruñ

Lirc - konfiguracja pilota

Post autor: GIGABYTE »

Witam.
Opiszę całą sytuację. Mam dwa czujniki ir do pilota. Pod port COM, zakupiony na allegro, działał idealnie parę lat temu na Debianie. Drugi czujnik od tunera TV Winfast Tv 2000 XP RM. Nie działał na Debianie. Sytuacja przedstawia się następująco. Mam KDE4, podłączony jeden i drugi czujnik. Bez żadnej konfiguracji czujnik od tunera wyłapuje sygnał i działa ściszanie i zwiększanie głośności oraz wyciszanie w KDE. W sieci przeczytałem tyle artykułów na temat konfiguracji lirca, że sam już nie wiem co robić, tak mam namieszane.
Kroki, które poczyniłem.
Instalacja lirc z repozytorium:

Kod: Zaznacz cały

apt-get install lirc
Podmiana pliku lircd.conf na pasujący do mojego pilota.
Uruchamiam lirca poleceniem:

Kod: Zaznacz cały

/etc/init.d/lirc restart

Kod: Zaznacz cały

Stopping remote control mouse daemon: LIRCMD: failed!
Stopping remote control daemon(s): LIRC:.
Loading LIRC modules:.
Starting remote control daemon(s) : LIRC :.
Starting remote control mouse daemon : LIRCMD :
Jeszcze plik /etc/lirc/hardware.conf:

Kod: Zaznacz cały

# /etc/lirc/hardware.conf
#
# Arguments which will be used when launching lircd
LIRCD_ARGS=""

#Don't start lircmd even if there seems to be a good config file
#START_LIRCMD=false

#Don't start irexec, even if a good config file seems to exist.
#START_IREXEC=false

#Try to load appropriate kernel modules
LOAD_MODULES=true

# Run "lircd --driver=help" for a list of supported drivers.
DRIVER="dev/input"
# If DEVICE is set to /dev/lirc and udev is in use /dev/lirc0 will be
# automatically used instead
DEVICE="/dev/input/event5"
MODULES=""

# Default configuration files for your hardware if any
LIRCD_CONF="/etc/lirc/lircd.conf"
LIRCMD_CONF=""
Wszystko poprawne.
Następnie zabijam proces lircd i wpisuję polecenie:

Kod: Zaznacz cały

lircd -d /dev/input/event5 -H dev/input
Potem uruchamiam irw i wyświetla mi:

Kod: Zaznacz cały

connect: No such file or directory
Wynik polecenia:

Kod: Zaznacz cały

cat /proc/bus/input/devices

Kod: Zaznacz cały

I: Bus=0011 Vendor=0001 Product=0001 Version=ab41
N: Name="AT Translated Set 2 keyboard"
P: Phys=isa0060/serio0/input0
S: Sysfs=/devices/platform/i8042/serio0/input/input0
U: Uniq=
H: Handlers=kbd event0 
B: EV=120013
B: KEY=4 2000000 3803078 f800d001 feffffdf ffefffff ffffffff fffffffe
B: MSC=10
B: LED=7

I: Bus=0010 Vendor=001f Product=0001 Version=0100
N: Name="PC Speaker"
P: Phys=isa0061/input0
S: Sysfs=/devices/platform/pcspkr/input/input1
U: Uniq=
H: Handlers=kbd event1 
B: EV=40001
B: SND=6

I: Bus=0019 Vendor=0000 Product=0001 Version=0000
N: Name="Power Button"
P: Phys=PNP0C0C/button/input0
S: Sysfs=/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0C:00/input/input2
U: Uniq=
H: Handlers=kbd event2 
B: EV=3
B: KEY=100000 0 0 0

I: Bus=0019 Vendor=0000 Product=0001 Version=0000
N: Name="Power Button"
P: Phys=LNXPWRBN/button/input0
S: Sysfs=/devices/LNXSYSTM:00/LNXPWRBN:00/input/input3
U: Uniq=
H: Handlers=kbd event3 
B: EV=3
B: KEY=100000 0 0 0

I: Bus=0001 Vendor=10ec Product=0888 Version=0001
N: Name="HDA Digital PCBeep"
P: Phys=card0/codec#2/beep0
S: Sysfs=/devices/pci0000:00/0000:00:1b.0/input/input4
U: Uniq=
H: Handlers=kbd event4 
B: EV=40001
B: SND=6

I: Bus=0003 Vendor=09da Product=000e Version=0110
N: Name="A4Tech PS/2+USB Mouse"
P: Phys=usb-0000:00:1d.3-2/input0
S: Sysfs=/devices/pci0000:00/0000:00:1d.3/usb5/5-2/5-2:1.0/input/input6
U: Uniq=
H: Handlers=mouse0 event6 
B: EV=17
B: KEY=ff0000 0 0 0 0 0 0 0 0
B: REL=303
B: MSC=10

[B]I: Bus=0001 Vendor=107d Product=6609 Version=0001
N: Name="bttv IR (card=34)"
P: Phys=pci-0000:04:01.0/ir0
S: Sysfs=/devices/pci0000:00/0000:00:1e.0/0000:04:01.0/input/input7
U: Uniq=
H: Handlers=kbd event5 
B: EV=100003
B: KEY=10afc336 21508c8 0 0 0 404 80010007 80000190 4801 1e0000 4400 100000 10000ffc[/B]
Sam już nie wiem co robić, proszę o pomoc w uruchomieniu tego pilota, nie ważne, na którym czujniku. Ważne, żeby działało.
Pozdrawiam
Akkon
Junior Member
Posty: 833
Rejestracja: 09 listopada 2007, 14:06

Post autor: Akkon »

GIGABYTE
Beginner
Posty: 224
Rejestracja: 13 lipca 2007, 00:17
Lokalizacja: Toruñ

Post autor: GIGABYTE »

Oczywiście. Mam taki błąd:

Kod: Zaznacz cały

karolp1993:/home/karolp1993# irrecord -H dev/input -d /dev/input/event5  /tmp/my-remote
Driver `dev/input' not supported.
Supported drivers:
	default
Ale to nie ważne, bo plik konfiguracyjny z kodami do mojego pilota mam. Dalej nie mogę odpalić irw.

Kod: Zaznacz cały

karolp1993@karolp1993:~$ irw
connect: No such file or directory
Aha, no i jeszcze jest taka sprawa:

Kod: Zaznacz cały

karolp1993:/home/karolp1993# lircd -n /etc/lirc/hardware.conf
lircd-0.8.3[20538]: error in configfile line 4
lircd-0.8.3[20538]: reading of config file failed
lircd-0.8.3[20538]: lircd(userspace) ready
lircd-0.8.3[20538]: caught signal
A przecież ten hardware.conf jest oryginalny, tworzony przez instalator.

Wydaje mi się że wszystko sypie się przez kernelową obsługę pilota, ir-command. Sprawdziłem dmesg i :

Kod: Zaznacz cały

karolp1993:/home/karolp1993# dmesg | grep lirc
[  745.037445] lirc_dev: IR Remote Control driver registered, major 61 
[  745.044609] lirc_serial: port 03f8 already in use
[  745.044611] lirc_serial: use 'setserial /dev/ttySX uart none'
[  745.044612] lirc_serial: or compile the serial port driver as module and
[  745.044613] lirc_serial: make sure this module is loaded first
EDIT:
Ok, z poleceniem

Kod: Zaznacz cały

karolp1993:/home/karolp1993# irrecord -H dev/input -d /dev/input/event5  /tmp/my-remote
Driver `dev/input' not supported.
Supported drivers:
	default
Doszedłem o co chodzi, trzeba było zmienić ścieżkę do programu, ale dalej w irrecord mi wywala:

Kod: Zaznacz cały

/usr/bin/irrecord: gap not found, can't continue
/usr/bin/irrecord: closing '/dev/input/event4'
Po wydaniu polecenia:

Kod: Zaznacz cały

lircd -d /dev/input/event5 -H devinput
irw się odpala ale nie czyta żadnych kodów.
Akkon
Junior Member
Posty: 833
Rejestracja: 09 listopada 2007, 14:06

Post autor: Akkon »

Dalej nie mogę odpalić irw.
To polecenie jest częścią pakietu lirc. Musisz go mieć poprawnie zainstalowanego.
ale dalej w irrecord mi wywala:
Kod:
/usr/bin/irrecord: gap not found, can't continue
To sugeruje, że 'gap', czyli czas między naciskaniem kolejnych klawiszy pilota podczas dekodowania jego sygnałów jest niewłaściwy.
irw się odpala ale nie czyta żadnych kodów
.
Czyli sygnały z pilota nie zostały prawidłowo rozkodowane. W linku, którym Ci podałem jest w zasadzie komplet informacji, dzięki którym można skonfigurować lirca. Kluczowe jest właściwe zakodowanie sygnałów pilota. Robisz to w ten sposób:

Kod: Zaznacz cały

irrecord -H dev/input -d /dev/input/eventX /tmp/my-remote
gdzie X oznacza Twój event dla karty TV, który znajdziesz

Kod: Zaznacz cały

cat /proc/bus/input/devices
Kiedy będziesz już miał rozkodowane sygnały pilota skopuj je do

Kod: Zaznacz cały

/etc/lirc/lircd.conf
i uruchom usługę

Kod: Zaznacz cały

lircd -H dev/input -d /dev/input/eventX
Powinno działać. By sprawdzić wystarczy w konsoli dać naciskając poszczególne klawisze pilota powinieneś zobaczyć na ekranie ich właściwie zakodowane sygnały (czyli naciskając '1' pojawia się kod i oznaczenie '1' itd.)
GIGABYTE
Beginner
Posty: 224
Rejestracja: 13 lipca 2007, 00:17
Lokalizacja: Toruñ

Post autor: GIGABYTE »

Wywołując komendę :

Kod: Zaznacz cały

irrecord -H dev/input -d /dev/input/eventX /tmp/my-remote
Przy poleceniu:

Kod: Zaznacz cały

Hold down an arbitrary button.
Przytrzymuję i nic się nie dzieje, po chwili wywala błąd z gap. Event na pewno dobry, bo przy irrecord wciskając działające klawisze w KDE, nie reagują one, dopiero jak wyłącze irrecord z powrotem działają, więc irrecord tak jakby "blokuje" pilota.
A lircd.conf mam podmieniony z sieci dla mojego pilota. (Winfast model Y0400052).
Akkon
Junior Member
Posty: 833
Rejestracja: 09 listopada 2007, 14:06

Post autor: Akkon »

GIGABYTE pisze:]Przytrzymuję i nic się nie dzieje, po chwili wywala błąd z gap. Event na pewno dobry, bo przy irrecord wciskając działające klawisze w KDE, nie reagują one, dopiero jak wyłącze irrecord z powrotem działają, więc irrecord tak jakby "blokuje" pilota.
A lircd.conf mam podmieniony z sieci dla mojego pilota. (Winfast model Y0400052).
Samo przytrzymanie może nie dać rezultatu. Czasami trzeba przytrzymać i puścić, przytrzymać i puścić (poklikać z określoną częstotliwością), w moim przypadku wyglądało to w ten sposób, że kilkanaście/kilkadziesiąt razy musiałem nacisnąć i przytrzymać dany klawisz by wyłapać sygnał. Nie pamiętam już czy musiałem to robić szybko czy raczej wolno, ale udało mi się to dopiero po kilku próbach. Ten czas przerwy (gap) jest właśnie kluczowy i musi być właściwy, Trzeba to wybadać metodą prób i błędów. Najgorzej jest z pierwszym kodem.
Co do gotowego configa, to bym się nie sugerował, że to ten sam model. U mnie one też nie działały.
GIGABYTE
Beginner
Posty: 224
Rejestracja: 13 lipca 2007, 00:17
Lokalizacja: Toruñ

Post autor: GIGABYTE »

Konfig z irrecord zrobiony, jakoś się udało. Wciskałem na zmianę szybko różne przyciski. Do 3 przycisków nie mam przypisanych kodów, bo tak jakby nie rozpoznało ich, przycisk play/pause ma taki sam kod jak fullscreen, next taki sam jak VOL+. Coś nie tak jest jeszcze?

Kod: Zaznacz cały

karolp1993@karolp1993:~$ irw
0000000080010074 00 POWER Y0400052
0000000080010192 00 CH+ Y0400052
0000000080010193 00 CH- Y0400052
0000000080010072 00 VOL- Y0400052
0000000080010073 00 VOL+ Y0400052
0000000080010174 00 PLAY/PAUSE Y0400052
0000000080010003 00 STOP Y0400052
Jak widać działa, jakoś się udało. Mam taką sytuację, że eventy cały czas mi się zmieniają, użyłem adresu fizycznego czujnika.
Teraz czas na przypisanie do programu. Wykorzystuje się do tego irexec i .lircrc. .lircrc ściągnąłem do programu tvtime, który mam zainstalowany. Wywołuję:

Kod: Zaznacz cały

irexec -d /home/karolp1993/.lircrc
Ale nie działa, z tego co widzę nie uruchamia się.

Kod: Zaznacz cały

irexec
irexec: could not connect to socket
irexec: No such file or directory
Nie mam też urządzenia /dev/lirc ani /dev/lirc0/.
Co dalej?
Akkon
Junior Member
Posty: 833
Rejestracja: 09 listopada 2007, 14:06

Post autor: Akkon »

Mam taką sytuację, że eventy cały czas mi się zmieniają, użyłem adresu fizycznego czujnika.
To niestety się zdarza. Gdzieś w sieci widziałem opis jak to obejść, ale nie testowałem tego (u mnie event zmienia się rzadko) i nie pamiętam gdzie to było.
Co dalej?
Ja swojego pilota mam skonfigurowanego pod xdtv i mplayera i tutaj Ci mogę pomóc. Dla pozostałych programów musisz powalczyć sam :-)
GIGABYTE
Beginner
Posty: 224
Rejestracja: 13 lipca 2007, 00:17
Lokalizacja: Toruñ

Post autor: GIGABYTE »

Poprosiłbym o pomoc jak skonfigurować pod mplayera. A dalej zobaczę. Kopiowałem konfig pod mplayera do .lircrc ale nie działa.
Akkon
Junior Member
Posty: 833
Rejestracja: 09 listopada 2007, 14:06

Post autor: Akkon »

W pliku .lircrc trzeba dopisać np. takie opcje

Kod: Zaznacz cały

begin
    button = full
    prog   = mplayer
    config = vo_fullscreen

end

begin
    button = play
    prog   = mplayer
    config = pause
end

begin
    button = ff
    prog = mplayer
    config = seek_chapter 1
    repeat = 1
end

begin
   button = mute
   prog = mplayer
   config = mute
end
ale nazwy poszczególnych przycisków muszą być zgodne z mapowaniem klawiszy określonym w lircd.conf. U mnie np. jest tak

Kod: Zaznacz cały

play                     0x00A4
ff                       0x00D0
mute                     0x0071
full                     0x0174
Opis i wykaz dostępnych dla mplayera opcji znajdziesz w dokumentacji programu. Zasada mapowania jest analogiczna. Opis dotyczy mplayera w konsoli.
ODPOWIEDZ