SDR on Mac: the easy way

Octrober 2015: New Version Available - CLICK HERE

The hobbyist who wants to try Software Defined Radio receivers will generally run into two problems: the price of the receiver and the fact that they will need Microsoft Windows.
The RTL2832U solved the first one allowing an incredible number of people having their first SDR experiences almost for  free. The second problem however is still out there: some of us can't really stand Microsoft Windows but even with the RTL they are somehow forced to rely on it. Yuck!

The best solution to this is using Wine. I don't mean getting drunk in order to forget, I mean running a Windows SDR application directly on OSX thanks to the Wine libraries.
Wine will allow running things like HDSDR or WinRad as fast as they would run in their native environment. In order to fetch data from the receiver one can use gnuradio, which is open source and available for the Mac. The remaining parts are gr-baz and the ExtIO DLL (the necessary "glue" to put everything together) that are provided by Balint Seeber.

At the end of the process, at the cost of hours of work and dozens of downloads, one can have a stable solution that is virtually Microsoft free. But what a pain! Since I realize that compiling code is not fun at all, I decided to try creating one easy solution, something that - in pure Mac style - the end user would simply install by "drag and drop"  without any other hassle. This is the end result:

After installing HDSDR (via Winebottler WineSkin) as a standalone application, I compiled gnuradio and gr-baz as per the usual OSX gr-baz instructions. Then, I copied all the necessary dylib's into a separate directory inside the application bundle I created a py2app standalone application. A simple AppleScript is used to launch borip_server. Once the server is running you can open HDSR and connect.

This is the applescript that runs borip_server (unfortunately I could not manage to do otherwise):

set grbaz to path to resource "Contents"
set posix_contents to POSIX path of grbaz
tell application "Terminal"
	activate
	do script "cd \"" & posix_contents & "\"; ./MacOS/borip_server; exit"
end tell

and this is the setup.py I used in py2app:

from setuptools import setup

APP = ['borip_server.py']
OPTIONS = {'argv_emulation': False, 'includes': ['borip_RTL', 'optparse', 'time', 'os', 'sys', 'threading', 'thread', 'traceback', 'socket', 'SocketServer']}

setup(
app=APP,
options={'py2app': OPTIONS},
setup_requires=['py2app'],
)

Alain

Octrober 2015: New Version Available - CLICK HERE

  • Fausto

    puo' intercettare i cellulari ? :mrgreen:

  • dario

    Necessito di una breve ed elementare sintesi...

  • Henrique

    Will work on 10.7.4 ?

  • Yes it will. I forgot to mention that it is specifically for 10.7.4

  • Henrique

    I have Download here, but its not working, I have the 10.7.4 and the terminal give me this error: "ImportError: dlopen(/Applications/HDSDR OSX.app/Contents/Resources/gr-baz/opt/local/lib/python2.6/site-packages/gnuradio/gr/_gnuradio_swig_py_runtime.so, 10): no suitable image found. Did find:
    /Applications/HDSDR OSX.app/Contents/Resources/gr-baz/opt/local/lib/python2.6/site-packages/gnuradio/gr/_gnuradio_swig_py_runtime.so: mach-o, but wrong architecture"

    The HDSDR loads but do not find the device.

  • Henrique Gravina

    Ok, in my other computer it is woking great, culd it be the diferent processor core 2 duo to i5 ?

  • definitely... Are you able to follow these instructions? http://wiki.spench.net/wiki/BorIP_Server#Setting_up_OS_X
    If so, we can together integrate i5 into the bundle

    Alain

  • claudio

    Sembra che con OSX 10.6.8 non funzioni. Si ferma a Setting up device. Provato con MacBookPro4,1
    Intel Core 2 Duo. La chiavetta "Cinese" Realtek funziona perfettamente con Boot Camp e windows 7.
    Sarà un problema di 10.6 ?
    Grazie per l'impegnativo lavoro che stai svolgendo per gli utenti Mac.

  • Ciao Claudio,

    sul 10.6 per ora non va, e nemmeno su i5/i7. Sto facendo una seconda versione per risolvere questi problemi...
    Nel frattempo sto vedendo di far funzionare anche SDR#: http://www.youtube.com/watch?v=5q-FueAf_vc
    Spero di mettere nel bundle anche quello

    Alain

  • Giulio

    Ciao Alain,
    volevo ringraziarti per il lavoro che stai facendo per noi poco utenti 10.6 avezzi a smanettare...e...non tornare in Italia...io sto cercando di fare di tutto per andarmene, vedi un po' te...
    Grazie ancora,
    Giulio

  • Miki

    Hi Alain,

    I want to try experimental build of "librtlsdr" which support direct sampling (0-28.8MHz RF input).
    http://cgit.osmocom.org/cgit/rtl-sdr/log/?h=steve-m/direct_sampling

    I have successfully build under 10.7.4 libusb and librtlsdr but can I somehow put those dlyb under your APP or need to recompile whole mass?

  • Gav
  • CityLights

    Thanks for putting this package together! 🙂
    Working on a mid 2010 mac with Mountian Lion. Had to change ML security settings to get it to run. Seems to be working great except FM broadcast radio which is completly distorted. I've tried so many settings to get FM broadcaste to render clear, no go.

  • skphoto

    thank you very much but when i try to start up it just gets stuck on creating remote device
    here is the terminal window
    Last login: Mon Sep 24 21:06:06 on ttys000
    unknownf81edfe27255:~ michaellee$ cd "/Users/michaellee/Desktop/HDSDR OSX/HDSDR OSX.app/Contents/Resources/gr-baz/"
    unknownf81edfe27255:gr-baz michaellee$ export PYTHONPATH=./opt/local/lib/python2.6/site-packages:./usr/local/lib/python2.7/site-packages/
    unknownf81edfe27255:gr-baz michaellee$ export DYLD_LIBRARY_PATH=./dylib
    unknownf81edfe27255:gr-baz michaellee$ python gr-baz/python/borip_server.py
    Traceback (most recent call last):
    File "gr-baz/python/borip_server.py", line 20, in
    import baz
    File "/Users/michaellee/Desktop/HDSDR OSX/HDSDR OSX.app/Contents/Resources/gr-baz/usr/local/lib/python2.7/site-packages/baz/__init__.py", line 40, in
    from baz_swig import *
    File "/Users/michaellee/Desktop/HDSDR OSX/HDSDR OSX.app/Contents/Resources/gr-baz/usr/local/lib/python2.7/site-packages/baz/baz_swig.py", line 26, in
    _baz_swig = swig_import_helper()
    File "/Users/michaellee/Desktop/HDSDR OSX/HDSDR OSX.app/Contents/Resources/gr-baz/usr/local/lib/python2.7/site-packages/baz/baz_swig.py", line 22, in swig_import_helper
    _mod = imp.load_module('_baz_swig', fp, pathname, description)
    ImportError: dlopen(/Users/michaellee/Desktop/HDSDR OSX/HDSDR OSX.app/Contents/Resources/gr-baz/usr/local/lib/python2.7/site-packages/baz/_baz_swig.so, 10): Symbol not found: _PyCapsule_GetPointer
    Referenced from: /Users/michaellee/Desktop/HDSDR OSX/HDSDR OSX.app/Contents/Resources/gr-baz/usr/local/lib/python2.7/site-packages/baz/_baz_swig.so
    Expected in: flat namespace
    in /Users/michaellee/Desktop/HDSDR OSX/HDSDR OSX.app/Contents/Resources/gr-baz/usr/local/lib/python2.7/site-packages/baz/_baz_swig.so
    unknownf81edfe27255:gr-baz michaellee$

    Any help would be nice thank you

  • Hopefully somebody can give me an idea what im doing wrong, been pulling my hair out.
    works fine with windows but mac is like pulling teeth.

    running on OSX 10.7
    imac core2duo

    [UDP Sink "udp_sink (7)"] Connected: 127.0.0.1:28888
    RTL2832 Source block configuration:
    Read length (bytes): 32768
    Buffer enabled: yes
    Buffer multiplier: 8
    Buffer size (samples): 131072
    Samples per read: 16384
    Buffer level: 50.0%
    Successfully initialised demod: "Hama nano"
    Probing "e4000"...not found.
    Probing "fc0013"...not found.
    Probing "fc2580"...bad check value.
    Probing "fc0012"...not found.
    Probing "e4k"...not found.
    Auto-probe failed, forcing hinted tuner
    Found RTL2832 device: Hama nano (tuner: Elonics E4000)
    Sample rate range: 900001 - 3200000 Hz
    Crystal frequency: 28800000 Hz
    _I2CWriteByte: the control request was not supported by the device [-9] @ int tunerreset(rtl2832::tuner*):871 "I2CReadByte(pTuner, 200, 2, writearray[0])"
    _I2CWriteByte: the control request was not supported by the device [-9] @ int tunerreset(rtl2832::tuner*):872 "I2CReadByte(pTuner, 200, 2, writearray[0])"
    Failed to initialise tuner
    ~~> Failed to create: Failed to create RTL2832 Source: source
    Traceback (most recent call last):
    File "gr-baz/python/borip_server.py", line 673, in _create_device
    device = eval("borip_" + id + ".borip_" + id + "(" + args_str + ")")
    File "", line 1, in
    File "/Applications/HDSDR OSX.app/Contents/Resources/gr-baz/gr-baz/python/borip_RTL.py", line 56, in __init__
    if self.source.create() == False: raise Exception("Failed to create RTL2832 Source: source")
    Exception: Failed to create RTL2832 Source: source

  • Arnie

    I tried this on my Macbook Pro mid-2010 Intel running Snow Leopard. It gets as far as putting HDSDR on the screen, but hangs with a little box that seems to b from x11 saying "Please Wait" with a message "Setting up device." That is as far as it gets. My dongle is a DVB-T with R820T tuner from NooElec, if that matters. This dongle does work on my macbook pro using GQRX.
    Does anyone have any suggestions as to why Alain's package is not completing its loading?
    Tnx...Arnie W8DU

  • Harold

    tried it on a mac 2.8Ghz core2Duo, OSX 10.8.2, after install began got OSStatus error -67049. Any ideas?

  • Enzo

    Ciao Alain,
    grazie del lavoro che hai fatto per poter usare facilmente HDSDR sul Mac. Volevo chiederti come posso fare per aggiornarlo all'ultima versione (2.51). Ho provato a smanettarci ma non sono riuscito...
    Enzo

  • Hello everyone and thanks for trying this out.
    Whenever I get some time I am trying to adapt the bundle to more architectures, upgrade gnuradio to 3.6 and also HDSDR to the latest version.
    Unfortunately I am running into difficulties in gr-baz... as soon as I solve the problem I will let everyone know
    Alain

  • Arnie

    Mille Grazie Alain. I will be waiting and hope you can get this solved soon.
    --Arnie

  • Harold

    Alain,

    tried to drag HDSDR to trash to uninstal (from launch pad) does not seem to be possible. Any hints on uninstall?

    Harold

  • Harold: if you cannot remove it that's because the application is still open. Just force close it

  • I have prepared a new bundle that includes the latest HDSDR and would like to hear some feedback.

    To test it please do as follows:
    1) Download the DMG package from here: https://dl.dropbox.com/u/17744176/HDSDR%20OSX%20v2.51%20RC1.dmg
    2) Double click to open the DMG file
    3) The "HDRSDR OSX" virtual drive that the DMG created will contain 3 files: README.TXT, "GNURadio - borip_server" and HDSDR. Read the first and copy the two others anywhere in you system (Applications, Desktop or anywhere else you like)
    4) Eject the "HDRSDR OSX" virtual drive. You can now also erase the DMG, if you want
    5) Double click on the "GNURadio - borip_server" application (that you have just copied) in order to run it
    6) A Terminal Window should appear with some text running in it. The latest two lines will be:
    ==> Starting TCP server on port: 28888
    ==> TCP server running on ('0.0.0.0', 28888) in thread: Thread-1
    7) Double click on the "HDSR" application. HDSR (with the ExtIO window) should now appear
    8) Connect HDSR to the dongle as if you were on Windows
    9) Click on START to activate the receiver
    10) You should now be receiving signals

    I have successfully tested this on both OSX 10.7.5 / i5 and 10.8.2 / Core Duo. Let me know if it works for you.
    If it doesn't, please copy what you see in the borip_server window

    Thanks
    Alain

  • I created yet another version that includes support for the new R820T tuner chipset. It's going to be the final release for now:
    https://dl.dropbox.com/u/17744176/HDSDR%20OSX%202.51.dmg

    • Keith Hannay

      This works really well. One question - I have been trying to get the ExtIO dll for my Funcube Pro Plus to work. It is in the HDSDR directory in the package and does come up in the options when HSDR loads but seems to be unavailable to the program with a message "ExtIO-dll not active". This means that tuning has to be done by another program which is frustrating. Can you give any advice? I appreciate that this was for the RTL dongle but I'm sure there must be a way!
      P.S I have tried copying the contents of my Windows HDSDR (which works) into the package but this does not help.

    • Marco Prosperi

      ciao
      ho trovato questo post cercando una soluzione per fa girare sdr su mac: complimenti ha funzionato subito con la chiavetta terratec 2.0: non ero riuscito a farlo virtualizzando win7, adesso devo fare la sintonia devo imparare ad usare hdsdr in win.
      complimenti per il blog che mi ha incuriosito e che ho letto e che continuerò a leggere : ad Astoria non c'è anche la fabbrica di steinway????
      un caro saluto
      mp

      • Keith,
        you need a different dll for the Funcube. Here is the official HDSDR list: http://www.hdsdr.de/hardware.html
        Regards

        Marco,
        grazie 1000, mi fa piacere che funzioni. Abito non molto distante dalla fabbrica. In passato la zona era fortemente legata a quella azienda tanto che una delle vie principali si chiama ancora Steinway St.
        Ciao

  • Eben Haber

    I am having trouble with borip. "Failed to create device: RTL tuner=e4k".

    I haven't found any good information for configuring borip on a Mac.

    I'm using a DVB-T generic dongle.

    Thank you!

  • Pingback: TV Tuner SDR on a Mac! | VK3BQ()

  • Lee Sutherlan

    Failed to initialise tuner
    ~~> Failed to create: Failed to create RTL2832 Source: source
    Traceback (most recent call last):
    File "/Users/lee/Desktop/GNU Radio - borip_server.app/Contents/Resources/Contents/Resources/borip_server.py", line 713, in _create_device
    File "", line 1, in
    File "borip_RTL.pyc", line 54, in __init__
    Exception: Failed to create RTL2832 Source: source
    Traceback (most recent call last):
    File "/Users/lee/Desktop/GNU Radio - borip_server.app/Contents/Resources/Contents/Resources/borip_server.py", line 928, in process_client_command
    File "/Users/lee/Desktop/GNU Radio - borip_server.app/Contents/Resources/Contents/Resources/borip_server.py", line 718, in _create_device
    Exception: Failed to create RTL2832 Source: source

  • Tom Henry

    Alain,

    Found this wonderful app, and purchased the RealTek RTL2832UHIDIR stick (this might actually be my problem). I am on an 2009 iMac, running OS X 10.8.5

    Anyhow, I can't get this to work for me. Under version 2.51, here's what I get:

    ==> Connection from: ('127.0.0.1', 49574)
    RTL2832 Source block configuration:
    Read length (bytes): 32768
    Buffer enabled: yes
    Buffer multiplier: 8
    Buffer size (samples): 131072
    Samples per read: 16384
    Buffer level: 50.0%
    Successfully initialised demod: "ezcap EzTV"
    Skipping auto-probe with custom tuner: "e4k"
    Found RTL2832 device: ezcap EzTV (tuner: Elonics E4K)
    Sample rate range: 900001 - 3200000 Hz
    Crystal frequency: 28800000 Hz
    _e4k_reg_read: the control request was not supported by the device [-9] @ int e4k_init(e4k_state*, bool, bool):1545 "e4k_reg_read(e4k, 0)"
    _e4k_reg_write: the control request was not supported by the device [-9] @ int e4k_init(e4k_state*, bool, bool):1552 "e4k_reg_write(e4k, E4K_REG_MASTER1, E4K_MASTER1_RESET | E4K_MASTER1_NORM_STBY | E4K_MASTER1_POR_DET)"
    _e4k_reg_write: the control request was not supported by the device [-9] @ int e4k_init(e4k_state*, bool, bool):1555 "e4k_reg_write(e4k, E4K_REG_CLK_INP, 0x00)"
    _e4k_reg_write: the control request was not supported by the device [-9] @ int e4k_init(e4k_state*, bool, bool):1558 "e4k_reg_write(e4k, E4K_REG_REF_CLK, 0x00)"
    _e4k_reg_write: the control request was not supported by the device [-9] @ int e4k_init(e4k_state*, bool, bool):1559 "e4k_reg_write(e4k, E4K_REG_CLKOUT_PWDN, 0x96)"
    _e4k_reg_write: the control request was not supported by the device [-9] @ int magic_init(e4k_state*):1528 "e4k_reg_write(e4k, 0x7e, 0x01)"
    _e4k_reg_write: the control request was not supported by the device [-9] @ int magic_init(e4k_state*):1529 "e4k_reg_write(e4k, 0x7f, 0xfe)"
    _e4k_reg_write: the control request was not supported by the device [-9] @ int magic_init(e4k_state*):1530 "e4k_reg_write(e4k, 0x82, 0x00)"
    _e4k_reg_write: the control request was not supported by the device [-9] @ int magic_init(e4k_state*):1531 "e4k_reg_write(e4k, 0x86, 0x50)"
    _e4k_reg_write: the control request was not supported by the device [-9] @ int magic_init(e4k_state*):1532 "e4k_reg_write(e4k, 0x87, 0x20)"
    _e4k_reg_write: the control request was not supported by the device [-9] @ int magic_init(e4k_state*):1533 "e4k_reg_write(e4k, 0x88, 0x01)"
    _e4k_reg_write: the control request was not supported by the device [-9] @ int magic_init(e4k_state*):1534 "e4k_reg_write(e4k, 0x9f, 0x7f)"
    _e4k_reg_write: the control request was not supported by the device [-9] @ int magic_init(e4k_state*):1535 "e4k_reg_write(e4k, 0xa0, 0x07)"
    _e4k_reg_read: the control request was not supported by the device [-9] @ int e4k_reg_set_mask(e4k_state*, uint8_t, uint8_t, uint8_t):757 "e4k_reg_read(e4k, reg)"
    _e4k_reg_write: the control request was not supported by the device [-9] @ int e4k_reg_set_mask(e4k_state*, uint8_t, uint8_t, uint8_t):762 "e4k_reg_write(e4k, reg, (tmp & ~mask) | (val & mask))"
    _e4k_reg_read: the control request was not supported by the device [-9] @ int e4k_reg_set_mask(e4k_state*, uint8_t, uint8_t, uint8_t):757 "e4k_reg_read(e4k, reg)"
    _e4k_reg_write: the control request was not supported by the device [-9] @ int e4k_reg_set_mask(e4k_state*, uint8_t, uint8_t, uint8_t):762 "e4k_reg_write(e4k, reg, (tmp & ~mask) | (val & mask))"
    _e4k_reg_read: the control request was not supported by the device [-9] @ int e4k_reg_set_mask(e4k_state*, uint8_t, uint8_t, uint8_t):757 "e4k_reg_read(e4k, reg)"
    _e4k_reg_write: the control request was not supported by the device [-9] @ int e4k_reg_set_mask(e4k_state*, uint8_t, uint8_t, uint8_t):762 "e4k_reg_write(e4k, reg, (tmp & ~mask) | (val & mask))"
    _e4k_reg_read: the control request was not supported by the device [-9] @ int e4k_reg_set_mask(e4k_state*, uint8_t, uint8_t, uint8_t):757 "e4k_reg_read(e4k, reg)"
    _e4k_reg_read: the control request was not supported by the device [-9] @ int e4k_reg_set_mask(e4k_state*, uint8_t, uint8_t, uint8_t):757 "e4k_reg_read(e4k, reg)"
    _e4k_reg_read: the control request was not supported by the device [-9] @ int e4k_reg_set_mask(e4k_state*, uint8_t, uint8_t, uint8_t):757 "e4k_reg_read(e4k, reg)"
    _e4k_reg_write: the control request was not supported by the device [-9] @ int e4k_reg_set_mask(e4k_state*, uint8_t, uint8_t, uint8_t):762 "e4k_reg_write(e4k, reg, (tmp & ~mask) | (val & mask))"
    _e4k_reg_read: the control request was not supported by the device [-9] @ int e4k_reg_set_mask(e4k_state*, uint8_t, uint8_t, uint8_t):757 "e4k_reg_read(e4k, reg)"
    _e4k_reg_write: the control request was not supported by the device [-9] @ int e4k_reg_set_mask(e4k_state*, uint8_t, uint8_t, uint8_t):762 "e4k_reg_write(e4k, reg, (tmp & ~mask) | (val & mask))"
    _e4k_reg_read: the control request was not supported by the device [-9] @ int e4k_reg_set_mask(e4k_state*, uint8_t, uint8_t, uint8_t):757 "e4k_reg_read(e4k, reg)"
    _e4k_reg_write: the control request was not supported by the device [-9] @ int e4k_reg_set_mask(e4k_state*, uint8_t, uint8_t, uint8_t):762 "e4k_reg_write(e4k, reg, (tmp & ~mask) | (val & mask))"
    _e4k_reg_read: the control request was not supported by the device [-9] @ int e4k_reg_set_mask(e4k_state*, uint8_t, uint8_t, uint8_t):757 "e4k_reg_read(e4k, reg)"
    _e4k_reg_write: the control request was not supported by the device [-9] @ int e4k_reg_set_mask(e4k_state*, uint8_t, uint8_t, uint8_t):762 "e4k_reg_write(e4k, reg, (tmp & ~mask) | (val & mask))"
    _e4k_reg_read: the control request was not supported by the device [-9] @ int e4k_reg_set_mask(e4k_state*, uint8_t, uint8_t, uint8_t):757 "e4k_reg_read(e4k, reg)"
    _e4k_reg_write: the control request was not supported by the device [-9] @ int e4k_reg_set_mask(e4k_state*, uint8_t, uint8_t, uint8_t):762 "e4k_reg_write(e4k, reg, (tmp & ~mask) | (val & mask))"
    _e4k_reg_read: the control request was not supported by the device [-9] @ int e4k_reg_set_mask(e4k_state*, uint8_t, uint8_t, uint8_t):757 "e4k_reg_read(e4k, reg)"
    _e4k_reg_write: the control request was not supported by the device [-9] @ int e4k_dc_offset_calibrate(e4k_state*):1450 "e4k_reg_write(e4k, E4K_REG_DC1, 0x01)"
    _e4k_reg_read: the control request was not supported by the device [-9] @ int e4k_dc_offset_gen_table(e4k_state*):1503 "e4k_reg_read(e4k, E4K_REG_DC2)"
    _e4k_reg_read: the control request was not supported by the device [-9] @ int e4k_dc_offset_gen_table(e4k_state*):1504 "e4k_reg_read(e4k, E4K_REG_DC3)"
    _e4k_reg_read: the control request was not supported by the device [-9] @ int e4k_dc_offset_gen_table(e4k_state*):1505 "e4k_reg_read(e4k, E4K_REG_DC4)"
    _e4k_reg_write: the control request was not supported by the device [-9] @ int e4k_dc_offset_gen_table(e4k_state*):1514 "e4k_reg_write(e4k, dc_gain_comb[i].reg, TO_LUT(offs_q, range_q))"
    _e4k_reg_write: the control request was not supported by the device [-9] @ int e4k_dc_offset_gen_table(e4k_state*):1516 "e4k_reg_write(e4k, dc_gain_comb[i].reg+0x10, TO_LUT(offs_i, range_i))"
    _e4k_reg_read: the control request was not supported by the device [-9] @ int e4k_reg_set_mask(e4k_state*, uint8_t, uint8_t, uint8_t):757 "e4k_reg_read(e4k, reg)"
    _e4k_reg_write: the control request was not supported by the device [-9] @ int e4k_reg_set_mask(e4k_state*, uint8_t, uint8_t, uint8_t):762 "e4k_reg_write(e4k, reg, (tmp & ~mask) | (val & mask))"
    _e4k_reg_read: the control request was not supported by the device [-9] @ int e4k_reg_set_mask(e4k_state*, uint8_t, uint8_t, uint8_t):757 "e4k_reg_read(e4k, reg)"
    _e4k_reg_read: the control request was not supported by the device [-9] @ int e4k_reg_set_mask(e4k_state*, uint8_t, uint8_t, uint8_t):757 "e4k_reg_read(e4k, reg)"
    _e4k_reg_write: the control request was not supported by the device [-9] @ int e4k_dc_offset_calibrate(e4k_state*):1450 "e4k_reg_write(e4k, E4K_REG_DC1, 0x01)"
    _e4k_reg_read: the control request was not supported by the device [-9] @ int e4k_dc_offset_gen_table(e4k_state*):1503 "e4k_reg_read(e4k, E4K_REG_DC2)"
    _e4k_reg_read: the control request was not supported by the device [-9] @ int e4k_dc_offset_gen_table(e4k_state*):1504 "e4k_reg_read(e4k, E4K_REG_DC3)"
    _e4k_reg_read: the control request was not supported by the device [-9] @ int e4k_dc_offset_gen_table(e4k_state*):1505 "e4k_reg_read(e4k, E4K_REG_DC4)"
    _e4k_reg_write: the control request was not supported by the device [-9] @ int e4k_dc_offset_gen_table(e4k_state*):1514 "e4k_reg_write(e4k, dc_gain_comb[i].reg, TO_LUT(offs_q, range_q))"
    _e4k_reg_write: the control request was not supported by the device [-9] @ int e4k_dc_offset_gen_table(e4k_state*):1516 "e4k_reg_write(e4k, dc_gain_comb[i].reg+0x10, TO_LUT(offs_i, range_i))"
    _e4k_reg_read: the control request was not supported by the device [-9] @ int e4k_reg_set_mask(e4k_state*, uint8_t, uint8_t, uint8_t):757 "e4k_reg_read(e4k, reg)"
    _e4k_reg_read: the control request was not supported by the device [-9] @ int e4k_reg_set_mask(e4k_state*, uint8_t, uint8_t, uint8_t):757 "e4k_reg_read(e4k, reg)"
    _e4k_reg_write: the control request was not supported by the device [-9] @ int e4k_reg_set_mask(e4k_state*, uint8_t, uint8_t, uint8_t):762 "e4k_reg_write(e4k, reg, (tmp & ~mask) | (val & mask))"
    _e4k_reg_read: the control request was not supported by the device [-9] @ int e4k_reg_set_mask(e4k_state*, uint8_t, uint8_t, uint8_t):757 "e4k_reg_read(e4k, reg)"
    _e4k_reg_write: the control request was not supported by the device [-9] @ int e4k_dc_offset_calibrate(e4k_state*):1450 "e4k_reg_write(e4k, E4K_REG_DC1, 0x01)"
    _e4k_reg_read: the control request was not supported by the device [-9] @ int e4k_dc_offset_gen_table(e4k_state*):1503 "e4k_reg_read(e4k, E4K_REG_DC2)"
    _e4k_reg_read: the control request was not supported by the device [-9] @ int e4k_dc_offset_gen_table(e4k_state*):1504 "e4k_reg_read(e4k, E4K_REG_DC3)"
    _e4k_reg_read: the control request was not supported by the device [-9] @ int e4k_dc_offset_gen_table(e4k_state*):1505 "e4k_reg_read(e4k, E4K_REG_DC4)"
    _e4k_reg_write: the control request was not supported by the device [-9] @ int e4k_dc_offset_gen_table(e4k_state*):1514 "e4k_reg_write(e4k, dc_gain_comb[i].reg, TO_LUT(offs_q, range_q))"
    _e4k_reg_write: the control request was not supported by the device [-9] @ int e4k_dc_offset_gen_table(e4k_state*):1516 "e4k_reg_write(e4k, dc_gain_comb[i].reg+0x10, TO_LUT(offs_i, range_i))"
    _e4k_reg_read: the control request was not supported by the device [-9] @ int e4k_reg_set_mask(e4k_state*, uint8_t, uint8_t, uint8_t):757 "e4k_reg_read(e4k, reg)"
    _e4k_reg_read: the control request was not supported by the device [-9] @ int e4k_reg_set_mask(e4k_state*, uint8_t, uint8_t, uint8_t):757 "e4k_reg_read(e4k, reg)"
    _e4k_reg_read: the control request was not supported by the device [-9] @ int e4k_reg_set_mask(e4k_state*, uint8_t, uint8_t, uint8_t):757 "e4k_reg_read(e4k, reg)"
    _e4k_reg_write: the control request was not supported by the device [-9] @ int e4k_dc_offset_calibrate(e4k_state*):1450 "e4k_reg_write(e4k, E4K_REG_DC1, 0x01)"
    _e4k_reg_read: the control request was not supported by the device [-9] @ int e4k_dc_offset_gen_table(e4k_state*):1503 "e4k_reg_read(e4k, E4K_REG_DC2)"
    _e4k_reg_read: the control request was not supported by the device [-9] @ int e4k_dc_offset_gen_table(e4k_state*):1504 "e4k_reg_read(e4k, E4K_REG_DC3)"
    _e4k_reg_read: the control request was not supported by the device [-9] @ int e4k_dc_offset_gen_table(e4k_state*):1505 "e4k_reg_read(e4k, E4K_REG_DC4)"
    _e4k_reg_write: the control request was not supported by the device [-9] @ int e4k_dc_offset_gen_table(e4k_state*):1514 "e4k_reg_write(e4k, dc_gain_comb[i].reg, TO_LUT(offs_q, range_q))"
    _e4k_reg_write: the control request was not supported by the device [-9] @ int e4k_dc_offset_gen_table(e4k_state*):1516 "e4k_reg_write(e4k, dc_gain_comb[i].reg+0x10, TO_LUT(offs_i, range_i))"
    _e4k_reg_write: the control request was not supported by the device [-9] @ int e4k_init(e4k_state*, bool, bool):1578 "e4k_reg_write(e4k, E4K_REG_AGC4, 0x10)"
    _e4k_reg_write: the control request was not supported by the device [-9] @ int e4k_init(e4k_state*, bool, bool):1579 "e4k_reg_write(e4k, E4K_REG_AGC5, 0x04)"
    _e4k_reg_write: the control request was not supported by the device [-9] @ int e4k_init(e4k_state*, bool, bool):1580 "e4k_reg_write(e4k, E4K_REG_AGC6, 0x1a)"
    _e4k_reg_read: the control request was not supported by the device [-9] @ int e4k_reg_set_mask(e4k_state*, uint8_t, uint8_t, uint8_t):757 "e4k_reg_read(e4k, reg)"
    _e4k_reg_read: the control request was not supported by the device [-9] @ int e4k_reg_set_mask(e4k_state*, uint8_t, uint8_t, uint8_t):757 "e4k_reg_read(e4k, reg)"
    _e4k_reg_read: the control request was not supported by the device [-9] @ int e4k_reg_set_mask(e4k_state*, uint8_t, uint8_t, uint8_t):757 "e4k_reg_read(e4k, reg)"
    _e4k_reg_write: the control request was not supported by the device [-9] @ int e4k_reg_set_mask(e4k_state*, uint8_t, uint8_t, uint8_t):762 "e4k_reg_write(e4k, reg, (tmp & ~mask) | (val & mask))"
    _e4k_reg_read: the control request was not supported by the device [-9] @ int e4k_reg_set_mask(e4k_state*, uint8_t, uint8_t, uint8_t):757 "e4k_reg_read(e4k, reg)"
    _e4k_reg_write: the control request was not supported by the device [-9] @ int e4k_reg_set_mask(e4k_state*, uint8_t, uint8_t, uint8_t):762 "e4k_reg_write(e4k, reg, (tmp & ~mask) | (val & mask))"
    _e4k_reg_read: the control request was not supported by the device [-9] @ int e4k_reg_set_mask(e4k_state*, uint8_t, uint8_t, uint8_t):757 "e4k_reg_read(e4k, reg)"
    _e4k_reg_write: the control request was not supported by the device [-9] @ int e4k_reg_set_mask(e4k_state*, uint8_t, uint8_t, uint8_t):762 "e4k_reg_write(e4k, reg, (tmp & ~mask) | (val & mask))"
    _e4k_reg_read: the control request was not supported by the device [-9] @ int e4k_reg_set_mask(e4k_state*, uint8_t, uint8_t, uint8_t):757 "e4k_reg_read(e4k, reg)"
    _e4k_reg_write: the control request was not supported by the device [-9] @ int e4k_reg_set_mask(e4k_state*, uint8_t, uint8_t, uint8_t):762 "e4k_reg_write(e4k, reg, (tmp & ~mask) | (val & mask))"
    _e4k_reg_read: the control request was not supported by the device [-9] @ int e4k_reg_set_mask(e4k_state*, uint8_t, uint8_t, uint8_t):757 "e4k_reg_read(e4k, reg)"
    _e4k_reg_write: the control request was not supported by the device [-9] @ int e4k_reg_set_mask(e4k_state*, uint8_t, uint8_t, uint8_t):762 "e4k_reg_write(e4k, reg, (tmp & ~mask) | (val & mask))"
    _e4k_reg_read: the control request was not supported by the device [-9] @ int e4k_field_write(e4k_state*, const reg_field*, uint8_t):776 "e4k_reg_read(e4k, field->reg)"
    _e4k_reg_read: the control request was not supported by the device [-9] @ int e4k_field_write(e4k_state*, const reg_field*, uint8_t):776 "e4k_reg_read(e4k, field->reg)"
    _e4k_reg_read: the control request was not supported by the device [-9] @ int e4k_field_write(e4k_state*, const reg_field*, uint8_t):776 "e4k_reg_read(e4k, field->reg)"
    _e4k_reg_read: the control request was not supported by the device [-9] @ int e4k_reg_set_mask(e4k_state*, uint8_t, uint8_t, uint8_t):757 "e4k_reg_read(e4k, reg)"
    _e4k_reg_write: the control request was not supported by the device [-9] @ int e4k_reg_set_mask(e4k_state*, uint8_t, uint8_t, uint8_t):762 "e4k_reg_write(e4k, reg, (tmp & ~mask) | (val & mask))"
    _e4k_reg_read: the control request was not supported by the device [-9] @ int e4k_field_write(e4k_state*, const reg_field*, uint8_t):776 "e4k_reg_read(e4k, field->reg)"
    Failed to initialise tuner
    ~~> Failed to create: Failed to create RTL2832 Source: source
    Traceback (most recent call last):
    File "/Applications/Ham Radio apps/GNU Radio - borip_server.app/Contents/Resources/Contents/Resources/borip_server.py", line 713, in _create_device
    File "", line 1, in
    File "borip_RTL.pyc", line 54, in __init__
    Exception: Failed to create RTL2832 Source: source
    Traceback (most recent call last):
    File "/Applications/Ham Radio apps/GNU Radio - borip_server.app/Contents/Resources/Contents/Resources/borip_server.py", line 928, in process_client_command
    File "/Applications/Ham Radio apps/GNU Radio - borip_server.app/Contents/Resources/Contents/Resources/borip_server.py", line 718, in _create_device
    Exception: Failed to create RTL2832 Source: source

    Any help is appreciated. Thanks!

  • ISIRT

    Thank you Alain for this package.
    I've upgraded the HDSDR to v6.63 simply by overwritting the .app Contents/Resources/drive_c/hdhdr files with the files from my working windows 8 c:\Program Files(x86)\HDSDR folder.
    It works fine on my MBP, OSX 10.9, r820t.
    Just delete the "extIO_RTL.dll" to avoid the question at launch to choose which IO file you want to use. Rgds, Vince

  • demian sims

    Hi Alain, great work on HDSDR for OSX and thanks! I'm wondering if it's possible to get DSD decoder to work as well? Might be different since it's command line based. Also, any luck with SDR#?

  • Carmelo Bonaventura

    Ciao, io vorrei installare hdsdr sul mio Imac 21,5 i5 2,9 ghz fine 2013, non ci sto riuscendo cosa devo fare?
    Grazie in anticipo.
    Carmelo

  • Ryan

    Hi Alian. I get the follow error when loading borip:

    Traceback (most recent call last):

    File "/Volumes/HDSDR OSX/GNU Radio - borip_server.app/Contents/Resources/Contents/Resources/__boot__.py", line 43, in

    _run()

    File "/Volumes/HDSDR OSX/GNU Radio - borip_server.app/Contents/Resources/Contents/Resources/__boot__.py", line 38, in _run

    exec(compile(source, path, 'exec'), globals(), globals())

    File "/Volumes/HDSDR OSX/GNU Radio - borip_server.app/Contents/Resources/Contents/Resources/borip_server.py", line 19, in

    from gnuradio import gr

    File "gnuradio/gr/__init__.pyc", line 38, in

    File "gnuradio/gr/prefs.pyc", line 118, in

    File "gnuradio/gr/prefs.pyc", line 74, in _read_files

    File "ConfigParser.pyc", line 305, in read

    File "ConfigParser.pyc", line 512, in _read

    ConfigParser.MissingSectionHeaderError: File contains no section headers.

    file: /opt/local/etc/gnuradio/conf.d/gr_log_default.conf, line: 1

    '/*n'

    2015-02-08 15:02:59.106 borip_server[1030:507] borip_server Error

    logout

    Any idea?

  • Peter

    @Ryan: I replaced the comment at the beginning of /opt/local/etc/gnuradio/conf.d/gr_log_default.conf with [log4j]. ConfigParser liked the new section header : )

  • Ron Malcom

    Hi Alian,
    Thank you for your wonderful work of making HDSDR work for Mac user.
    However I'm having problem running the latest version on my OSX10.8.2
    I would very much like to download your previous version "HDSDR OSX v2.51 RC1.dmg" but the Dropbox dl link is dead 🙁 . Please could you make available the older file for poor hams like us. 73!