「LIRC」の版間の差分
(項目を整理) |
|||
(同じ利用者による、間の6版が非表示) | |||
83行目: | 83行目: | ||
}} |
}} |
||
− | === |
+ | === リモート設定 === |
+ | ディレクトリ {{ic|/etc/lirc/lircd.conf.d/}} には、リモートのシステム全体の設定ファイルが含まれています。各 ''*.conf'' ファイルは 1 つのデバイスに対応し、そのプロトコル、スキャンコード、キーコードが記述されています。これにより、LIRC が特定のハードウェアに対して信号を送受信できるようになります。これらのファイルは {{Pkg|lirc}} パッケージには含まれていないため、ユーザーが作成する必要があります。 |
||
− | Directory {{ic|/etc/lirc/lircd.conf.d/}} contains system-wide configuration files for remotes. Each ''*.conf'' file corresponds to one device and describes its protocol, scancodes and keycodes. It allows LIRC receive and send signals for specific hardware. These files are not included in {{Pkg|lirc}} package and should be found somewhere or created by user. |
||
− | ==== |
+ | ==== リモート設定の検索 ==== |
− | + | 多くの設定ファイルは [http://lirc-remotes.sourceforge.net/remotes-table.html LIRC リモートデータベース] にあります。URL に従うか、{{man|1|irdb-get}} を使用してデータベースを検索します。 |
|
− | + | {{ic|irdb-get}} を使用して "Streamzap" リモートの設定ファイルを検索する例: |
|
{{hc|$ irdb-get find stream| |
{{hc|$ irdb-get find stream| |
||
106行目: | 106行目: | ||
}} |
}} |
||
− | + | 特定したら、必要な ''.conf'' を {{ic|/etc/lirc/lircd.conf.d/}} にコピーして、デーモンがそのサポートを初期化できるようにします。 |
|
# cp streamzap.lircd.conf /etc/lirc/lircd.conf.d/ |
# cp streamzap.lircd.conf /etc/lirc/lircd.conf.d/ |
||
− | ==== |
+ | ==== リモート設定の作成 ==== |
+ | リモートコントロール設定は、ユーザーがプロセスをガイドする {{man|1|irrecord}} を使用して作成できます。検出されたリモートを使用する場合は、次のように呼び出します。 |
||
− | Remote control configurations can be created using {{man|1|irrecord}}, which guides users trough the process. If using a detected remote, invoke it like so: |
||
# irrecord --device=/dev/lirc0 MyRemote |
# irrecord --device=/dev/lirc0 MyRemote |
||
+ | プログラムはユーザーにリモコンのキーを押して学習するよう指示し、最終的にすべてのボタンとそれに対応するスキャンコードをマッピングします。完了したら、結果のファイルを {{ic|/etc/lirc/lircd.conf.d/foo.conf}} に保存します。設定ファイルを他の人と共有することを検討してください。 |
||
− | The program will instruct user to begin hitting keys on the remote in an attempt to learn it, ultimately mapping out every button and its corresponding scancode. When finished, save the resulting file to {{ic|/etc/lirc/lircd.conf.d/foo.conf}} and proceed. Consider sharing configuration file with others. |
||
+ | === アプリケーション固有のアクション === |
||
− | === Application-specific actions === |
||
+ | {{Tip|多くのアプリケーション固有の lircrc ファイルがインターネット上で入手できます。}} |
||
− | {{Tip|Many application-specific lircrc files are available on the internet.}} |
||
+ | キーコードをアプリケーション固有のアクションにバインドするには、それぞれの設定ファイルを {{ic|~/.config/lircrc/}} に配置します。必要に応じて手動で作成する必要があります。{{man|5|lircrc}} を参照してください。これは、[[MPlayer]]、[[VLC]]、[[MythTV]]、{{Pkg|totem}} などの LIRC 対応アプリケーションでのみ機能します ([[Kodi]] も LIRC をサポートしていますが、非対応-標準的な方法、[[Kodi#リモートコントロールの使用]]を参照してください。 |
||
− | Bind keycodes to application-specific actions by placing their respective configuration files in {{ic|~/.config/lircrc/}} which should be created manually if desired, see {{man|5|lircrc}}. This only works for LIRC-aware applications, like [[MPlayer]], [[VLC]], [[MythTV]] and {{Pkg|totem}} ([[Kodi]] also supports LIRC but does so in a non-standard way, see [[Kodi#Using a remote control]]). |
||
+ | これらのアプリケーション固有の設定を別のファイルで定義し、次のように ''lircrc'' に含めます。 |
||
− | Define these application-specific configurations in separate files and include them in ''lircrc'', like: |
||
include "~/.config/lircrc/mplayer" |
include "~/.config/lircrc/mplayer" |
||
129行目: | 129行目: | ||
include "~/.config/lircrc/vlc" |
include "~/.config/lircrc/vlc" |
||
+ | === 通常のユーザーとして実行する === |
||
− | === Running as a regular user === |
||
+ | デフォルトでは、''lircd'' は root として実行されます。安定性とセキュリティを向上させるために、アップストリームでは通常のユーザーとして実行することをお勧めします。[https://www.lirc.org/html/configuration-guide.html この]リンクにある付録 14 を参照してください。 |
||
− | By default, ''lircd'' runs as root. For increased stability and security, upstream recommends running it as a regular user. See Appendix 14 at [https://www.lirc.org/html/configuration-guide.html this] link. |
||
− | ==== |
+ | ==== lirc-user-service の AUR パッケージを使用する ==== |
− | {{AUR|lirc-user-service}} |
+ | すべてを自動的に行う {{AUR|lirc-user-service}} が提供されています。 |
− | == |
+ | == テスト == |
− | {{ic|lircd.service}} を[[起動]]してブート/シャットダウン時に実行されるように[[有効化]]してください (強く推奨)。 |
||
+ | {{ic|lircd.service}} を [[起動/有効化]] して下さい。 |
||
− | {{ic|/usr/bin/irw}} を使ってリモコンをテストしてください、リモコンのボタンを押した時に LIRC が受信したものを全て標準出力に流します。 |
||
+ | === コマンドの受信 === |
||
− | 例: |
||
− | $ irw |
||
− | 000000037ff07bfe 00 One mceusb |
||
− | 000000037ff07bfd 00 Two mceusb |
||
− | 000000037ff07bfd 01 Two mceusb |
||
− | 000000037ff07bf2 00 Home mceusb |
||
− | 000000037ff07bf2 01 Home mceusb |
||
+ | {{man|1|irw}} を実行し、リモコンを受信機に向けていくつかのボタンを押します。受信したコードは標準出力に出力されます。 |
||
− | このコマンドが動作しない場合 (irw が何も出力をしない): {{ic|/etc/lirc/lircd.conf.d/}} 内の config ファイルに間違いがないかよく確認してください。 |
||
+ | {{hc|$ irw| |
||
− | ==プログラムごとの設定 == |
||
+ | 000000037ff07bfe 00 One mceusb |
||
− | LIRC では同じキーでもプログラムごとに別々のコマンドになるように設定することができます。つまり、特定のキーを押した時に mplayer と vlc で挙動を変えられます。 |
||
+ | 000000037ff07bfd 00 Two mceusb |
||
+ | 000000037ff07bfd 01 Two mceusb |
||
+ | 000000037ff07bf2 00 Home mceusb |
||
+ | 000000037ff07bf2 01 Home mceusb |
||
+ | }} |
||
+ | {{ic|irw}} が出力を返さない場合: |
||
− | まずは LIRC のコマンドを使用するプログラムを決めてください。一般的なプログラムの例: {{Pkg|mplayer}}, {{AUR|mythtv}}, {{Pkg|totem}}, {{Pkg|vlc}}, {{Pkg|kodi}}。 |
||
+ | * ''mode2'' または ''xmode2'' を実行して、LIRC が実際に IR センサーから何かを読み取ったかどうかを確認します。読み取っていない場合は、ハードウェアを確認してください |
||
− | {{Note|Kodi は非標準的な方法で LIRC を実装しています。他のプログラムが使用する LIRC の標準ファイルではなく、特別な xml ファイルである {{ic|~/.xbmc/userdata/Lircmap.xml}} を編集する必要があります。Kodi を使用するユーザーは [[Kodi#リモートコントロールの使用]]の記事を読んでください。}} |
||
+ | * ''mode2'' がパルスデータを受信した場合は、{{ic|/etc/lirc/lircd.conf.d/}} の設定ファイルにエラーがないか確認してください。 |
||
+ | === コマンドの送信 === |
||
− | プログラム固有のマッピングを指定するファイルを作成してください: |
||
− | $ mkdir ~/.lirc |
||
− | $ touch ~/.lircrc |
||
− | + | 登録されているリモート (設定ファイル) をリストします。 |
|
+ | {{hc|$ irsend LIST "" ""| |
||
− | $ ls ~/.lirc |
||
+ | LG_6710CMAP01A |
||
− | mplayer |
||
+ | }} |
||
− | mythtv |
||
− | vlc |
||
+ | 特定のデバイスで利用可能なコードをリストします: |
||
− | {{Tip|Google で検索すれば様々なリモコン・プログラム固有のファイルが山ほど出てきます。この記事では各プログラムのキーマップについては扱いません。}} |
||
+ | {{hc|$ irsend LIST LG_6710CMAP01A ""| |
||
− | {{ic|~/.lircrc}} を編集して LIRC でコントロールするプログラムの数だけ {{ic|~/.lirc/foo}} を指定する ''include'' ステートメントを記述してください。例: |
||
+ | 0000000000007887 KEY_POWER |
||
− | |||
+ | 000000000000f807 KEY_MUTE |
||
− | {{hc|~/.lircrc| |
||
+ | 000000000000e817 KEY_VOLUMEUP |
||
− | include "~/.lirc/mplayer" |
||
+ | ... |
||
− | include "~/.lirc/mythtv" |
||
− | include "~/.lirc/vlc" |
||
}} |
}} |
||
+ | |||
+ | 検出されたデバイス {{ic|LG_6710CMAP01A}} を選択し、コマンド {{ic|KEY_POWER}} を送信します。 |
||
+ | |||
+ | $ irsend SEND_ONCE LG_6710CMAP01A KEY_POWER |
||
==トラブルシューティング== |
==トラブルシューティング== |
||
+ | |||
=== リモコンがキーボードとして機能する === |
=== リモコンがキーボードとして機能する === |
||
+ | |||
==== Xorg を使用している場合 ==== |
==== Xorg を使用している場合 ==== |
||
+ | |||
− | Streamzap USB PC Remote など、リモコンによっては Xorg によって Human Interface Device (HID) と認識されるものがあり、物理キーボードからの入力のようにキーの一部または全てがキーストロークとして認識されます。この挙動は LIRC でデバイスを管理しようとしたときに問題になります。無効にするには、以下のファイルを作成して X を再起動してください: |
||
+ | Streamzap USB PC Remote など、リモコンによっては [[Xorg]] によって Human Interface Device (HID) と認識されるものがあり、物理キーボードからの入力のようにキーの一部または全てがキーストロークとして認識されます。この挙動は LIRC でデバイスを管理しようとしたときに問題になります。 |
||
+ | |||
+ | 無効にするには、以下のファイルを作成して X を再起動してください: |
||
{{hc|/etc/X11/xorg.conf.d/90-streamzap.conf| |
{{hc|/etc/X11/xorg.conf.d/90-streamzap.conf| |
||
194行目: | 198行目: | ||
次のコマンドで得られる出力の {{ic|Name}} に合わせて {{ic|MatchProduct}} は適切に変更するようにしてください: |
次のコマンドで得られる出力の {{ic|Name}} に合わせて {{ic|MatchProduct}} は適切に変更するようにしてください: |
||
+ | |||
$ cat /proc/bus/input/devices | grep -e IR |
$ cat /proc/bus/input/devices | grep -e IR |
||
+ | |||
例えば {{ic|<nowiki>N: Name="cx88 IR (WinFast DTV2000 H rev."</nowiki>}} の場合 {{ic|WinFast}} にします。 |
例えば {{ic|<nowiki>N: Name="cx88 IR (WinFast DTV2000 H rev."</nowiki>}} の場合 {{ic|WinFast}} にします。 |
||
− | ==== |
+ | ==== Xorg を使用していない場合 ==== |
+ | |||
{{ic|/etc/modprobed.d/streamzap.conf}} を作成して問題を起こすモジュールをブラックリストに追加してください。例えば Streamzap のリモコンの場合: |
{{ic|/etc/modprobed.d/streamzap.conf}} を作成して問題を起こすモジュールをブラックリストに追加してください。例えば Streamzap のリモコンの場合: |
||
install ir_sharp_decoder /bin/false |
install ir_sharp_decoder /bin/false |
2024年2月26日 (月) 00:38時点における最新版
official website から:
- LIRC (Linux 赤外線リモコン) は、一般的に使用される多くの (すべてではない) リモコンの赤外線信号をデコードして送信するパッケージです。
この記事ではシリアル・USB 赤外線デバイスを使って LIRC "Linux Infrared Remote Control" を設定・使用する方法を説明しています。
LIRC はサポートしているリモコンのキーが押されたときにプログラムにあわせて特定のコマンドに変換することができるデーモンです。ここで、「プログラムにあわせて」とは同じキーでも実行しているプログラムによって異なる動作をさせることができることを意味します。LIRC から取得されたリモコンの情報は以下のようにプログラムに流れます:
- ユーザーがリモコンのボタンを押すことで IR または RF 信号が送信されます。
- Linux パソコンに接続されたレシーバーによって信号が受信されます。
- カーネル (のモジュール) によってリモコンから送信されたパルス信号が
/dev/lirc0
,/dev/input/eventX
,/dev/ttyUSBX
,/dev/ttyS0
などのデバイスに変換されます。 /usr/bin/lircd
は/etc/lirc/lircd.conf.d/foo.conf
の情報を使ってパルス信号をボタンの押下情報に変換します。- LIRC を使用するプログラムは
~/.lircrc
に書かれている情報に従って/usr/bin/lircd
のボタン押下情報をユーザーが定義した操作に解釈します。
インストール
設定
受信機と送信機の設定
適切に実行するには、LIRC サービスの ドライバー および/または デバイス を指定する必要がある場合があります。irrecord などの LIRC 依存プログラムの実行中にサービスが突然停止した場合は、journalctl 出力で次のようなメッセージを探してください。
Driver `devinput' not found or not loadable (wrong or missing -U/--plugindir?). readlink() failed for "auto": No such file or directory
これらを設定ファイルに設定し、サービスを再起動します。
/etc/lirc/lirc_options.conf
[lircd] driver = driver-name device = /dev/path-to-dev
シリアルポート
最新のカーネルには、古い lirc_serial ドライバーに代わる serial_ir モジュールがあります。マザーボードのシリアルポートに接続された DIY 受信機および送信機もサポートします。setserialAUR をインストールして実行します:
# setserial /dev/ttyS0 uart none # modprobe serial_ir
serial_ir モジュールをロードすると、デバイス /dev/lirc0
が、カーネルによって created になります。そうでない場合は、ジャーナル で関連するエラーがないか確認してください。シリアルデバイスの LIRC 設定例:
/etc/lirc/lirc_options.conf
[lircd] driver = default device = auto [modinit] code = /usr/bin/setserial /dev/ttyS0 uart none code1 = /usr/sbin/modprobe serial_ir
サウンドカード
外部 DIY 回路が接続されたサウンドカードは、受信 および IR コードを 送受信 できます。
audio_alsa driver は lirc に含まれていますが、受信のみをサポートしています。
alsamixer
でマイク入力のミュートを解除し、十分なゲインを設定します。audacity で波形とゲインを確認できます。区別できる方形パルスが存在する必要があります。平坦でも過負荷でもありません。また、良好に復調されたパルスは耳で簡単に認識できます。LIRC と irrecord
は 右オーディオチャネルの正のパルス を読み取ることに注意してください。負のパルスは機能しません。
/etc/lirc/lirc_options.conf
driver = audio_alsa device = default
lirc-gitAUR に含まれる audio driver が受信と送信の両方をサポートします。デフォルトの遅延が 0.02 程度であると、"Warning: Output underflow" が発生し、送信が破損する可能性があることに注意してください。受信機はそれに応答しません。0.05 などのより高い値を試してください。
サウンドカードの出力音量を上げて下さい。そうしないと、LED 信号が弱く、範囲が狭くなります。LEDフラッシュは赤外線の波長に敏感であるため、スマートフォンのカメラで検出できます。
/etc/lirc/lirc_options.conf
driver = audio device = ALSA:default@48000:0.05
リモート設定
ディレクトリ /etc/lirc/lircd.conf.d/
には、リモートのシステム全体の設定ファイルが含まれています。各 *.conf ファイルは 1 つのデバイスに対応し、そのプロトコル、スキャンコード、キーコードが記述されています。これにより、LIRC が特定のハードウェアに対して信号を送受信できるようになります。これらのファイルは lirc パッケージには含まれていないため、ユーザーが作成する必要があります。
リモート設定の検索
多くの設定ファイルは LIRC リモートデータベース にあります。URL に従うか、irdb-get(1) を使用してデータベースを検索します。
irdb-get
を使用して "Streamzap" リモートの設定ファイルを検索する例:
$ irdb-get find stream
atiusb/atiusb.lircd.conf digital_stream/DTX9900.lircd.conf snapstream/Firefly-Mini.lircd.conf streamzap/PC_Remote.lircd.conf streamzap/streamzap.lircd.conf x10/atiusb.lircd.conf
$ irdb-get download streamzap/streamzap.lircd.conf
Downloaded sourceforge.net/p/lirc-remotes/code/ci/master/tree/remotes/streamzap/streamzap.lircd.conf as streamzap.lircd.conf
特定したら、必要な .conf を /etc/lirc/lircd.conf.d/
にコピーして、デーモンがそのサポートを初期化できるようにします。
# cp streamzap.lircd.conf /etc/lirc/lircd.conf.d/
リモート設定の作成
リモートコントロール設定は、ユーザーがプロセスをガイドする irrecord(1) を使用して作成できます。検出されたリモートを使用する場合は、次のように呼び出します。
# irrecord --device=/dev/lirc0 MyRemote
プログラムはユーザーにリモコンのキーを押して学習するよう指示し、最終的にすべてのボタンとそれに対応するスキャンコードをマッピングします。完了したら、結果のファイルを /etc/lirc/lircd.conf.d/foo.conf
に保存します。設定ファイルを他の人と共有することを検討してください。
アプリケーション固有のアクション
キーコードをアプリケーション固有のアクションにバインドするには、それぞれの設定ファイルを ~/.config/lircrc/
に配置します。必要に応じて手動で作成する必要があります。lircrc(5) を参照してください。これは、MPlayer、VLC、MythTV、totem などの LIRC 対応アプリケーションでのみ機能します (Kodi も LIRC をサポートしていますが、非対応-標準的な方法、Kodi#リモートコントロールの使用を参照してください。
これらのアプリケーション固有の設定を別のファイルで定義し、次のように lircrc に含めます。
include "~/.config/lircrc/mplayer" include "~/.config/lircrc/mythtv" include "~/.config/lircrc/vlc"
通常のユーザーとして実行する
デフォルトでは、lircd は root として実行されます。安定性とセキュリティを向上させるために、アップストリームでは通常のユーザーとして実行することをお勧めします。このリンクにある付録 14 を参照してください。
lirc-user-service の AUR パッケージを使用する
すべてを自動的に行う lirc-user-serviceAUR が提供されています。
テスト
lircd.service
を 起動/有効化 して下さい。
コマンドの受信
irw(1) を実行し、リモコンを受信機に向けていくつかのボタンを押します。受信したコードは標準出力に出力されます。
$ irw
000000037ff07bfe 00 One mceusb 000000037ff07bfd 00 Two mceusb 000000037ff07bfd 01 Two mceusb 000000037ff07bf2 00 Home mceusb 000000037ff07bf2 01 Home mceusb
irw
が出力を返さない場合:
- mode2 または xmode2 を実行して、LIRC が実際に IR センサーから何かを読み取ったかどうかを確認します。読み取っていない場合は、ハードウェアを確認してください
- mode2 がパルスデータを受信した場合は、
/etc/lirc/lircd.conf.d/
の設定ファイルにエラーがないか確認してください。
コマンドの送信
登録されているリモート (設定ファイル) をリストします。
$ irsend LIST "" ""
LG_6710CMAP01A
特定のデバイスで利用可能なコードをリストします:
$ irsend LIST LG_6710CMAP01A ""
0000000000007887 KEY_POWER 000000000000f807 KEY_MUTE 000000000000e817 KEY_VOLUMEUP ...
検出されたデバイス LG_6710CMAP01A
を選択し、コマンド KEY_POWER
を送信します。
$ irsend SEND_ONCE LG_6710CMAP01A KEY_POWER
トラブルシューティング
リモコンがキーボードとして機能する
Xorg を使用している場合
Streamzap USB PC Remote など、リモコンによっては Xorg によって Human Interface Device (HID) と認識されるものがあり、物理キーボードからの入力のようにキーの一部または全てがキーストロークとして認識されます。この挙動は LIRC でデバイスを管理しようとしたときに問題になります。
無効にするには、以下のファイルを作成して X を再起動してください:
/etc/X11/xorg.conf.d/90-streamzap.conf
Section "InputClass" Identifier "Ignore Streamzap IR" MatchProduct "Streamzap" MatchIsKeyboard "true" Option "Ignore" "true" EndSection
次のコマンドで得られる出力の Name
に合わせて MatchProduct
は適切に変更するようにしてください:
$ cat /proc/bus/input/devices | grep -e IR
例えば N: Name="cx88 IR (WinFast DTV2000 H rev."
の場合 WinFast
にします。
Xorg を使用していない場合
/etc/modprobed.d/streamzap.conf
を作成して問題を起こすモジュールをブラックリストに追加してください。例えば Streamzap のリモコンの場合:
install ir_sharp_decoder /bin/false install ir_xmp_decoder /bin/false install ir_rc5_decoder /bin/false install ir_nec_decoder /bin/false install ir_sony_decoder /bin/false install ir_mce_kbd_decoder /bin/false install ir_jvc_decoder /bin/false install ir_rc6_decoder /bin/false install ir_sanyo_decoder /bin/false
デフォルト設定を変更する
irw
で何も出力されない場合、/etc/lirc/lirc_options.conf
のデフォルト設定が原因である可能性があります (あるいはアップデートによって上書きされた可能性もあります)。
まず、/dev/lirc0
が存在するかどうか確認してください:
$ mode2 --driver default --device /dev/lirc0
リモコンのボタンを押してみて何か出力されないか確認してください。出力がある場合、/etc/lirc/lirc_options.conf
を編集して driver と device を適当な値に変更してください。
何も出力されない場合、適切なドライバーとデバイスの組み合わせを探します。最初に lirc がデフォルトでどの組み合わせを認識しているのか確認します。v4l-utils パッケージに含まれている ir-keytable
を実行して出力を確認してください。以下のように出力されます:
Found /sys/class/rc/rc0/ (/dev/input/event5) with: Driver ite-cir, table rc-rc6-mce Supported protocols: unknown other lirc rc-5 jvc sony nec sanyo mce-kbd rc-6 sharp xmp Enabled protocols: lirc Extra capabilities: <access denied>
上記の場合、lirc は /dev/input/event5
を赤外線デバイスとして自動的に認識して、devinput
ドライバーが使われています。以下のコマンドを実行することで組み合わせが正しいか確認します:
$ mode2 --driver devinput --device /dev/input/event5
リモコンのボタンを押してみてください。何も出力されない場合、別のドライバーとデバイスの組み合わせを試してみてください。機能する組み合わせを発見したら、/etc/lirc/lirc_options.conf
の driver と device を変更してください。
サンプル
MCE RC6 互換レシーバの設定例:
/etc/lirc/lirc_options.conf
[lircd] nodaemon = False driver = default device = /dev/lirc0 output = /var/run/lirc/lircd pidfile = /var/run/lirc/lircd.pid plugindir = /usr/lib/lirc/plugins permission = 666 allow-simulate = No repeat-max = 600 [lircmd] uinput = False nodaemon = False