Raspberry Pi - Music Server

Discussion in 'Nguồn phát từ máy tính' started by bazokaster, 16/4/15.

  1. freeman1

    freeman1 Advanced Member

    Joined:
    10/9/09
    Messages:
    1.709
    Likes Received:
    220
    Location:
    Hà Nội
    Em rút ra cắm lại, thậm chí bỏ Isolator ra cắm thẳng Dac hat vào Pi cũng ko nhận.
     
  2. lvd

    lvd Advanced Member

    Joined:
    25/4/18
    Messages:
    106
    Likes Received:
    212
    Vậy bạn đã xem lại cài đặt DAC trong MDP chưa. Nếu không được thì cài lại os xem sao. Hy vọng là chỉ lỗi phần mềm.
     
    freeman1 likes this.
  3. freeman1

    freeman1 Advanced Member

    Joined:
    10/9/09
    Messages:
    1.709
    Likes Received:
    220
    Location:
    Hà Nội
    Vâng đệ em thử xem ah. Cảm ơn bác đã hướng dẫn.
     
  4. chuvanvu

    chuvanvu Advanced Member

    Joined:
    12/1/17
    Messages:
    661
    Likes Received:
    581
    Một số tweak với smpd 0.9.6, tùy các bác quyết định nhé.

    1) Cấu hình ntp server về VN cho "gần"
    Code:
    #sudo nano /etc/ntp.conf
    comment dòng đang có (thêm dấu # vào đầu dòng): #server ntp.nict.jp iburst
    Thêm dòng sau
    server 2.vn.pool.ntp.org iburst
    upload_2021-8-4_20-7-18.png

    2) Vô hiệu ipv6

    Về kết nối Internet, số lượng nhà cung cấp có thể sử dụng thoải mái qua ipv6 đã tăng lên, nhưng
    tôi nghĩ có ý kiến cho rằng ipv6 là không cần thiết nếu bạn chỉ nghe nhạc trong môi trường khép kín tại nhà riêng.
    Vì vậy, lần này tôi sẽ giải thích cách vô hiệu hóa ipv6 với Raspberry Pi.

    • Chỉnh sửa /etc/sysctl.conf.
      Vui lòng thêm hai dòng sau vào cuối.
      Code:
      sudo nano /etc/sysctl.conf 
      . Bạn phải nhập để chỉnh sửa tệp vì cần nhóm người dùng là root .
    Code:
    net.ipv6.conf.all.disable_ipv6 = 1
    net.ipv6.conf.default.disable_ipv6 = 1
    
    Nếu bạn khởi động lại Raspberry Pi
    Code:
    ifconfig 
    hoặc
    Code:
    ip a
    nhập sau mô tả ,
    địa chỉ MAC và địa chỉ IP của mỗi giao diện sẽ được hiển thị, nhưng địa chỉ ipv6 đã biến mất.
    (Sau đây là ví dụ về đầu ra ifconfig trong môi trường của tôi. Địa chỉ MAC bị ẩn.)

    eth0 Link encap:Ethernet HWaddr **:**:**:**:**:**
    inet addr:192.168.11.161 Bcast:192.168.11.255 Mask:255.255.255.0
    UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
    RX packets:110394 errors:0 dropped:2113 overruns:0 frame:0
    TX packets:55921 errors:0 dropped:0 overruns:0 carrier:0
    collisions:0 txqueuelen:2000
    RX bytes:139225298 (132.7 MiB) TX bytes:7449674 (7.1 MiB)
    lo Link encap:Local Loopback
    inet addr:127.0.0.1 Mask:255.0.0.0
    UP LOOPBACK RUNNING MTU:65536 Metric:1
    RX packets:9 errors:0 dropped:0 overruns:0 frame:0
    TX packets:9 errors:0 dropped:0 overruns:0 carrier:0
    collisions:0 txqueuelen:1000
    RX bytes:720 (720.0 B) TX bytes:720 (720.0 B)

    Nhân tiện, bạn có thể tắt nó ngay lập tức bằng cách nhập lệnh sau mà không cần sửa đổi tệp,
    nhưng nó sẽ được khôi phục khi bạn khởi động lại bằng cách chỉ nhập lệnh.
    (/etc/sysctl.conf có thể được coi là thực thi lệnh sau khi khởi động.)
    Code:
    sudo sysctl -w net.ipv6.conf.all.disable_ipv6=1
    sudo sysctl -w net.ipv6.conf.default.disable_ipv6=1
    
    • Mở file /boot/cmdline.txt để chỉnh sửa .
      Thực ra, phương pháp được mô tả ở trên. Vì vậy netstat -a, nếu bạn xem xét tại nó, vẫn có một cái gì đó được gọi là "tcp6" (rõ ràng là v4-mapped-on-v6, nó có vẻ là một công nghệ sử dụng v4 trên ipv6).
      Nếu bạn muốn sẽ xóa tối đa anh chàng này, hãy thêm phần sau vào cuối cmdline.txt.
    Code:
    ipv6.disable=1
    Tôi nghĩ rằng phần cuối của cmdline.txt của bạn kết thúc bằng
    Code:
    raspberrypi.throttled_poll_sec=0
    ,
    vì vậy hãy chèn một khoảng trắng sau phần này và khởi động lại Raspberry Pi sau khi viết phần trên.
    Tham khảo
    Code:
    dwc_otg.fiq_enable=0 dwc_otg.fiq_fsm_enable=0 dwc_otg.lpm_enable=0 sdhci_bcm2708.enable_llm=0 console=tty1 root=PARTUUID=55575038-02 rootfstype=ext4 idle=poll processor.max_cstate=1 elevator=noop fsck.repair=yes quiet rootwait logo.nologo cgroup_enable=cpuset isolcpus=0,1,2 xenomai.timerfreq=19200000 xenomai.sysheap_size=2048 xenomai.supported_cpus=0x00000002 rcu_nocbs=2 rcutree.rcu_fanout_leaf=4 snd_soc_bcm2835_i2s.dma_burst_length=8 snd_soc_bcm2835_i2s.tx_req_level=0 snd_soc_bcm2835_i2s.tx_sig_level=52 raspberrypi.throttled_poll_sec=0 ipv6.disable=1
    
    3) Tắt Airplay/Spotify (Em chỉ dùng ổ cứng cắm ngoài, không dùng online).
    Tạo tệp sau
    Code:
    #sudo nano /home /pi/configs/shairport_disable.sh
    #!/bin/sh
    FLGDIR=/home/pi/configs
    if [ -e $FLGDIR/shairport.flg ]; then
      shair=0
    else
      shair=1
    fi
    case "$1" in
       start)
       if [ $shair -eq 0 ]; then
           echo "shairport-sync is already DISABLED"
       else
           if [ ! "`pidof shairport-sync`" = "" ]; then
               sudo systemctl stop shairport-sync.service
           fi
           sudo systemctl disable shairport-sync.service
           sudo systemctl mask shairport-sync.service
           touch $FLGDIR/shairport.flg
           echo "done! shairport-sync service is now disabled"
           #echo "If you want to take this config effect, please reboot!!"
       fi
       ;;
       stop)
       if [ $shair -eq 0 ]; then
           echo "enabling shairport_sync..."
           rm $FLGDIR/shairport.flg
           sudo systemctl unmask shairport-sync.service
            sudo systemctl enable shairport-sync.service
           sudo systemctl start shairport-sync.service
           echo "done! shairport-sync service is now enabled"
           #echo "If you want to take this config effect, please reboot!!"
       else
           echo "shairport_sync is already ENABLED"
       fi
       ;;
       status)
       if [ $shair -eq 0 ]; then
           echo "shairport-sync has been DISABLED by default"
       else
           echo "shairport-sync has been ENABLED by default"
       fi
       ;;
    esac
    exit 0
    
    Cho phép thực thi với tệp mới tạo
    Code:
    sudo chmod +x shairport_disable.sh
    Tạo tệp spotify_disable.sh
    Code:
    #sudo nano /home /pi/configs/spotify_disable.sh
    #!/bin/sh
    FLGDIR=/home/pi/configs
    if [ -e $FLGDIR/spotifyd.flg ]; then
      spot=0
    else
      spot=1
    fi
    case "$1" in
       start)
       if [ $spot -eq 0 ]; then
           echo "spotifyd already DISABLED!!"
       else
           echo "disabling spotifyd..."
           if [ ! "`pidof spotifyd`" = "" ]; then
               sudo systemctl stop spotifyd.service
           fi
           sudo systemctl disable spotifyd.service
           sudo systemctl mask spotifyd.service
           touch $FLGDIR/spotifyd.flg
           echo "done! spotifyd service is now Disabled"
           #echo "If you want to take this config effect, please reboot!!"
       fi
       ;;
       stop)
       if [ $spot -eq 0 ]; then
           echo "enabing spotifyd..."
           rm $FLGDIR/spotifyd.flg
            sudo systemctl unmask spotifyd.service
           sudo systemctl enable spotifyd.service
           sudo systemctl start spotifyd.service
           echo "done! spotifyd serice is now Enabled"
           #echo "If you want to take this config effect, please reboot!!"
       else
           echo "spotifyd is already ENABLED!!"
       fi
       ;;
       status)
       if [ $spot -eq 0 ]; then
           echo "spotifyd has been DISABLED by default"
       else
           echo "spotifyd has been  ENABLED by default"
       fi
       ;;
    esac
    exit 0
    
    Cho phép thực thi với tệp mới tạo
    Code:
    sudo chmod +x spotify_disable.sh
    Như sẽ được mô tả ở phần sau, hai tệp này dùng để tạo tệp cờ để vô hiệu hóa shairport-sync và spotifyd + xóa tập lệnh systemd của mỗi daemon khỏi / v.v.

    • Tệp được viết lại (theo /home/pi/configs)
    shairport_event.sh
    Code:
    #!/bin/bash
    FLGDIR=/home/pi/configs
    if [ -e $FLGDIR/spotifyd.flg ]; then
       spot=0
    else
       spot=1
    fi
    case "$1" in
      begin)
       echo "$DEFAULT_SAMPLE_FORMAT 44100 2 AIRPLAY" > /run/pcminfo
       sudo systemctl restart pipe
       # stop mpd
       sudo systemctl stop ympd
       sudo systemctl stop ympd.socket
       sudo systemctl stop mpd
       sudo umount /var/lib/mpd/music/NAS
       # stop spotify-connect
       if [ $spot -eq 1 ]; then
           sudo systemctl stop spotifyd
           sync
           sleep 0.4
       fi
       exit
       ;;
      end)
       # wakeup mpd
       sudo systemctl start ympd.socket
       sudo mount -a
       sudo systemctl start mpd
       # wakeup spotify-connect
       if [ $spot -eq 1 ]; then
           sudo systemctl start spotifyd
           sync
       fi
       exit
       ;;
    esac
    exit 0
    
    spotify_event.sh
    Code:
    #!/bin/bash
    FLGDIR=/home/pi/configs
    if [ -e $FLGDIR/shairport.flg ]; then
      shair=0
    else
      shair=1
    fi
    pcminfo=/run/pcminfo
    case "$PLAYER_EVENT" in
      start)
       # stop playback
       /usr/bin/mpc stop > /dev/null
       # stop mpd
       sudo systemctl stop ympd
       sudo systemctl stop ympd.socket
       sudo systemctl stop mpd
       sudo umount /var/lib/mpd/music/NAS
       # stop shairport-sync
       if [ $shair -eq 1 ]; then
           sudo systemctl stop shairport-sync
           sudo sync
           sleep 0.4
       fi
       exit
       ;;
      stop)
       if [ ! "`cat /run/pcminfo |cut -d ' ' -f4`" = "DEFAULT" ];then
           exit
       fi
       # wakeup mpd
       sudo systemctl start ympd.socket
       sudo mount -a
       sudo systemctl start mpd
       # start shairport-sync
       if [ $shair -eq 1 ]; then
           sudo systemctl start shairport-sync
           sudo sync
       fi
       exit
       ;;
    esac
    exit 0
    
    Các tệp này được mô tả để dừng hoặc khôi phục các dịch vụ khác khi một số sự kiện xảy ra trong shairport-sync hoặc spotifyd (khi bắt đầu hoặc kết thúc phát lại, v.v.).

    • Cách sử dụng
      Kết nối ssh vào pi, cd vào /home/pi/configs như sau.
      Khi vô hiệu hóa AirPlay ( vô hiệu hóa shairport-sync)
    Code:
    sudo ./shairport_disable.sh start
    Nếu bạn không sử dụng Spotify (vô hiệu hóa Spotifyd)

    Code:
    sudo ./spotify_disable.sh start
    Tiếp theo, nếu bạn đã vô hiệu hóa nó bằng phương pháp trên nhưng muốn
    khôi phục lại Nếu bạn muốn khôi phục AirPlay (bật shairport-sync)

    Code:
    sudo ./shairport_disable.sh stop
    Để khôi phục Spotify (bật Spotifyd)

    Code:
    sudo ./spotify_disable.sh stop
    4) Thay đổi tham số MPD
    Buffer size mặc định của MPD là 4096 kb, và buffer_before_play là 10%.
    Tuy vậy SMPD được tune về tương ứng là 640kb và 75% thì phải.

    Nay em nghịch disable ipv6 rồi thấy tham số đó, em đã đổi lên 1024kb và 30% thấy tiếng long lanh hơn chút.
    Rồi em đổi lại về 4096kb (tương đương tham số bên moode, chỉ cho set tối thiểu là 4096) và 20%.
    Mọi người nên thử thay đổi tham số để tìm giá trị phù hợp với hệ thống của mình.

    upload_2021-8-4_20-28-34.png

    upload_2021-8-4_20-32-38.png
     
    Last edited: 5/8/21
    tml3nr, tauchien, Rndce and 3 others like this.
  5. freeman1

    freeman1 Advanced Member

    Joined:
    10/9/09
    Messages:
    1.709
    Likes Received:
    220
    Location:
    Hà Nội
    Em cài lại bản mềm mới lại chạy ngon rồi các bác ah.
    Em xin cảm ơn các bác đã nhiệt tình tư vấn.
     
    tml3nr, lvd and chuvanvu like this.
  6. chuvanvu

    chuvanvu Advanced Member

    Joined:
    12/1/17
    Messages:
    661
    Likes Received:
    581
    Tiếp tục một số tweak với smpd 0.9.6, tùy các bác quyết định nhé.
    5) Di chuyển 2 folder /tmp và /var/tmp vào bộ nhớ RAM.
    Code:
    #sudo nano /etc/fstab
    
    Code:
    tmpfs           /tmp            tmpfs   defaults,size=32m,noatime,mode=0777      0       0
    tmpfs           /var/tmp        tmpfs   defaults,size=32m,noatime,mode=0777      0       0
    upload_2021-8-4_23-11-58.png

    Ctrl+O để lưu, Ctrl+X để thoát nano.

    Sau đó xóa 2 folder trên thẻ và khởi động lại (Phải rất cẩn thận)

    Code:
    #sudo rm -rf /var/tmp
    #sudo rm -rf /tmp
    #sudo reboot
    Sau khi khởi động lại, xem kết quả
    upload_2021-8-4_23-14-57.png
     
    Last edited: 5/8/21
    tml3nr, quangng and TQ_Audio like this.
  7. chuvanvu

    chuvanvu Advanced Member

    Joined:
    12/1/17
    Messages:
    661
    Likes Received:
    581

    Tiếp tục một số tweak với smpd 0.9.6, tùy các bác quyết định nhé.
    6) Mở rộng thẻ nhớ và copy nhạc vào thẻ.


    Code:
    sudo raspi-config noint --expand-rootfs
    sudo reboot
    (1) Copy nhạc vào folder USB, với user pi
    When using the USB directory as it is in the standard state.
     Enter the following command at ssh login.

    Code:
    sudo chmod 777 /var/lib/mpd/music/USB
    Now you can write to /var/lib/mpd/music/USB with user pi, and you can transfer files with Filezilla, WinSCP etc.

    (2) Copy nhạc vào thẻ SD
    Tạo folder SD:
    Code:
    sudo mkdir /var/lib/mpd/music/SD
    sudo chown pi.pi /var/lib/mpd/music/SD
    sudo chmod 777 /var/lib/mpd/music/SD
    sửa file /etc/rc.local

    Code:
    sudo nano /etc/rc.local  
    Tìm 2 dòng sau
    Code:
    mpc update RAM
    mpc update USB
    
    Thêm vào dòng này
    Code:
    mpd update SD
    Lưu lại (Ctrl+O, Enter, Ctrl+X)

    Có thể dùng WinSCP copy file vào folder SD ở trên.
    Trên giao diện web, chọn "UPDATE LIBRARY" hoặc gõ lệnh (mpc update SD) để cập nhật thư viện cho mpd.
     
    tml3nr, quangng, Rndce and 1 other person like this.
  8. thichPi

    thichPi Advanced Member

    Joined:
    16/3/21
    Messages:
    464
    Likes Received:
    568
    Hmm.../tmp trên 0.9.6 đã mount sẵn với tmpfs (dùng bộ nhớ). /var/tmp trống rỗng....
     

    Attached Files:

    tml3nr likes this.
  9. chuvanvu

    chuvanvu Advanced Member

    Joined:
    12/1/17
    Messages:
    661
    Likes Received:
    581
    Của em chỉ có 2 dòng trên là đang thiết lập (/var/log và /var/lib/mpd/music/RAM) sẵn.
     
    tml3nr likes this.
  10. chuvanvu

    chuvanvu Advanced Member

    Joined:
    12/1/17
    Messages:
    661
    Likes Received:
    581
    Em hầu như không dùng upnp, chỉ thử cho biết.
    Do cái UPnP Controller trên foobar chuối quá, không dùng được với APlayer Media Renderer, em tìm thấy 1 phần mềm chạy trên Windows và cả MAC OS là Audionet RCP làm Remote Control Point chạy ổn, và quan trọng là free. :)

    http://en.audionet.de/apps/rcp/
    Features
    • Play audio data, which is provided by an UPnP server
    • Create and save playlists
    • Setup all device parameters
    • Input channel selection (dropdown menu)
    • Volume control and muting, as well as switching on and off
    • Easy adjustment of equalizer with graphical visualization
    • Loading and saving of user settings
    • Saving and running of FM radio stations
    System Requirements
    • Java Runtime Environment Version 7 or higher
    • PC: Windows 98/2000/2003/XP/Vista/Windows 7/Windows 8
    • Mac: OS X Version 10.6 or higher
    upload_2021-8-7_18-49-49.png
     
    tml3nr and thichPi like this.
  11. hotienchuc

    hotienchuc Approved Member

    Joined:
    9/8/21
    Messages:
    24
    Likes Received:
    7
    Cho mình hỏi. Hiện giờ hệ điều hành nào để phát nhạc trên Pi là ổn nhất ạ. Em đọc sơ qua có thấy volumio, rune audio, moode và cả picoreplayer nữa. Phân vân quá không biết chọn hệ điều hành nào.
    Nhà em được tặng 1 con pi3, 1 cái dac tên là boss dac. Tài sản có ổ cứng chứa chút ít nhạc ạ :)
     
    tml3nr likes this.
  12. lvd

    lvd Advanced Member

    Joined:
    25/4/18
    Messages:
    106
    Likes Received:
    212
    Có vẻ Moode dễ dùng nhất cho người mới. Phải không các bác nhỉ?
     
    tml3nr likes this.
  13. hotienchuc

    hotienchuc Approved Member

    Joined:
    9/8/21
    Messages:
    24
    Likes Received:
    7
    Mình cũng k biết bây giờ sao. Xưa có dùng qua thấy cũng ổn. Mà nay nó làm gì nâng dung lượng file img lên cả mấy gb.
     
    tml3nr likes this.
  14. Tech-Info

    Tech-Info Support

    Joined:
    27/3/17
    Messages:
    206
    Likes Received:
    396
    Location:
    VNAV
    Volumio cho dễ sử dụng bác, vì còn có thể sử dụng thêm nền tảng music streaming khác như Tidal, Spotifly... Để xem trực quan nhất thì bác coi Clip này thì bác sẽ chọn được phần mềm tùy ý của bác.
     
    tml3nr and hotienchuc like this.
  15. chuvanvu

    chuvanvu Advanced Member

    Joined:
    12/1/17
    Messages:
    661
    Likes Received:
    581
    Em không chơi online, nên em dùng smpd v0.9.6 cho pi3.
    Em không rõ nhu cầu của bác, có mua nhiều dịch vụ online (Tidal, spotify...) không ạ?
    Mới chơi và ít kinh nghiệm về linux (dòng lệnh) bác nên chọn Volumio hay MoodeAudio là dễ nhất ạ.

    Bác cũng đừng kỳ vọng quá là pi so sánh được với CD tầm tầm (vì bản thân mạch pi có trên dưới 1 triệu thôi và nó không được làm ra chuyên biệt dùng cho audio).
     
    tml3nr and hotienchuc like this.
  16. caigoc

    caigoc Advanced Member

    Joined:
    13/3/08
    Messages:
    769
    Likes Received:
    215
    Hôm nay rỗi xem lại thấy Volumio có chơi đc với Tidal e vừa thử cài, hình như phải đk mua tk Volumio mới dùng đc chức năng này, hơi buồn một tẹo:(
     
    tml3nr likes this.
  17. hotienchuc

    hotienchuc Approved Member

    Joined:
    9/8/21
    Messages:
    24
    Likes Received:
    7
    Mình không chơi online. Bác có hướng dẫn nào smdp k ạ
     
  18. hotienchuc

    hotienchuc Approved Member

    Joined:
    9/8/21
    Messages:
    24
    Likes Received:
    7
    Nếu chọn volumio. Mount nhạc từ nas nội bộ để chơi trên volumio SO VỚI phát nhạc bằng giao thức UpnP thì hiệu năng với chất lượng nhạc nào dc đảm bảo nhất ạ
     
  19. chuvanvu

    chuvanvu Advanced Member

    Joined:
    12/1/17
    Messages:
    661
    Likes Received:
    581
    Đầu tiên là bác @tml3nr chia sẻ về smpd trong topic này. Bác cứ tìm lại đọc hết về smpd là có.

    Đây là bộ cài cho pi3/2:
    https://drive.google.com/file/d/1KS6szyVefg9aLLvta48yL2PR1LQqONI1/view?usp=sharing

    Mặc định ban đầu nó chơi kiểu NAS và dây LAN, nên nó tắt wifi, tắt cổng USB và đèn LED giảm nhiễu.
    Em phải bật wifi, và cổng USB để cắm ổ cứng trực tiếp.
     
    tml3nr and hotienchuc like this.
  20. hotienchuc

    hotienchuc Approved Member

    Joined:
    9/8/21
    Messages:
    24
    Likes Received:
    7
    Vâng ạ. Đọc thấy bác cũng từng xài qua moode. Moode lấy nhạc từ nas rồi phát thông DAC. Với lại dùng phần mềm upnp đẩy nhạc từ minimsever sang moode. Theo bác cách nào ổn hơn ạ
     
  21. hotienchuc

    hotienchuc Approved Member

    Joined:
    9/8/21
    Messages:
    24
    Likes Received:
    7
    Cái này có vẻ ổn bác ah. Nhưng em không biết làm bằng cách nào. piCoreplayer hình như là 1 hệ điều hành đảm bảo điều này. Nhưng e mò chưa ra
     
  22. chuvanvu

    chuvanvu Advanced Member

    Joined:
    12/1/17
    Messages:
    661
    Likes Received:
    581
    Em không có NAS, với lại tùy vào hệ thống nữa. Xịn hẳn thì có lẽ các bác ít dùng pi. Nên hầu như 2 giao thức kia hầu như không khác nhau đâu ạ.
    Bác cứ thử và cảm nhận. Cái ấy setup thêm được mà bác, nên không cần phân vân nhiều vậy. Lúc đầu bác cứ mount NAS và nghe cho quen đã.
    Bác đầu tư vào nguồn tốt thì cảm nhận rõ hơn là cấu hình.
     
  23. tauchien

    tauchien Advanced Member

    Joined:
    29/9/14
    Messages:
    92
    Likes Received:
    67
    Báo cáo bác, hôm qua em mới thử AM, nhưng khi chọn cast qua Chromecast tới NP5 thì nó ko play được trên AM. Em phải chọn "Truyền nhạc" trên Goole Home rồi quay lại AM Play mới ra được NP5.
    Trong khi đó mConnect thì vẫn chơi qua Chromecast của NP5 mình thường.
     
    tml3nr likes this.
  24. minhnd81

    minhnd81 Approved Member

    Joined:
    30/7/21
    Messages:
    18
    Likes Received:
    7
    Em đang đặt mua 1 DAC cũng định cắm I2S theo chân như bác hướng dẫn. Em phải làm ntn để khai trg config file. Em cảm ơn
     
  25. Scorpio

    Scorpio Moderator

    Joined:
    2/12/05
    Messages:
    7.238
    Likes Received:
    3.297
    Location:
    VNAV
    Bác rút thẻ nhớ ra đưa vào máy tính và dùng một trình soạn thảo như notepad để sửa file
     

Share This Page

Loading...