×

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

でログインすることができます。

  1. はじめに

頑張ってインターネットにつなげてください。Wi-Fiの環境設定、パスワードの変更、ロケーションの変更などを行ってください。”sudo raspi-config”のコマンドを入力すると、設定画面が開くので、そこで設定をすることができます。(インターネット上にたくさんの情報がありますので、この詳細は割愛します。)

sudo raspi-config
※ここから下の作業は、ブログ作成用に日本語環境が使用できるPCからリモートログインで作業しています。本体で操作をする場合は、キーボードの設定、言語環境の設定等を行ってください。raspi-configのメニューから設定できます。Localization Optionsから設定をすることができます。
  1. Lazuriteの無線モジュールを制御するために使用するインタフェースの設定を行います。

では、早速開始していきます。改めて、raspi-configからSPIとI2Cを利用できるような設定を行ってください。

Interfacing Optionsを選択します。

I2CとSPIをそれぞれ有効にします。

 

3. カーネルファイルのupdateとupgradeを行います。


sudo apt-get update
sudo apt-get upgrade

終了したら必ずリスタートしてください。

sudo reboot

 

4.gitコマンドのインストール

sudo apt-get install git

 

5. LazuriteInstallerの取得

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.

6. setup.shの実行

setup.shは、必要なパッケージファイルのインストール、Raspberry Piのlinuxカーネルファイルのダウンロード、Raspberry PiのIOを使用するために必要なdtbファイルの作成(device-tree)のビルド、といった手順で作業をしていくスクリプトになっています。


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


作成したDTBファイルを有効にするため、Raspberry Piを再起動してください。

sudo reboot

7. setup.shを実行します。


sudo reboot

再起動後...

cd LazuriteInstaller

./install.sh

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」まで正しく動作していれば、ローダブルカーネルモジュールのコンパイルは成功です。

正常に動作していない場合はこちらを御覧ください。

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:~ $ 

 

8.Node-REDのインストール

こちらのページに書かれているコマンドでNode-REDをインストールします。

途中で、本当に実行してよいか、raspberry pi固有のノードをインストールするするか聞かれるので、yesを入力していきます。

pi@raspberrypi:~ $ bash <(curl -sL https://raw.githubusercontent.com/node-red/raspbian-deb-package/master/resources/update-nodejs-and-nodered)

インストール中…

インストールしてNode-REDを起動


pi@raspberrypi:~ $ node-red

これで無事にNode-REDのインストールと、Lazuriteのドライバがインストールできたはずです。あとは、Node-REDからnode-red-contrib-lazuriteのインストールを行ってください。

 

(おまけ)トラブルシューティング

lazdriver.koが正しくできていない場合

2つのケースが考えられます。

① raspberry piのカーネルバージョンが古い

この場合は、カーネルファイルのビルド時に “timer_setup …”といったメッセージが表示されます。

この場合は、次のパッチコマンドでソースコードを旧バージョンに戻してからビルドしてください。

#フォルダの移動
cd ~/driver/LazDriver
# パッチを当てて旧バージョンに戻す
patch -u hwif/hal-lzpi.c &amp;lt; hal-lzpi.patch;
# ローダブルカーネルモジュールのビルド
make

② sudo apt-get upgradeをしたあとに再起動しなかった

その時はこのようなワーニングメッセージが出ます。


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


その場合は、linuxのカーネルバージョンに対応したソースコードが”/lib/modules”に無いのが原因です。

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 $ 

その場合は、以下のように


#カーネルバージョンに対応したソースコードのフォルダを作成
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;amp;gt; /home/pi/linux
lrwxrwxrwx 1 root root 14 5月 30 20:10 source -&amp;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

ビルドはできたがログメッセージがグチャグチャになっている場合

2.の作業を忘れた、3. の作業に失敗した、といった可能性があります。

あらためて、2.と3.の作業をやり直してください。