Mục lục:

Phát Bluetooth trên Sonos bằng Raspberry Pi: 25 bước
Phát Bluetooth trên Sonos bằng Raspberry Pi: 25 bước

Video: Phát Bluetooth trên Sonos bằng Raspberry Pi: 25 bước

Video: Phát Bluetooth trên Sonos bằng Raspberry Pi: 25 bước
Video: Trải nghiệm sau 1 tuần sử dụng Mini PC 50$: Raspberry Pi 4B 2024, Tháng bảy
Anonim
Image
Image
Phát Bluetooth trên Sonos bằng Raspberry Pi
Phát Bluetooth trên Sonos bằng Raspberry Pi

Trước đây tôi đã viết một bài hướng dẫn mô tả cách thêm một đường vào aux hoặc analog vào Sonos bằng Raspberry Pi. Một độc giả đã hỏi liệu có thể truyền âm thanh bluetooth từ điện thoại của mình sang Sonos hay không. Thật dễ dàng để làm điều này bằng cách sử dụng một dongle bluetooth được cắm vào đường dây của Sonos Play: 5 hoặc Sonos CONNECT đắt tiền hơn; tuy nhiên, bạn sẽ mất độ trung thực khi chuyển đổi bluetooth (kỹ thuật số) sang tương tự rồi quay lại kỹ thuật số và nếu bạn chỉ sở hữu một trong những loa Sonos rẻ hơn thì đây không phải là một lựa chọn. Tài liệu hướng dẫn này mô tả cách thiết lập Raspberry Pi để truyền âm thanh bluetooth tới bất kỳ loa Sonos nào.

LƯU Ý: Hãy nhớ rằng chúng tôi sẽ truyền âm thanh bluetooth đến Raspberry Pi và chuyển đổi nó thành luồng mp3 trước khi gửi đến Sonos, vì vậy sẽ có độ trễ trong vài giây. Nếu bạn đang sử dụng tính năng này để xem video, âm thanh sẽ không đồng bộ.

Bước 1:

Những gì bạn sẽ cần:

Raspberry PI 3 Model B (có sẵn Model B + mới hơn, nhanh hơn nhưng tôi bị mắc kẹt với Model B thông thường vì tôi đã đọc về một số vấn đề với khóa B + và radio Bluetooth và wifi của B + có tấm chắn kim loại xung quanh chúng để làm chúng tuân thủ FCC khi được cài đặt bên trong một thiết bị khác nhưng tôi muốn có phạm vi bluetooth tối đa và sợ lớp che chắn có thể cản trở nó)

Máy tính để bàn hoặc máy tính xách tay có đầu đọc thẻ nhớ microSD

Màn hình hoặc TV có đầu vào HDMI (chỉ dành cho thiết lập ban đầu)

Bàn phím và chuột USB hoặc bluetooth (chỉ dành cho thiết lập ban đầu)

Vỏ Raspberry Pi bằng nhựa (Tôi đang sử dụng vỏ nhựa cho dự án này để tối đa hóa phạm vi bluetooth)

Thẻ nhớ Flash Kingston 8 GB microSDHC Class 4

Nguồn điện 5V

Bước 2:

Hình ảnh
Hình ảnh
Hình ảnh
Hình ảnh

Điều hướng đến https://www.raspberrypi.org/downloads/raspbian/ trên máy tính thông thường của bạn và tải xuống "RASPBIAN STRETCH WITH DESKTOP".

Ngoài ra, hãy truy cập https://etcher.io/ và tải xuống Etcher và cài đặt nó.

LƯU Ý: Trong hướng dẫn trước đây của tôi, tôi đã mô tả cách tải xuống NOOBS để cài đặt Raspbian; tuy nhiên, phương pháp này nhanh hơn một chút. Cách nào cũng được.

Bước 3:

Hình ảnh
Hình ảnh
Hình ảnh
Hình ảnh

Chạy Etcher và nhấp vào Chọn hình ảnh và duyệt đến tệp zip. Nhấp vào Chọn ổ đĩa và duyệt đến thẻ microSD, sau đó nhấp vào Flash!

Bước 4:

Hình ảnh
Hình ảnh
Hình ảnh
Hình ảnh
Hình ảnh
Hình ảnh
Hình ảnh
Hình ảnh

LƯU Ý: Một số bước tiếp theo tương tự như hướng dẫn trước của tôi, vì vậy hãy bỏ qua nếu bạn đã thiết lập mật khẩu gốc, IP tĩnh và VNC.

Cắm thẻ microSD vào khe cắm thẻ SD ở mặt dưới của Raspberry Pi. Kết nối cáp HDMI từ Raspberry Pi với màn hình hoặc TV của bạn. Kết nối bàn phím USB, chuột và cuối cùng là cáp nguồn Micro USB. Sau khi khởi động, màn hình Raspbian sẽ xuất hiện. Nó sẽ hướng dẫn bạn qua một số cài đặt nhưng tôi khuyên bạn KHÔNG nên kiểm tra các bản cập nhật. Nhấp vào Bỏ qua. Tôi liên tục gặp lỗi "blueman.bluez.errors. DBusFailedError: Giao thức không khả dụng" khi cố gắng ghép nối bluetooth sau khi tất cả các bản cập nhật được cài đặt, vì vậy tôi phải bắt đầu lại từ đầu.

MẸO: Nếu bạn không muốn giờ quân sự RIGHT, hãy nhấp vào đồng hồ và chọn Cài đặt đồng hồ kỹ thuật số và thay đổi Định dạng đồng hồ từ% R thành% r

Bước 5:

Hình ảnh
Hình ảnh
Hình ảnh
Hình ảnh
Hình ảnh
Hình ảnh

Tiếp theo, chúng ta sẽ kích hoạt máy chủ VNC tích hợp sẵn. Điều này làm cho mọi thứ dễ dàng hơn rất nhiều vì bạn có thể chỉ cần sao chép và dán các lệnh qua VNC thay vì nhập chúng. Chọn Menu GUI> Tùy chọn> Cấu hình Raspberry Pi> Giao diện. Nhấp vào Đã bật bên cạnh VNC và sau đó nhấp vào OK. Sau một vài giây, biểu tượng VNC sẽ xuất hiện trên thanh tác vụ. Nhấp vào nó, sau đó nhấp vào biểu tượng menu ở trên cùng bên phải (hộp có 3 đường ngang), sau đó nhấp vào Tùy chọn. Trong tùy chọn Bảo mật, đặt Mã hóa thành "Ưu tiên" và Xác thực là "Mật khẩu VNC", sau đó nhấp vào Áp dụng. Một hộp mật khẩu sẽ bật lên. Nhập "raspberry" (không có dấu ngoặc kép) cho mật khẩu vào mỗi hộp và nhấp OK.

Bước 6:

Hình ảnh
Hình ảnh
Hình ảnh
Hình ảnh
Hình ảnh
Hình ảnh

Trước khi tiếp tục, chúng ta cần gán một địa chỉ IP tĩnh. Nếu địa chỉ IP của Pi của bạn được máy chủ DHCP của bộ định tuyến chỉ định ngẫu nhiên, thì địa chỉ IP có thể thay đổi sau đó và bạn sẽ không thể kết nối qua VNC (hoặc Sonos cho vấn đề đó). Nhấp vào PHẢI nhấp vào biểu tượng kết nối mạng trên thanh tác vụ (biểu tượng mũi tên lên và xuống nhỏ) và chọn "Cài đặt mạng không dây và có dây". Nhấp chuột TRÁI vào hộp phía trên bên phải và chọn "eth0" để định cấu hình kết nối ethernet hoặc "wlan0" cho không dây. Tôi khuyên bạn nên chỉ định một IP tĩnh cho cái này hay cái kia. Tôi đã gặp sự cố khi lần đầu tiên thiết lập Pi của mình, nơi tôi đã gán cùng một địa chỉ IP tĩnh cho cả hai kết nối và mạng không dây của Pi của tôi bị khóa và tôi không thể làm cho nó hoạt động lại bình thường nên tôi phải bắt đầu cài đặt lại hệ điều hành. Dù sao, hãy nhập địa chỉ IP bạn muốn vào trường địa chỉ IP và nhập địa chỉ IP của bộ định tuyến của bạn vào cả trường Bộ định tuyến và Máy chủ DNS. Nhấp vào Áp dụng và Đóng.

LƯU Ý: Việc chỉ định địa chỉ IP tĩnh có thể dễ dàng hơn bằng cách sử dụng tính năng đặt trước IP DHCP của bộ định tuyến nếu nó có. Bạn có thể cần địa chỉ MAC của Pi hoặc nó có thể chỉ hiển thị trong danh sách các thiết bị được kết nối trên trang quản trị bộ định tuyến của bạn. Nếu bạn cần địa chỉ MAC, hãy nhập lệnh "ifconfig eth0" trong cửa sổ đầu cuối cho ethernet hoặc "ifconfig wlan0" cho WiFi. Điều thú vị là địa chỉ MAC của WiFi sẽ hiển thị trên dòng bắt đầu bằng "ether"

Bước 7:

Hình ảnh
Hình ảnh
Hình ảnh
Hình ảnh
Hình ảnh
Hình ảnh

Tiếp theo chúng ta cần thiết lập độ phân giải màn hình mặc định. Điều này có vẻ ngớ ngẩn khi thấy cách chúng ta đã kết nối với màn hình nhưng sau này khi bạn kết nối qua VNC mà không gắn màn hình (không có đầu, như họ nói), nó sẽ trở lại độ phân giải 640x480 mặc định của Pi, một màn hình rất nhỏ để làm việc với! Chọn Menu GUI> Tùy chọn> Cấu hình Raspberry Pi> Đặt độ phân giải. Đặt nó thành 1280x720 hoặc cao hơn và nhấp vào OK và Yes để khởi động lại.

Bước 8:

Hình ảnh
Hình ảnh
Hình ảnh
Hình ảnh
Hình ảnh
Hình ảnh

Bạn có thể muốn thay đổi tên Pi của mình, đặc biệt nếu bạn có nhiều hơn một tên trên mạng của mình. Tôi đã đổi tên thành "BluetoothPi" để dễ nhận dạng. Nó sẽ yêu cầu bạn khởi động lại sau khi đổi tên.

Bước 9:

Hình ảnh
Hình ảnh
Hình ảnh
Hình ảnh
Hình ảnh
Hình ảnh
Hình ảnh
Hình ảnh

Tại thời điểm này, bạn có thể muốn bắt đầu sử dụng VNC để điều khiển Pi. Mở lại bảng điều khiển VNC trên màn hình Raspbian và tìm địa chỉ IP trong "Kết nối". Cài đặt và chạy trình xem VNC trên máy tính thông thường của bạn và sử dụng địa chỉ IP đó để kết nối và nhập "raspberry" (không có dấu ngoặc kép) làm mật khẩu. Tôi đã sử dụng TightVNC cho Windows. Sau khi kết nối, bạn có thể lưu kết nối VNC của Pi làm lối tắt trên màn hình để nhanh chóng kết nối trong tương lai bằng cách bỏ qua màn hình đăng nhập. Bạn sẽ nhận được cảnh báo về việc lưu mật khẩu trong phím tắt. Để sao chép và dán vào cửa sổ đầu cuối của Pi, hãy chọn hoặc đánh dấu văn bản hoặc lệnh trên máy tính thông thường của bạn, nhấn Ctrl-C (nghĩa là nhấn phím Ctrl và C trên bàn phím của bạn cùng lúc) hoặc nhấp chuột phải và chọn "Sao chép ", sau đó kích hoạt cửa sổ trình xem VNC của Pi và nhấp chuột PHẢI vào bên trong cửa sổ thiết bị đầu cuối ngay trên con trỏ và chọn Dán.

Bước 10:

Hình ảnh
Hình ảnh
Hình ảnh
Hình ảnh

Tiếp theo, chúng ta sẽ cài đặt hai chương trình, Darkice và Icecast2. Darkice là thứ sẽ mã hóa nguồn âm thanh bluetooth của chúng tôi thành một luồng mp3 và Icecast2 là thứ sẽ cung cấp nó cho Sonos dưới dạng một luồng Shoutcast. Sao chép và dán lần lượt từng dòng này vào cửa sổ dòng lệnh, sau đó nhấn phím Enter mỗi lần:

wget

mv darkice_1.0.1-999 ~ mp3 + 1_armhf.deb? raw = true darkice_1.0.1-999 ~ mp3 + 1_armhf.deb

sudo apt-get install libmp3lame0 libtwolame0

sudo dpkg -i darkice_1.0.1-999 ~ mp3 + 1_armhf.deb

Bước 11:

Hình ảnh
Hình ảnh
Hình ảnh
Hình ảnh
Hình ảnh
Hình ảnh
Hình ảnh
Hình ảnh

Bây giờ để cài đặt Icecast2. Nhập "sudo apt-get install icecast2", sau đó nhập. Sau khi cài đặt, một cửa sổ sẽ bật lên hỏi bạn có muốn định cấu hình Icecast2 hay không. Nhấn phím mũi tên trái và enter để chọn Có. Trên màn hình thứ hai, nhấn phím mũi tên xuống và enter để chọn OK để sử dụng tên máy chủ mặc định "localhost". Trên ba màn hình tiếp theo, nhấn vào mũi tên xuống và phím enter để đồng ý sử dụng "hackme" làm nguồn mặc định, chuyển tiếp và mật khẩu quản trị. Mặc dù chúng tôi đồng ý với tất cả các cài đặt mặc định, các bước này phải được hoàn thành để kích hoạt máy chủ Icecast2.

sudo apt-get install icecast2

Bước 12:

Hình ảnh
Hình ảnh
Hình ảnh
Hình ảnh
Hình ảnh
Hình ảnh

Tiếp theo, chúng ta cần chạy trình quản lý tệp GUI với tư cách người dùng root. Để thực hiện việc này, hãy chọn Menu GUI> Chạy. Nhập "sudo pcmanfm" và nhấn enter. Điều đó sẽ mở trình quản lý tệp (tương đương với trình khám phá tệp cho người dùng Windows) vào thư mục chính (/ home / pi) và bạn sẽ thấy tệp cài đặt darkice còn sót lại mà chúng tôi đã tải xuống trước đó. Nhấp vào PHẢI trong một không gian trống và chọn Tạo mới và sau đó Làm trống tệp. Đặt tên là "darkice.cfg" và nhấp vào OK. Sau đó, nhấp vào PHẢI nhấp vào tệp mới tạo đó và chọn mở bằng Leafpad (tương đương với notepad của Windows). Sao chép các dòng bên dưới và dán chúng vào Leafpad, sau đó nhấp vào Tệp và Lưu. Bạn sẽ nhận thấy dòng "chất lượng" được nhận xét bằng dấu # ở phía trước. Nó chỉ được sử dụng nếu bạn đặt "bitrateMode = vbr" (bitrate thay đổi). Bạn không thể đặt giá trị chất lượng khi sử dụng cbr (tốc độ bit không đổi), nếu không luồng sẽ bị giật hình và bỏ qua. Ngược lại, nếu bạn quyết định sử dụng vbr thì bạn cần phải chú thích dòng "bitrate = 160" và bỏ ghi chú dòng "quality".

LƯU Ý: Tốc độ bit mp3 chất lượng cao nhất mà bạn có thể có là 320 kbps; tuy nhiên, cả Wi-Fi và radio Bluetooth trên Raspberry Pi đều trên cùng một chip, vì vậy nếu bạn sử dụng tối đa băng thông của cả hai, âm thanh bluetooth có thể bị giật hoặc đóng băng. Chúng tôi sẽ thay đổi một cài đặt sau đó để khắc phục điều này, tuy nhiên nó hạn chế phần nào băng thông WiFi, vì vậy tôi đã giảm tốc độ bit âm thanh cho dự án này xuống 160 kbps vì tôi dự định chỉ sử dụng nó trên WiFi. Nếu bạn đang sử dụng ethernet thì đó không phải là vấn đề và bạn có thể đặt tốc độ bit thành 320 kbps một cách an toàn.

[chung] thời lượng = 0 # thời lượng tính bằng s, 0 vĩnh viễn bufferSecs = 1 # bộ đệm, kết nối lại trong giây = có # kết nối lại nếu bị ngắt kết nối

[đầu vào]

device = phone # name of bluetooth device sampleRate = 44100 # sample rate 11025, 22050 or 44100 bitsPerSample = 16 # bits channel = 2 # 2 = stereo

[icecast2-0]

bitrateMode = cbr # hằng số tốc độ bit (hằng số 'cbr', 'abr' trung bình) #quality = 1.0 # 1.0 là chất lượng tốt nhất (chỉ sử dụng với vbr) format = mp3 # format. Chọn 'vorbis' cho OGG Vorbis bitrate = 160 # bitrate server = localhost # hoặc IP port = 8000 # port cho IceCast2 access password = hackme # source password cho IceCast2 server mountPoint = rapi.mp3 # mount point trên IceCast2 server.mp3 hoặc.ogg name = BluetoothPi

Bước 13:

Hình ảnh
Hình ảnh
Hình ảnh
Hình ảnh
Hình ảnh
Hình ảnh
Hình ảnh
Hình ảnh

Tiếp theo, chúng ta cần làm theo các bước tương tự như trước để tạo một tệp trống có tên "darkice.sh". Tệp.sh tương đương với tệp.bat hoặc tệp hàng loạt cho DOS hoặc Windows. Mở bằng Leafpad, sao chép và dán các dòng bên dưới và lưu. Nếu bạn đã làm theo hướng dẫn trước đây của tôi, bạn sẽ nhận thấy dòng bắt đầu Darkice trông hơi khác một chút. Tôi đã phải nhúng mã vào một vòng lặp vì bất cứ khi nào Darkice mất tín hiệu âm thanh bluetooth, nó sẽ ngừng chạy và không tự động khởi động lại ngay cả khi âm thanh được khởi động lại. Tôi đã nghiên cứu rất kỹ vấn đề này và mặc dù có nhiều cách phức tạp để tự động chạy một tập lệnh bất cứ khi nào thiết bị bluetooth được kết nối, đôi khi Darkice sẽ dừng lại bất cứ khi nào tín hiệu âm thanh bị mất ngay cả khi thiết bị bluetooth vẫn được kết nối (ví dụ: nếu bạn đóng YouTube ứng dụng trên điện thoại của bạn) nên đây là cách dễ nhất và đáng tin cậy nhất để đảm bảo Darkice đang chạy bất cứ khi nào có âm thanh bluetooth. Nếu Darkice đang chạy, lệnh sẽ bị bỏ qua.

#! / bin / bashately:; làm sudo / usr / bin / darkice -c /home/pi/darkice.cfg; ngủ 5; xong

Bước 14:

Hình ảnh
Hình ảnh

Tiếp theo, chúng ta cần chạy một lệnh để làm cho tệp darkice.sh có thể thực thi được. Mở cửa sổ terminal và nhập "sudo chmod 777 /home/pi/darkice.sh" và nhấn enter. Bây giờ đã đến lúc khởi động dịch vụ máy chủ Icecast2. Nhập "khởi động dịch vụ sudo icecast2" và nhấn enter.

sudo chmod 777 /home/pi/darkice.sh

dịch vụ sudo icecast2 bắt đầu

Bước 15:

Hình ảnh
Hình ảnh
Hình ảnh
Hình ảnh
Hình ảnh
Hình ảnh
Hình ảnh
Hình ảnh

Tiếp theo, chúng ta cần yêu cầu Darkice tự động khởi động bất cứ khi nào Pi được khởi động (máy chủ Icecast2 chạy như một dịch vụ và đã tự động khởi động sau khi khởi động). Đầu tiên chúng ta cần chọn trình soạn thảo văn bản để sử dụng. Trong cửa sổ đầu cuối, nhập "select-editor" và nhấn enter. Gõ "2" để chọn trình chỉnh sửa nano và nhấn enter. Sau đó gõ "crontab -e" và nhập. Tiếp theo, giữ phím Mũi tên Xuống xuống để cuộn đến cuối tệp văn bản xuất hiện và thêm dòng này "@reboot sleep 10 && sudo /home/pi/darkice.sh". Sau đó nhấn Ctrl-X để thoát và nó sẽ nhắc "Lưu bộ đệm đã sửa đổi?". Nhấn phím Y cho Yes rồi Enter để xác nhận bất kỳ tên tệp nào được tạo tự động.

chọn-biên tập viên

crontab -e

@reboot sleep 10 && sudo /home/pi/darkice.sh

Bước 16:

Hình ảnh
Hình ảnh
Hình ảnh
Hình ảnh
Hình ảnh
Hình ảnh

Ghép nối điện thoại của bạn với Raspberry Pi bằng biểu tượng bluetooth trên màn hình. Điều quan trọng là bạn phải đặt bluetooth của Pi ở chế độ khám phá và sau đó ghép nối từ điện thoại của mình. Nếu bạn đặt điện thoại của mình ở chế độ khám phá và cố gắng ghép nối nó từ Pi thì điện thoại có thể kết nối nhưng báo lỗi cho bạn rằng không có dịch vụ nào trên điện thoại của bạn mà Pi có thể sử dụng, điều này đúng. Chúng tôi đang cố gắng gửi âm thanh tới Pi chứ không phải ngược lại. Sau khi nó được ghép nối, hãy chạy lệnh này trong cửa sổ đầu cuối để tiết lộ địa chỉ MAC bluetooth của thiết bị được kết nối của bạn:

sudo bluetoothctl

Bước 17:

Hình ảnh
Hình ảnh
Hình ảnh
Hình ảnh
Hình ảnh
Hình ảnh

Để Darkice có thể sử dụng thiết bị bluetooth làm đầu vào âm thanh PCM, chúng ta phải tạo một tệp trong thư mục "etc" có tên "asound.conf" (etc / asound.conf). Nhấp vào mũi tên lên trên trình quản lý tệp một vài lần để đi tới thư mục gốc và sau đó nhấp đúp vào thư mục "etc" để mở nó. Cuộn xuống và nhấp chuột PHẢI vào một không gian trống và tạo một tệp trống có tên "asound.conf" và sao chép và dán các dòng bên dưới với địa chỉ MAC của thiết bị của bạn được thay thế cho địa chỉ của tôi và lưu lại.

pcm.phone {type plug slave.pcm {type bluealsa device "50: F0: D3: 7A: 94: C4" profile "a2dp"}}

Bước 18:

Hình ảnh
Hình ảnh
Hình ảnh
Hình ảnh
Hình ảnh
Hình ảnh

Cả radio Wi-Fi và Bluetooth trên Raspberry Pi đều sử dụng cùng một chip, vì vậy nếu bạn sử dụng tối đa băng thông của cả hai, âm thanh bluetooth có thể bị giật hình hoặc đóng băng. Một số gọi nó là một lỗi và một số nói rằng đó chỉ là một hạn chế phần cứng. Chúng tôi sẽ thay đổi một cài đặt để khắc phục điều này. Tín dụng cho việc đăng bản sửa lỗi này sẽ được chuyển đến "pelwell" tại https://github.com/raspberrypi/linux/issues/1402 Chạy lại sudo pcmanfm để mở trình quản lý tệp và duyệt tới / lib / firmware / brcm. Nhấp đúp vào tệp văn bản "brcmfmac43430-sdio.txt" để mở và thêm các dòng này vào dưới cùng và lưu.

# Thông số cùng tồn tại Bluetooth thử nghiệm từ Cypressbtc_mode = 1 btc_params8 = 0x4e20 btc_params1 = 0x7530

Bước 19:

Hình ảnh
Hình ảnh
Hình ảnh
Hình ảnh
Hình ảnh
Hình ảnh

Nhấp vào biểu tượng menu GUI và chọn Tắt máy và Khởi động lại. Nếu bạn đã làm theo tất cả các bước này một cách chính xác thì máy chủ âm thanh bluetooth của bạn sẽ tự động khởi động ở bất kỳ đâu từ 30 giây đến một phút sau khi nhấp vào khởi động lại. TRƯỚC KHI có thể thêm nó vào Sonos, bạn phải kết nối bluetooth của điện thoại với Pi (chỉ cần chạm vào nó trong cài đặt bluetooth của điện thoại vì nó đã được ghép nối) và bắt đầu phát âm thanh thuộc một số loại và tăng âm lượng. Hãy nhớ rằng bạn sẽ không nghe thấy bất kỳ âm thanh nào phát ra từ loa của điện thoại vì nó cho rằng nó được kết nối với loa bluetooth bên ngoài. Một cách trực quan để biết liệu Icecast có đang nhận âm thanh bluetooth từ Darkice hay không là mở https://192.168.86.107:8000 trong trình duyệt web với IP Pi của bạn được thay thế cho IP của tôi. Icecast luôn chạy nên bạn sẽ luôn thấy trang trạng thái nhưng nếu Darkice cũng đang nhận âm thanh bluetooth thì bạn cũng sẽ thấy điểm gắn kết và bộ mô tả luồng. Ngắt kết nối bluetooth của bạn và làm mới trang và nó sẽ trống trở lại.

Bước 20:

Hình ảnh
Hình ảnh
Hình ảnh
Hình ảnh

Bạn phải sử dụng ứng dụng bộ điều khiển máy tính để bàn Sonos để thêm luồng tùy chỉnh vào Sonos. Nhấp vào Quản lý> Thêm Đài phát thanh và nhập url cho luồng mà trong trường hợp của tôi là "https://192.168.86.107:8000/rapi.mp3". Cũng nhập Tên trạm và bấm OK.

Bước 21:

Hình ảnh
Hình ảnh

Để phát đài radio tùy chỉnh mà chúng tôi vừa thêm, hãy chọn "Radio by Tunein" rồi chọn "My Radio Stations". Nhấp chuột TRÁI ĐÔI để phát hoặc nhấp chuột PHẢI để chỉnh sửa hoặc thêm đài vào mục yêu thích Sonos của bạn.

Bước 22:

Hình ảnh
Hình ảnh
Hình ảnh
Hình ảnh

Sau khi thêm đài phát thanh tùy chỉnh, đài phát thanh đó sẽ ngay lập tức có sẵn trong ứng dụng Sonos của bạn. Mở ứng dụng, chạm vào "My Sonos" ở dưới cùng, cuộn xuống "Trạm" và chạm vào "Xem tất cả". Cuộn xuống cho đến khi bạn thấy đài mới tạo của mình. Nhấn vào nó và nó sẽ bắt đầu phát trong các phòng đã chọn của bạn. Hãy nhớ rằng, ̶ Nếu bạn ngắt kết nối Bluetooth từ pi thì Icecast Stream sẽ ̶d̶i̶s̶c̶o̶n̶n̶e̶c̶t̶.̶ nếu bạn chuyển đổi âm thanh ứng dụng nó có thể ̶d̶i̶s̶c̶o̶n̶n̶e̶c̶t̶.̶ để tiếp tục lắng nghe trên Sonos vì bạn sẽ phải khởi động lại chơi âm thanh vào điện thoại một lần nữa và đẩy Play trên ̶T̶h̶e̶ ̶S̶o̶n̶o̶s̶ ̶a̶p̶p̶ ̶a̶g̶a̶i̶n̶.̶ <--- Điều này đã được sửa; xem cập nhật bên dưới. Chúc may mắn và cảm ơn vì đã đọc!

Bước 23: CẬP NHẬT: CỐ ĐỊNH GIỮ STREAM ĐƯỢC KẾT NỐI KHI BLUETOOTH NGẮT KẾT NỐI

Vì vậy, tính năng phát trực tuyến qua bluetooth đã hoạt động hoàn hảo với thiết lập này NGOẠI TRỪ Sonos sẽ ngắt kết nối khỏi máy chủ Icecast bất cứ khi nào Darkice bị mất âm thanh bluetooth chẳng hạn như khi bạn chuyển đổi ứng dụng âm thanh hoặc chỉ đơn giản là ngắt kết nối bluetooth, điều đó thật khó khăn vì bạn sẽ phải phát lại âm thanh bluetooth trước đó bạn thậm chí có thể nhấn nút phát trong ứng dụng Sonos. Điều này đã trở thành một vấn đề lớn khi tôi đang cố gắng truyền âm thanh tới Sonos từ ứng dụng WatchESPN trên điện thoại của tôi, chỉ ở chế độ toàn màn hình, vì vậy tôi không thể nhấn nút phát trong ứng dụng Sonos sau khi bắt đầu âm thanh bluetooth nhưng khi tôi đóng ứng dụng WatchESPN, Luồng Sonos sẽ không bắt đầu trừ khi bạn đã khởi động âm thanh bluetooth trước! Ặc! Tôi đã cố gắng kéo tóc của mình ra để tìm ra một bản sửa lỗi thanh lịch cho điều này. Tôi đã thử một bộ mã hóa mp3 khác có tên là liquidsoap có tùy chọn gửi âm thanh im lặng khi nó mất kết nối nhưng tôi không thể làm cho nó hoạt động với bluealsa. Tôi đã cố gắng trộn luồng bluealsa với luồng alsa soundcard giả phụ bằng cách sử dụng dsnoop và asym để cố lừa Icecast nghĩ rằng vẫn có tín hiệu âm thanh nhưng alsa thực sự không cho phép bạn thao tác âm thanh bluetooth nhiều. Sau đó, tôi bắt đầu điều tra bằng cách sử dụng điểm gắn kết dự phòng bằng tệp mp3 im lặng trong Icecast nhưng Sonos sẽ thấy tên điểm gắn kết thay đổi và ngắt kết nối. Một lần tôi đang sử dụng tệp test.mp3 và vô tình chỉ định nó làm tên điểm gắn kết chính thay vì tên miền dự phòng và nhận thấy Sonos chỉ cần chuyển sang phát tệp đó khi nó bị ngắt kết nối khỏi luồng bluetooth "rapi.mp3". Eureka! Nó sẽ không tự động chuyển trở lại luồng bluetooth khi nó khả dụng trở lại, điều đó khiến tôi nghĩ tại sao không chỉ sử dụng cùng một tên điểm gắn kết? Vì vậy, những gì bạn phải làm là tạo một tệp mp3 im lặng và đặt cho nó cùng tên với luồng Darkice mp3, "rapi.mp3" và mã cứng nó làm điểm gắn kết chính trong tệp cấu hình Icecast2. Điều xảy ra là bất cứ khi nào Sonos mất kết nối với luồng Darkice / bluetooth rapi.mp3, nó chỉ bắt đầu lặp lại tệp rapi.mp3 im lặng khác cho đến khi luồng bluetooth trực tuyến trở lại. Bằng cách này, bạn không cần phải có âm thanh bluetooth trước khi phát trong Sonos. Đây là cách thực hiện…

Bước 24:

Hình ảnh
Hình ảnh
Hình ảnh
Hình ảnh
Hình ảnh
Hình ảnh

Đầu tiên chúng ta phải cài đặt ffmpeg để tạo một tệp mp3 im lặng. Bạn có thể ghi tệp.wav im lặng từ một soundcard bên ngoài và chuyển đổi sang mp3 bằng cách sử dụng lame nhưng vì tôi không có đầu vào soundcard bên ngoài cho dự án này, sử dụng ffmpeg là giải pháp dễ dàng nhất. Mở cửa sổ terminal và nhập "sudo apt-get install ffmpeg" và nhấn Enter:

sudo apt-get install ffmpeg

Sau khi nó được cài đặt, hãy sao chép và dán dòng dài này để mã hóa tệp mp3 im lặng có thời lượng chỉ một giây:

sudo ffmpeg -f lavfi -i anullsrc = channel_layout = stereo: sample_rate = 44100 -b: a 160k -t 1 /usr/share/icecast2/web/rapi.mp3

Mở Trình quản lý tệp dưới dạng root bằng cách sử dụng "sudo pcmanfm" và duyệt đến "/ etc / icecast2". Nhấp chuột PHẢI vào "icecast.xml" và mở bằng Leafpad và dán những dòng này ngay dưới dòng "" trên cùng:

/rapi.mp3

Lưu và Khởi động lại và bây giờ bạn sẽ có thể khởi động trạm bluetooth Sonos tùy chỉnh của mình trước khi bạn kết nối điện thoại với bluetooth!

Bước 25: Phụ lục

Phụ lục
Phụ lục
Phụ lục
Phụ lục
Phụ lục
Phụ lục
Phụ lục
Phụ lục

Tôi muốn Raspberry Pi và nguồn điện 110V AC đến 5V DC được đặt riêng trong một hộp để tôi có thể dễ dàng di chuyển nó xung quanh nhà nhưng rất ngạc nhiên khi thấy một hộp như vậy không tồn tại. Tôi có thể in 3D một cái sau đó nhưng trong thời gian chờ đợi, tôi đã chuyển sang sử dụng một vỏ Raspberry Pi khác và tìm thấy một bộ sạc tường USB mỏng và cáp ngắn. Bộ sạc có một lớp phủ cao su mà tôi không thể lấy băng VHB rõ ràng để dán vào nhưng hóa ra đó là một miếng dán có thể tháo rời dễ dàng; tuy nhiên, điều đó đã tạo ra một chỗ lõm nhỏ khiến băng VHB quá mỏng nên tôi đã sử dụng khóa dán.

Đề xuất: