2022년 6월 29일 수요일

민트리눅스에 iFi DAC를 연결하여 고음질 음악을 들어보자

mint linux DAC 연결후 음악 품질을 올려봅시다 
Connect iFi DAC to Mint Linux and listen to high-quality music

Notebook : Lenovo X1 Extream + Thunderbolt 4 dock
DAC : iFi ZEN DAC signature v2
OS : Mint Linux 20.2


지속되는 재택근무로 PC에 들러붙어 사는시간이 늘어나면서 오디오에도 관심이 추가되었다 

기존의 PC와 업무용 Notebook을 쓰다보니 중간에 공유해야 하는 장비들도 늘어나서 

이런저런 구성을 계획해서 아래 그림같은 환경을 목표로 구성을 잡고 있다



이번에는 오디오쪽에서 DAC + AMP 구성을 하면서 업무환경인 X86 notebook + Mint linux 에서 고음질의 음악을 듣기 위해 살짝 삽질을 해보았다

Ubuntu계열인  mint 는 기본 16bit 44khz 또는 48Khz로 출력됨 (Windows도 비슷)

DAC까지  끼웠는데 낮은 bit rate / sampling rate를 들을 필요가 없다 

흔히 귓구녕에 들리는 주파수를 이야기 하는사람이 있는데 

Digital to Analog에서 sampling에서 주파수는 귓구녕과 직접적인 관계가 없다 

디지털을 얼마나 깨끗한 아날로그로 변환할 것인가의 문제...

여하간 

iFi의 Zen DAC을 구입했고  노트북의 민트리눅스에서 고해상도 음악 출력을 위해 설정을 변경하였다 


Zen DAC Support format
Formats: 44.1/48/88.2/96/176.4/192kHz PCM
2.8/3.1/5.6/6.2/11.2/12.4MHz DSD
353/384KHz DXD
MQA

LED 모드
Green PCM 44/48/88/96kHz
Yellow PCM 176/192/353/384kHz
Cyan DSD64/DSD128
Blue DSD256
Magenta MQA
*MQA
The iFi ZEN DAC Signature includes MQA Renderer technology, which can connect to
an MQA Core signal and complete the final unfold of an MQA file. The LED glows
magenta to indicate that the unit is rendering an MQA stream or file. This delivers the
final unfold of the MQA file


PulseAudio config 
https://freedesktop.org/software/pulseaudio/doxygen/sample.html


OS 정보 
 cat /etc/os-release
NAME="Linux Mint"
VERSION="20.2 (Uma)"
ID=linuxmint
ID_LIKE=ubuntu
PRETTY_NAME="Linux Mint 20.2"


아래는 OS에서 현재 상태를 확인하고 설정을 변경하여 적용후 확인하는 단계이다 

지금 상태를 봅니다. 여러 장치가 있는데  기본 장치들은 16bit에  44khz이다 
아래에서 24bit 는 별도로 추가한 마이크의 정보 이므로 헛갈리지 마시라 

Default status
 ~  pacmd list-sinks | grep sample
sample spec: s16le 2ch 48000Hz
sample spec: s16le 2ch 48000Hz
sample spec: s16le 2ch 48000Hz
sample spec: s16le 2ch 48000Hz
sample spec: s16le 2ch 44100Hz
sample spec: s24le 2ch 44100Hz
sample spec: s16le 2ch 44100Hz
sample spec: s16le 2ch 44100Hz


설정파일을 열어서 수정합니다. 
vi /etc/pulse/daemon.conf


설정에 보면 주석처리된 설정들이 있다 
; default-sample-format = s16le
; default-sample-rate = 44100

기존 설정을 변경해도 되지만 그대로 두고 파일의 가장 아래쪽에 아래 내용을 추가한다 
추가시 주석은 제거 합시다 

;Zen DAC Config
default-sample-format = s24-32le
;샘플링해서 24~32bit에서 찾는다 
default-sample-rate = 192000
;DAC에서 지원하는 주파수를 설정한다 192k도 사실 엄청 높은 주파수라 큰 의미없다. 
alternative-sample-rate = 48000


서비스를 재구동 한다 
systemctl --user restart pulseaudio

상태확인 (아래 로그에 이상이 없어야 합니다)  가끔 인식이 안되는 경우가 있는데 리부팅 후 점검 
 ~  systemctl --user status pulseaudio
● pulseaudio.service - Sound Service
     Loaded: loaded (/usr/lib/systemd/user/pulseaudio.service; enabled; vendor preset: enabled)
     Active: active (running) since Wed 2022-06-29 19:52:10 KST; 3s ago
TriggeredBy: ● pulseaudio.socket
   Main PID: 13532 (pulseaudio)
     CGroup: /user.slice/user-1000.slice/user@1000.service/pulseaudio.service
             └─13532 /usr/bin/pulseaudio --daemonize=no --log-target=journal

 6월 29 19:52:09 AL01946395 systemd[2564]: Starting Sound Service...
 6월 29 19:52:10 AL01946395 systemd[2564]: Started Sound Service.


적용후
 ✘  ~  pacmd list-sinks | grep sample
sample spec: s32le 2ch 48000Hz
sample spec: s32le 2ch 192000Hz  <======== Zen DAC
sample spec: s24le 2ch 48000Hz
sample spec: s24le 2ch 60928Hz
sample spec: s24-32le 2ch 48000Hz
sample spec: s24-32le 2ch 48000Hz
sample spec: s24-32le 2ch 48000Hz
sample spec: s24-32le 2ch 48000Hz


pacmd list-sinks을 실행한 결과에서 IFI DAC 정보를 보면 아래와 같다 .

    index: 1
        name: <alsa_output.usb-iFi__by_AMR__iFi__by_AMR__HD_USB_Audio_0003-00.iec958-stereo>
        driver: <module-alsa-card.c>
        flags: HARDWARE DECIBEL_VOLUME LATENCY DYNAMIC_LATENCY
        state: RUNNING
        suspend cause: (none)
        priority: 9048
        volume: front-left: 58327 /  89% / -3.04 dB,   front-right: 58327 /  89% / -3.04 dB
                balance 0.00
        base volume: 65536 / 100% / 0.00 dB
        volume steps: 65537
        muted: no
        current latency: 29.82 ms
        max request: 32 KiB
        max rewind: 32 KiB
        monitor source: 1
        sample spec: s32le 2ch 192000Hz  <================
        channel map: front-left,front-right
                     스테레오
        used by: 1
        linked by: 3
       configured latency: 21.33 ms; range is 0.50 .. 2000.00 ms
        card: 1 <alsa_card.usb-iFi__by_AMR__iFi__by_AMR__HD_USB_Audio_0003-00>
        module: 8
        properties:
                alsa.resolution_bits = "32"
                device.api = "alsa"
                device.class = "sound"
                alsa.class = "generic"
                alsa.subclass = "generic-mix"
                alsa.name = "USB Audio"
                alsa.id = "USB Audio"
                alsa.subdevice = "0"
                alsa.subdevice_name = "subdevice #0"
                alsa.device = "0"
                alsa.card = "3"
                alsa.card_name = "iFi (by AMR) HD USB Audio"
                alsa.long_card_name = "iFi (by AMR) iFi (by AMR) HD USB Audio at usb-0000:09:00.0-1.4.2.4, high speed"
                alsa.driver_name = "snd_usb_audio"
                device.bus_path = "pci-0000:09:00.0-usb-0:1.4.2.4:1.0"
                sysfs.path = "/devices/pci0000:00/0000:00:1c.0/0000:04:00.0/0000:05:01.0/0000:07:00.0/0000:08:00.0/0000:09:00.0/usb3/3-1/3-1.4/3-1.4.2/3-1.4.2.4/3-1.4.2.4:1.0/sound/card3"
                udev.id = "usb-iFi__by_AMR__iFi__by_AMR__HD_USB_Audio_0003-00"
                device.bus = "usb"
                device.vendor.id = "20b1"
                device.vendor.name = "XMOS Ltd"
                device.product.id = "3008"
                device.product.name = "iFi (by AMR) HD USB Audio"
                device.serial = "iFi__by_AMR__iFi__by_AMR__HD_USB_Audio_0003"
                device.string = "iec958:3"
                device.buffering.buffer_size = "3072000"
                device.buffering.fragment_size = "1536000"
                device.access_mode = "mmap+timer"
                device.profile.name = "iec958-stereo"
                device.profile.description = "디지털 스테레오 (IEC958)"
                device.description = "iFi (by AMR) HD USB Audio 디지털 스테레오 (IEC958)"
                module-udev-detect.discovered = "1"
                device.icon_name = "audio-card-usb"
        ports:
                iec958-stereo-output: 디지털 출력 (S/PDIF) (priority 0, latency offset 0 usec, available: unknown)
                        properties:

        active port: <iec958-stereo-output>


!! 원래 Zen DAC은 외부 전원없이 USB 연결로 버스파워를 사용하여 구동 가능하다. 별도 전원이 없어도 된다.
하지만 예외의 상황으로  노트북에 끼워둔 무전원 USB허브에 DAC를 연결한 경우 음악을 듣다가 갑자기 소리가 꺼져버리는 현상이 벌어진다. 뺐다 끼우면 한동안 되지만 반복된다 
살펴보니 DAC에 전원을 연결해 두었는데 그게 빠져있었다.
정확하진 않지만 전원을 연결한 후에는 그런 문제가 없는것을 보았을때 USB 전원이 딸리는 포트에 연결하는경우 출력에 문제가 될 수 있으므로 직접 연결하거나 별도 전원연결이 추천된다.


!! 출력바꾸고 나니 아주 쥑이내