2019年6月26日水曜日

kernel 4.14までを搭載したRaspiban Stretchでlircを利用する

はじめに

OSのベースのバージョンがStretchになったRaspbianではLIRCのバージョンが上がり、 その設定方法が書籍から若干変更されています。ここでは、その変更点をまとめていきます。

なお、この方法は kernel 4.14まででは動作しますが、kernel 4.19以降では動作しません。 aptコマンドでOSをアップデートするとkernel 4.19になってしまいこの方法では動作しなくなります。

整理すると、ここで解説する方法は「2019年4月にリリースされたNOOBS 3.0.1 (Raspbian 2019-04-08) およびそれ以前のバージョンをOSアップデートせずに利用する場合」にのみ動作します

それより新しいOSを用いた場合の方法は、以下のうち該当する方を参考にしてください。
  1. Raspberry Pi OS Buster / Bullseye でlircを利用する
  2. kernel 4.19以降を搭載したRaspiban Stretchでlircを利用する

インストール

さて、「2019年4月にリリースされたNOOBS 3.0.1 (Raspbian 2019-04-08) およびそれ以前のバージョンをOSアップデートせずに利用する場合」の設定を本書の流れに即して解説すると以下のようになります。
  • LIRCのインストール (p.141): 下記の2つのコマンドを一つずつ順に実行します。
    sudo apt update
    sudo apt install lirc
  • /etc/modulesへの lirc_dev の追加 (p.142): まず、下記のコマンドで /etc/modules を編集用に開きます。
    sudo leafpad /etc/modules
    そして、末尾に「lirc_dev」を書き加えてから保存してleafpadを閉じます。
  • /boot/config.txtへのdtoverlayの追加 (p.142~p.143): まず、下記のコマンドで /boot/config.txt を編集用に開きます。
    sudo leafpad /boot/config.txt
    そして、「#dtoverlay=lirc-rpi」という行を見つけ、その次の行に下記を追記してから保存してleafpadを閉じます。
    dtoverlay=lirc-rpi,gpio_in_pin=24,gpio_out_pin=25
次に、p.143末尾からの /etc/lirc/hardware.conf の編集ですが、このファイルは存在しませんので、 以下の設定に差し替えます。 まず、下記のコマンドをターミナルで実行し、設定ファイル /etc/lirc/lirc_options.conf を管理者権限のleafpadで開きます。
sudo leafpad  /etc/lirc/lirc_options.conf 
開いたファイルの中に、下記の2行があるのを見つけてください。
driver          = devinput
device          = auto
これを、以下のように編集し、編集が終わったら保存してleafpadを終了してください。
driver          = default
device          = /dev/lirc0
さらに、設定ファイル中に不要なファイルがあるので、ターミナルで下記の2つのコマンドを一つずつ順に実行し、 名前を変更します。
cd /etc/lirc/lircd.conf.d/
sudo mv devinput.lircd.conf devinput.lircd.conf.dist
以上で設定は終わりですので、Raspberry Piを再起動します。

irrecordの実行

次に、irrecordの実行です。Raspbian Stretch 以降では、この時点でLIRCが起動しています。さらに、LIRCが起動した状態でirrecordを実行するとエラーがでます。そのため、irrecordを実行するときは、ターミナルで下記のコマンドを実行し、LIRCを停止します。
sudo service lircd stop
そして、引き続きターミナルでirrecordを実行するのですが、その際のコマンド (p.145) は、下記のように末尾の「TV」をつけずに実行してください。
irrecord -n -d /dev/lirc0
その後、p.147からのリモコンの学習に移るのですが、開始時の手順が若干変更されています。
まず、下記のメッセージが出るので一回Enterキーを押します。
(略)
Please take the time to finish the file as described in
https://sourceforge.net/p/lirc-remotes/wiki/Checklist/ an send it
to  <lirc@bartelmus.de> so it can be made available to others.

Press RETURN to continue.
すると、下記のように光の状態のチェックに入りますので、終わるまで数秒待ちます。
Checking for ambient light  creating too much disturbances.
Please don't press any buttons, just wait a few seconds...
チェックが終わったら、下記のメッセージが現れますので、ここで「TV」を入力し、Enterキーを押してください。
Enter name of remote (only ascii, no spaces) :
つまり、こうですね。
Enter name of remote (only ascii, no spaces) :TV
すると、下記のようにもう一度Enterキーを押すことを促されます。これが、p.147末尾の「2度目の[Enter]キー」に該当しますので、Enterキーを押し、その後p.148の指示に従って様々なボタンを繰り返し押して行ってください。
It is very important that you press many different buttons randomly
and hold them down for approximately one second. Each button should
generate at least one dot but never more than ten dots of output.
Don't stop pressing buttons until two lines of dots (2x80) have
been generated.

Press RETURN now to start recording.
p.154までは書籍の指示通りで構いません。

なお、ピリオド文字「.」が画面を2行分埋め尽くすまでリモコンのボタンを押し続けるステップで、1行目と2行目の間に下記のメッセージが出ることがあります。
Cannot find any gap, using an arbitrary 50 ms one. If you have a
regular remote for e. g., a TV or such this is probably a point
where you hit control-C. However, technical hardware like air
condition gear often works without any gap. If you think it's
reasonable that your remote lacks gap you can proceed.
Press RETURN to continue.
これは「信号のギャップを見つけられない」というエラーを示しています。 この場合、そのまま作業を続けてもリモコンの認識に失敗しますので、一旦キーボードで「Ctrl-c」を入力してirrecordを終了してください。

そして、部屋の照明の状態の変更(日光が部屋に入らないようにしたり、蛍光灯の状態を変えたり)を行うか、 赤外線受信モジュールとリモコンの位置関係を変えるなど、実験環境を変えて再チャレンジしてください。 ピリオド文字「.」の1行目と2行目の間に上記エラーが出ない状態を実現して演習を継続するようにしてください。

ピリオド文字「.」の1行目と2行目の間のメッセージが下記のようになっていれば正常なので、そのまま継続してください。
Got gap (XXXXX us)

Please keep on pressing buttons like described above.
irrecordの終了後、書籍では「TV」というファイルに設定が保存されましたが、Raspbian Stretch 以降では、TV.lircd.confという名前のファイルが生成されます。

次に、ターミナルで下記のファイルを実行し、ファイルを移動します。ファイルの移動先も変更を受けています。
sudo mv TV.lircd.conf /etc/lirc/lircd.conf.d/
そしてRaspberry Piを再起動するとLIRCが再び起動し、irsendコマンドが実行されるようになります。それ以降は書籍と同じです。

0 件のコメント:

コメントを投稿