2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Raspberry Pi 3/4/5をシンセサイザーとして使うための設定スクリプト

Posted at

毎回毎回やるのでさすがにスクリプトにした。

前提条件

  • Raspberry Pi 3/4/5
  • HiFiBerry DACまたはPCM5102Aボードを直結
    • 3.3V -> VIN、GND -> GNDとSCK、GPIO18 -> BCK、GPIO21 -> DOUT、GPIO19 -> LCK
  • MIDI I/OはGPIO14 (TXD) と GPIO15 (RXD) を使用
  • アプリは起動時に全画面で起動(Kioskモード)

使い方

SDカード焼いてRaspberry Piに挿して起動したら、このスクリプトを実機に置いて実行属性つけて実行。いくつかアプリ名とかデバイス名などの変更は必要。

setup.sh
#!/bin/bash

# Raspberry Pi Audio Setup Script
# 対応機種: Raspberry Pi 3/4/5
# 前提条件: Raspberry Pi Imagerで焼かれたSDカードから起動済み

set -e

echo "=== Raspberry Pi Audio Setup Script ==="
echo "対応機種: Raspberry Pi 3/4/5"
echo "現在のユーザー: $USER"
echo ""

# 基本システムアップデート
echo "1. システムアップデート中..."
sudo apt update
sudo apt upgrade -y

# SWAP無効化
echo "2. SWAP無効化中..."
sudo swapoff -a
sudo dphys-swapfile swapoff
sudo systemctl stop dphys-swapfile
sudo systemctl disable dphys-swapfile

# SWAP設定ファイルの更新
echo "3. SWAP設定ファイル更新中..."
sudo sed -i 's/^CONF_SWAPSIZE=.*/CONF_SWAPSIZE=0/' /etc/dphys-swapfile

# CPU設定とconfig.txt更新
echo "4. CPU設定とconfig.txt更新中..."
# /boot/firmware/config.txtを指定内容で完全に置き換え
sudo tee /boot/firmware/config.txt > /dev/null << 'EOF'
# For more options and information see
# http://rptl.io/configtxt
# Some settings may impact device functionality. See link above for details

# Uncomment some or all of these to enable the optional hardware interfaces
dtparam=i2c_arm=on
dtparam=i2s=on
dtparam=spi=on

# Disable audio (loads snd_bcm2835)
dtparam=audio=off

# Additional overlays and parameters are documented
# /boot/firmware/overlays/README

# Automatically load overlays for detected cameras
#camera_auto_detect=1

# Automatically load overlays for detected DSI displays
display_auto_detect=1

# Automatically load initramfs files, if found
auto_initramfs=1

# Enable DRM VC4 V3D driver with audio disabled
dtoverlay=vc4-kms-v3d,noaudio
max_framebuffers=2

# Don't have the firmware create an initial video= setting in cmdline.txt.
# Use the kernel's default instead.
disable_fw_kms_setup=1

# Run in 64-bit mode
arm_64bit=1

# Disable compensation for displays with overscan
disable_overscan=1

# Run as fast as firmware / board allows
arm_boost=1

# CPU設定
governor=performance
arm_freq_min=1000

[cm4]
# Enable host mode on the 2711 built-in XHCI USB controller.
# This line should be removed if the legacy DWC2 controller is required
# (e.g. for USB device mode) or if USB support is not required.
otg_mode=1

[cm5]
dtoverlay=dwc2,dr_mode=host

[all]
dtoverlay=hifiberry-dac
dtoverlay=dwc2
dtoverlay=midi-uart0
EOF

# cmdline.txt更新(USB MIDI Gadget用)
echo "5. cmdline.txt更新中..."
sudo sed -i 's/$/ modules-load=dwc2,g_midi/' /boot/firmware/cmdline.txt

# USB MIDI Gadget設定
echo "6. USB MIDI Gadget設定中..."
sudo mkdir -p /etc/modprobe.d
sudo tee /etc/modprobe.d/g_midi.conf > /dev/null << 'EOF'
options g_midi iManufacturer="Your Manufacturer Name" iProduct="Your Product Name" iSerialNumber="123456789"
EOF

# ALSA設定
echo "7. ALSA設定中..."
cat > ~/.asoundrc << 'EOF'
pcm.!default {
    type hw
    card 0
    device 0
}
ctl.!default {
    type hw
    card 0
}
EOF

# limits.conf設定
echo "8. リアルタイム優先度設定中..."
cat << EOF | sudo tee -a /etc/security/limits.conf
$USER - rtprio 99
$USER - memlock unlimited
@audio - rtprio 99
@audio - memlock unlimited
EOF

# audioグループに現在のユーザーを追加
sudo usermod -a -G audio $USER

# labwcを既定のセッションに設定(raspi-configと同等の処理)
echo "9. labwc を既定セッションに設定中..."
# raspi-config の do_boot_behaviour に相当するコマンドライン処理
sudo raspi-config nonint do_boot_behaviour B4  # Desktop Autologin
sudo raspi-config nonint do_wayland W1         # labwc

# デスクトップ自動ログイン設定
echo "10. デスクトップ自動ログインを設定中..."
sudo raspi-config nonint do_boot_behaviour B4  # Desktop Autologin

# オーディオ関連の追加パッケージインストール
echo "11. オーディオ関連パッケージインストール中..."
sudo apt install -y alsa-utils pulseaudio-utils jackd2

# unclutter-xfixesインストール(カーソル非表示用)
echo "12. unclutter-xfixes インストール中..."
sudo apt-get install -y unclutter-xfixes

# labwc設定ファイル作成
echo "13. labwc設定ファイル作成中..."
mkdir -p ~/.config/labwc
cat > ~/.config/labwc/rc.xml << 'EOF'
<?xml version="1.0"?>
<labwc_config>
  <windowRules>
    <!-- identifier は Wayland ネイティブなら app_id、 XWayland なら WM_CLASS のトリミング後の文字列 -->
    <!-- (自分のアプリ名に合わせて書き換える) -->
    <windowRule identifier="YOURAPPNAME" event="onMap">
      <!-- フルスクリーン化 -->
      <action name="ToggleFullscreen"/>
      <!-- タイトルバーなど装飾を完全にオフ -->
      <action name="ToggleDecorations" decorations="none"/>
    </windowRule>
  </windowRules>
</labwc_config>
EOF

# labwc autostart設定
echo "14. labwc autostart設定中..."
cat > ~/.config/labwc/autostart << 'EOF'
#!/bin/sh
# Labwc 起動後に実行するアプリ
# 必要に応じて数秒ほど待ってから起動すると安定する。早すぎるとフルスクリーンにならない様子。
sleep 5
unclutter-xfixes --hide-on-touch &
~/YOURAPPNAME &
EOF

chmod +x ~/.config/labwc/autostart

# 設定完了メッセージ
echo ""
echo "=== セットアップ完了 ==="
echo "以下の設定が適用されました:"
echo "✓ システムアップデート完了"
echo "✓ SWAP無効化"
echo "✓ CPU設定とconfig.txt更新 (HiFiBerry DAC + USB MIDI Gadget対応)"
echo "✓ cmdline.txt更新 (USB MIDI Gadget用)"
echo "✓ USB MIDI Gadget設定"
echo "✓ ALSA設定 (~/.asoundrc)"
echo "✓ リアルタイム優先度設定"
echo "✓ labwc を既定セッションに設定"
echo "✓ オーディオ関連パッケージインストール"
echo "✓ unclutter-xfixes インストール (カーソル非表示)"
echo "✓ labwc設定ファイル作成 (~/.config/labwc/rc.xml)"
echo "✓ labwc autostart設定 (~/.config/labwc/autostart)"
echo ""
echo "注意事項:"
echo "- 再起動後に設定が完全に有効になります"
echo "- audioグループへの追加は再ログイン後に有効になります"
echo "- labwcはWaylandベースのコンポジターです"
echo ""
echo "再起動しますか? (推奨)"
read -p "再起動する場合は 'y' を入力してください: " -n 1 -r
echo
if [[ $REPLY =~ ^[Yy]$ ]]; then
    echo "再起動中..."
    sudo reboot
else
    echo "設定を有効にするため、後で再起動してください。"
fi
2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?