Welcome to JoshKnows.com
Hi, I'm Josh Blum. This site is for me and my projects.
Pothos dataflow software suite
Pothos development is in full swing. http://www.pothosware.com
Recent GNU Radio work
GRAS - Advanced Scheduler
I am working on GRAS, the GNU Radio Advanced scheduler to implement many new hooks and features. Read more about the goals of the GRAS project: https://github.com/guruofquality/gras/wiki
GRAS - OpenCL Block
The OpenCL block allows a user to interface with an OpenCL compatible device, like a GPU. This block handles most of the complications of using the OpenCL API. All the user has to do is feed the block a .cl file with the kernel source and click run! https://github.com/guruofquality/grex/wiki/Opencl
GrExtras
GrExtras blocks provide unique and useful functionality not found in mainline GNU Radio. Also, these blocks act as a demonstration of the advanced functionality and API found in GRAS: https://github.com/guruofquality/grex/wiki/Blocks
Volk aligment work
Read the announcement here: https://lists.gnu.org/archive/html/discuss-gnuradio/2012-07/msg00064.html
Status, work unmerged, latest rebase on this branch: https://github.com/guruofquality/gnuradio/tree/volk_work_rebase
Recent UHD Work
I am the main developer for the USRP Hardware Driver. New features are being developed everyday!
Self-Calibration
- status: merged into master
- announcement: http://www.ruby-forum.com/topic/3019379
Doubled RX and TX bandwidth with sc8 samples
- status: merged into master
- announcement: http://www.ruby-forum.com/topic/2958481
New timed commands feature
- Send commands at a specific time (imagine tuning, frequency hoping)
- Also reduced control packet RTT for network products
- status: to be part of next branch soon
GrExtras - A home for my misc blocks
This new project can be compiled in-tree or standalone against a gnuradio install. It performs feature checking and conditional compiling. All misc blocks that dont have a home in gnuradio reside here. See README at the github page for more: https://github.com/guruofquality/grextras
Recent Gnuradio Work
I work day and night to make gnuradio easier to install, easier to use, and faster. Here is a summary of my recent work (merged and un-merged into mainline).
Blocks coding guide
I wrote a useful guide to help users write blocks in c++ or python. See the blocks coding guide.
Building with CMake
GNU Radio barely fits into the autotools paradigm; unsightly hacks, checked-in generated files, multiple stages of generation. Fortunately, most of this insanity fits very nicely into CMake's build framework. CMake also gives gnuradio cross platform support and support for generating package installers.
- status: merged into master
- docs: http://gnuradio.org/redmine/projects/gnuradio/wiki/CMakeWork
Building under MSVC
You can almost painlessly build gnuradio in visual studio. Most dependencies can be downloaded and installed as pre-built. Everything runs native. No bullshit. :-)
- status: merged into master
- docs: http://gnuradio.org/redmine/projects/gnuradio/wiki/CMakeWork
Writing blocks in python
- status: development branch python_blocks on jblum.git
- docs: http://gnuradio.org/redmine/projects/gnuradio/wiki/WriteBlocksInPython
Useful message passing
Added ability for blocks to pass messages. All blocks can accept messages and post messages to downstream subscribers. Use the flow graph's message connect call to subscribe blocks to message providers. Message can be bulk data packets to implement a mac layer, or tiny control messages to implement a control plane.
- status: development branch msg_passing_squashed on jblum.git
- some docs: http://gnuradio.org/redmine/projects/gnuradio/wiki/WriteBlocksInPython
- announcement: http://sdrblog.wordpress.com/2011/10/31/weekend-coding-adventure-message-passing-new-blocks-and-integrating-grblock/
- expanded pmt blob type to manage memory
- added pmt manager type to manage pmt allocation
- created tunnel block that uses message blobs (to replace tunnel.py)
- created socket (UDP or TCP) to/from message blob block
- created stream to/from message blob block
- created pkt2.py in gr-digital to demonstrate message passing in python
In-place gr-buffer optimizations
Added ability that allows the scheduler to share upstream buffers to downstream buffers to take advantage of caching in the CPU. If a block meets the in-place buffer requirements, just call this->set_inplace(true) inside the block's constructor, and the scheduler will do the rest. Every little bit of performance gain counts.
- status: development branch inplace_blocks on jblum.git
- set inplace(true) on gr-core math blocks
New gnuradio component gr-blocks
- status: development branch new_blocks on jblum.git
- added SIMD optimized versions of basic math blocks
- added set_output_alignment to make integration of VOLK kernels easier
- added gr_blocks_delay: configure delay of a stream dynamically at runtime
- added gr_blocks_stream_selector: configure stream mux-ing dynamically at runtime
New gnuradio component gr-filter
- status: development branch new_blocks on jblum.git
- added gr_filter_fir_decim: SIMD optimized FIR filter