Raspberry Pi Zero W
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 Country は JP にする事。技適に関わる。
- 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
オプショナル: 必要なら他のパッケージを削除しながらインストール済みパッケージの候補バージョンをインストール
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
UART
Zero W の UART は BROADCOM BCM2835 SoC に実装されている PL011 と mini-UART がある。
PL011 は ARM core の実装の UART。 mini-UART は低スループットの第2番目の UART という位置付け。
The Raspberry Pi UARTs
uart-pl011 (PL011)
bcm2835-aux-uart (mini UART)
Over Clock
bcm2835-cpufreq: min=700000 max=1000000
pi@raspberrypi:/boot $ vcgencmd measure_clock arm
frequency(45)=700000000
Zero W で Over Clock が出来るか試してみた。raspi-config では "This Pi cannot be overclocked." と弾かれる。
/boot/config.txt で
arm_freq=1000
としてみたが変化なし。 Zero W では Over Clock はできないっぽい。
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
- /boot/overlays/README も確認する
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を使って赤外線で家電を操作 iOS10「ホーム」アプリと「Raspberry Pi + irMagician」でお手軽家電操作。 - Qiita irMagician + Raspberry Pi + HomeKitで家電を遠隔&音声制御する - YSNHatenaBlog 小型赤外線(IR)リモコン irMagician ファースト・インプレッション Siriさんに電気をつけてもらう。 - ポンダッドの日記
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