元々はイギリスで教育用に開発されたスモールコンピュータ。
ARM CPU(700MHz)、メモリ(256MB/512MB)、SDカード(ストレージ)、有線LAN、HDMI、USB電源で動作する。
デフォルトOSはDebianをカスタムしたRaspbian。
GPIO端子でLED等周辺機器を制御できる。
記事:
購入:
簡易オシロスコープ:
インストール:
sudo apt-get update sudo apt-get install python3-gpiozero
sudo pip install gpiozero
HEMS(ヘムス)は「Home Energy Management System」の略で、家庭内エネルギー管理システムのことを指す。家庭内にあって家電機器の電力消費量を表示したり、遠隔的に運転を制御する。
USBアダプタタイプ:
PCのBIOS(UEFI)のEEPROMを、ROMライターの代わりにRPiで書く。
sudo wget -O /usr/local/bin/WiFi_Check https://raw.githubusercontent.com/dweeber/WiFi_Check/master/WiFi_Check sudo chmod 0755 /usr/local/bin/WiFi_Check # 日本語環境下だと、常に失敗するのでLANGを指定 sudo perl -p -i -e "s/# Settings/# Settings\nexport LANG=C/" /usr/local/bin/WiFi_Check sudo bash -c "cat > /etc/cron.d/wifi-check << 'EOS' SHELL=/bin/sh PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin LANG=C # m h dom mon dow user command */5 * * * * root /usr/local/bin/WiFi_Check | /usr/bin/logger -i -t WiFi_Check EOS" sudo chmod 0644 /etc/cron.d/wifi-check sudo chown root:root /etc/cron.d/wifi-check
sudo tail -f /var/log/syslog | grep WiFi_Check
wifiアクセスポイントの検索:
sudo iwlist wlan0 scan | grep ESSID
pskの生成:
WIFI_SSID="example-ssid" read -sp "WIFI_PASSWD: " WIFI_PASSWD wpa_passphrase "${WIFI_SSID}" "${WIFI_PASSWD}"
microSD /boot/wpa_supplicant.conf を作成。起動後 /etc/wpa_supplicant/wpa_supplicant.conf へ上書きされる
sudo vi /boot/wpa_supplicant.conf -- country=JP ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev update_config=1 network={ ssid="example-ssid" psk=**** } --
sshのレスポンスが悪くなったり、切断されたりする場合、Power Managementをoffにする事で改善する事がある。
iwconfig wlan0 | grep 'Power Management' Power Management:on
sudo iwconfig wlan0 power off
sudo vim /etc/network/interfaces -- allow-hotplug wlan0 iface wlan0 inet manual wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf wireless-power off -- sudo reboot
デフォルトではCPU 85度で、性能が下がり、熱暴走を抑えるようになっている。
これを任意の値に変える。
# 温度上限 temp_limit=75 # CPU周波数を下げる arm_freq = 1000 arm_freq_min = 600
sudo fdisk -l ... Device Boot Start End Blocks Id System /dev/sdb1 8192 3140625 1566217 e W95 FAT16 (LBA) /dev/sdb2 3140626 31116287 13987831 5 Extended /dev/sdb5 3145728 3211261 32767 83 Linux /dev/sdb6 3211264 3346431 67584 c W95 FAT32 (LBA) /dev/sdb7 3350528 31116287 13882880 83 Linux
sudo fsck /dev/sdb5 sudo fsck /dev/sdb7
sudo badblocks -sv /dev/sdb
microSDは書き込み回数上限があるので、何も対策をしないと、数ヶ月で壊れる事もある。
sudo swapoff --all sudo service dphys-swapfile stop sudo chkconfig dphys-swapfile off
sudo bash -c "echo dtparam=i2c_baudrate=10000 >> /boot/config.txt" sudo reboot
echo 0x$(xxd /sys/class/i2c-adapter/i2c-1/of_node/clock-frequency | cut -f 2,3 -d ' ' --output-delimiter='') | xargs printf "%d\n" 10000 dmesg | grep i2c # baudrateのログは無い sudo ls /sys/module/i2c_bcm2835/parameters/ debug # debugしか無い。 # bcm2708では以下のファイルがあるらしい sudo cat /sys/module/i2c_bcm2708/parameters/baudrate
いずれかの方法がある
sudo aptitude install iptables-persistent sudo vim /etc/iptables/rules.v4 ---- *filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT -A INPUT -p icmp -j ACCEPT -A INPUT -i lo -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT -A INPUT -j REJECT --reject-with icmp-host-prohibited -A FORWARD -j REJECT --reject-with icmp-host-prohibited COMMIT ---- sudo service iptables-persistent restart sudo chkconfig iptables-persistent on
sudo aptitude install iptables
sudo aptitude install ufw
keyboard locale
Windows/MacOSXからのネットワークからRPiを簡単に見つけられるように、「avahi-daemon」をインストール。Bonjour互換
sudo apt-get update sudo apt-get install avahi-daemon
以下のログが多数でる事がある。syslogが読みにくいし、microSDの寿命も気になるので捨てる。
avahi-daemon[372]: Invalid response packet from host 192.168.1.101.
sudo vim /etc/rsyslog.d/avahi-daemon.conf -- if $fromhost-ip == '127.0.0.1' then { if $msg contains_i "Invalid response packet from host" then action(type="omfile" file="/dev/null") &~ } -- sudo service rsyslog restart
lsusb ... Bus 001 Device 004: ID 0411:014f BUFFALO INC. (formerly MelCo., Inc.)
sudo su - modprobe rt2800usb echo "0411 014f" > /sys/bus/usb/drivers/rt2800usb/new_id ifconfig # wlan0が出れば成功
sudo su - echo "rt2800usb" >> /etc/modules echo 'install rt2800usb /sbin/modprobe --ignore-install rt2800usb; /bin/echo "0411 014f" > /sys/bus/usb/drivers/rt2800usb/new_id' > /etc/modprobe.d/wli-uc-gn.conf modprobe rt2800usb
wpa_passphrase <SSID> <PASSWORD> >> /etc/wpa_supplicant/wpa_supplicant.conf vim /etc/wpa_supplicant/wpa_supplicant.conf ---- network={ ssid="<SSID>" scan_ssid=0 proto=RSN key_mgmt=WPA-PSK pairwise=CCMP group=CCMP #psk="<PASSWORD>" psk=******** } ---- vim /etc/network/interfaces ---- auto lo iface lo inet loopback iface eth0 inet dhcp auto wlan0 allow-hotplug wlan0 iface wlan0 inet dhcp wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf iface default inet dhcp wireless-power off ----
sudo ifdown wlan0 sudo ifup wlan0 ifconfig
iwconfig ... wlan0 IEEE 802.11bgn... Power Management:off
flashromが使える。
# aquestalkpi-20130827.tar.gz をWebからダウンロード tar xvfz aquestalkpi-20130827.tar.gz cd aquestalkpi/ ./AquesTalkPi "ゆっくりしていってね?" | aplay
./AquesTalkPi -f test.txt | aplay
./AquesTalkPi -v f2 -s 80 -g 50 -b "漢字も読めるよ" | aplay
date +"%H時%M分%S秒だよ" | ./AquesTalkPi -f - -s 80 -b | aplay
# ミキサーの確認。numid=3のようだ amixer controls numid=3,iface=MIXER,name='PCM Playback Route' numid=2,iface=MIXER,name='PCM Playback Switch' numid=1,iface=MIXER,name='PCM Playback Volume' numid=5,iface=PCM,name='IEC958 Playback Con Mask' numid=4,iface=PCM,name='IEC958 Playback Default' # 音声出力先をアナログに設定(1:アナログ、2:HDMI、3:auto) amixer cset numid=3 1 # テスト。ノイズが再生されたらOK aplay /usr/share/sounds/alsa/Noise.wav
# 現在の音量の確認。values=-1725 amixer cget numid=1 numid=1,iface=MIXER,name='PCM Playback Volume' ; type=INTEGER,access=rw---R--,values=1,min=-10239,max=400,step=0 : values=-1725 | dBscale-min=-102.39dB,step=0.01dB,mute=1 # 音量を90%に設定 amixer cset numid=1 90% numid=1,iface=MIXER,name='PCM Playback Volume' ; type=INTEGER,access=rw---R--,values=1,min=-10239,max=400,step=0 : values=-662 | dBscale-min=-102.39dB,step=0.01dB,mute=1
sudo alsactl store
sudo aptitude install vlc # mp3,ogg,wavを再生。中止はCtrl + C cvlc -q --aout alsa /usr/lib/python2.7/dist-packages/pygame/examples/data/house_lo.mp3 cvlc -q --aout alsa /usr/lib/python2.7/dist-packages/pygame/examples/data/house_lo.ogg cvlc -q --aout alsa /usr/lib/python2.7/dist-packages/pygame/examples/data/house_lo.wav
aptitude show zabbix-agent Package: zabbix-agent State: not installed Version: 1:1.8.11-1 sudo aptitude install zabbix-agent sudo vim /etc/zabbix/zabbix_agentd.conf ---- Server=192.168.1.100 ListenIP=192.168.1.110 ---- sudo service zabbix-agent restart # ローカルでテスト zabbix_agentd -t agent.ping agent.ping [u|1] # ファイアウォール設定 # Zabbix Serverからテスト 1 ならOK zabbix_get -s 192.168.1.110 -k agent.ping 1
wget http://ftp.jp.debian.org/debian/pool/main/d/debian-archive-keyring/debian-archive-keyring_2012.4_all.deb sudo dpkg -i debian-archive-keyring_2012.4_all.deb sudo vim /etc/apt/sources.list.d/wheezy-backports.list ---- deb http://ftp.debian.org/debian/ wheezy-backports main deb-src http://ftp.debian.org/debian/ wheezy-backports main ---- sudo aptitude update aptitude -t wheezy-backports show zabbix-agent sudo aptitude -t wheezy-backports install zabbix-agent ... [....] zabbix_agentd starting...Segmentation fault # アンインストール sudo aptitude remove zabbix-agent
sudo vi /etc/rsyslog.conf ---- cron.* /var/log/cron.log ---- sudo service rsyslog restart
hostname pi.example.com sudo vi /etc/hostname ---- pi.example.com ---- sudo vi /etc/hosts ---- 127.0.1.1 raspberrypi pi.example.com ----
sudo aptitude install chkconfig
sudo vim /etc/init.d/hoge ---- ... ---- sudo chmod +x /etc/init.d/hoge # 登録 sudo insserv -d hoge # 一覧 insserv -s # 削除 sudo insserv -r hoge
sudo su - cd /usr/local/src/ wget http://jp.softether-download.com/files/softether/v2.00-9387-rtm-2013.09.16-tree/Linux/SoftEther%20VPN%20Server/32bit%20-%20ARM%20EABI/softether-vpnserver-v2.00-9387-rtm-2013.09.16-linux-arm_eabi-32bit.tar.gz tar xvfz softether-vpnserver-v2.00-9387-rtm-2013.09.16-linux-arm_eabi-32bit.tar.gz cd vpnserver make chmod 600 * chmod 700 vpncmd vpnserver cd .. mv vpnserver /usr/local/ chmod 755 /usr/local/vpnserver rm softether-vpnserver-v2.00-9387-rtm-2013.09.16-linux-arm_eabi-32bit.tar.gz
/usr/local/vpnserver/vpncmd ... Select 1, 2 or 3: 3 VPN Tools>help You can use the following 5 commands: About - Display the version information Check - Check whether SoftEther VPN Operation is Possible MakeCert - Create New X.509 Certificate and Private Key TrafficClient - Run Network Traffic Speed Test Tool in Client Mode TrafficServer - Run Network Traffic Speed Test Tool in Server Mode To reference the usage for each command, input "command name /?" to view a help. The command completed successfully. VPN Tools>check VPN Tools>exit
chmod +x /etc/init.d/vpnserver insserv -d vpnserver insserv -s | grep vpnserver K:01:0 1 6:vpnserver S:01:2 3 4 5:vpnserver
sudo crontab -e ---- 5 1 * * * ( LOG_DIR="/usr/local/vpnserver/"; /usr/bin/find $LOG_DIR -follow -name "*.log" -type f -mtime +1 -exec /bin/gzip {} \; ; /usr/bin/find $LOG_DIR -follow -name "*.gz" -type f -mtime +90 -delete; ) ----
service vpnserver start
デフォルトはDHCP
sudo vi /etc/network/interfaces ---- auto lo iface lo inet loopback #iface eth0 inet dhcp # static ip iface eth0 inet static address 192.168.1.100 netmask 255.255.255.0 gateway 192.168.1.1 # /static ip allow-hotplug wlan0 iface wlan0 inet manual wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf iface default inet dhcp ---- # 再起動する sudo shutdown -r now
wget https://s3.amazonaws.com/assets.minecraft.net/pi/minecraft-pi-0.1.1.tar.gz tar xvfz minecraft-pi-0.1.1.tar.gz cd mcpi/ ./minecraft-pi
wget -O raspi2png.zip https://github.com/AndrewFromMelbourne/raspi2png/archive/master.zip unzip raspi2png.zip cd raspi2png-master/ sudo apt-get install libpng12-dev make
./raspi2png
sudo aptitude update sudo aptitude upgrade
# GPUファームウェア更新 sudo rpi-update # 再起動 sudo reboot # kernel確認 uname -a Linux raspberrypi 3.12.24+ #694 PREEMPT Tue Jul 15 17:34:35 BST 2014 armv6l GNU/Linux # GPUファームウェア確認 sudo /opt/vc/bin/vcgencmd version Jul 20 2014 16:07:56 Copyright (c) 2012 Broadcom version d8cfa5ccd979ca458fef97e87c14eb804c93762b (clean) (release)
メリット:
※デフォルトがRaspberry Pi Imagerに変わった。
RedHat/CentOS系に慣れた人は良さそう
ifconfig
ssh pi@IPアドレス # rootになれるか sudo su - # rootユーザのパスワード変更 passwd
uname -a Linux raspberrypi 3.6.11+ #538 PREEMPT Fri Aug 30 20:42:08 BST 2013 armv6l GNU/Linux cat /etc/debian_version 7.1
sudo raspi-config
startx
#再起動 sudo /sbin/shutdown -r now # シャットダウン sudo /sbin/shutdown -h now
sudo aptitude install vim chkconfig
sudo aptitude install ntpdate sudo service ntp stop sudo ntpdate ntp.nict.jp sudo perl -p -i -e 's#^(server \d+.debian.pool.ntp.org iburst)$#\#$1#' "/etc/ntp.conf" sudo vim /etc/ntp.conf ---- server ntp.nict.jp server ntp.jst.mfeed.ad.jp server ntp.ring.gr.jp ---- sudo service ntp restart chkconfig ntp on
sudo vim /etc/inittab ---- #2:23:respawn:/sbin/getty 38400 tty2 #3:23:respawn:/sbin/getty 38400 tty3 #4:23:respawn:/sbin/getty 38400 tty4 #5:23:respawn:/sbin/getty 38400 tty5 #6:23:respawn:/sbin/getty 38400 tty6 ---- reboot
sudo aptitude update sudo aptitude upgrade sudo rpi-update sudo reboot
OSをSDカードにインストールするので必須。
モデルに種類があるが、個人的には