Skip to content

Instantly share code, notes, and snippets.

@ruo91
Last active June 12, 2022 14:51
Show Gist options
  • Select an option

  • Save ruo91/ae07e3709ee2e09e846969b41de00163 to your computer and use it in GitHub Desktop.

Select an option

Save ruo91/ae07e3709ee2e09e846969b41de00163 to your computer and use it in GitHub Desktop.
Gentoo Linux - Enable Audio on HP Elite Dragonfly Max

Gentoo Linux - Enable Audio on HP Elite Dragonfly Max

HP Elite Dragonfly Max 노트북에 Gentoo Linux 설치 이후 지문인식과 마이크가 안되던 문제가 해결됐다.

1. 마이크 지원 (Microphone)

HP 노트북에서 지원하는 내장 사운드 장치는 Realtek ALC285 사용한다.
이 장치를 사용하기 위해서는 linux kernel 단에서 사용되는 HDA 모듈을 활성화 해야한다.
이와 관련 된 Realtek High Definition Audio 모듈 변수는 SND_HDA_CODEC_REALTEK을 사용한다.

이 변수를 사용하면 기본적으로 Realtek Codec을 통해서 사운드 출력을 지원 해주고
마이크는 DMIC(Digital Microphone Codec)가 입력 부분을 담당한다.

이것만 해서 되진 않았고 ALSA + Pulseaudio + SoF Firmware + Intel ASoC Machine Drivers 조합으로 구성해야 됐다.
따라서, 아래와 같이 Kernel 설정과 패키지 구성이 진행되어야 동작한다.

1.1. ALSA (Advanced Linux Sound Architecture) 설치

gentoo wiki 내용대로 설정 해준다.
Gentoo WIKI - ALSA

1.2. Pulseaudio 설치

gentoo wiki 내용대로 설정 해준다.
Gentoo WIKI - PulseAudio

- Pulseaudio daemon 설치

systemd 기반으로 구성된 환경이면 아래와 같이 설치 및 설정이 필요하다.

ruo91 ~# emerge -av media-sound/pulseaudio-daemon

- systemd 서비스 등록

ruo91 ~# systemctl --global enable pulseaudio.service pulseaudio.socket

- pulse client 설정

ruo91 ~# vi /etc/pulse/client.conf
autospawn = yes

- pulse daemon 설정

ruo91 ~# vi /etc/pulse/daemon.conf
daemonize = yes
flat-volumes = no

- 시스템 재부팅

root~# reboot

1.3. Realtek HDA 활성화

HP Elite Dragonfly Max 노트북의 경우 Kernel 부분에서 Intel Machine drivers에
"Skylake+ with HDA Codecs" 모듈이 없으면 Pulseaudio에서 사운드 장치를 인식 못한다.
이에 대한 이유는 아래 링크에 설명 되어있다.
SOF Linux Driver Architecture - Generic HD-Audio Support

- Kernel Config 설정

필요한 부분을 활성화 한다.

ruo91 ~# cd /usr/src/linux
ruo91 ~# make menuconfig
Main Menu
- Device Drivers
  - Sound card support
    - Advanced Linux Sound Architecture
      - HD-Audio
      <*> Build Realtek HD-audio codec support
      - ALSA for SoC audio support
      <*> Intel ASoC SST drivers
       -*- Intel Machine drivers  --->
           <*> Skylake+ with HDA Codecs
       CODEC drivers  --->
           <*> Realtek ALC5623 CODEC
           -*- Realtek RT1308 Codec - SDW
           -*- Realtek RT1316 Codec - SDW 
           <*> Realtek RT5616 CODEC
           <*> Realtek ALC5631/RT5631 CODEC
           <*> Realtek RT5640/RT5639 Codec
           <*> Realtek RT5658/RT5659 Codec
           -*- Realtek RT5682 Codec - SDW
           -*- Realtek RT700 Codec - SDW
           -*- Realtek RT711 Codec - SDW
           -*- Realtek RT711 SDCA Codec - SDW
           -*- Realtek RT715 Codec - SDW
           -*- Realtek RT715 SDCA Codec - SDW

- 참고

1.4. SoF Firmware 설치

SoF(Sound Open Firmware)는 오디오 또는 신호 처리에 대한 펌웨어를 제공하는 오픈소스이다.
Linux Kernel에서 제공하지 않는 사운드는 대부분 SoF 펌웨어로 인식이 가능하다.
Sound Open Firmware Project

ruo91 ~# emege -av sys-firmware/sof-firmware

1.5. 커널 컴파일

- 펌웨어 파일 확인

ruo91 ~# ls /lib/firmware/intel/{sof,sof-tplg}/ | egrep "sof-tgl.ri|sof-hda-generic-4ch.tplg"
sof-hda-generic-4ch.tplg
sof-tgl.ri

- Kernel Config 설정

부팅 이후 dmesg 출력에서 firmware 파일을 못찾는 경우가 발생하는 경우,
아래와 같이 firmware 파일을 강제로 인식하도록 설정한다.

ruo91 ~# vi /usr/src/linux/.config
#
# Firmware loader
#
CONFIG_FW_LOADER=y
CONFIG_EXTRA_FIRMWARE="intel/sof/sof-tgl.ri intel/sof-tplg/sof-hda-generic-4ch.tplg"
CONFIG_EXTRA_FIRMWARE_DIR="/lib/firmware"
# end of Firmware loader

- Kernel Compile

ruo91 ~# make -j8 && make -j8 modules_install && make install
ruo91 ~# genkernel --install initramfs

- GRUB2 재설정

ruo91 ~# grub-mkconfig -o /boot/grub/grub.cfg

- 시스템 재부팅

ruo91 ~# reboot

1.6. 사운드 정보 확인

- ALSA 정보

alsa-info.sh 스크립트를 사용하여 alsa 정보를 취합하여 확인 한다.
http://alsa-project.org/db/?f=0d3aeff8bedf1b7bbca04b5b9f1f233b15d6f894

ruo91 ~ # alsa-info.sh
ALSA Information Script v 0.5.1
--------------------------------

This script visits the following commands/files to collect diagnostic
information about your ALSA installation and sound related hardware.

  dmesg
  lspci
  aplay
  amixer
  alsactl
  rpm, dpkg
  /proc/asound/
  /sys/class/sound/
  ~/.asoundrc (etc.)

See '/usr/sbin/alsa-info.sh --help' for command line options.

/usr/sbin/alsa-info.sh: line 466: /proc/asound/modules: No such file or directory
cat: /tmp/alsa-info.1x9lAhl0Lt/alsamodules.tmp: No such file or directory
cat: /proc/asound/modules: No such file or directory
Automatically upload ALSA information to www.alsa-project.org? [y/N] : y
Uploading information to www.alsa-project.org ... Done!

Your ALSA information is located at http://alsa-project.org/db/?f=0d3aeff8bedf1b7bbca04b5b9f1f233b15d6f894
Please inform the person helping you.

- Alsa Mixer

ruo91 ~# alsamixer

Alsa Mixer

- Gnome Control Panel

Gnome 42 - Control Panel: Sound

2. 지문인식 (Fingerprint Reader)

지문인식의 경우 sys-auth/fprintd 패키지를 설치 이후 device 인식은 되었으나, gnome control panel에서
사용자 계정에 지문 인증 부분이 제외 되었던 것이 gentoo portage를 최신 버전으로 업데이트 및 빌드 후 기능이 지원 되었다.

2.1. fprintd 설치

ruo91 ~# emege -av sys-auth/fprintd

2.2. 지문 목록

왼손 검지/중지, 오른손 검지/중지에 대한 지문 내역이 등록 된 것을 확인 가능함.

ruo91 ~ # fprintd-list ruo91
.found 1 devices
Device at /net/reactivated/Fprint/Device/0
Using device /net/reactivated/Fprint/Device/0
Fingerprints for user ruo91 on Synaptics Sensors (press):
 - #0: left-middle-finger
 - #1: right-middle-finger
 - #2: left-index-finger
 - #3: right-index-finger

99. RefURL

[1]: Gentoo Forums - Tiger Lake audiocontroller/sound card not found
[2]: Linux Kernel Config Files - HP Elite Dragonfly Max

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment