Balint, Thanks for your work on this. Yesterday I have been playing with my EzTV 666 and today I tried a Dexatek dongle using your latest code with FC2580 tuner support.
If I try to run a simple src->fft flowgraph (attached) right after plugging the dongle in I get a bunch of errors, see atached fc2580-1.txt file. I tried to capture a file using the latest rtl-sdr code from the osmocom repository using the same frequency and sample and it worked. After that I can try the grc flowgraph using your source block again and it will work (see attached fc2580-2.txt). So it seems there is something wrong with the tuner initialization. I didn't have time to look into what the problem could be. Alex On Thu, Apr 5, 2012 at 1:55 PM, Balint Seeber <[email protected]> wrote: > Hi folks,**** > > ** ** > > Firstly, thank you to those who have tested the initial release and have > been in touch with feedback – I really appreciate it.**** > > ** ** > > I would like to share the completely re-written RTL2832 code in > gr-baz<http://wiki.spench.net/wiki/gr-baz#rtl_source_c>, > which should now support all devices I can find with an E4000, FC0013 and > now FC0012 tuner (if there are any missing, you can simply set the custom > VID/PID in the GRC RTL2832 Source block, or add just one line to an array > in rtl2832.cc). This will be ported to the Windows plugin soon.**** > > ** ** > > The RTL2832 Source block code itself is much tidier, and makes use of > (what I submit for your consideration/experimentation as) ‘librtl2832++’ – > this is a completely re-designed GNU Radio-independent C++ (OO) interface > to the hardware. The idea is to make it really easy to talk to the dongles. > If you want to use it for something else, just copy out the ‘rtl2832-*’ > files! You will find the main ‘demod’ class, and the ‘tuner’s, all with (I > hope) a simple API.**** > > ** ** > > The updated GRC Source block also exposes lots of new settings too > (including bandwidth, buffer settings, FIR coefficients, …).**** > > ** ** > > Moreover, just to ensure that I hadn’t led people down the garden path > (since, let’s face it, it’s 8 bits, XO drifts like crazy, and wasn’t > designed for general-purpose SDR), I hooked it up to > OP25<http://op25.osmocom.org/>(the open source P25 digital radio decoder) – > and happily it works! > **** > > ** ** > > Check out the RTL2832+OP25+DES-OFB demonstration/RTL2832 update video: > http://www.youtube.com/watch?v=wShOLgW2tmI**** > > ** ** > > In the process I also created two new GRC blocks (now in gr-baz, also in > the video):**** > > ** ** > > **1. **‘OP25 Decoder’ (float baseband in, audio out with optional > parameter for setting DES-OFB decryption key – this requires a patch with > decryption support that I will release soon) > > **** > > **2. **‘Message Callback’ sink whose input port accepts messages, > and calls the relevant GRC-generated code to update a GRC variable (i.e. > you can have various blocks that output messages into a message queue, and > these will be picked up by this block and trigger a particular variable in > your flowgraph to by updated automatically – e.g. you can change a tuning > offset if a block detects a frequency error creeping in, and/or you can > have GUI elements – text boxes/sliders/etc – controlled by arbitrary blocks > if their value needs to be updated by a feedback mechanism)**** > > ** ** > > Please note: RTL2832’s Source block now has Relative Gain *enabled* by > default, so valid gain values are in the range [0,1]. This means you don’t > need to remember the absolute gain range for whichever tuner you have!**** > > ** ** > > Also, there is a known issue that may occur while tuning. If you change > the frequency too rapidly, a USB error may occur and require reconnection > of the dongle (this has only ever happened to me though when there are > sample rate mismatches in a flowgraph). Enforcing coarse-grained locking in > the source block code does not solve this. The only obvious fix to me at > this stage is rate-limiting tuning requests (I’m guessing perhaps the > device wasn’t designed to expect rapid re-tuning). Implementing async > libusb control transfers would also be nice!**** > > ** ** > > Finally, I have found that on my Linux box, streaming performance isn’t as > great as on Windows. By ‘performance’ I mean occasional degradation in the > baseband signal (i.e. signal ‘jumps’, after AM or FM demod of a constant > tone, you would hear a ‘click’ discontinuity). I hope that’s not a result > of an undiscovered bug, but I’ve been largely able to avoid these > discontinuities by selecting a modest sample rate (e.g. 1 Msps), increasing > the transfer read length (you can do this easily in the GRC block) to e.g. > 256K (though this will increase delay in reflection of freq/gain changes in > output signal due to longer buffer), and enabling real-time scheduling > (this requires root).**** > > ** ** > > If you get run-time complaints about it not finding certain libraries, > don’t forget to run ‘sudo ldconfig’.**** > > ** ** > > If you do try it out, please let me know how you go! I only have one > adapter with the E4000, so I haven’t actually tested any others myself. > Fingers crossed!**** > > ** ** > > Kind regards,**** > > Balint @spenchdotnet <http://twitter.com/spenchdotnet>**** > > _______________________________________________ > Discuss-gnuradio mailing list > [email protected] > https://lists.gnu.org/mailman/listinfo/discuss-gnuradio > >
Executing: "/home/alexc/gnuradio/rtlsdr/rtl2832.py"
Using Volk machine: sse4_2_64
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%
Found RTL2832 device: (null) (tuner: Fitipower FC2580)
Sample rate range: 900001 - 3200000 Hz
Crystal frequency: 28800000 Hz
_fc2580_i2c_write: the control request was not supported by the device [-9] @
fc2580_fci_result_type fc2580_set_init(rtl2832::tuner*, int, unsigned int):289
"FC0013_Write(pTuner, 0x00, 0x00)"
_fc2580_i2c_write: the control request was not supported by the device [-9] @
fc2580_fci_result_type fc2580_set_init(rtl2832::tuner*, int, unsigned int):290
"FC0013_Write(pTuner, 0x12, 0x86)"
_fc2580_i2c_write: the control request was not supported by the device [-9] @
fc2580_fci_result_type fc2580_set_init(rtl2832::tuner*, int, unsigned int):291
"FC0013_Write(pTuner, 0x14, 0x5C)"
_fc2580_i2c_write: the control request was not supported by the device [-9] @
fc2580_fci_result_type fc2580_set_init(rtl2832::tuner*, int, unsigned int):292
"FC0013_Write(pTuner, 0x16, 0x3C)"
_fc2580_i2c_write: the control request was not supported by the device [-9] @
fc2580_fci_result_type fc2580_set_init(rtl2832::tuner*, int, unsigned int):293
"FC0013_Write(pTuner, 0x1F, 0xD2)"
_fc2580_i2c_write: the control request was not supported by the device [-9] @
fc2580_fci_result_type fc2580_set_init(rtl2832::tuner*, int, unsigned int):294
"FC0013_Write(pTuner, 0x09, 0xD7)"
_fc2580_i2c_write: the control request was not supported by the device [-9] @
fc2580_fci_result_type fc2580_set_init(rtl2832::tuner*, int, unsigned int):295
"FC0013_Write(pTuner, 0x0B, 0xD5)"
_fc2580_i2c_write: the control request was not supported by the device [-9] @
fc2580_fci_result_type fc2580_set_init(rtl2832::tuner*, int, unsigned int):296
"FC0013_Write(pTuner, 0x0C, 0x32)"
_fc2580_i2c_write: the control request was not supported by the device [-9] @
fc2580_fci_result_type fc2580_set_init(rtl2832::tuner*, int, unsigned int):297
"FC0013_Write(pTuner, 0x0E, 0x43)"
_fc2580_i2c_write: the control request was not supported by the device [-9] @
fc2580_fci_result_type fc2580_set_init(rtl2832::tuner*, int, unsigned int):298
"FC0013_Write(pTuner, 0x21, 0x0A)"
_fc2580_i2c_write: the control request was not supported by the device [-9] @
fc2580_fci_result_type fc2580_set_init(rtl2832::tuner*, int, unsigned int):299
"FC0013_Write(pTuner, 0x22, 0x82)"
_fc2580_i2c_write: the control request was not supported by the device [-9] @
fc2580_fci_result_type fc2580_set_init(rtl2832::tuner*, int, unsigned int):307
"FC0013_Write(pTuner, 0x45, 0x20)"
_fc2580_i2c_write: the control request was not supported by the device [-9] @
fc2580_fci_result_type fc2580_set_init(rtl2832::tuner*, int, unsigned int):308
"FC0013_Write(pTuner, 0x4C, 0x02)"
_fc2580_i2c_write: the control request was not supported by the device [-9] @
fc2580_fci_result_type fc2580_set_init(rtl2832::tuner*, int, unsigned int):310
"FC0013_Write(pTuner, 0x3F, 0x88)"
_fc2580_i2c_write: the control request was not supported by the device [-9] @
fc2580_fci_result_type fc2580_set_init(rtl2832::tuner*, int, unsigned int):311
"FC0013_Write(pTuner, 0x02, 0x0E)"
_fc2580_i2c_write: the control request was not supported by the device [-9] @
fc2580_fci_result_type fc2580_set_init(rtl2832::tuner*, int, unsigned int):312
"FC0013_Write(pTuner, 0x58, 0x14)"
_fc2580_i2c_write: the control request was not supported by the device [-9] @
fc2580_fci_result_type fc2580_set_filter(rtl2832::tuner*, unsigned char,
unsigned int):539 "FC0013_Write(pTuner, 0x36, 0x18)"
_fc2580_i2c_write: the control request was not supported by the device [-9] @
fc2580_fci_result_type fc2580_set_filter(rtl2832::tuner*, unsigned char,
unsigned int):540 "FC0013_Write(pTuner, 0x37, (unsigned
char)(3300*freq_xtal/1000000))"
_fc2580_i2c_write: the control request was not supported by the device [-9] @
fc2580_fci_result_type fc2580_set_filter(rtl2832::tuner*, unsigned char,
unsigned int):541 "FC0013_Write(pTuner, 0x39, 0x80)"
_fc2580_i2c_write: the control request was not supported by the device [-9] @
fc2580_fci_result_type fc2580_set_filter(rtl2832::tuner*, unsigned char,
unsigned int):542 "FC0013_Write(pTuner, 0x2E, 0x09)"
_fc2580_i2c_read: the control request was not supported by the device [-9] @
fc2580_fci_result_type fc2580_set_filter(rtl2832::tuner*, unsigned char,
unsigned int):549 "FC0013_Read(pTuner, 0x2F, &cal_mon)"
_fc2580_i2c_write: the control request was not supported by the device [-9] @
fc2580_fci_result_type fc2580_set_filter(rtl2832::tuner*, unsigned char,
unsigned int):552 "FC0013_Write(pTuner, 0x2E, 0x01)"
_fc2580_i2c_write: the control request was not supported by the device [-9] @
fc2580_fci_result_type fc2580_set_filter(rtl2832::tuner*, unsigned char,
unsigned int):553 "FC0013_Write(pTuner, 0x2E, 0x09)"
_fc2580_i2c_read: the control request was not supported by the device [-9] @
fc2580_fci_result_type fc2580_set_filter(rtl2832::tuner*, unsigned char,
unsigned int):549 "FC0013_Read(pTuner, 0x2F, &cal_mon)"
_fc2580_i2c_write: the control request was not supported by the device [-9] @
fc2580_fci_result_type fc2580_set_filter(rtl2832::tuner*, unsigned char,
unsigned int):552 "FC0013_Write(pTuner, 0x2E, 0x01)"
_fc2580_i2c_write: the control request was not supported by the device [-9] @
fc2580_fci_result_type fc2580_set_filter(rtl2832::tuner*, unsigned char,
unsigned int):553 "FC0013_Write(pTuner, 0x2E, 0x09)"
_fc2580_i2c_read: the control request was not supported by the device [-9] @
fc2580_fci_result_type fc2580_set_filter(rtl2832::tuner*, unsigned char,
unsigned int):549 "FC0013_Read(pTuner, 0x2F, &cal_mon)"
_fc2580_i2c_write: the control request was not supported by the device [-9] @
fc2580_fci_result_type fc2580_set_filter(rtl2832::tuner*, unsigned char,
unsigned int):552 "FC0013_Write(pTuner, 0x2E, 0x01)"
_fc2580_i2c_write: the control request was not supported by the device [-9] @
fc2580_fci_result_type fc2580_set_filter(rtl2832::tuner*, unsigned char,
unsigned int):553 "FC0013_Write(pTuner, 0x2E, 0x09)"
_fc2580_i2c_read: the control request was not supported by the device [-9] @
fc2580_fci_result_type fc2580_set_filter(rtl2832::tuner*, unsigned char,
unsigned int):549 "FC0013_Read(pTuner, 0x2F, &cal_mon)"
_fc2580_i2c_write: the control request was not supported by the device [-9] @
fc2580_fci_result_type fc2580_set_filter(rtl2832::tuner*, unsigned char,
unsigned int):552 "FC0013_Write(pTuner, 0x2E, 0x01)"
_fc2580_i2c_write: the control request was not supported by the device [-9] @
fc2580_fci_result_type fc2580_set_filter(rtl2832::tuner*, unsigned char,
unsigned int):553 "FC0013_Write(pTuner, 0x2E, 0x09)"
_fc2580_i2c_read: the control request was not supported by the device [-9] @
fc2580_fci_result_type fc2580_set_filter(rtl2832::tuner*, unsigned char,
unsigned int):549 "FC0013_Read(pTuner, 0x2F, &cal_mon)"
_fc2580_i2c_write: the control request was not supported by the device [-9] @
fc2580_fci_result_type fc2580_set_filter(rtl2832::tuner*, unsigned char,
unsigned int):552 "FC0013_Write(pTuner, 0x2E, 0x01)"
_fc2580_i2c_write: the control request was not supported by the device [-9] @
fc2580_fci_result_type fc2580_set_filter(rtl2832::tuner*, unsigned char,
unsigned int):553 "FC0013_Write(pTuner, 0x2E, 0x09)"
_fc2580_i2c_write: the control request was not supported by the device [-9] @
fc2580_fci_result_type fc2580_set_filter(rtl2832::tuner*, unsigned char,
unsigned int):559 "FC0013_Write(pTuner, 0x2E, 0x01)"
Failed to initialise tuner
Traceback (most recent call last):
File "/home/alexc/gnuradio/rtlsdr/rtl2832.py", line 99, in <module>
tb = rtl2832()
File "/home/alexc/gnuradio/rtlsdr/rtl2832.py", line 62, in __init__
if self.rtl2832_source_0.create() == False: raise Exception("Failed to
create RTL2832 Source: rtl2832_source_0")
Exception: Failed to create RTL2832 Source: rtl2832_source_0
>>> Done
rtl2832.grc
Description: Binary data
Generating: "/home/alexc/gnuradio/rtlsdr/rtl2832.py"
>>> Warning: This flow graph may not have flow control: no audio or usrp blocks
>>> found. Add a Misc->Throttle block to your flow graph to avoid CPU
>>> congestion.
Executing: "/home/alexc/gnuradio/rtlsdr/rtl2832.py"
Using Volk machine: sse4_2_64
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%
Found RTL2832 device: (null) (tuner: Fitipower FC2580)
Sample rate range: 900001 - 3200000 Hz
Crystal frequency: 28800000 Hz
[fc2580] Initialised (default bandwidth: 8000000 Hz)
Wait delay: 24.576 ms
Capture threading starting: 0x3c1eb30
Finished buffering (81920/131072) [#0]
>>> Done
_______________________________________________ Discuss-gnuradio mailing list [email protected] https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
