LIRC를 사용하여 IR 레코딩 하기 위해서, lircd 데몬을 실행되고 있다면 kill 시키도록 한다. lircd 데몬이 실행 상태에서 ir 레코딩은 이상한 데이터가 기록된다.
타켓보드에서 irrecord 명령어를 아래와 같이 실행하여 ir 레코딩을 시작할 수 있다.
$ irrecord -d /dev/lirc0 ./lircd.conf
irrecord를 실행하면 아래와 같이 RCU 이름을 설정하고 IR 레코딩을 진행하도록 한다.
HD_WSCL 이름을 갖는 lirc.conf 파일이 생성되며, 다음 단계에서는 최대한 많은 key를 입력하도록 한다. 여기서 주의할 점은 1초이상 길게 눌려서는 안된다.
위 단계에서 RCU가 사용하는 RC5/NEC 등의 프로토콜을 판단한다. 프로토콜 스캔이 완료되면 각 key에 대한 keycode를 맴핑하면 된다. keycode는 /usr/include/linux/input-event-codes.h를 참고하도록 한다.
위와 같이 각 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번 눌린것으로 처리하는 경우가 빈번하게 발생한다.