Raspbian Strech LiteにLazuriteをインストール
2019-05-31

Raspberry Piのカーネルの中で、LITE版のカーネルファイルをご存知でしょうか?
デスクトップ環境が含まれておらず冒頭の写真の様なコンソール画面でしか操作できないため、普通のコンピュータのように使用するのには不便な環境なのですが、ファイルサイズが非常に小さいく、パッケージソフトがほとんどインストールされていないため、画面無しで使用するのに適したカーネルイメージです。
Raspberry PiをLazuriteの無線のゲートウェイ(中継機)として使用したいという場合には最適なパッケージで、実は稼働モニタリングシステムでは、このパッケージを利用しています。
今回はLITE版にNode-REDをインストールしてLazuriteが使用できるまでを紹介したいと思います。
Raspberry Piの公式サイトのこちらがLITE版になります。
このカーネルファイルをダウンロードしてRaspberry Piを起動するとこのようになります。
起動時の画面:
ログインIDとパスワード:
ID | pi |
password | raspberry |
でログインすることができます。
- はじめに
頑張ってインターネットにつなげてください。Wi-Fiの環境設定、パスワードの変更、ロケーションの変更などを行ってください。”sudo raspi-config”のコマンドを入力すると、設定画面が開くので、そこで設定をすることができます。(インターネット上にたくさんの情報がありますので、この詳細は割愛します。)
[code language=”bash”]
sudo raspi-config
[/code]
※ここから下の作業は、ブログ作成用に日本語環境が使用できるPCからリモートログインで作業しています。本体で操作をする場合は、キーボードの設定、言語環境の設定等を行ってください。raspi-configのメニューから設定できます。Localization Optionsから設定をすることができます。 |
- Lazuriteの無線モジュールを制御するために使用するインタフェースの設定を行います。
では、早速開始していきます。改めて、raspi-configからSPIとI2Cを利用できるような設定を行ってください。
Interfacing Optionsを選択します。
I2CとSPIをそれぞれ有効にします。
3. カーネルファイルのupdateとupgradeを行います。
[code language=”bash”]
sudo apt-get update
sudo apt-get upgrade
[/code]
終了したら必ずリスタートしてください。
[code language=”bash”]
sudo reboot
[/code]
4.gitコマンドのインストール
[code language=”bash”]
sudo apt-get install git
[/code]
5. LazuriteInstallerの取得
[code language=”bash”]
pi@raspberrypi:~ $ git clone git://github.com/LAPIS-Lazurite/LazuriteInstaller
Cloning into ‘LazuriteInstaller’…
remote: Enumerating objects: 3, done.
remote: Counting objects: 100% (3/3), done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 108 (delta 0), reused 1 (delta 0), pack-reused 105
Receiving objects: 100% (108/108), 21.09 KiB | 0 bytes/s, done.
Resolving deltas: 100% (48/48), done.
[/code]
6. setup.shの実行
setup.shは、必要なパッケージファイルのインストール、Raspberry Piのlinuxカーネルファイルのダウンロード、Raspberry PiのIOを使用するために必要なdtbファイルの作成(device-tree)のビルド、といった手順で作業をしていくスクリプトになっています。
[code language=”bash”]
pi@raspberrypi:~/LazuriteInstaller $ ./setup.sh
パッケージリストを読み込んでいます… 完了
依存関係ツリーを作成しています
状態情報を読み取っています… 完了
git はすでに最新バージョン (1:2.11.0-3+deb9u4) です。
以下の追加パッケージがインストールされます:
libbison-dev libfl-dev libsigsegv2 libssl-doc m4
提案パッケージ:
bison-doc m4-doc
以下のパッケージが新たにインストールされます:
bc bison flex libbison-dev libfl-dev libsigsegv2 libssl-dev libssl-doc m4
….. 中略 ….
DTC arch/arm/boot/dts/bcm2837-rpi-3-b-plus.dtb
DTC arch/arm/boot/dts/bcm2835-rpi-zero.dtb
DTC arch/arm/boot/dts/bcm2835-rpi-zero-w.dtb
[/code]
作成したDTBファイルを有効にするため、Raspberry Piを再起動してください。
[code]
sudo reboot
[/code]
7. install.shを実行します。
[code language=”bash”]
sudo reboot
再起動後…
cd LazuriteInstaller
./install.sh
[/code]
JAVAやrubyなどはソフトウエアがインストールされていないのでエラーが出ますが、Node-REDを使用するだけなら、この2つのファイルが完成していれば使用できます。
/home/pi/driver/LazDriver/lazdriver.ko
/usr/lib/liblazurite.so
一応、動作を確認するために、ローダブルカーネルモジュールの操作をして、ログを確認します。
sudo insmod driver/LazDriver/lazdriver.ko | 920MHz無線のドライバをロードします。 |
sudo rmmod lazdriver | ドライバをリムーブします。 |
tail -n 10 /var/log/syslog | ドライバのロードとリムーブのログを表示します。 |
以下のように、920MHz無線のMACアドレスが正しく読めて、「exit remove」まで正しく動作していれば、ローダブルカーネルモジュールのコンパイルは成功です。
正常に動作していない場合はこちらを御覧ください。
[code language=”bash”]
pi@raspberrypi:~ $ sudo insmod driver/LazDriver/lazdriver.ko
pi@raspberrypi:~ $ sudo rmmod lazdriver
pi@raspberrypi:~ $ tail -n 10 /var/log/syslog
May 30 19:35:57 raspberrypi kernel: [ 664.284438] [HAL] lzpi_rf_main_th thread start pid=1630
May 30 19:35:57 raspberrypi kernel: [ 664.284584] [HAL] lzpi_rx_led_thr thread start pid=1631
May 30 19:35:57 raspberrypi kernel: [ 664.284683] [HAL] lzpi_tx_led_thr thread start pid=1632
May 30 19:35:57 raspberrypi kernel: [ 664.287227] Lazurite MAC address: 001d 1290 0004 c230
May 30 19:35:57 raspberrypi kernel: [ 664.287236] [drv-lazurite] End of init
May 30 19:36:02 raspberrypi kernel: [ 669.368752] [HAL] rf_main_thread thread end
May 30 19:36:02 raspberrypi kernel: [ 669.368821] [HAL] tx_led_thread thread end
May 30 19:36:02 raspberrypi kernel: [ 669.368934] [HAL] rx_led_thread thread end
May 30 19:36:02 raspberrypi kernel: [ 669.379035] spi_remove
May 30 19:36:02 raspberrypi kernel: [ 669.379402] [drv-lazurite] exit remove
pi@raspberrypi:~ $
[/code]
8.Node-REDのインストール
こちらのページに書かれているコマンドでNode-REDをインストールします。
途中で、本当に実行してよいか、raspberry pi固有のノードをインストールするするか聞かれるので、yesを入力していきます。
[code language=”bash”]
pi@raspberrypi:~ $ bash <(curl -sL https://raw.githubusercontent.com/node-red/raspbian-deb-package/master/resources/update-nodejs-and-nodered)
[/code]
インストール中…
インストールしてNode-REDを起動
[code language=”bash”]
pi@raspberrypi:~ $ node-red
[/code]
これで無事にNode-REDのインストールと、Lazuriteのドライバがインストールできたはずです。あとは、Node-REDからnode-red-contrib-lazuriteのインストールを行ってください。
(おまけ)トラブルシューティング
lazdriver.koが正しくできていない場合
2つのケースが考えられます。
① raspberry piのカーネルバージョンが古い
この場合は、カーネルファイルのビルド時に “timer_setup …”といったメッセージが表示されます。
この場合は、次のパッチコマンドでソースコードを旧バージョンに戻してからビルドしてください。
[code language=”bash”]
#フォルダの移動
cd ~/driver/LazDriver
# パッチを当てて旧バージョンに戻す
patch -u hwif/hal-lzpi.c &lt; hal-lzpi.patch;
# ローダブルカーネルモジュールのビルド
make
[/code]
② sudo apt-get upgradeをしたあとに再起動しなかった
その時はこのようなワーニングメッセージが出ます。
[code language=”bash”]
pi@raspberrypi:~/driver/LazDriver $ make
echo drv-lazurite.c subghz_api.c aes/aes.c mach.c arib_lazurite.c macl.c phy/phy_ml7396.c hwif/hal-lzpi.c hwif/random-lzpi.c hwif/spi-lzpi.c hwif/i2c-lzpi.c
drv-lazurite.c subghz_api.c aes/aes.c mach.c arib_lazurite.c macl.c phy/phy_ml7396.c hwif/hal-lzpi.c hwif/random-lzpi.c hwif/spi-lzpi.c hwif/i2c-lzpi.c
make -C /lib/modules/4.19.42-v7+/build SUBDIRS=/home/pi/driver/LazDriver modules
make[1]: *** /lib/modules/4.19.42-v7+/build: そのようなファイルやディレクトリはありません. 中止.
Makefile:32: ターゲット ‘all’ のレシピで失敗しました
make: *** [all] エラー 2
[/code]
その場合は、linuxのカーネルバージョンに対応したソースコードが”/lib/modules”に無いのが原因です。
[code language=”bash”]
pi@raspberrypi:~/driver/LazDriver $ cd /lib/modules/
pi@raspberrypi:/lib/modules $ ls
4.19.42+ 4.19.42-v7+
pi@raspberrypi:/lib/modules $ uname -r
4.19.42-v7+
pi@raspberrypi:/lib/modules $
[/code]
その場合は、以下のように
[code language=”bash”]
#カーネルバージョンに対応したソースコードのフォルダを作成
pi@raspberrypi:/lib/modules $ sudo mkdir 4.19.42-v7+
pi@raspberrypi:/lib/modules $ cd 4.19.42-v7+
#sorceとbuildのシンボリックリンクを作成
pi@raspberrypi:/lib/modules/4.19.42-v7+ $ sudo ln -s /home/pi/linux source
pi@raspberrypi:/lib/modules/4.19.42-v7+ $ sudo ln -s /home/pi/linux build
#sorceとbuildのシンボリックリンクの確認
pi@raspberrypi:/lib/modules/4.19.42-v7+ $ ls -l
合計 0
lrwxrwxrwx 1 root root 14 5月 30 20:10 build -&amp;gt; /home/pi/linux
lrwxrwxrwx 1 root root 14 5月 30 20:10 source -&amp;gt; /home/pi/linux
#lazdriverのビルド
pi@raspberrypi:/lib/modules/4.19.42-v7+ $ cd ~/driver/LazDriver
pi@raspberrypi:/lib/modules/4.19.42-v7+ $ make
[/code]
ビルドはできたがログメッセージがグチャグチャになっている場合
2.の作業を忘れた、3. の作業に失敗した、といった可能性があります。
あらためて、2.と3.の作業をやり直してください。