LMS (Logitech Media Server) - Teknisk diskusjon

Diskusjonstråd Se tråd i gallerivisning

  • tjua

    Hi-Fi freak
    Ble medlem
    19.08.2012
    Innlegg
    3.261
    Antall liker
    2.337
    Sted
    Bergen
    @tjua - Forstår vi det slik at problemet er når du streamer med Squeezelite som player fra LMS?

    Jeg er ikke den rette til å gi tips da jeg personlig aldri har brukt tid på DSD. Siden 99% av all musikk jeg lytter til har sitt opphav fra multispors PCM innspillinger blir det liksom litt meningsløst. Soundcheck har en guide på DSD som muligens gir deg litt mer å gå på: https://soundcheck-audio.blogspot.com/p/the-rpi-audio-streaming-series-dsd.html

    Når det gjelder hi-rez PCM fra Squeelite lærte jeg nylig at Squeezelite har en funksjon hvor den ber ALSA resample om den feiler å åpne porten på opprinnelig SR til musikkfilen. Kan hende samme er tilfelle på MacOS om SR og bitdybde ikke er satt riktig under Audio Devices?
    SqueezeL som streamer fra LMS stemmer.
    Testet litt ulike settinger på USB DAC lydutgang der den ene hadde ganske så mange fler valg en den andre. Begge DAC justerer seg automatisk iht. hva som streames
    Må nok lese og studere litt mer
     

    PeriodeLytter

    Hi-Fi freak
    Ble medlem
    26.02.2013
    Innlegg
    3.594
    Antall liker
    3.274
    CamillaDSP 2 - Resampling og frekvekskutt i antialiasingfilteret

    Etter noen innledene runder hvor jeg bl.a. lærte at Squeezelite på et system med alsa har en funksjon hvor den automatisk ber alsa om å ta seg av resamling om det ikke er samsvar mellom sample rate mediafilen Squeezelite spiler og hvordan alsa enheten som kobler seg til som Capture device er konfigurert.
    1703510109486.png
    1703510146203.png

    I praksis for Squeezelite og CamillaDSP fungerer det slik at om 'Resampling = none' og 'Sample Rate' er annet enn mediafilen vil Squeezelite be alsa om å resample til hvordan samplerate er konfigurert i CamillaDSP. F.eks CD rip spilles med 44100 og sample rate i CDSP er satt til 96000 er det alsa som oppsampler om Resampling er deaktivert i CDSP. Mens dette er fint for enkel bruk vil slik resampling dessverre prioritere hastighet og lav resursbruk på bekostning av lydkvalitet.

    Fra CDSP-manualen forstår vi det slik at den beste resamplern er AsyncSinc som da forsøker minimalisere aliasing. Med profilen Balanced skal AsyncSinc ha artefacts i størrelseorden -170dB. Og Accurate profilen skal evne hele -200dB. Det som kanskje ikke veklegges i teksten er frekvenskutt antialiasingfilteret brukt med disse profilene har.

    1703344353591.png


    Manualen sier videre:
    The f_cutoff parameter is the relative cutoff frequency of the anti-aliasing filter. A value of 1.0 means the Nyquist limit. Useful values are in the range 0.9 - 0.99. It can also be calculated automatically by setting f_cutoff to null.
    Jeg fant at om man aktiverer debug-logging får man ut info om kalkulasjonen som er utført. Som vi skal se klarer RPi4 nesten maks 0.99. Merk dog hvordan CPU last går dramatisk opp med økt sinc lengde.

    Profile: Accurate. Single core at 33% with CPU running at 900MHz
    Creating asynchronous resampler with parameters: SincInterpolationParameters {
    sinc_len: 256,
    f_cutoff: 0.9470547
    ,
    oversampling_factor: 256,
    interpolation: Cubic,
    window: BlackmanHarris2 }

    Profile: Free. Single core at 66% with CPU running at 1800MHz
    Creating asynchronous resampler with parameters: SincInterpolationParameters {
    sinc_len: 1024,
    f_cutoff: 0.98663634
    ,
    oversampling_factor: 1024,
    interpolation: Cubic,
    window: BlackmanHarris2 }

    Profile: Free. Single core at 84% with CPU running at 1800MHz - Nær maks hva som fungerer på RPI4 uten dropout
    Creating asynchronous resampler with parameters: SincInterpolationParameters {
    sinc_len: 1280,
    f_cutoff: 0.98930013
    ,
    oversampling_factor: 256,
    interpolation: Cubic,
    window: BlackmanHarris2 }

    Profile: Free. Single core at 66% with CPU running at 1800MHz
    Creating asynchronous resampler with parameters: SincInterpolationParameters {
    sinc_len: 1024,
    f_cutoff: 0.98663634,
    oversampling_factor: 128, Ser ikke ut til å påvirke CPU last i særlig grad
    interpolation: Cubic,
    window: BlackmanHarris2 }
    1703510222436.png


    Accurate profilen gir da -3dB med Nyquist 22050 Hz x 0.9470547 = 20882 Hz. Makser vi ut RPi får vi 22050 Hz x 0.98930013 = 21814 Hz. Det gir økt båndbredde på 932 Hz til glede for katta og hunden i huset.


    Debug-loggen viser også koeffisienter som brukes for de ulike filtrene man lager fra web UI.
    DEBUG [src/audiodevice.rs:465] Creating asynchronous resampler with parameters: SincInterpolationParameters { sinc_len: 1280, f_cutoff: 0.98930013, oversampling_factor: 512, interpolation: Cubic, window: BlackmanHarris2 }
    DEBUG [src/filters.rs:364] Build filter group from config
    INFO [src/loudness.rs:37] Create loudness filter
    DEBUG [src/biquad.rs:49] a1=-1.650218184573887 a2=0.7028757231482524 b0=1 b1=-1.650218184573887 b2=0.7028757231482524
    DEBUG [src/biquad.rs:49] a1=-1.9929478339334883 a2=0.9929726132362275 b0=1 b1=-1.9929478339334883 b2=0.9929726132362275
     
    Sist redigert:

    PeriodeLytter

    Hi-Fi freak
    Ble medlem
    26.02.2013
    Innlegg
    3.594
    Antall liker
    3.274
    USB disk med EXFAT filsystem:

    Årets julegave til stereoen ble en ny USB SSD disk. Siden den gamle platedisken kjørte ntfs og nye Samsung T7 Shield disken allerede var formatert med exfat bød installsjon på et par utfordringer da chmod og chown ikke fungerer med fat formatene *. Med exfat må derfor filrettigheter settes når disken monteres, — og gjelder da for hele disken. Mens man med ntfs og ext4 kan sette rettigheter på den enkelte katalog og fil ved behov.
    1703760763641.png


    - Utfordringene var å gi bruker 'squeezeboxserver' som kjører LMS skriverettigheter til katalogen hvor spillelister lagres. Som finnes på samme disk som musikken for enkel migrasjon til annen server ved behov.
    - Gi lokale bruker på RPi tilgang til innhold på USB disken.
    - Gi Samba mulighet til å dele ut kataloger med skriverettigheter til en enkel bruker slik at jeg enkelt kan skjekke inn ny musikk uten risiko for at andre brukere med tilgang ved uhell sletter eller skriver over musikkfiler.

    1703760521055.png


    Siden jeg allerede har brukeren 'squeezeboxserver' i sudo gruppen** falt valget på å bruke denne gruppen siden det samtidig gir sudo brukere på RPi tilgang. For Samba har jeg opprettet en lokal bruker med samme navn/passord som jeg benytter på Windows PC'n.

    Følgende linje i '/etc/fstab' ser nå ut til å fungere etter hensikten
    PARTUUID=d7da328a-eb05-411a-bc38-e25ee2e1a7aa /mnt/T7/ exfat defaults,noatime,nofail,rw,user,uid=1001,gid=27,fmask=113,dmask=002,noexec 0 0

    Hvor fileier uid=1001 er dedikert Samba bruker og gid=27 er sudo gruppen. Om jeg ikke allerede hadde squeezeboxserver i sudo gruppen vill jeg trolig brukt en gruppe tilegnet Samba. Og lagt alle lokale brukere med behov for tilgang i denne gruppen.

    The x flag is necessary for directories, in order to access their contents.

    With just the r flag on a directory, you can get a directory listing, but cannot access the files and subdirectories within it. With just the x flag on a directory, you won't see the directory listing, but may be able to access files and sub-directories if their permissions allow it and you can specify the exact name of the thing you're trying to access. So, in most cases, you have only two generally useful permissions choices for directories: r-x and rwx.

    So, since the umask mount option applies to both files and directories, and you don't want the x flag on files, you'll need to use fmask and dmask only, so you can place one set of permissions on files and another on directories.

    The permissions and the corresponding mask numbers:
    • rwx = mask number 0
    • rw- = mask number 1 (not very useful for directories)
    • r-x = mask number 2
    • r-- = mask number 3
    • -wx = mask number 4 (special case: an approximation of a "write-only directory")
    • -w- = mask number 5 (not very useful for directories)
    • --x = mask number 6 (for directories: access by known filenames only)
    • --- = mask number 7 (no access)
    If you want full access to directories, and everything except the x flag for files, you'll need 0 for the corresponding dmask number and 1 for the fmask number.

    kilde: https://unix.stackexchange.com/ques...umask-fmask-dmask-for-ntfs-with-noexec#521072

    * nå kunne jeg trolig laget en ext4 partisjon på disken. Men jeg ser for meg i fremtiden at jeg har behov for å bruke Samsung sine SSD verktøy på denne disken så da er det greit at den også fungerer på Windows.***
    ** jeg har gitt denne brukeren mulighet til å kjøre bash kommandoer fra Material Skin
    *** dette skulle vise seg være en gunstig avgjørelse da kopiering av et par TB med musikk tryna skikkelig med datakrasj og skadet filindex på begge diskene. Trolig grunnet overbelastning av PSU med to USB disker på samme port. Datamigrering endte dermed opp på en Windows laptop med egnede USB porter.
     

    PeriodeLytter

    Hi-Fi freak
    Ble medlem
    26.02.2013
    Innlegg
    3.594
    Antall liker
    3.274
    En tid tilbake ble det diskutert hvordan gummioverflaten på fjernstyringene våre blir klebelig. Nå har jeg sett et par tips jeg tenker plassere i verktøykassen til neste gang.

    Første er å benytte en silikonspray eller stift. Dette skal vistnok forsinke videre degradering og danne en ikke klebelig hinne.

    Til rengjøring ser jeg man anbefaler melinsvamper. Disse er jo generelt gode å ha i hus. Vi bruker dem til rengjøring av fliser og dusjkabinett med godt resultat. https://www.clasohlson.com/no/Flekkfjerner,-4-pack/p/34-6395
     

    Barbaresco

    Hi-Fi freak
    Ble medlem
    23.03.2006
    Innlegg
    2.952
    Antall liker
    631
    En tid tilbake ble det diskutert hvordan gummioverflaten på fjernstyringene våre blir klebelig. Nå har jeg sett et par tips jeg tenker plassere i verktøykassen til neste gang.

    Første er å benytte en silikonspray eller stift. Dette skal vistnok forsinke videre degradering og danne en ikke klebelig hinne.

    Til rengjøring ser jeg man anbefaler melinsvamper. Disse er jo generelt gode å ha i hus. Vi bruker dem til rengjøring av fliser og dusjkabinett med godt resultat. https://www.clasohlson.com/no/Flekkfjerner,-4-pack/p/34-6395
    Jeg har klart å få plasten på fjernkontrollene ren med produktet Label Off fra Biltema og iherdig skrubbing med Q-tips mellom knapperadene.
    Label Off lukter så kjemisk at det må være helseskadelig, men er meget effektivt for å fjerne klistrelapper og prislapper som har tørket fast på fine ting.
     

    PeriodeLytter

    Hi-Fi freak
    Ble medlem
    26.02.2013
    Innlegg
    3.594
    Antall liker
    3.274
    Squeezelite testes nå i en V2 versjon

    Innstallerte/oppgraderte nettopp på en rpi3b.. Funket fint og finner ingen forskjell ;)
    Debian pakken ligger fortsatt litt etter med v1.9.8-1317 ser jeg. Men om jeg forstår det riktig er det ingen endringer vedørende audio eller brukerfunksjon. Kun underliggnde bibliotekkode for nå ha mer generisk støtte for GPIO på RPi hvor RPI4 ser ut til å være berørt. Altså koden som kjører når man benytter -G parameteret.
    -G <Rpi GPIO#>:<H/L> Specify the BCM GPIO# to use for Amp Power Relay and if the output should be Active High or Low. This cannot be used with the -S option.

    -S <power script> Absolute path to script to launch on power commands from LMS. This cannot be used with the -G option.
    Merge pull request #195: Change GPIO interface to libgpiod library.

    - Requires libgpiod version 2 or newer
    - Requires linux kernel 4.8 or newer
    - Works on any board with kernel gpio support
    Thanks paul-1.
    Increase squeezelite version to 2.0.0.
    Increase squeezelite revision to 1464.
     

    coolbiz

    Hi-Fi freak
    Ble medlem
    31.03.2006
    Innlegg
    9.408
    Antall liker
    5.055
    Sted
    Sydvestlandet
    Torget vurderinger
    2
    Nytt nedlastingssted for LMS. Det har tilsynelatende vært i drift et halvt års tid, men jeg hadde ikke sett det før nå.



    Langt mer ryddig og oversiktlig enn gamle downloads.slimdevices.com (som nå redirigerer til addressen ovenfor)
     
    Sist redigert:

    Olderkongen

    Hi-Fi interessert
    Ble medlem
    21.02.2008
    Innlegg
    51
    Antall liker
    6
    Noterer at her er mye god kompetanse. Mulig dette er ett dumt spørsmål, men prøver meg. Nokon som har funne ein måte ein kan spille av musikk-samlingen hjemme på hytten (altså "utenfor" hjemmenettverket)?
     

    bambadoo

    Æresmedlem
    Moderator
    Ble medlem
    11.10.2002
    Innlegg
    22.596
    Antall liker
    11.646
    Sted
    Lørenskog
    Torget vurderinger
    16
    Personlig har jeg innstallert en VPN server hjemme og får tilgang på den måten. Dvs. vpn er innstallert direkte på router og terminering der.
    Må da fyre opp vpn klient på mobil, pc eller hva det skal være og starte squeezelite klient for å få tilgang. Har fungert supert i flere år. Å eksponere LMS direkte på internett er på be om trøbbel. Vil ikke ta lang tid før den er kompromitert.
     

    Olderkongen

    Hi-Fi interessert
    Ble medlem
    21.02.2008
    Innlegg
    51
    Antall liker
    6
    Personlig har jeg innstallert en VPN server hjemme og får tilgang på den måten. Dvs. vpn er innstallert direkte på router og terminering der.
    Må da fyre opp vpn klient på mobil, pc eller hva det skal være og starte squeezelite klient for å få tilgang. Har fungert supert i flere år. Å eksponere LMS direkte på internett er på be om trøbbel. Vil ikke ta lang tid før den er kompromitert.
    Takk, må vel lese meg bedre opp. Har ikkje fått det til enda.
     

    coolbiz

    Hi-Fi freak
    Ble medlem
    31.03.2006
    Innlegg
    9.408
    Antall liker
    5.055
    Sted
    Sydvestlandet
    Torget vurderinger
    2
    Er dette en farbar (og sikker) vei, dersom man ønsker å slippe å klatte med VPN?

    1. Kjøre en ekstra LMS-instans på en virtuell maskin på samme fysiske maskin som din primære LMS.
    2. Sette opp brannmuren i internet-routeren hjemme slik at det er kun hytte-IP-addressen som slippes inn, og med portmapping for de aktuelle portene til den LMS som kjører på VM.
     

    PeriodeLytter

    Hi-Fi freak
    Ble medlem
    26.02.2013
    Innlegg
    3.594
    Antall liker
    3.274
    @Olderkongen - Om det kun er hytta som skal ha tilgang ville jeg nok heller vurdert å lage meg en egen LMS installsjon på hytta. Det er jo likevel lurt å ha en backup av musikksamlingen oppevart utenfor hjemmet i tilfelle brann. Som da kan gjøre nytte på hytta ;)

    Så kunne man heller se på hvordan man setter opp en løsning som sikrer oppdatering av disken på hytta via nettet. Hvor noe så enkelt som FTP allerede implementert i mange rutere muligens gir god nok funksjonalitet.

    La oss si man på hytta kobler musikkdisken til USB porten på ruter og deler den over lokalt nett hvor LMS server kan plukke den opp.
    Da kan man samtidig hjemmeifra koble seg til den samme disken via FTP for oppdateringer — basert på at hytta faktisk har nett 24/7.
     

    Olderkongen

    Hi-Fi interessert
    Ble medlem
    21.02.2008
    Innlegg
    51
    Antall liker
    6
    @Olderkongen - Om det kun er hytta som skal ha tilgang ville jeg nok heller vurdert å lage meg en egen LMS installsjon på hytta. Det er jo likevel lurt å ha en backup av musikksamlingen oppevart utenfor hjemmet i tilfelle brann. Som da kan gjøre nytte på hytta ;)

    Så kunne man heller se på hvordan man setter opp en løsning som sikrer oppdatering av disken på hytta via nettet. Hvor noe så enkelt som FTP allerede implementert i mange rutere muligens gir god nok funksjonalitet.

    La oss si man på hytta kobler musikkdisken til USB porten på ruter og deler den over lokalt nett hvor LMS server kan plukke den opp.
    Da kan man samtidig hjemmeifra koble seg til den samme disken via FTP for oppdateringer — basert på at hytta faktisk har nett 24/7.
    Ja dette kan fungere. Godt poeng med backup
     

    bambadoo

    Æresmedlem
    Moderator
    Ble medlem
    11.10.2002
    Innlegg
    22.596
    Antall liker
    11.646
    Sted
    Lørenskog
    Torget vurderinger
    16
    Hei, når du skrev dette så begynte jeg å forske litt rundt.
    Wireguard er et produkt du kan sjekke ut. Er preinnstallert i min router og på 5 minutter har jeg innstallert det på router og aktivert på 2 klienter her. Virker raskere, mindre fotavtrykk, mindre konfig og iflg. dokumentasjon minst like sikkert som openVPN.
     

    PeriodeLytter

    Hi-Fi freak
    Ble medlem
    26.02.2013
    Innlegg
    3.594
    Antall liker
    3.274
    Kontroller CamillaDSP sin volumkontroll fra Material Skin. Og andre LMS brukerflater med forbehold

    Etter ha sett på muligheten til å bruke Material Skin til direkte kontrollere CamillaDSP sin volumekontroll fant jeg det nyttig å likevel ferdigstille en service jeg har tenkt en stund på. Dette er en liten sak som går i bakgrunnen og venter på volum verdier som LMS sender til Player. Når data kommer skaleres og videresendes verdiene til CamillaDSP.

    Vi drar her nytte av en funksjon i Material Skin hvor man kan la volumekontrollen fortsette være aktiv selv om man låser volum på Player til 100%. Tips om hvordan man også kan få slik funksjon med Logitech sine gamle spillere finnes i lenken under.

    Det ser ut som det snurrer stabilt her nå så da deler vi gleden om det er andre som ser nytten i å ha en mindre render av lyddatadaene sine.

    Kopier og lim inn for enkel innstallsjon for RPi-OS eller andre Debian systemer. Man behøver vite MAC adresse til Player, LMS IP adresse, LMS CLI port (vanligvis 9090) samt CamillaDSP sin back-end port som i de fleste dokumenter standard er satt til 1234.
    Bash:
    cd ~/ && wget https://raw.githubusercontent.com/StillNotWorking/LMS-helper-script/main/camilladsp/volume_from_lms/installvolumelms2cdsp.sh && bash ./installvolumelms2cdsp.sh
    Mer utfyllende informasjon om prosjektet
     
    Sist redigert:

    PeriodeLytter

    Hi-Fi freak
    Ble medlem
    26.02.2013
    Innlegg
    3.594
    Antall liker
    3.274
    Siden automatisk oppdateringr fra 8.3.x til 8.4.0 lot vente på seg ble det å kjøre oppdatering manuelt fra det nye nettstedet.
    Bash:
    cd
    wget https://downloads.slimdevices.com/LogitechMediaServer_v8.4.0/logitechmediaserver_8.4.0_arm.dexit
    sudo apt install ./logitechmediaserver_8.4.0_arm.deb
    Installasjon fikk fint, men reskanning feilet og gikk i heng når den lastet ned artistbilder på nytt fra www. Løste seg med omstart av server 'sudo systemctl restart logitechmediaserver'

    Det jeg var mest nyskjerrig på er LMS nå med Material Skin kan vise replay gain når man har valgt å vise teknisk info

    1707584384522.png
     

    coolbiz

    Hi-Fi freak
    Ble medlem
    31.03.2006
    Innlegg
    9.408
    Antall liker
    5.055
    Sted
    Sydvestlandet
    Torget vurderinger
    2
    Som noen sikkert har sett liker jeg hurtigvalg. Denne helgen fikk jeg sydd sammen skript som lar meg bytte lydkort på Squeezelite fra Material Skin. Bytte mellom loopbak for CamillDSP direkte til USB lydkortet tar ca 2 sekunder.
    Musikken fortsetter noe overraskende uten skjenerende pops. Dette selv om CDSP kjører oppsamling 88.2/32 og bytte til lydkortet da kjører uten oppsamling med 44.1/16.

    Vis vedlegget 973328

    Selve menyen er gjort på samme måte som post #105. Utelater derfor koden denne gangen. Bash scriptet som foretar ombytte endrer bare en linje i konfigurasjonsfilen for Squeezelite og starter daemon på nytt. Koden har kommentarer så burde være grei å endre til eget behov. I utgangspunket kreves det kun å bytte navn på lydkort for samme funksjon som jeg laget skriptet for.

    Filen lagres på Player og jeg har kalt den 'squeezetoggle' og lagret den under '/bin' sammen med squeezelite.
    Se her hvordan gjøre skriptet til en kommando uten behov for å spesifiere sti eller bash.
    Bash:
    #!/bin/bash
    # Toggle Squeezelite output - v.0.0.1 - 2023-11
    # Inteded use is to toggle between loopback interface with CamillaDSP and
    # direct to sound card. Made to easily be changed for other purposes.
    #
    # With standard installation only the line SC2=[your actual sound card] should need to be altered
    #
    CONFIGFILE='/etc/default/squeezelite'
    KEY='SL_SOUNDCARD='
    # CamillaDSP ALSA loopback
    SC1='hw:CARD=Loopback,DEV=1'
    # My hardware DAC
    SC2='hw:CARD=Amanero,DEV=0'
    
    # Stop Squeezelite to free up soundcard in case we already are in direct mode
    sudo systemctl stop squeezelite
    
    # Now update configuration file to toggle between SC1 and SC2
    if [ $(grep -E ^$KEY$SC1 $CONFIGFILE) ]; then
      #  /^$KEY/       - beginning of line should begin with
      #  s/.*/string/  - substitute whatever with string
      sudo sed -i -e "/^$KEY/ s/.*/$KEY$SC2/" $CONFIGFILE
      # Stop CamillaDSP to free up the sound card
      sudo systemctl stop camilladsp
    else
      sudo sed -i -e "/^$KEY/ s/.*/$KEY$SC1/" $CONFIGFILE
      # Start CamillaDSP now that we use SC1 (Loopback device)
      sudo systemctl start camilladsp
    fi
    # Start Squeezelite with new configuration
    sudo systemctl start squeezelite
    
    # If needed volume can be adjustet like this where IP=LMS-server and MAC=player
    # By default RPi-OS do not have telnet client installed 'sudo apt-get install telnet'
    #telnet 192.168.10.253 9090 <<< 'd8:3a:dd:46:ef:04 mixer volume 50'
    # CamillDSP use websocket which complicates direct interaction from bash
    # There is a little Python script that can be run with:
    #python ~/camilladsp/cdspvol.py -6.02
    
    #cat $CONFIGFILE
    # Troubleshooting tip:
    # edit '/etc/default/squeezelite' to enable intensive logging
    # SB_EXTRA_ARGS="-C 5 -W -f /var/log/squeezelite -d all=debug"
    # Then use 'tail /var/log/squeezelite'
    # 'squeezelite -l' will list sound cards present on the system
    # If USB sound card is not connected or powered off Squeezelite might fail to start.
    Det er mulig å matche gain om det er nødvendig. Men siden CDSP benytter websocket kommer bash til kort uten ekstra program. Har derfor laget en python wrapper:
    Lagre filen som cdspvol.py
    Python:
    # syntax: cdspvol.py -3.02 [v]
    # positiv values has to be typed explicit
    import sys
    from camilladsp import CamillaConnection
    cdsp = CamillaConnection("127.0.0.1", 1234)
    cdsp.connect()
    #print("Version: {}".format(cdsp.get_version()))
    # no argument return current volume setting
    if len(sys.argv) == 1:
        print("Volume: {}".format(cdsp.get_volume()))
    else:
        pf = sys.argv[1]
        if pf[0] == "-" or pf[0] == "+":
            cdsp.set_volume(sys.argv[1])
        # v for verbose, else changes take place in silence
        if len(sys.argv) == 3:
            if sys.argv[2]=='v' or sys.argv[2]=='V' or sys.argv[2]=='-v' or sys.argv[2]=='-V':
                print("Volume: {}".format(cdsp.get_volume()))

    Takk for at du deler disse kodesnuttene med oss!

    Kan ikke dy meg for å foreslå denne litt mer pythonske måten å skrive nest siste linje på:

    Python:
    if sys.argv[2].lower() in ('v', '-v'):
     

    PeriodeLytter

    Hi-Fi freak
    Ble medlem
    26.02.2013
    Innlegg
    3.594
    Antall liker
    3.274
    Takker, vær snill og la flere av dem komme :) Den ble faktisk grei å forstå siden du samtidig viste til fasiten :)

    Konvertere til lower case før testing virker i utgangspunktet som en god ide. I hvertfall med hensyn til å skrive mindre. Vet vi noe om hvor effektivt python kompileren gjør om slik koding? Vil den f.eks utføre konvertering av alle argumente før den starter testing? Eller er den smart nok til å teste argument før den går videre til neste lower case convertering?
     

    coolbiz

    Hi-Fi freak
    Ble medlem
    31.03.2006
    Innlegg
    9.408
    Antall liker
    5.055
    Sted
    Sydvestlandet
    Torget vurderinger
    2
    Jeg følger ikke logikken din. Det er jo kun sys.argv[2] som konverteres, og ikke de tekststrengene den sammenlignes mot.

    Dersom du ikke liker tekstkonverteringen, kan du evt. gjøre det slik:
    Python:
    if sys.argv[2] in ('v', '-v', 'V', '-V'):
    Jeg har ingen spesifikk kunnskap om hvordan Python utfører en slik sett-sjekk, men det vil overraske meg veldig dersom det ikke er slik at testingen avsluttes så snart en match er funnet. Så dersom du er veldig opptatt av eksekveringstider, kan det muligens være en fordel å ha det vanligst forekommende elementet først i listen.
     
    Sist redigert:

    PeriodeLytter

    Hi-Fi freak
    Ble medlem
    26.02.2013
    Innlegg
    3.594
    Antall liker
    3.274
    Jeg følger ikke logikken din. Det er jo kun sys.argv[2] som konverteres
    Takker for svar. ha ha ::) Ja der ser du hvor jeg har hue når jeg poster på HFS. Av en eller annen grunn leste jeg 'array.lower'. Beklager forvirringen jeg laget.
     

    PeriodeLytter

    Hi-Fi freak
    Ble medlem
    26.02.2013
    Innlegg
    3.594
    Antall liker
    3.274
    CamillaDSP installasjonskriptet har fått en gjennomgang og behøver nå kun noen yes no svar undervei så har man en ferdig Squeezelite Player med CamillaDSP oppe å gå.

    Søtter nå reinstallsjon med valg om å beholde eksisterende filtre uten å manulet behøve kopiere dem over. Servicefilene blir nå automatisk redigert med pålogget bruker. Man får også valg om å innstallere Squeezelite 2.0.0. — offesiell Debian pakke på RPi-OS er fortsatt på 1.9.8. Tidlige versjoner kjørte jeg CDSP som root, dette er endred til pålogget bruker som innstallerer. Man får også valg om å installere Volumekontrollen som del av dette skriptet

    For Volumkontrollen har jeg endelig fått til å probe porter med ren bash kode. Innstallsjonsskriptet burde i et standard IP4 hjemmenett nå klare å finne mediaserver og mac adresse automatisk. Det er dog ikke testet på virtuelle maskin og kan da muligens rote seg bort og be om hjelp. Også denne servicen er endred fra root bruker til pålogget bruker.

    OBS - Om man benytter klipp og lim av koden nedenfor pass på at det ikke allerede finnes en fil med navn installcamilladsp.sh i samme mappe som man laster ned til. Da vil nemlig den gamle filen blir kjørt siden nedlasting skaper unikt filnavn heller enn å skrive over.
    Bash:
    cd ~/ && wget https://raw.githubusercontent.com/StillNotWorking/LMS-helper-script/main/camilladsp/installcamilladsp.sh && bash ./installcamilladsp.sh
     

    Baard

    Hi-Fi freak
    Ble medlem
    17.04.2002
    Innlegg
    2.261
    Antall liker
    952
    Torget vurderinger
    1
    Sliter med å få NRK til å fungere på LMS. Bruker plugin: Radio now playing. Noen som kan hjelpe?
    radio-1.JPG
    radio-2.JPG
     

    PeriodeLytter

    Hi-Fi freak
    Ble medlem
    26.02.2013
    Innlegg
    3.594
    Antall liker
    3.274
    Mer CamillaDSP - Noen av dere kjenner kanskje til LossLess volumkontroll enkelte hi-end DAC produsenter siste årene har reklamert for? Bl.a. Lumin er en av aktørene som lisensierer Leedh Processing.

    Jeg har nå gjort en egen versjon av LMS til CamillaDSP Volume som benytter dette konseptet med koeffisienter som når ferdig kalkulert ikke behøver avkortes når bitdybde reduseres til 24-bit. Tidligere diskutert her https://www.hifisentralen.no/forume...me-kontrol-ikke-egentlig.101615/#post-3280347

    Merk at dette egentlig ikke spiller noe rolle om CamillaDSP brukes til å lage EQ eller delefilter da utregning fra disse algoritmene likevel må avrundes. Dette er derfor mest en øvelse for å teste om man kan høre forskjell på fenomen som dette slik enkelte Lumin eiere påstår dem kan.

    Så langt klarer ikke jeg høre noe forskjell, men det var en morro øvelse lell. Samt jeg er ikke 100% sikker på om CDSP faktisk er bitperfekt i utgangspunktet. Som jo med tiltenkt bruk egentlig ikke spiller noen rolle.
     

    PeriodeLytter

    Hi-Fi freak
    Ble medlem
    26.02.2013
    Innlegg
    3.594
    Antall liker
    3.274
    Skjekke hva CamillaDSP bruker av resurser mer detaljert:

    ps -q $(pidof -s camilladsp),$(pidof -s squeezelite) -eLo 'pid,tid,cls,rtprio,comm,pcpu,psr,pmem,vsz,rss'

    Her vist som en equalizer på RPi4 8GB med 13 stk biquadfiltre + mest nøyaktige preset algoritmen for oppsampling til 88200 ser den ikke ut til å behøve mye.
    1708778777584.png

    PSR viser hvilken CPU kjerne prosessen kjører på.

    Og siden listen over egentlig kun lister allokert minne (VSZ, RSS), ikke hva som faktisk nyttes ble man nyskjerrig på hva systemet totalt benytter av de 8GB tilgjengelig. Som man ser, masse minne er helt bortkastet på et slikt end-point (player).
    1708776046029.png
     

    PeriodeLytter

    Hi-Fi freak
    Ble medlem
    26.02.2013
    Innlegg
    3.594
    Antall liker
    3.274
    Et par nettverksprogrammer som kan være både artig og nyttig å gjøre eg kjent med for å danne seg et bilde av hva RPi maskinen(e) gjør på nettet.

    Første ut er iftop som gir en oversikt over nettverkstrafikk inn og ut av maskinen.
    Bash:
    sudo apt install iftop
    sudo iftop -i wlan0
    # for kablet nett bruk
    sudo iftop -i eth0
    Her vist med lokal avspilling fra dedikert LMS server.
    1708779511074.png

    192.168.10.119 er maskinen jeg er tilkoblet player med ssh.

    tcptrack viser TCP trafikk i sanntid. Gir en ide om båndbredde som er i brukt.
    Bash:
    sudo apt install tcptrack
    sudo tcptrack -i wlan0
    Her spiller Squeezelite (192.168.10.128) flac fra LMS server (192.168.10.253). Kun unntaksvis ser vi den peake over 150KB/s.
    1708779804459.png
     

    PeriodeLytter

    Hi-Fi freak
    Ble medlem
    26.02.2013
    Innlegg
    3.594
    Antall liker
    3.274
    Fikk leveringbekreftelse på RPi5 som har vært i rest halvannen måned. Mouser har i dag et lite parti RPi5 8GB til lager. Med dagens kronekurs priset til 860,- + mva inkl fri frakt.
     

    PeriodeLytter

    Hi-Fi freak
    Ble medlem
    26.02.2013
    Innlegg
    3.594
    Antall liker
    3.274
    CamillaDSP har fått nye back-end v2.1.0 som nå lar en importere deler av gamle configurasjoner. Og mer intressant lar en importere deler av et convolver filtre. Har ikke testet funksjonlaitet, men har fått installsjon på plass.

    Sqeezelite er nå offesielt på v2.0.0 og Debian pakken er oppgradert fra 1.9.8 til 1.9.9 ;)

    Har gjort om installasjonskriptet en del som jeg tenker vil gjøre vedlikehold mye enklere fremover siden jeg nå lar Henrik holde oversikt over versjoner og oppdateringer i sitt eget installsjonskrip.
    Bash:
    cd ~/ && wget https://raw.githubusercontent.com/StillNotWorking/LMS-helper-script/main/camilladsp/installcamilladsp.sh && bash ./installcamilladsp.sh
    New in version 2.1.1
    • Install new back-end v2.1.0
    • Now use Henrik Enquists (HE) install script for CamillaDSP and all of her dependencies. Only additional dependency installed to RPi-OS Lite is 'git'.
    • Version numbering will from now on follow HEs install script with an added character to different local changes.
    • CamillaDSP GUI port default to 5005 can now be changed from install dialog. Used to be port 5000 pre v2.1.1
    • Installation directory can optionally be given as argument. Else default to logged-in users home directory as before.
    • Changed from wget to curl to keep visualizen more uniform with HEs script.
    • Option to upgrade to now official Squeezelite v2.0.0.1465, Debian package are currently at 1.9.9
     

    PeriodeLytter

    Hi-Fi freak
    Ble medlem
    26.02.2013
    Innlegg
    3.594
    Antall liker
    3.274
    Slik jeg forstår det er man oppfordret til å nytte minimum Stable Nightly Build (8.4.1) om man skal få den nye Tidal pluggen til å fungere. Trolig er man da bedre tjent med å nytte beta versjonene fremover siden Tidal pluggen fortsatt mest er å regne som "proof of concept".
     

    PeriodeLytter

    Hi-Fi freak
    Ble medlem
    26.02.2013
    Innlegg
    3.594
    Antall liker
    3.274
    ADVARSEL: KUN EGNET FOR NERDER! og selv dem kan finne dette på kanten av the Twillight Zone

    Lekt noen timer med RPi5 nå. Den leverer som lovet masse omf sammenlignet med tidligere modeller. Satt den opp som LMS server og det er påfallende hvor mye raskere det er til å navigere Spottify spillelister fra Material Skin. Men det har sin pris og vi skal se at man med en enkel kommando kan gjøre den gamle RPi3 langt mer responsive selv uten overklokking.

    Da jeg dessverre har fått kanselert min ordre på kabinett fra eBay ikke mindre enn 2 ganger grunnet Kinesiske myndigheter ikke vil eksportere "armour" cares ble det å plassere den nye RPi5 i pappesken den ble levert i. Det skulle vise seg være lite gunstig da CPU raskt nærmet seg 80℃. Ut av esken plassert vertikalt og tempratur dropper til 51℃.

    Strømbehov er selvsagt høyere. Samme meter som fra post #26 viser nå 430mA ved tomgang og 590mA (3W) når man låser hastighet med scaling_governor=performance . Nå låst til 2.4MHz øker temp med ca +10℃
    Bash:
    # Hvilken hastighetsprofil er aktiv
    sudo cat /sys/devices/system/cpu/cpufreq/policy0/scaling_governor
    
    # Hvilke hastighetsprofiler er tilgjengelig
    sudo cat /sys/devices/system/cpu/cpufreq/policy0/scaling_available_governors
    
    # CPU hastighet
    sudo cat /sys/devices/system/cpu/cpufreq/policy0/cpuinfo_cur_freq
    
    # Hvilke CPU hastigheter er tilgjengelig
    sudo cat /sys/devices/system/cpu/cpufreq/policy0/scaling_available_frequencies
    
    # Endre scaling_governor
    sudo sh -c "echo performance > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor"
    Mens min gamle RPI3 LMS server tutler avgårde på 600MHz snurrer RPi5 på 1.5GHz når den går på tomgang. Vi ser her et potensiale ved å endre scaling_governor for RPi3 til performance vil den alltid kjøre med 1.2MHz.
    Omstart av maskin vil sette scaling_governor tilbake til ondemand. Har ikke funnet hvorfor RPi ikke har den nyere schedutil som default.

    Siden man gjerne har LMS server på 24/7 kan det tenkes at man skal leke med å sette opp en '/etc/cron.hourely' jobb som styrer scaling_governor? At man i timene man normalt er våken og bruker anlegget har performance profilen aktiv. For så senke den til ondemand eller schedutil på natten?

    Jeg har ikke lykkes få dd til å vise fornuftige resultater for lesehastiget fra disk. Det være seg µSD, SSD, HDD eller ramdisk. Resultatene blir påvirket at kernelbuffere som jeg kun får utgjevnet ved å teste urealistisk store filer. Om noen har forslag til hvordan sette korekt 'iflag=' og 'oflag=' parameter hør gjerne fra deg :)

    Dette er hva jeg får om jeg dd gjennom bussen til de ulike RPi
    Bash:
    sudo dd if=/dev/zero of=/dev/null bs=4K count=2K
      RPi3: 815 MB/s
      RPi4: 993 MB/s
      RPi5: 1.6 GB/s
    KIlde: https://www.kernel.org/doc/html/latest/admin-guide/pm/cpufreq.html
     

    PeriodeLytter

    Hi-Fi freak
    Ble medlem
    26.02.2013
    Innlegg
    3.594
    Antall liker
    3.274
    Oppfølging til posten over. Dette lille skripet vil styre hastighet på CPU basert på tid av døgnet.

    Opprett en fil i mappen '/etc/cron.hourly/' sudo nano /etc/cron.hourly/scaling_governor og lim inn teksten nedenfor.

    Filnavn er ukritisk men filen må ha riktige rettigheter. sudo chmod 755 /etc/cron.hourly/scaling_governor

    For å gjøre det enkelt sammenlignes kun integer verdier (hele klokketimer) hvor CPU kjører med full hastighet mellom klokken 9-23
    Bash:
    #!/usr/bin/env bash
    # path: /etc/cron.hourly
    # sudo chmod 755 <filename>
    
    hour=$(date +%-H)
    
    if (($hour >= 9 && $hour <= 22)): then
        sudo sh -c "echo performance > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor"
    else
        sudo sh -c "echo ondemand > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor"
    fi
    
    exit 0
    Edit: Beklager, en liten bug der. Bash er ikke god på skille tekst og tall.
    Med en liten dash (bindestrek) skal klokken nå returnere tall uten ledene null. hour=$(date +%-H)

    Edit II: Takk til @coolbitz - Ikke bare var klokkeselttet feil, men koden fungerte heller ikke.
     
    Sist redigert:

    PeriodeLytter

    Hi-Fi freak
    Ble medlem
    26.02.2013
    Innlegg
    3.594
    Antall liker
    3.274
    Er man en av dem som mener at stabil CPU hastighet kan påvirke lydkvalitet er denne av mulig interesse.
    Basert på om Squeezelite spiller eller er i pausemodus justereres CPU hastighet til maskinein som kjører Squeezelite med scaling governor som vist i tidligere poster.

    Det kommer ikke installsjonskript til denne med det første så håper nyskjerrige finner ut av veilendingen i lenken under. Ellers er det bare spørre må vite :)
     

    coolbiz

    Hi-Fi freak
    Ble medlem
    31.03.2006
    Innlegg
    9.408
    Antall liker
    5.055
    Sted
    Sydvestlandet
    Torget vurderinger
    2
    Cool beans, Periodelytter. Nå fikk jeg lyst til å børste støvet av min gamle RPi. :geek:

    Men jeg mener å se en liten logisk brist i skriptet ditt. Full hastighet skrues vel av klokken 24 og ikke 23?

    Det lenge siden jeg kludret med cron. Moderne Linux-distroer har vel fremdeles /etc/crontab?
    I så fall kan skriptet erstattes med disse to linjene i /etc/crontab:

    Kode:
    0 9 * * *  root  echo performance > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
    0 23 * * *  root  echo ondemand > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
    Jeg har ikke testet dette... :cool:
     

    PeriodeLytter

    Hi-Fi freak
    Ble medlem
    26.02.2013
    Innlegg
    3.594
    Antall liker
    3.274
    Cool beans, Periodelytter. Nå fikk jeg lyst til å børste støvet av min gamle RPi. :geek:

    Men jeg mener å se en liten logisk brist i skriptet ditt. Full hastighet skrues vel av klokken 24 og ikke 23?

    Det lenge siden jeg kludret med cron. Moderne Linux-distroer har vel fremdeles /etc/crontab?
    I så fall kan skriptet erstattes med disse to linjene i /etc/crontab:

    Kode:
    0 9 * * *  root  echo performance > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
    0 23 * * *  root  echo ondemand > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
    Jeg har ikke testet dette... :cool:
    Takker :love:

    Joda crontab finnes fortsatt. Det er derifra disse mappene kjører.
    /etc/cron.hourly
    /etc/cron.daily
    /etc/cron.weekly
    /etc/cron.monthly

    Fordelen med mappene er at man kan droppe mer komplekse skript i dem uten å redigere crontab. Men selvsagt, enkle linjer som dette burde kjøre slik du beskriver.
     

    PeriodeLytter

    Hi-Fi freak
    Ble medlem
    26.02.2013
    Innlegg
    3.594
    Antall liker
    3.274
    NeRD AleRT - Kjøre LMS sine SQLite databaser og alle pluggin inkludert Material Skin fra RAM disk virker nå være en realitet.

    Ser ikke ut til å skape problemer for funksjoner testet så langt. Og endringer gjort på RAM disk lagres til µSD kort når program avslutter.
    Gjenstår egentlig bare finne en god metode å måle om hastighet finner veien til en webklient. Om der er noen webutviklere innom her er tips velkommen :)

    Etter ha tuklet litt med flagg i 'dd' til å måle skrive/lesehastighet er dette resultatene jeg får. Nå er det egentlig kun lesehastighet som har betydning i det daglige.
    Raspberry Pi 5 Model B Rev 1.0 med SanDisk Exstreme PRO 200/90MB/s µSD

    ------ µSD card Write -------- oflag=direct -------------------
    2048+0 records in
    2048+0 records out
    8388608 bytes (8.4 MB, 8.0 MiB) copied, 2.97693 s, 2.8 MB/s

    ------ µSD card Write -------- oflag=nocache -------------------
    2048+0 records in
    2048+0 records out
    8388608 bytes (8.4 MB, 8.0 MiB) copied, 0.201719 s, 41.6 MB/s

    ------ µSD card Read -------- iflag=direct -------------------
    2048+0 records in
    2048+0 records out
    8388608 bytes (8.4 MB, 8.0 MiB) copied, 0.515289 s, 16.3 MB/s

    ------ µSD card Read -------- iflag=nocache ------------------
    2048+0 records in
    2048+0 records out
    8388608 bytes (8.4 MB, 8.0 MiB) copied, 0.00264176 s, 3.2 GB/s

    ------ RAM disk Write -------- oflag=direct -------------------
    2048+0 records in
    2048+0 records out
    8388608 bytes (8.4 MB, 8.0 MiB) copied, 0.00673896 s, 1.2 GB/s

    ------ RAM disk Read -------- iflag=direct -------------------
    2048+0 records in
    2048+0 records out
    8388608 bytes (8.4 MB, 8.0 MiB) copied, 0.00231742 s, 3.6 GB/s
    Det blir sagt at RPi5 har ny raskere µSD kortleser. Men jeg undrer om dagens RPi4 kan ha fått den samme chip'n da jeg får samme resultat på min RPi4 Rev 1.5 ?
     

    PeriodeLytter

    Hi-Fi freak
    Ble medlem
    26.02.2013
    Innlegg
    3.594
    Antall liker
    3.274
    Ja, det er jo en tanke verd å forfølge. Her er fat patisjonen fra µSD kortet testet på Win10.

    1710788681270.png

    ------------------------------------------------------------------------------
    CrystalDiskMark 8.0.5 x64 (C) 2007-2024 hiyohiyo
    Crystal Dew World: https://crystalmark.info/
    ------------------------------------------------------------------------------
    * MB/s = 1,000,000 bytes/s [SATA/600 = 600,000,000 bytes/s]
    * KB = 1000 bytes, KiB = 1024 bytes

    [Read]
    SEQ 1MiB (Q= 8, T= 1): 94.303 MB/s [ 89.9 IOPS] < 88016.26 us>
    SEQ 1MiB (Q= 1, T= 1): 92.008 MB/s [ 87.7 IOPS] < 11377.18 us>
    RND 4KiB (Q= 32, T= 1): 10.859 MB/s [ 2651.1 IOPS] < 12039.79 us>
    RND 4KiB (Q= 1, T= 1): 10.242 MB/s [ 2500.5 IOPS] < 399.46 us>

    [Write]
    SEQ 1MiB (Q= 8, T= 1): 78.612 MB/s [ 75.0 IOPS] <105159.63 us>
    SEQ 1MiB (Q= 1, T= 1): 81.635 MB/s [ 77.9 IOPS] < 12820.24 us>
    RND 4KiB (Q= 32, T= 1): 2.231 MB/s [ 544.7 IOPS] < 58358.20 us>
    RND 4KiB (Q= 1, T= 1): 2.242 MB/s [ 547.4 IOPS] < 1823.89 us>

    Profile: Default
    Test: 64 MiB (x1) [F: 12% (62/510MiB)]
    Mode:
    Time: Measure 5 sec / Interval 5 sec
    Date: 2024/03/18 20:03:17
    OS: Windows 10 Home 22H2 [10.0 Build 19045] (x64)
    Jeg har ikke brydd meg med å teste store filer på RPi da poenget med øvelsen er å mate webserveren til LMS med korte tekstsnutter og mindre bilder for visualisering i Material Skin.
    Mulig dette er feilt tenkesett? At jeg bør se på hele *.db filen til SQLite? Ikke at det gir spesielt store filer det heller.
    Her vist i MB med et arkiv på 4500+ CD album med cover og artistfotoer.

    Bash:
    pi@RPi3:~ $ du -m /var/lib/squeezeboxserver/cache/*.db
    653     /var/lib/squeezeboxserver/cache/artwork.db
    15      /var/lib/squeezeboxserver/cache/cache.db
    861     /var/lib/squeezeboxserver/cache/imgproxy.db
    140     /var/lib/squeezeboxserver/cache/library.db
    9       /var/lib/squeezeboxserver/cache/spotty.db
    Jeg skal teste videre med en Samsung T7 Shield som lyger på seg opptil 1050 MB/s når jeg blir helt klar med migrering fra RPi3.
     
  • Laster inn…

Diskusjonstråd Se tråd i gallerivisning

  • Laster inn…
Topp Bunn