Raspberry Piでお遊び。
はじめに
手元に発掘されたRasPIをつかって、"こそっと"ちいさな思い付きを実行しようと考えてます。
- ちょっとだけ新しいことをやる。
- API叩いて色々と
- ヘルスケア関連をまとめたい
- 環境情報の収集と制御
できる未来
- まぁ、あと10年は平和に生きたい。体調と環境関連でなんかできないか?
- 仮想通貨とか面白い。色々試したい。儲かるとGood!
- サーバ(ってほどでもないけど)管理系とかすっかり忘れてるので
Raspberry Pi 2B+以外も入手したのでタイトルを変えた。
環境
- Raspberry Pi 2B+
- tp-link TL-WN725N (Wi-Fi)
- tp-link UB400 (Bluetooth)
- (SDCard)
OS
Network設定
tp-link TL-WN725N (Wi-Fi)
- USBデバイスの確認
$ lsusb
Bus 001 Device 004: ID 0bda:8179 Realtek Semiconductor Corp. RTL8188EUS 802.11n Wireless Network Adapter
(ほか省略)
- WiFiデバイスの確認
$ iwconfig
wlan0 unassociated Nickname:"<WIFI@REALTEK>"
Mode:Managed Frequency=2.412 GHz Access Point: Not-Associated
Sensitivity:0/0
Retry:off RTS thr:off Fragment thr:off
Power Management:off
Link Quality:0 Signal level:0 Noise level:0
Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive retries:0 Invalid misc:0 Missed beacon:0
lo no wireless extensions.
eth0 no wireless extensions.
本体はデバイスを認識してる事がわかる。
- ネットワーク設定を編集
$ sudo vi /etc/network/interfaces
以下を追加
auto wlan0
allow-hotplug wlan0
iface wlan0 inet manual
wireless-essdid <SSID ステルスの場合>
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
- Wifi設定
コマンドで設定値を知る。
wpa_passphrase <接続先のSSID> <パスワード>
$ wpa_passphrase "SSID" "パスワード"
network={
ssid="SSID"
#psk="パスワード"
psk=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
}
この情報を次のファイルに追加する。
$ sudo vi /etc/wpa_supplicant/wpa_supplicant.conf
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
ssid="SSID"
psk="パスワード"
proto=RSN
key_mgmt=WPA-PSK
priority=2
}
パスワードの部位はwpa_passphrase でえられる値(HASH値)を使える。こちらのほうが安全。
priority=2にしているのは、有線LAN接続の場合はそちらを優先にするため。
WIFIに接続して通信ができているはずです。
tp-link UB400 (Bluetooth)
(未設定)
ホスト名を解決する。
このままではDHCPで動的にIPが振られるだけで、他端末から接続するのに苦労する。
基本ssh接続だしね。
そこで、他端末からも参照できるようにホスト名でアクセスできるよういしたい。
デフォルトホスト名を変更する。
デフォルトは、”raspberrypi”です。
これを好きなホスト名に変更する。
変更するのは以下のファイル。
/etc/hostname
/etc/hosts
avahi-daemonのインストール
sudo apt-get install avahi-daemon
いわゆるBonjour /Zeroconfですね。
Macでは問題なくホスト名が参照できます。
Windowsでは多少設定設定が必要です。私の場合はiTunesをインストールして、FW設定をちょっと変えて対応しています。(メモなし)
結果
ホスト名をpi01とした場合
他の対応ホストからは、pi01.localという名称で見えるはずです。
Windowsの場合は.localを省略しても繋がります(仕様??)
例
$ ssh pi@pi01.local
別のセグメントへの接続に変更しているので、繋がらない。セグメント越える方法を探す。
追記
いつのまにかlite版でもデフォルトでインストールされるようになってますね。
デフォルトホスト名はraspberrypi
。これを都合に合わせて修正するだけ。
儲けられるか実験(1)仮想通貨マイニング
色々探してみたけど簡単そうなのでこれです。
ここを参考にしています。
問題なく機能しているみたいですが、全く掘れてない(泣)
Python v3.6をインストールしてみる。
入っていたのは
$ python -V
Python 2.7.16
$ python3 -V
Python 3.7.3
これを参考に。
とりあえすビルドツールをインストール$ sudo apt-get update
$ sudo apt-get install build-essential tk-dev libncurses5-dev libncursesw5-dev libreadline6-dev libdb5.3-dev libgdbm-dev libsqlite3-dev libssl-dev libbz2-dev libexpat1-dev liblzma-dev zlib1g-dev
ソースコード
サンプルのより新しいv3.6.7かなと。$ wget https://www.python.org/ftp/python/3.6.7/Python-3.6.7.tar.xz
$ tar xf Python-3.6.7.tar.xz
$ cd Python-3.6.7/
$ ./configure
$ make
$ sudo make altinstall
動作確認
$ python3.6 -V
Python 3.6.7
うまくいったようだ。
自宅ネットワーク改善計画に伴い
- ネットワーク監視系の機能を考えよう。
- ダッシュボード的なこと。
- 親セグメントのnameとか作れると良いかも。
- RPiが古い(遅い)ので他機器考えなければならないかも・
SDCardのbackup/restore
ZABBIXの導入で容量的に不安です。
そんな訳で16GBのSDCardを手持ちの64GBに変更すべく、まずはbackupを。
Windowsで作業するのは簡単そうだけど
結論から言うと、Card Readerがダメなのか、俺の環境ではうまく機能しなかった。
でもまぁ一般的にはこれで事足りるみたい。
MacでBackup
dd
コマンド久々すぎて忘れてしまっていたけど。
SDCardを挿してからとりあえずmountの状態確認
$ diskutil list
/dev/disk0 (internal, physical):
#: TYPE NAME SIZE IDENTIFIER
0: GUID_partition_scheme *500.3 GB disk0
1: EFI EFI 314.6 MB disk0s1
(省略)
/dev/disk2 (external, physical):
#: TYPE NAME SIZE IDENTIFIER
0: FDisk_partition_scheme *15.7 GB disk2
1: Windows_FAT_32 boot 268.4 MB disk2s1
2: Linux
/dev/disk2
がSDCardだとわかる。これをunmountする。
$ diskutil unmountDisk /dev/disk2
Unmount of all volumes on disk2 was successful
あとはddコマンドです。
dd if=<Backup対象のDisk> of=<イメージファイル名> bs=1m
$ sudo dd if=/dev/disk2 of=backup.img bs=1m
Password:
MacでRestore
新しいSDCardを挿して、unmountまでは同じ手順。
dd if=<イメージファイル名> of=<SDCardのdevice> bs=1m
$ dd if=backup.img of=/dev/disk2 bs=1m
めっちゃ時間かかる。
この場合/dev/rdisk2
という具合にr
をつけると早くなるしい。
参考
ファームウェア
とりあえず、アップデートしてみようと思う。
Package をアップデート
$ sudo apt update
$ sudo apt upgrade
$ sudo apt dist-upgrade
ファームウエアのアップデート
$ sudo rpi-update
再起動
$ sudo reboot
更新の確認
$ vcgencmd version
2B+をUSBブートにする。
/boot/conofig.txtに設定を追加
$ echo "program_usb_boot_mode=1" | sudo tee -a /boot/config.txt
program_usb_boot_mode=1
$ echo "program_usb_boot_timeout=1" | sudo tee -a /boot/config.txt
program_usb_boot_timeout=1
再起動する。
$ sudo reboot
これでUSBdeviceからブートするはず。
参考
結果
うまくいっていない。ううむ...
どうもH/Wには'PCB Revision`というものがあるらしく、2B+ はRev1.2からこれら方法でUSBブートができるらしい。そんでもって調べた。
cpuinfoのRevision
から
$ cat /proc/cpuinfo | grep Revision
Revision : a01041
bit単位で解釈できるらしく。面倒だと思っていたけど見つけてしまった。
ううむ、Rev1.1か。
残念。
RPi 2B+ tuning
手持ちの2B+がUSBブート不可だと分かったのでSDCardの延命化に取り組み始めることに。
swapを無効化する。
$ sudo swapoff --all
$ sudo systemctl stop dphys-swapfile
$ sudo systemctl disable dphys-swapfile
確認
$ free
total used free shared buff/cache available
Mem: 945372 333772 232836 31864 378764 523160
Swap: 0 0 0
swapが0になった。
Bluetooth
使わないので落とす。
$ sudo systemctl stop hciuart.service
$ sudo systemctl stop bluealsa.service
$ sudo systemctl stop bluetooth.service
自動起動も
$ sudo systemctl disable hciuart.service
$ sudo systemctl disable bluealsa.service
$ sudo systemctl disable bluetooth.service
Wifi
これも結局使ってないので落とす。
$ sudo iwconfig wlan0 txpower off
$ sudo iwconfig wlan0 txpower auto
2B+では意味なかったけど。(内蔵してないからかな)
ログ保存
これも減らす。
/etc/rsyslog.conf
(途中省略)
###############
#### RULES ####
###############
#
# First some standard log files. Log by facility.
#
auth,authpriv.* /var/log/auth.log
*.*;auth,authpriv.none -/var/log/syslog
#cron.* /var/log/cron.log
#daemon.* -/var/log/daemon.log
#kern.* -/var/log/kern.log
#lpr.* -/var/log/lpr.log
#mail.* -/var/log/mail.log
#user.* -/var/log/user.log
#
# Logging for the mail system. Split it up so that
# it is easy to write scripts to parse these files.
#
#mail.info -/var/log/mail.info
#mail.warn -/var/log/mail.warn
#mail.err /var/log/mail.err
#
# Some "catch-all" log files.
#
#*.=debug;\
# auth,authpriv.none;\
# news.none;mail.none -/var/log/debug
*.=info;*.=notice;*.=warn;\
auth,authpriv.none;\
cron,daemon.none;\
mail,news.none -/var/log/messages
#
# Emergencies are sent to everybody logged in.
#
*.emerg :omusrmsg:*
起動しているタスク分もあるけど...
tmpフォルダ の RAMディスク化
状況を確認
$ df -h
ファイルシス サイズ 使用 残り 使用% マウント位置
/dev/root 15G 3.9G 9.7G 29% /
devtmpfs 430M 0 430M 0% /dev
tmpfs 462M 0 462M 0% /dev/shm
tmpfs 462M 18M 444M 4% /run
tmpfs 5.0M 4.0K 5.0M 1% /run/lock
tmpfs 462M 0 462M 0% /sys/fs/cgroup
/dev/mmcblk0p1 253M 49M 205M 20% /boot
tmpfs 93M 0 93M 0% /run/user/1000
/etc/fstab に追加。
tmpfs /tmp tmpfs defaults,size=32m 0 0
tmpfs /var/tmp tmpfs defaults,size=16m 0 0
再起動すると
$ df -h
ファイルシス サイズ 使用 残り 使用% マウント位置
/dev/root 15G 3.9G 9.7G 29% /
devtmpfs 430M 0 430M 0% /dev
tmpfs 462M 0 462M 0% /dev/shm
tmpfs 462M 6.2M 456M 2% /run
tmpfs 5.0M 4.0K 5.0M 1% /run/lock
tmpfs 462M 0 462M 0% /sys/fs/cgroup
tmpfs 32M 0 32M 0% /tmp
tmpfs 16M 0 16M 0% /var/tmp
/dev/mmcblk0p1 253M 49M 205M 20% /boot
tmpfs 93M 0 93M 0% /run/user/1000
/tmp
/var/tmp
がRAMディスク化できたので、SDCard上のものは消す。
$ sudo rm -rf /tmp/*
$ sudo rm -rf /var/tmp/*
これらを初期化するために、リブート設定をする。毎日5:00設定。
$ sudo crontab -e
0 5 * * * /sbin/reboot
Webmin
便利かな〜とか思って、とりあえず2B+に導入してみた。
使ってみる。
http://<host_name>:10000
へアクセス
https://<host_name>:10000
へアクセス
Chromeでは使えない。
Safariは突破できる。(スクリーンショットなし)
rootでログインできる。
悪くはないけど、重い。ZABBIXが同居しているからかな。
でもしばらく使ってみる。
OKならSSHは落として良いかもと思った。
(追加)
パッケージのアップデートがきたので、試してみてるけどもう30分ぐらい終わらない。
TODO:
- Chromeで使えるようにする。
- 4B+ (64bit版raspberry pi OS)でも試す。
Argon ONE V2 Case memo
ドキュメントなどは見つからず、ユーティリティーのインストール方法など小冊子がついてくるだけなので目元して残してみる。
コントローラのインストール
$ curl https://download.argon40.com/argon1.sh | bash
Fanの制御や搭載されている(らしい)ir
の制御、電源キーでのシャットダウンなどができるようになるらしい。shellかpythonで書かれている。
ファン制御
$ argonone-config
--------------------------------------
Argon One Fan Speed Configuration Tool
--------------------------------------
WARNING: This will remove existing configuration.
Press Y to continue:Y
Thank you.
Select fan mode:
1. Always on
2. Adjust to temperatures (55C, 60C, and 65C)
3. Customize behavior
4. Cancel
NOTE: You can also edit /etc/argononed.conf directly
Enter Number (1-4):2
Please provide fan speeds for the following temperatures:
55C (0-100 only):100
60C (0-100 only):100
65C (0-100 only):100
Configuration updated.
select fan modeは温度でFanの使用率を決められる。
常に100%にしたくなります。理由は下記で。
使用感
- HDMIがフルサイズにしてもらえるのは好印象です。あと、上のユーティリティーを入れれば電源ボタンでシャットダウンとか良い感じです。
- sata接続ではあるけどM.2が使えます。オプションになっている商品もあるのでご注意を。
- 基本的に内蔵のFanは小さく全力運転でも静かでよいのですが、筐体全体で放熱しているので筐体は常にホッカホカな状態です。ちょっと心配になるぐらい。
- 筐体デザインと筐体での放熱で積み重ねできない。何かの上に置くにもちょっと気を使わねばなりません。
irとかもそのうち試して追記します。
参考
Geekworm NASPi 2.5" SATA HDD/SSD Kit
2台目に買ったRPI用ケースです。
Documents
X-C1と呼ばれるボードが付いていて、それを制御するソフトウエアですね。
使用感
-
電源(USB-C)とマイクロHDIMが近すぎる。付属するフルサイズへの変換器が干渉して使えない。HDMIが2個あるので大きな問題にはならないけど干渉する方がプライマリらしいのでちょっとね。
別ボードなのだからマイクロHDMIをフルサイズにして欲しかった。 -
Argon oneのようにケース全体で熱を逃しているわけではない。ケースファンは不足しているけど。
電源ぼボタンによるShutdownなどはうまく機能しているけど、何度かrebootが出来なかった。RPiのfirmwareが古かったかも?最近はその問題はでない。 -
2.5インチ SSD/HDD対応でうまくまとめられていると思う。SATA M.2であるArgon oneってほとんど意味ないです。2.5インチの方が選択肢多いから。
-
Argon oneはSSDを装着するケースを使うとSDカードの出し入れができなくなる(ケースを開ける必要はある)がこちらはSDCardがちゃんと抜き差しできる。
参考