diff --git a/srv/http/assets/js/context.js b/srv/http/assets/js/context.js index 3113919f1..9f21f6251 100644 --- a/srv/http/assets/js/context.js +++ b/srv/http/assets/js/context.js @@ -450,7 +450,7 @@ function webRadioEdit() { , checkblank : [ 0, 1 ] , boxwidth : 'max' , beforeshow : function() { - $( '#addwebradiodir' ).empty(); + $( '#addwebradiodir' ).remove(); if ( url.includes( 'stream.radioparadise.com' ) || url.includes( 'icecast.radiofrance.fr' ) ) { $( '#infoContent' ).find( 'tr:eq( 2 ), tr:eq( 3 )' ).remove(); } @@ -491,19 +491,23 @@ function webRadioNew( name, url, charset ) { , values : name ? [ name, url, charset ] : [ '', '', 'UTF-8' ] , checkblank : [ 0, 1 ] , beforeshow : function() { - $( '#addwebradiodir' ).click( function() { - info( { - icon : 'webradio' - , title : 'Add New Folder' - , textlabel : 'Name' - , focus : 0 - , checkblank : 1 - , ok : function() { - var dir = $( '#lib-path .lipath' ).text(); - bash( [ 'wrdirnew', dir, infoVal() ] ); - } + if ( $( '#lib-path .lipath' ).text() ) { + $( '#addwebradiodir' ).remove(); + } else { + $( '#addwebradiodir' ).click( function() { + info( { + icon : 'webradio' + , title : 'Add New Folder' + , textlabel : 'Name' + , focus : 0 + , checkblank : 1 + , ok : function() { + var dir = $( '#lib-path .lipath' ).text(); + bash( [ 'wrdirnew', dir, infoVal() ] ); + } + } ); } ); - } ); + } } , ok : function() { var values = infoVal(); diff --git a/srv/http/assets/js/networks.js b/srv/http/assets/js/networks.js index e54cd5812..5c6ee7710 100644 --- a/srv/http/assets/js/networks.js +++ b/srv/http/assets/js/networks.js @@ -9,7 +9,7 @@ $( '.container' ).click( function( e ) { } ); $( '.back' ).click( function() { clearTimeout( G.timeoutScan ); - $( '#divinterface' ).removeClass( 'hide' ); + $( '#help, #divinterface' ).removeClass( 'hide' ); $( '#divbluetooth, #divwifi, #divwebui' ).addClass( 'hide' ); $( '#listwlscan, #listbtscan' ).empty(); refreshData(); @@ -24,7 +24,7 @@ $( '#btscan' ).click( function() { return } - $( '#divinterface, #divwebui, #divaccesspoint' ).addClass( 'hide' ); + $( '#help, #divinterface, #divwebui, #divaccesspoint' ).addClass( 'hide' ); $( '#divbluetooth' ).removeClass( 'hide' ); scanBluetooth(); } ); @@ -39,7 +39,13 @@ $( '#wladd' ).click( function() { G.hostapd ? infoAccesspoint() : infoWiFi(); } ); $( '#wlscan' ).click( function() { - G.hostapd ? infoAccesspoint() : wlanStatus(); + if ( G.hostapd ) { + infoAccesspoint(); + } else { + $( '#help, #divinterface, #divwebui, #divaccesspoint' ).addClass( 'hide' ); + $( '#divwifi' ).removeClass( 'hide' ); + scanWlan(); + } } ); $( '#lanadd' ).click( function() { info( { @@ -521,28 +527,9 @@ function scanBluetooth() { function scanWlan() { bash( '/srv/http/bash/settings/networks-scan.sh wlan', function( data ) { if ( data ) { - var signals = ''; - data.forEach( function( list, i, obj ) { - if ( !list.ssid ) { // remove blank ssid - obj.splice( i, 1 ); - return - } - - if ( list.signal != 0 ) signals += list.signal; - } ); - data.sort( function( a, b ) { - if ( signals ) { - var ab = signals.includes( 'dBm' ) ? [ a.signal, b.signal ] : [ b.signal, a.signal ]; - } else { - var ab = [ a.ssid, b.ssid ]; - } - return ab[ 0 ].localeCompare( ab[ 1 ], 'en', { numeric: true } ) - } ); G.listwlscan = data; var htmlwl = ''; data.forEach( function( list, i ) { - if ( 'profile' in list ) return - if ( list.signal.slice( -3 ) === 'dBm' ) { var dbm = parseInt( list.signal.slice( 0, -4 ) ); var signal = dbm > -60 ? '' : ( dbm < -67 ? 1 : 2 ); @@ -551,11 +538,9 @@ function scanWlan() { var signal = ''; } htmlwl += '
  • '; - if ( list.connected ) htmlwl += ' '; htmlwl += dbm && dbm < -67 ? ''+ list.ssid +'' : list.ssid; if ( list.encrypt === 'on') htmlwl += ' '; if ( list.signal != 0 ) htmlwl += ''+ list.signal +''; - if ( list.profile && !list.connected ) htmlwl += ' '; htmlwl += '
  • '; } ); } else { @@ -565,8 +550,3 @@ function scanWlan() { G.timeoutScan = setTimeout( scanWlan, 12000 ); }, 'json' ); } -function wlanStatus() { - $( '#divinterface, #divwebui, #divaccesspoint' ).addClass( 'hide' ); - $( '#divwifi' ).removeClass( 'hide' ); - scanWlan(); -} diff --git a/srv/http/bash/addons.sh b/srv/http/bash/addons.sh index e289b18b9..0fa38ec86 100644 --- a/srv/http/bash/addons.sh +++ b/srv/http/bash/addons.sh @@ -74,12 +74,10 @@ title() { getinstallzip() { echo $bar Get files ... installfile=$branch.tar.gz - curl -skLO $( jq -r .$alias.installurl $addonsjson \ + fileurl=$( jq -r .$alias.installurl $addonsjson \ | sed "s|raw/main/install.sh|archive/$installfile|" ) - if [[ ! -e $installfile ]]; then - echo -e "$warn Get files failed." - exit - fi + curl -sfLO $fileurl + [[ $? != 0 ]] && echo -e "$warn Get files failed." && exit echo echo $bar Install new files ... diff --git a/srv/http/bash/cmd.sh b/srv/http/bash/cmd.sh index 4739a5043..9c504babc 100644 --- a/srv/http/bash/cmd.sh +++ b/srv/http/bash/cmd.sh @@ -10,7 +10,8 @@ addonsListGet() { : >/dev/tcp/8.8.8.8/53 || ( echo -2 && exit ) # online check [[ ! $1 ]] && branch=main || branch=$1 - curl -skL https://github.com/rern/rAudio-addons/raw/$branch/addons-list.json -o $diraddons/addons-list.json || ( echo -1 && exit ) + curl -sfL https://github.com/rern/rAudio-addons/raw/$branch/addons-list.json -o $diraddons/addons-list.json + [[ $? != 0 ]] && echo -1 && exit } equalizerGet() { # sudo - mixer equal is user dependent val=$( sudo -u mpd amixer -MD equal contents | awk -F ',' '/: value/ {print $NF}' | xargs ) diff --git a/srv/http/bash/settings/networks-data.sh b/srv/http/bash/settings/networks-data.sh index 4a928a96f..5cbf85ec7 100644 --- a/srv/http/bash/settings/networks-data.sh +++ b/srv/http/bash/settings/networks-data.sh @@ -4,21 +4,16 @@ # bluetooth if systemctl -q is-active bluetooth; then - controller=$( bluetoothctl show | head -1 | cut -d' ' -f2 ) - readarray -t macs <<< $( ls -1 /var/lib/bluetooth/$controller | egrep -v 'cache|settings' ) - if [[ $macs ]]; then - for mac in "${macs[@]}"; do - readarray -t info <<< $( bluetoothctl info $mac \ - | egrep 'Name: |Connected: |UUID: Audio' \ - | sed -E 's/^\s*Name: // - s/^\s*Connected: yes/true/ - s/^\s*Connected: no/false/ - s/\s*UUID: Audio (.*) .*/\1/' ) + readarray -t devices <<< $( bluetoothctl devices Paired | sort -k3 -fh ) + if [[ $devices ]]; then + for dev in "${devices[@]}"; do + mac=$( echo $dev | cut -d' ' -f2 ) + info=$( bluetoothctl info $mac ) listbt+=',{ "mac" : "'$mac'" -, "name" : "'${info[0]}'" -, "connected" : '${info[1]}' -, "type" : "'${info[2]}'" +, "name" : "'$( echo $dev | cut -d' ' -f3- )'" +, "connected" : '$( echo "$info" | grep -q 'Connected: yes' && echo true || echo false )' +, "type" : "'$( echo "$info" | awk '/UUID: Audio/ {print $3}' )'" }' done listbt="[ ${listbt:1} ]" diff --git a/srv/http/bash/settings/networks-scan.sh b/srv/http/bash/settings/networks-scan.sh index 47425dbff..0c18fb5ee 100644 --- a/srv/http/bash/settings/networks-scan.sh +++ b/srv/http/bash/settings/networks-scan.sh @@ -6,66 +6,57 @@ if [[ $1 == wlan ]]; then wlandev=$( cat $dirshm/wlan ) ip link set $wlandev up - # pre-scan hidden ssid to force responding to scan - readarray -t hiddenprofiles <<< $( grep -rl --exclude-dir=examples ^Hidden=yes /etc/netctl ) - if [[ $hiddenprofiles ]]; then - for file in "${hiddenprofiles[@]}"; do - iwlist $wlandev scan essid "$( basename "$file" )" &> /dev/null - done - fi - # ESSID:"NAME" # Encryption key:on # Quality=37/70 Signal level=-73 dBm --- Quality=0/100 Signal level=25/100 # IE: IEEE 802.11i/WPA2 Version 1 # IE: WPA Version 1 - scan=$( iwlist $wlandev scan \ + scan=$( iwlist $wlandev scan ) + [[ ! $scan ]] && exit + + scan=$( echo "$scan" \ | sed -E 's/^\s*|\s*$//g' \ | egrep '^Cell|^ESSID|^Encryption|^IE.*WPA|^Quality' \ - | sed -E 's/^Cell.*/},{/ - s/^ESSID:/,"ssid":/ - s/\\x00//g + | sed -E 's/^Cell.*/,{/ + s/^Quality.*level.(.*)/,"signal":"\1"/ s/^Encryption key:(.*)/,"encrypt":"\1"/ + s/^ESSID:/,"ssid":/ s/^IE.*WPA.*/,"wpa":true/ - s/^Quality.*level.(.*)/,"signal":"\1"/' \ - | sed '/},{/ {n;s/^,/ /}' ) - # save profile - readarray -t ssids <<< $( grep '"ssid":' <<< "$scan" \ - | sed -E 's/^.*:"(.*)"/\1/' \ - | awk NF ) - for ssid in "${ssids[@]}"; do - [[ -e "/etc/netctl/$ssid" ]] && scan=$( sed '/"ssid":"'$ssid'"/ a\,"profile":true' <<< "$scan" ) + s/\\x00//g' \ + | tr -d '\n' \ + | sed 's/{,/{/g; s/,{/\n&/g' \ + | sed -E -e '/^$|"ssid":""/ d' \ + -e 's/wpa.*wpa/wpa/; s/$/}/' \ + | sort ) + + # omit saved profile + readarray -t profiles <<< $( ls -1p /etc/netctl | grep -v /$ ) + for profile in "${profiles[@]}"; do + scan=$( grep -v "ssid.*$profile" <<< "$scan" ) done - # connected ssid - connectedssid=$( iwgetid $wlandev -r ) - scan=$( sed '/"ssid":"'$connectedssid'"/ a\,"connected":true' <<< "$scan" ) - - # },{... > [ {...} ] - echo "[ ${scan:2} } ]" | jq + + echo "[ ${scan:1} ]" # ,{...} > [ {...} ] exit fi bluetoothctl --timeout=10 scan on &> /dev/null -devices=$( bluetoothctl devices \ - | grep -v ' ..-..-..-..-..-..$' \ - | sed -E 's/Device (..:..:..:..:..:..) (.*)/\2^\1/' \ - | sort -f ) +devices=$( bluetoothctl devices | grep -v ' ..-..-..-..-..-..$' ) [[ ! $devices ]] && exit -controller=$( bluetoothctl show | head -1 | cut -d' ' -f2 ) -readarray -t macs <<< $( ls -1 /var/lib/bluetooth/$controller | egrep -v 'cache|settings' ) -if [[ $macs ]]; then - for mac in "${macs[@]}"; do - devices=$( grep -v $mac <<< "$devices" ) - done +# omit paired devices +paired=$( bluetoothctl devices Paired ) +if [[ $paired ]]; then + devices=$( echo "$devices +$paired" \ + | sort -k3 -fh \ + | uniq -u ) fi readarray -t devices <<< "$devices" for dev in "${devices[@]}"; do - name=${dev/^*} - mac=${dev/*^} data+=',{ -"name" : "'$name'" -, "mac" : "'$mac'" + "mac" : "'$( echo $dev | cut -d' ' -f2 )'" +, "name" : "'$( echo $dev | cut -d' ' -f3- )'" }' done -data2json "$data" + +echo "[ ${data:1} ]" diff --git a/srv/http/bash/settings/player-conf.sh b/srv/http/bash/settings/player-conf.sh index 630b17771..0381f797b 100644 --- a/srv/http/bash/settings/player-conf.sh +++ b/srv/http/bash/settings/player-conf.sh @@ -135,7 +135,7 @@ fi linecdio=$( sed -n '/cdio_paranoia/ =' /etc/mpd.conf ) [[ $linecdio ]] && sed -i "$(( linecdio - 1 )),/^$/ d" /etc/mpd.conf -lastline=$(( $( sed -n '/^resampler/=' /etc/mpd.conf ) + 3 )) +lastline=$(( $( sed -n '/^audio_output/ =' /etc/mpd.conf | head -1 ) - 1 )) global=$( sed -n "1,$lastline p" /etc/mpd.conf | sed '/# custom0/,/# custom1/ d' ) if [[ -e $dirsystem/custom && -e $dirsystem/custom-global ]]; then custom=$( echo " diff --git a/srv/http/bash/settings/system.sh b/srv/http/bash/settings/system.sh index 1f9289520..b1e0fb1ec 100644 --- a/srv/http/bash/settings/system.sh +++ b/srv/http/bash/settings/system.sh @@ -451,9 +451,10 @@ mirrorlist ) | head -1 \ | sed 's|\.*mirror.*||; s|.*//||' ) [[ ! $current ]] && current=0 - if ! grep -q '^###' $file; then + if : >/dev/tcp/8.8.8.8/53; then pushstreamNotifyBlink 'Mirror List' 'Get ...' globe - curl -skL https://github.com/archlinuxarm/PKGBUILDs/raw/master/core/pacman-mirrorlist/mirrorlist -o $file + curl -sfLO https://github.com/archlinuxarm/PKGBUILDs/raw/master/core/pacman-mirrorlist/mirrorlist + [[ $? == 0 ]] && mv -f mirrorlist $file || rm mirrorlist fi readarray -t lines <<< $( awk NF $file \ | sed -n '/### A/,$ p' \ diff --git a/srv/http/bash/status-coverart.sh b/srv/http/bash/status-coverart.sh index 2393bc754..293c302b8 100644 --- a/srv/http/bash/status-coverart.sh +++ b/srv/http/bash/status-coverart.sh @@ -15,7 +15,7 @@ path="/mnt/MPD/$file" # found cover file localfile=$dirshm/local/$covername -[[ -e $localfile ]] && cat $localfile && exit +[[ -f $localfile ]] && cat $localfile && exit # found embedded embeddedname=$( echo ${filename%.*} | tr -d ' "`?/#&'"'" ) embeddedfile=$dirshm/embedded/$embeddedname.jpg @@ -30,7 +30,9 @@ coverfile=$( ls -1X "$path"/cover.{gif,jpg,png} 2> /dev/null | head -1 ) | egrep -i '/album\....$|cover\....$|/folder\....$|/front\....$' \ | head -1 ) if [[ $coverfile ]]; then - php -r "echo rawurlencode( '${coverfile//\'/\\\'}' );" | tee $localfile # rawurlencode - local path only + coverfile=$( php -r "echo rawurlencode( '${coverfile//\'/\\\'}' );" ) + echo $coverfile + [[ -f $localfile ]] && echo $coverfile > $localfile # rawurlencode - local path only $dirbash/cmd.sh coverfileslimit exit fi diff --git a/srv/http/bash/status-coverartonline.sh b/srv/http/bash/status-coverartonline.sh index 81fe1552c..747d87075 100644 --- a/srv/http/bash/status-coverartonline.sh +++ b/srv/http/bash/status-coverartonline.sh @@ -22,14 +22,14 @@ else method='method=album.getInfo' fi apikey=$( grep apikeylastfm /srv/http/assets/js/main.js | cut -d"'" -f2 ) -data=$( curl -sGk -m 5 \ +data=$( curl -sfG -m 5 \ --data-urlencode "artist=$artist" \ --data-urlencode "$param" \ --data "$method" \ --data "api_key=$apikey" \ --data "format=json" \ http://ws.audioscrobbler.com/2.0 ) -[[ $data =~ error ]] && exit +[[ $? != 0 || $data =~ error ]] && exit if [[ $type == webradio ]]; then album=$( jq -r .track.album <<< "$data" ) @@ -46,7 +46,10 @@ if [[ $image && $image != null ]]; then else ### 2 - coverartarchive.org ##################################### mbid=$( jq -r .mbid <<< "$album" ) - [[ $mbid && $mbid != null ]] && url=$( curl -skL -m 10 https://coverartarchive.org/release/$mbid | jq -r .images[0].image ) + if [[ $mbid && $mbid != null ]]; then + imgdata=$( curl -sfL -m 10 https://coverartarchive.org/release/$mbid ) + [[ $? == 0 ]] && url=$( echo "$imgdata" | jq -r .images[0].image ) + fi fi fi [[ ! $url || $url == null ]] && exit @@ -58,8 +61,7 @@ else [[ $type ]] && prefix=$type || prefix=online coverfile=$dirshm/$prefix/$name.$ext fi -curl -sL $url -o $coverfile -[[ ! -e $coverfile ]] && exit +curl -sfL $url -o $coverfile || exit data=' "url" : "'${coverfile:9}'" diff --git a/srv/http/bash/status.sh b/srv/http/bash/status.sh index 714d1be61..3aa1bc1b9 100644 --- a/srv/http/bash/status.sh +++ b/srv/http/bash/status.sh @@ -190,27 +190,24 @@ for line in "${lines[@]}"; do bitdepth=${data[1]} ;; bitrate ) - bitrate=$(( val * 1000 ));; - # true/false + bitrate=$(( val * 1000 )) + ;; + duration | playlistlength | song | state | Time ) + printf -v $key '%s' $val;; # value of $key as "var name" - value of $val as "var value" + Album | AlbumArtist | Artist | Name | Title ) # string to escape " for json + printf -v $key '%s' "${val//\"/\\\"}" + ;; + file ) + filenoesc=$val # no escape " for coverart and ffprobe + [[ $filenoesc == *".cue/track"* ]] && filenoesc=$( dirname "$filenoesc" ) + file=${val//\"/\\\"} # escape " for json + ;; random | repeat | single ) [[ $val == 1 ]] && tf=true || tf=false ######## status+=' , "'$key'" : '$tf ;; - # number - duration | playlistlength | song | Time ) - printf -v $key '%s' $val;; # value of $key as "var name" - value of $val as "var value" - # string - escaped name - Album | AlbumArtist | Artist | Name | Title ) - printf -v $key '%s' "${val//\"/\\\"}";; # escape " for json - file ) - file0=$val # no escape " for coverart and ffprobe - [[ $file0 == *".cue/track"* ]] && file0=$( dirname "$file0" ) - file=${val//\"/\\\"};; # escape " for json - # string - * ) # state | updating_db - [[ $key ]] && printf -v $key '%s' "$val";; esac done @@ -423,7 +420,7 @@ samplingLine() { -v quiet \ -show_entries format=bit_rate \ -of default=noprint_wrappers=1:nokey=1 \ - "/mnt/MPD/$file" ) + "/mnt/MPD/$filenoesc" ) fi fi if (( $bitrate < 1000000 )); then @@ -431,7 +428,6 @@ samplingLine() { else [[ $bitdepth == dsd ]] && bitrate=$(( bitrate / 2 )) rate="$( awk "BEGIN { printf \"%.2f\n\", $bitrate / 1000000 }" ) Mbit/s" -# rate=$( echo "print $bitrate / 1000000" | perl )' Mbit/s' fi if [[ $bitdepth == dsd ]]; then @@ -439,7 +435,6 @@ samplingLine() { else [[ $bitdepth == 'N/A' && ( $ext == WAV || $ext == AIFF ) ]] && bitdepth=$(( bitrate / samplerate / 2 )) sample="$( awk "BEGIN { printf \"%.1f\n\", $samplerate / 1000 }" ) kHz" -# sample=$( echo "print $samplerate / 1000" | perl )' kHz' if [[ $bitdepth && ! $ext =~ ^(AAC|MP3|OGG|Radio)$ ]]; then sampling="$bitdepth bit $sample $rate" else # lossy has no bitdepth @@ -481,14 +476,13 @@ else hex=( $( hexdump -x -s$byte -n4 "/mnt/MPD/$file" | head -1 | tr -s ' ' ) ) dsd=$(( ${hex[1]} / 1100 * 64 )) # hex byte#57-58 - @1100:dsd64 bitrate=$( awk "BEGIN { printf \"%.2f\n\", $dsd * 44100 / 1000000 }" ) -# bitrate=$( echo "print $dsd * 44100 / 1000000" | perl ) sampling="DSD$dsd • $bitrate Mbit/s • $ext" else data=( $( ffprobe -v quiet -select_streams a:0 \ -show_entries stream=bits_per_raw_sample,sample_rate \ -show_entries format=bit_rate \ -of default=noprint_wrappers=1:nokey=1 \ - "/mnt/MPD/$file0" ) ) + "/mnt/MPD/$filenoesc" ) ) samplerate=${data[0]} bitdepth=${data[1]} bitrate=${data[2]} @@ -521,7 +515,7 @@ if [[ $ext != CD && ! $stream ]]; then coverart=$( $dirbash/status-coverart.sh "\ $AlbumArtist $Album -$file0" ) +$filenoesc" ) [[ $coverart ]] && coverart="${coverart:0:-4}.$date.${coverart: -3}" fi elapsedGet diff --git a/srv/http/settings/addons-progress.php b/srv/http/settings/addons-progress.php index 6623d4a4d..56c926571 100644 --- a/srv/http/settings/addons-progress.php +++ b/srv/http/settings/addons-progress.php @@ -90,7 +90,7 @@ ( exec( 'systemctl -q is-active bluetooth && echo true' ) ? 'Bluetooth' : 'Equalizer' ).' is currently enabled.' , 'help' => <<< HTML CamillaDSP - A flexible cross-platform IIR and FIR engine for crossovers, room correction etc. -Settings: Features | +Settings: Features | HTML , 'exist' => file_exists( '/usr/bin/camilladsp' ) ] @@ -145,7 +145,7 @@ , 'disabled' => 'DSP is currently enabled.' , 'help' => <<< HTML Alsaequal - 10 band graphic equalizer with user presets. -Control: Features | +Control: Features | Presets: • Flat: All bands at 0dB • New: Adjust > Add > NAME > Save diff --git a/srv/http/settings/networks.php b/srv/http/settings/networks.php index 036c4b7d0..79f83b237 100644 --- a/srv/http/settings/networks.php +++ b/srv/http/settings/networks.php @@ -10,20 +10,19 @@
    
     	
    rAudio as sender:(or pairing non-audio devices) - • Pairing: + • Pair:   - On receiver - Turn on discovery / pairing mode -   - On rAudio - Search > Select receiver to pair - • Connecting: +   - On rAudio - Bluetooth  Search > Select to pair + • Connect:   - On receiver - power on / power off > connect / disconnect - • Receiver buttons: -   - Playback controls play pause previous next +   - Receiver buttons can be used to control playback rAudio as receiver: - • Pairing: + • Pair:   - On rAudio - System > Bluetooth setting - enable Discoverable by senders   - On sender - Search > Select rAudio to pair   - Forget / Remove should be done on both rAudio and sender - • Connecting: + • Connect:   - On sender - Select rAudio > connect / disconnect
    @@ -36,7 +35,9 @@ ] ); ?> -
    Avoid connecting to access points which signal less than 2 bars, audio quality and responsiveness are very likely to suffer. +
    + • Connect: Wi-Fi  Search > Select to connect + • Avoid connecting to access points which signal is less than 2 bars.
    diff --git a/srv/http/settings/player.php b/srv/http/settings/player.php index 776cbd08a..acf9a5df9 100644 --- a/srv/http/settings/player.php +++ b/srv/http/settings/player.php @@ -179,7 +179,7 @@ HTML ] , [ - 'label' => 'SoXR resampler' + 'label' => 'SoXR Resampler' , 'id' => 'soxr' , 'sublabel' => 'custom settings' , 'setting' => true diff --git a/srv/http/settings/relays.php b/srv/http/settings/relays.php index 5fe721a0a..756f45605 100644 --- a/srv/http/settings/relays.php +++ b/srv/http/settings/relays.php @@ -17,7 +17,7 @@ ?> Power on/off peripheral equipments -On/Off:  System |  +On/Off:  System |  • More info: +R GPIO • Can be enabled and run as a test without a connected relay module. diff --git a/srv/http/settings/system.php b/srv/http/settings/system.php index 60bdba74a..ef45e559c 100644 --- a/srv/http/settings/system.php +++ b/srv/http/settings/system.php @@ -126,8 +126,6 @@ , 'disabled' => ( file_exists( '/srv/http/data/system/camilladsp' ) ? 'DSP is currently active.' : 'Bluetooth is currently connected.' ) , 'help' => <<< HTML Sampling 16bit - Only for Bluetooth receivers with fixed sampling - • Pairing: Networks > Bluetooth  - • Button on device can be used for play/pause HTML ] , [ @@ -139,10 +137,11 @@ , 'setting' => true , 'disabled' => 'Wi-Fi is currently connected.' , 'help' => <<< HTML -Auto start Access Point - On failed connection or no router -Country of Wi-Fi regulatory domain: - • 00 = Least common denominator settings, channels and transmit power are permitted in all countries. - • The connected router may override it to a certain country. + Settings + • Auto start Access Point - On failed connection or no router + • Country of Wi-Fi regulatory domain: +   - 00 = Least common denominator settings, channels and transmit power are permitted in all countries. +   - The connected router may override it to a certain country. HTML ] ]; @@ -334,7 +333,7 @@   • Samba: read only = no   • Windows: Everyone - Full Control • On each rAudio -   • Storage > Add to connect shared music on the server +   • Storage Add to connect shared music on the server   • Shared Data - Enable to connect the share. • Use data from this rAudio:   • Check only on rAudio with data to be used or to overwrite existing.