Onlangs heb ik mij overslapen omdat mijn wekkerradio (op basis van een Raspberry Pi) de geprogrammeerde radiostream niet kon afspelen. Vandaag een tip van hoe je radiostreams met standaard terminal opdrachten kunt afspelen en waarmee je daarvoor rekening moet houden.
Met de informatie in deze tip heb je alle basisopdrachten om een eenvoudige radiospeler (en/of wekkerradio) te bouwen. Hieronder een afbeelding van mijn radiospeler op een Raspberry Pi met 7" inch touch screen en een DigiAMP+ HAT, een digitale eindversterker.
Eerst zorgen we voor het obligate bijwerken van het systeem:
dany@pindabook:~$ sudo apt update && sudo apt upgrade -y
[sudo] wachtwoord voor dany:
Geraakt:1 http://security.debian.org/debian-security bookworm-security InRelease
Geraakt:2 http://deb.debian.org/debian bookworm InRelease
Geraakt:3 http://deb.debian.org/debian bookworm-updates InRelease
Pakketlijsten worden ingelezen... Klaar
Boom van vereisten wordt opgebouwd... Klaar
De statusinformatie wordt gelezen... Klaar
Alle pakketten zijn up-to-date.
Pakketlijsten worden ingelezen... Klaar
Boom van vereisten wordt opgebouwd... Klaar
De statusinformatie wordt gelezen... Klaar
Opwaardering wordt doorgerekend... Klaar
0 opgewaardeerd, 0 nieuw geïnstalleerd, 0 te verwijderen en 0 niet opgewaardeerd.
Daarna installeren een specialist in het afspelen van MP3 geluid: mpg123:
dany@pindabook:~$ sudo apt install mpg123
Pakketlijsten worden ingelezen... Klaar
Boom van vereisten wordt opgebouwd... Klaar
De statusinformatie wordt gelezen... Klaar
De volgende extra pakketten zullen geïnstalleerd worden:
libout123-0 libportaudio2 libsyn123-0
Voorgestelde pakketten:
jackd nas oss-compat oss4-base
De volgende NIEUWE pakketten zullen geïnstalleerd worden:
libout123-0 libportaudio2 libsyn123-0 mpg123
0 opgewaardeerd, 4 nieuw geïnstalleerd, 0 te verwijderen en 0 niet opgewaardeerd.
Er moeten 383 kB aan archieven opgehaald worden.
Na deze bewerking zal er 1.095 kB extra schijfruimte gebruikt worden.
Wilt u doorgaan? [J/n]
Ophalen:1 http://deb.debian.org/debian bookworm/main amd64 libout123-0 amd64 1.31.2-1 [28,4 kB]
Ophalen:2 http://deb.debian.org/debian bookworm/main amd64 libportaudio2 amd64 19.6.0-1.2 [66,7 kB]
Ophalen:3 http://deb.debian.org/debian bookworm/main amd64 libsyn123-0 amd64 1.31.2-1 [86,1 kB]
Ophalen:4 http://deb.debian.org/debian bookworm/main amd64 mpg123 amd64 1.31.2-1 [202 kB]
383 kB opgehaald in 0s (5.373 kB/s)
Voorheen niet geselecteerd pakket libout123-0:amd64 wordt geselecteerd.
(Database wordt ingelezen ... 173830 bestanden en mappen momenteel geïnstalleerd.)
Uitpakken van .../libout123-0_1.31.2-1_amd64.deb wordt voorbereid...
Bezig met uitpakken van libout123-0:amd64 (1.31.2-1) ...
Voorheen niet geselecteerd pakket libportaudio2:amd64 wordt geselecteerd.
Uitpakken van .../libportaudio2_19.6.0-1.2_amd64.deb wordt voorbereid...
Bezig met uitpakken van libportaudio2:amd64 (19.6.0-1.2) ...
Voorheen niet geselecteerd pakket libsyn123-0:amd64 wordt geselecteerd.
Uitpakken van .../libsyn123-0_1.31.2-1_amd64.deb wordt voorbereid...
Bezig met uitpakken van libsyn123-0:amd64 (1.31.2-1) ...
Voorheen niet geselecteerd pakket mpg123 wordt geselecteerd.
Uitpakken van .../mpg123_1.31.2-1_amd64.deb wordt voorbereid...
Bezig met uitpakken van mpg123 (1.31.2-1) ...
Instellen van libportaudio2:amd64 (19.6.0-1.2) ...
Instellen van libout123-0:amd64 (1.31.2-1) ...
Instellen van libsyn123-0:amd64 (1.31.2-1) ...
Instellen van mpg123 (1.31.2-1) ...
update-alternatives: /usr/bin/mpg123.bin wordt gebruikt om in de automatische modus in /usr/bin/mpg123 (mpg123) te voorzien
update-alternatives: /usr/bin/mpg123.bin wordt gebruikt om in de automatische modus in /usr/bin/mp3-decoder (mp3-decoder) te voorzien
Bezig met afhandelen van triggers voor libc-bin (2.36-9) ...
Bezig met afhandelen van triggers voor man-db (2.11.2-2) ...
Bezig met afhandelen van triggers voor mailcap (3.70+nmu1) ...
Als voorbeeld neem ik de Jazz zender Crooze FM.
We gebruiken mpg123 met de optie -f
(--scale) waarmee je het volume kunt regelen van 0 tot 32768 (standaard).
De laatste optie is de URL van de Crooze FM audio stream.
Op het einde van deze tip vind je een koppeling naar een webpagina waar je een verzameling kunt vinden van radio stream URL's.
dany@pindabook:~$ mpg123 -f -12000 http://streams.crooze.fm:8000
High Performance MPEG 1.0/2.0/2.5 Audio Player for Layers 1, 2 and 3
version 1.31.2; written and copyright by Michael Hipp and others
free software (LGPL) without any warranty but with best wishes
Directory: http://
Terminal control enabled, press 'h' for listing of keys and functions.
Playing MPEG stream 1 of 1: streams.crooze.fm:8000 ...
ICY-NAME:
ICY-URL: http://www.shoutcast.com
MPEG 1.0 L III cbr128 48000 stereo
ICY-META: StreamTitle='Roberta Flack - Killing Me Softly with His Song (DJ Spinna Remix)';
ICY-META: StreamTitle='Selah Sue - Alone';
[0:04] Decoding of streams.crooze.fm:8000 finished.
Je kunt het afspelen afbreken met de sneltoets Ctrl+c. In de uitvoer merkt je dat de stream niet alleen audio bevat maar ook informatie zoals songtitels en -uitvoerders.
De audio stream en de informatie wordt door mpg123 gescheiden.
Daarbij wordt de informatie naar de error uitvoer gestuurd waardoor deze op het scherm zichtbaar wordt.
Om deze informatie zelf te kunnen verwerken sturen we de error uitvoer (2>
) naar het bestand radio.log
:
dany@pindabook:~$ mpg123 -f -12000 http://streams.crooze.fm:8000 2> radio.log
Je ziet nu geen informatie verschijnen. Na een tijdje luisteren, breek je mpg123 af met de sneltoets Ctrl+c.
De in het bestand radio.log opgeslagen informatie maak je zichtbaar met:
dany@pindabook:~$ cat radio.log
High Performance MPEG 1.0/2.0/2.5 Audio Player for Layers 1, 2 and 3
version 1.31.2; written and copyright by Michael Hipp and others
free software (LGPL) without any warranty but with best wishes
Directory: http://
Terminal control enabled, press 'h' for listing of keys and functions.
Playing MPEG stream 1 of 1: streams.crooze.fm:8000 ...
ICY-NAME:
ICY-URL: http://www.shoutcast.com
MPEG 1.0 L III cbr128 48000 stereo
ICY-META: StreamTitle='Selah Sue - Alone';
[0:13] Decoding of streams.crooze.fm:8000 finished.
Om tijdens het afspelen de informatie weer te geven, moeten we mpg123 op de achtergrond laten spelen.
Dit kan door achter de opdracht een &
-teken te plaatsen.
Maar dit is niet voldoende.
Mpg123 stopt namelijk direct met afspelen als het op de achtergrond werkt.
Om dit te verhinderen plaatsen we voor de mpg123 opdracht de opdracht nohup
waardoor mpg123 de indruk heeft dat het op de voorgrond blijft spelen.
dany@pindabook:~$ nohup mpg123 -f -12000 http://streams.crooze.fm:8000 2> radio.log &
[2] 3309
[1] Klaar nohup mpg123-alsa -f -12000 http://streams.crooze.fm:8000
Je krijgt dus de prompt terug om opdrachten uit te voeren tijden het afspelen.
Met de grep
opdracht kunnen we enkel de regels filteren die song informatie bevatten, namelijk de regels die de tekst ICY-META
bevatten.
De tail
opdracht zorgt dat we enkel de laatste inforegel bekijken.
En de cut
opdracht toont ons enkel wat tussen enkele aanhalingstekens staat:
dany@pindabook:~$ cat radio.log | grep "ICY-META" | tail -1 | cut -d "'" -f 2
Groove Armada - One Way (feat. J.Lamotta) (GA25 Version)
Om een opdracht op de achtergrond achtergrond (mpg123) af te breken, kan je een killall
opdracht gebruiken.
Je stop het afspelen dus met:
dany@pindabook:~$ killall mpg123
Commerciële en overheidszenders veranderen soms van streamaanbieder (kostenbesparend en/of mogelijkheden). Daarbij veranderen ze niet de URL, maar laten ze de URL doorverwijzen naar de nieuwe aanbieder. Je kunt het vergelijken met snelkoppeling naar bestanden. Zo hoeven internetradio's geen nieuwe update te krijgen om de zenders te blijven beluisteren. Maar daar moet je wel rekening mee houden. Een voorbeeld met een VRT zender:
dany@pindabook:~$ mpg123 -f -12000 http://icecast.vrtcdn.be/stubru-high.mp3
High Performance MPEG 1.0/2.0/2.5 Audio Player for Layers 1, 2 and 3
version 1.31.2; written and copyright by Michael Hipp and others
free software (LGPL) without any warranty but with best wishes
[src/streamdump.c:stream_parse_headers():341] error: HTTP error response: HTTP/1.0 404 Not Found
[src/streamdump.c:stream_parse_headers():411] error: missing positive server response
Mpg123 is een specialist in het afspelen van MP3, maar is geen netwerkspecialist en kent dus geen URL doorverwijzingen.
Curl
is dat wel.
We vragen met de curl opdracht de netwerkinformatie op van de radio stream.
De -H
(--header) zorgt dat de stream ook song informatie bevat (Icy-MetaData:1
).
De --silent
optie zorgt dat curl geen berichten op het scherm toont.
Daar we geen interesse hebben in de MP3 stream, vragen we enkel de netwerkinformatie op met de optie --head
.
Daarenboven laten we curl eventuele doorverwijzingen volgen met de optie -L
(--location):
dany@pindabook:~$ curl -H "Icy-MetaData:1" --silent --head -L "http://icecast.vrtcdn.be/stubru-high.mp3"
HTTP/1.1 302 Moved Temporarily
Content-Type: text/html
Content-Length: 79
Connection: keep-alive
Server: awselb/2.0
Date: Sun, 16 Jul 2023 12:13:49 GMT
X-Request-Id: 074e0227-b7dd-44d2-b82a-475806c5d5d5
X-Served-By: redirect-server-LambdaFunction-1C4LCK89LQLR9 $LATEST in eu-central-1
Cache-Control: public, max-age=300
Location: http://vrt.stream.vip/stubru/mp3-128
Vary: Upgrade-Insecure-Requests
X-Cache: Hit from cloudfront
Via: 1.1 854e69d09dba9252a1cd2401bf2be25e.cloudfront.net (CloudFront)
X-Amz-Cf-Pop: BRU50-C1
X-Amz-Cf-Id: 2KW7K2vZKfdIZmAdCFBOeabMZy1SiagaAXUZvyrsLM4hqAI2bhmO-w==
Age: 237
HTTP/1.1 302 Found
Access-Control-Allow-Origin: *
Cache-Control: no-cache, must-revalidate
Content-Type: audio/mpeg
Expires: Sun, 16 Jul 2023 12:17:46 GMT
Location: http://vrt.streamabc.net/vrt-studiobrussel-mp3-128-4409118?sABC=64o3qsrn%230%230op3p2n0r85n571544qr4p847432nr9s%23&aw_0_1st.playerid=&amsparams=playerid:;skey:1689509866
Server: Caddy
Status: 302 Moved Temporarily
X-Powered-By: PHP/7.4.33
Date: Sun, 16 Jul 2023 12:17:46 GMT
HTTP/1.1 200 OK
Accept-Ranges: none
Cache-Control: no-cache, no-store
Content-Type: audio/mpeg
Expires: Mon, 26 Jul 1997 05:00:00 GMT
Server: streamABC/QuantumCast
Vary: Origin
Date: Sun, 16 Jul 2023 12:17:46 GMT
Connection: close
De URL met de radiostream wordt uiteindelijk gevonden en is in ons voorbeeld: http://vrt.streamabc.net/vrt-studiobrussel-mp3-128-4409118?sABC=64o3qsrn%230%230op3p2n0r85n571544qr4p847432nr9s%23&aw_0_1st.playerid=&amsparams=playerid:;skey:1689509866
.
Merk op dat deze URL verschillende parameters bevat, waaronder op het einde de parameter skey
.
Bij elke benadering van de radiostream URL kan je andere parameters krijgen.
M.a.w. de URL's zijn eenmalig.
Je kunt het vergelijken met een eenmalig wachtwoord.
Parameters kunnen gebruikt worden voor allerlei zaken zoals het bijhouden van luistercijfers, opmaken van luisterprofielen, reclamedoeleinden, enz.
Aangezien mpg123 doorverwijzende URL's niet kan verwerken, laten we curl de stream ontvangen om deze aan mpg123 door te geven om het af te spelen:
dany@pindabook:~$ curl -H "Icy-MetaData:1" --silent -L "http://icecast.vrtcdn.be/stubru-high.mp3" 2>&1 | mpg123 -f -12000 -
High Performance MPEG 1.0/2.0/2.5 Audio Player for Layers 1, 2 and 3
version 1.31.2; written and copyright by Michael Hipp and others
free software (LGPL) without any warranty but with best wishes
Terminal control enabled, press 'h' for listing of keys and functions.
Playing MPEG stream 1 of 1: - ...
MPEG 1.0 L III cbr128 44100 j-s
Note: Illegal Audio-MPEG-Header 0x68e25451 at offset 8359.
Note: Trying to resync...
Note: Skipped 49 bytes in input.
> 20+01 00:00.52+00:00.00 --- 4294967259=4294967259 128 kb/s 418 B acc 0 clip p+0.000
MPEG 1.0 L III cbr128 44100 j-s
Note: Illegal Audio-MPEG-Header 0xbefffb92 at offset 16767.
Note: Trying to resync...
De audioweergave wordt regelmatig onderbroken, blijkbaar door fouten in de MP3 stream.
Standaard wordt in een MP3 stream om de 16000 bytes audio een tekst geplaatst met informatie.
In de VRT stream is dat echter om de 8192 bytes.
Onderstaande opdracht maakt een deel van de MP3 stream rond positie 8192 zichtbaar.
Let op de tekst: StreamTitle='VRT Studio Brussel'
;
dany@pindabook:~$ curl -H 'Icy-Metadata: 1' --silent -L "http://icecast.vrtcdn.be/stubru-high.mp3" | head -c 8250 | tail -c 128 | hexdump -C
00000000 49 92 04 0a 46 11 96 01 08 fc c6 c2 cd 92 ed 13 |I...F...........|
00000010 32 68 4a 76 dd e2 4c 94 f0 5d cc 04 ff fb 52 64 |2hJv..L..]....Rd|
00000020 e3 0f 11 85 16 5c 81 ec 1a 60 23 c1 cb b8 24 46 |.....\...`#...$F|
00000030 64 05 54 5d 74 07 b1 02 c0 7c 07 32 70 93 08 a6 |d.T]t....|.2p...|
00000040 68 a3 96 8a 9f 83 03 53 74 72 65 61 6d 54 69 74 |h......StreamTit|
00000050 6c 65 3d 27 56 52 54 20 53 74 75 64 69 6f 20 42 |le='VRT Studio B|
00000060 72 75 73 73 65 6c 27 3b 00 00 00 00 00 00 00 00 |russel';........|
00000070 00 00 00 00 00 00 00 7d c7 3c de d3 96 dd 14 13 |.......}.<......|
00000080
Dit is zo voor de VRT zender, maar andere zenders gebruiken nog andere informatie intervallen.
Om de informatieintervallen automatisch op te sporen laten we curl 2 seconden (timeout 2
) de URL stream onderzoeken met een grep
opdracht.
stdbuf -oL
om grep de uitvoer regel per regel te laten verwerken op zoek naar de tekst StreamTitle
in een binair bestand (-aob
):
dany@pindabook:~$ timeout 2 curl -H "Icy-MetaData:1" --silent -L "http://icecast.vrtcdn.be/stubru-high.mp3" 2>&1 | stdbuf -oL grep -aob "StreamTitle"
8193:StreamTitle
49206:StreamTitle
Beëindigd
Zoals je merkt, wordt niet elk interval informatie aangeboden, wel altijd na het eerste interval (hier 8192). De daaropvolgende informatie wordt aangeboden na een wisselend veelvoud van dit interval.
Dit interval filteren we met een sed
opdracht uit de uitvoer en slaan we op in de variabele interval
.
dany@pindabook:~$interval=$(timeout 2 curl -H "Icy-MetaData:1" --silent -L "http://icecast.vrtcdn.be/stubru-high.mp3" 2>&1 | stdbuf -oL grep -aob "StreamTitle" | head -n1 | sed 's@^[^0-9]*\([0-9]\+\).*@\1@')
dany@pindabook:~$echo $interval
8193
De positie komt echter niet overeen niet overeen met het interval: interval = positie - 1
.
We passen de variabele interval aan met:
dany@pindabook:~$ interval=$((interval - 1))
Nu we het juiste informatie-interval kennen, kunnen we dit meegeven met de mpg123 opdracht:
dany@pindabook:~$ curl -H "Icy-MetaData:1" --silent -L "http://icecast.vrtcdn.be/stubru-high.mp3" 2>&1 | mpg123 --icy-interval $interval -f -12000 -
High Performance MPEG 1.0/2.0/2.5 Audio Player for Layers 1, 2 and 3
version 1.31.2; written and copyright by Michael Hipp and others
free software (LGPL) without any warranty but with best wishes
Terminal control enabled, press 'h' for listing of keys and functions.
Playing MPEG stream 1 of 1: - ...
MPEG 1.0 L III cbr128 44100 j-s
ICY-META: StreamTitle='VRT Studio Brussel';
ICY-META: StreamTitle='OSCAR AND THE WOLF - Warrior';
[0:10] Decoding of - finished.
Typ (kopiëren en plakken mag ook) dit script in jouw favoriete teksteditor (vb: nano of Kate) en sla het op als playRadio.sh.
#!/bin/bash # $1 = URL interval=$(timeout 2 curl -H "Icy-MetaData:1" --silent -L "$1" 2>&1 | stdbuf -oL grep -aob "StreamTitle" | head -n1 | sed 's@^[^0-9]*\([0-9]\+\).*@\1@') interval=$((interval - 1)) curl -H "Icy-MetaData:1" --silent -L "$1" 2>&1 | mpg123 --icy-interval $interval -f -12000 -
Maak het script uitvoerbaar met de opdracht:
dany@pindabook:~$ chmod +x playRadio.sh
Sommige online radio stream maken gebruik van HTTPS i.p.v. HTTP. We testen meteen of ons script ook HTTPS radio streams kan afspelen:
dany@pindabook:~$ ./playRadio.sh "https://streams.radio.dpgmedia.cloud/redirect/joe_fm/mp3"
High Performance MPEG 1.0/2.0/2.5 Audio Player for Layers 1, 2 and 3
version 1.31.2; written and copyright by Michael Hipp and others
free software (LGPL) without any warranty but with best wishes
Terminal control enabled, press 'h' for listing of keys and functions.
Playing MPEG stream 1 of 1: - ...
MPEG 1.0 L III cbr128 48000 j-s
ICY-META: StreamTitle='';StreamUrl='';adw_ad='true';durationMilliseconds='20088';adId='14258';insertionType='preroll';
ICY-META: StreamTitle='DURAN DURAN - The Reflex';
[0:26] Decoding of - finished.
Gelukt. Nu nog testen of dit ook op de achtergrond kan om gelijktijdig de song informatie weer te kunnen geven:
dany@pindabook:~$nohup ./playRadio.sh "https://streams.radio.dpgmedia.cloud/redirect/joe_fm/mp3" 2> radio.log &
[1] 3303 dany@pindabook:~$cat radio.log | grep "ICY-META" | tail -1 | cut -d "'" -f 2
KEVIN LYTTLE - Turn Me On
Daar we nu niet alleen mpg123, maar ook curl gebruiken om een online MP3 stream af te spelen, kunnen we het afspelen en downloaden van de MP3 stream afbreken met de opdracht:
dany@pindabook:~$ killall mpg123 curl
Om zelf een volwaardige radiospeler te bouwen, heb je nog een volumeregeling nodig. Om de mogelijkheden van het mengpaneel van jouw audiosysteem (ALSA) weer te geven, voer je de volgende opdracht uit:
dany@pindabook:~$ amixer controls
numid=4,iface=MIXER,name='Master Playback Switch'
numid=3,iface=MIXER,name='Master Playback Volume'
numid=2,iface=MIXER,name='Capture Switch'
numid=1,iface=MIXER,name='Capture Volume'
Daarbij is het eeste woord van de naam belangrijk, we zijn vooral geïnteresseerd in het weergavevolume: Master Playback Volume
.
Daarna kan je het volume met 10% verhogen met de opdracht:
dany@pindabook:~$ amixer set 'Master' 10%+
Simple mixer control 'Master',0
Capabilities: pvolume pswitch pswitch-joined
Playback channels: Front Left - Front Right
Limits: Playback 0 - 65536
Mono:
Front Left: Playback 45876 [70%] [on]
Front Right: Playback 45876 [70%] [on]
De uitvoer toont het ingestelde volume, samen met wat extra informatie. Het volume met 10% verlagen:
dany@pindabook:~$ amixer set 'Master' 10%-
Simple mixer control 'Master',0
Capabilities: pvolume pswitch pswitch-joined
Playback channels: Front Left - Front Right
Limits: Playback 0 - 65536
Mono:
Front Left: Playback 39322 [60%] [on]
Front Right: Playback 39322 [60%] [on]
Het huidige volume opvragen:
dany@pindabook:~$ amixer get 'Master'
Simple mixer control 'Master',0
Capabilities: pvolume pswitch pswitch-joined
Playback channels: Front Left - Front Right
Limits: Playback 0 - 65536
Mono:
Front Left: Playback 39322 [60%] [on]
Front Right: Playback 39322 [60%] [on]
En filteren zodat je enkel het volume percentage krijgt:
dany@pindabook:~$ amixer get 'Master' | awk -F"[][]" '/Left:/ { print $2 }'
60%
Ziehier een overzicht van radio stream URL's. De eerste vier komen van de radio websites zelf. Deze bevatten de meest correcte informatie, maar zijn moeilijk te vinden, alsof ze niet willen dat je ze gebruikt. De laatste website in een website die URL streams verzameld. Let wel op dat je een site gebruikt die up to date URL informatie weergeeft, veel radiostream URL's die je op internet vind zijn verouderd en werken niet meer.
De mpg123 software verwijder je met de twee volgende opdrachten:
dany@pindabook:~$sudo apt purge mpg123
[sudo] wachtwoord voor dany: Pakketlijsten worden ingelezen... Klaar Boom van vereisten wordt opgebouwd... Klaar De statusinformatie wordt gelezen... Klaar De volgende pakketten zijn automatisch geïnstalleerd en zijn niet langer nodig: libout123-0 libsyn123-0 Gebruik 'sudo apt autoremove' om ze te verwijderen. De volgende pakketten zullen VERWIJDERD worden: mpg123* 0 opgewaardeerd, 0 nieuw geïnstalleerd, 1 te verwijderen en 81 niet opgewaardeerd. Na deze bewerking zal er 574 kB schijfruimte vrijkomen. Wilt u doorgaan? [J/n] (Database wordt ingelezen ... 173937 bestanden en mappen momenteel geïnstalleerd.) mpg123 (1.31.2-1) wordt verwijderd ... Bezig met afhandelen van triggers voor mailcap (3.70+nmu1) ... Bezig met afhandelen van triggers voor man-db (2.11.2-2) ... dany@pindabook:~$sudo apt autoremove
Pakketlijsten worden ingelezen... Klaar Boom van vereisten wordt opgebouwd... Klaar De statusinformatie wordt gelezen... Klaar De volgende pakketten zullen VERWIJDERD worden: libout123-0 libsyn123-0 0 opgewaardeerd, 0 nieuw geïnstalleerd, 2 te verwijderen en 81 niet opgewaardeerd. Na deze bewerking zal er 301 kB schijfruimte vrijkomen. Wilt u doorgaan? [J/n] (Database wordt ingelezen ... 173896 bestanden en mappen momenteel geïnstalleerd.) libout123-0:amd64 (1.31.2-1) wordt verwijderd ... libsyn123-0:amd64 (1.31.2-1) wordt verwijderd ... Bezig met afhandelen van triggers voor libc-bin (2.36-9) ...
En het script en radio.log met:
dany@pindabook:~$ rm playRadio.sh radio.log