Вопрос или проблема
Мне пришлось жестко перезагрузить мой Raspberry Pi (отключив питание), на котором работает Ubuntu Server 20.04, и с тех пор я не могу запустить консольный музыкальный плеер mocp
. Программа проходит инициализацию драйверов OSS и ALSA, а затем выдает ошибку с сообщением FATAL_ERROR: No valid sound driver!
Я пытался удалить пакет (через apt-get purge mocp
) и заново установить его, но сообщение об ошибке остается. Поиск в Google по этому вопросу выдал несколько очень старых тем (здесь и здесь) на форумах MOC, где предполагается, что проблема может быть связана либо с ALSA, либо со звуковой картой, но я не уверен в этом, так как, когда я запускаю alsamixer
, он запускается, и я могу, например, изменить его громкость. Плюс ко всему, если я запускаю другие программы, которые используют аудио, например, mpg123, звук работает нормально.
Подробный лог ошибок, извлеченный с помощью mocp -F
, показан ниже, извините, если он немного многословный. Кто-нибудь знает, что может вызывать эту проблему?
Большое спасибо!
31 авг 15:34:23.139072: main.c:1191 main(): Это Music On Console (версия 2.6-alpha3)
31 авг 15:34:23.139216: main.c:1195 main(): Настроено: '--build=arm-linux-gnueabihf' '--prefix=/usr' '--includedir=${prefix}/include' '--mandir=${prefix}/share/man' '--infodir=${prefix}/share/info' '--sysconfdir=/etc' '--localstatedir=/var' '--disable-silent-rules' '--libdir=${prefix}/lib/arm-linux-gnueabihf' '--runstatedir=/run' '--disable-maintainer-mode' '--disable-dependency-tracking' 'build_alias=arm-linux-gnueabihf' 'CFLAGS=-g -O2 -fdebug-prefix-map=/build/moc-NiZ4Xl/moc-2.6.0~svn-r2994=. -fstack-protector-strong -Wformat -Werror=format-security -Wall -pedantic' 'LDFLAGS=-Wl,-Bsymbolic-functions -Wl,-z,relro -Wl,-z,now -Wl,--as-needed' 'CPPFLAGS=-Wdate-time -D_FORTIFY_SOURCE=2' 'CXXFLAGS=-g -O2 -fdebug-prefix-map=/build/moc-NiZ4Xl/moc-2.6.0~svn-r2994=. -fstack-protector-strong -Wformat -Werror=format-security'
31 авг 15:34:23.139240: main.c:1205 main(): Запуск на: Linux 5.4.0-1015-raspi armv7l
31 авг 15:34:23.140180: main.c:1157 log_command_line(): mocp -F
31 авг 15:34:23.140265: main.c:1171 log_popt_command_line(): mocp --foreground
31 авг 15:34:23.159074: decoder.c:700 load_plugins(): Загружено 11 декодеров: aac flac modplug mp3 musepack opus sidplay2 sndfile speex vorbis wavpack
31 авг 15:34:23.159160: server.c:360 server_init(): Запуск MOC Server
31 авг 15:34:23.159210: log.c:233 log_init_stream(): Запись лога в: stdout
31 авг 15:34:23.159384: server.c:300 log_process_stack_size(): Размер стека процесса: 8388608
31 авг 15:34:23.159402: server.c:317 log_pthread_stack_size(): Размер стека PThread: 8388608
Пробую JACK...
31 авг 15:34:23.160789: jack.c:121 error_cb(): ОШИБКА: JACK: Не удается подключиться к серверному сокету err = Нет такого файла или каталога
31 авг 15:34:23.160809: server.c:672 add_event_all(): Не добавлено ни одного события, так как клиентов нет
31 авг 15:34:23.160847: jack.c:121 error_cb(): ОШИБКА: JACK: Не удается подключиться к каналу запроса сервера
31 авг 15:34:23.160861: server.c:672 add_event_all(): Не добавлено ни одного события, так как клиентов нет
31 авг 15:34:23.163010: jack.c:121 error_cb(): ОШИБКА: JACK: сервер jack не запущен или не может быть запущен
31 авг 15:34:23.163028: server.c:672 add_event_all(): Не добавлено ни одного события, так как клиентов нет
31 авг 15:34:23.163298: jack.c:121 error_cb(): ОШИБКА: JACK: JackShmReadWritePtr::~JackShmReadWritePtr - Инициализация не выполнена для -1, пропуск разблокировки
31 авг 15:34:23.163317: server.c:672 add_event_all(): Не добавлено ни одного события, так как клиентов нет
31 авг 15:34:23.163332: jack.c:121 error_cb(): ОШИБКА: JACK: JackShmReadWritePtr::~JackShmReadWritePtr - Инициализация не выполнена для -1, пропуск разблокировки
31 авг 15:34:23.163344: server.c:672 add_event_all(): Не добавлено ни одного события, так как клиентов нет
31 авг 15:34:23.163369: jack.c:148 moc_jack_init(): ОШИБКА: jack_client_open() завершился неудачей, статус = 0x11
31 авг 15:34:23.163381: server.c:672 add_event_all(): Не добавлено ни одного события, так как клиентов нет
31 авг 15:34:23.163393: jack.c:150 moc_jack_init(): ОШИБКА: Не удается подключиться к JACK серверу
31 авг 15:34:23.163404: server.c:672 add_event_all(): Не добавлено ни одного события, так как клиентов нет
Пробую ALSA...
31 авг 15:34:23.163423: alsa.c:477 alsa_init(): Инициализация устройства ALSA: по умолчанию
31 авг 15:34:23.165678: alsa.c:365 alsa_init_mixer_channel(): ОШИБКА: Не удается найти микшер PCM
31 авг 15:34:23.165710: server.c:672 add_event_all(): Не добавлено ни одного события, так как клиентов нет
31 авг 15:34:23.165733: alsa.c:365 alsa_init_mixer_channel(): ОШИБКА: Не удается найти микшер Master
31 авг 15:34:23.165751: server.c:672 add_event_all(): Не добавлено ни одного события, так как клиентов нет
Пробую OSS...
31 авг 15:34:23.165829: oss.c:206 oss_init(): ОШИБКА: Не удается открыть устройство микшера /dev/mixer: Нет такого файла или каталога
31 авг 15:34:23.165851: server.c:672 add_event_all(): Не добавлено ни одного события, так как клиентов нет
31 авг 15:34:23.165899: oss.c:71 open_dev(): ОШИБКА: Не удается открыть /dev/dsp: Нет такого файла или каталога
31 авг 15:34:23.165918: server.c:672 add_event_all(): Не добавлено ни одного события, так как клиентов нет
31 авг 15:34:23.165939: oss.c:87 set_capabilities(): ОШИБКА: Не удается открыть устройство.
31 авг 15:34:23.165956: server.c:672 add_event_all(): Не добавлено ни одного события, так как клиентов нет
31 авг 15:34:23.166034: audio.c:926 find_working_driver(): ФАТАЛЬНАЯ ОШИБКА: Нет действующего звукового драйвера!
У меня тоже были проблемы с запуском mocp
на моем RPi.
Было несколько проблем:
- мой пользователь не был в группе
audio
, поэтому мне приходилось использовать sudo для запускаamixer
. Добавление моего пользователя в эту группу решило эту проблему. - в моем конфигурационном файле (
~/.moc/config
, который был копией из/usr/share/doc/moc/examples/config.example
) настройки ALSA былиPCM
иMaster
. - при запуске с
sudo
этот файл настроек в папке моего пользователя игнорировался - при использовании
-C
или--config
файл конфигурации считался “небезопасным”, потому что я запускал от sudo, а файл конфигурации принадлежал моему пользователю, а не root. - когда я запускал
amixer
, он показывалSimple mixer control 'Headphone',0
- как только я установил настройки ALSA в конфигурации moc, чтобы использовать
Headphone
вместоMaster
илиPCM
, все заработало
Ответ или решение
Чтобы решить проблему "Не найден действительный звуковой драйвер" при запуске Music On Console (mocp) на Raspberry Pi с Ubuntu Server 20.04, выполните следующие шаги:
1. Проверьте наличие нужных драйверов
Убедитесь, что у вас установлены и загружены звуковые драйверы ALSA. Для этого выполните следующую команду:
lsmod | grep snd
Если вы не видите драйверов ALSA, попробуйте установить их с помощью:
sudo apt-get install alsa-base alsa-utils
2. Добавьте пользователя в группу audio
Убедитесь, что ваш пользователь добавлен в группу audio
, чтобы иметь доступ к звуковым устройствам. Выполните следующую команду (замените username
на ваше имя пользователя):
sudo usermod -aG audio username
После внесения изменений войдите в систему снова или перезагрузите Raspberry Pi.
3. Проверьте конфигурацию MOC
Откройте файл конфигурации MOC, который обычно находится по пути ~/.moc/config
. Если он отсутствует, вы можете создать его, скопировав пример:
cp /usr/share/doc/moc/examples/config.example ~/.moc/config
В файле настройки проверьте параметры ALSA. Найдите следующие строки и измените их, если это необходимо:
# Убедитесь, что настройки выглядят следующим образом:
PCM = Headphone # или другое имя вашего устройства
Master = Headphone # аналогично, если pcm называется иначе, используйте его имя
Вы можете использовать команду amixer
для определения доступных контроллеров звука:
amixer
4. Отключите JACK, если он не используется
Ваш вывод показывает, что MOC пытается подключиться к JACK, который не запущен. Если вы не используете JACK, убедитесь, что он не выбран в конфигурации MOC или удалите его полностью (если нужно). В вашем конфигурационном файле проверьте, нет ли параметров, связанных с JACK.
5. Перезагрузите MOC и проверьте
Теперь попробуйте снова запустить MOC:
mocp
Если проблема не исчезла, попробуйте задать конфигурацию непосредственно через командную строку, используя:
mocp -C ~/.moc/config
6. Убедитесь, что нет конфликтов с правами доступа
Если вы запускали MOC с помощью sudo
, убедитесь, что права доступа к файлу конфигурации корректны. Вы можете изменить пользователя файла:
sudo chown username:username ~/.moc/config
Запуск после исправлений
После выполнения этих шагов MOC должен успешно запуститься. Если проблема все еще возникает, проверьте логи и убедитесь, что другие приложения, использующие звук, работают корректно (например, mpg123
). Если вы видите ошибки, связанные с командой ALSA, это может указывать на проблемы с конфигурацией или с самим звуковым оборудованием.
Заключение
Если у вас остались вопросы или проблемы, пожалуйста, дайте знать, предоставив дополнительные детали вашей конфигурации и возможные сообщения об ошибках.