GNURadio-Installation unter Android:

Laut https://www.rtl-sdr.com/ ist es nun auch möglich, GNURadio unter Android zu Installieren.

Als Grundvoraussetzung sind jedoch Android API Level 28 (Ab Android  9 Pie) und 18 Gb für den Docker Container am PC sowie ein USB-OTG Kabel zum Anschluß von SDRs wie RTL 2832, HackRF One, Ettus B2XX u. a. erforderlich.  Der Entwickler Dr. Bastian Blössl, Secure Mobile Networking Lab (SEEMOO) an der TU Darmstadt,  hat seinen Code auf github.com veröffentlicht, dort befindet sich auch eine gute Beschreibung zur Installation.

Features:

  • Support der neuesten GNU Radio Version (v3.8).
  • Support der 32-bit und 64-bit ARM Architectur (z.b., armeabi-v7a und arm64-v8a).
  • Support der populären Hardware Frontends (RTL-SDR, HackRF, Ettus B2XX).
  • Support der Interfacing Android Hardware (Mikrofonic, Lautsprecher, Accelerometer, ...) durch gr-grand.
  • Kein rooten des Gerätes notwendig.
  • Das Signal Processing geschieht in der C++ Domain.
  • Verschiedene Möglichkeiten der Interaktion mit einem Flowgraph durch die Java-Domain (e.g., Control Port, PMTs, ZeroMQ, TCP/UDP).
  • Eine eigene GNU Radio "Double-mapped circular Buffer Implementation, die Androids shared Memory verwendet.
  • SIMD Beschleunigung durch VOLK, mit einer Profiling App für Android.
  • OpenCL Support durch gr-clenabled.
  • Android App als Benchmark der GNU Radio Runtime, VOLK, und OpenCL.
  • Beispiele für WLAN and FM.

Installation unter Ubuntu 18:

Der einfachste Weg ist, eine Entwicklungumgebung in Docker zu erstellen. Das Dockerfile dient auch der Dokumentation der nativen Entwicklungumgebung.

  • Docker installieren. Manche Installationen beschränken die maximale Containergröße, es werden ca. 18 Gb benötigt.

  • Checkout des Repository (um das Dockerfilezu bekommen).

git clone --depth=1 https://github.com/bastibl/gnuradio-android.git
cd gnuradio-android/docker
  • Den Container erzeugen. Dieses Script akzeptiert verschiedene Android Licenzen während des  Build Prozesses.
docker build -t gnuradio-android .
  • Docker Container ausführen. Das privileged Flag und der /dev/bus/usb Mount scheinen benötigt zu werden, um das Tablet/ Handy vom Container aus ansprechen zu können. Die DISPLAY Variable und der Xauthority Mount erlauben die GUI Programme im Kontainer zu starten.
docker run -it --privileged -v /dev/bus/usb:/dev/bus/usb --net=host --env="DISPLAY" --volume="$HOME/.Xauthority:/home/android/.Xauthority:rw" gnuradio-android
  • Starten des Android Studios.
~/src/android-studio/bin/studio.sh
  • Handy/Tablet in den Developer Modus (siehe Anleitungen) versetzen.

  • Das Mobiltelefon/Handy sollte jetzt im Android Studio angezeigt werden. Wenn nicht, sollte überprüft werden, ob der Host  adb als Auto-Start ausführt. In diesem Fall sollte der Prozess beendet werden, da das Android-Gerät nur zu einen adb-Server gleichzeitig verbunden sein kann.

  • Im Container befinden sich einige Beispielprojekte, z.B. ein FM Empfänger in ~/src/android-fm. Öffne das Projekt im Android Studio um die Toolchain zu testen.

  • Diese Anwendung ist ein Proof-Of-Concept und enthält keine umfangreiche Liste von USB Vendors und Product IDs für SDRs. Möglicherweise müssen deshalb einige Änderungen durchgeführt werden.

  • Die App erzeugen und am Android-Gerät installieren. Wenn das Gerät zum ersten Mal mit Android Studio verbunden wird, fragt es deshalb, ihm die Berechtigung zum Zugriff zu erteilen. 

  • Die App schließen, das Android-Gerät vom PC abstecken, OTG Mode am Android-Gerät einschalten, SDR mit OTG-Kabel mit dem Android-Gerät verbinden und die neue App starten.