Raspberry Pi:Настройка/config.txt

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску

Перевод: Максим Кузьмин
Проверка/Оформление/Редактирование: Мякишев Е.А.


Файл CONFIG.TXT[1]

Будучи встраиваемой системой, Raspberry Pi не имеет BIOS, который есть у обычного ПК. Следовательно, различные параметры для настройки системы, которые обычно хранятся и редактируются именно в BIOS, в случае Raspberry Pi хранятся в опциональном текстовом файле под названием config.txt. При загрузке этот файл сначала считывает графический процессор, а уже потом происходит инициализация процессора ARMLinux), поэтому config.txt должен быть расположен в первом (загрузочном) разделе вашей SD-карты, рядом с файлами bootcode.bin и start.elf. Как правило, в Linux этот файл доступен по маршруту /boot/config.txt и редактировать его нужно только через пользователя root.

В операционных системах Windows и OS X он будет доступен по тому же маршруту, но, по сути, раздел /boot будет единственным разделом SD-карты, доступным для этих ОС. В случае, если файла config.txt в разделе /boot не окажется, просто создайте новый текстовый файл.

Внесенные изменения вступают в силу лишь после перезагрузки Raspberry Pi. После загрузки Linux информацию о текущих настройках можно получить при помощи следующих команд:

vcgencmd get_config <config> — показывает отдельно взятое конфигурационное значение; например, vcgencmd get_config arm_freq.
vcgencmd get_config int — показывает список всех конфигурационных значений, которые представляют собой целые числа (отличные от нуля). 
vcgencmd get_config str  — показывает список всех конфигурационных значений, которые представляют собой строки (отличные от нуля).

Обратите внимание, что есть ряд настроек, информацию о которых с помощью команды vcgencmd получить нельзя.

Что представляет собой CONFIG.TXT

Поскольку config.txt считывается прошивкой на самом раннем этапе загрузки, он устроен очень просто. Он состоит из строк, каждая из которых содержит в себе информацию, сформированную по принципу «свойство=значение», где в качестве значения может быть либо целое число, либо строка. При помощи символа «#» те или иные свойства можно отключить (если поставить этот символ перед строкой, в котором содержится информация о свойстве) или добавить к ним комментарии (если поставить этот символ в начале вновь созданной строки, которая, собственно, и будет содержать ваш комментарий).

Например...

# Включаем у монитора HDMI-режим — чтобы звук отправлялся по HDMI-кабелю
hdmi_drive=2
# Задаем режим работы монитора как DMT
hdmi_group=2
# Задаем разрешение монитора как 1024х768 XGA 60Гц (HDMI_DMT_XGA_60)
hdmi_mode=16
# Делаем дисплей меньше, чтобы текст не убегал за пределы экрана
overscan_left=20
overscan_right=12
overscan_top=10
overscan_bottom=10

Память

GPU_MEM

Задает память графического процессора (в мегабайтах) и, по сути, разбивает память между CPU и GPU. Оставшаяся память отходит CPU. Минимальное значение — «16», максимальное — «192», «448» или «944» (в зависимости от того, какую Pi вы используете — на 256, 512 или 1024 мегабайт). Значение по умолчанию — «64».

Если выставить gpu_mem на низкое значение, это может автоматически отключить определенные функции прошивки (поскольку, если памяти будет мало, GPU будет просто не способен делать определенные вещи). Поэтому если какая-нибудь функция не будет работать, просто попробуйте увеличить память для GPU.

Если применить gpu_mem_256, gpu_mem_512 и gpu_mem_1024, это позволит использовать одну и ту же SD-карту между Raspberry Pi, соответственно, на 256 Мб, 512 Мб и 1024 Мб без необходимости каждый раз редактировать config.txt.

GPU_MEM_256

Задает GPU-память в мегабайтах для 256-мегабайтной Raspberry Pi (но если память не составляет 256 Мб, команда игнорируется). Перезаписывает значение в свойстве gpu_mem. Максимальное значение — «192».

Значение по умолчанию не задано.

GPU_MEM_512

Задает GPU-память в мегабайтах для 512-мегабайтной Raspberry Pi (но если память не составляет 512 Мб, команда игнорируется). Перезаписывает значение в свойстве gpu_mem. Максимальное значение — «448».

Значение по умолчанию не задано.

GPU_MEM_1024

Задает GPU-память в мегабайтах для 1024-мегабайтной Raspberry Pi (но если память не составляет 1024 Мб, команда игнорируется). Перезаписывает значение в свойстве gpu_mem. Максимальное значение — «944».

Значение по умолчанию не задано.

DISABLE_L2CACHE

Если выставить это свойство на «1», это отключит доступ CPU к L2-кэшу GPU. Требуется, чтобы ядро, соответствующее L2-кэшу, было отключено.

Значение по умолчанию — «0».

DISABLE_PVT

Если выставить это свойство на «1», это отключит периодический (дважды в секунду) замер температуры RAM, а вместе с ним и калибровку скорости обновления RAM.

Значение по умолчанию — «0».

CMA – Динамическое разбиение памяти

Начиная с 19 ноября 2012 прошивка и ядро поддерживают систему распределения памяти CMA (Contiguous Memory Allocator), с помощью которой разбиение памяти между CPU и GPU можно осуществлять динамически и прямо во время работы.

Впрочем, официально эта система не поддерживается.

Пример config.txt с применением этой системы можно найти, например, тут.

CMA_LWM

Если GPU-память имеет меньше, чем задано в cma_lwm (LWM означает «low-water mark», что можно перевести как «наименьший предел»), то начинает запрашивать памяти у CPU.

CMA_HWM

Если GPU-память имеет больше, чем задано в cma_hwm (HWM означает «high-water mark», что можно перевести как «наивысший предел»), то начинает делиться памятью с CPU.

Чтобы CMA заработала, в cmdline.txt должно быть прописано следующее:

coherent_pool=6M smsc95xx.turbo_mode=N

Камера

DISABLE_CAMERA_LED

Если задать в этом свойстве «1», то красный светодиод камеры при записи видео и фотографировании включаться не будет. Полезно, например, если вы снимаете через стекло и хотите избежать на итоговом изображении нежелательных отражений.

Встроенное аналоговое аудио (3,5-миллиметровый разъем)

Встроенный аудиовыход имеет несколько конфигурационных настроек, влияющих на то, как будет работать аналоговое аудио, а также включающих/выключающих некоторые функции прошивки.

DISABLE_AUDIO_DITHER

По умолчанию к аудиопотоку, который направляется к аналоговому аудиовыходу, применяется дитеринг с амплитудой 1.0 LSB. В ряде случаев из-за этого к звуку примешиваются фоновые шипения — как если бы вы громкость звука в ALSA была выкручена на низкий уровень. Чтобы отключить дитеринг, задайте в этом свойстве значение «1».

PWM_SAMPLE_BITS

Настраивает битовую глубину аналогового аудиовыхода. По умолчанию тут стоит значение «11». Если задать в этом параметре меньше «8», то звук получится искаженным. Как правило, эта настройка может пригодиться лишь в целях демонстрации того, как битовая глубина влияет на шум квантования.

Видео

Опции для режима композитного видео

SDTV_MODE

Определяет ТВ-стандарт, используемый для композитного видеовыхода через желтый RCA-разъем. Значение по умолчанию — «0».

sdtv_mode Результат
0 Обычный NTSC
1 Японская версия NTSC — отсутствует высокий уровень черного
2 Обычный PAL
3 Бразильская версия PAL — 525/60 вместо 625/50, другая поднесущая цвета
SDTV_ASPECT

Определяет соотношение сторон для композитного видеовыхода. Значение по умолчанию — «1».

sdtv_aspect Результат
1 4:3
2 14:9
3 16:9
SDTV_DISABLE_COLOURBURST

Если задать в этом параметре «1», это отключит на композитном видеовыходе сигнал цветовой синхронизации. Изображение станет монохромным, но и, возможно, более четким.

Опции для режима HDMI

HDMI_SAFE

Если задать в этом свойстве «1», система запустит «безопасный режим» и попытается загрузиться с максимальной HDMI-совместимостью. Это как если бы в настройках было указано следующее:

hdmi_force_hotplug=1
hdmi_ignore_edid=0xa5000080
config_hdmi_boost=4
hdmi_group=2
hdmi_mode=4
disable_overscan=0
overscan_left=24
overscan_right=24
overscan_top=24
overscan_bottom=24
HDMI_IGNORE_EDID

Если установить в этом параметре «0xa5000080», система будет игнорировать EDID (данные от дисплея). Эта опция используется, например, если ваш дисплей имеет некорректные EDID. Такое необычно громоздкое значение нужно, чтобы не включить эту опцию случайно.

HDMI_EDID_FILE

Если задать тут «1», GPU будет запрашивать EDID не у дисплея, а обратится за ними к файлу edid.dat, расположенному в загрузочном разделе на SD-карте. Более подробно — тут.

HDMI_FORCE_EDID_AUDIO

Если задать в этом параметре «1», система сделает вид, что дисплей поддерживает абсолютно все форматы аудио — это позволяет использовать DTS/AC3, даже если его нет в числе поддерживаемых форматов.

HDMI_IGNORE_EDID_AUDIO

Если задать в этом параметре «1», система сделает вид, что дисплей не поддерживает ни одного формата аудио. Это значит, что по умолчанию для аналогового (3,5-миллиметрового) аудиовыхода будет использоваться ALSA.

HDMI_FORCE_EDID_3D

Если задать тут «1», то система сделает вид, что 3D поддерживается всеми CEA-режимами, даже если в EDID об этой поддержке ничего не сказано.

AVOID_EDID_FUZZY_MATCH

Если установить тут «1», это позволит избежать «нечеткого соответствия» режимов, описанных в EDID. Вместо этого система будет выбирать стандартный режим с соответствующим разрешением и наиболее близкой частотой кадров (даже если в результате гашение будет неправильным).

HDMI_IGNORE_CEC_INIT

Если задать в этом параметре «1», то при загрузке система не будет отсылать телевизору «будящего» сообщения об активации HDMI. Это предотвратит автоматическое переключение каналов и автоматическое включение телевизора при перезагрузке Raspberry Pi. Требуется, если вы используете телевизор, поддерживающий функцию CEC.

HDMI_IGNORE_CEC

Если задать тут «1», система притворится, что телевизор не поддерживает CEC вовсе. В результате ни одна из CEC-функций поддерживаться не будет.

HDMI_PIXEL_ENCODING

Задает режим кодирования пикселей. По умолчанию тут будет использоваться режим, запрошенный у EDID, поэтому менять его не следует.

hdmi_pixel_encoding Результат
0 По умолчанию (ограниченный RGB для CEA, полный RGB для DMT)
1 Ограниченный RGB (16-235)
2 Полный RGB (0-255)
3 Ограниченный YCbCr (16-235)
4 Полный YCbCr (0-255)
HDMI_DRIVE

Позволяет вам выбирать между режимами вывода — HDMI или DVI.

hdmi_drive Результат
1 Обычный DVI (без звука)
2 Обычный HDMI (со звуком, но если он включен и поддерживается)
CONFIG_HDMI_BOOST

Конфигурирует мощность сигнала HDMI-интерфейса. Дефолтное значение — «0», а максимум — «7». Если возникли какие-то помехи, попробуйте «4».

HDMI_GROUP

Определяет группу для вывода HDMI-сигнала – либо CEA (означает Consumer Electronics Association, т.е. «Ассоциация Бытовой Электроники» — это стандарт, обычно используемый для телевизоров), либо DMT (означает Display Monitor Timings, т.е. «Тайминги для дисплеев мониторов» — стандарт, обычно используемый для мониторов). Эту настройку необходимо использовать в сочетании с hdmi_mode.

hdmi_group Результат
0 Автоопределение на основе данных от EDID
1 CEA
2 DMT
HDMI_MODE

Эта настройка вместе с hdmi_group определяет формат для вывода HDMI-сигнала.

Если вы хотите задать собственный режим, которого нет среди перечисленных ниже, смотрите этот тред.

Данные значения следует использовать, если вы задали

hdmi_group=1 (CEA)
hdmi_mode Разрешение Частота Примечания
1 VGA (640х480)
2 480p 60 Гц
3 480p 60 Гц Соотношение сторон 16:9
4 720p 60 Гц
5 1080i 60 Гц
6 480i 60 Гц
7 480i 60 Гц Соотношение сторон 16:9
8 240p 60 Гц
9 240p 60 Гц Соотношение сторон 16:9
10 480i 60 Гц Учетверение пикселей
11 480i 60 Гц Учетверение пикселей, соотношение сторон 16:9
12 240p 60 Гц Учетверение пикселей
13 240p 60 Гц Учетверение пикселей, соотношение сторон 16:9
14 480p 60 Гц Удвоение пикселей
15 480p 60 Гц Удвоение пикселей, соотношение сторон 16:9
16 1080p 60 Гц
17 576p 50 Гц
18 576p 50 Гц Соотношение сторон 16:9
19 720p 50 Гц
20 1080i 50 Гц
21 576i 50 Гц
22 576i 50 Гц Соотношение сторон 16:9
23 288p 50 Гц
24 288p 50 Гц Соотношение сторон 16:9
25 576i 50 Гц Учетверение пикселей
26 576i 50 Гц Учетверение пикселей, соотношение сторон 16:9
27 288p 50 Гц Учетверение пикселей
28 288p 50 Гц Учетверение пикселей, соотношение сторон 16:9
29 576p 50 Гц Удвоение пикселей
30 576p 50 Гц Удвоение пикселей, соотношение сторон 16:9
31 1080p 50 Гц
32 1080p 24 Гц
33 1080p 25 Гц
34 1080p 30 Гц
35 480p 60 Гц Учетверение пикселей
36 480p 60 Гц Учетверение пикселей, соотношение сторон 16:9
37 576p 50 Гц Учетверение пикселей
38 576p 50 Гц Учетверение пикселей, соотношение сторон 16:9
39 1080i 50 Гц Сниженный бланкинг
40 1080i 100 Гц
41 720p 100 Гц
42 576p 100 Гц
43 576p 100 Гц Соотношение сторон 16:9
44 576i 100 Гц
45 576i 100 Гц Соотношение сторон 16:9
46 1080i 120 Гц
47 720p 120 Гц
48 480p 120 Гц
49 480p 120 Гц Соотношение сторон 16:9
50 480i 120 Гц
51 480i 120 Гц Соотношение сторон 16:9
52 576p 200 Гц
53 576p 200 Гц Соотношение сторон 16:9
54 576i 200 Гц
55 576i 200 Гц Соотношение сторон 16:9
56 480p 240 Гц
57 480p 240 Гц Соотношение сторон 16:9
58 480i 240 Гц
59 480i 240 Гц Соотношение сторон 16:9

В таблице выше режимы с соотношением сторон 16:9 — это широкоэкранные варианты режима, в котором обычно используется соотношение 4:3. Удвоение и учетверение пикселей говорят о более высокой тактовой частоте — каждый пиксель повторяется два или четыре раза соответственно.

Данные значения следует использовать, если вы задали

hdmi_group=2 (DMT)
hdmi_mode Разрешение Частота Примечания
1 640 x 350 85 Гц
2 640 x 400 85 Гц
3 720 x 400 85 Гц
4 640 x 480 60 Гц
5 640 x 480 72 Гц
6 640 x 480 75 Гц
7 640 x 480 85 Гц
8 800 x 600 56 Гц
9 800 x 600 60 Гц
10 800 x 600 72 Гц
11 800 x 600 75 Гц
12 800 x 600 85 Гц
13 800 x 600 120 Гц
14 848 x 480 60 Гц
15 1024 x 768 43 Гц Несовместим с Raspberry Pi
16 1024 x 768 60 Гц
17 1024 x 768 70 Гц
18 1024 x 768 75 Гц
19 1024 x 768 85 Гц
20 1024 x 768 120 Гц
21 1152 x 864 75 Гц
22 1280 x 768 Сниженный бланкинг
23 1280 x 768 60 Гц
24 1280 x 768 75 Гц
25 1280 x 768 85 Гц
26 1280 x 768 120 Гц Сниженный бланкинг
27 1280 x 800 Сниженный бланкинг
28 1280 x 800 60 Гц
29 1280 x 800 75 Гц
30 1280 x 800 85 Гц
31 1280 x 800 120 Гц Сниженный бланкинг
32 1280 x 960 60 Гц
33 1280 x 960 85 Гц
34 1280 x 960 120 Гц Сниженный бланкинг
35 1280 x 1024 60 Гц
36 1280 x 1024 75 Гц
37 1280 x 1024 85 Гц
38 1280 x 1024 120 Гц Сниженный бланкинг
39 1360 x 768 60 Гц
40 1360 x 768 120 Гц Сниженный бланкинг
41 1400 x 1050 Сниженный бланкинг
42 1400 x 1050 60 Гц
43 1400 x 1050 75 Гц
44 1400 x 1050 85 Гц
45 1400 x 1050 120 Гц Сниженный бланкинг
46 1440 x 900 Сниженный бланкинг
47 1440 x 900 60 Гц
48 1440 x 900 75 Гц
49 1440 x 900 85 Гц
50 1440 x 900 120 Гц Сниженный бланкинг
51 1600 x 1200 60 Гц
52 1600 x 1200 65 Гц
53 1600 x 1200 70 Гц
54 1600 x 1200 75 Гц
55 1600 x 1200 85 Гц
56 1600 x 1200 120 Гц Сниженный бланкинг
57 1680 x 1050 Сниженный бланкинг
58 1680 x 1050 60 Гц
59 1680 x 1050 75 Гц
60 1680 x 1050 85 Гц
61 1680 x 1050 120 Гц Сниженный бланкинг
62 1792 x 1344 60 Гц
63 1792 x 1344 75 Гц
64 1792 x 1344 120 Гц Сниженный бланкинг
65 1856 x 1392 60 Гц
66 1856 x 1392 75 Гц
67 1856 x 1392 120 Гц Сниженный бланкинг
68 1920 x 1200 Сниженный бланкинг
69 1920 x 1200 60 Гц
70 1920 x 1200 75 Гц
71 1920 x 1200 85 Гц
72 1920 x 1200 120 Гц Сниженный бланкинг
73 1920 x 1440 60 Гц
74 1920 x 1440 75 Гц
75 1920 x 1440 120 Гц
76 2560 x 1600
77 2560 x 1600 60 Гц
78 2560 x 1600 75 Гц
79 2560 x 1600 85 Гц
80 2560 x 1600 120 Гц Сниженный бланкинг
81 1366 x 768 60 Гц
82 1920 x 1080 60 Гц 1080p
83 1600 x 900 Сниженный бланкинг
84 2048 x 1152 Сниженный бланкинг
85 1280 x 720 60 Гц 720p
86 1366 x 768 Сниженный бланкинг

Имейте в виду, что в Raspberry Pi имеется ограничение на частоту пикселизации, а это значит, что форматы выше 1920х120060 Гц и сниженным бланкингом) не поддерживаются.

Какие значения корректны для моего монитора?

Ваш HDMI-монитор может поддерживать лишь ограниченное число форматов. Чтобы узнать, какие именно форматы поддерживаются, воспользуйтесь следующим методом:

  1. Установите выходной формат как VGA 60 Гц (
hdmi_group=1

и

hdmi_mode=1

) и загрузите Raspberry Pi.

  1. Введите следующую команду, которая выведет список поддерживаемых CEA-режимов:
/opt/vc/bin/tvservice -m CEA
  1. Введите следующую команду, которая выведет список поддерживаемых DMT-режимов:
/opt/vc/bin/tvservice -m DMT
  1. Введите следующую команду, чтобы показать ваше текущее состояние:
/opt/vc/bin/tvservice -s
  1. Введите следующие команды, чтобы показать более подробную информацию о вашем мониторе:
/opt/vc/bin/tvservice -d edid.dat; /opt/vc/bin/edidparser edid.dat

Файл edid.dat также используется при решении проблем с дефолтным HDMI-режимом.

Пользовательский режим

Если ваш монитор требует режима, которого в вышеуказанных таблицах нет, то вы можете задать собственный CVT-режим:

hdmi_cvt=<width> <height> <framerate> <aspect> <margins> <interlace>

Значение По умолчанию Описание
width (требуется) Ширина в пикселях
height (требуется) Высота в пикселях
framerate (требуется) Частота обновления в Гц
aspect 3 Соотношение сторон: 1=4:3, 2=14:9, 3=16:9, 4=5:4, 5=16:10, 6=15:9
margins 0 0 = поля отключены, 1 = поля включены
interlace 0 0 = прогрессивная развертка, 1 = чересстрочная развертка
rb 0 0 = обычный режим, 1 = сниженный бланкинг

(Если вы хотите использовать дефолтные значения, нижними полями можно пренебречь.)

Обратите внимание, что эта команда просто создает режим (группа 2, режим 87), а для того, чтобы Raspberry Pi использовала его по умолчанию, вам нужно добавить еще несколько настроек. Например, нижеследующие строчки выберут разрешение 800х480 и установят HDMI-аудиовывод:

hdmi_cvt=800 480 60 6
hdmi_group=2
hdmi_mode=87
hdmi_drive=2

Впрочем, если ваш монитор не поддерживает стандартные CVT-тайминги, это может не сработать.

Общие настойки дисплея

HDMI_FORCE_HOTPLUG

Если выставить тут «1», Raspberry Pi притворится, что получила сигнал о подключении HDMI-разъема, и получится так, будто бы к Pi подключен HDMI-монитор. Другими словами, режим вывода HDMI будет использоваться, даже если HDMI-монитор не определен.

HDMI_IGNORE_HOTPLUG

Если задать в этой настройке «1», Raspberry Pi притворится, что не получила сигнал о подключении HDMI-разъема, и получится так, будто HDMI-дисплей к Pi не подключен. Другими словами, система будет использовать композитный режим, даже если к ней подключен HDMI-монитор.

DISABLE_OVERSCAN

Если задать тут «1», это отключит растянутую развертку.

OVERSCAN_LEFT

Тут указывается количество пикселей, которые нужно пропустить на левом краю экрана. Это значение следует увеличить, если текст убегает за левую часть экрана, и уменьшить, если между левым краем экрана и текстом есть черный промежуток.

OVERSCAN_RIGHT

Тут указывается количество пикселей, которые нужно пропустить на правом краю экрана.

OVERSCAN_TOP

Тут указывается количество пикселей, которые нужно пропустить на верхнем краю экрана.

OVERSCAN_BOTTOM

Тут указывается количество пикселей, которые нужно пропустить на нижнем краю экрана.

FRAMEBUFFER_WIDTH

Тут указывается ширина в пикселях для хранения в кадровом буфере консоли. Значение по умолчанию — ширина дисплея минус общая горизонтальная развертка.

FRAMEBUFFER_HEIGHT

Тут указывается высота в пикселях для хранения в кадровом буфере консоли. Значение по умолчанию — высота дисплея минус общая вертикальная развертка.

FRAMEBUFFER_DEPTH

Тут указывается битовая глубина (в битах на пиксель) для хранения в кадровом буфере консоли. Значение по умолчанию — «16».

framebuffer_depth Результат Примечания
8 8 бит Дефолтная RGB-палитра делает экран нечитаемым
16 16 бит
24 24 бита Изображение может получиться искаженным
32 32 бита Возможно, нужно будет использовать вместе с командой
framebuffer_ignore_alpha=1
FRAMEBUFFER_IGNORE_ALPHA

Если установить тут «1», это отключит альфа-канал. Может пригодиться при использовании дисплея с 32-битной битовой глубиной.

TEST_MODE

Во время загрузки демонстрирует тестовые изображение и звук (но только через выводы для композитного видео и аналогового аудио) на протяжении указанного количества секунд, а затем запускает ОС в обычном режиме. Эта опция использовалась в качестве фабричного теста. Значение по умолчанию — «0».

DISPLAY_ROTATE

Используется для того, чтобы повернуть экран на бок или сделать его зеркальное отражение. Значение по умолчанию — «0».

display_rotate Результат
0 Поворота нет
1 Поворот на 90 градусов по часовой стрелке
2 Поворот на 180 градусов по часовой стрелке
3 Поворот на 270 градусов по часовой стрелке
0х10000 Отразить по горизонтали
0х20000 Отразить по вертикали

Имейте в виду, что поворот на 90 и 270 градусов требует дополнительный GPU-памяти, поэтому если GPU_MEM выставить на «16», эти опции работать не будут.

Лицензионные ключи / Кодеки

У вас есть возможность аппаратного декодирования двух кодеков, и активировать ее можно через покупку лицензии, которая встроена в серийный номер CPU на Raspberry Pi.

DECODE_MPG2

Ключ, открывающий аппаратное декодирование MPEG-2, например,

decode_MPG2=0x12345678

.

DECODE_WVC1

Ключ, открывающий аппаратное декодирование VC-1, например,

decode_WVC1=0x12345678

.

Если у вас есть несколько Raspberry Pi, и вы купили лицензию для каждой из них, то все эти ключи необязательно рассовывать по разным config.txt — достаточно будет всего одного.

Например, это может выглядеть примерно следующим образом:

decode_MPG2=0x12345678, 0xabcdabcd, 0x87654321

.

Это позволит вам использовать одну и ту же SD-карту на разных Pi без необходимости каждый раз редактировать config.txt.

Загрузка
DISABLE_COMMANDLINE_TAGS

Если установить эту настройку на «1», start.elf не будет заполнять ATAGS (память начиная от 0x100), пока не запустится ядро.

CMDLINE

С помощью этой настройки можно задавать параметры командной строки в файле config.txt вместо cmdline.txt. Значение по умолчанию — cmdline.txt.

KERNEL

По умолчанию start.elf загружает ядро из файла kernel.img, находящегося в загрузочном разделе SD-карты (/boot). Однако благодаря этой настройке пользователь может поменять имя этого файла.

KERNEL_ADDRESS

Адрес блока памяти, в который нужно загрузить образ ядра.

KERNEL_OLD

Если поставить в этой настройке «1», это загрузит ядро по адресу 0x0.

RAMFSFILE

Дает другое название файлу для RAM FS, находящемуся в загрузочном разделе (/boot). Более подробно можно почитать тут.

RAMFSADDR

Адрес блока памяти, в который нужно загрузить ramfsfile.

INITRAMFS

Здесь указывается и имя файла для RAM FS, и адрес блока памяти, куда его нужно загрузить. Таким образом, эта настройка выполняет сразу две роли, вмещая в себя функционал параметров ramfsfile и ramfsaddr. Например, так:

initramfs iniramfs.gz 0x00800000

. Примечание: У этой опции не такой синтаксис, как у других — здесь не нужно использовать символ «=».

INIT_UART_BAUD

Начальная скорость передачи данных через UART (в бодах). Значение по умолчанию — «115200».

INIT_UART_CLOCK

Начальная тактовая частота при передаче данных через UART. Значение по умолчанию — «3000000» (3 МГц).

INIT_EMMC_CLOCK

Начальная тактовая частота при коммуникации с EMMC. Значение по умолчанию — «100000000» (100 МГц).

BOOTCODE_DELAY

Тут устанавливается количество секунд, которые bootcode.bin будет ждать перед загрузкой start.elf. Значение по умолчанию — «0».

Эта настройка может в особенности пригодиться, если Pi и монитор питаются от одного и того же источника, но монитор запускается дольше, чем Pi. В результате Pi при начальной загрузке не может определить монитор, но если Pi перезагрузить (и при этом не отключать от питания монитор), то монитор определяется нормально. Тут-то и пригодится параметр bootcode_delay, с помощью которого выставляется задержка перед считыванием EDID монитора и тем самым откладывается его запуск.

BOOT_DELAY

Тут указывается количество секунд, которые start.elf будет ждать перед загрузкой ядра. Значение по умолчанию — «1». Общая задержка в миллисекундах рассчитывается по формуле (1000 х boot_delay) + boot_delay_ms. Может пригодиться, к примеру, если вашей SD-карте нужно какое-то время на подготовку прежде чем Linux сможет с нее загрузиться.

BOOT_DELAY_MS

Тут указывается количество миллисекунд, которые start.elf вместе с boot_delay будут ждать перед загрузкой ядра. Значение по умолчанию — «0».

AVOID_SAFE_MODE

Если задать тут «1», не будет включен безопасный режим загрузки Raspberry Pi. Значение по умолчанию — «0».

DISABLE_SPLASH

Если установить тут «1», при загрузке не будет показан радужный экран. Значение по умолчанию — «0».

Дерево устройств

В config.txt есть несколько параметров для настройки дерева устройств. Они описаны отдельно — здесь.

Разгон

Примечание: Если выставить в разгонные параметры значения, отличные от тех, что используются в raspi-config, это запишет в SoC специальный бит, благодаря которому можно будет понять, разгонялась ли Raspberry Pi или нет. Поначалу эта функция использовалась, чтобы определить, лишать ли это устройство гарантии, поскольку разгон Raspberry Pi влияет на срок жизни ее кристалла. Впрочем, с 19 сентября 2012 вы можете разгонять Raspberry Pi, не опасаясь за гарантию. Более подробно — здесь, на странице о «Турбо-режиме».

В последней версии ядра имеется драйвер cpufreq, у которого по умолчанию включен регулятор, работающий «до востребования», то есть в зависимости от того, активированы ли у Raspberry Pi разгонные настройки или нет. Если не активированы, он никак не влияет на ситуацию, а если активированы, частота CPU будет меняться вместе с загрузкой процессора. То есть смысл этого регулятора в том, что значения, отличные от заданных по умолчанию, нужно использовать лишь при необходимости. Минимальные значения устанавливаются в параметрах, заканчивающихся на *min. Отключить разгон можно при помощи force_turbo=1.

Более подробно читайте тут.

Если SoC достигнет температуры в 85°C разгонные настройки (включая повышенное напряжение) будут автоматически отключены — чтобы охладить кристалл. В некоторых случаях у людей не получалось «догнать» температуру SoC и до 77°C даже при комнатной температуре в 25°C. Более подробно — тут.

Настройки для разгона

Опция Описание
arm_freq Частота ARM CPU в мегагерцах.

Значение по умолчанию — «700».

gpu_freq Разом задает значения для core_freq, h264_freq, isp_freq и v3d_freq.

Значение по умолчанию — «250».

core_freq Частота GPU в мегагерцах. Отражается на производительности CPU, поскольку влияет на кэш L2.

Значение по умолчанию — «250».

h264_freq Частота аппаратного видеоблока в мегагерцах.

Значение по умолчанию — «250».

isp_freq Частота системы обработки данных с датчика изображения (Image Sensor Processing или ISP) в мегагерцах.

Значение по умолчанию — «250».

v3d_freq Частота 3D-блока в мегагерцах.

Значение по умолчанию — «250».

avoid_pwm_pll PLL-генератор теперь не работает исключительно для ШИМ-аудио, что позволяет использовать core_freq независимо от других настроек GPU и, соответственно, дает больше контроля при разгоне. Если включить, слегка ухудшает качество аналогового аудио.

Значение по умолчанию — «0».

sdram_freq Частота SDRAM в мегагерцах. Значение по умолчанию — «400».
over_voltage Настройка напряжения для CPU и GPU. К примеру, значение [-16,8] соответствует [0.8V,1.4V] с шагом в 0.025V. Другими словами, значение «-16» даст вам напряжение в 0.8V, а «8» — напряжение в 1.4V. Значение по умолчанию — «0» (1.2V). Значения выше «6» разрешается устанавливать лишь при указании параметров force_turbo и current_limit_override. Коме того, эта настройка записывает гарантийный бит.
over_voltage_sdram Задает разом параметры over_voltage_sdram_c, over_voltage_sdram_i и over_voltage_sdram_p.
over_voltage_sdram_c Настройка напряжения для питания контроллера SDRAM. Значение [-16,8] соответствует [0.8V,1.4V] с шагом в 0.025V.

Значение по умолчанию — «0» (1.2V).

over_voltage_sdram_i Настройка напряжения для питания устройства ввода/вывода SDRAM. Значение [-16,8] соответствует [0.8V,1.4V] с шагом в 0.025V.

Значение по умолчанию — «0» (1.2V).

over_voltage_sdram_p Настройка напряжения для питания интерфейса PHY SDRAM. Значение [-16,8] соответствует [0.8V,1.4V] с шагом в 0.025V.

Значение по умолчанию — «0» (1.2V).

force_turbo Отключает динамический драйвер cpufreq и минимальные опции, указанные ниже. Включает разгонные опции для h264/v3d/isp.

Значение по умолчанию — «0». Коме того, эта настройка может записать гарантийный бит.

initial_turbo Включает «Турбо-режим» на указанное количество секунд (начиная с загрузки, но до 60 секунд) или пока cpufreq не установит частоту. Более подробно читайте тут. Эта настройка может пригодиться при повреждении SD-карты (если Pi находится в разогнанном состоянии).

Значение по умолчанию — «0».

arm_freq_min Минимальное значение для arm_freq, используемое для разгона.

Значение по умолчанию — «700».

core_freq_min Минимальное значение для core_freq, используемое для разгона.

Значение по умолчанию — «250».

sdram_freq_min Минимальное значение для sdram_freq, используемое для разгона.

Значение по умолчанию — «400».

over_voltage_min Минимальное значение для over_voltage, используемое для разгона.

Значение по умолчанию — «0».

temp_limit Защита от перегрева. Когда SoC достигает значения, указанного в этом параметре, автоматически включаются дефолтные настройки для разгона и напряжения. Если установить тут выше значения по умолчанию («85»), это аннулирует вашу гарантию.
current_limit_override Если установить тут значение «x5A000020», это отключит у источника питания защиту на предельный ток. Такое необычно громоздкое значение необходимо, чтобы не включить эту настройку по случайности. current_limit_override может пригодиться, к примеру, если вы установили для разгона слишком высокое значение, и загрузка Pi не удалась. Более подробно читайте тут. Изменение этого параметра может записать гарантийный бит.
FORCE_TURBO
force_turbo=0

Если выставить в этом параметре «0», это включит динамический разгон для CPU, ядра GPU и SDRAM. Суть динамического разгона в следующем: к примеру, если система будет в загруженном состоянии, частота CPU поднимется до значения, указанного в arm_freq, а при простое — снизится до значения, указанного в arm_freq_min.

Параметры core_freq, core_freq_min, sdram_freq, sdram_freq_min, over_voltage и over_voltage_min функционируют таким же образом. Значение для over_voltage ограничено «6» (1.35V). Недефолтные значения для h264, v3d и ISP игнорируются.


force_turbo=1

Если выставить в этом параметре «1», это отключит динамический разгон, вследствие чего все частоты и напряжение останутся на высоком уровне. Кроме того, это разрешит разгон для GPU-элементов h264, v3d и ISP, а в over_voltage теперь можно будет задать до «8» (1.4V). Более подробно — тут.

Соотношение частот

Ядро GPU, h264, v3d и ISP делят один и тот же PLL-блок, в связи с чем их частоты должны быть соотнесены друг с другом. Поскольку CPU, SDRAM и GPU имеют собственные PLL-блоки, их частотам это соотношение не требуется. Более подробно читайте тут.

Частоты высчитываются следующим образом:

pll_freq = floor(2400 / (2 x core_freq)) x (2 x core_freq)
gpu_freq = pll_freq / [четное число]

Значение для gpu_freq автоматически округляется до ближайшего четного целого числа. К примеру, если задать значения core_freq=500 и gpu_freq=300, в результате получится 2000/300 = 6,666 => 6. Следовательно, gpu_freq получит значение 333,33 МГц.

AVOID_PWM_PLL

Если установить тут «1», это «отвяжет» PLL-блок от ШИМ-устройства. В результате чуть ухудшится качество аналогового аудио, но зато gpu_freq можно будет устанавливать независимо от core_freq.

Наблюдение за температурой и напряжением

Чтобы посмотреть текущую температуру Pi, впишите следующее:

cat /sys/class/thermal/thermal_zone0/temp

Теперь, чтобы превратить это число в градусы Цельсия, поделите его на 1000.

Чтобы просмотреть текущую частоту Pi, впишите следующее:

cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq

Теперь, чтобы превратить это число в мегагерцы, поделите его на 1000.

Чтобы узнать напряжение на блоке питания Pi, вам понадобится мультиметр. С его помощью измерьте питание между тестовыми точками TP1 и TP2. Более подробно читайте на странице о питании.

Как правило, имеет смысл держать температуру ядра ниже 70°C, а напряжение — выше 4.8V. Также имейте в виду, что у некоторых USB-адаптеров напряжение может падать до 4.2V. Это происходит из-за того, что они, как правило, разрабатываются для питания 3,7-вольтовых литий-полимерных батарей, а не 5-вольтовых компьютеров. Кроме того, при разгоне Raspberry Pi может здорово пригодиться теплоотвод, особенно если Pi заключена в корпус. Для этой работы подойдет, например, самоприлипающий BGA-радиатор размерами 14 x 14 x 10 мм, купить который можно, например, тут.

Проблемы с разгоном

Большинство проблем с разгоном проявляются сию же секунду — у Pi просто не получается загрузиться. Если это случилось, во время следующей загрузки зажмите клавишу  ⇧ Shift , благодаря чему все разгонные настройки на время отключатся, а вы получите возможность успешно загрузиться и все поправить.

Условные фильтры

Когда SD-карта (или образ карты) используется с одними и теми же Pi и монитором, то можно просто указать в config.txt нужную комбинацию и спокойно работать, внося правки лишь в том случае, если что-то поменялось.

Однако если вы используете Pi с разными мониторами или если ваша SD-карта (или образ карты) используется на разных Pi, одного набора настроек может оказаться недостаточно. Тут-то и могут пригодиться условные фильтры — с их помощью в config.txt можно создать специальные секции, которые будут использоваться в строго определенных случаях. То есть благодаря этому вы сможете использовать один и тот же config.txt, чтобы задать в нем разные конфигурации, которые можно будет использовать для разного оборудования.

ФИЛЬТР [ALL]

Это самый базовый фильтр. Он сбрасывает все прежние фильтры, благодаря чему все настройки, указанные ниже этого фильтра, будут применяться ко всем используемым устройствам.

[all]

Как правило, имеет смысл добавить [all] в самом конце, после всех остальных фильтров, чтобы избежать непреднамеренного объединения фильтров (см. ниже).

ФИЛЬТРЫ [P1] И [PI2]

Все настройки, указанные ниже [pi1], применяются только к Pi1 (A, A+, B, B+). Все настройки ниже [pi2] применяются только к Pi2.

[pi1]
[pi2]

Это особенно полезно, если вам нужно задать разные значения в параметрах kernel, initramfs и cmdline, т.к. Pi1 и Pi2 требуются разные ядра. Кроме того, эти фильтры могут пригодиться при установке разных разгонных настроек для каждой платы, поскольку дефолтные частоты у них разные. Ниже — пример того, как задать разные initramfs:

[pi1]
initramfs initrd.img-3.18.7+ followkernel
[pi2]
initramfs initrd.img-3.18.7-v7+ followkernel
[all]

И не забудьте в самом конце поставить фильтр [all] — чтобы все последующие настройки не ограничивались только Pi2.

ФИЛЬТР [EDID=*]

В ситуации, когда вы пользуетесь одной SD-картой и вам нужно переключаться между разными мониторами, обычного config.txt может быть недостаточно, чтобы Pi автоматически выбирала необходимое разрешение для каждого монитора.

Тут-то и пригодится фильтр [EDID=*], который позволяет выбирать разные настройки в зависимости от EDID-имен разных мониторов.

Чтобы просмотреть EDID-имя монитора, запустите следующую команду:

tvservice -n

В ответ система покажет что-то вроде этого:

device_name=VSC-TD2220

Имея на руках эту информацию, вы можете указать настройки, которые будут применяться только для этого монитора. Как-то так:

[EDID=VSC-TD2220]
hdmi_group=2
hdmi_mode=82
[all]

Эти строчки включат на этом мониторе режим 1920 х 1080 DMT, но другие мониторы эти настройки затрагивать не будут.

Имейте в виду, что настройки, указанные таким образом, применяются только при загрузке. Следовательно, при загрузке монитор должен быть уже подключен к Pi, а Pi, в свою очередь, должна иметь возможность считать EDID этого монитора, чтобы выяснить, правильное ли у него имя. Другими словами, если после загрузки просто подключить к Pi другой монитор, то другие настройки выбраны не будут.

ФИЛЬТР ДЛЯ СЕРИЙНОГО НОМЕРА

Иногда требуется, чтобы настройки применялись к конкретной Pi — даже если вы вставили SD-карту в какую-то другую Pi. Например, в случаях с разными лицензионными ключами и разгонными настройками (впрочем, для лицензионных ключей «кочующие» SD-карты — уже не помеха, но там используются не фильтры, а другой метод). Кроме того, этот фильтр можно использовать для выбора разных дисплейных настроек, даже если EDID-идентификация по какой-то причине невозможна (при условии, что вы используете лишь один монитор) – к примеру, если монитор не может дать корректное EDID-имя или если вы используете композитный выход (через который EDID прочесть нельзя).

Чтобы посмотреть серийный номер вашей Pi, запустите следующую команду:

cat /proc/cpuinfo

Серийный номер будет показан ниже — в виде шестнадцатеричного значения. К примеру, вы можете увидеть следующее:

Serial          : 0000000012345678

Используя эту информацию, вы можете задать настройки только для какой-то одной Pi. Примерно так:

[0x12345678]
# настройки только для Pi с этим серийным номером
[all]
# настройки для всех устройств
ОБЪЕДИНЕНИЕ УСЛОВНЫХ ФИЛЬТРОВ

Фильтры одного и того же типа друг друга заменяют (к примеру, [pi2] заменяет [pi1], т.к. в один и тот же момент времени оба фильтра использовать нельзя).

Фильтры разных типов можно объединить — просто перечислив их друг за другом. Например:

# настройки для всех устройств
[EDID=VSC-TD2220]
# настройки только если подключен монитор VSC-TD2220
[pi2]
# настройки только если подключен монитор VSC-TD2220, и если он подключен к Pi2
[all]
# настройки для всех устройств

Обязательно пользуйтесь фильтром [all] — это сбросит все предыдущие фильтры и позволит избежать случайного объединения фильтров разных типов.

См.также

Внешние ссылки