====== Der Lima-SDR unter Linux ====== ===== Vorüberlegungen zur Hard- bzw. Software ===== ==== Vorüberlegungen Software: ==== Die auf dieser Seite vorgestellten Anleitungen habe ich unter der Distribution sidux (jetzt: siduction) und LinuxMint (Debian Edition), beide in 64bit, getestet. Eventuell müssen für andere Distributionen, insbesondere solche, die einen anderen Paketmanager benutzen, Anpassungen vorgenommen werden. Der größte Teil sollte aber 1:1 übernommen werden können. Sofern nicht anders angegeben, erfolgen alle Befehle als normaler Benutzer. Für Fragen, Anregungen, Tipps, Ergänzungen, Erfahrungen, etc. bin ich jederzeit offen. ==== Vorüberlegungen Hardware: ==== Eine zentrale Rolle für die Qualität und damit auch dem Spass an einem Software Defined Radio (SDR) ist die Auswahl der richtigen Soundkarte. - Als Erstes ist es wichtig zu wissen, welche maximale Sampling-Rate die Soundkarte zur Verfügung stellt. Moderne Soundkarten liegen z. Zt. bei 96 kBit, ältere Soundkarten (oder festverbaute, billige Soundkarten) liegen bei 48 kHz oder 44,1 kHz. Die besten Erfahrungen habe ich mit 96 kBit Soundkarten gemacht, da hier der Empfangsbereich am größten ist (d. h. man hat immer um die Oszillatorfrequenz einen Empfangsbereich, der so groß ist wie die Sampling-Rate der Soundkarte). - Das zweite Auswahlkriterium ist das Eigenrauschen der Soundkarte, d. h. wie viel Signal produziert die Karte, ohne dass ein Signal anliegt. Hier ist die Regel: Je kleiner das Eigenrauschen, desto besser können die Signale gelesen und verarbeitet werden. Leider zeigt sich das Eigenrauschen meist erst im finalen Betrieb. Grundsätzlich sollten aber Soundkarten, die zur Signalverarbeitung von z. B. Musik genutzt werden, auch ein geringes Eigenrauschen mitbringen. - Das dritte Auswahlkriterium einer Soundkarte ist unter Linux sicherlich auch die Integration in das System. Die meisten Soundkarten sind unkritisch, es gibt mittlerweile auch gute USB-Soundkarten, welche ohne eine zusätzliche Treiberinstallation auskommen. - Das vierte Auswahlkriterium ist eine unbedingte Voraussetzung für den erfolgreichen SDR-Betrieb: Die Soundkarte muß einen Stereo-Eingang zur Verfügung stellen, da ansonsten die beiden vom L-SDR zur Weiterverarbeitung bereitgestellten, sogenannten I-Q-Signale nicht richtig verarbeitet werden können. Das resultiert dann im Empfangsspektrum darin, dass nur noch die Hälfte der Sampling-Rate als Empfangsfenster zur Verfügung steht. Hier sollte man besonders bei tragbaren Computern wie Laptops / Netbooks etc. darauf achten, da hier meistens nur eine (Mono)Mikrofon-Buchse zur Verfügung steht. Abhilfe schafft hier z. B. die unter Punkt 3 genannte USB-Soundkarte. Die meisten der hier angestellten Vorüberlegungen sind übrigens Betriebssystem-unabhängig und gelten sowohl für Linux als auch für Windows :-) ===== Verwendete Programme ===== Doch kommen wir jetzt zu den unter Linux verwendeten Programmen. Das sind (zur Zeit) 3 Programme: * Zur Ansteuerung des Oszillators SI570 verwende ich das Programm ''usbsoftrock''. * Darauf aufbauend habe ich ein Script entwickelt, mit welchem man die Funktionalität des L-SDR überprüfen kann. * Schließlich noch das Programm ''linrad'', welches das eigentliche Empfangsprogramm für den Betrieb des L-SDR darstellt. Bevor es jetzt aber losgeht, hier noch die Ausgabe des Befehls ''dmesg'', nachdem der Anschluß über USB zum L-SDR hergestellt und die Platine mit Strom versorgt wurde. Die Stromversorgung für die gesamte Platine im Empfangsmodus ohne aktivierten Vorverstärker liegt zwischen 170 und 230 mA. [ 4348.500339] usb 1-3.1: new low-speed USB device number 13 using ehci_hcd [ 4348.603579] usb 1-3.1: New USB device found, idVendor=16c0, idProduct=05dc [ 4348.603586] usb 1-3.1: New USB device strings: Mfr=1, Product=2, SerialNumber=3 [ 4348.603590] usb 1-3.1: Product: DG8SAQ-I2C [ 4348.603594] usb 1-3.1: Manufacturer: www.obdev.at [ 4348.603597] usb 1-3.1: SerialNumber: Beta1.1 ===== Das Oszillator-Steuerprogramm usbsoftrock ===== Zur erfolgreichen Installation müssen (als root oder mit sudo) erst einige Pakete geladen werden (sofern noch nicht vorhanden): ''apt-get install gcc git automake libusb-dev libusb-1.0-0 libusb-1.0-0-dev libncurses5 libncurses5-dev'' Danach sollte man sich (am besten in seinem Homeverzeichnis) ein neues Verzeichnis anlegen: ''mkdir sdr'' Jetzt kann man sich die Quellen von usbsoftrock mittels git auf den Rechner kopieren: cd ~/sdr git clone https://github.com/8cH9azbsFifZ/usbsoftrock.git Jetzt wechselt man in das Verzeichnis und muß dort noch Ausführungsrechte auf ein Installationsscript geben: cd ~/sdr/usbsoftrock/usbsoftrock-1.0.2 chmod u+x autogen.sh Das eigentliche Erstellen des Programms erfolgt dann wie folgt: ./autogen make und als root bzw. mit sudo: ''make install'' Bevor jetzt das Programm getestet werden kann, muß man noch für die erforderlichen Rechte am USB-Gerät sorgen, da ja jeder Benutzer das Gerät auch steuern können sollte. Hierfür wird als erstes der eigene Benutzer mit Hilfe von root oder sudo der Gruppe plugdev hinzugefügt (der Benutzer muss natürlich angepasst werden): ''adduser rainer plugdev'' Dann muß man die udev-Regeln als root oder mit sudo erweitern, dass unser Gerät auch nach dem Anstecken in die Gruppe plugdev wandert. Dazu wird in dem Verzeichnis /etc/udev/rules.d die Datei 99-si570.rules mit folgendem Inhalt erstellt: ''SUBSYSTEM=="usb", ATTR{idVendor}=="16c0", ATTR{idProduct}=="05dc", MODE="0660", GROUP="plugdev"'' und danach der udev-Daemon neu gestartet (als root bzw. mit sudo): ''/etc/init.d/udev restart'' Letztendlich muß man sich jetzt noch einmal ab- und wieder anmelden, damit die neue Gruppenzugehörigkeit vom System auch erkannt wird. Ist man soweit gekommen, kann man das Programm endlich einem ersten Test unterziehen: usbsoftrock status liefert dann folgende Rückmeldung: Version : 14.0 USB SerialID: Beta1.1 Der Aufruf ''usbsoftrock --help'' gibt weitere Parameter und Einstellmöglichkeiten des Programms aus. ===== Testscript von DL5PD ===== Aufbauend auf das Steuerprogramm habe ich ein Script geschrieben, welches die verschiedenen Prüfschritte gemäß der Aufbauanleitung des L-SDR durchläuft. Das Script kann unter folgendem Link heruntergeladen werden, die aktuelle Version heißt: 2012-06-03. http://www.mydarc.de/dl5pd/progs/lsdr-test.sh Hier muß für eine erfolgreiche Ausführung die Datei ausführbar gemacht werden: ''chmod ug+x lsdr-test.sh'' Angenommen, die Datei liegt im Heimatverzeichnis, so kann sie nun mit folgendem Befehl aufgerufen werden: ''~/lsdr-test.sh'' Durch Umbaumaßnahmen auf den Seiten ist das Testscript zur Zeit nicht auffindbar. Sobald es wieder auftaucht, wird es an dieser Stelle wieder eine Beschreibung und den Link dazu geben. ===== Linrad - Die Empfangssoftware mit dem L-SDR ===== Hier kommt zuerst einmal die Beschreibung, wie man linrad unter Linux kompiliert und es lauffähig bekommt unter seinem Benutzerkonto. Als erstes (zumindest war das bei mir so) müssen mal wieder als root zusätzliche Pakete nachgeladen werden mit dem Befehl: ''apt-get install nasm libasound2-dev portaudio19-dev libx11-dev'' Danach lädt man sich das aktuelle gepackte Archiv von linrad von Leif's Homepage, am besten in sein Homeverzeichnis. Jetzt geht es an das Entpacken, dies geschieht mit dem Befehl ''tar xvfj lirxx-yy.tbz'', wobei xx-yy für die jeweilige Linrad-Version steht (z. B. 03-40). Nun taucht man mit ''cd linrad-xx.yy'' in das neu erstellte Verzeichnis ein. Also root führt man anschließend den Befehl ''./configure'' aus, an dessen Ende zusammenfassende Informationen stehen sollten, ob alles erfolgreich konfiguriert wurde (für die anschließende Kompilation). Jetzt kann man als normaler Benutzer den Befehl ''make'' aufrufen, wobei hier verschiedene Ziele angegeben werden können: * make xlinrad erstellt das Programm als 32bit Version für die X-Oberfläche * make xlinrad64 erstellt das Programm als 64bit Version für die X-Oberfläche * make linrad erstellt das Programm ohne X-Oberfläche mit den svgalib-Bibliotheken * make linrad64 erstellt das Programm ohne X-Oberfläche mit den svgalib-Bibliotheken ==== verschiedene Linrads miteinander vernetzen ==== Eine tolle Eigenschaft der Software Linrad ist es, dass man Linrads auf verschiedenen Computern, sofern sie über ein Netzwerk miteinander verbunden sind, miteinander koppeln kann. So kann man in dem Empfangsspektrum, welches der Mastercomputer (der an den SDR angeschlossen ist), sich mit beliebig vielen anderen Linrad-Installationenn auf anderen Computern verbinden und jeder kann unabhängig vom anderen arbeiten. Während der erste z. B. einem SSB-QSO lauscht, kann der zweite einer Morsetelegrafie-Aussendung lauschen, während der dritte ein Fernschreib-QSO dekodiert. Eine Warnung vorab: Durch die Aussendung im Netzwerk wird ein konstanter Datenstrom von ca. 3 MBit/s im Netzwerk erzeugt. Das sollte bei privaten Netzwerken keine große Rolle spielen, in größeren Netzwerken sollte man jedoch evtl. Vorsichtsmaßnahmen treffen, um den Stream nicht im gesamten Netz präsent zu haben. Doch jetzt zur Einrichtung der Netzwerkfähigkeit: Linrad nimmt standardmäßig die Multicast-Adresse 239.255.0.0, d. h. man muß als erstes eine Route auf seine Netzwerkkarte legen, damit diese überhaupt auf der Adresse sendet bzw. empfängt. Entweder nimmt man sich ein grafisches Tool wie den Network-Manager, wicd oder Ähnliches, man kann die Route aber auch in der Konsole eintragen, und zwar mit dem ip Befehl (als root): ip r a 239.255.0.0 dev eth0 Dies erzeugt die erforderliche Route auf dem Netzwerkdevice eth0 (evtl. ist dieses je nach Rechnerauslegung anzupassen). ACHTUNG: Die so erzeugte Route ist nicht permanent und wird beim nächsten Start nicht mehr vorhanden sein! Für eine dauernde Aktivierung könnte sie z. B. in die Datei ''/etc/rc.local'' eingetragen werden. Die Route muß auf sämtlichen Clients eingerichtet werden. Nun gilt es noch, die Software selbst anzupassen. Hierfür muß man sich in das Netzwerk-Setup des Programms begeben. Dazu ist es vorab erforderlich, dass sich das Programm mindestens im normal mode befindet. Das kann man überprüfen, in dem man im Hauptmenü die Taste S drückt, dann kommt man in die Globalen Parameter und kann als erstes den Modus auswählen (Newcomer, Normal, Expert). Hat man den Normal Mode eingestellt, kann man im Hauptmenü mit der Taste N in die Netzwerk Einstellungen gelangen. Der Computer mit der Empfangshardware (in unserem Fall, dem L-SDR, im Nachfolgenden Master genannt), sollte die Option 4 (Send raw data in 16 bit format) aktivieren. Ist sie einmal aktiviert, erscheint sie gelb unterlegt. Die Portangaben sowie die IP-Adresse brauchen nicht verändert werden. Die Aussendung der Pakete wird im Hauptmenü des Programms über die Taste T (Toggle Network output) aktiviert bzw. deaktiviert. Ist sie aktiviert, erscheint links oben im Hauptmenü in rot der Hinweis NETSEND. Auf den Clients (da wo Linrad ohne Empfangshardware laufen soll) ist entsprechend die Option 12 (RX input from network) aktiviert werden, damit der Empfang über das Netzwerk gewährleistet ist. Funktioniert die Netzwerkanbindung nicht, können Programme wie z. B. wireshark evtl. Hinweise zur Lösung bereithalten. Bei diversen Tests habe ich festgestellt, dass die Frequenzumschaltung, solange die Betriebsart nicht geändert wird, an den Clients automatisch angepasst wird, ohne dass der Client etwas machen muß. Ändert sich jedoch die Betriebsart, müssen auch die Clients ins Hauptmenü zurück und die Betriebsart anpassen, danach funktioniert es wieder reibungslos. Der Master kann in seinem Spektrum durch eine rote Linie sehen, wenn ein Client die Frequenz wechselt. Nach einigen Sekunden verschwindet diese Linie aber wieder. ===== Digitaler Radioempfang mit der Software DREAM ===== Eine schöne Spielart des Empfangs ist das sogenannte DRM (Digital Radio Mondiale). Der L-SDR kann auch unter Linux für den Empfang von digitalen Radiostationen genutzt werden. Im Folgenden möchte ich die Einrichtung der Software DREAM vorstellen, damit anderen Interessenten mein Anfangs-Frust erspart wird: Als Erstes sollte man darauf achten, dass der SDR auf den Teiler 4 gejumpert ist (JP1 auf Position 1). Leider habe ich bisher noch keine Möglichkeit gefunden, der DREAM-Software andere Teilungsfaktoren mitzugeben, eventuell müssen hier mal die Entwickler kontaktiert werden. Glücklicherweise gibt es (zumindest für debian-basierte Distributionen) vorkompilierte Pakete dieser Software, sowohl für die i386 als auch für die amd64 Architektur. Diese findet man auf der Projekthomepage unter [[http://drm.sourceforge.net]]. Die von mir getestete und im Einsatz befindliche Version hat die Nummer 1.14. Folgende Pakete müssen vor der Installation noch ggf. nachinstalliert werden (als root oder mittels sudo): apt-get install fftw2 libhamlib2 libqt3-mt Ebenfalls muß das Paket libqwt4c2 nachinstalliert werden. Da dieses jedoch aus der Testing- Distribution herausgefallen ist, mußte ich es von Hand über die Debian-Seite www.debian.de aus den Stable-Quellen nachinstallieren. Da es aber keine weiteren Abhängigkeiten gab, war das kein Problem. Der (root) Befehl dpkg -i libqwt4c2_4.2.0-6_amd64.deb installierte das Paket reibungslos. Danach kann dann das eigentliche Programm genau so (als root) installiert werden: dpkg -i drm_1.14-1_amd64.deb Je nach Distribution kann es sein, dass noch die Audio-Dekodierung mit installiert werden muss, hier verweise ich jedoch auf die Homepage von DREAM, in der eine sehr gute Anleitung auch für die manuelle Kompilierung der Bibliotheken zur Verfügung steht. Unter [[http://sourceforge.net/apps/mediawiki/drm/index.php?title=Instructions_for_building_the_AAC_decoder | diesem Link]] befindet sich die Dokumentation. Ist man schließlich bis hierhin vorgedrungen, gilt es noch, die Software auf den L-SDR anzupassen, damit auch die Frequenzen via Software eingestellt werden können. Hierzu ist das Programm folgendermaßen zu starten: dream -c 6 Der Parameter bewirkt, dass die Software auf das direkte I/Q-Signal, welches vom L-SDR in die Soundkarte gespeist wird, reagiert. Ansonsten würden nur reine NF-Signale verarbeitet. Jetzt sollte noch im Menü View - Stations Dialog - Remote der Softrock SI570 AVR-USB im Untermenü Other - Elektor ausgewählt werden. Ist das Programm über die Kommandozeile gestartet worden, sollte man folgende Meldungen beobachten können: find_and_open_device: looking for device 16c0:05dc... 1d6b:0001, 04f3:00a3, 1d6b:0001, 045e:00db, 1d6b:0001, 055f:021d, 1d6b:0001, 16c0:05dc, vendor >www.obdev.at< product >DG8SAQ-I2C< -> found si570xxxusb_open called si570xxxusb_open: using Xtall at 114.285 MHz Bleibt schließlich noch die Stationsliste für DRM zu aktualisieren und die gewünschte Station auszuwählen. Mit meiner G5RV-Antenne konnte ich bisher lediglich 3 Radio-Stationen empfangen, wobei einschlägige Foren auch andere Antennenarten für DRM empfehlen. Bitte beachten: In der DREAM-Software kann man unter dem Menü View - Evaluation Dialog das Eingangssignal beobachten und die verschiedenen Stufen, die DREAM benötigt, um einen Empfang herstellen zu können. Hier ist es wichtig, dass alle 6 Punkte grün leuchten, ansonsten gibt es sehr wahrscheinlich gar keinen, und wenn doch, nur abgehackten Empfang. Ich wünsche viel Spaß beim Ausprobieren und einen ungetrübten digitalen Radioempfang.