Unboxing my HackRF One

Reading “Getting Started with the HackRF One on Ubuntu 14.04″:

https://mborgerson.com/getting-started-with-the-hackrf-one-on-ubuntu-14-04/

Starting from freshly installed Ubuntu 14.04 LTS 64-bit, something missing in the above blog (explained below) is this:

sudo apt-get install librtlsdr-dev

Next is to download all the three git tree.

While doing the cmake of “gr-osmosdr”:

cmake ../

CMake Error at CMakeLists.txt:151 (find_package):
Could not find a configuration file for package “Gnuradio” that is
compatible with requested version “3.7.3”.

The following configuration files were considered but not accepted:

/usr/lib/x86_64-linux-gnu/

cmake/gnuradio/GnuradioConfig.cmake, version: 3.7.2.1

– Configuring incomplete, errors occurred!

So no choice but to use the original webpage’s changeset version (notice there is a one digit difference between mine and his ….. guess it is an error in his webpage).

For gr-osmosdr, to get the older version:

git checkout  58d95b51

And then continue with cmake/make/make install etc.

Got the following errors:

–   package ‘gnuradio-fcdproplus’ not found
— gnuradio-fcdproplus not found.
— Could NOT find GNURADIO_FCDPP (missing:  GNURADIO_FCDPP_LIBRARIES GNURADIO_FCDPP_INCLUDE_DIRS)
— checking for module ‘libosmosdr’
—   package ‘libosmosdr’ not found
— libosmosdr not found.
— checking for module ‘librtlsdr’
—   package ‘librtlsdr’ not found
— librtlsdr not found.
— checking for module ‘libmirisdr’
—   package ‘libmirisdr’ not found
— libmirisdr not found.
— checking for module ‘libhackrf’
—   found libhackrf, version 0.3
— Found LIBHACKRF: /usr/local/lib/libhackrf.so
— checking for module ‘libairspy’
—   package ‘libairspy’ not found
— Could NOT find LIBAIRSPY (missing:  LIBAIRSPY_LIBRARIES LIBAIRSPY_INCLUDE_DIRS)
— checking for module ‘libbladeRF’
—   package ‘libbladeRF’ not found
— libbladeRF not found.
— Could NOT find Doxygen (missing:  DOXYGEN_EXECUTABLE)
— Found PythonLibs: /usr/lib/x86_64-linux-gnu/libpython2.7.so (found suitable version “2.7.6”, minimum required is “2”)

I ignored all the errors, except for one: librtlsdr, which I have to apt-get thus:

sudo apt-get install librtlsdr-dev

After the gqrx download and qmake, everything got running, on the latest changeset (today is 21 Dec 2014).

Inline image 1
There is another way for Ubuntu/Fedora as well:
And run the script.   It will build all the necessary binaries – completed successfully for both Fedora 20 and Ubuntu 14.04.

Essentially it will install every “hackrf_xxxxx” command, but not gqrx itself.   So using “hackrf_transfer” to capture the radio wave, and then followed by installing a third party tool “Baudline” it is possible to render the radio waves as well.   For details please refer to:

http://blog.kismetwireless.net/2013/08/playing-with-hackrf-keyfobs.html

blog.kismetwireless.net/2013/08/hackrf-pt-2-gnuradio-companion-and.html

I did also tried direct “apt-get” for the following:

gqrx-sdr – Software defined radio receiver
gr-osmosdr – Gnuradio blocks from the OsmoSDR project
hackrf – Software defined radio peripheral
libhackrf-dev – Software defined radio peripheral
libhackrf0 – Software defined radio peripheral

For gqrx, after apt-get, I got the following errors:

gqrx: symbol lookup error:

Many places recorded the same errors:

https://lists.debian.org/debian-hams/2014/10/msg00013.html

Upgrading using RPi:

Similarly for Fedora 20, “sudo yum install gqrx”  will install all the dependencies for gqrx, (essentially gr-osmosdr, and rtl-sdr, and gnuradio), but executing “gqrx” does not bring up and QT screen at all.

Docker vs VM vs Vagrant vs LXC

http://www.programering.com/a/MDMzAjMwATk.html (see diagram below)

http://stackoverflow.com/questions/20578039/difference-between-kvm-and-lxc

http://www.slideshare.net/miurahr/introduction-to-vagrantdockernttdata

http://en.community.dell.com/techcenter/os-applications/w/wiki/6950.lxc-containers-in-ubuntu-server-14-04-lts

http://www.slideshare.net/sverma/juju-lxc-openstack-fun-with-private-clouds

Different forms of hypervisor:

http://netmgt.blogspot.sg/2012/01/virtualizations-lpars-ldoms-and-xen.html

Glue for all:

http://www.linux-kvm.org/wiki/images/3/3b/2012-forum-libvirt-sandbox-kvm.pdf

ZnJvbT1vc2NoaW5hJnVybD1uQm5hdWNETXprVE01OFZPQk4zUWZOak00QWpOeDhTT3hJVE12TVRNd0l6TGxOV1l3TjNMelJXWXZ4R2MxOUNkbDVtTGg1V2FvTjJjdjV5WXBSWFkwTjNMdm9EYzBSSGE.jpg

OpenCL internals

https://www.khronos.org/opencl/

https://www.khronos.org/registry/cl/sdk/2.0/docs/OpenCL-2.0-refcard.pdf

https://www.khronos.org/registry/cl/specs/opencl-2.0-openclc.pdf

https://www.khronos.org/files/opencl-1-2-quick-reference-card.pdf

https://www.khronos.org/registry/cl/specs/opencl-2.0.pdf

http://www.slideshare.net/Khronos_Group/opencl-20-reference-card

https://www.khronos.org/registry/cl/

https://www.khronos.org/registry/cl/sdk/2.0/docs/man/xhtml/

http://stackoverflow.com/questions/11029363/passing-array-to-function-parameter-in-opencl

https://developer.apple.com/library/mac/documentation/Performance/Conceptual/OpenCL_MacProgGuide/XCodeHelloWorld/XCodeHelloWorld.html#//apple_ref/doc/uid/TP40008312-CH10-SW7

https://developer.apple.com/library/mac/documentation/Performance/Conceptual/OpenCL_MacProgGuide/XCodeHelloWorld/XCodeHelloWorld.html#//apple_ref/doc/uid/TP40008312-CH10-SW2

https://www.khronos.org/registry/cl/sdk/2.0/docs/man/xhtml/

Learning all about Gallium3D

http://www.freedesktop.org/wiki/Software/gallium/

http://cgit.freedesktop.org/piglit

http://people.freedesktop.org/~marcheu/fosdem09-g3dllvm.pdf

http://www.toulibre.org/pub/2012-11-24-capitole-du-libre/slides/peres-gpu-introduction.pdf

https://tspace.library.utoronto.ca/bitstream/1807/43248/1/Miretsky_Evgeny_201311_MASc_thesis.pdf

http://en.wikipedia.org/wiki/Gallium_Compute_Project

http://www.slideshare.net/ennael/kr2014-nouveau

http://www.freedesktop.org/wiki/Software/gallium/GAOnlineWorkshop/

Good overview:

www.freedesktop.org/software/gallium/GAOnlineWorkshop/Gallium3DOverview.mp4

http://www.freedesktop.org/software/gallium/GAOnlineWorkshop/Gallium3DComponents.pdf

http://tthtlc.wordpress.com/2014/10/13/learning-about-linux-graphics-stack/

http://www.freedesktop.org/wiki/Software/gallium/

http://www.phoronix.com/scan.php?page=article&item=amd_r300g_slow&num=2

http://gallium.readthedocs.org/en/latest/
====>https://media.readthedocs.org/pdf/gallium/latest/gallium.pdf

http://en.wikipedia.org/wiki/Free_and_open-source_graphics_device_driver

http://upload.wikimedia.org/wikipedia/commons/thumb/f/fe/Gallium3D_example_matrix.svg/220px-Gallium3D_example_matrix.svg.png
https://github.com/curro/llvm/commit/a1aad41463c36220f2c5b03645843f39e6bf1b9d

http://www.phoronix.com/scan.php?page=article&item=amd_r300g_slow&num=2

OpenGL/OpenCL/GPU internals

http://en.wikipedia.org/wiki/Free_and_open-source_graphics_device_driver

2000px-Linux_kernel_and_OpenGL_video_games.svg.png

http://stackoverflow.com/questions/7907510/opengl-vs-opencl-which-to-choose-and-why

2000px-Gallium3D_vs_DRI_graphics_driver_model.svg.png

TGSI — Gallium 0.4 documentation

http://gallium.readthedocs.org/en/latest/tgsi.html

http://www.freedesktop.org/wiki/Software/gallium/

http://stackoverflow.com/questions/15868498/what-is-the-difference-between-opencl-and-opengls-compute-shader

http://www.slideshare.net/ennael/kr2014-nouveau

kernel-recipes-2014-the-linux-graphics-stack-and-nouveau-driver-7-638.jpg?cb=1411929869
kernel-recipes-2014-the-linux-graphics-stack-and-nouveau-driver-4-638.jpg?cb=1411929869

Clang/LLVM to compile Linux kernel

What are the benefits of LLVM?

http://stackoverflow.com/questions/172863/what-are-the-greatest-benefits-of-llvm

Why is the LLVM important:

http://en.wikipedia.org/wiki/Static_single_assignment_form

http://www.cs.utexas.edu/users/mckinley/380C/lecs/07.pdf

Introduction:

http://www.cs.sfu.ca/~wsumner/teaching/LLVMIntro.pdf

Its basic construct:

http://llvm.org/docs/LangRef.html

As started by Apple using LLVM to compile its OS, now the movement is spreading to Linux kernel as well.

https://www.youtube.com/watch?v=YffCWR3nqP4 (Reinventing the compiler – Clang)

Current status for Linux kernel:

http://llvm.linuxfoundation.org/index.php/Main_Page#Why_use_Clang.2FLLVM_with_the_Linux_Kernel.3F

Create a working compiler with the LLVM framework, Part 1

http://www.ibm.com/developerworks/library/os-createcompilerllvm1/index.html

http://llvm.org/docs/tutorial/index.html

http://llvm.linuxfoundation.org/index.php/Main_Page

http://www.phoronix.com/scan.php?page=news_item&px=MTY2MjY

http://llvm.org/devmtg/2014-02/slides/moller-llvmlinux.pdf

http://llvm.org/devmtg/2012-04-12/Slides/Mark_Charlebois.pdf

http://clang.llvm.org/features.html

LLVM and its varied libraries (reusable by all other languages – not just Clang, so create ONCE, reused many times):

http://llvm.org/releases/2.7/docs/UsingLibraries.html

LLVM LInk Time Optimization:

http://www.slideshare.net/vivekpansara/llvm-seminar

http://llvm.org/docs/Passes.html

Good thing is: these LLVM tools are reusable on binary output generated from different frontend (eg, Ruby, ActionScript etc) and not just Clang.

Learning about Linux graphics stack

As covered before: http://tthtlc.wordpress.com/2013/09/24/linux-graphics-gpu-x-wayland-architecture/

and this: http://tthtlc.wordpress.com/2014/01/17/how-linux-video-worked/ here are more recent articles i have read:

http://streamcomputing.eu/knowledge/sdks/vivante-gpu/ http://blog.mecheye.net/2012/06/the-linux-graphics-stack/

http://blogs.igalia.com/itoral/2014/07/29/a-brief-introduction-to-the-linux-graphics-stack/

http://magcius.github.io/xplain/article/ http://lwn.net/Articles/300066/ http://lwn.net/Articles/296444/

http://dri.freedesktop.org/wiki/

DRI driver initialization process:

http://dri.freedesktop.org/wiki/libGLDriver/

http://en.wikipedia.org/wiki/Mesa_(computer_graphics)

Follow

Get every new post delivered to your Inbox.

%d bloggers like this: