はじめに
2021年11月時点で、kernel 4.19以降が搭載された Raspbaian Stretch ではそのままではlircは動作しません。 Raspberry Pi OS Buster や Raspberry Pi OS Bullseye では簡単に lirc を利用できるよう改善されております。以下で解説していますので、そちらを利用することを推奨します。本ページは、それでもあえて「kernel 4.19以降が搭載されたRaspbaian Stretch」で lirc を利用したい、という方ための情報をまとめます。
kernel 4.19を搭載したRaspbian Stretchでlircを動作させるには、lircに kernel 4.19 用の変更(正確にはドライバであるgpio-ir用の変更)を加えてビルドしなおす必要があります。
その変更案を考え、こちらのフォーラムで紹介してきましたが、まとまってきたのでここに記します。
インストール前の準備
まず、aptコマンドでlircをインストールした方は、そのlircは動作しませんので、下記のコマンドで一旦削除します。sudo apt remove liblirc0 liblircclient0 lirc次に、以下の3つのコマンドを一つずつ順に実行し、lircをビルドする環境を作ります。
sudo su -c "grep '^deb ' /etc/apt/sources.list | sed 's/^deb/deb-src/g' > /etc/apt/sources.list.d/deb-src.list" sudo apt update sudo apt install devscripts
インストール (Raspbian Stretch + kernel 4.19の場合)
kernel 4.19が搭載されたRapsbian Stretchの場合は下記の10コマンドをひとつずつ順に実行してlircをビルドおよびインストールします。sudo apt build-dep lirc mkdir build cd build apt source lirc wget https://raw.githubusercontent.com/neuralassembly/raspi/master/lirc-gpio-ir.patch patch -p0 -i lirc-gpio-ir.patch cd lirc-0.9.4c debuild -uc -us -b cd .. sudo apt install ./liblirc0_0.9.4c-9_armhf.deb ./liblirc-client0_0.9.4c-9_armhf.deb ./lirc_0.9.4c-9_armhf.debなお、このインストールが終わった後、OSのアップデートをすると、対策済lircが対策なしlircで上書きインストールされます。
そのため、liblirc0_0.9.4c-9_armhf.deb、liblirc-client0_0.9.4c-9_armhf.deb、lirc_0.9.4c-9_armhf.deb の3ファイルを保存しておき、必要に応じて最後のコマンドでインストールし直すのが良いでしょう。その場合、冒頭のlircを削除するコマンドで対策なしlircを事前に削除する必要があるかもしれませんのでご注意ください。
インストール後の設定 (Raspbian Stretch + kernel 4.19の場合)
さて、インストール後の設定を本書の流れに即して解説すると以下のようになります。- /etc/modulesへの編集 (p.142): 今回の方法では/etc/modulesを編集する必要はありません。
- /boot/config.txtへのdtoverlayの追加 (p.142~p.143): まず、下記のコマンドで /boot/config.txt を編集用に開きます。
sudo leafpad /boot/config.txt
なお、NOOBS 3.2.1 (Raspbian 2019-09-26) 以降ではテキストエディタとしてleafpadではなくmousepadを用います。sudo mousepad /boot/config.txt
そして、「#dtoverlay=gpio-ir-tx,gpio_pin=18」または「#dtoverlay=lirc-rpi」という行を見つけ、その次の行に下記を追記してから保存してleafpadを閉じます。dtoverlay=gpio-ir,gpio_pin=24 dtoverlay=gpio-ir-tx,gpio_pin=25
次に、下記のコマンドをターミナルで実行し、設定ファイル /etc/lirc/lirc_options.conf を管理者権限のleafpadで開きます。
sudo leafpad /etc/lirc/lirc_options.confなお、NOOBS 3.2.1 (Raspbian 2019-09-26) 以降ではテキストエディタとしてleafpadではなくmousepadを用います。
sudo mousepad /etc/lirc/lirc_options.conf開いたファイルの中に、下記の2行があるのを見つけてください。
driver = devinput device = autoこれを、irrecordを用いてリモコン信号を学習させる場合は以下のように編集し、編集が終わったら保存してleafpadを終了してください。
driver = default device = /dev/lirc1なお、今回の方法ではirsendを用いて信号を送信する場合は/etc/lirc/lirc_options.conf の上記の行を下記のように変更しなければなりません。演習後半でirsendコマンドを使うときはこれを忘れないよう注意してください。
driver = default device = /dev/lirc0以上で設定は終わりですので、Raspberry Piを再起動します。/etc/lirc/lirc_options.confを保存した場合は、Raspberry Piを再起動が必要です。
irrecordの実行
irrecord の場合は、上で注意したように /etc/lirc/lirc_options.conf の device 行が /dev/lirc1 に設定されていなければなりませんので注意してください。そして、引き続きターミナルでirrecordを実行するのですが、その際のコマンド (p.145) は、下記のように末尾の「TV」をつけずに実行してください。
irrecord -nその後、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.なお、途中で「ボタンの名前をキーボードで入力し、ボタンを押す」というプロセスがあります。このときはボタンの押す長さをやや長め(1秒程度)とすると成功しやすいでしょう。
irrecordの終了後、書籍では「TV」というファイルに設定が保存されましたが、現在は TV.lircd.confという名前のファイルが生成されます。
次に、ターミナルで下記のファイルを実行し、ファイルを移動します。ファイルの移動先も変更を受けています。
sudo mv TV.lircd.conf /etc/lirc/lircd.conf.d/irsend を試す場合は、上で注意したように /etc/lirc/lirc_options.conf の device 行を /dev/lirc0 に変更しなければならないので注意してください。 そしてRaspberry Piを再起動するとLIRCが再び起動し、irsendコマンドが実行できるようになります。
なお、「ps ax |grep lircd」で LIRC の実行状況を確認した際、このバージョンの LIRC で表示されるメッセージは p.156 に示した旧バージョンの LIRC の表示とは異なりますのでご注意ください。 「 /usr/sbin/lircd 」という表示が見えれば LIRC が正常動作していると考えてよいと思います。
それ以降は書籍と同じです。
0 件のコメント:
コメントを投稿