본문 바로가기
AndroidOverLinux

TIDAL Connect on U5MINI AoL Server

by ㅋㅋ잠자 2022. 6. 7.
반응형

안녕하세요?

 

어.. 일단은 AoL이 너무 유지보수가 되지 않아 지금 동작이 매우 애매한 상황에 와 있네요.

그래서 일단은 에러를 무시하고 설치를 진행해보겠습니다.

---> 추후 debian 11 로 유지보수 하도록 하겠습니다.

root@AOL-Debian:~# apt update
Ign:1 http://deb.debian.org/debian stretch InRelease
Get:2 http://deb.debian.org/debian stretch-backports InRelease [91.8 kB]
Hit:3 http://deb.debian.org/debian stretch-updates InRelease
Hit:4 http://deb.debian.org/debian stretch Release
Hit:5 https://downloads.plex.tv/repo/deb public InRelease
Err:2 http://deb.debian.org/debian stretch-backports InRelease
  The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 648ACFD622F3D138 NO_PUBKEY 0E98404D386FA1D9
Reading package lists... Done
W: GPG error: http://deb.debian.org/debian stretch-backports InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 648ACFD622F3D138 NO_PUBKEY 0E98404D386FA1D9
E: The repository 'http://deb.debian.org/debian stretch-backports InRelease' is not signed.
N: Updating from such a repository can't be done securely, and is therefore disabled by default.
N: See apt-secure(8) manpage for repository creation and user configuration details.

 

1. TidalConnect 레파지토리

아래 레파지토리입니다. 일단 가이드 대로 설치를 진행해보겠습니다.

https://github.com/shawaj/ifi-tidal-release

 

2. 의존 패키지 설치하기

root@AOL-Debian:~# apt install libssl1.0.0* libportaudio2* libflac++6v5*
Reading package lists... Done
Building dependency tree
Reading state information... Done
Note, selecting 'libssl1.0.0' for glob 'libssl1.0.0*'
Note, selecting 'libportaudio2' for glob 'libportaudio2*'
Note, selecting 'libflac++6v5' for glob 'libflac++6v5*'
libssl1.0.0 is already the newest version (1.0.1t-1+deb8u8).
The following NEW packages will be installed:
  libflac++6v5 libportaudio2
0 upgraded, 2 newly installed, 0 to remove and 91 not upgraded.
Need to get 92.7 kB of archives.
After this operation, 290 kB of additional disk space will be used.
Do you want to continue? [Y/n]

 

3. 소스 클론하기

root@AOL-Debian:~# mkdir /usr/ifi
root@AOL-Debian:~# cd /usr/ifi
root@AOL-Debian:/usr/ifi# git clone https://github.com/ifi-audio/ifi-tidal-release.git
The program 'git' is currently not installed.  You can install it by typing:
apt install git

깃이 설치되어 있지 않다고 나오네요. 설치하고 다시 해보겠습니다.

root@AOL-Debian:/usr/ifi# apt install git
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
  git-man liberror-perl patch rsync
Suggested packages:
  gettext-base git-daemon-run | git-daemon-sysvinit git-doc git-el git-email git-gui gitk gitweb
  git-arch git-cvs git-mediawiki git-svn ed diffutils-doc
The following NEW packages will be installed:
  git git-man liberror-perl patch rsync
0 upgraded, 5 newly installed, 0 to remove and 91 not upgraded.
Need to get 5,613 kB of archives.
After this operation, 23.2 MB of additional disk space will be used.
Do you want to continue? [Y/n]

 

4. 설치 진행하기

일단은 폴더 경로가 제 기준에 맞지 않아 조금 변경을 했습니다.

root@AOL-Debian:/usr# rm -rf ifi/
root@AOL-Debian:/usr# mkdir tidal-connect
root@AOL-Debian:/usr# git clone https://github.com/shawaj/ifi-tidal-release.git tidal-connect/
Cloning into 'tidal-connect'...
remote: Enumerating objects: 61, done.
remote: Counting objects: 100% (14/14), done.
remote: Compressing objects: 100% (11/11), done.
remote: Total 61 (delta 10), reused 3 (delta 3), pack-reused 47
Unpacking objects: 100% (61/61), done.

일단 clone 이 끝났습니다.

구동을 하기 위해 사운드 장치를 알아냅니다.

root@AOL-Debian:/usr# cd tidal-connect/

root@AOL-Debian:/usr/tidal-connect# ./pa_devs/run.sh
ALSA lib confmisc.c:1281:(snd_func_refer) Unable to find definition 'cards.HISI-AIAO.pcm.front.0:CARD=0'
ALSA lib conf.c:4528:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory
ALSA lib conf.c:5007:(snd_config_expand) Evaluate error: No such file or directory
ALSA lib pcm.c:2495:(snd_pcm_open_noupdate) Unknown PCM front
ALSA lib pcm.c:2495:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.rear
ALSA lib pcm.c:2495:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.center_lfe
ALSA lib pcm.c:2495:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.side
ALSA lib confmisc.c:1281:(snd_func_refer) Unable to find definition 'cards.HISI-AIAO.pcm.surround51.0:CARD=0'

막 에러가 나오는데요. 아래 경로에서 devices 파일을 cat 해봅니다.

root@AOL-Debian:/usr/tidal-connect# cat pa_devs/devices
device#0=HISI-AIAO: - (hw:0,0)
device#1=sysdefault
device#2=default
device#3=dmix
Number of devices = 4

이상하게도 추가한 사운드 카드가 나오지가 않습니다.

root@AOL-Debian:/usr/tidal-connect# aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: HISIAIAO [HISI-AIAO], device 0: Playback aiao-hifi-0 []
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 2: HM [HM], device 0: USB Audio [USB Audio]
  Subdevices: 0/1
  Subdevice #0: subdevice #0

안드로이드 쪽의 오디오 설정을 조금 변경하겠습니다.

이 변경은 아래 글에도 소개가 되어 있습니다.

https://blog.djjproject.com/450

먼저 system 파티션을 remount 합니다.

root@AOL-Debian:/usr/tidal-connect# system-rw
remount succeeded

오디오 xml 을 수정합니다.

아래 135번째줄 usb 섹션을 삭제합니다. 152번째까지가 설정입니다.

root@AOL-Debian:/usr/tidal-connect# vi /system/etc/audio_policy.conf

    135   usb {
    136     outputs {
    137       usb_device {
    138         sampling_rates dynamic
    139         channel_masks dynamic
    140         formats dynamic
    141         devices AUDIO_DEVICE_OUT_USB_DEVICE
    142       }
    143     }
    144     inputs {
    145       usb_device {
    146         sampling_rates dynamic
    147         channel_masks dynamic
    148         formats dynamic
    149         devices AUDIO_DEVICE_IN_USB_DEVICE
    150       }
    151     }
    152   }

다시 ro 마운트로 바꿔주고 리부팅합니다.

root@AOL-Debian:/usr/tidal-connect# mount -o remount,ro /system
root@AOL-Debian:/usr/tidal-connect# reboot
root@AOL-Debian:/usr/tidal-connect# stty: 'standard input': Input/output error
[info] Using makefile-style concurrent boot in runlevel 0.
[ ok ] Stopping UPnP devices daemon: MiniSSDPd.
[ ok ] Stopping Music Player Daemon: mpd.
[ ok ] Shutting down ALSA...done.
[ ok ] Stopping Avahi mDNS/DNS-SD Daemon: avahi-daemon.
[ ok ] Stopping internet superserver: inetd.
Shutting down Plex Media Server:
Stopping ftp server: pure-ftpd.
[ ok ] Stopping enhanced syslogd: rsyslogd.
[ ok ] Stopping bittorrent daemon: transmission-daemon.
[ ok ] Stopping Tvheadend: tvheadend.
System now Rebooting...

다시 device 를 찾아봅니다.

root@AOL-Debian:~# cd /usr/tidal-connect/
root@AOL-Debian:/usr/tidal-connect# ./pa_devs/run.sh
root@AOL-Debian:/usr/tidal-connect# cat pa_devs/devices
device#0=HISI-AIAO: - (hw:0,0)
device#1=HM: USB Audio (hw:2,0)
device#2=sysdefault
device#3=default
device#4=dmix
Number of devices = 5

오.. 나이스하게 올라옵니다.

그럼 일단 테스트로 실행을 해봐야하니 아래와 같이 실행을 해봅니다.

root@AOL-Debian:/usr/tidal-connect# ./bin/tidal_connect_application \
 --tc-certificate-path "/usr/tidal-connect/id_certificate/IfiAudio_ZenStream.dat" \
 --netif-for-deviceid eth0 \
 -f "U5MINI Streamer" \
 --codec-mpegh true \
 --codec-mqa true \
 --model-name "U5MINI Streamer" \
 --disable-app-security false \
 --disable-web-security false \
 --enable-mqa-passthrough true \
 --playback-device "HM: USB Audio (hw:2,0)" \
 --log-level 3

오 일단 에러가 많이 발생합니다.

만 .. 작동 잘 되네요..

ALSA lib pcm.c:2495:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.modem
ALSA lib pcm.c:2495:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.phoneline
ALSA lib pcm.c:2495:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.phoneline
Cannot connect to server socket err = No such file or directory
Cannot connect to server request channel
jack server is not running or cannot be started
JackShmReadWritePtr::~JackShmReadWritePtr - Init not done for -1, skipping unlock
JackShmReadWritePtr::~JackShmReadWritePtr - Init not done for -1, skipping unlock
STARTED TidalConnect services.
[2022-06-07 00:48:10.238] [tisoc] [warning] [PlaybackControllerImpl.cpp:472] Illegal state:1
[2022-06-07 00:48:12.465] [tisoc] [warning] [logger.cpp:22] [audio_worker.cpp:321] Attempting to initialize a decoder without initial data!
[2022-06-07 00:48:31] [error] handle_read_frame error: asio.ssl:335544539 (short read)
[2022-06-07 00:48:31] [info] asio async_shutdown error: asio.ssl:335544539 (short read)
Expression 'alsa_snd_pcm_drop( stream->playback.pcm )' failed in 'src/hostapi/alsa/pa_linux_alsa.c', line: 3042

타이달에서는 이렇게 나옵니다.

결선 상태는 아래와 같습니다.

일단 HIFI 음원 기준 오디오 정보는 아래와 같습니다.

root@AOL-Debian:/proc/asound/HM# cat pcm0p/sub0/hw_params
access: MMAP_INTERLEAVED
format: S16_LE
subformat: STD
channels: 2
rate: 44100 (44100/1)
period_size: 2205
buffer_size: 11025

마스터 음원을 찾아보겠습니다. 아래 음원이 마스터로 나오네요.

root@AOL-Debian:/proc/asound/HM# cat pcm0p/sub0/hw_params
access: MMAP_INTERLEAVED
format: S24_3LE
subformat: STD
channels: 2
rate: 48000 (48000/1)
period_size: 2400
buffer_size: 12000

음.. 24비트 48KHz 로 나오네요. 저희가 생각하는 고음질은 아닌거 같습니다.

혹시 트랜스코딩이 걸릴까봐 실행옵션도..

 --enable-mqa-passthrough true \

 이렇게 주었는데.. 기대가 살짝 깨지네요.

 

이전에 아래와 같이 DSD를 재생하거나 24비트 192KHz 음원일 경우에 아래와 같이 나옵니다.

 

5. 부팅 시, 자동실행 하기

아래와 같이 작성합니다.

root@AOL-Debian:~# cd /etc/init.d
root@AOL-Debian:/etc/init.d# vi tidal-connect

#!/bin/sh

### BEGIN INIT INFO
# Provides:          tidal-connect
# Required-Start:    $remote_fs $all
# Required-Stop:     $remote_fs $all
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: tidal-connect
# Description:       tidal-connect
### END INIT INFO


DESC="tidal-connect"
NAME=tidal-connect
PIDFILE=/var/run/$NAME.pid
RUN_AS=root

d_start() {
    start-stop-daemon --start --quiet --background --make-pidfile --pidfile $PIDFILE --chuid $RUN_AS \
                --exec /usr/tidal-connect/bin/tidal_connect_application -- \
                --tc-certificate-path "/usr/tidal-connect/id_certificate/IfiAudio_ZenStream.dat" \
                --netif-for-deviceid eth0 \
                -f "U5MINI Streamer" \
                --codec-mpegh true \
                --codec-mqa true \
                --model-name "U5MINI Streamer" \
                --disable-app-security false \
                --disable-web-security false \
                --enable-mqa-passthrough true \
                --playback-device "HM: USB Audio (hw:2,0)" \
                --log-level 3
}

d_stop() {
    start-stop-daemon --stop --quiet --pidfile $PIDFILE
    if [ -e $PIDFILE ]
        then rm $PIDFILE
    fi
}

case $1 in
    start)
    echo -n "Starting $DESC: $NAME"
    d_start
    echo "."
    ;;
    stop)
    echo -n "Stopping $DESC: $NAME"
    d_stop
    echo "."
    ;;
    restart)
    echo -n "Restarting $DESC: $NAME"
    d_stop
    sleep 1
    d_start
    echo "."
    ;;
    *)
    echo "usage: $NAME {start|stop|restart}"
    exit 1
    ;;
esac

exit 0

서비스 등록합니다.

root@AOL-Debian:/etc/init.d# chmod a+x tidal-connect
root@AOL-Debian:/etc/init.d# update-rc.d tidal-connect defaults
root@AOL-Debian:/etc/init.d# service tidal-connect start
Starting tidal-connect: tidal-connect.
root@AOL-Debian:/etc/init.d# ps -ef | grep tidal
root     17661     1  3 01:50 ?        00:00:04 /usr/tidal-connect/bin/tidal_connect_application --tc-certificate-path /usr/tidal-connect/id_certificate/IfiAudio_ZenStream.dat --netif-for-deviceid eth0 -f U5MINI Streamer --codec-mpegh true --codec-mqa true --model-name U5MINI Streamer --disable-app-security false --disable-web-security false --enable-mqa-passthrough true --playback-device HM: USB Audio (hw:2,0) --log-level 3
root     17946  8827  0 01:52 pts/0    00:00:00 grep tidal

 

6. 후기

무언가 TIDAL 음질 좋은거 같기도 하네요 ㅎㅎㅎ..

마치겠습니다.

반응형

댓글