Action unknown: copypageplugin__copy
projects:disable_pcie_aspm
Отключение Энергосбережения Pi4/5
✅ Raspberry Pi 4:
Имеет встроенный USB 3.0 контроллер, но не выводит PCIe наружу.
pcie_aspm=off
влияет на поведение USB 3.0 и Ethernet, может улучшить стабильность под высокой нагрузкой.
✅ Raspberry Pi 5:
Имеет полноценный PCIe-шлюз (можно подключать NVMe и прочее).
Здесь pcie_aspm=off
особенно полезен:
стабилизирует поведение при работе с SSD, NVMe, USB-хабами,
может решить отвал сети при сжатии/копировании.
- disable_pcie_aspm.sh
#!/bin/bash # disable_pcie_aspm.sh — добавляет pcie_aspm=off в /boot/cmdline.txt, если его ещё нет set -euo pipefail CMDLINE_FILE="/boot/cmdline.txt" KEYWORD="pcie_aspm=off" # Проверка на наличие строки if grep -q "$KEYWORD" "$CMDLINE_FILE"; then echo "✅ Параметр уже установлен: $KEYWORD" else echo "[*] Добавляю $KEYWORD в $CMDLINE_FILE" sudo sed -i "s|$| $KEYWORD|" "$CMDLINE_FILE" echo "✅ Добавлено. Перезагрузите Raspberry Pi, чтобы применить." fi
- power_mode.sh
#!/bin/bash export LANG=en_US.UTF-8 export LC_ALL=en_US.UTF-8 # ==AUTOEXEC== # === Power Mode === # power_mode.sh # Меню управления энергосбережением: CPU и Wi-Fi на Raspberry Pi # Универсальный скрипт для Pi 4/5: CPU, Wi-Fi, USB + постоянный USB-on через udev set -euo pipefail UDEV_RULE_PATH="/etc/udev/rules.d/99-usb-power.rules" # Определение модели MODEL=$(tr -d '\0' </proc/device-tree/model) echo "🧠 Устройство: $MODEL" # CPU governor GOV=$(cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor) echo "🖥️ Режим CPU: $GOV" # Wi-Fi WIFI_IF=$(iw dev | awk '$1=="Interface"{print $2}' | head -n1) if [[ -n "$WIFI_IF" ]]; then WIFI_STATE=$(iw dev "$WIFI_IF" get power_save | awk '{print $NF}') echo "📶 Wi-Fi интерфейс: $WIFI_IF, энергосбережение: $WIFI_STATE" else echo "📶 Wi-Fi интерфейс не найден." fi # USB USB_STATE=$(grep . /sys/bus/usb/devices/usb*/power/control | sort -u | tr '\n' ' ') echo "🔌 USB power control (текущие): $USB_STATE" # 💡 Оценка конфигурации CONFIG_STATUS_ICON="" CONFIG_STATUS_DESC="" if [[ "$GOV" == "ondemand" && "$USB_STATE" == *"on"* ]]; then CONFIG_STATUS_ICON="🌿" CONFIG_STATUS_DESC="Максимальное энергосбережение с сохранением стабильности (USB всегда активен)" elif [[ "$GOV" == "performance" && "$USB_STATE" == *"on"* ]]; then CONFIG_STATUS_ICON="🔥" CONFIG_STATUS_DESC="Высокая производительность, USB не уходит в сон" elif [[ "$GOV" == "ondemand" && "$USB_STATE" == *"auto"* ]]; then CONFIG_STATUS_ICON="💤" CONFIG_STATUS_DESC="Минимальное энергопотребление (CPU и USB в энергосбережении)" elif [[ "$GOV" == "performance" && "$USB_STATE" == *"auto"* ]]; then CONFIG_STATUS_ICON="⚡" CONFIG_STATUS_DESC="Производительность активна, но USB может отключаться" else CONFIG_STATUS_ICON="⚙️" CONFIG_STATUS_DESC="Смешанный режим: нестандартная комбинация" fi echo "$CONFIG_STATUS_ICON Конфигурация: $CONFIG_STATUS_DESC" # udev правило if [[ -f "$UDEV_RULE_PATH" ]]; then echo "📂 Udev-правило обнаружено: $UDEV_RULE_PATH (USB всегда включено)" else echo "📂 Udev-правило НЕ найдено (USB отключается по умолчанию)" fi echo "" echo "🔧 Выберите действие:" echo " 1 - 🔁 Переключить CPU между performance и ondemand" echo " 2 - 📶 Включить/отключить энергосбережение Wi-Fi" echo " 3 - 🔌 Включить/отключить энергосбережение USB (до перезагрузки)" echo " 4 - 📂 Создать/удалить udev-правило для ПЕРМАНЕНТНОГО включения USB" echo " 0 - ❌ Выход" read -rp "👉 Выбор: " choice case "$choice" in 1) if [[ "$GOV" == "performance" ]]; then read -rp "🌙 Переключить в ondemand? [y/N] " ans [[ "$ans" =~ ^[Yy]$ ]] && for c in /sys/devices/system/cpu/cpu[0-9]*; do echo ondemand | sudo tee "$c/cpufreq/scaling_governor"; done else read -rp "🚀 Переключить в performance? [y/N] " ans [[ "$ans" =~ ^[Yy]$ ]] && for c in /sys/devices/system/cpu/cpu[0-9]*; do echo performance | sudo tee "$c/cpufreq/scaling_governor"; done fi ;; 2) if [[ -n "$WIFI_IF" ]]; then if [[ "$WIFI_STATE" == "on" ]]; then read -rp "📶 Отключить энергосбережение Wi-Fi ($WIFI_IF)? [y/N] " ans [[ "$ans" =~ ^[Yy]$ ]] && sudo iw dev "$WIFI_IF" set power_save off else read -rp "🔌 Включить энергосбережение Wi-Fi ($WIFI_IF)? [y/N] " ans [[ "$ans" =~ ^[Yy]$ ]] && sudo iw dev "$WIFI_IF" set power_save on fi fi ;; 3) if [[ "$USB_STATE" == *"auto"* ]]; then read -rp "🔋 Отключить USB энергосбережение (on)? [y/N] " ans [[ "$ans" =~ ^[Yy]$ ]] && for path in /sys/bus/usb/devices/usb*/power/control; do echo on | sudo tee "$path"; done else read -rp "🌙 Включить USB энергосбережение (auto)? [y/N] " ans [[ "$ans" =~ ^[Yy]$ ]] && for path in /sys/bus/usb/devices/usb*/power/control; do echo auto | sudo tee "$path"; done fi ;; 4) if [[ -f "$UDEV_RULE_PATH" ]]; then read -rp "❌ Удалить udev-правило и вернуть поведение по умолчанию? [y/N] " ans if [[ "$ans" =~ ^[Yy]$ ]]; then sudo rm "$UDEV_RULE_PATH" sudo udevadm control --reload echo "✅ Правило удалено." fi else read -rp "📂 Создать правило для постоянного включения USB? [y/N] " ans if [[ "$ans" =~ ^[Yy]$ ]]; then echo 'ACTION=="add", SUBSYSTEM=="usb", TEST=="power/control", ATTR{power/control}="on"' | sudo tee "$UDEV_RULE_PATH" >/dev/null sudo udevadm control --reload sudo udevadm trigger --subsystem-match=usb --action=add echo "✅ Правило создано: $UDEV_RULE_PATH" fi fi ;; 0) echo "👋 Выход." ;; *) echo "❓ Неверный выбор." ;; esac
projects/disable_pcie_aspm.txt · Последнее изменение: 2025/04/14 15:09 —