LIRC를 이용한 IR 레코딩

LIRC를 사용하여 IR 레코딩 하기 위해서, lircd 데몬을 실행되고 있다면 kill 시키도록 한다. lircd 데몬이 실행 상태에서 ir 레코딩은 이상한 데이터가 기록된다.

ps_lircd.jpeg

타켓보드에서 irrecord 명령어를 아래와 같이 실행하여 ir 레코딩을 시작할 수 있다.

$ irrecord -d /dev/lirc0 ./lircd.conf

irrecord를 실행하면 아래와 같이 RCU 이름을 설정하고 IR 레코딩을 진행하도록 한다.

etc-image-1etc-image-2

HD_WSCL 이름을 갖는 lirc.conf 파일이 생성되며, 다음 단계에서는 최대한 많은 key를 입력하도록 한다. 여기서 주의할 점은 1초이상 길게 눌려서는 안된다.

etc-image-3etc-image-4

위 단계에서 RCU가 사용하는 RC5/NEC 등의 프로토콜을 판단한다. 프로토콜 스캔이 완료되면 각 key에 대한 keycode를 맴핑하면 된다. keycode는 /usr/include/linux/input-event-codes.h를 참고하도록 한다.

etc-image-5etc-image-6etc-image-7

위와 같이 각 key에 대한 keycode 입력을 완료되면 빈공간 없이 <Enter> 입력하면 완료되고, 바로 toggle bit mask를 스캔한다. RCU 프로토콜 스캔 단계와 같이 최대한 많은 key를 입력하도록 한다. bit mask 스캔이 완료되면 conf 파일이 생성되는 것을 확인하도록 한다.

$ vi HD_WSCL.lirc.conf
begin remote
name HD_WSCL
bits 16
flags SPACE_ENC|CONST_LENGTH
eps 30
aeps 100
header 8931 4504
one 544 1701
zero 544 586
ptrail 545
repeat 8931 2263
pre_data_bits 16
pre_data 0x101
gap 114913
toggle_bit_mask 0x808
frequency 38000
begin codes
KEY_POWER 0x10EF
KEY_MUTE 0x58A7
KEY_1 0xC03F
KEY_2 0xC837
KEY_3 0xD827
end codes
end remote

RCU HD_WSCL은 NEC 프로토콜을 사용하기 때문에, frequency는 38K를 사용한다. toggle_bit_mask 값이 0x808로 정의 되어 있을 경우, lircd에서 한번 더 계산하기 때문에, toggle_bit_mask 값은 0으로 변경한다. 위 conf 파일의 keycode는 이미 비트 연산된 값이다.

 

그리고 suppress_repeat를 설정하여 repeat 처리되는 정도를 조절할 수 있다. suppress_repeat 설정하지 않을 경우 0으로 설정되는데, 이 경우 키 입력을 한번 하였지만, 2-3번 눌린것으로 처리하는 경우가 빈번하게 발생한다.