OrangePi-PCを使ってみる

オンボードの赤外線受信(sunxi-ir-rx編)

OrangePi-PC にはオンボードの赤外線受信機が実装されています。
また、赤外線受信に使える2つの赤外線ドライバーが用意されています。
・sunxi_cir
・sunxi-ir-rx

最新のArmbianは「sunxi_cir」が標準ドライバーとなっていますが、今回は「sunxi-ir-rx」ドライバーを使った
赤外線の読み取り方法を紹介します。

@デバイスの確認
「sunxi-ir-rx」ドライバーを使う場合、「/dev/input/event」デバイスを使います。
「/dev/input/event」デバイスはUSBキーボードやUSBマウスの有無により変化します。
下の画像はUSBキーボード、USBマウスを追加していった場合です。
最初はUSBキーボード、USBマウスが無いので「/dev/input/event3」までしかありませんが、
USBキーボード、USBマウスを追加していくと「/dev/input/event6」まで増えていきます。


そこで最初に赤外線受信デバイスを確認する必要があります。
確認方法は「cat /proc/bus/input/devices」コマンドで、デバイスの一覧を表示し、
Name="sunxi-ir"のevent番号を求めます。
下の例ではName="sunxi-ir"のevent番号はevent3となっています。
$ cat /proc/bus/input/devices
I: Bus=0019 Vendor=0002 Product=0001 Version=0100
N: Name="vmouse"
P: Phys=vmouse/input0
S: Sysfs=/devices/virtual/input/input0
U: Uniq=
H: Handlers=mouse0 event0
B: PROP=0
B: EV=7
B: KEY=70400 0 0 0 0 0 0 0 0
B: REL=143

I: Bus=0019 Vendor=0001 Product=0001 Version=0100
N: Name="sunxi-gpiokey"
P: Phys=sunxikbd/input0
S: Sysfs=/devices/virtual/input/input1
U: Uniq=
H: Handlers=kbd event1 cpufreq_interactive
B: PROP=0
B: EV=3
B: KEY=100000 0 0 0

I: Bus=0019 Vendor=0001 Product=0001 Version=0100
N: Name="sunxi-ths"
P: Phys=sunxiths/input0
S: Sysfs=/devices/virtual/input/input2
U: Uniq=
H: Handlers=event2
B: PROP=0
B: EV=9
B: ABS=100 0

I: Bus=0019 Vendor=0001 Product=0001 Version=0100
N: Name="sunxi-ir"
P: Phys=RemoteIR/input1
S: Sysfs=/devices/virtual/input/input3
U: Uniq=
H: Handlers=sysrq rfkill kbd event3 cpufreq_interactive
B: PROP=0
B: EV=100003
B: KEY=ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe

I: Bus=0003 Vendor=04f3 Product=0103 Version=0111
N: Name="HID 04f3:0103"
P: Phys=usb-sunxi-ohci-1/input0
S: Sysfs=/devices/platform/sunxi-ohci.3/usb7/7-1/7-1:1.0/input/input4
U: Uniq=
H: Handlers=sysrq kbd event4
B: PROP=0
B: EV=120013
B: KEY=10000 7 ff800000 7ff febeffdf f3cfffff ffffffff fffffffe
B: MSC=10
B: LED=7

I: Bus=0003 Vendor=04f3 Product=0103 Version=0111
N: Name="HID 04f3:0103"
P: Phys=usb-sunxi-ohci-1/input1
S: Sysfs=/devices/platform/sunxi-ohci.3/usb7/7-1/7-1:1.1/input/input5
U: Uniq=
H: Handlers=kbd event5
B: PROP=0
B: EV=1f
B: KEY=4837fff 72ff32d bf544446 0 0 1 20c10 b17c000 267bfa d941dfed 9e1680 4400 0 10000002
B: REL=40
B: ABS=1 0
B: MSC=10

I: Bus=0003 Vendor=045e Product=0040 Version=0100
N: Name="Microsoft Microsoft Wheel Mouse OpticalR"
P: Phys=usb-sunxi-ohci-1/input0
S: Sysfs=/devices/platform/sunxi-ohci.4/usb8/8-1/8-1:1.0/input/input6
U: Uniq=
H: Handlers=mouse1 event6
B: PROP=0
B: EV=17
B: KEY=70000 0 0 0 0 0 0 0 0
B: REL=103
B: MSC=10
B: KEY=ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe

今までの経験上、赤外線受信デバイスは「/dev/input/event3」となることが多いようです。
これ以降、赤外線受信デバイスは「/dev/input/event3」として話を進めます。

Aドライバーのロード
最新のArmbianは「sunxi_cir」がロードされるようになっています。
そこで、「/etc/lirc/hardware.conf」を以下のように変更します。
赤字の部分が変えたところです。
Deviceには先に求めた赤外線受信機のデバイスを指定します。
# /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="default"
DRIVER="devinput"

# usually /dev/lirc0 is the correct setting for systems using udev
#DEVICE="/dev/lirc0"
DEVICE="/dev/input/event3"
#MODULES="sunxi_cir"
MODULES="sunxi-ir-rx"


# Default configuration files for your hardware if any
LIRCD_CONF=""
LIRCMD_CONF=""


修正後に再起動すると、以下の様に「sunxi-ir-rx」がロードされます。

$ lsmod
Module                  Size  Used by
sunxi_ir_rx             8535  0 → 赤外線ドライバー
8188eu                908230  0
8189es               1076034  0

B使えるリモコンを探す
次に手元のリモコンが使えるかどうか確認します。
「sunxi_cir」とは明らかに表示が変わります。
$ sudo evtest /dev/input/event3
[sudo] password for orangepi:
Input driver version is 1.0.1
Input device ID: bus 0x19 vendor 0x1 product 0x1 version 0x100
Input device name: "sunxi-ir"
Supported events:
  Event type 0 (EV_SYN)
  Event type 1 (EV_KEY)
    Event code 1 (KEY_ESC)
    Event code 2 (KEY_1)
    Event code 3 (KEY_2)
    Event code 4 (KEY_3)
    Event code 5 (KEY_4)
    Event code 6 (KEY_5)
    Event code 7 (KEY_6)
    Event code 8 (KEY_7)
    Event code 9 (KEY_8)
    Event code 10 (KEY_9)
    Event code 11 (KEY_0)
    Event code 12 (KEY_MINUS)
    Event code 13 (KEY_EQUAL)
    Event code 14 (KEY_BACKSPACE)
    Event code 15 (KEY_TAB)
    Event code 16 (KEY_Q)
    Event code 17 (KEY_W)
    Event code 18 (KEY_E)
    Event code 19 (KEY_R)
    Event code 20 (KEY_T)
    Event code 21 (KEY_Y)
    Event code 22 (KEY_U)
    Event code 23 (KEY_I)
    Event code 24 (KEY_O)
    Event code 25 (KEY_P)
    Event code 26 (KEY_LEFTBRACE)
    Event code 27 (KEY_RIGHTBRACE)
    Event code 28 (KEY_ENTER)
    Event code 29 (KEY_LEFTCTRL)
    Event code 30 (KEY_A)
    Event code 31 (KEY_S)
    Event code 32 (KEY_D)
    Event code 33 (KEY_F)
    Event code 34 (KEY_G)
    Event code 35 (KEY_H)
    Event code 36 (KEY_J)
    Event code 37 (KEY_K)
    Event code 38 (KEY_L)
    Event code 39 (KEY_SEMICOLON)
    Event code 40 (KEY_APOSTROPHE)
    Event code 41 (KEY_GRAVE)
    Event code 42 (KEY_LEFTSHIFT)
    Event code 43 (KEY_BACKSLASH)
    Event code 44 (KEY_Z)
    Event code 45 (KEY_X)
    Event code 46 (KEY_C)
    Event code 47 (KEY_V)
    Event code 48 (KEY_B)
    Event code 49 (KEY_N)
    Event code 50 (KEY_M)
    Event code 51 (KEY_COMMA)
    Event code 52 (KEY_DOT)
    Event code 53 (KEY_SLASH)
    Event code 54 (KEY_RIGHTSHIFT)
    Event code 55 (KEY_KPASTERISK)
    Event code 56 (KEY_LEFTALT)
    Event code 57 (KEY_SPACE)
    Event code 58 (KEY_CAPSLOCK)
    Event code 59 (KEY_F1)
    Event code 60 (KEY_F2)
    Event code 61 (KEY_F3)
    Event code 62 (KEY_F4)
    Event code 63 (KEY_F5)
    Event code 64 (KEY_F6)
    Event code 65 (KEY_F7)
    Event code 66 (KEY_F8)
    Event code 67 (KEY_F9)
    Event code 68 (KEY_F10)
    Event code 69 (KEY_NUMLOCK)
    Event code 70 (KEY_SCROLLLOCK)
    Event code 71 (KEY_KP7)
    Event code 72 (KEY_KP8)
    Event code 73 (KEY_KP9)
    Event code 74 (KEY_KPMINUS)
    Event code 75 (KEY_KP4)
    Event code 76 (KEY_KP5)
    Event code 77 (KEY_KP6)
    Event code 78 (KEY_KPPLUS)
    Event code 79 (KEY_KP1)
    Event code 80 (KEY_KP2)
    Event code 81 (KEY_KP3)
    Event code 82 (KEY_KP0)
    Event code 83 (KEY_KPDOT)
    Event code 84 (?)
    Event code 85 (KEY_ZENKAKUHANKAKU)
    Event code 86 (KEY_102ND)
    Event code 87 (KEY_F11)
    Event code 88 (KEY_F12)
    Event code 89 (KEY_RO)
    Event code 90 (KEY_KATAKANA)
    Event code 91 (KEY_HIRAGANA)
    Event code 92 (KEY_HENKAN)
    Event code 93 (KEY_KATAKANAHIRAGANA)
    Event code 94 (KEY_MUHENKAN)
    Event code 95 (KEY_KPJPCOMMA)
    Event code 96 (KEY_KPENTER)
    Event code 97 (KEY_RIGHTCTRL)
    Event code 98 (KEY_KPSLASH)
    Event code 99 (KEY_SYSRQ)
    Event code 100 (KEY_RIGHTALT)
    Event code 101 (KEY_LINEFEED)
    Event code 102 (KEY_HOME)
    Event code 103 (KEY_UP)
    Event code 104 (KEY_PAGEUP)
    Event code 105 (KEY_LEFT)
    Event code 106 (KEY_RIGHT)
    Event code 107 (KEY_END)
    Event code 108 (KEY_DOWN)
    Event code 109 (KEY_PAGEDOWN)
    Event code 110 (KEY_INSERT)
    Event code 111 (KEY_DELETE)
    Event code 112 (KEY_MACRO)
    Event code 113 (KEY_MUTE)
    Event code 114 (KEY_VOLUMEDOWN)
    Event code 115 (KEY_VOLUMEUP)
    Event code 116 (KEY_POWER)
    Event code 117 (KEY_KPEQUAL)
    Event code 118 (KEY_KPPLUSMINUS)
    Event code 119 (KEY_PAUSE)
    Event code 120 (KEY_SCALE)
    Event code 121 (KEY_KPCOMMA)
    Event code 122 (KEY_HANGUEL)
    Event code 123 (KEY_HANJA)
    Event code 124 (KEY_YEN)
    Event code 125 (KEY_LEFTMETA)
    Event code 126 (KEY_RIGHTMETA)
    Event code 127 (KEY_COMPOSE)
    Event code 128 (KEY_STOP)
    Event code 129 (KEY_AGAIN)
    Event code 130 (KEY_PROPS)
    Event code 131 (KEY_UNDO)
    Event code 132 (KEY_FRONT)
    Event code 133 (KEY_COPY)
    Event code 134 (KEY_OPEN)
    Event code 135 (KEY_PASTE)
    Event code 136 (KEY_FIND)
    Event code 137 (KEY_CUT)
    Event code 138 (KEY_HELP)
    Event code 139 (KEY_MENU)
    Event code 140 (KEY_CALC)
    Event code 141 (KEY_SETUP)
    Event code 142 (KEY_SLEEP)
    Event code 143 (KEY_WAKEUP)
    Event code 144 (KEY_FILE)
    Event code 145 (KEY_SENDFILE)
    Event code 146 (KEY_DELETEFILE)
    Event code 147 (KEY_XFER)
    Event code 148 (KEY_PROG1)
    Event code 149 (KEY_PROG2)
    Event code 150 (KEY_WWW)
    Event code 151 (KEY_MSDOS)
    Event code 152 (KEY_SCREENLOCK)
    Event code 153 (KEY_DIRECTION)
    Event code 154 (KEY_CYCLEWINDOWS)
    Event code 155 (KEY_MAIL)
    Event code 156 (KEY_BOOKMARKS)
    Event code 157 (KEY_COMPUTER)
    Event code 158 (KEY_BACK)
    Event code 159 (KEY_FORWARD)
    Event code 160 (KEY_CLOSECD)
    Event code 161 (KEY_EJECTCD)
    Event code 162 (KEY_EJECTCLOSECD)
    Event code 163 (KEY_NEXTSONG)
    Event code 164 (KEY_PLAYPAUSE)
    Event code 165 (KEY_PREVIOUSSONG)
    Event code 166 (KEY_STOPCD)
    Event code 167 (KEY_RECORD)
    Event code 168 (KEY_REWIND)
    Event code 169 (KEY_PHONE)
    Event code 170 (KEY_ISO)
    Event code 171 (KEY_CONFIG)
    Event code 172 (KEY_HOMEPAGE)
    Event code 173 (KEY_REFRESH)
    Event code 174 (KEY_EXIT)
    Event code 175 (KEY_MOVE)
    Event code 176 (KEY_EDIT)
    Event code 177 (KEY_SCROLLUP)
    Event code 178 (KEY_SCROLLDOWN)
    Event code 179 (KEY_KPLEFTPAREN)
    Event code 180 (KEY_KPRIGHTPAREN)
    Event code 181 (KEY_NEW)
    Event code 182 (KEY_REDO)
    Event code 183 (KEY_F13)
    Event code 184 (KEY_F14)
    Event code 185 (KEY_F15)
    Event code 186 (KEY_F16)
    Event code 187 (KEY_F17)
    Event code 188 (KEY_F18)
    Event code 189 (KEY_F19)
    Event code 190 (KEY_F20)
    Event code 191 (KEY_F21)
    Event code 192 (KEY_F22)
    Event code 193 (KEY_F23)
    Event code 194 (KEY_F24)
    Event code 195 (?)
    Event code 196 (?)
    Event code 197 (?)
    Event code 198 (?)
    Event code 199 (?)
    Event code 200 (KEY_PLAYCD)
    Event code 201 (KEY_PAUSECD)
    Event code 202 (KEY_PROG3)
    Event code 203 (KEY_PROG4)
    Event code 204 (KEY_DASHBOARD)
    Event code 205 (KEY_SUSPEND)
    Event code 206 (KEY_CLOSE)
    Event code 207 (KEY_PLAY)
    Event code 208 (KEY_FASTFORWARD)
    Event code 209 (KEY_BASSBOOST)
    Event code 210 (KEY_PRINT)
    Event code 211 (KEY_HP)
    Event code 212 (KEY_CAMERA)
    Event code 213 (KEY_SOUND)
    Event code 214 (KEY_QUESTION)
    Event code 215 (KEY_EMAIL)
    Event code 216 (KEY_CHAT)
    Event code 217 (KEY_SEARCH)
    Event code 218 (KEY_CONNECT)
    Event code 219 (KEY_FINANCE)
    Event code 220 (KEY_SPORT)
    Event code 221 (KEY_SHOP)
    Event code 222 (KEY_ALTERASE)
    Event code 223 (KEY_CANCEL)
    Event code 224 (KEY_BRIGHTNESSDOWN)
    Event code 225 (KEY_BRIGHTNESSUP)
    Event code 226 (KEY_MEDIA)
    Event code 227 (KEY_SWITCHVIDEOMODE)
    Event code 228 (KEY_KBDILLUMTOGGLE)
    Event code 229 (KEY_KBDILLUMDOWN)
    Event code 230 (KEY_KBDILLUMUP)
    Event code 231 (KEY_SEND)
    Event code 232 (KEY_REPLY)
    Event code 233 (KEY_FORWARDMAIL)
    Event code 234 (KEY_SAVE)
    Event code 235 (KEY_DOCUMENTS)
    Event code 236 (KEY_BATTERY)
    Event code 237 (KEY_BLUETOOTH)
    Event code 238 (KEY_WLAN)
    Event code 239 (KEY_UWB)
    Event code 240 (KEY_UNKNOWN)
    Event code 241 (KEY_VIDEO_NEXT)
    Event code 242 (KEY_VIDEO_PREV)
    Event code 243 (KEY_BRIGHTNESS_CYCLE)
    Event code 244 (KEY_BRIGHTNESS_ZERO)
    Event code 245 (KEY_DISPLAY_OFF)
    Event code 246 (KEY_WIMAX)
    Event code 247 (KEY_RFKILL)
    Event code 248 (?)
    Event code 249 (?)
    Event code 250 (?)
    Event code 251 (?)
    Event code 252 (?)
    Event code 253 (?)
    Event code 254 (?)
    Event code 255 (?)
Key repeat handling:
  Repeat type 20 (EV_REP)
    Repeat code 0 (REP_DELAY)
      Value    280
    Repeat code 1 (REP_PERIOD)
      Value     40
Properties:
Testing ... (interrupt to exit)

ここまで表示されたらリモコンを発射します。

Event: time 1480482737.769260, type 1 (EV_KEY), code 21 (KEY_Y), value 1
Event: time 1480482737.769272, -------------- EV_SYN ------------
Event: time 1480482738.018787, type 1 (EV_KEY), code 21 (KEY_Y), value 0
Event: time 1480482738.018792, -------------- EV_SYN ------------
Event: time 1480482739.266321, type 1 (EV_KEY), code 9 (KEY_8), value 1
Event: time 1480482739.266332, -------------- EV_SYN ------------
Event: time 1480482739.508792, type 1 (EV_KEY), code 9 (KEY_8), value 0
Event: time 1480482739.508797, -------------- EV_SYN ------------
Event: time 1480482740.422720, type 1 (EV_KEY), code 7 (KEY_6), value 1
Event: time 1480482740.422730, -------------- EV_SYN ------------
Event: time 1480482740.668786, type 1 (EV_KEY), code 7 (KEY_6), value 0
Event: time 1480482740.668790, -------------- EV_SYN ------------
Event: time 1480482741.349392, type 1 (EV_KEY), code 22 (KEY_U), value 1
Event: time 1480482741.349402, -------------- EV_SYN ------------
Event: time 1480482741.598783, type 1 (EV_KEY), code 22 (KEY_U), value 0
Event: time 1480482741.598787, -------------- EV_SYN ------------

このように表示されたら OrangePi PC で使うことができるリモコンです。

Cリモコンの学習
以下のコマンドでリモコンの学習を行います。コマンドの引数と操作手順も「sunxi_cir」の時とは一部変わります。
ここで注意する点があります。
コマンドの引数に「-n」をつけないと、あらかじめ定義されている名前でしかボタンを登録できません。
事前に定義されている名前は「irrecord -l」で確認することができます。

$ sudo irrecord -n -H devinput -d /dev/input/event3 my1.conf

Please send the finished config files to <lirc@bartelmus.de> so that I
can make them available to others. Don't forget to put all information
that you can get about the remote control in the header of the file.

Press RETURN to continue.

(Enterキー)

Hold down an arbitrary button.
(リモコンのボタンを押し続ける 同じボタンでOK)
................................................................................
Found gap length: 39971
Now enter the names for the buttons.

Please enter the name for the next button (press <ENTER> to finish recording)
→OK(登録するボタンの名前)

Now hold down button "OK".
(
OKボタンとして登録するボタンを1回だけ押します

Please enter the name for the next button (press <ENTER> to finish recording)
→UP(登録するボタンの名前)
(UPボ タンとして登録するボタンを1回だけ押します

Please enter the name for the next button (press <ENTER> to finish recording)

(Enterキー)
irrecord: closing '/dev/input/event3'
irrecord: initializing '/dev/input/event3'
irrecord: closing '/dev/input/event3'
Successfully written config file.

my.conf のファイルができます。

Dコンフィグファイルの修正と lirc の起動
出来上がった my.conf は、そのままでは使えません。
一部修正する必要があります

<修正前>
# Please make this file available to others
# by sending it to <lirc@bartelmus.de>
#
# this config file was automatically generated
# using lirc-0.9.0-pre1(devinput) on Wed Nov 30 09:44:38 2016
#
# contributed by
#
# brand:                       my1.conf
# model no. of remote control:
# devices being controlled by this remote:
#

begin remote

  name  my1.conf
  bits           56
  eps            30
  aeps          100

  one             0     0
  zero            0     0
  pre_data_bits   8
  pre_data       0x0
  gap          39972
  toggle_bit_mask 0x0

      begin codes
          OK                       0x01001500000001 0x00000000000000
          UP                       0x01004000000001 0x00000000000000
          DOWN                     0x01001900000001 0x00000000000000
          LEFT                     0x01000700000001 0x00000000000000
          RIGHT                    0x01000900000001 0x00000000000000
      end codes

end remote


<修正後>
赤字の部分が修正したところです。
name は何でもいいですが、私はどのリモコンか分かりやすい名前(今回はコダックのフォトフレームに付いてきたリモコン)を付けました。
# Please make this file available to others
# by sending it to <lirc@bartelmus.de>
#
# this config file was automatically generated
# using lirc-0.9.0-pre1(devinput) on Wed Nov 30 09:44:38 2016
#
# contributed by
#
# brand:                       my1.conf
# model no. of remote control:
# devices being controlled by this remote:
#

begin remote

  name  KODAC
  bits           56
  eps            30
  aeps          100

  one             0     0
  zero            0     0
  pre_data_bits   8
  pre_data       0x0
  gap          39972
  toggle_bit_mask 0x0

      begin codes
          OK                       0x01001500000001
          UP                       0x01004000000001
          DOWN                     0x01001900000001
          LEFT                     0x01000700000001
          RIGHT                    0x01000900000001
      end codes

end remote

コンフィグファイルを登録してlircを起動します。

$ sudo cp my.conf /etc/lirc/lircd.conf
$ sudo /etc/init.d/lirc start
$ sudo shutdown -r now


Eリモコンの確認
以下のコマンドでリモコンの登録状況を確認することができます。

$ irsend LIST "" ""
irsend: KODAC
$ irsend LIST KODAC ""
irsend: 0001001500000001 OK
irsend: 0001004000000001 UP
irsend: 0001001900000001 DOWN
irsend: 0001000700000001 LEFT
irsend: 0001000900000001 RIGHT

また、以下のコマンドでリモコンが認識されるか確認することができます。
irw を起動してリモコンを発射し、以下が表示されれば完了です。

$ irw
0001001500000001 00 OK KODAC
0001004000000001 00 UP KODAC
0001001900000001 00 DOWN KODAC
0001000700000001 00 LEFT KODAC
0001000900000001 00 RIGHT KODAC




Fリモコンでのコマンド実行
サンプルとして以下の2つのシェルファイルを作ります
オンボード上のLEDをLチカするシェルです。

/home/orangepi/RedLed.sh
#!/bin/bash
modprobe gpio_sunxi
for i in {1..10}
do
sh -c "echo 1 > /sys/class/leds/red_led/brightness"
sleep 1
sh -c "echo 0 > /sys/class/leds/red_led/brightness"
sleep 1
done

/home/orangepi/YellowLed.sh
#!/bin/bash
modprobe gpio_sunxi
for i in {1..10}
do
sh -c "echo 1 > /sys/class/leds/green_led/brightness"
sleep 1
sh -c "echo 0 > /sys/class/leds/green_led/brightness"
sleep 1
done

「/home/orangepi/.lircrc」 を以下の内容で作ります。
begin
 button = UP
 prog   = irexec
 config = sudo /home/orangepi/RedLed.sh
end

begin
 button = DOWN
 prog   = irexec
 config = sudo /home/orangepi/YellowLed.sh
end

リモコンでsudoコマンドを実行する場合は、ユーザがパスワードなしでsudoできるようにしておく必要があります。
これをしないと、sudoコマンドを実行したときにパスワード入力待ちになってしまいます。
/etc/sudoersの末尾に、
ユーザ名 ALL=(ALL) NOPASSWD: ALL
を加えます。
なお、/etc/sudoersの修正には専用のコマンドを使います。

$ sudo visudo

例えば、orangepiユーザにこの権限を与える場合は

orangepi ALL=(ALL) NOPASSWD: ALL

を追加します。
変更後の「/etc/sudoers」は以下の様になります。

#
# This file MUST be edited with the 'visudo' command as root.
#
# Please consider adding local content in /etc/sudoers.d/ instead of
# directly modifying this file.
#
# See the man page for details on how to write a sudoers file.
#
Defaults        env_reset
Defaults        mail_badpass
Defaults        secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

# Host alias specification

# User alias specification

# Cmnd alias specification

# User privilege specification
root    ALL=(ALL:ALL) ALL

# Allow members of group sudo to execute any command
%sudo   ALL=(ALL:ALL) ALL

# See sudoers(5) for more information on "#include" directives:

#includedir /etc/sudoers.d
orangepi ALL=(ALL) NOPASSWD: ALL

ここまで準備ができたら、以下のコマンドを実行後にリモコンのボタンを押すと、オンボードのLEDがLチカします。
$ irexec /home/orangepi/.lircrc    お試しで起動したいとき

$ irexec -d /home/orangepi/.lircrc    デーモンで起動したいとき

結果は「sunxi_cir」の時と同じです。

ちなみに「/etc/lirc/hardware.conf」の「MODULES="sunxi-ir-rx"」をコメントアウトし
「MODULES="sunxi_cir"」を有効にしても全く動きませんでした。

次 回は「sunxi_cir」ドライバーと「sunxi-ir- rx」ドライバーの違いを(分かる範囲で)紹介します。