Dùng Tidal và Spotify với Archphile

tml3nr

Moderator
Em vẫn không happy với âm thanh của Rune khi bật upnp renderer. Tiếng nó hơi bí và dính.

Tidal - upmpdcli vẫn chưa chạy được trên rune sau 5 ngày vật vã với sự giúp đỡ nhiệt tình của các anh Tây trên forum rune.

Test xà quần với arch linux stock, ropieee và archphile. Em quyết định tập trung vào archphile.

Kết quả cực kỳ mỹ mãn. Em happy toàn diện với nó. Âm thanh vẫn màu âm đặc trưng của rune nhưng hay hơn về mọi mặt sau khi thay đổi vài kernel optimize. Chạy rất nhanh và smooth. Scan NAS nhanh hơn rune nhiều.

Dùng app lumin play 1 album. Sau đó thoát app vẫn play cho đến hết. Search rất nhanh và chạy được mục similar artists (Các bản upmpdcli trước đây không chạy được cái này).

Giao diện web bèo nhèo là điểm yếu nhất của archphile. Chỉ brown được folder. Nhưng các thứ còn lại rất xuất sắc.

archphile_01_webui.jpg


Linn Kazoo trên PC. Search nhanh cực kỳ dù chạy trên pi2:

archphile_02_linn_kazoo_pc.jpg


archphile_03_linn_kazoo_ipad.jpg


archphile_04_linn_kazoo_ipad_similar.jpg


Dùng app lumin trên ipad:

archphile_05_lumin_input.jpg


archphile_06_lumin_search.jpg


archphile_07_lumin_similar_artists.jpg


--.--.--.--.--.--.--.--.--.--.--.--.--.--.--.--.--.--

My sharing: http://www.hdvietnam.com/tags/tml3nr/
 
Chỉnh sửa lần cuối:

tml3nr

Moderator
Các bước setup gồm có các phần như sau:

Phần 1 - Setup DAC, MPD, NAS và Tidal.

Phần 2 - Setup Spotify

Phần 3 - Tinh chỉnh kernel optimize

Phần 1 - Setup MPD và NAS:

ssh: user: root / pass: archphile

Mã:
rm /etc/localtime
ln -s /usr/share/zoneinfo/Asia/Ho_Chi_Minh /etc/localtime

Add DAC:

Mã:
nano /boot/config.txt

Bỏ dấu # để enable DAC đang sử dụng. Thí dụ như với Boss Dac:

Mã:
dtoverlay=allo-boss-dac-pcm512x-audio

Add NAS:

Mã:
nano /etc/fstab
//192.168.1.2/Data/Music /mnt/nas-samba cifs vers=1.0,username=abc,password=xyz,ro,uid=mpd,gid=audio,iocharset=utf8,nolock,noauto,x-systemd.automount,x-systemd.device-timeout=10,sec=ntlm,rsize=8192,wsize=8192

MPD settings:

Edit mpd.conf. Các anh nên lấy theo mpd.conf của một OS nào đang dùng cho dễ set DAC:

Mã:
gapless_mp3_playback  "no"

nano /etc/mpd.conf
decoder {
plugin  "ffmpeg"
enabled  "no"
}

audio_output {
enabled  "yes"
type  "alsa"
name  "My DAC"
device  "hw:0,0"
mixer_control    "Digital"
mixer_type    "hardware"
mixer_device    "hw:0"
auto_resample   "no"
auto_channels   "no"
auto_format     "no"
#dop             "yes"
}

Để hiện cover art trong app remote như MPad hay MPDroid:

Mã:
nano /usr/bin/archphile-optimize
mongoose -listening_port 8080 -document_root /var/www/covers

hoặc:

mongoose -listening_port 8080 -document_root /var/www/Music

Set covers trong app:

Mã:
http://xxx.xxx.xxx.xxx:8080/covers

hoặc:

http://xxx.xxx.xxx.xxx:8080/music

Mặc nhiên mỗi khi boot. Archphile set volume 100%. Nếu muốn remember last volume:

Mã:
nano /usr/bin/archphile-optimize
#/usr/bin/unmute

rồi chạy:

Mã:
alsactl store

Tidal settings:

Nhập user và pass cho Tidal:

Mã:
nano /etc/upmpdcli.conf:
tidaluser = [email protected]
tidalpass = your_password
tidalquality = lossless

Mã:
systemctl enable upmpdcli

systemctl start upmpdcli

PS: Phần help tác giả viết rất rõ, các anh xem thêm:

https://archphile.org/manual/

@@@ Cập nhật: Update mympd:

Báo cáo với cả nhà là archphile đã update được từ ympd sang mympd rồi ạ :rolleyes:

Mã:
pacman -Sy mympd-archphile

systemctl disable ympd
systemctl stop ympd

systemctl enable mympd
systemctl start mympd

Mã:
nano /etc/mympd/options

Sửa cho đúng tên file cover của folder nhạc:

COVERIMAGE=folder.jpg

systemctl restart mympd

More info:

http://archphile.org/

http://thepenguin.eu/2018-06-04-mympd-my-new-favorite-mpd-client/

mympd-4.jpg


mympd-5.jpg


mympd-1.jpg


mympd-8.jpg
 
Chỉnh sửa lần cuối:

tml3nr

Moderator
Phần 2 - Setup Spotify:

Cách 1 - Theo hướng dẫn của Archphile:

Archphile supports Spotify, using a librespot fork:

Mã:
https://github.com/librespot-org

librespot works with the official Spotify applications, where Archphile will appear as a supported device. In order to configure librespot you will need to edit the following file:

Mã:
nano /etc/librespot.conf

and put your username and password. librespot is not enabled by default. In order to start it you will need the following command:

Mã:
systemctl start librespot

If you want to enable it so that it runs after every boot:

Mã:
systemctl enable librespot

If you later change your mind and you want to disable it, you can use the following command:

Mã:
systemctl disable librespot

Cách 2 - Dùng SC của Fornoth (Spotify sync được với alsa volume):

Tương tự như setup trên rune. Em thấy nên dùng bản fornoth v003. Các tham số của nó có lợi hơn khi dùng DAC USB

https://github.com/Fornoth/spotify-connect-web/releases

Cách làm tương tự như bài này:

http://www.hdvietnam.com/threads/ch...berry-pi-cap-nhat-lan-2.1410563/#post-9721394

Các bản fornoth chroot giống như một dạng portable app. Chỉ cần extract ra một folder là chạy được.

Các bước tóm tắt như sau:

- Download file:

Mã:
curl -OL https://github.com/Fornoth/spotify-connect-web/releases/download/0.0.3-alpha/spotify-connect-web.sh

Mã:
nano /root/spotify-connect-web.sh
remove hết các chữ "sudo"

Mã:
chmod +x spotify-connect-web.sh

./spotify-connect-web.sh install

- Chép file spotify_appkey.key vào /root/spotify-connect-web-chroot/usr/src/app

- Chạy test:

Mã:
/root/spotify-connect-web.sh --name Arphile --device 0 --mixer Digital --username abc --password xyz --bitrate 320

hoặc:

Mã:
/root/spotify-connect-web.sh --name Archphile --playback_device hw:0,0 --mixer_device_index 0 --mixer Digital --username abc --password xyz --bitrate 320

- Tạo file service trong /usr/lib/systemd/system/spotify-connect.service

Mã:
[Unit]
Description=Spotify Connect
After=network.target

[Service]
ExecStart=/usr/bin/sh /root/spotify-connect-web.sh --name Archphile --playback_device hw:0,0 --mixer_device_index 0 --mixer Digital --username abc --password xyz --bitrate 320
Restart=always
RestartSec=10
StartLimitInterval=30
StartLimitBurst=20

[Install]
WantedBy=multi-user.target

- Enable service:

Mã:
systemctl enable spotify-connect

systemctl start spotify-connect
 
Chỉnh sửa lần cuối:

tml3nr

Moderator
Phần 3 - Tinh chỉnh kernel optimize:

Thú thật là lúc đầu em không tin tưởng âm thanh của Archphile. Do trước đây em test (v0.99.3 / 0.99.4) thì tiếng của nó mộc quá, có thể nói là hơi... bị thô.

Nhưng giờ bí Tidal - upmpdcli trên Rune, em quay lại thì thấy âm thanh của nó có cải thiện nhiều. Để default cũng đạt được 80% mong muốn. Dựa theo cách config kernel của rune chỉnh thêm một ít thì nó perfect.

Dựa theo rune. Họ set các kernel chính như sau:

Mã:
###### Kernel optimization parameters ######
hardware platform:   RaspberryPi2
current orionprofile:   RuneAudio

kernel scheduler for mmcblk0:       [noop] deadline cfq
/proc/sys/vm/swappiness:       0
/proc/sys/kernel/sched_latency_ns:     4500000
/proc/sys/kernel/sched_rt_period_us:     1000000
/proc/sys/kernel/sched_rt_runtime_us:     950000
/proc/sys/kernel/sched_autogroup_enabled:   1
/proc/sys/kernel/sched_rr_timeslice_ms:     10
/proc/sys/kernel/sched_min_granularity_ns:   2250000
/proc/sys/kernel/sched_wakeup_granularity_ns:   3000000

Default của Archphile 0.99.73. Theo em tiếng hơi nhòe, không gian không được chặt chẽ:

Mã:
/proc/sys/vm/swappiness:       0
/proc/sys/kernel/sched_latency_ns:     18000000
/proc/sys/kernel/sched_rt_period_us:     1000000
/proc/sys/kernel/sched_rt_runtime_us:     950000
/proc/sys/kernel/sched_autogroup_enabled:   1
/proc/sys/kernel/sched_rr_timeslice_ms:     100
/proc/sys/kernel/sched_min_granularity_ns:   2250000
/proc/sys/kernel/sched_wakeup_granularity_ns:   3000000

Như vậy ta chỉ cần thay đổi 2 mục:

Mã:
/proc/sys/kernel/sched_latency_ns:    18000000   thành ra ==> 4500000
/proc/sys/kernel/sched_rr_timeslice_ms:     100   thành ra ==> 10

Cách làm như sau:

Mã:
nano /usr/bin/archphile-optimize
echo 4500000 > /proc/sys/kernel/sched_latency_ns
echo 10 > /proc/sys/kernel/sched_rr_timeslice_ms

Cái này test rất dễ vì mình có thể thử từng tham số khi đang playback.

Kiểm tra lại:

Mã:
cat /proc/sys/vm/swappiness
cat /proc/sys/kernel/sched_latency_ns
cat /proc/sys/kernel/sched_rt_period_us
cat /proc/sys/kernel/sched_rt_runtime_us
cat /proc/sys/kernel/sched_autogroup_enabled
cat /proc/sys/kernel/sched_rr_timeslice_ms
cat /proc/sys/kernel/sched_min_granularity_ns
cat /proc/sys/kernel/sched_wakeup_granularity_ns

Tinh chỉnh thêm trong /etc/mpd.conf:

Mã:
nano /etc/mpd.conf

thay đổi các giá trị sau:

Mã:
audio_buffer_size  "4096"

Giảm còn 2048, âm thanh sẽ focus và attack hơn:

Mã:
audio_buffer_size  "2048"

Hoặc, và:

Mã:
buffer_before_play  "10%"

Tăng lên 20% tiếng sẽ mềm hơn:

Mã:
buffer_before_play  "20%"

@@@ Lưu ý kiểm tra và test alsamixer!!!

alsa-rune-default-values-Boss-v1-1.png


@@@ Bổ sung 05/08/2018:

Nên tắt avahi (Many thanks to mr. @mtminh ):

Mã:
systemctl disable avahi-daemon

Nếu không dùng USB disk:

Mã:
systemctl disable devmon@root
 
Chỉnh sửa lần cuối:

Thanhvo31

Well-Known Member
@tml3nr

mount được NAS: OK

Add đủ cả Tidal Quobuz rồi mà chưa thấy lên nhỉ

Không thấy archphile Renderer ở đâu?
 

Thanhvo31

Well-Known Member
@tml3nr hơi tiếc là nó không làm được giao diện web tích hợp luôn chơi mấy nguồn stream qua nhỉ.
Lúc thì Kazoo, Lumin, AK,...
 

tml3nr

Moderator
@tml3nr hơi tiếc là nó không làm được giao diện web tích hợp luôn chơi mấy nguồn stream qua nhỉ.
Lúc thì Kazoo, Lumin, AK,...
Hơi mệt một chút nhưng em thích cái âm thanh của nó quá.

Được lọ mất chai. Nếu dùng dlna server mình có thể gộp chung nhạc offline và Tidal trong một app Lumin. Nhưng lại phải nuôi thêm 1 thằng làm server.

Hiện giờ em dùng 3 app trên ipad:

- Lumin cho Tidal

- MPad cho nhạc trong NAS

- Spotify

Thôi ráng vui với nó. Chờ xem mai mốt có gì mới hay không. Chứ hiện giờ nếu theo đồ hãng vài chục khìn em e là cũng chưa có cách nào all in one 3 thứ này trên 1 app :D
 

mtminh

Well-Known Member
Đang play từ NAS qua giao diện ympd. Tuyệt vời bác @tml3nr ạ. Lâu rồi có test mà ko ưng ý. Giờ nhờ bác mà archiphile đội mồ hồi sinh. Thanks bác @tmlnr3 nhiều nhé :D
 

thebluewindows

Well-Known Member
@tml3nr Đã cài xong cơ bản còn thiếu SC. Archphile có cài đc Raspotify (cho đơn giản) ko hay phải cài theo Fornoth ?
Ngoài ra nano archphile-optimize gốc nó là:
Mã:
echo 1500000 > /proc/sys/kernel/sched_latency_ns
ko phải 18000000 ???
 

tml3nr

Moderator
@tml3nr Đã cài xong cơ bản còn thiếu SC. Archphile có cài đc Raspotify (cho đơn giản) ko hay phải cài theo Fornoth ?
Ngoài ra nano archphile-optimize gốc nó là:
Mã:
echo 1500000 > /proc/sys/kernel/sched_latency_ns
ko phải 18000000 ???
Cái dòng lệnh đó nó đã rem (#) lại. Có nghĩa là nó gợi ý thôi. Không có thực thi.

Anh chạy lệnh sau sẽ thấy thông số hiện tại đang chạy:

Mã:
cat /proc/sys/vm/swappiness
cat /proc/sys/kernel/sched_latency_ns
cat /proc/sys/kernel/sched_rt_period_us
cat /proc/sys/kernel/sched_rt_runtime_us
cat /proc/sys/kernel/sched_autogroup_enabled
cat /proc/sys/kernel/sched_rr_timeslice_ms
cat /proc/sys/kernel/sched_min_granularity_ns
cat /proc/sys/kernel/sched_wakeup_granularity_ns

Em thích dùng SC Fornoth hơn vì nó sync được volume của app Spotify với alsa.

Theo Archphile thì cài librespot do họ compile:

https://archphile.org/archphile-manual/

Mã:
Archphile supports Spotify, using a librespot fork:

https://github.com/librespot-org

librespot works with the official Spotify applications, where Archphile will appear as a supported device. In order to configure librespot you will need to edit the following file:

nano /etc/librespot.conf

and put your username and password.

librespot is not enabled by default. In order to start it you will need the following command:

systemctl start librespot

If you want to enable it so that it runs after every boot:

systemctl enable librespot

If you later change your mind and you want to disable it, you can use the following command:

systemctl disable librespot
 
Chỉnh sửa lần cuối:

tml3nr

Moderator
Đang play từ NAS qua giao diện ympd. Tuyệt vời bác @tml3nr ạ. Lâu rồi có test mà ko ưng ý. Giờ nhờ bác mà archiphile đội mồ hồi sinh. Thanks bác @tmlnr3 nhiều nhé :D
---Mọi thứ đều như ý--
Dạ lúc trước tiếng nó thường lắm. Không ngờ giờ nghe hay quá. Scan NAS nhanh hết hồn.

Mấy cái settings kernel optimize anh nói cho em nghe cách đây hơn 1 năm, đến giờ mới có dịp dùng tới. Cảm ơn anh lần nữa ạ :rolleyes:

Chúc anh luôn vui khỏe!
 

thebluewindows

Well-Known Member
Cái dòng lệnh đó nó đã rem (#) lại. Có nghĩa là nó gợi ý thôi. Không có thực thi.

Anh chạy lệnh sau sẽ thấy thông số hiện tại đang chạy:

Mã:
cat /proc/sys/vm/swappiness
cat /proc/sys/kernel/sched_latency_ns
cat /proc/sys/kernel/sched_rt_period_us
cat /proc/sys/kernel/sched_rt_runtime_us
cat /proc/sys/kernel/sched_autogroup_enabled
cat /proc/sys/kernel/sched_rr_timeslice_ms
cat /proc/sys/kernel/sched_min_granularity_ns
cat /proc/sys/kernel/sched_wakeup_granularity_ns

Em thích dùng SC Fornoth hơn vì nó sync được volume của app Spotify với alsa.

Theo Archphile thì cài librespot do họ compile:

https://archphile.org/archphile-manual/

Mã:
Archphile supports Spotify, using a librespot fork:

https://github.com/librespot-org

librespot works with the official Spotify applications, where Archphile will appear as a supported device. In order to configure librespot you will need to edit the following file:

nano /etc/librespot.conf

and put your username and password.

librespot is not enabled by default. In order to start it you will need the following command:

systemctl start librespot

If you want to enable it so that it runs after every boot:

systemctl enable librespot

If you later change your mind and you want to disable it, you can use the following command:

systemctl disable librespot
- Ý mình thắc mắc cái tham số 4500000 và 1500000 thôi.
- Vừa test thử cái librespot cài sẵn đó thì thấy có sync volume đấy chứ @tml3nr
 

Thanhvo31

Well-Known Member
@tml3nr

Cái file optimize của Rune là đây?

Mã:
#!/bin/bash
#
#  Copyright (C) 2013-2014 RuneAudio Team
#  http://www.runeaudio.com
#
#  RuneUI
#  copyright (C) 2013-2014 – Andrea Coiutti (aka ACX) & Simone De Gregori (aka Orion)
#
#  RuneOS
#  copyright (C) 2013-2014 – Simone De Gregori (aka Orion) & Carmelo San Giovanni (aka Um3ggh1U)
#
#  RuneAudio website and logo
#  copyright (C) 2013-2014 – ACX webdesign (Andrea Coiutti)
#
#  This Program is free software; you can redistribute it and/or modify
#  it under the terms of the GNU General Public License as published by
#  the Free Software Foundation; either version 3, or (at your option)
#  any later version.
#
#  This Program is distributed in the hope that it will be useful,
#  but WITHOUT ANY WARRANTY; without even the implied warranty of
#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
#  GNU General Public License for more details.
#
#  You should have received a copy of the GNU General Public License
#  along with RuneAudio; see the file COPYING.  If not, see
#  <http://www.gnu.org/licenses/gpl-3.0.txt>.
#
#  file: command/orion_optimize.sh
#  version: 1.3
#  coder: Simone De Gregori
#
#####################################
ver="1.3"
####################
# common functions #
####################
mpdprio_nice () {
count=1
for pid in $(pgrep -w mpd);
do
    if ((count == 3))
    then
        echo "### Set priority for: mpd-player thread ###";
        renice -15 $pid;
    fi
    if ((count == 4)) 
    then
        echo "### Set priority for: mpd-output thread ###";
        renice -18 $pid;
    fi
    if ((count == 5))
    then
        echo "### Set priority for: mpd-decoder thread ###";
        renice -16 $pid;
    fi
count=$((count+1))
done
}

mpdprio_default () {
count=1
for pid in $(pgrep -w mpd);
do
    if ((count == 3))
    then
        echo "### Set priority for: mpd-player thread ###";
        renice 20 $pid;
    fi
    if ((count == 4)) 
    then
        echo "### Set priority for: mpd-output thread ###";
        renice 20 $pid;
    fi
    if ((count == 5))
    then
        echo "### Set priority for: mpd-decoder thread ###";
        renice 20 $pid;
    fi
count=$((count+1))
done
}

# set cifsd priority
cifsprio () {
local "${@}"
if (( -n ${pid}))
then
echo "### Set priority for: cifsd ###"
renice ${prio} ${pid}
fi
}

# adjust Kernel scheduler latency based on Architecture
modKschedLatency () {
    local "${@}"
    # RaspberryPi
    if (($((10#${hw})) == "1"))
    then
        echo "RaspberryPi"
        echo ${s01} > /proc/sys/kernel/sched_latency_ns
        echo "sched_latency_ns = "${s01}
        sndusb_profile nrpacks=${u01}
        echo "USB nrpacks="${u01}
        echo -n performance > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
    fi
    # CuBox
    if (($((10#${hw})) == "2"))
    then
        echo "CuBox"
        echo ${s02} > /proc/sys/kernel/sched_latency_ns
        echo "sched_latency_ns = "${s02}
        sndusb_profile nrpacks=${u02}
        echo "USB nrpacks="${u02}
    fi
    # UDOO
    if (($((10#${hw})) == "3"))
    then
        echo "UDOO"
        echo ${s03} > /proc/sys/kernel/sched_latency_ns
        echo "sched_latency_ns = "${s03}
        sndusb_profile nrpacks=${u03}
        echo "USB nrpacks="${u03}
    fi
    # BeagleBoneBlack
    if (($((10#${hw})) == "4"))
    then
        echo "BeagleBoneBlack"
        echo ${s04} > /proc/sys/kernel/sched_latency_ns
        echo "sched_latency_ns = "${s04}
        sndusb_profile nrpacks=${u04}
        echo "USB nrpacks="${u04}
    fi
    # Compulab Utilite
    if (($((10#${hw})) == "5"))
    then
        echo "Utilite"
        echo ${s04} > /proc/sys/kernel/sched_latency_ns
        echo "sched_latency_ns = "${s04}
        sndusb_profile nrpacks=${u04}
        echo "USB nrpacks="${u04}
    fi
    # Cubietruck
    if (($((10#${hw})) == "6"))
    then
        echo "Cubietruck"
        echo ${s06} > /proc/sys/kernel/sched_latency_ns
        echo "sched_latency_ns = "${s06}
        sndusb_profile nrpacks=${u06}
        echo "USB nrpacks="${u06}
    fi
    # Cubox-i
    if (($((10#${hw})) == "7"))
    then
        echo "Cubox-i"
        echo ${s07} > /proc/sys/kernel/sched_latency_ns
        echo "sched_latency_ns = "${s07}
        sndusb_profile nrpacks=${u07}
        echo "USB nrpacks="${u07}
    fi
    # RaspberryPi2/3
    if (($((10#${hw})) == "8"))
    then
        echo "RaspberryPi2/3"
        echo ${s08} > /proc/sys/kernel/sched_latency_ns
        echo "sched_latency_ns = "${s08}
        # sndusb_profile nrpacks=${u08}    nrpacks not supported anymore on newer kernels
        # echo "USB nrpacks="${u08}
    fi
    # ODROID C1
    if (($((10#${hw})) == "9"))
    then
        echo "ODROIDC1"
        echo ${s09} > /proc/sys/kernel/sched_latency_ns
        echo "sched_latency_ns = "${s09}
        # sndusb_profile nrpacks=${u09}    nrpacks not supported anymore on newer kernels
        # echo "USB nrpacks="${u09}
    fi
    # ODROID C2
    if (($((10#${hw})) == "10"))
    then
        echo "ODROIDC2"
        echo ${s10} > /proc/sys/kernel/sched_latency_ns
        echo "sched_latency_ns = "${s10}
        # sndusb_profile nrpacks=${u10}    nrpacks not supported anymore on newer kernels
        # echo "USB nrpacks="${u10}
    fi
}

sndusb_profile() {
local "${@}"
mpc pause > /dev/null 2>&1
sleep 0.3
modprobe -r snd-usb-audio
echo "options snd-usb-audio nrpacks=${nrpacks}" > /etc/modprobe.d/modprobe.conf
sleep 0.2
modprobe snd-usb-audio
sleep 0.5
#mpc play > /dev/null 2>&1
#mpc pause > /dev/null 2>&1
mpc play > /dev/null 2>&1
}

##################
# common startup #
##################
#if [ "$PID" != null  ]; then
#echo "Set priority for: cifsd"
#renice -20 $PID
#fi
cifsprio pid=$(pidof cifsd)
echo "Set normal priority for: rune_SY_wrk"
renice 20 $(pgrep rune_SY_wrk)
echo "Set normal priority for: rune_PL_wrk"
renice 20 $(pgrep rune_PL_wrk)
echo "Set normal priority for: smbd"
renice 19 $(pidof smbd)
echo "Set normal priority for: nmbd"
renice 19 $(pidof nmbd)

##################
# sound profiles #
##################

# default
if [ "$1" == "default" ]; then
ifconfig eth0 mtu 1500
ifconfig eth0 txqueuelen 1000
echo 60 > /proc/sys/vm/swappiness
modKschedLatency hw=$2 s01=6000000 s02=6000000 s03=6000000 s04=6000000 s05=6000000 s06=6000000 s07=6000000 s08=6000000 s09=6000000 s10=6000000 u01=8 u02=8 u03=8 u04=8 u05=8 u06=8 u07=8 u08=8 u09=8 u10=8
mpdprio_default
echo "DEFAULT sound signature profile"
fi

# default
if [ "$1" == "RuneAudio" ]; then
ifconfig eth0 mtu 1500
ifconfig eth0 txqueuelen 1000
echo 0 > /proc/sys/vm/swappiness
modKschedLatency hw=$2 s01=1500000 s02=4500000 s03=4500000 s04=4500000 s05=4500000 s06=4500000 s07=4500000 s08=4500000 s09=4500000 s10=4500000 u01=3 u02=3 u03=3 u04=3 u05=3 u06=3 u07=3 u08=3 u09=3 u10=3
mpdprio_nice
echo "RuneAudio  sound signature profile"
fi

# mod1
if [ "$1" == "ACX" ]; then
ifconfig eth0 mtu 1500
ifconfig eth0 txqueuelen 4000
echo 0 > /proc/sys/vm/swappiness
modKschedLatency hw=$2 s01=850000 s02=3500075 s03=3500075 s04=3500075 s05=3500075 s06=3500075 s07=3500075 s08=3500075 s09=3500075 s10=3500075 u01=2 u02=2 u03=2 u04=2 u05=2 u06=2 u07=2 u08=2 u09=2 u10=2
mpdprio_default
echo "(ACX) sound signature profile"
fi

# mod2
if [ "$1" == "Orion" ]; then
ifconfig eth0 mtu 1000
echo 20 > /proc/sys/vm/swappiness
modKschedLatency hw=$2 s01=500000 s02=500000 s03=500000 s04=1000000 s05=1000000 s06=1000000 s07=100000 s08=1000000 s09=1000000 s10=1000000 u01=1 u02=1 u03=1 u04=1 u05=1 u06=1 u07=1 u08=1 u09=1 u10=1
sleep 2
mpdprio_default
echo "(Orion) sound signature profile"
fi

# mod3
if [ "$1" == "OrionV2" ]; then
ifconfig eth0 mtu 1000
ifconfig eth0 txqueuelen 4000
echo 0 > /proc/sys/vm/swappiness
modKschedLatency hw=$2 s01=120000 s02=2000000 s03=2000000 s04=2000000 s05=2000000 s06=2000000 s07=2000000 s08=2000000 s09=2000000 s10=2000000 u01=2 u02=2 u03=2 u04=2 u05=2 u06=2 u07=2 u08=2 u09=2 u10=2
sleep 2
mpdprio_nice
echo "(OrionV2) sound signature profile"
fi

# mod4
if [ "$1" == "OrionV3_iqaudio" ]; then
ifconfig eth0 mtu 1000
ifconfig eth0 txqueuelen 4000
echo 0 > /proc/sys/vm/swappiness
#modKschedLatency hw=$2 s01=139950 s02=2000000 s03=2000000 s04=2000000 s05=2000000 s06=2000000 s07=2000000 s08=2000000 s09=2000000 s10=2000000 u01=2 u02=2 u03=2 u04=2 u05=2 u06=2 u07=2 u08=2 u09=2 u10=2
if [ "$2" == "01" ]; then
    echo 1500000 > /proc/sys/kernel/sched_latency_ns
    echo 950000 > /proc/sys/kernel/sched_rt_period_us
    echo 950000 > /proc/sys/kernel/sched_rt_runtime_us
    echo 0 > /proc/sys/kernel/sched_autogroup_enabled
    echo 1 > /proc/sys/kernel/sched_rr_timeslice_ms
    echo 950000 > /proc/sys/kernel/sched_min_granularity_ns
    echo 1000000 > /proc/sys/kernel/sched_wakeup_granularity_ns
fi
sleep 2
mpdprio_nice
echo "(OrionV3 optimized for IQaudio Pi-DAC) sound signature profile"
fi

# mod5
if [ "$1" == "OrionV3_berrynosmini" ]; then
ifconfig eth0 mtu 1000
ifconfig eth0 txqueuelen 4000
echo 0 > /proc/sys/vm/swappiness
#modKschedLatency hw=$2 s01=139950 s02=2000000 s03=2000000 s04=2000000 s05=2000000 s06=2000000 s07=2000000 s08=2000000 s09=2000000 s10=2000000 u01=2 u02=2 u03=2 u04=2 u05=2 u06=2 u07=2 u08=2 u09=2 u10=2
if [ "$2" == "01" ]; then
    echo 60 > /proc/sys/vm/swappiness
    echo 145655 > /proc/sys/kernel/sched_latency_ns
    echo 1 > /proc/sys/kernel/sched_rt_period_us
    echo 1 > /proc/sys/kernel/sched_rt_runtime_us
    echo 0 > /proc/sys/kernel/sched_autogroup_enabled
    echo 100 > /proc/sys/kernel/sched_rr_timeslice_ms
    echo 400000 > /proc/sys/kernel/sched_min_granularity_ns
    echo 1 > /proc/sys/kernel/sched_wakeup_granularity_ns
fi
sleep 2
mpdprio_nice
echo "(OrionV3 optimized for BerryNOS-mini I2S DAC) sound signature profile"
fi

# mod6
if [ "$1" == "Um3ggh1U" ]; then
ifconfig eth0 mtu 1500
ifconfig eth0 txqueuelen 1000
echo 0 > /proc/sys/vm/swappiness
modKschedLatency hw=$2 s01=500000 s02=3700000 s03=3700000 s04=3700000 s05=3700000 s06=3700000 s07=3700000 s08=3700000 s09=3700000 s10=3700000 u01=3 u02=3 u03=3 u04=3 u05=3 u06=3 u07=3 u08=3 u09=3 u10=3
mpdprio_default
echo "(Um3ggh1U) sound signature profile"
fi

# dev
if [ "$1" == "dev" ]; then
echo "flush DEV sound profile 'fake'"
fi

if [ "$1" == "" ]; then
echo "Orion Optimize Script v$ver"
echo "Usage: $0 {default|RuneAudio|ACX|Orion|OrionV2|OrionV3_iqaudio|OrionV3_berrynosmini|Um3ggh1U} {architectureID}"
exit 1
fi
 

tml3nr

Moderator
- Ý mình thắc mắc cái tham số 4500000 và 1500000 thôi.
- Vừa test thử cái librespot cài sẵn đó thì thấy có sync volume đấy chứ @tml3nr
sched_latency_ns 4500000 là của rune. 1500000 là gợi ý của archphile.

Bản archphile .99.73 default nó chạy là 18000000

Anh thấy nó sync volume của app Spotify với alsa hardware mixer hay là nó dùng software volume (softvol) ạ? Trước giờ em thấy chỉ có fornoth là sync được với alsa.

Anh chạy alsamixer để xem nó có chạy trong lúc mình kéo volume trong app hay không là biết liền.
 
Chỉnh sửa lần cuối:
Bên trên