Comments welcome :-)
/Tommy
The aliasing doesn't harm IIRC. The origins of the decimation code was
from when I used a 1024k sample rate. It should be fairly easy to re-add
decimation support if someone needs it. Thus feel free to remove it for now.
Well these tables should fit in the data cache.
RPi as main target is fine by me. But I'd rather not use float at all.
If float code is added I would like to have a fixed point version also
available for regression testing.
Do anyone have some FSK modulated devices they would like to have taken into consideration? Then please make some test data recordings, descriptions etc. and make a pull request to https://github.com/vestom/rtl_433_tests (I will push it upstream).
If the recordings from rtl_433 -a -t are sufficient, because I think those also give 8 bit I/Q samples(?), See rtl_433_tests/tests/lacrosse/02.
Hi,
I am currently working on adding support for Frequency Shift Keying encoded signals in addition to On/Off Keying and is therefore making somewhat bigger changes to the baseband processing. Before going too far down the road, I would like to discuss some items:
- Removal of hidden support for decimation. The code currently has an undocumented option (-c) for decimating the sample rate of the input signal. I believe this functionality is fundamentally broken, as the pulse timing in the decoders is not compensated for proper decoding. Furthermore the decimation is done without any anti-aliasing filtering and will result in excessive noise and artefacts. Instead I will recommend to just adjust the input sample rate, such that filtering, timing, CPU usage etc. scales correctly.
Will anyone miss, if I remove the code for this?
- Target hardware. The sample-by-sample processing in the baseband code is somewhat CPU sensitive. Some of the current code has some explicit optimizations like envelope_detect() ("AM demodulator"), which uses a look-up table instead of integer arithmetic. As most CPUs capable of running a contemporary Linux kernel will have cheap integer arithmetic and expensive memory access I believe some of these optimizations are dubious. Even somewhat usable floating-point is becoming prevalent.
My personal definition of a low-end target for this program is something like a Raspberry Pi (using it myself :-) and I would make its performance characteristics determine the optimizations. What do other consider an optimization target?
- Generic FSK device support. I have single FSK modulated device myself, driving my development. However there is a risk of optimizing too much for this single device. Do anyone have some FSK modulated devices they would like to have taken into consideration? Then please make some test data recordings, descriptions etc. and make a pull request to https://github.com/vestom/rtl_433_tests (I will push it upstream).
Comments welcome :-)
/Tommy
On Friday, August 14, 2015 at 4:19:05 AM UTC+2, Robert Terzi wrote:If the recordings from rtl_433 -a -t are sufficient, because I think those also give 8 bit I/Q samples(?), See rtl_433_tests/tests/lacrosse/02.
I/Q recordings from -a -t are preferred.
I looked into the files under rtl_433_tests/tests/lacrosse/02 with Audacity, and I am positively sure, they are not FSK encoded. It looks mostly like OOK PCM NRZ encoding. The pulses/bits are only 30 samples wide, so they were filtered away before we relaxed the low pass filter.
Does your latest code create 8 bit raw I/Q before filtering with -a -t?
I own a couple of "Conrad Energy Count 3000" aka "Velleman NETBSEM4” and “La Crosse Techology Remote Cost Control Monitor – RS3620”.You might want to have a look at a blogpost I wrote: https://batilanblog.wordpress.com/2015/02/17/using-ec3k-with-raspberry-pi/ (skip the whole linux / installation bit but the references are interesting
However I wonder if we can somehow cooperate for the higher level decodings with the uP world (like Atmel, TI TM4C123 etc.), a lot is going on there and a lot of decoders are available already. If we can join forces that would probably benefit both "worlds". Probably this is not too relevant for the FSK decoding, but we might want t have a look at this aspect.
On Friday, August 14, 2015 at 11:47:37 PM UTC+2, Batilan wrote:I own a couple of "Conrad Energy Count 3000" aka "Velleman NETBSEM4” and “La Crosse Techology Remote Cost Control Monitor – RS3620”.You might want to have a look at a blogpost I wrote: https://batilanblog.wordpress.com/2015/02/17/using-ec3k-with-raspberry-pi/ (skip the whole linux / installation bit but the references are interestingThat may be very useful! Is it possible you could make some recordings/captures with rtl_433 -a -t of these transmitters and make a pull request against
https://github.com/vestom/rtl_433_tests ?
Just posted some samples on rtl_433_test (tests/ec3k/01), hope it can be of some use to you.If we can generate some bit-sequences from the FSK signal I would like to support the higher-level layer decoding (all credits go to Tomaz Solc for ec3k and "Thosch" on http://forum.jeelabs.net/comment/4972.html#comment-4972)It should be quite trivial from the ec3k code.
Sorry, now see you requested the pull request against your fork of rtl_433_test, I did the request directly on Benjamin's master
I simulated the baseband filtering and quantizer in Octave before implementation and have included graphs for both sensors with output from both Octave and rtl_433. They seem to mach well :-)
I will regression test and fine-tune a bit more before upstreaming - but it should be ready for tinkering and feedback is very welcome :-)
It is available here: https://github.com/vestom/rtl_433/tree/experimental
/Tommy