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 <balint...@gmail.com> 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 > Discuss-gnuradio@gnu.org > 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 Discuss-gnuradio@gnu.org https://lists.gnu.org/mailman/listinfo/discuss-gnuradio