Raspberry Pi Zero W

Revision as of 14:23, 10 August 2017 by Nxhack (talk | contribs) (→‎Node.js)

Maker Faire Tokyo 2017 の KSY ブースでようやく手に入れた。ちゃんと技適マークが刻印されている。

いろいろメモメモ

(Raspbian Jessie Lite July 2017)

Etcher で書き込まないとハマる

Serial Console

秋月電子で FTDI の USB シリアル変換ケーブル(TTL-232R-3V3)を入手。

黒 GND <-> GND (6)
黄 RxD <-> TxD (8)
橙 TxD <-> RxD (10)

駄菓子菓子。これだけでは繋がらない。

firmware イメージをインストールした SD カードを PC/Mac でマウントして /boot/config.txt に追記。

もしくは、HDMI にモニター、USB にキーボード を繋げて(これがフツーか) /boot/config.txt に追記。
これをやりたく無いので Serial Console を活性させたいのだ。
enable_uart=1

おなじく Bluetooth を装備した Pi 3 はいろいろオマジナイがいるらしいが Zero W はこれだけで良い。

First Step

sudo raspi-config
1 Change User Password Change password for the default user
2 Hostname             Set the visible name for this Pi on a network
4 Localisation Options Set up language and regional settings to match your location
5 Interfacing Options  Configure connections to peripherals
必ず上記を確認して必要なら変更を行う。
ユーザ pi のパスワードは必ず変更する事
ホスト名は必要なら変更
ロケーション、特に I4 Change Wi-fi CountryJP にする事。技適に関わる。
CLI でのみ使うので、ロケールは ja_JP にはしたくないので、といって en_US もどっちでもいいので 女王陛下に敬意を評して GB のままにしておく;)
Serial Console や SSH でしか触らないので keyboard layout は気にしない。
時刻はUTCではしんどいのでローカルタイム JST-9 にする。
インターフェースは必要な物を有効にする。たぶん SPI, I2C, {Serial は、すでに設定済みのはず} ぐらい。
github raspi-config

パッケージの更新

sudo apt-get update
sudo apt-get upgrade

どうも ssh host key が不審なので、再生成する

sudo rm /etc/ssh/ssh_host_* && sudo dpkg-reconfigure openssh-server

起動されているサービスを確認する

systemctl list-unit-files | fgrep enabled
systemctl | fgrep running

systemd のログを確認

sudo journalctl --no-pager

オプショナル: unstable, testing kernel への更新

sudo rpi-update
github rpi-update
https://github.com/raspberrypi/firmware

オプショナル: 必要なら他のパッケージを削除しながらインストール済みパッケージの候補バージョンをインストール

sudo apt-get dist-upgrade

いったん再起動

sudo shutdown -r now

おまけ : 最低限の初期設定をコマンドラインで実行するには

passwd
echo "Asia/Tokyo" | sudo tee /etc/timezone
sudo dpkg-reconfigure --frontend noninteractive tzdata
sudo systemctl restart rsyslog
sudo systemctl restart cron
sudo apt-get update
sudo apt-get -y upgrade
sudo sed -i --follow-symlinks "s/^country=.*/country=JP/g" /etc/wpa_supplicant/wpa_supplicant.conf
sudo rm /etc/ssh/ssh_host_* && sudo dpkg-reconfigure openssh-server
sudo shutdown -r now

Devise Tree

Devise Tree を動的に変更するツールがある (Dynamic Device Tree)

dtoverlay
dtparam
詳しくは これ の下の方を読む

とはいえ動的更新せずに /boot/config.txt に書くのが良い。

dtparam=i2c_arm=on
dtparam=spi=on
enable_uart=1
これだけは /boot/config.txt に書いておく。
/boot/overlays/README も確認する
memo : dtoverlay=i2c-rtc,ds1307

raspi-config は /boot/config.txt を書き換えつつ、現状の設定を Dynamic に書き換えている。

reboot したら Dynamic な設定は消え、 /boot/config.txt にしたがい設定される。
どーも modprobe i2c_dev で書き換えた /etc/modules は消えないようだ

I2C

sudo apt-get install i2c-tools
MAKEDEV のエラーは無視してよい /dev/i2c-1 がすでにあるはず。

WiFi Settings

WPA2-PSK:AES

wpa_passphrase "YOUR_SSID" "YOUR_ACCESS_KEY"

sudo vi /etc/wpa_supplicant/wpa_supplicant.conf

country=JP
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1

network={
    ssid="YOUR_SSID"
    psk=HASH(256-bit pre-shared WPA key generated by wpa_passphrase utility)
    scan_ssid=0
    proto=RSN
    key_mgmt=WPA-PSK
    pairwise=CCMP
    group=CCMP
}
電波法を遵守するために "country=JP" は忘れずに

wpa-supplicant が自動的に wlan0 を UP する。もし UP しなければ下記のコマンドを使う

sudo wpa_cli reconfigure

CPU Temperature

cat /sys/class/thermal/thermal_zone0/temp
vcgencmd measure_temp

Node.js

sudo apt-get install build-essential libncurses5-dev gawk git subversion libssl-dev gettext unzip zlib1g-dev file python
./configure --dest-cpu=arm --dest-os=linux --without-snapshot --shared-zlib --with-intl=none --with-arm-fpu=vfp --prefix=/usr

むちゃくちゃ時間かかるので、https://nodejs.org/ja/download/ の Linux Binaries (ARM) ARMv6 を /opt 配下に展開しよう。

cd /opt
sudo wget https://nodejs.org/dist/v6.11.2/node-v6.11.2-linux-armv6l.tar.xz
sudo tar xfJ node-v6.11.2-linux-armv6l.tar.xz
sudo ln -s /opt/node-v6.11.2-linux-armv6l /opt/node
sudo ln -s /opt/node/bin/* /usr/bin/
sudo ln -s /opt/node/include/* /usr/include/
sudo ln -s /opt/node/lib/* /usr/lib/


n とか nvm とか使うのが良いそうだ

sudo aptitude -y install libavahi-compat-libdnssd-dev
sudo npm install -g --unsafe-perm homebridge

irMagician 買うぞ!

irMagicianをSiriから使う | 大宮技研 合同会社
raspberry piとirMagicianを使って赤外線で家電を操作

FileBeat

Golang のパッケージがあるぞ。

本家スタティックリンク版発見

https://beats-nightlies.s3.amazonaws.com/index.html?prefix=jenkins/filebeat/
filebeat-linux-arm がそれだが、完全に head の build だった
INFO Setup Beat: filebeat; Version: 7.0.0-alpha1-git23d9fe6
動いてはいる ;)

memo

git clone https://github.com/tsg/go-daemon.git
cd go-daemon
make
mv god filebeat-god
dpkg-deb -x filebeat-5.5.1-amd64.deb ./
#$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat

ssh tunnel

python supervisord で管理する。

apt-get -y install supervisor

I2C RTC DS1307

手元に Adafruit の DS1307 Real Time Clock breakout board kit があったので、以下の手順で導入した。

Adding a Real Time Clock to Raspberry Pi

さっくり動いた。

[   11.054531] rtc-ds1307 1-0068: rtc core: registered ds1307 as rtc0
[   11.054577] rtc-ds1307 1-0068: 56 bytes nvram
pi@raspberrypi:~ $ sudo hwclock -D -r
hwclock from util-linux 2.25.2
Using the /dev interface to the clock.
Last drift adjustment done at 1502281575 seconds after 1969
Last calibration done at 1502281575 seconds after 1969
Hardware clock is on UTC time
Assuming hardware clock is kept in UTC time.
Waiting for clock tick...
/dev/rtc does not have interrupt functions. Waiting in loop for time from /dev/rtc to change
...got clock tick
Time read from Hardware Clock: 2017/08/10 00:33:36
Hw clock time : 2017/08/10 00:33:36 = 1502325216 seconds since 1969
Thu 10 Aug 2017 09:33:36 JST  -0.290283 seconds