Compleet op een Raspberry Pi geïnstalleerde RX320D server.

Gedurende de jaren dat ik mijn PCR100, RX320D, FT-817 en soms een extra audio stream op internet aanbood werd daarvoor een laptop gebruikt. Eerst een oude IBM Thinkpad 390 (P2/450MHz), daarna een Asus S1300 (P3/1000MHz) en beide draaiden op Windows. Het stroomverbruik was niet extreem hoog en zeker niet in vergelijk met een Desktop, maar ik had wel steeds 3 wensen. Eigenlijk wilde ik op Linux omschakelen en ook wilde ik geen draaiende (en dus geluidmakende, hoe zacht ook) delen meer in de server hebben en een zo laag mogelijk stroomverbruik.

Tja, en dan dient de Raspberry Pi zich aan. Een Linux systeem dat vergelijkbaar is met een P2, 300Mhz, maar qua architectuur en opbouw wel eens best goed zou kunnen performen als een RX320D server. Misschien dan wel niet 2 of 3 ontvangers en bijbehorende audiostream tegelijk, maar dat is toch niet meer van belang, want op VHF/UHF is weinig meer te beleven, de PCR100 is niet meer te gebruiken en mijn extra audiostreams zijn vaak niet 24/7 dus kunnen ook wel door een andere pc gestreamed worden.

Maar hoe ga je te werk, wat is er allemaal nodig? Na enig speurwerk met de bekende google machine blijkt er een lichtgewicht webserver te bestaan genaamd lighttpd. Hierop kun je tevens php5 en mysql installeren. Dus zo gezegd zo gedaan. Wat testen en experimenteren en vervolgens de code van onlinereceivers.net testen op de nieuwe RPi omgeving. Speciaal een domein aangevraagd http://pa3ang-rpi.nl en ja hoor het werkt. Goede performance en de RPi geeft geen krimp. Vervolgens icecast2 installeren. Ook geen probleem. Dat gaat allemaal lekker makkelijk met de sudo apt-get install commando’s overigens. Ik ga mooi niet vertellen hier hoe je alles moet doen. Google maar en als je een beetje gezond verstand hebt kom je al een heel eind. Alleen de moeilijke zaken zal ik in dit blog belichten.

Ondertussen ziet onlinereceivers.net (of eigenlijk pa3ang-rpi.nl) er zo uit:

Een lichtgewicht layout op een micro server. Zoals je ziet een nieuwe player. Dit is een Flash player met minder dan 2 seconden vertraging. Hij werkt vooralsnog niet op Internet Explorer, maar tja wie gebruikt die Microsoft meuk nog. Op FF en Chrome en ja ja op mijn Samsung Tab2 10.1 Android werkt het voortreffelijk. Dat laatste was een vereiste en daarom is de nieuwe layout ook passend op het Samsung scherm en heeft de pagina weinig overhead (lees pictures en java scripts) voor mobiel gebruik. Ook is de shoutbox groter geworden. Er komt nog wat betere navigatie, want je kunt ook naar de RX320D ontvanger in New York en naar een pagina met vaste repeater streams surfen / luisteren.

Okay terug naar de RPi installatie.

De webserver werkt, icecast2 was een ‘piece of cake’ en voor onderhoud van de mysql database heb ik phpmyadmin adminer geïnstalleerd. Verder webalizer voor de site statistiek en nog wat Linux tooltjes (o.a. chkconfig). Maar nu moet ik nog een goede audio encoder hebben die werkt met een USB soundkaart en de RX320D controller die op java draait en praat met een USB<>RS232 convertor.

Allereerst java….. even zoeken om vervolgens gewoon met apt-get install de laatste java-7 versie te installeren. Ik heb een 16GB SD card en die heb je ook wel nodig met al dat ‘geïnstalleer’. Ergens halverwege zul je met raspi-config het commando expand rootfs moeten uitvoeren om weer voldoende ruimte te hebben voor alle software. Vervolgens met een beetje hulp van zoonlief de RX320D controllersoftware uitgepakt en tenslotte, om via de USB<>RS232 poort te communiceren, de library libRXTX-java geïnstalleerd. Hierna kon ik met de ontvanger praten en zoals ik dat vaker doe, weer live testen uitgevoerd met gebruikers. Tot nu gaat het goed. De laatste hobbel is de stream encoder.

Ik had namelijk al wat getest met Darkice. Dit is een Linux programma dat mp3 gecodeerde live audio kan streamen. Hiervoor moet je wel een lame library hebben. Dus weer googlen en ook dat varkentje gewassen. Echter, de RPi gaat door de knieën. Te zwaar?  De CPU loopt naar 98% en niks gaat meer. Echter… lang verhaal kort…. ik heb de configuratie van Darkice als volgt:

[general]
duration=0
bufferSecs=10
reconnect=yes

[input]
device=plughw:1,0
sampleRate=11025
bitsPerSample=16
channel=1

[icecast2-0]
format=mp3
bitrateMode=cbr
bitrate=16
#quality=0.4
server=localhost
mountPoint=rx320
port=8000
name=RX320D Zwolle – Netherlands
description=Tunable HF receiver
url=http://pa3ang-rpi.nl/onlinereceivers/rx320a.php
genre=Talk
public=yes

Hiermee heb je een goed verstaanbare stream waarbij de cpu belasting slecht 10% is! O ja… je moet misschien nog een alsa-mixer installeren om de USB Audiokaart te kunnen beïnvloeden. Hier een top beeldje van de belasting.

Kortom het is gelukt. Een Raspberry Pi, type B + gevoede USB hub + USB<>RS232 + USB Audio. De RPi wordt overigens ook gevoed vanuit de USB hub. Nog een paar foto’s van onder de tafel waar de opstelling te vinden is.

Wel een beetje rommelig, maar de verschillende onderdelen zijn goed te zien. De RPi, USB hub met USB audio en RS232. Op de andere foto zie je de RX320 met bovenop een coax splitter om de WL1030 loop antenne ook op mijn eigen set (Rx antenne ingang) te gebruiken en het kastje op de plank is de voeding voor de WL1030 loop.

Ondertussen (mei 2013) de boel een beetje gefatsoeneerd. Alleen op 20 meter (en hoog vermogen) gaat de RX232<>USB convertor nog plat.

Ik ben we wel blij mee. Geen tikkende harddisk meer en slechts 4 Watt energieverbruik. Maximaal gebruik van de nieuwe ARM processor technologie en ook nog eens  ecologisch verantwoord. Ik ga er denk ik een groene stikker op plakken.

UPDATE (30 maart 2013)

Tom, mijn in Linux denkende zoon, heeft mooi ingespeeld op de ‘voorkeur programmeertaal’ voor de RPi, namelijk Python en heeft de RX320 controller / server herschreven. Hierdoor is de cpu belasting teruggegaan van 12% naar minder dan 2%. Vermoedelijk omdat de RXTX-library nogal belastend de RS232 poort afvraagt. Hij heeft er een eigen blog over geschreven dat je hier kunt lezen.  Het top plaatje ziet er nu zo uit.

Zo verbruiken we nog minder stroom en wordt de ARM processor ook minder warm, wat ook weer voordeel biedt voor de levensduur etc. etc.