Raspberry PI CM3

flash eMMC 

https://www.raspberrypi.org/documentation/hardware/computemodule/cm-emmc-flashing.md

・windows Installerをinstall

https://www.raspberrypi.org/documentation/hardware/computemodule/CM-Boot-Installer.exe

・usb slaveにWindows PCをつなぐ

・power inにつなぐ

・RpiBoot.exeを実行するとmass storage認識する。

 

Install OS

RASPBIAN JESSIE LITE

Minimal image based on Debian Jessie
Version:January 2017
Release date:2017-01-11
Kernel version:4.4

Raspbian

 

https://www.raspberrypi.org/documentation/installation/installing-images/windows.md

 

・HDMIをつないで起動

id:  pi

pass: raspberry

 

・config変更

raspi-config

 

・serial consoleを使う

raspi-config > advanced options > A8 serial で enable

/boot/config.txtで、

dtparam=uart0=on

pi3-disable-bt      #(turn off Bluetooth and restore serial0 UART)
#pi3-miniuart-bt     #(set Bluetooth to use the mini-UART and restore serial0 UART)

を追加し、再起動

GPIO14(TX) — FTDI3.3Vの黄色

GPIO15(RX) — FTDI3.3Vのオレンジ

 

・UARTをアプリケーションで使う

raspi-config > advanced options > A8 serial で disable

・bluetooth停止 on-boardのbluetooth uartを停止して、uartをremapする。

※ /boot/overlays/READMEを参照

sudo systemctl disable hciuart

・/boot/config.txtを編集

dtoverlay=pi3-disable-bt

 dtparam=uart0=on

enable_uart=1 ※これがないと/dev/ttyAMA0が作成されない

・GPIO

https://www.raspberrypi.org/documentation/hardware/computemodule/cm-peri-sw-guide.md

sudo apt-get update
sudo apt-get install raspi-gpio

 

http://elinux.org/RPi_BCM2835_GPIOs

・GPIO設定確認。

raspi-gpio get

 

・PIN配置を上書きする。 (/boot/dt-blob.bin)

デバイスツリーファイル(dts)を作成して、dtcでコンパイルする(dtb)。

sudo apt-get install device-tree-compiler

sudo dtc -I dts -O dtb -o /boot/dt-blob.bin  dt-blob-x.dts 

 

I2c

sudo apt-get install python-smbus

sudo apt-get install i2c-tools

 

i2cdetect -y 1

i2cget -y 1 0x40 0xfe w

i2cset -y 1 0x40 0x01 0x00 b

vcgencmd

http://www.elinux.org/RPI_vcgencmd_usage

vcgencmd get_camera

 

・camera

ジャンパーが必要。

28(SDA),29(SDL),30(LED),31(SHUTDOWN)を、

C01_SDA,C01SCL,CAM1_I01,CAM1_I00に接続する。

CAMERAはCAM1に接続する。

 

https://www.raspberrypi.org/documentation/hardware/computemodule/cmio-camera.md

  1. On the compute module, run sudo raspi-config and enable the camera.
  2. ext, run sudo wget http://goo.gl/U4t12b -O /boot/dt-blob.bin

officialのこれはうまくいかない模様。

 

camera2つ動かしたい時。

https://www.raspberrypi.org/forums/viewtopic.php?f=98&t=89876

m.furukawaさんのdtsを/bootにコピーして、下記実行して再起動。

 

※この場合、raspi-configのadvanced optionでArmのi2cを有効にしないとうまくいく。

これ有効にすると、GPIO2,3がSDA1,SDL1に上書き設定されてしまうので。

また、フレキピッチ変換ボードはカメラ用と、ディスプレイ用と2つあるので注意!

dtparam=i2c_arm=off

 

・omxplayer

sudo apt-get install omxplayer

python3

 sudo apt-get install python3-pip python3-dev

  sudo pip3 install RPi.GPI

  sudo pip3 install python-smbus


			

【RPi】 GPIO

パッケージの確認
$ sudo apt-cache –names-only search gpio

 

【io.py】

#!/usr/bin/python

import RPi.GPIO as GPIO
import time

#GPIO.setmode(GPIO.BCM) # use GPIO pin number
GPIO.setmode(GPIO.BOARD) # use board pin number

GPIO.setup(40,GPIO.OUT)

try:
while True:
GPIO.output(40,True)
time.sleep(1)
GPIO.output(40,False)
time.sleep(1)

except KeyboardInterrupt:
print "detect key intr."

GPIO.cleanup()

 

実行

#sudo python io.py

【RPi】UART speed up

init_uart_baud initial UART baud rate. Default 115200

init_uart_clock initial UART clock. Default 3000000 (3 MHz)

・/boot/cmdline.txtを編集(削除)

#dwc_otg.lpm_enable=0 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait

dwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait

・/etc/inittab ここをcomment out

T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100

 

・ /boot/config.txtに追記

# Higher UART Speed
init_uart_baud=921600
init_uart_clock=14745600

【RPi】Wifi設定

$ vi /etc/network/interfaces
auto lo

iface lo inet loopback
iface eth0 inet dhcp

allow-hotplug wlan0
iface wlan0 inet dhcp
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
iface default inet dhcp

 

WPA-PSK2 AES

$ sudo vi /etc/wpa_supplicant/wpa_supplicant.conf
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1

network={
ssid=”ssid-name”
proto=RSN
key_mgmt=WPA-PSK
pairwise=CCMP
group=CCMP
psk=”password”
}

【RPi】SD Backup/書き込み

・マウントポイントの確認

sudo diskutil list

 

・SDカードへの書き込み

sudo diskutil unmount /dev/disk2s1

sudo dd bs=1m if=2015-02-16-raspbian-wheezy.img of=/dev/rdisk2

 

・SDカードのバックアップ

sudo diskutil unmount /dev/disk2s1

sudo dd bs=1m if=/dev/rdisk2 of=sd.img

【RPi】ルートファイルシステムを拡張する(+2GB)

raspi-configでI2C等を有効にしていくと、空き容量が足りなくなってくるので容量を拡張する。

$ sudo fdisk /dev/mmcblk0
Command (m for help): p
Disk /dev/mmcblk0: 7969 MB, 7969177600 bytes
4 heads, 16 sectors/track, 243200 cylinders, total 15564800 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0009bf4f

Device Boot Start End Blocks Id System
/dev/mmcblk0p1 8192 122879 57344 c W95 FAT32 (LBA)
/dev/mmcblk0p2 122880 6399999 3138560 83 Linux

 

まず削除。
Command (m for help): d
Partition number (1-4): 2

 

それから作成
Command (m for help): n
Partition type:
p primary (1 primary, 0 extended, 3 free)
e extended
Select (default p): p
Partition number (1-4, default 2): 2
First sector (2048-15564799, default 2048): 122880
Last sector, +sectors or +size{K,M,G} (122880-15564799, default 15564799): 10240000

 

確認
Command (m for help): p

 

保存
Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.

 

再起動して反映する。
$ sudo reboot

 

起動したら、
sudo resize2fs /dev/mmcblk0p2

 

確認すると空き容量が増えている。

$ df -h

Filesystem      Size  Used Avail Use% Mounted on

rootfs          4.7G  3.0G  1.5G  68% /

udev             10M     0   10M   0% /dev

tmpfs            12M  216K   12M   2% /run

/dev/mmcblk0p2  4.7G  3.0G  1.5G  68% /

tmpfs           5.0M     0  5.0M   0% /run/lock

tmpfs            24M     0   24M   0% /run/shm

/dev/mmcblk0p1   56M   27M   30M  48% /boot

【RPi】SDカードの空きエリアを/mntにマウントする

【pc】

sudo diskutil list

sudo diskutil unmount /dev/disk2s1
sudo dd bs=1m if=2015-02-16-raspbian-wheezy.img of=/dev/rdisk2

 

【rpi】

※raspi-configで、expand root file systemはしない。すると、ルートファイルシステムがサイズ拡張されてSDの全エリア使ってしまうので。

$sudo fdisk /dev/mmcblk0

Command (m for help): n
Partition type:
p primary (2 primary, 0 extended, 2 free)
e extended
Select (default p): p
Partition number (1-4, default 3): 3
First sector (2048-15564799, default 2048): 6400000
Last sector, +sectors or +size{K,M,G} (6400000-15564799, default 15564799):
Using default value 15564799

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.

$ sudo reboot

 

sudo mkfs.ext4 /dev/mmcblk0p3

/etc/fstab 変更

/dev/mmcblk0p1 /boot vfat defaults 0 0
/dev/mmcblk0p2 / ext4 defaults,noatime 0 0
/dev/mmcblk0p3 /mnt ext4 defaults,noatime 0 0

5列目のパラメーター:0 -> fschkしない。

【RPi】fsprotect

fsprotect

sudo apt-get update
sudo apt-get upgrade

sudo apt-get -y install libncurses5-dev libxml2-dev subversion libssl-dev libspandsp-dev libsqlite3-dev sqlite3 libgtk2.0-dev libslang2-dev libnewt-dev libghc-zlib-dev libkrb5-dev git libreadline6-dev bc

 

・linux kernelソースをインストール

cd /usr/src
sudo git clone –depth 1 https://github.com/raspberrypi/linux.git

sudo ln -s linux linux-3.18.y
cd linux

 

・aufsをインストール
sudo git clone git://git.code.sf.net/p/aufs/aufs3-standalone aufs-aufs3-standalone
cd aufs-aufs3-standalone
sudo git checkout origin/aufs3.18
sudo cp -rp fs /usr/src/linux
sudo cp -rp Documentation/ /usr/src/linux
sudo cp -rp include/uapi/linux/aufs_type.h /usr/src/linux/include/uapi/linux/

sudo patch -p1 < ../aufs-aufs3-standalone/aufs3-kbuild.patch
sudo patch -p1 < ../aufs-aufs3-standalone/aufs3-base.patch
sudo patch -p1 < ../aufs-aufs3-standalone/aufs3-mmap.patch zcat /proc/config.gz > ~/.config
sudo cp ~/.config .

 

・menuconfigで設定

sudo make menuconfig

Load

.config

スクリーンショット 2015-04-13 午後8.20.33

File systems
Miscellaneous filesystems
<*> Aufs (Advanced multi layered unification filesystem) support

スクリーンショット 2015-04-13 午後8.18.47

Makefile編集

VERSION = 3
PATCHLEVEL = 18
SUBLEVEL = 11
EXTRAVERSION = -aufs

sudo make clean
sudo make
ビルドに8時間くらいかかる。

 

・ビルド完了後

バックアップをとっておく。
sudo mv /lib/modules/3.18.7+ /lib/modules/3.18.7+.bak
sudo mv /lib/modules/3.18.7-v7+ /lib/modules/3.18.7-v7+.bak

 

・カーネル差し替え
cd /usr/src/linux
sudo make modules_install
Makefileで指定した
※3.18.11-aufs+ができます。

sudo mv /boot/kernel.img /boot/kernel.img.bak
sudo cp arch/arm/boot/Image /boot/kernel.img

 

・再起動
sudo reboot

 

・確認
$ uname -a
Linux 3.18.11-aufs+ #1 PREEMPT Sat Apr 11 19:07:53 UTC 2015 armv6l GNU/Linux

 

・fsprotectをinstall 

sudo apt-get install fsprotect

sudo update-initramfs -c -k $(uname -r)

 

・/boot/cmdline.txtにパラメーター(fsprotect)追記すると有効

dwc_otg.lpm_enable=0 console=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait fsprotect
※削除すれば無効になるが/boot二プロテクトがかかっている場合は書き換えできないのでPCでマウントして書き換える

 

・/boot/config.txtに追記

# aufs
initramfs initrd.img-3.18.11-aufs+

 

・/bootもプロテクトをかける
/etc/default/fsprotect
PROTECT=”/boot=32M”

NFC

brew install bzr

bzr branch lp:nfcpy
brew install libusb
brew install libusb-compat
sudo pip install –pre pyusb

cd nfcpy
python examples/tagtool.py

[nfc.clf] searching for reader with path ‘usb’
[nfc.clf] using SONY RC-S380/P at usb:020:006
[main] touch a tag
Type3Tag IDm=012e34e730553b52 PMm=00f1000000014300 SYS=88b4

 

参考

http://techblog.qoncept.jp/?p=175

Raspberry Pi + HDR

sudo apt-get install enfuse

raspistill -n -t 3000 -ev 25 -o img1.jpg
raspistill -n -t 3000 -ev -25 -o img2.jpg
raspistill -n -t 3000 -ev 0 -o img3.jpg

enfuse -o blended.jpg img1.jpg img2.jpg img3.jpg

 

raspistill -n -w 1024 -h 768 -ss 8000 -o img1.jpg

raspistill -n -w 1024 -h 768 -ss 4000 -o img2.jpg

raspistill -n -w 1024 -h 768 -ss 1000 -o img3.jpg

enfuse -o blended.jpg img1.jpg img2.jpg img3.jpg

【Python】preparate to use python module.

distribute for packaging

pip for easy installation/removal of packages
virtualenv for nice isolated environments

sudo apt-get install python-dev
curl -O http://python-distribute.org/distribute_setup.py
python distribute_setup.py

curl -O https://raw.github.com/pypa/pip/master/contrib/get-pip.py
python get-pip.py
sudo pip install virtualenv

 

【タイムゾーン】sudo pip install pytz

【シリアル】sudo pip install pyserial