Chia sẻ một vài cách setup Spotify Connect trên Raspberry Pi (Cập nhật lần 2)

Thảo luận trong 'Thiết bị Âm thanh' bắt đầu bởi tml3nr, 6/6/18.

Tags
  1. tuanqc78

    tuanqc78 Well-Known Member

    Tham gia ngày:
    9/3/13
    Bài viết:
    1,020
    Đã được cảm ơn:
    163
    Giới tính:
    Nam
    Cám ơn bác nhiều.
     
    tml3nr cảm ơn bài này.
  2. tml3nr

    tml3nr Well-Known Member

    Tham gia ngày:
    27/8/08
    Bài viết:
    5,747
    Đã được cảm ơn:
    9,549
    Theo đề nghị của anh @vominhchi. Em o bế bản Rune 0.4 dựa theo cách của anh @mtminh, [email protected] và vài tweak nhỏ khác để cho âm thanh hay nhất. Tích hợp sẵn SC Fornoth 003 luôn.

    Em tính không add dac i2s vào. Nhưng cuối cùng phải enable Boss Dac mới kiểm tra được các tweaks có OK hay không. Các anh có thể đổi sang dac khác và kiểm tra lại các settings.

    Những settings này theo em là hay nhất cho MPD và Spotify Connect. Nếu mình bật thêm các thứ khác (UPnP renderer, AirPlay...) tiếng nó sẽ kém đi một ít.

    Các thay đổi gồm có:

    1. Update WebUI theo patch của [email protected]

    http://www.runeaudio.com/forum/chrome-shows-strange-behaviour-t6304.html

    2. Disable avahi / zeroconf @mtminh

    Mã:
    systemctl disable avahi-daemon.service
    systemctl stop avahi-daemon.service
    Mã:
    systemctl disable avahi-daemon.socket
    systemctl stop avahi-daemon.socket
    Mã:
    redis-cli hset mpdconf zeroconf_enabled no
    3. Disable tvservice @mtminh

    Mã:
    nano /var/www/command/orion_optimize.sh
    
    Thêm vào common startup:
    
    /opt/vc/bin/tvservice -o
    4. Disable max_usb_current=1 trong /boot/config.txt

    5. Tăng max_output_buffer_size của mpd.conf để cho MPD client load cover art. [email protected]

    Mã:
    redis-cli hset mpdconf max_output_buffer_size "16384"
    6. Tạo symbolic link cho MPD client load cover art:

    Mã:
    ln -s /mnt/MPD /var/www/covers 
    Như vậy đường dẫn cho cover art trong app MPD client sẽ là:

    Mã:
    http://your_ip/covers
    7. Tạo lệnh temp để kiểm tra nhiệt độ, xung clock và các tham số optimize kenel.

    Mã:
    nano /usr/bin/temp
    #!/bin/bash
    /opt/vc/bin/vcgencmd measure_temp
    /opt/vc/bin/vcgencmd get_config arm_freq
    cat /sys/block/mmcblk0/queue/scheduler; 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
    8. Install Spotify Connect Fornoth v003 đến bước 4. Cần làm thêm 3 bước nữa.

    RuneAudio 0.4 phiên bản... hết số v1 :D

    https://www.fshare.vn/file/KWL1ZN33W149

    Mã:
    File: RuneAudio_0.4_20170229_20181022_tml3nr_v1.img
    CRC-32: a1460b55
    MD4: c5c817a9d282a0b7fd0cc737d81fdc97
    MD5: 43371e04b58d91248fa3a4f533281f75
    SHA-1: eb94b35c780209399912b71c5d7c7d353c8437e9

    Ghi chú:

    - Bản này làm trên pi2. Nếu dùng trên pi3 có thể cần disable Bluetooth.

    - Kiểm tra alsamixer để chắc chắn là Analog Playback Boost OFF. Analog là 100%

    [​IMG]

    - Nếu disable volume. Phải chắc chắn rằng trước đó Analog và Digital nằm ở 100%. Vì khi mình disable nó sẽ giữ lại con số hiện tại chứ không tự động đẩy lên max. Rune cố tình làm vậy để người dùng có thể lock volume ở một mức tùy ý.

    - Audio buffer size và Buffer before play trong mục MPD Configuration nên gia giảm tùy theo gu nghe và đồ đánh. Nếu giảm xuống tiếng sẽ attack và focus hơn.

    Mặc định của Rune 0.4:

    Mã:
    Audio buffer size 4096
    
    Buffer before play 20%
    Settings như hình này tắt tối đa các dịch vụ. Chỉ dùng MPD và Spotify Connect:

    [​IMG]

    [​IMG]

    [​IMG]
     
    Chỉnh sửa cuối: 23/5/19
    celebrity and chipno like this.
  3. sonlt

    sonlt Member

    Tham gia ngày:
    16/6/09
    Bài viết:
    40
    Đã được cảm ơn:
    9
    bản này mình muốn vô ssh để tinh chỉnh thì đánh use và pass gì thế bác @tml3nr ? Mình đánh root xong phần pass nó không cho điền tiếp , gà quá nhờ bác giúp đỡ , thanks
     
  4. tml3nr

    tml3nr Well-Known Member

    Tham gia ngày:
    27/8/08
    Bài viết:
    5,747
    Đã được cảm ơn:
    9,549
    User và pass em vẫn để mặc nhiên ạ. Nó là root / rune

    Mình run luôn như sau cũng được:

    "C:\Program Files\Putty\putty.exe" -ssh [email protected] -pw rune
     
    sonlt cảm ơn bài này.
  5. rndce

    rndce Well-Known Member

    Tham gia ngày:
    21/10/10
    Bài viết:
    273
    Đã được cảm ơn:
    523
    MÌnh đã cài xong Spotify Conect trên moOde 3.8.4, có phải khi mình tream nhạc Spotify qua moOde thì nhạc đang phát trên Pi (nguồn từ thẻ SD Card) vẫn chạy phải không ah. Nghĩa là hai phần nhạc vẫn chạy song song. Phải như vậy không bạn @tml3nr.
     
  6. tml3nr

    tml3nr Well-Known Member

    Tham gia ngày:
    27/8/08
    Bài viết:
    5,747
    Đã được cảm ơn:
    9,549
    Trên rune hình như nó sẽ ngưng em đang phát, để phát cho em sau. Em cũng không rõ lắm vì ít khi làm vậy. Thường là stop em này rồi mới play em kia.
     
    rndce cảm ơn bài này.
  7. rndce

    rndce Well-Known Member

    Tham gia ngày:
    21/10/10
    Bài viết:
    273
    Đã được cảm ơn:
    523
    Cái này do mình vô tình tream từ Spotify qua moOde trong khi chưa stop nhạc trên moOde, chỉ băn khoăn là không biết cài SC có bị lỗi gì ko. Và khi stream từ Spotify qua moOde không có thể hiện là moOde đang phát nhạc stream từ Spotify (ngoài âm thanh thì nghe rõ).
     
  8. tml3nr

    tml3nr Well-Known Member

    Tham gia ngày:
    27/8/08
    Bài viết:
    5,747
    Đã được cảm ơn:
    9,549
    Anh dùng DAC gì và setup SC theo cách nào ạ? Nếu từ app Spotify đẩy nhạc sang pi được là nó OK rồi.

    Anh lưu ý là nên khai báo cho SC dùng hw:0,0 (Lấy theo audio_output device của mpd.conf) để đường đi của tín hiệu là ngắn nhất:

    nano / etc/mpd.conf

    Mã:
    audio_output {
       name      "BossDAC"
       type      "alsa"
       device      "hw:0,0"
       mixer_control    "Digital"
       mixer_type    "hardware"
       mixer_device    "hw:0"
       auto_resample    "no"
       auto_format    "no"
    Mã:
    ExecStart=/usr/bin/sh /root/spotify-connect-web.sh --name RuneAudio --playback_device hw:0,0 --mixer_device_index 0 --mixer Digital --username abc --password xyz --bitrate 320
    Setup theo những cách em nói bên trên. Khi phát SC giao diện web của OS không hiển thị gì.

    Chỉ có Volumio làm rất tốt chuyện này. Khi phát SC giao diện web hiển thị đúng cover art của file đang play. Rất hay và đẹp. Nhưng tiếc là em không thích tiếng của nó.

    moode 4.3 em test hình như cũng không hiển thị gì khi phát SC.

    PS: SC của moode 4.3 dùng softvol. Tiếng nó bị mờ. Em dùng SC Fornoth thấy OK. Tiếng hay hơn nhiều.
     
    Chỉnh sửa cuối: 24/10/18
    rndce cảm ơn bài này.
  9. rndce

    rndce Well-Known Member

    Tham gia ngày:
    21/10/10
    Bài viết:
    273
    Đã được cảm ơn:
    523
    Mình dùng Hifiberry DAC+, và khi phát SC đúng là giao diện của MoOde 3.8.4 không hiển thị gì.
    Cảm ơn bạn đã nhiệt tình hướng dẫn.
     
    tml3nr cảm ơn bài này.
  10. tml3nr

    tml3nr Well-Known Member

    Tham gia ngày:
    27/8/08
    Bài viết:
    5,747
    Đã được cảm ơn:
    9,549
    Hifiberry Dac+ có volume hardware. Nếu dùng SC Fornoth. Khi anh kéo volume trong app Spotify nó sẽ kéo theo volume Digital của DAC. Dùng rất tiện.

    Anh chạy alsamixer kiểm tra xem nó có đồng bộ nhau được chưa?

    Em rất thích Spotify nên ráng mò đủ các kiểu. Sao cho âm thanh của nó được hay nhất có thể o_O
     
    rndce cảm ơn bài này.
  11. tml3nr

    tml3nr Well-Known Member

    Tham gia ngày:
    27/8/08
    Bài viết:
    5,747
    Đã được cảm ơn:
    9,549
    Setup SC Fornoth 003 trên Rune cho Allo DigiOne

    Many thanks to anh [email protected] về tip này.

    Có anh bạn nhờ config dùm SC Fornoth 003 cho bản rune 0.4 đã update để chạy được Allo DigiOne. Em xà quần toát mồ hôi vẫn không chạy. May sao nhớ đến bài này của anh triton. Làm một phát ăn tiền liền :D

    Với DigiOne, mình chỉ cần thay đổi giá trị 'snd_rpi_hifiberry_digi' thành 'sndallodigione' là OK.

    Em xin phép ghi lại cho dễ nhìn:

    Bước 1. Edit file connect.py:

    Mã:
    nano /root/spotify-connect-web-chroot/usr/src/app/connect.py
    Tìm đến dòng lệnh như dưới đây và sửa lại:

    Mã:
    mixer_volume = int(mixer.getvolume()[0] * 655.35)
    Thành ra:

    Mã:
    mixer_volume = 1 #int(mixer.getvolume()[0] * 655.35)
    Bước 2. Edit file console_callbacks.py:

    Mã:
    nano /root/spotify-connect-web-chroot/usr/src/app/console_callbacks.py
    Tìm đến các dòng lệnh như dưới đây và sửa lại:

    #1:

    Mã:
    playback_device_group.add_argument('--device', '-D', help='alsa output device (deprecated, use --playback_device)', default='default')
    Mã:
    playback_device_group.add_argument('--device', '-D', help='alsa output device (deprecated, use --playback_device)', default='0')
    #2:

    Mã:
    playback_device_group.add_argument('--playback_device', '-o', help='alsa output device (get name from aplay -L)', default='default')
    Nếu là Hifiberry Digi+:

    Mã:
    playback_device_group.add_argument('--playback_device', '-o', help='alsa output device (get name from aplay -L)', default='snd_rpi_hifiberry_digi')
    Nếu là Allo DigiOne:

    Mã:
    playback_device_group.add_argument('--playback_device', '-o', help='alsa output device (get name from aplay -L)', default='sndallodigione')
    #3:

    Mã:
    if self._args.playback_device != 'default':
    Nếu là Hifiberry Digi+:

    Mã:
    if self._args.playback_device != 'snd_rpi_hifiberry_digi':
    Nếu là Allo DigiOne:

    Mã:
    if self._args.playback_device != 'sndallodigione':
    #4:

    Mã:
    corected_playback_volume = int(min_volume_range + ((volume / 655.35) * (100 - min_volume_range) / 100))
    Mã:
    corected_playback_volume = 1 #int(min_volume_range + ((volume / 655.35) * (100 - min_volume_range) / 100))
    Bước 3. Tạo file service:

    Mã:
    nano /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 RuneAudio --username abc --password xyz --bitrate 320
    Restart=always
    RestartSec=10
    StartLimitInterval=30
    StartLimitBurst=20
    
    [Install]
    WantedBy=multi-user.target
    Bước 4. Test the service execute:

    Mã:
    systemctl start spotify-connect
    Bước 5. Nếu OK, ta enable service (start on boot):

    Mã:
    systemctl enable spotify-connect
    Vậy là xong ạ. Em cảm ơn anh [email protected] một lần nữa!
     
    chipno cảm ơn bài này.
  12. mtminh

    mtminh Well-Known Member

    Tham gia ngày:
    24/1/11
    Bài viết:
    546
    Đã được cảm ơn:
    869
    Anh @tml3nr
    E cài theo hướng dẫn của anh trang 1: Rune (tất cả phiên bản) + Digione chạy được mà anh
     
  13. tml3nr

    tml3nr Well-Known Member

    Tham gia ngày:
    27/8/08
    Bài viết:
    5,747
    Đã được cảm ơn:
    9,549
    Em cũng không hiểu sao anh ạ. Em vật vã hơn 2 tiếng. Dùng hết mọi thủ đoạn... đê hèn nhưng nó vẫn không chạy :D

    Có thể anh làm chạy vì cách ở trang 1 dùng bản SC Fornoth 000.

    Bản phải mod connect.py và console_callbacks.py là bản Rune 0.4 update để chạy được pi3 B+ do em build. SC Fornoth 003 :confused:
     
  14. mtminh

    mtminh Well-Known Member

    Tham gia ngày:
    24/1/11
    Bài viết:
    546
    Đã được cảm ơn:
    869
    Anh @tml3nr
    - Có thể Bản anh là bản anh build riêng cho RPi3 B+, nên khác.

    PS: Thank You nhiều, nhờ a mới chơi spotify, nó rắc rối quá.
     
    Chỉnh sửa cuối: 28/10/18
    tml3nr cảm ơn bài này.
  15. sonlt

    sonlt Member

    Tham gia ngày:
    16/6/09
    Bài viết:
    40
    Đã được cảm ơn:
    9
    Bạn @tml3nr giúp mình vụ này , mình check amixer của rune thì thấy như vầy , sao là mono mà kg là stereo hay 2 chanel . Bạn giúp mình hướng khắc phục nhé . Thanks Capture.PNG
     
    Chỉnh sửa cuối: 28/10/18
  16. tml3nr

    tml3nr Well-Known Member

    Tham gia ngày:
    27/8/08
    Bài viết:
    5,747
    Đã được cảm ơn:
    9,549
  17. sonlt

    sonlt Member

    Tham gia ngày:
    16/6/09
    Bài viết:
    40
    Đã được cảm ơn:
    9
    chắc bạn giải thích thêm , mình đọc mà cảm thấy rối rắm lắm vì dốt đặc linux . Thanks
     
  18. tml3nr

    tml3nr Well-Known Member

    Tham gia ngày:
    27/8/08
    Bài viết:
    5,747
    Đã được cảm ơn:
    9,549
    Anh dùng DAC gì và rune đang set gì cho nó ạ? Anh post nội dung file /boot/config.txt em xem thử.

    Anh chạy 2 lệnh sau và paste kết quả lên đây ạ:

    aplay -l

    aplay -L
     
    Chỉnh sửa cuối: 28/10/18
  19. sonlt

    sonlt Member

    Tham gia ngày:
    16/6/09
    Bài viết:
    40
    Đã được cảm ơn:
    9
    Mình sử dụng DAC rời IFI nano , Rune lúc khởi động thì mình cắm sẵn và nó tự nhận dac ifi luôn
    File config.txt hơi dài

    # Uncomment some or all of these to enable the optional hardware interfaces
    # Params:
    # i2c_arm Set to "on" to enable the ARM's i2c interface
    # (default "off")
    # i2c_vc Set to "on" to enable the i2c interface
    # usually reserved for the VideoCore processor
    # (default "off")
    # i2c_arm_baudrate Set the baudrate of the ARM's i2c interface
    # (default "100000")
    # i2c_vc_baudrate Set the baudrate of the VideoCore i2c interface
    # (default "100000")
    # i2c_baudrate An alias for i2c_arm_baudrate
    # i2s Set to "on" to enable the i2s interface
    # (default "off")
    # spi Set to "on" to enable the spi interfaces
    # (default "off")
    # act_led_trigger Choose which activity the LED tracks.
    # Use "heartbeat" for a nice load indicator.
    # (default "mmc")
    # act_led_activelow Set to "on" to invert the sense of the LED
    # (default "off")
    # act_led_gpio Set which GPIO pin to use for the activity LED
    # (in case you want to connect it to an external
    # device)
    # (default "16" on a non-Plus board, "47" on a
    # Plus or Pi 2)
    # N.B. It is recommended to only enable those interfaces that are needed.
    # Leaving all interfaces enabled can lead to unwanted behaviour (i2c_vc
    # interfering with Pi Camera, I2S and SPI hogging GPIO pins, etc.)
    # Note also that i2c, i2c_arm and i2c_vc are aliases for the physical
    # interfaces i2c0 and i2c1. Use of the numeric variants is still possible
    # but deprecated because the ARM/VC assignments differ between board
    # revisions. The same board-specific mapping applies to i2c_baudrate,
    # and the other i2c baudrate parameters.
    #dtparam=i2c_arm=on
    #dtparam=i2c_vc=on
    #dtparam=i2s=on
    #dtparam=spi=on
    #dtparam=act_led_trigger=mmc
    #dtdebug=on
    #dtparam=uart1=off
    dtoverlay=pi3-disable-bt-overlay
    #dtoverlay=pi3-miniuart-bt-overlay
    ## RuneAudio HDMI & 3,5mm jack
    dtparam=audio=on
    ## RuneAudio I2S-Settings
    dtoverlay=none
    # Uncomment to enable the lirc-rpi module
    # Params: gpio_out_pin GPIO pin for output (default "17")
    # gpio_in_pin GPIO pin for input (default "18")
    # gpio_in_pull Pull up/down/off on the input pin
    # (default "down")
    # sense Override the IR receive auto-detection logic:
    # "1" = force active high
    # "0" = force active low
    # "-1" = use auto-detection
    # (default "-1")
    # softcarrier Turn the software carrier "on" or "off"
    # (default "on")
    # invert "on" = invert the output pin (default "off")
    # debug "on" = enable additional debug messages
    # (default "off")
    #dtoverlay=lirc-rpi
    #dtparam=gpio_out_pin=17
    #dtparam=gpio_in_pin=18
    #dtparam=gpio_in_pull=down
    # LCD settings
    # 180 degrees
    #lcd_rotate=2
    # Normal
    lcd_rotate=0
    #dtoverlay=rpi-backlight
    #dtoverlay=rpi-ft5406
    disable_splash=1
    # Uncomment if you get no picture on HDMI for a default "safe" mode
    #hdmi_safe=1
    # Uncomment this if your display has a black border of unused pixels visible
    # and your display can output without overscan
    #disable_overscan=1
    # Uncomment the following to adjust overscan. Use positive numbers if console
    # goes off screen, and negative if there is too much border
    #overscan_left=16
    #overscan_right=16
    #overscan_top=16
    #overscan_bottom=16
    # Uncomment to force a console size. By default it will be display's size minus
    # overscan.
    #framebuffer_width=1280
    #framebuffer_height=720
    # Uncomment if hdmi display is not detected and composite is being output
    #hdmi_force_hotplug=1
    # Uncomment to force a specific HDMI mode (this will force VGA)
    #hdmi_group=1
    #hdmi_mode=1
    # Uncomment to force a HDMI mode rather than DVI. This can make audio work in
    # DMT (computer monitor) modes
    hdmi_drive=2
    # Uncomment to set monitor mode to DMT
    #hdmi_group=2
    # Uncomment to increase signal to HDMI, if you have interference, blanking, or
    # no display
    #config_hdmi_boost=4
    # setting the max usb current to 1200mA
    max_usb_current=1
    # memory options
    gpu_mem=64
    # Overclocking options
    force_turbo=1

    aplay -L khi chơi 1 bản nhạc 16 - 44,1
    aplay -I cũng chơi bản nhạc như trên 2.PNG 3.PNG 4.PNG 2.PNG 3.PNG 4.PNG
     
  20. tml3nr

    tml3nr Well-Known Member

    Tham gia ngày:
    27/8/08
    Bài viết:
    5,747
    Đã được cảm ơn:
    9,549
    aplay -l (chữ en lờ thường chứ không phải i)

    Giờ anh down file LRMonoPhase4.wav này về, giải nén ra chép vào /root:

    Rồi:

    Mã:
    nano /etc/mpd.conf 
    Tìm chổ audio_output để xem device đang là gì:

    Mã:
    audio_output {
    ....................
    ....................
    device      "xxxx" 
    Sau đó test âm thanh bằng lệnh này:

    Mã:
    aplay -D xxxx LRMonoPhase4.wav 
    Khi đó âm thanh ra loa thế nào ạ?

    PS: Anh nên set:

    HDMI & 3,5mm jack = OFF trong giao diện web Settings để disable sound onboard.

    [​IMG]
     
    Chỉnh sửa cuối: 28/10/18
    sonlt cảm ơn bài này.

Chia sẻ trang này