Raspberry Pi Tips

INDEX

種類の概要

  • RaspberryPi Zero
    1GHzのシングルコア
    RAMは512MB
    USB OTGが1ポート(USBを使うにはMicroB→A変換が必須)
    HDMIはMini
  • RaspberryPi ZeroW
    PiZero?WiFi?とBtが追加された。
    WHはGPIOピンヘッダが実装済み
  • RaspberryPi 2B
    入手困難になっているので詳細は省略。
    WiFi?とBT無し
  • RaspberryPi 3B
    1.2GHzのクアッドコア
    RAMは1GB
    WiFi?とBtが内蔵
    USB2.0が4ポートと100Mbps LAN 電源は2.5A以上
  • RaspberryPi 3B+
    1.4GHzのクアッドコア
    RAMは1GB
    WiFi?(2.4GHzと5GHz)とBtが内蔵(5GHz帯は国設定をしないと使えない)
    USB2.0が4ポートと1Gbps LAN(ただし、NICがUSB2.0接続なので300Mbps程度しか出ない
    入手困難になっている。
  • RaspberryPi 3A+
    1.4GHzのクアッドコア
    RAMは512GB(3B+の半分
    WiFi?(2.4GHzと5GHz)とBtが内蔵
    USB2.0が1ポートLANポートは無い
    Pi3+から最小限のI/Oを残した小型版。背が低い。
  • RaspberryPi 4B
    1.5GHzのクアッドコア
    RAMは1/2/4GBの3種類から選べる(LPDDR4
    WiFi?(2.4GHzと5GHz)とBtが内蔵
    USB2.0が2ポートとUSB3.0が2ポートと1Gbps LAN
    HDMI Microが2ポートあり、4K 60P x1か4K 30P x2が可能
    電源入力がUSB Type-Cになった(5V/3A以上)
    OSはBuster以降で対応

メモ

Pi4以前のモデルは、SDカードの速度が22MB/s程度で頭打ちになる。
よって、早いSDカードを使っても恩恵は無い。
Pi4からはSDカードインタフェースが高速化され、さらに32GBを超えるSDXCも使用できるようになったらしい。

Image取得先

https://www.raspberrypi.org/downloads/raspbian/

USBポートの供給能力を1200mAに拡大する

いずれも全ポート合計の給電能力を示す。

  • RaspberryPi2 Model B
    /boot/config.txt
    max_usb_current=1
  • RaspberryPi3 Model B
    デフォルトで1200mAになっている

Bluetoothを無効にしてUARTを有効にする

/boot/config.txt

# Enable UART (without Bluetooth)
enable_uart=1
dtoverlay=pi3-disable-bt

BluetoothとUARTを有効にする

/boot/config.txt

# Enable UART
enable_uart=1
dtoverlay=pi3-miniuart-bt

BtとUARTを同時に使用する場合はMiniUART機能を使う。制約があるので注意。
詳細はこちら→ RasPi_uart

Network関係

SSHを有効化

デフォルトではSSHが無効になっているので、有効化しないといろいろ大変です。
/boot(FATパーティション)に「ssh」という空ファイルを置けば良い。
イメージ焼いた直後にやってしまうと良いでしょう。

WiFi?接続

/etc/wpa_supplicant/wpa_supplicant.conf

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

network={
        ssid="BWT_Net"
        psk="PASSWORD"
        key_mgmt=WPA-PSK
        priority=0
}

network={
        ssid="BWT_Net_mobile"
        psk="PASSWORD"
        key_mgmt=WPA-PSK
        priority=1
}

IPアドレスを固定にする

/etc/dhcpcd.conf

# Fixed address
interface wlan0
static ip_address=192.168.1.52/24
static routers=192.168.1.254
static domain_name_servers=192.168.1.1

NTPで時刻同期

ntpをインストール

$ sudo apt install ntp

/etc/ntp.confを編集

#pool 0.debian.pool.ntp.org iburst
#pool 1.debian.pool.ntp.org iburst
#pool 2.debian.pool.ntp.org iburst
#pool 3.debian.pool.ntp.org iburst
pool ntp.nict.jp iburst

サービスを再起動

$ sudo service ntp restart

状態を確認

$ ntpq -p

不要なサービスを停止させる

chkconfigをインストール

sudo apt install chkconfig

サービスを停止

$ sudo chkconfig triggerhappy off
$ sudo chkconfig plymouth off
$ sudo chkconfig alsa-utils off

コンソールログイン時に表示されるメッセージを消す

/etc/motdを編集する。
何も表示させたくなければ

$ touch ~/.hushlogin

と、しておけば良い。

RaspberryPi SDカードイメージをLinuxでマウント

配布用SDカードイメージを作成後に、一部のファイルだけを差し替えたくなった時に活用できる。
特にパーティションサイズを変更して配布イメージサイズを小さくしている場合に便利。
通常の考え方だと、一度イメージをSDカードに書き出してから編集。その後、再度イメージファイルを作成する手順となる。
この手順であれば、SDカードを介在せずに目的を達成できる。

パーティション状態を調べる

$ fdisk -l -u 2017-04-10-raspbian-jessie-lite.img

ディスク 2017-04-10-raspbian-jessie-lite.img: 1297 MB, 1297862656 バイト
ヘッド 255, セクタ 63, シリンダ 157, 合計 2534888 セクタ
Units = セクタ数 of 1 * 512 = 512 バイト
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
ディスク識別子: 0x84fa8189

                            デバイス  ブート    始点        終点    ブロック   Id  システム
2017-04-10-raspbian-jessie-lite.img1            8192       92159       41984    c  W95 FAT32 (LBA)
2017-04-10-raspbian-jessie-lite.img2           92160     2534887     1221364   83  Linux

第2パーティションをマウントするため、オフセット値を計算する

第2パーティションの開始セクタは92160なので、セクタサイズ512をかけて「92160×512=47185920」になる。

マウントする

# mkdir /mnt/RasPi
# mount -t ext4 -o loop,offset=47185920 2017-04-10-raspbian-jessie-lite.img /mnt/RasPi

MIDI関係

aconnectの使い方

  • 入力一覧
    aconnect -i
  • 出力一覧
    aconnect -o
  • 入力と出力を接続
    aconnect <入力ポート番号> <出力ポート番号>
  • スクリプト例
  • EWI-USBのMIDI信号をUM-ONEに出す
    EWIUSB_to_UMONE.sh
    #!/bin/sh
    echo "MIDI Connect : EWI-USB to UMONE"
    aconnect `aconnect -i | awk '/client.*EWI-USB/{print $2}'`0 `aconnect -o | awk '/client.*UMONE/{print $2}'`0
  • nanoPAD2のMIDI信号をEWI-5000に送る
    nanoPAD_to_EWI5000.sh
    #!/bin/sh
    echo "MIDI Connect : nanoPad2 to EWI-5000"
    aconnect `aconnect -i | awk '/client.*nanoPAD2/{print $2}'`0 `aconnect -o | awk '/client.*EWI5000/{print $2}'`0
  • UM-ONEのMIDI信号をEWI-5000に送る(フットスイッチを使う例)
    UMONE_to_EWI5000.sh
    #!/bin/sh
    echo "MIDI Connect : UM-ONE to EWI-5000"
    aconnect `aconnect -i | awk '/client.*UMONE/{print $2}'`0 `aconnect -o | awk '/client.*EWI5000/{print $2}'`0
  • M-AUDIO USB UnoのMIDI信号をEWI-5000に送る(フットスイッチを使う例)
    MAUDIO_to_EWI5000.sh
    #!/bin/sh
    echo "MIDI Connect : USB Uno to EWI-5000"
    aconnect `aconnect -i | awk '/client.*USB Uno/{print $2}'`0 `aconnect -o | awk '/client.*EWI5000/{print $2}'`0

ONECONTROL Gecko MkIIIでのコントロール

この機種はPROGRAM CHANGEだけでなくBANK情報も送ってしまいます。
したがって、EWI-5000で使用するとFACTORY PRESET(赤LED)の方になってしまい、USER PRESET(緑LED)が使えません。
これに対応するために、MIDI FILTERを導入します。

  • mididingsのインストール
    $ sudo apt-get update
    $ sudo apt-get upgrade
    $ sudo apt-get install mididings
    $ sudo reboot

使い方はこちら
http://das.nasophon.de/mididings/

  • PROGRAM CHANGEだけを通すフィルターとして動かす
    バックグラウンドで起動させます。
    $ mididings "Filter(PROGRAM)" &
  • aconnectでMIDIパッチをする(Geckoの接続先はUM-ONE)
    $ aaconnect `aconnect -i | awk '/client.*UM-ONE/{print $2}'`0 `aconnect -o | awk '/client.*mididings/{print $2}'`0
    $ aconnect `aconnect -i | awk '/client.*mididings/{print $2}'`1 `aconnect -o | awk '/client.*EWI5000/{print $2}'`0

UM-ONE→mididings(FILTER)mididings→EWI-5000

  • スクリプト例
    #!/bin/sh
    echo "MIDI Connect : UM-ONE to EWI-5000"
    aconnect -x
    mididings "Filter(PROGRAM)" &
    sleep 1
    aconnect `aconnect -i | awk '/client.*UM-ONE/{print $2}'`0 `aconnect -o | awk '/client.*mididings/{print $2}'`0
    aconnect `aconnect -i | awk '/client.*mididings/{print $2}'`1 `aconnect -o | awk '/client.*EWI5000/{print $2}'`0

Read Only ファイルシステムの構築

http://flogics.com/wp/ja/2017/10/raspbian-os%E3%81%AEsd%E3%82%AB%E3%83%BC%E3%83%89%E3%82%92%E3%83%AA%E3%83%BC%E3%83%89%E3%82%AA%E3%83%B3%E3%83%AA%E3%83%BC%E5%8C%96%E3%81%99%E3%82%8B%EF%BC%88initrd-%E7%B7%A8%EF%BC%89/

  • Super Userに移行する
    pi@raspberrypi:~$ sudo bash
    root@raspberrypi:/home/pi#
  • ディレクトリを移動
    root@raspberrypi:/home/pi# cd /usr/share/initramfs-tools
  • ファイル hook-functions を編集
    root@raspberrypi:/usr/share/initramfs-tools# nano hook-functions

497行目付近にoverlayを追加する
下記の例では4行目の末尾。

for arg in "$@" ; do
    case "$arg" in
    base)   
        modules="$modules btrfs ext2 ext3 ext4 ext4dev overlay"
        modules="$modules isofs jfs reiserfs udf xfs"
  • ディレクトリ scripts に移動する
    root@raspberrypi:/usr/share/initramfs-tools# cd scripts
    root@raspberrypi:/usr/share/initramfs-tools/scripts#
  • ファイル local を、overlay というファイルにコピー。
    さらに、local-premount、local-bottom というディレクトリをコピー。
    なお、後者のディレクトリ local-bottom は存在しない場合は無視する。
    # cp local overlay
    # cp -rp local-premount overlay-premount
    # cp -rp local-bottom overlay-bottom 
  • ファイル overlay を編集する
    root@raspberrypi:/usr/share/initramfs-tools/scripts# nano overlay

ファイル中の local_mount_root() という関数定義の中を変更する。

        local_premount

#       if [ "${readonly}" = "y" ]; then
                roflag=-r
#       else
#               roflag=-w
#       fi

        # FIXME This has no error checking
        modprobe ${FSTYPE}

        checkfs ${ROOT} root

        # FIXME This has no error checking
        # Mount root
        mkdir /upper /lower
        if [ "${FSTYPE}" != "unknown" ]; then
            mount ${roflag} -t ${FSTYPE} ${ROOTFLAGS} ${ROOT} /lower
        else
            mount ${roflag} ${ROOTFLAGS} ${ROOT} /lower
        fi
        modprobe overlay
        mount -t tmpfs tmpfs /upper
        mkdir /upper/data /upper/work
        mount -t overlay \
            -olowerdir=/lower,upperdir=/upper/data,workdir=/upper/work \
            overlay ${rootmnt}
}

コメントアウト4カ所。
「checkfs ${ROOT} root」の追加。
「mkdir /upper /lower」の追加。
「/lower」の追加2カ所。

       modprobe overlay
       mount -t tmpfs tmpfs /upper
       mkdir /upper/data /upper/work
       mount -t overlay \
           -olowerdir=/lower,upperdir=/upper/data,workdir=/upper/work \
           overlay ${rootmnt}

以上の追加。

  • まずはカーネルのバージョンを確認
    # uname -r

バージョンにv7が含まれているかどうかが重要。
含まれていなければ以下の記述で7を削除して編集を行う。

  • initrdを作る(v7含む場合)
    # update-initramfs -c -k $(uname -r)
    # cd /boot
    # mv initrd.img-$(uname -r) initrd7.img
  • initrdを作る(v7含まばい場合)
    # update-initramfs -c -k $(uname -r)
    # cd /boot
    # mv initrd.img-$(uname -r) initrd.img
  • ファイル /boot/config.txt を編集(v7を含む場合) 末尾に追加する。
    kernel=kernel7.img
    initramfs initrd7.img
  • ファイル /boot/config.txt を編集(v7を含まない場合) 末尾に追加する。
    kernel=kernel.img
    initramfs initrd.img
  • ファイル /boot/cmdline.txtを編集
    boot=overlay dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait

頭に「boot=overlay」追加と、途中の「root=/dev/mmcblk0p2」を書き換える。

  • rebootして、確認する
$ mount | fgrep ' / '

こう出たら成功

overlay on / type overlay (rw,noatime,lowerdir=/lower,upperdir=/upper/data,workdir=/upper/work)

こう出たら失敗

/dev/mmcblk0p2 on / type ext4 (rw,noatime,data=ordered)
  • ROとRWの切り替え(cmdline.txtの編集で行う)
    • ROの場合は頭の「boot=overlay」が必要
    • RWの場合は頭の「boot-overlay」を削除

USB-UARTケーブル(3.3V)

USB-UART.PNG

GPIOピン配列

GPIO.png

if Up/Down

ip-up/if-downコマンドは無くなりました。

ifconfig eth0 down~
ifconfig wlan0 up

添付ファイル: fileGPIO.png 304件 [詳細] fileUSB-UART.PNG 297件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2020-02-16 (日) 19:17:29 (41d)