GNU Radio for Android Thomas W. Rondeau (tom@trondeau.com) 2015-08-26
Android Operating system and development environment for embedded systems. Mainly for phones, tables, and other small form factor devices. Focus on user inteface: input and graphics. Open source and heavily used. The Android robot is reproduced or modied from work created and shared by Google and used according to terms described in the Creative Commons 3.0 Attribution License. Thomas W. Rondeau (tom@trondeau.com) GNU Radio for Android 2 / 15
Why Android is Interesting Interesting devices and form factors. And rapidly improving processors memory screens sensors Cost reduction (2012: Samsung S3, 1.4 GHz 4-core Exynos 4412, 32-bit) (2015: One Plus Two, 1.8 GHz 8-core Snapdragon 810, 64-bit) Thomas W. Rondeau (tom@trondeau.com) GNU Radio for Android 3 / 15
Why Android is Interesting Cool ideas in user interface and display Gestures and multi-touch High-resolution screens Possibly new tools (VR/AR) Android Wear? Spectrum dispaly on my watch? Thomas W. Rondeau (tom@trondeau.com) GNU Radio for Android 4 / 15
Why Android is Interesting Huge development community AnDevCon Droidcon Thomas W. Rondeau (tom@trondeau.com) GNU Radio for Android 5 / 15
Building GNU Radio for Android GNU Radio is supporting: Major dependencies: Boost, FFTW, UHD, OSMOSDR, Thrift, ZMQ GNU Radio itself and gr-osmosdr Hardware: RTL-SDR, UHD (bus-powered),?hackrf? Walkthrough for using Android Studio to build an App Android.mk for JNI support gr-grand Instructions: gnuradio.org/redmine/projects/gnuradio/wiki/android Thomas W. Rondeau (tom@trondeau.com) GNU Radio for Android 6 / 15
GNU Radio Support Main dependencies to get most of the GNU Radio components to run. VOLK, PMTs, Runtime, Blocks, Analog, Digital, Filters, FFT, Channels, UHD Radio hardware USB-based USRPs (B200 and B210 tested) RTL-SDRs HackRF/BladeRF/others should be trivial Requires OTG cable Thomas W. Rondeau (tom@trondeau.com) GNU Radio for Android 7 / 15
GRAnd: gr-grand project Hardware and I/O devices specic to Android Sensors accelerometer light sensor Easy to extend through sensor_base class Audio via OpenSL-ES opensl_sink opensl_source Shared memory sinks to move data to Java very crude; moving to better methods Thomas W. Rondeau (tom@trondeau.com) GNU Radio for Android 8 / 15
Layered Approach Thomas W. Rondeau (tom@trondeau.com) GNU Radio for Android 9 / 15
Layered Approach User interface, controls, display in Java Android App GNU Radio owgraph in C++ Communication through well-dened interfaces Java Native Interface (JNI) for only the stu common to all apps ControlPort to manage state of each block in the radio ZMQ using ProtoBufs to move large data between domains. Intention is to make the radio owgraph usable in any embedded platform. Thomas W. Rondeau (tom@trondeau.com) GNU Radio for Android 10 / 15
Minimize JNI Only required interfaces between layers. Start and Stop the top block. Get ControlPort connection info (e.g., port number). A few extras for hardware support. All other C&C through ControlPort Data streaming using ZMQ Thomas W. Rondeau (tom@trondeau.com) GNU Radio for Android 11 / 15
ControlPort Support Provided instructions to build in the ControlPort server to GNU Radio. Clients can communicate from the App or a desktop application. GrControlPort Android library for building Java-based clients. GrPerfMon app using GrControlPort. My trondeau page on Github: GrControlPort GrPerfMon Thomas W. Rondeau (tom@trondeau.com) GNU Radio for Android 12 / 15
ControlPort Sidebar Thomas W. Rondeau (tom@trondeau.com) GNU Radio for Android 13 / 15
GrPerfMon: Analyzing a desktop app Flowgraph running on desktop Performance Monitor on Nexus 7 Thomas W. Rondeau (tom@trondeau.com) GNU Radio for Android 14 / 15
T HE FREE & OPEN SOFT WA RE RA DIO EC OSY ST EM FM Example Or: How I spend my time in hotel rooms... Thomas W. Rondeau (tom@trondeau.com) GNU Radio for Android 15 / 15