rxseger / homebrew-hackrf

HackRF SDR and related GNU Radio Formulae for Homebrew
19 stars 5 forks source link

Homebrew vs PyBOMBS #4

Open rxseger opened 8 years ago

rxseger commented 8 years ago

GNU Radio has its own bundle system, Python Build Overlay Managed Bundle System: https://github.com/gnuradio/pybombs - should try it out and investigate how it compares versus these Homebrew formulae.

Does it make them obsolete? There are recipes in gr-recipes to install gr-osmosdr, gr-baz, and a large number of other modules:

rf $ grep description {gr-recipes,gr-etcetera}/*.lwr gr-recipes/gr-adsb.lwr:description: GNU Radio ADSB decoder and framer gr-recipes/gr-air-modes.lwr:description: Gnuradio Mode-S/ADS-B decoder gr-recipes/gr-ais.lwr:description: Automatic Information System decoder for shipborne position reporting gr-recipes/gr-ax25.lwr:description: Some hamradio ax.25 routines for gnuradio gr-recipes/gr-baz.lwr:description: Collection of new blocks for GNU Radio http://wiki.spench.net/wiki/gr-baz gr-recipes/gr-bluetooth.lwr:description: Bluetooth receiver implementation for GNU Radio gr-recipes/gr-burst.lwr:description: Burst PSK Modem Building Blocks for GNU Radio gr-recipes/gr-cdma.lwr:description: CDMA physical layer for Gnuradio gr-recipes/gr-compat.lwr:description: Compatibility layer for various gnuradio APIs and libraries gr-recipes/gr-display.lwr:description: QT based PNG and text display sink for gnuradio gr-recipes/gr-drm.lwr:description: DRM transmitter using GNU Radio gr-recipes/gr-ettus.lwr:description: Out-of-tree Module for Experimental Ettus Research Features gr-recipes/gr-eventstream.lwr:description: translation between streams of data and scheduled-finite length events gr-recipes/gr-fcdproplus.lwr:description: gnuradio funcube dongle pro+ source gr-recipes/gr-foo.lwr:description: Some additional blocks like packetpad that are required by, e.g., gr-ieee80211 gr-recipes/gr-fosphor.lwr:description: RTSA-like spectrum visualization using OpenCL and OpenGL gr-recipes/gr-fsk-burst.lwr:description: GNU Radio message based burst FSK Transmitter and Receiver gr-recipes/gr-ieee-80211.lwr:description: IEEE 802.11 a/g/p Transceiver gr-recipes/gr-iio.lwr:description: GNU Radio IIO Blocks gr-recipes/gr-iqbal.lwr:description: gnuradio I/Q balancing gr-recipes/gr-ldpc.lwr:description: encoder and decoder for LDPC codes gr-recipes/gr-lilacsat.lwr:description: Harbin Institute of Technology LilacSat-2 satellite telemetry gr-recipes/gr-mac.lwr:description: Easy-to-use MAC-layer implementations for GNU Radio gr-recipes/gr-mapper.lwr:description: Symbol to Bit Mapping and Demapping Blocks for GNU Radio gr-recipes/gr-message_tools.lwr:description: Simple message debugging tools gr-recipes/gr-nacl.lwr:description: GNU Radio module for data encryption using NaCl gr-recipes/gr-nmea.lwr:description: NMEA0183 GPS to message source gr-recipes/gr-op25.lwr:description: implementation of the APCO Project 25 digital radio standard gr-recipes/gr-osmosdr.lwr:description: interface api independent of the underlying radio hardware gr-recipes/gr-packetradio.lwr:description: APRS for GNU Radio gr-recipes/gr-paint.lwr:description: OFDM Spectrum Painter for GNU Radio gr-recipes/gr-psk-burst.lwr:description: GNU Radio message based burst PSK Transmitter and Receiver gr-recipes/gr-pyqt.lwr:description: pyqt based plotters intended for plotting bursted events in gnu radio gr-recipes/gr-radar.lwr:description: GNU Radio Radar Toolbox gr-recipes/gr-rds.lwr:description: FM RDS/TMC Transceiver gr-recipes/gr-specest.lwr:description: spectral estimation routines for GNU Radio gr-recipes/gr-tagutils.lwr:description: blocks useful for working with Stream Tags gr-recipes/gr-theano.lwr:description: Rapid GPU Accelerated Blocks for GNU Radio gr-recipes/gr-tutorial.lwr:description: tutorial OOT module for GNU Radio gr-recipes/gr-zmqblocks.lwr:description: connect to flowgraphs over a network to perform remote procedure calls gr-recipes/libperseus-sdr.lwr:description: Perseus SDR access library gr-recipes/pysstv.lwr:description: SSTV generator in pure Python gr-recipes/python-matplotlib.lwr:description: Python based plotting system in a style similar to Matlab. gr-recipes/python-tk.lwr:description: A module for writing portable GUI applications with Python using Tk. gr-etcetera/acarsdec.lwr:description: open source ACARS decoder with rtl_sdr frontend gr-etcetera/dump1090.lwr:description: simple Mode S decoder for RTLSDR devices gr-etcetera/gr-acars2.lwr:description: GNU Radio processing block for ACARS transmissions gr-etcetera/gr-analysis.lwr:description: analysis tools for high sample rate recordings gr-etcetera/gr-benchmark.lwr:description: performance measurement tool for GNU Radio gr-etcetera/gr-dect2.lwr:description: DECT analyzer for GNU Radio gr-etcetera/gr-dsd.lwr:description: GNU Radio block for Digital Speech Decoder gr-etcetera/gr-dvbs2.lwr:description: DVB-S2 and DVB-S2X transmitter for GNU Radio gr-etcetera/gr-dvbt.lwr:description: DVB-T implementation in gnuradio gr-etcetera/gr-dvbt2.lwr:description: DVB-T2 transmitter for GNU Radio gr-etcetera/gr-elster.lwr:description: Decode packets transmitted by Elster R2S smart meters gr-etcetera/gr-flarm.lwr:description: FLARM receiver for GNU Radio gr-etcetera/gr-framers.lwr:description: Framer and Deframer Blocks for GNU Radio gr-etcetera/gr-gpredict-doppler.lwr:description: GNU Radio Gpredict Doppler shift correction block gr-etcetera/gr-gsm.lwr:description: Gnuradio blocks and tools for receiving GSM transmissions gr-etcetera/gr-ham.lwr:description: GNU Radio blocks useful for amateur radio gr-etcetera/gr-hpsdr.lwr:description: interface module for HPSDR Hermes / Metis gr-etcetera/gr-ieee-802154.lwr:description: IEEE 802.15.4 ZigBee Transceiver gr-etcetera/gr-isdbt.lwr:description: DTV ISDB-T in GNURadio gr-etcetera/gr-keyfob.lwr:description: Transceiver for Hella wireless car key fobs gr-etcetera/gr-lte.lwr:description: GNU Radio LTE receiver gr-etcetera/gr-mapper.lwr:description: Symbol to Bit Mapping and Demapping Blocks for GNU Radio gr-etcetera/gr-mediatools.lwr:description: ffmpeg and gnu radio integration gr-etcetera/gr-mer.lwr:description: QAM Modulation error measurements. gr-etcetera/gr-microtelecom.lwr:description: Perseus SDR source module gr-etcetera/gr-mixalot.lwr:description: Gnuradio pager encoder gr-etcetera/gr-mtb.lwr:description: GNU Radio measurement toolbox gr-etcetera/gr-multimon.lwr:description: multimon gnuradio wrapper gr-etcetera/gr-pcap.lwr:description: PCAP recording and playback gr-etcetera/gr-pocsag.lwr:description: multichannel POCSAG receiver for gnuradio gr-etcetera/gr-psk31.lwr:description: tutorial on using psk31 with GNU Radio gr-etcetera/gr-ra_blocks.lwr:description: Helper blocks for simple_ra gr-etcetera/gr-rccar2.lwr:description: Gnuradio implementation for cheap remote control cars gr-etcetera/gr-reveng.lwr:description: Utilities to help with reverse engineering RF protocols gr-etcetera/gr-rstt.lwr:description: Vaisala Radiosonde Telemetry Receiver gr-etcetera/gr-rtty.lwr:description: RTTY decoder for Gnuradio gr-etcetera/gr-smartnet.lwr:description: Motorola Smartnet II trunking logging scanner for Gnuradio gr-etcetera/gr-smithchart.lwr:description: pyQT based smith chart for GNU Radio gr-etcetera/gr-streamsink.lwr:description: GNURadio sink to stream audio to SHOUTcast/Icecast gr-etcetera/gr-uhdgps.lwr:description: Blocks to assist in GPS Data logging with UHD and a GPSDO gr-etcetera/inspectrum.lwr:description: recorded data browser gr-etcetera/rtl_433.lwr:description: 433MHz generic data receiver using RTL2832 DVB dongle gr-etcetera/simple_radio_astronomy.lwr:description: integrated radio astronomy receiver for GNU Radio

rxseger commented 8 years ago

Following the quickstart:

pip install git+https://github.com/gnuradio/pybombs.git pybombs recipes add gr-recipes git+https://github.com/gnuradio/gr-recipes.git pybombs recipes add gr-etcetera git+https://github.com/gnuradio/gr-etcetera.git

What to use for the "prefix"? The example uses a nonsensical "/path/to/prefix" path. Maybe /usr/local/share/gnuradio/grc/blocks, which I have configured in:

~/.gnuradio/config.config.conf: [grc] local_blocks_path=/usr/local/share/gnuradio/grc/blocks

or in ~/.pybombs? But that already exists and has config.yml and recipes files:

~ $ ls ~/.pybombs/ config.yml recipes

cannot create prefix over it:

~ $ pybombs prefix init ~ -a local -R gnuradio-default PyBombs.prefix - ERROR - Ignoring. A prefix already exists in `/Users/admin'

even though it doesn't have "./setup_env.sh":

~ $ pybombs prefix env PyBombs.prefix - ERROR - No prefix specified. Aborting. ~ $ pybombs prefix info PyBombs.prefix - ERROR - No prefix specified. Aborting.

not clear what a reasonable prefix is. If I use a different directory, then initialization succeeds, and it says it is installing gr-osmosdr but there are no gr-osmosdr files in the prefix directory.

I'll use ~/rf/gr as my prefix:

pip install git+https://github.com/gnuradio/pybombs.git 
pybombs recipes add gr-recipes git+https://github.com/gnuradio/gr-recipes.git
pybombs recipes add gr-etcetera git+https://github.com/gnuradio/gr-etcetera.git
pybombs prefix init ~/rf/gr -a local -R gnuradio-default

initializes the prefix:

PyBombs.prefix - INFO - Creating directory `/Users/admin/rf/gr' PyBombs.ConfigManager - INFO - Creating new config file /Users/admin/rf/gr/.pybombs/config.yml PyBombs.prefix - INFO - Installing default packages for prefix... PyBombs.prefix - INFO -

then try to install - no output:

~ $ pybombs -p local install gnuradio gr-osmosdr ~ $

Try another package - nothing either:

~ $ pybombs install gr-ieee-80211 ~ $ ls ~/rf/gr

The prefix directory is nearly empty:

~ $ find ~/rf/gr
/Users/admin/rf/gr
/Users/admin/rf/gr/.pybombs
/Users/admin/rf/gr/.pybombs/config.yml
/Users/admin/rf/gr/.pybombs/recipes
/Users/admin/rf/gr/setup_env.sh
/Users/admin/rf/gr/src

Not sure what is going on here. If I . ./setup_env.sh then ./gnuradio-companion, no blocks from the packages I "installed" are visible (tried gr-osmosdr, gr-ieee-80211).

Will have to stick to Homebrew for now until I can figure out PyBOMBS.

rxseger commented 8 years ago

Found this: https://github.com/gnuradio/pybombs/issues/224 Add 'brew' package manager — implying Homebrew is not currently supported with PyBOMBS?

But https://github.com/gnuradio/pybombs/issues/222 Mac OS X support says there is MacPorts support. Another good word for MacPorts in https://github.com/gnuradio/pybombs/pull/50 "Also, if you really need gnuradio these days on OS X, just install macports: They have a really good and active (paid?) package maintainer for gnuradio, so it should works right out of the box."

Sure enough, MacPorts does have a package for gr-osmosdr, and a total of 16 portfiles gr-: https://www.macports.org/ports.php?by=name&substr=gr-

gr-air-modes 20160517 Provides augmented functionality (blocks, GRC definitions, apps, etc) for GNU Radio.
gr-ais 20150414 Provides augmented functionality (blocks, GRC definitions, apps, etc) for GNU Radio.
gr-baz 20160505 Provides augmented functionality (blocks, GRC definitions, apps, etc) for GNU Radio.
gr-dvbs 20140618 Implements DVB-S transmitter according to ETSI 300 421 V1.1.2 Framing in GNU Radio.
gr-dvbs2 20140903 Implements DVB-S2 transmitter according to ETSI EN 302 307 V1.3.1 Second Generation Frameing in GNU Radio.
gr-dvbt 20160502 Implements DVB-T encoder/decoder according to ETSI 300 744 in GNU Radio.
gr-fcdproplus 20160310 Implements a funcube dongle pro+ source in GNU Radio.
gr-foo 20160423 Provides augmented functionality (blocks, GRC definitions, apps, etc) for GNU Radio.
gr-fosphor 20160125 gr-fosphor provides a GNU Radio block for RTSA-like spectrum visualization using GPU acceleration.
gr-ieee802-11 20160412 Provides augmented functionality (blocks, GRC definitions, apps, etc) for GNU Radio.
gr-ieee802-15-4 20151217 Provides augmented functionality (blocks, GRC definitions, apps, etc) for GNU Radio.
gr-iqbalance 20140825 gr-iqbalance provides I/Q balancing blocks for GNU Radio
gr-mac 20140913 Provides augmented functionality (blocks, GRC definitions, apps, etc) for GNU Radio.
gr-osmosdr 20160228 gr-osmosdr provides support for OsmoSDR hardware within GNU Radio
gr-pyqt 20160427 Provides augmented functionality for GNU Radio: pyqt based plotters intended for plotting bursted events.
gr-rds 20160403 Provides the Radio Data System (RDS) block for GNU Radio.

Time to switch from Homebrew to MacPorts?