No HDMI Audio com 16.04.3, nouveau, 4.13.0-29-genérico, GT330m e MacBookPro6,2

0

Eu tenho um MacBook Pro6,2 (meados de 2010 15 ', Intel IronLake + Nvidia GT216) no qual eu instalei o Ubuntu 16.04.3 e atualizei para o Linux 4.13.0-29-genérico. Decidi EFI Boot para melhorar a ACPI e ter todos os dispositivos acessíveis nativamente (Macs pré-2011 habilitam todo hardware para qualquer inicialização EFI, 2011 e mais tarde precisam ter o Apple-set-os corrigido para habilitar todo o hardware) e para inicialização mais rápida. Nesta máquina em particular, eu prefiro ter o Intel acionando o monitor interno, e o Nvidia o externo com o seguinte outb no grub2:

outb 0x728 1 --> Switch select
outb 0x710 2 --> Switch display
outb 0x740 2 --> Switch DDC (Display Data Controller?)

Eu não tenho outb 0x750, pois isso desativa o dGPU no nível PCI-e (ele desaparece do PCI-e inteiramente com outb 0x750 0), mas eu o faço para que o monitor LVDS 1680x1050 seja acionado apenas pela Intel. Ambos os dispositivos Nvidia (GPU e controlador de áudio HDMI / DP) aparecem e são carregados.

$ lspci -nnk | grep -A 3 10de
01:00.0 VGA compatible controller [0300]: NVIDIA Corporation GT216M [GeForce GT 330M] [10de:0a29] (rev a2)
    Subsystem: Apple Inc. GT216M [GeForce GT 330M] [106b:00c7]
    Kernel driver in use: nouveau
    Kernel modules: nvidiafb, nouveau
01:00.1 Audio device [0403]: NVIDIA Corporation GT216 HDMI Audio Controller [10de:0be2] (rev a1)
    Kernel driver in use: snd_hda_intel
    Kernel modules: snd_hda_intel

A questão é que o áudio HDMI não funciona (funciona com todos os lançamentos macOS suportados, então é definitivamente o linux.) Eu verifiquei o ELD:

$ grep -R -e eld_valid /proc/asound/ 
/proc/asound/card1/eld#0.0:eld_valid        0
/proc/asound/card1/eld#1.0:eld_valid        0
/proc/asound/card1/eld#2.0:eld_valid        0
/proc/asound/card1/eld#3.0:eld_valid        0
/proc/asound/NVidia/eld#0.0:eld_valid       0
/proc/asound/NVidia/eld#1.0:eld_valid       0
/proc/asound/NVidia/eld#2.0:eld_valid       0
/proc/asound/NVidia/eld#3.0:eld_valid       0
$ grep -R -e monitor_present /proc/asound/ 
/proc/asound/card1/eld#0.0:monitor_present      0
/proc/asound/card1/eld#1.0:monitor_present      0
/proc/asound/card1/eld#2.0:monitor_present      0
/proc/asound/card1/eld#3.0:monitor_present      0
/proc/asound/NVidia/eld#0.0:monitor_present     0
/proc/asound/NVidia/eld#1.0:monitor_present     0
/proc/asound/NVidia/eld#2.0:monitor_present     0
/proc/asound/NVidia/eld#3.0:monitor_present     0
# Note: The /proc/asound/NVidia folder is just a symlink --> /proc/asound/card1

Eu também recebi o edid para meu monitor, ambos de get-edid e ioreg -l | grep IODisplayEDID e ambos eram idênticos, então o EDID estava sendo capturado corretamente. Note que o vídeo HDMI funciona perfeitamente, apenas o áudio não é funcional. Meu monitor é um Samsung SyncMaster TA550. Múltiplos outros monitores HDMI e TVs também não emitem áudio. Vou postar o EDID da Samsung aqui, se for útil.

$ diff edid_fromi2c.txt edid_fromioreg.txt
$ echo $?
0 # The files are identical
$ cat edid_fromi2c.txt | base64
AP///////wBMLbUHAAAAADAUAQOANR54CrpBoVlVnSgNUFS/74BxT4EAgUCBgJUAlQ+zAAEBAjqA
GHE4LUBYLEUAEyshAAAeZiFQsFEAGzBAcDYAEyshAAAeAAAA/QAYSxpRFwAKICAgICAgAAAA/ABT
TVQyNEE1NTAKICAgAVcCAyPxS5AfBBMFFAMSICEiIwkHB4MBAADiAA9nAwwAEAC4LQEdAHJR0B4g
bihVAKBaAAAAHgEdALxS0B4guChVQKBaAAAAHgEdgBhxHBYgWCwlAKBaAAAAngEdgNByHBYgECwl
gKBaAAAAngAAAAAAAAAAAAAAAAAAAAAAAAAADQ==

$ cat edid_fromi2c.txt | edid-decode
... <cut for clarity> ...
CEA extension block
Extension version: 3
31 bytes of CEA data
  Video data block
... <cut for clarity> ... 
  Audio data block
    Linear PCM, max channels 1
    Supported sample rates (kHz): 48 44.1 32
    Supported sample sizes (bits): 24 20 16

Lista de dispositivos ALSA:

$ aplay -L
default
    Playback/recording through the PulseAudio sound server
null
    Discard all samples (playback) or generate zero samples (capture)
pulse
    PulseAudio Sound Server
sysdefault:CARD=MID
    HDA Intel MID, CS4206 Analog
    Default Audio Device
front:CARD=MID,DEV=0
    HDA Intel MID, CS4206 Analog
    Front speakers
surround21:CARD=MID,DEV=0
    HDA Intel MID, CS4206 Analog
    2.1 Surround output to Front and Subwoofer speakers
surround40:CARD=MID,DEV=0
    HDA Intel MID, CS4206 Analog
    4.0 Surround output to Front and Rear speakers
surround41:CARD=MID,DEV=0
    HDA Intel MID, CS4206 Analog
    4.1 Surround output to Front, Rear and Subwoofer speakers
surround50:CARD=MID,DEV=0
    HDA Intel MID, CS4206 Analog
    5.0 Surround output to Front, Center and Rear speakers
surround51:CARD=MID,DEV=0
    HDA Intel MID, CS4206 Analog
    5.1 Surround output to Front, Center, Rear and Subwoofer speakers
surround71:CARD=MID,DEV=0
    HDA Intel MID, CS4206 Analog
    7.1 Surround output to Front, Center, Side, Rear and Woofer speakers
iec958:CARD=MID,DEV=0
    HDA Intel MID, CS4206 Digital
    IEC958 (S/PDIF) Digital Audio Output
dmix:CARD=MID,DEV=0
    HDA Intel MID, CS4206 Analog
    Direct sample mixing device
dmix:CARD=MID,DEV=1
    HDA Intel MID, CS4206 Digital
    Direct sample mixing device
dsnoop:CARD=MID,DEV=0
    HDA Intel MID, CS4206 Analog
    Direct sample snooping device
dsnoop:CARD=MID,DEV=1
    HDA Intel MID, CS4206 Digital
    Direct sample snooping device
hw:CARD=MID,DEV=0
    HDA Intel MID, CS4206 Analog
    Direct hardware device without any conversions
hw:CARD=MID,DEV=1
    HDA Intel MID, CS4206 Digital
    Direct hardware device without any conversions
plughw:CARD=MID,DEV=0
    HDA Intel MID, CS4206 Analog
    Hardware device with all software conversions
plughw:CARD=MID,DEV=1
    HDA Intel MID, CS4206 Digital
    Hardware device with all software conversions
hdmi:CARD=NVidia,DEV=0
    HDA NVidia, HDMI 0
    HDMI Audio Output
hdmi:CARD=NVidia,DEV=1
    HDA NVidia, HDMI 0
    HDMI Audio Output
hdmi:CARD=NVidia,DEV=2
    HDA NVidia, HDMI 0
    HDMI Audio Output
hdmi:CARD=NVidia,DEV=3
    HDA NVidia, HDMI 0
    HDMI Audio Output
dmix:CARD=NVidia,DEV=3
    HDA NVidia, HDMI 0
    Direct sample mixing device
dmix:CARD=NVidia,DEV=7
    HDA NVidia, HDMI 0
    Direct sample mixing device
dmix:CARD=NVidia,DEV=8
    HDA NVidia, HDMI 0
    Direct sample mixing device
dmix:CARD=NVidia,DEV=9
    HDA NVidia, HDMI 0
    Direct sample mixing device
dsnoop:CARD=NVidia,DEV=3
    HDA NVidia, HDMI 0
    Direct sample snooping device
dsnoop:CARD=NVidia,DEV=7
    HDA NVidia, HDMI 0
    Direct sample snooping device
dsnoop:CARD=NVidia,DEV=8
    HDA NVidia, HDMI 0
    Direct sample snooping device
dsnoop:CARD=NVidia,DEV=9
    HDA NVidia, HDMI 0
    Direct sample snooping device
hw:CARD=NVidia,DEV=3
    HDA NVidia, HDMI 0
    Direct hardware device without any conversions
hw:CARD=NVidia,DEV=7
    HDA NVidia, HDMI 0
    Direct hardware device without any conversions
hw:CARD=NVidia,DEV=8
    HDA NVidia, HDMI 0
    Direct hardware device without any conversions
hw:CARD=NVidia,DEV=9
    HDA NVidia, HDMI 0
    Direct hardware device without any conversions
plughw:CARD=NVidia,DEV=3
    HDA NVidia, HDMI 0
    Hardware device with all software conversions
plughw:CARD=NVidia,DEV=7
    HDA NVidia, HDMI 0
    Hardware device with all software conversions
plughw:CARD=NVidia,DEV=8
    HDA NVidia, HDMI 0
    Hardware device with all software conversions
plughw:CARD=NVidia,DEV=9
    HDA NVidia, HDMI 0
    Hardware device with all software conversions

Nenhum dos dispositivos ALSA HDMI funciona. speaker-test falha, assim como qualquer outro programa da ALSA. Eu tentei os drivers proprietários da Nvidia (eu não quero usá-los, mas apenas para ver) e eles tiveram o mesmo problema. O que está acontecendo?

    
por Daniel Rodriguez 31.01.2018 / 05:33

0 respostas