Forumi


Povratak   PC Ekspert Forum > Računala > DIY i Tinkering
Ime
Lozinka

Odgovori
 
Uređivanje
Staro 25.05.2021., 02:54   #1
domy_os
EMP moderator
 
domy_os's Avatar
 
Datum registracije: Apr 2005
Lokacija: Osijek
Postovi: 18,395
Raspberry Pi kao audio streaming gateway

Ljudi moji, nadam se da ste dobro.

Malo sam tražio, na ovom forumu ne vidim sličan topic, a i na internetu ih nema baš puno. Pošto sam uložio nešto truda, a uložit ću ga još, red bi bio to podijeliti. Prošle godine sam kupio i testirao Raspberry Pi 4 u nadi da ću ga pretvoriti u neki multimedia player. Na kraju, nakon puno uzbuđenja i "šarafljenja" po hardwareu i softwareu, ispostavilo se da je to i dalje tipični pokućni Linux projekt - zanimljiv, jedinstven, zabavan, ali nikada ne baš tako dobar kao što bi trebao biti. Daleko je to od nekog profesionalnog proizvoda i plug and play principa. U nekim trenucima sam se sjetio 2010. kada sam se prvi puta uopće susreo s Linuxom, tada je to bio preveliki šok za mene tako da sam se bio vratio na dobro poznate Windowse. Bio sam kao neko dijete koje se opeklo na ringlu pa to isto zlo više nije diralo.

Hardware na kojem se trenutno igram:

Raspberry Pi 4 Model B 8 GB + Onyx Producer 2-2 DAC
Custom desktop PC s Windows 10 Pro 20H2
Notebook Lenovo ThinkPad T480 s Fedora 34 Linuxom
Notebook Lenovo ThinkPad T580 s Windows 10 Pro 20H2
Smartphone Huawei Mate 10

Naravno, ovo dole je moguće odraditi i u virtualnom okruženju, tipa WSL, QEMU, VirtualBox,... Samo prilagodite IP adrese i nazive interfacea, drugih razlika nema.

Prvo sam se mučio oko izbora OS-a za RPi, srećom, "instalacija" raznih distribucija na SanDisk Extreme 128 GB karticu je išla jako brzo pa to nije dugo trajalo. Izbor je pao na Ubuntu Server 20.04.2 LTS + Desktopify skriptu za konverziju u Desktop verziju gdje sam odabrao MATE desktop environment. Autor skripte inače radi za Canonical tako da je provjereno sigurna. Proces instalacije skripte je jednostavan i trajao je otprilike pola sata.

Linkovi za download i više informacija:

Ubuntu Server > https://ubuntu.com/download/raspberry-pi
Desktopify > https://github.com/wimpysworld/desktopify

Nakon inicijalnog tweakanja sustava po vlastitim željama, instalacije nekih osnovnih paketa i rješavanja popratnih problema, bacio sam se u razmišljanje kako izvesti u naslovu spomenuti streaming. Da odmah odgovorim, ne zanimaju me DLNA, UPNP i slična rješenja koja rade samo s određenim aplikacijama i samo kroz određenu vrstu konekcije. Htio sam nešto što radi sa svakom aplikacijom i sa svakim OS-om, po mogućnosti preko žice odnosno LAN-a. Na neki način sam to i dobio uz pomoć PulseAudio servera koji je prisutan u velikom broju distribucija pa ajde da raspletem sve što sam izveo.

Streaming Windows 10 > (W)LAN > Raspberry Pi > USB > DAC > pojačalo i zvučnici

Za streaming s Windowsa 10 sam odabrao Scream - projekt s GitHuba koji se oslanja na PulseAudio pošto PulseAudio nema Windows klijent, a WinESD projekt je davno stao s razvojem pa se nisam htio mučiti nečime što nema nikakve budućnosti i upitne je funkcionalnosti na novim Windowsima (https://www.freedesktop.org/wiki/Sof...lseaudioclient).

Link za download i instalaciju Screama > https://github.com/duncanthrax/scream

Na Windows mašini sam instalirao sender:

https://github.com/duncanthrax/scream/releases

Napomena: u trenutku pisanja teksta je najnovija verzija bila 3.6. Na početnoj stranici se spominju problemi sa secure bootom i upgradeanim Windowsima, međutim, te probleme nisam susreo iako sam ga više puta reinstalirao. Ako budete imali problema, pokušajte držati lijevi SHIFT, kliknuti restart i u izborniku koji se pojavi odabrati Disable Driver Signature Enforcement. Na stranici GitHuba također postoje neka rješenja.

ZIP arhivu sam spremio u Downloads (kod vas je možda drugi directory, nebitno), a zatim raspakirao:



Pokrenuo Command Prompt kao administrator (elevated mode):



Pokrenuo skriptu Install.bat (tu me tražio još jednu potvrdu za unsigned driver, ali nažalost nisam screenshotao, budem u VM-u pa updateam topic) i to je to:



Nakon toga se pojavio novi audio izlaz odnosno virtaulna zvučna kartica i postavljena je kao glavna:



Zatim sam DAC prebacio na Raspberry Pi te instalirao receiver. Odabrao sam Applications directory u Homeu jer tu spremam i pokrećem sve pakete koje skidam izvan repositorya, ali vi ga možete smjestiti gdje hoćete, može i u Home jer root nije potreban.

Code:
mkdir ~/Applications
cd ~/Applications
sudo apt update
sudo apt install libpulse-dev cmake make git
git clone https://github.com/duncanthrax/scream.git
cd scream/Receivers/unix/
mkdir build && cd build
cmake ..
make
[/code]

Napravio rule u ufw firewallu (preskočite ako vam je isključen):

Code:
sudo ufw allow 4010/udp
Ili ako koristite firewalld:

Code:
sudo firewall-cmd --permanent --direct --add-rule ipv4 filter INPUT 11 -p udp --dport 4010 -m conntrack --ctstate NEW,ESTABLISHED,RELATED -j ACCEPT
sudo firewall-cmd --reload
Radi testa, pokrenuo sam Scream s verboseom i odredio mu LAN interface (zamijenite eth0 sa svojim):

Code:
./scream -vi eth0

# Pokreće se...
#
# Using Pulseaudio output
# Starting unicast receiver
Rekao sam to je to, pokrenuo player sa stranim hitovima, međutim, glas iz metalne kante je progovorio da neće moći ove noći, odlučio me mučiti još malo. Muzike naravno nigdje nije bilo. Bacio se na troubleshoting i vidio da se multicast paketi šalju sa svih interfacea, samo ne odakle trebaju, a to je LAN (imam još VirtualBox i VPN).



Srećom, Scream se može namjestiti da "puca" na jednu IP adresu odnosno unicast pa sam dodao registry key s IP addresom Raspberrya.



Kôd niže možete kopirati, zalijepiti u Notepad, staviti IP adresu svog Raspberrya, spremiti kao scream_unicast.reg i importati u registry.

Code:
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Scream\Options]
"UnicastIPv4"="10.17.25.113"
"UnicastPort"=dword:00000fab
Potom restartao ljutu mašinu i namjestio firewall za novi port i IP adresu Raspberrya.



Na Raspberryu dodao nove argumente za Scream kako bih ga prilagodio novonastaloj situaciji:

Code:
./scream -uvp 4011 -i eth0
Ponovno pokrenuo player, ovaj puta sam stavio najnovije hitove s Balkana i voila, zagrmilo je iz JBL Pro zvučnika. Bacio brzi pogled u terminal, status je dobio još jedan redak:

Code:
# Using Pulseaudio output
# Starting unicast receiver
# Switched format to sample rate 48000, sample size 32 and 2 channels.
Tcpdump gori od navale paketića narodne muzike:

Code:
sudo tcpdump

12:17:37.770334 IP DOMY-PC.4011 > domy-pi.4011: UDP, length 1157
12:17:37.780084 IP DOMY-PC.4011 > domy-pi.4011: UDP, length 1157
12:17:37.780182 IP DOMY-PC.4011 > domy-pi.4011: UDP, length 1157
12:17:37.780385 IP DOMY-PC.4011 > domy-pi.4011: UDP, length 1157
12:17:37.790090 IP DOMY-PC.4011 > domy-pi.4011: UDP, length 1157
12:17:37.790214 IP DOMY-PC.4011 > domy-pi.4011: UDP, length 1157
12:17:37.790365 IP DOMY-PC.4011 > domy-pi.4011: UDP, length 1157
12:17:37.790745 IP DOMY-PC.4011 > domy-pi.4011: UDP, length 1157
12:17:37.800056 IP DOMY-PC.4011 > domy-pi.4011: UDP, length 1157
12:17:37.800127 IP DOMY-PC.4011 > domy-pi.4011: UDP, length 1157
Zatim bacio pogled na sound applet i osmijeh na licu se još malo povećao. Kao što se vidi, novi klijent se pojavio među aplikacijama.



Dobro, sada kada konačno sve radi, priveo sam ovaj korak kraju i napravio servis kako bi se Scream pokrenuo automatski nakon prijave na Raspberry.

Code:
sudo nano /usr/lib/systemd/user/scream.service
Zalijepio sam sljedeće (vi prilagodite ExecStart za svoju putanju, port i interface):

Code:
[Unit]
After=graphical.target
ConditionUser=!root
Description=Scream
Wants=pulseaudio.service

[Service]
ExecStartPre=/bin/sleep 15
ExecStart=/home/domy/Applications/scream/Receivers/unix/build/scream -up 4011 -i eth0
Restart=on-failure
Type=simple

[Install]
WantedBy=default.target
Nakon toga reloadao systemd daemon, uključio Scream u startupu i pokrenuo servis (sve ide bez sudo!):

Code:
systemctl daemon-reload --user
systemctl enable --now --user scream.service
Napomena: u ovoj verziji Ubuntua se PulseAudio pokreće pod userom, ne kao system service, iz tog razloga sam i Scream stavio kao user service, inače se ne bi mogao pokrenuti.

Testirao sam oporavak Screama "ubijanjem" PulseAudio servisa, sve radi, sve se zeleni.



Top i System Monitor nisu pokazivali neko značajno opterećenje slabašnog Raspberrya:



Šećer na kraju, nakon restarta RPi-a ili PC-a nije potrebno ništa raditi, sve se automatski pokrene, vaše je samo da se prijavite u user account (ili namjestite autologon). Glasnoća se može regulirati na svim mjestima, znači PC, RPi i eventualno vanjski DAC, ako ga imate. Moguće je streamanje s više klijenata odjednom, u mom slučaju je u isto vrijeme radio player na Windowsima i na Raspberryu.

Toliko za sada, nadam se da je nekome bilo korisno, veliki pozdrav, čuvajte se i sve najbolje!

Nedovršeno: Streaming Linux > Raspberry Pi > USB DAC

Nedovršeno: Streaming Linux > Windows 10 > USB DAC

Nedovršeno: Streaming Android > Raspberry Pi > USB DAC
__________________
"Kako su krojači novog svjetskog poretka uspjeli u tako kratko vrijeme slomiti intelektualne sposobnosti društva, uništiti kritičku svijest i ljudima nametnuti izvrnutu logiku?"

Nisu slomili u kratko vrijeme. Slamali su godinama, desetljećima pa i stoljećima. Svaka odgledana epizoda Big Brothera, svaki dečko koji ne zna niti promijeniti žarulju, a kamoli uzeti sjekiru i pocijepati drva, svaka cura koja misli da je briga za vlastitu obitelj robija, ali rad za par tisuća kuna u korporaciji 12 sati dnevno blagodat, svako promicanje terora političke korektnosti, svaka podrška promociji svih oblika poremećenosti… Sve to nas je dovelo do ovdje. Korona je samo zakucavanje lopte u gol nakon što je obrana već izigrana i golman odletio u prazno.




Lenovo ThinkPad T14 Gen 2 + Lenovo ThinkPad Universal Thunderbolt 4 Dock

CPU: Intel Core i7-1165G7 @ 2.8 GHz
RAM: 2 x 16 GB DDR4-3200
SSD: Samsung 970 EVO Plus 2 TB NVMe M.2
LCD: 14" FHD IPS 400nits Low Power
WLAN: Intel Wi-Fi 6 AX201
WWAN: Quectel EM120R-GL 4G LTE CAT12
OS: Windows 11 Pro

LCD monitor: AOC AG493UCX
Keyboard: Razer Huntsman V2 Analog
Mice: Logitech G502 Proteus Spectrum
SB: Mackie Onyx Producer 2x2
Speakers: 2 x JBL LSR305
MFP: Canon Pixma MP240
NAS: Synology DS420+ with 4 x WD Red Pro 8 TB
HDD Dock: LC Power LC-DOCK-U3-CR + 12 x Hitachi/Samsung/Seagate/WD 1/2 TB

domy_os je offline   Reply With Quote
Staro 25.05.2021., 11:59   #2
Pupo
Nikad sit, uvijek žedan
Moj komp
 
Pupo's Avatar
 
Datum registracije: Jun 2005
Lokacija: Vallis Aurea / ZG
Postovi: 7,999
Zanimljivo štivo.


S tim da RPi novi nije baš slabašan
__________________
Sent from AS/400.
Pupo je offline   Reply With Quote
Oglasni prostor
Oglas
 
Oglas
Staro 25.05.2021., 13:32   #3
Nikky
Moderator
 
Nikky's Avatar
 
Datum registracije: Sep 2006
Lokacija: St
Postovi: 22,575
Bravo kolega domy_os,
inače fali ovakvih how - to štiva.
Nikky je offline   Reply With Quote
Staro 08.11.2023., 16:58   #4
Psycho
Master Of Disaster
Moj komp
 
Psycho's Avatar
 
Datum registracije: Nov 2002
Lokacija: Rijeka
Postovi: 1,252
moje pitanje se spaja na ovaj post vise nego na bilo koji topic, a da izbjegnem otvaranje novog topica.

@Domy jesi se mozda ti dotakao multi room konfiguracije?


evo jedan lijepi odgovor chatgpta ali me zanima da li se netko stvarno dotakao ovoga.
Citiraj:
Creating a multi-room audio system with open-source software on a budget can be a fun and rewarding DIY project. Here are some of the best and cost-effective options to consider:

1. Raspberry Pi with Snapcast:

Raspberry Pi is an affordable single-board computer.
Use a Raspberry Pi for each room and install an open-source software like Snapcast. Snapcast is designed for synchronized audio playback across multiple devices.
You can use Raspberry Pi OS or a lightweight Linux distribution like Raspberry Pi OS Lite to keep costs down.
Combine it with audio HATs or USB sound cards for better audio quality.
Snapcast can be controlled via a web interface or mobile app, making it user-friendly.
2. Volumio:

Volumio is an open-source music player for Raspberry Pi and other SBCs.
It offers multi-room audio capabilities and supports various audio formats.
You can install Volumio on multiple Raspberry Pi devices in different rooms and sync them to play music simultaneously.
3. Home Assistant with Node-RED:

Home Assistant is an open-source home automation platform.
You can integrate audio playback with Home Assistant using media players like Snapcast or Cast.
Node-RED can be used to create automation flows for synchronized audio playback in multiple rooms.
While Home Assistant may require some learning, it provides extensive customization and control.
4. Mopidy with Iris:

Mopidy is an open-source music server that can be installed on a Raspberry Pi.
The Iris web interface provides an intuitive way to manage your music and control playback in multiple rooms.
You can integrate Mopidy with various music streaming services and local music libraries.
5. Pi MusicBox:

Pi MusicBox is another Raspberry Pi-based solution for multi-room audio.
It's easy to set up and integrates with services like Spotify and Google Music.
It supports synchronized playback on multiple devices.
6. Roon (with limitations):

Roon is not open source, but it has a free and open-source component called Roon Bridge.
Roon can be expensive for full functionality, but you can use Roon Bridge in combination with other open-source software for multi-room audio.
__________________
Psycho je offline   Reply With Quote
Staro 08.11.2023., 18:23   #5
xlr
49%winner
Moj komp
 
xlr's Avatar
 
Datum registracije: Sep 2007
Lokacija: PU
Postovi: 8,790
Zelis postici ovo sto je domy pisao ili te zanima obicno streamanje muzike po sobama, nevezano za windowse i sl.? Vidim spominje se Roon, Volumio i sl. pa zaro pitam.

Ako te zanima ovo drugo, streamanje muzike po sobama, to sam slozio i jos uvijek koristim sa picoreplayerom na raspberryjima + logitech media server koji se vrti na NAS-u. Svaki rpi je player, grupiram ih ako hocu, ali 99% vremena sviraju dvije razlicite stvari.

Volumio me nije zadovoljio. Roon nisam probao. Moode audio je bio oke, ali kratko sam ga koristio. Ovo sto sam si slozio je dosta kompleksnije, pokriva streamanje lokalne muzike, internet radio i streaming servise (deezer, spotify, yt).
__________________
Keep calm and fastboot oem unlock.
xlr je offline   Reply With Quote
Staro 08.11.2023., 19:33   #6
Cuky
jedan i jedini :D
Moj komp
 
Cuky's Avatar
 
Datum registracije: Sep 2005
Lokacija: novi zagreb
Postovi: 4,938
@xlr - a na sta su spojeni rpi, na aktivne zvucnike po zonama ili na neko pojacalo/avr?
Cuky je offline   Reply With Quote
Staro 08.11.2023., 20:14   #7
xlr
49%winner
Moj komp
 
xlr's Avatar
 
Datum registracije: Sep 2007
Lokacija: PU
Postovi: 8,790
Rpi imaju HAT-ove i jedan je optikom spojen na DAC i aktivne zvucnike, a drugi preko 3.5mm na random prijenosni zvucnik. Prvi ima USB-LAN adapter sto malo ubrza odziv i loadiranje pogotovo ako browsas po deezeru i sl. Drugi je preko wifija, taj mi nije toliko bitan.

Dovoljan je i rpi zero za glumiti player, ali osjetno mi brze radi zero 2. Rpi3 i rpi4 analogni output je banana, ima dosta smetnji u mom slucaju, nije mi se svidjelo to.

Jedna prije pustanja u pogon. HAT-ovi su Justboom digi zero i Audio shim (ovog zadnjeg ne preporucam, voli gubiti kontakt na GPIO pinovima):
https://imgur.com/a/Iqn107o

Kontrola ide preko bilo kojeg browsera/uredjaja, ili tableta koji je uvijek na svom mjestu:
https://imgur.com/a/D3sxD99

Ne treba nuzno HAT, moze i na USB ako DAC podrzava taj input:
https://imgur.com/a/geEXQae
__________________
Keep calm and fastboot oem unlock.
xlr je offline   Reply With Quote
Staro 08.11.2023., 20:32   #8
domy_os
EMP moderator
 
domy_os's Avatar
 
Datum registracije: Apr 2005
Lokacija: Osijek
Postovi: 18,395
Citiraj:
Autor Psycho Pregled postova
moje pitanje se spaja na ovaj post vise nego na bilo koji topic, a da izbjegnem otvaranje novog topica.

@Domy jesi se mozda ti dotakao multi room konfiguracije?


evo jedan lijepi odgovor chatgpta ali me zanima da li se netko stvarno dotakao ovoga.
Nisam to radio, ali ne bi trebalo biti problema, Scream može slati multicast na cijelu mrežu. Znači pustiš muziku s jednog izvora na multicast adresu i svaki RPi u sobi ga hvata i reproducira.

Cijeli tutorial sam odgodio do daljnjega jer sam skroz promijenio okruženje, a vremena sve manje.
__________________
"Kako su krojači novog svjetskog poretka uspjeli u tako kratko vrijeme slomiti intelektualne sposobnosti društva, uništiti kritičku svijest i ljudima nametnuti izvrnutu logiku?"

Nisu slomili u kratko vrijeme. Slamali su godinama, desetljećima pa i stoljećima. Svaka odgledana epizoda Big Brothera, svaki dečko koji ne zna niti promijeniti žarulju, a kamoli uzeti sjekiru i pocijepati drva, svaka cura koja misli da je briga za vlastitu obitelj robija, ali rad za par tisuća kuna u korporaciji 12 sati dnevno blagodat, svako promicanje terora političke korektnosti, svaka podrška promociji svih oblika poremećenosti… Sve to nas je dovelo do ovdje. Korona je samo zakucavanje lopte u gol nakon što je obrana već izigrana i golman odletio u prazno.




Lenovo ThinkPad T14 Gen 2 + Lenovo ThinkPad Universal Thunderbolt 4 Dock

CPU: Intel Core i7-1165G7 @ 2.8 GHz
RAM: 2 x 16 GB DDR4-3200
SSD: Samsung 970 EVO Plus 2 TB NVMe M.2
LCD: 14" FHD IPS 400nits Low Power
WLAN: Intel Wi-Fi 6 AX201
WWAN: Quectel EM120R-GL 4G LTE CAT12
OS: Windows 11 Pro

LCD monitor: AOC AG493UCX
Keyboard: Razer Huntsman V2 Analog
Mice: Logitech G502 Proteus Spectrum
SB: Mackie Onyx Producer 2x2
Speakers: 2 x JBL LSR305
MFP: Canon Pixma MP240
NAS: Synology DS420+ with 4 x WD Red Pro 8 TB
HDD Dock: LC Power LC-DOCK-U3-CR + 12 x Hitachi/Samsung/Seagate/WD 1/2 TB

domy_os je offline   Reply With Quote
Staro 09.11.2023., 09:55   #9
Psycho
Master Of Disaster
Moj komp
 
Psycho's Avatar
 
Datum registracije: Nov 2002
Lokacija: Rijeka
Postovi: 1,252
Citiraj:
Autor xlr Pregled postova
Zelis postici ovo sto je domy pisao ili te zanima obicno streamanje muzike po sobama, nevezano za windowse i sl.? Vidim spominje se Roon, Volumio i sl. pa zaro pitam.

Ako te zanima ovo drugo, streamanje muzike po sobama, to sam slozio i jos uvijek koristim sa picoreplayerom na raspberryjima + logitech media server koji se vrti na NAS-u. Svaki rpi je player, grupiram ih ako hocu, ali 99% vremena sviraju dvije razlicite stvari.

Volumio me nije zadovoljio. Roon nisam probao. Moode audio je bio oke, ali kratko sam ga koristio. Ovo sto sam si slozio je dosta kompleksnije, pokriva streamanje lokalne muzike, internet radio i streaming servise (deezer, spotify, yt).
Zanima me streamanje s opcijom kontrole soba. Znaci da mogu birati sviranje u vrtu, dnevnoj sobi, spavacoj sobi. Iskljucivanje i ukljucivanje zona da sviraju istu stvar sa singular izvora.

ako se moze postici da svaka zona moze svirati svoj source mozda bi i to bilo fora, ali nije sta bi htio postici.

Ako mozes napisati listu materijala i softwarea pomoglo bi jako

vidim da na linku ima opis kako bi to islo https://www.picoreplayer.org/landingzone_option3.html#

Citiraj:
Autor domy_os Pregled postova
Nisam to radio, ali ne bi trebalo biti problema, Scream može slati multicast na cijelu mrežu. Znači pustiš muziku s jednog izvora na multicast adresu i svaki RPi u sobi ga hvata i reproducira.

Cijeli tutorial sam odgodio do daljnjega jer sam skroz promijenio okruženje, a vremena sve manje.
kuzim, znaci mogao bi preko Screama multicastat na mrezu, ali sinkronizacija audia onda postaje veci problem vjerojatno ako su duzi kabeli.
__________________

Zadnje izmijenjeno od: Psycho. 09.11.2023. u 10:14.
Psycho je offline   Reply With Quote
Staro 09.11.2023., 11:53   #10
xlr
49%winner