Аудио HDMI останавливается после выключения телевизора


10

После обновления 12.04 звук HDMI перестает работать в любое время, когда я выключаю второй монитор (плазменный телевизор). Видеокарта представляет собой Radeon 6800 с выходом DVI на 1-й монитор, выходом HDMI на приемник, по которому телевизор получает аудио / видео. Аудио всегда через звук моего ресивера.

Все работает нормально, пока он загружается с включенным телевизором и приемником. Выключите телевизор, и звук HDMI через BART исчезнет, ​​а параметр HDMI исчезнет из меню звука. У меня была случайная проблема HDMI с 11.10, но включение / выключение телевизора исправило бы звук. Как я могу жестко закодировать вещи, чтобы он всегда использовал HDMI из аудио? Я подозреваю, что телевизор посылает сигнал о том, что сейчас 12.04 слушает. Повторное включение телевизора НЕ решает эту проблему, и я хотел бы предложить возможность переопределить эту новую «функцию» через звуковое меню.



есть отчет об ошибке - но на панели запуска нет решения: bugs.launchpad.net/ubuntu/+source/fglrx-installer/+bug/1001842
главный герой hiro

Ответы:


9

У меня была эта проблема. Я не мог найти достойного решения, но у меня есть эта работа вокруг. Обратите внимание, что это ужасный хак, но он выполняет свою работу до тех пор, пока проблема с корнем не будет устранена - надеюсь, это поможет кому-то еще. Каждые 5 секунд он проверяет dmesg на наличие ошибок подключения HDMI и, если обнаруживает ошибку, перезапускает соединение.

Я сделал этот сторожевой скрипт - замените «DFP1» на имя вашего вывода (получите его от xrandr).

#!/usr/bin/env python
import os
import time

valid = "ELD_Valid=1"
invalid = "ELD_Valid=0"

def executeCommand(the_command):
    temp_list = os.popen(the_command).read()
    return temp_list

def getDMESG():
    return executeCommand("dmesg | grep -i hdmi | tail -n 10")

def needsRefresh():
    list = getDMESG();
    valid_index = list.rfind(valid)
    invalid_index = list.rfind(invalid)
    if invalid_index > valid_index:
        return True
    else:
        return False

def doTest():
    if needsRefresh() == True:
        os.popen("xrandr -display :0 --output DFP1 --off; xrandr -display :0 --output DFP1 --auto").read()

while True:
    doTest()
    time.sleep(5)

Если кто-нибудь знает лучший способ обнаружения ошибки (с драйверами катализатора), пожалуйста, дайте мне знать. (С драйверами с открытым исходным кодом, я думаю, вы могли бы запустить бит сброса кода в событиях drm acpi, если вы хотите выполнить некоторые сценарии).

Я начинаю это, добавляя это в /etc/rc.local: (измените "xbmc" на имя пользователя, под которым вы входите)

su xbmc -c 'python /home/USERNAME/src/check_hdmi.py &'

Скрипт работает, но не автоматизирует с rc.local. Не могли бы вы показать, как должен выглядеть rc.local?
ECII

Можно ли добавить скрипт в cron и запускать его каждую минуту или около того?
ECII

Вы можете вставить в cron. Вам придется удалить весь while True:блок и заменить его просто doTest(). Это может занять некоторое время - убедитесь, что он запущен в cron (не root) вошедших в систему пользователей.
Vanilla_Brys

Мой rc.local содержит несколько вещей. Внизу это имеет следующее: su xbmc -c 'python /home/andy/src/check_hdmi.py &'затем на новой строке exit 0. Вы заменили xbmcправильное имя пользователя?
Vanilla_Brys

Если вы используете обычную рабочую среду (я использую xbmc, так что нет), вы, возможно, просто добавили бы скрипт python в свои приложения запуска.
Vanilla_Brys

4

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

Просто вытащите ttyи вернитесь к вашему GUI:

CTRL+ ALT+ F1 (или что-нибудь из F1в F6)

затем

CTRL+ ALT+ F8(возможно, вам придется использовать F7вместо F8. Один из них вернет вас на рабочий стол, другой даст черный экран и курсор)

Кажется, синхронизация восстанавливается при возврате в графический интерфейс.

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

Комбинация кнопок. Выполнено. Без проблем.

Это, конечно, не исправить. Это просто быстрая комбинация клавиатуры, чтобы обмануть HDMI для повторной синхронизации и, таким образом, вернуть звук.

Это работает на моем конце.
Кто-нибудь еще хочет на секунду выключить телевизор и попробовать?


2

Я заметил, что если вы выключите выход на телевизор и включите его снова, он также сбрасывает звук (Radeon HD6670). Команды aticonfig настраивают отображение на весь экран моего телевизора. Вам нужно узнать имя выходного файла, запустив «xrandr -q», изменив «DFP1» на то, что указано перед «CONNECTED» в выходных данных команды (оно чувствительно к регистру). Единственная проблема с этим в моей настройке состоит в том, что некоторые окна частично выпрыгивают из верхней части экрана при запуске части скрипта вкл / выкл (Alt-Drag их обратно, если это происходит с вами). Может быть, кто-то может написать лучшее решение / обходной путь.

#! /bin/bash

# Turn off the DFP1 Output
xrandr --output DFP1 --off
# Turn DFP1 back on
xrandr --auto 

# Set Screen to fit TV
aticonfig --set-dispattrib=dfp1,positionX:0
aticonfig --set-dispattrib=dfp1,positionY:0
aticonfig --set-dispattrib=dfp1,sizeX:1920
aticonfig --set-dispattrib=dfp1,sizeY:1080

1

Та же проблема. Единственный совет, который я получил, это после бегаpactl list

Sink #0
    State: SUSPENDED
    Name: alsa_output.pci-0000_01_00.1.hdmi-stereo
    Description: Turks HDMI Audio [Radeon HD 6000 Series] Digital Stereo (HDMI)
    Driver: module-alsa-card.c
    Sample Specification: s16le 2ch 44100Hz
    Channel Map: front-left,front-right
    Owner Module: 4
    Mute: no
    Volume: 0: 100% 1: 100%
            0: 0.00 dB 1: 0.00 dB
            balance 0.00
    Base Volume: 100%
                 0.00 dB
    Monitor Source: alsa_output.pci-0000_01_00.1.hdmi-stereo.monitor
    Latency: 0 usec, configured 0 usec
    Flags: HARDWARE DECIBEL_VOLUME LATENCY SET_FORMATS 
    Properties:
        alsa.resolution_bits = "16"
        device.api = "alsa"
        device.class = "sound"
        alsa.class = "generic"
        alsa.subclass = "generic-mix"
        alsa.name = "HDMI 0"
        alsa.id = "HDMI 0"
        alsa.subdevice = "0"
        alsa.subdevice_name = "subdevice #0"
        alsa.device = "3"
        alsa.card = "1"
        alsa.card_name = "HD-Audio Generic"
        alsa.long_card_name = "HD-Audio Generic at 0xfddfc000 irq 48"
        alsa.driver_name = "snd_hda_intel"
        device.bus_path = "pci-0000:01:00.1"
        sysfs.path = "/devices/pci0000:00/0000:00:02.0/0000:01:00.1/sound/card1"
        device.bus = "pci"
        device.vendor.id = "1002"
        device.vendor.name = "Advanced Micro Devices [AMD] nee ATI"
        device.product.name = "Turks HDMI Audio [Radeon HD 6000 Series]"
        device.string = "hdmi:1"
        device.buffering.buffer_size = "65536"
        device.buffering.fragment_size = "32768"
        device.access_mode = "mmap+timer"
        device.profile.name = "hdmi-stereo"
        device.profile.description = "Digital Stereo (HDMI)"
        device.description = "Turks HDMI Audio [Radeon HD 6000 Series] Digital Stereo (HDMI)"
        alsa.mixer_name = "ATI R6xx HDMI"
        alsa.components = "HDA:1002aa01,00aa0100,00100200"
        module-udev-detect.discovered = "1"
        device.icon_name = "audio-card-pci"
    Ports:
        hdmi-output-0: HDMI / DisplayPort (priority: 5900, not available)
    Active Port: hdmi-output-0
    Formats:
        pcm

Вроде выключение монитора отключает раковину? и не включается при повторном включении телевизора. HDMI-выход-0: HDMI / DisplayPort (приоритет: 5900, недоступно )

« недоступно » должно быть « доступно »

Я предполагаю, что вы используете карту ATI с fglrx. пытаться

aticonfig --acpi-services=off

Не уверен, что этот параметр является постоянным. Если это так, команда включить снова.

aticonfig --acpi-services=on

Я сомневаюсь, что это сработает. РЕДАКТИРОВАТЬ> (Это не так)

Как пользователь53740 опубликовал. Выход из системы / восстановление восстанавливает звук. Включение или выключение монитора отключает звук HDMI. Если вы действительно не хотите выходить из системы, вы можете снова удалить плагин hdmi, и звук hdmi будет восстановлен. Не делай это слишком часто. Только когда вы в отчаянии.

Существует поток здесь Зонд в dodgey сообщения об ошибке здесь

РЕДАКТИРОВАТЬ> Другой обходной путь - перейдите в Настройки системы> Дисплей. Затем нажмите «Применить», ничего не меняя.


1

Зайдите в Настройки системы → Дисплеи

Измените разрешение, примените, затем измените его обратно.

Все настройки → Звук → выберите HDMI


0

Имея ту же проблему.

Конечно, драйверы ATI, вероятно, также являются причиной проблем. Мой Radeon HD 6xxx.

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


0

Решенные GD Мужская уборная

Была такая же проблема, только мой http с ATI 5770 был подключен к приемнику, а затем к телевизору. Решил эту проблему, загрузив и установив последний пакет драйверов BETA с веб-сайта AMD.

Вот ссылка ATI Radeon

Большое спасибо за ссылку на бета-драйвер Catalyst ™ 12.7. Я долго искал в Google, и ни у кого не было простого ответа на эту досадную проблему.

Но после установки бета-драйвера AMD Catalyst 12.7 для Windows ® 7 и Windows Vista®

все в порядке!

Весьма признателен.:)


Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.