AudioDxe
High Definition Audio (HDA) support driver in UEFI firmware for most Intel and some other analog audio controllers.
Note: AudioDxe is a staging driver, refer to acidanthera/bugtracker#740 for known issues.
Configuration
Most UEFI audio configuration is handled via the UEFI Audio Properties section, but in addition some of the following configuration options may be required in order to allow AudioDxe to correctly drive certain devices. All options are specified as text strings, separated by space if more than one option is required, in the Arguments
property for the driver within the UEFI/Drivers
section:
-
--codec-setup-delay
- Integer value, default0
. Amount of time in milliseconds to wait for all widgets to come fully on, applied per codec during driver connection phase. In most systems this should not be needed and a faster boot will be achieved by usingAudio
sectionSetupDelay
if any audio setup delay is required. Where required, values of up to one second may be needed. -
--force-device
- String value, no default. When this option is present and has a value (e.g.--force-device=PciRoot(0x0)/Pci(0x1f,0x3)
), it forces AudioDxe to connect to the specified PCI device, even if the device does not report itself as an HDA audio controller.During driver connection, AudioDxe automatically provides audio services on all supported codecs of all available HDA controllers. However, if the relevant controller is misreporting its identity (typically, it will be reporting itself as a legacy audio device instead of an HDA controller) then this argument may be required.
Applies if the audio device can be made to work in macOS, but shows no sign of being detected by AudioDxe (e.g. when including
DEBUG_INFO
inDisplayLevel
and using aDEBUG
build of AudioDxe, no controller and codec layout information is displayed during theConnecting drivers...
phase of OpenCore log). -
--gpio-setup
- Default value is0
(GPIO setup disabled) if argument is not provided, or7
(all GPIO setup stages stages enabled) if the argument is provided with no value.Available values, which may be combined by adding, are: –
0x00000001
(bit0
) —GPIO_SETUP_STAGE_DATA
, set GPIO pin data high on specified pins. Required e.g. onMacBookPro10,2
andMacPro5,1
. –0x00000002
(bit1
) —GPIO_SETUP_STAGE_DIRECTION
, set GPIO data direction to output on specified pins. Required e.g. onMacPro5,1
. –0x00000004
(bit2
) —GPIO_SETUP_STAGE_ENABLE
, enable specified GPIO pins. Required e.g. onMacPro5,1
.If audio appears to be ‘playing’ on the correct codec, e.g. based on the debug log, but no sound is heard on any channel, it is suggested to use
--gpio-setup
(with no value) in the AudioDxe driver arguments. If specified with no value, all stages will be enabled (equivalent of specifying7
). If this produces sound, it is then possible to try fewer bits, e.g.--gpio-setup=1
,--gpio-setup=3
, to find out which stages are actually required.Note: Value
7
(all flags enabled) of this option – as required for theMacPro5,1
– is compatible with most systems, but is known to cause problems with sound (previous sounds are not allowed to finish before new sounds start) on a small number of other systems, hence this option is not enabled by default. -
--gpio-pins
- Default:0
, auto-detect.Specifies which GPIO pins should be operated on by
--gpio-setup
. This is a bit mask, with possible values from0x0
to0xFF
. The usable maximum depends on the number if available pins on the audio out function group of the codec in use, e.g. it is0x3
(lowest two bits) if two GPIO pins are present,0x7
if three pins are present, etc.When
--gpio-setup
is enabled (i.e. non-zero), then0
is a special value for--gpio-pins
, meaning that the pin mask will be auto-generated based on the reported number of GPIO pins on the specified codec (seeAudioCodec
), e.g. if the codec’s audio out function group reports 4 GPIO pins, a mask of0xF
will be used. The value in use can be seen in the debug log in a line such as:HDA: GPIO setup on pins 0x0F - Success
Values for driver parameters can be specified in hexadecimal beginning with
0x
or in decimal, e.g.--gpio-pins=0x12
or--gpio-pins=18
. -
--restore-nosnoop
- Boolean flag, enabled if present.AudioDxe clears the Intel HDA No Snoop Enable (NSNPEN) bit. On some systems, this change must be reversed on exit in order to avoid breaking sound in Windows or Linux. If so, this flag should be added to AudioDxe driver arguments. Not enabled by default, since restoring the flag can prevent sound from working in macOS on some other systems.