HiFiBerry DAC+ DSP

Hur funkar tekniken bakom bra hifi?

Moderator: Redaktörer

Användarvisningsbild
EmuMannen
 
Inlägg: 1209
Blev medlem: 2017-11-21
Ort: Stockholm

Re: HiFiBerry DAC+ DSP

Inläggav EmuMannen » 2018-10-06 20:42

niclas_f skrev:Men får du verkligen ut den högsta möjliga upplösningen från HifiBerry-kortet då?

Skönt att det är någon som bryr sig. Jag lyssnar mest på vinyl och bara ibland på Spotify (och så streamar jag ljudet från en Apple TV4k eftersom jag har projektor så jag vill inte ta ljudet via HDMI eftersom mina vintage-förstärkare inte har stöd för HDMI). Så jag måste erkänna att jag inte brytt mig så mycket om ljudet från Spotify (eller Netflix via Apple TV) och därför inte tokoptimerat min HiFiBerry DAC+. Men det skall bli kul att ta del av dina erfarenheter. Kanske leder det till att jag också uppdaterar min konfiguration. :)
Valda DIY-projekt, tankar och idéer på EmuMannens blogg.

niclas_f
 
Inlägg: 174
Blev medlem: 2017-12-11

Re: HiFiBerry DAC+ DSP

Inläggav niclas_f » 2018-10-06 21:25

EmuMannen skrev:Skönt att det är någon som bryr sig.


Ja jag har märkt att många av dina eminenta och detaljerade inlägg går helt okommenterade förbi. Många gör nog som jag och läser och njuter, men i det tysta.

Min nuvarande status är att jag har svårt att få det stabilt.
Använder jag 24b/176400Hz så fungerar det ett tag. Har tittat i koden och inställningen gör att alsa konfigureras med dessa inställningar (om jag tolkar koden rätt). Dock verkar det alltså gå snett efter 4-5 minuters strömmande med dessa inställningar. Det börjar pausa långa stunder för att sedan stanna helt. Vet ej om detta beror på hög CPU-last eller något annat.


Tittade även på vad alsa har för möjligheter att ställa in 24b/192000 och det ser den ut att klara av. Kompletterade därför shairport-sync-koden med 24b/192000kHz möjligheten. Koden kompilerar och startar och kan köra i några sekunder, men tappar ganska snart synken. Kan det vara att 2-potens-stegen av 44100Hz är där av en anledning? för att göra beräkningarna i koden enklare med en multipel av 2... om jag tillåts tänka högt. Vilket i sin tur gör att det inte är så enkelt att bara lägga till stöd för en ny samplingsfrekvens som ej är jämt delbart med 44100.


to be continued...

... ser precis att HiFiBerry-siten har lagt upp en egen distribution, hifiberryos. Ska testa den och titta hur det gjort.

Användarvisningsbild
EmuMannen
 
Inlägg: 1209
Blev medlem: 2017-11-21
Ort: Stockholm

Re: HiFiBerry DAC+ DSP

Inläggav EmuMannen » 2018-10-06 21:54

niclas_f skrev:Har tittat i koden och inställningen gör att alsa konfigureras med dessa inställningar (om jag tolkar koden rätt). Dock verkar det alltså gå snett efter 4-5 minuters strömmande med dessa inställningar. Det börjar pausa långa stunder för att sedan stanna helt. Vet ej om detta beror på hög CPU-last eller något annat.

Visst är det skönt med open source! Jag skulle bränna iväg ett mail till Mike Brady och fråga om hans syn på saken. I internets linda så satt jag och totade ihop lite kod för att göra "unzip". Det var något som inte stämde så jag ventilerade mitt problem i någon news-grupp (http var inte uppfunnet än). Jag fick direkt ett svar som var ganska detaljerat och som löste alla mina problem (lite implicit kunskap om headern i PK-zip). Det var först långt senare jag tyckte jag kände igen namnet på den som svarat, Phil Katz! ;)

Ps. Ta en titt på issue 373: https://github.com/mikebrady/shairport-sync/issues/373

För det första så vet jag inte om RPI (framförallt de klenare) orkar sampla via soxr eller ALSA men texten innehåller en del information om resampling i shairport-sync. Nu är den ganska gammal så det kanske finns nya lösningar implementerade.

Sen har vi följande kommentar från 2018: https://www.bountysource.com/issues/587 ... ync-output

Två påståenden förvirrar mig "but the output of shairport-sync is limited to 44,1 kHz and it's multiples" och "Then I realised, that the resampling doesn't affect the output of AirPlay content". Så frågan är hur detta hänger ihop? Tills vidare skulle jag anta att shairport-sync klarar av "exact multiples of 44100 in 8, 16, 24 or 32 bit". 192000 / 44100 = 4,353741496598639. Kanske bättre att prova med 176400 eller 220500? Oups, såg att du redan provat 176400Hz. Kör du med soxr?

Ps. Glöm inte att du kan slå på loggning i shairport-sync. Kanske kan du hitta något nyttigt i loggarna?
Valda DIY-projekt, tankar och idéer på EmuMannens blogg.

niclas_f
 
Inlägg: 174
Blev medlem: 2017-12-11

Re: HiFiBerry DAC+ DSP

Inläggav niclas_f » 2018-10-07 23:13

Phil Kats... wow :) Namnet var inte bekant, men googlade och förstod storheten.

Jag kör med soxr, och kunde i förra installationen* se att lasten ökade med 40 procentenheter från 20% till 60% cpu-last.

Om jag tar det från början av kvällen igår.
Installerade Hifiberry OS för att se hur de konfigurerat där. Det gick inte att få igång. Det visade sig att distributionen inte stöder Wifi än. Inte helt ogjort dock eftersom jag kunde titta hur de gjort i /boot/config.txt
Installerade raspberry igen från scratch. Det var enkelt då jag hade en hyfsad log jag kunde klippa och klistra från.

*Den nya installationen beter sig bättre. Lasten ligger på max 20% oavsett soxr eller basic.
De två ändringar jag gjorde var.
1. Kopierade sättet HiFiBerry initierade kernelmoduler för hifiberry, spi samt i2c i filen /boot/config.txt
2. Slog permanent av power management på wifi-interfacet. (iwconfig wlan0 power off i filen /etc/rc.local)

Av dessa två så skulle jag gissa på att det var 2:an som gjorde skillnaden.
Just nu kör jag på 24b/88,2kHz utan problem. När jag testade 24b/176,4kHz så fungerar det ganska OK, men jag kan höra att det hoppar till ibland.

Kommer att köra på 24b/88,2kHz ett tag nu och se om det håller sig stabilt. Som du säger så spelar bitrate/samplingsfrekvens troligen ingen roll i Spotify då 24/176,4 ändå är högre upplösning än mp3-komprimeringen 320kbps kan nyttja.

Jag är också förvirrad av andra länken du skickade.

Användarvisningsbild
EmuMannen
 
Inlägg: 1209
Blev medlem: 2017-11-21
Ort: Stockholm

Re: HiFiBerry DAC+ DSP

Inläggav EmuMannen » 2018-10-08 08:27

niclas_f, du har ingen RPI 3? Det skulle vara intressant att veta om det blir någon skillnad med mer CPU eller kommunikation via Ethernet. Oavsett så är det intressant att veta att det fungerar med RPI Zero W. Jag har funderingar på att använda Hifiberry DAC+ DSP som delningsfilter förutsatt att det går att daisy chain:a mer än en via den digitala utgången. För ett delningsfilter klarar jag mig förmodligen med endast DSP-delen och skulle egentligen inte behöva någon RPI annat än för att programmera DSP:n. Det är där RPI Zero W kan vara av intresse för att kunna skjuta upp en ny konfiguration via WiFi. För AirPlay skulle jag nog köra med något med så mycket CPU som möjligt om något skall göras i mjukvaran (typ soxr).

Belastning är en sak men hur mycket RAM har du över när du kör Raspbian? Kan du inte streama för fullt och sedan posta resultatet av kommandot "free -h". En generell Linux-kärna kan bli ganska stor och eftersom RPI Zero har begränsat med minne så vill du hålla OS och allt annat i user space så slimmat det bara går. Om du har tid så kan jag verkligen rekommendera en minimal installation av Arch Linux. Nu är det kanske lite knepigt att följa installationsanvisningarna på deras wiki för RPI eftersom den förutsätter att du är kopplad via Ethernet. Men denna guide för RPI Zero W kanske kan hjälpa dig om du vill prova Arch?

Ps. När du väl har Arch uppe och snurrar med HiFiBerry DAC+ DSP, Wi-Fi och ssh konfigurerat som du vill ha det är det "bara" att följa dokumentationen för att installera ALSA och ShairPort-Sync. Läs även wiki-sidan om RPiconfig...
Senast redigerad av EmuMannen 2018-10-08 09:08, redigerad totalt 1 gång.
Valda DIY-projekt, tankar och idéer på EmuMannens blogg.

Användarvisningsbild
EmuMannen
 
Inlägg: 1209
Blev medlem: 2017-11-21
Ort: Stockholm

Re: HiFiBerry DAC+ DSP

Inläggav EmuMannen » 2018-10-08 08:59

niclas_f, vad kör du med för memory split? Om du kör headless så kan du allokera minimalt med RAM för video -> "gpu_mem=16" i "/boot/config.txt". Jag skulle även minimera disk-I/O. Om du kör journald så kan du köra med en minimal journal i RAM i stället för att skriva till disk. Minimera behovet av swap och se till att syslog (om du har någon installerad) skriver till journald i stället för till disk osv.
Valda DIY-projekt, tankar och idéer på EmuMannens blogg.

niclas_f
 
Inlägg: 174
Blev medlem: 2017-12-11

Re: HiFiBerry DAC+ DSP

Inläggav niclas_f » 2018-10-08 22:19

Om jag använder mpv och spelar upp en 24b/352kHz flac-fil (http://www.lindberg.no/hires/test/2L-125_stereo-352k-24b_04.flac),
så får jag följande minnesförbrukning,
Screenshot 2018-10-08 at 21.56.17.png
top medan jag använder mpv 24b/352kHz
Screenshot 2018-10-08 at 21.56.17.png (478.78 KiB) Visad 1464 gånger


Genom att göra fördelningen CPU/GPU-minnesallokering så fick jag 48MB mer CPU-ramminne. Tack för tipset!

Sedan tidigare har jag dessutom stängt av GUI:t med kommandot
$> sudo systemctl set-default multi-user.target

samt stängt av hdmi genom att addera följande rad i /etc/rc.local
/usr/bin/tvservice -o

Jag har även konfigurerat journald att logga till RAM. Dock har jag inte fått till att syslog (/var/log/messages) loggas genom journald... tror jag. Ändrade i /etc/systemd/system.conf
avkommenterade LogTarget samt DefaultStandardOutput

Men jag tror att det egentligen är lättare att lägga /var/log som ett tmpfs genom att lägga till det i /etc/fstab. Eller ser du några uppenbara nackdelar med det? Man kan vid monteringen begränsa hela /var/log till t.ex. 100MB
tmpfs /var/log tmpfs defaults,noatime,nosuid,mode=0755,size=100m 0 0

Jag har ingen RPI 3 B+, men jag har beställt en nu :)
Ska bli intressant att se om det gör någon skillnad.

När det gäller Arch-linux så avvaktar jag med att installera den på Zero W. Orkar inte just nu och ser ingen direkt mening eftersom ramminnet verkar vara

Användarvisningsbild
EmuMannen
 
Inlägg: 1209
Blev medlem: 2017-11-21
Ort: Stockholm

Re: HiFiBerry DAC+ DSP

Inläggav EmuMannen » 2018-10-08 23:38

/var/log på tmpfs är helt OK (jag tror jag också körde så på min RPI, måste kolla). Det andra alternativet är lite jobbigare att sätta upp men om du absolut vill köra exempelvis rsyslog så kan du använda modulen omjournal för att omdirigera all (eller delar) av trafiken till journal. Sen kan du konfigurera journal att inte skriva till disk. På så sätt får du allt till journal, även om något loggas till syslog men inte till journal. Men att lägga /var/log på tmpfs är betydligt enklare. ;)

Inget sticker direkt ut från top. Sen kan man undra om sigmatcpserver verkligen behöver så mycket minne? Antingen implementerar den en hel del eller så är det något slö kodare som länkat in för mycket onödigt skit...

Såhär ser top ut kört från min RPI 2B (trunkerad efter kthreadd där allt i princip är noll i alla fall):

Kod: Markera allt
top - 21:35:01 up 68 days,  3:08,  1 user,  load average: 0.14, 0.06, 0.01
Tasks: 106 total,   1 running, 105 sleeping,   0 stopped,   0 zombie
%Cpu0  :   3.1/3.8     7[||||||                                                                           ]
GiB Mem :  9.7/0.419    [                                                                                 ]
GiB Swap:  0.0/0.000    [                                                                                 ]

  PID USER      PR  NI    VIRT    RES %CPU %MEM     TIME+ S COMMAND                                       
    1 root      20   0   12.3m   6.7m  0.0  1.6   3:39.78 S systemd                                       
  144 root      20   0   41.6m   9.8m  0.0  2.3   0:40.64 S  `- systemd-journal                           
  148 root      20   0   12.1m   0.8m  0.0  0.2   0:00.04 S  `- lvmetad                                   
  158 root      20   0   19.9m   4.9m  0.0  1.1   0:24.50 S  `- systemd-udevd                             
  161 systemd+  20   0   18.0m   3.9m  0.0  0.9   1:10.76 S  `- systemd-network                           
  177 systemd+  20   0   19.5m   4.5m  0.0  1.0   0:36.43 S  `- systemd-timesyn                           
  186 dbus      20   0    5.6m   2.7m  0.0  0.6   0:11.10 S  `- dbus-daemon                               
  187 systemd+  20   0    9.9m   3.9m  0.0  0.9   0:39.63 S  `- systemd-resolve                           
  188 root      20   0    7.4m   4.3m  0.0  1.0  20:13.72 S  `- haveged                                   
  190 avahi     20   0    6.3m   3.0m  0.0  0.7  91:40.05 S  `- avahi-daemon                               
  193 avahi     20   0    5.9m   0.3m  0.0  0.1   0:00.00 S      `- avahi-daemon                           
  191 root      20   0    9.8m   4.5m  0.0  1.0   0:29.50 S  `- systemd-logind                             
  192 root      20   0    6.9m   4.0m  0.0  0.9   0:00.13 S  `- sshd                                       
21758 root      20   0    9.0m   5.0m  0.0  1.2   0:00.40 S      `- sshd                                   
21766 sysadmin  20   0    9.6m   4.2m  0.0  1.0   0:01.05 S          `- sshd                               
21767 sysadmin  20   0    3.6m   2.7m  0.0  0.6   0:00.11 S              `- bash                           
21776 sysadmin  20   0    5.4m   2.4m  5.0  0.6   0:02.88 R                  `- top                       
  194 root      20   0    1.9m   1.3m  0.0  0.3   0:00.04 S  `- agetty                                     
  195 root      20   0    1.9m   1.2m  0.0  0.3   0:00.03 S  `- agetty                                     
  201 shairpo+  20   0   57.0m   8.6m  0.0  2.0 460:32.26 S  `- shairport-sync                             
21760 sysadmin  20   0   12.1m   6.4m  0.0  1.5   0:00.45 S  `- systemd                                   
21761 sysadmin  20   0   16.7m   1.5m  0.0  0.3   0:00.00 S      `- (sd-pam)                               
    2 root      20   0    0.0m   0.0m  0.0  0.0   0:03.15 S kthreadd         
Valda DIY-projekt, tankar och idéer på EmuMannens blogg.

niclas_f
 
Inlägg: 174
Blev medlem: 2017-12-11

Re: HiFiBerry DAC+ DSP

Inläggav niclas_f » 2018-10-14 20:47

Nu har jag testat lite mer.
Nu har jag uppgraderat från Rpi Zero W till Rpi 3 B+.
Uppgraderingen gjorde jag mest för att få hifiberryos att fungera då den inte är kompatibel med Zero W än.

Jag har tyvärr inte testat att strömma så mycket än. Men det som är uppenbart är ju att hifiberryos har spotifyd-servicen som jag inte installerat på min Zero. Det som är bra med den är ju att den strömmande musiken går direkt från spotifys servrar till min 3B+. Kör man inte spotifyd utan istället använder sig av Shairport-sync, så strömmas ju musiken från spotifys servrar till min mobil, och sedan från mobilen till 3B+, vilket gör att det tar onödigt med bandbredd.
EDIT: och detta gör att uppspelningen av ljudet ibland hackar eller avbryts om man går till något ställe i lägenheten där det är dåligt wifi-täckning.
Med spotifyd fungerar det perfekt.

Jag ska titta lite mer på hur de ställt in alsa m.a.p. bitrate och samplingsfrekvens.

Föregående

Återgå till Teknikforum


Vilka är online

Användare som besöker denna kategori: Inga registrerade användare och 5 gäster