Lack of gpiod2 compatibility
Hi David,
I have Somfy Keytis 2 RTS remote for door opening. I was trying to play with this a bit and check if I can decode this using original/official RTL_SDR dongle.
I was trying to compile your project on Arch. Unfortunately it seems that it is only for older gpiod 1.6x library? In Arch currently is the latest 2.0.1 package and when compiling I've got a plenty of errors like:
[2/26] Compiling C++ object subprojects/librts/librts.a.p/src_backend_gpiod_GPIODPlaybackThread.cpp.o
FAILED: subprojects/librts/librts.a.p/src_backend_gpiod_GPIODPlaybackThread.cpp.o
c++ -Isubprojects/librts/librts.a.p -Isubprojects/librts -I../subprojects/librts -I../subprojects/librts/include/rts -I/usr/include -I/usr/include/ -fdiagnostics-color=always -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -std=c++17 -O0 -g -fPIC -DBOOST_ALL_NO_LIB -pthread -DRTS_HAVE_RTLSDR -MD -MQ subprojects/librts/librts.a.p/src_backend_gpiod_GPIODPlaybackThread.cpp.o -MF subprojects/librts/librts.a.p/src_backend_gpiod_GPIODPlaybackThread.cpp.o.d -o subprojects/librts/librts.a.p/src_backend_gpiod_GPIODPlaybackThread.cpp.o -c ../subprojects/librts/src/backend/gpiod/GPIODPlaybackThread.cpp
In file included from ../subprojects/librts/src/backend/gpiod/GPIODPlaybackThread.cpp:19:
../subprojects/librts/include/rts/backend/gpiod/GPIODPlaybackThread.h:32:40: error: expected ‘)’ before ‘&’ token
32 | GPIODPlaybackThread(gpiod::line & line);
| ~ ^~
| )
../subprojects/librts/include/rts/backend/gpiod/GPIODPlaybackThread.h:39:16: error: ‘line’ in namespace ‘gpiod’ does not name a type
39 | gpiod::line & m_line;
| ^~~~
In file included from /usr/include/gpiodcxx/chip.hpp:21,
from /usr/include/gpiod.hpp:29,
from ../subprojects/librts/include/rts/backend/gpiod/GPIODPlaybackThread.h:22:
/usr/include/gpiodcxx/line.hpp:24:11: note: ‘gpiod::line’ declared here
24 | namespace line {
| ^~~~
../subprojects/librts/src/backend/gpiod/GPIODPlaybackThread.cpp:24:41: error: expected constructor, destructor, or type conversion before ‘(’ token
24 | GPIODPlaybackThread::GPIODPlaybackThread(gpiod::line & line):
| ^
../subprojects/librts/src/backend/gpiod/GPIODPlaybackThread.cpp: In member function ‘void rts::GPIODPlaybackThread::write(bool)’:
../subprojects/librts/src/backend/gpiod/GPIODPlaybackThread.cpp:30:9: error: ‘m_line’ was not declared in this scope; did you mean ‘inline’?
30 | m_line.set_value(value);
| ^~~~~~
| inline
[3/26] Compiling C++ object subprojects/librts/librts.a.p/src_backend_rpi-gpio_RPiGPIOPlaybackThread.cpp.o
I was trying to adjust this to the new library but finally I gave up :(
As a result I disabled all GPIOD and rpi-gio objects in meson.build and it compiles fine. The only application I wanted at this stage was: sdr-log-somfy-decoder. Unfortunately I cannot also compile somfy-decoder -B because the above errors. I hope I don't need it when I do the below:
So after your readme I invoked:
rtl_sdr -f 433420000 -s 2600000 -g 1 captured_``data.iq
and then:
sdr-log-somfy-decoder -f ./captured_``data.iq
But the only effect of this was the empty output and back to the prompt.
I was also trying to use different gain levels (up to max of almost 50dB) etc.
I cannot obtain any readable decoded data for different key presses on the remote.
I am sure that the frequency is correct because I can see the waveform in SDR++ when I push the button, but sdr-log-somfy-decoder just gives me always empty results (after some processing time).
Do you have any tips for me? Is there some debug available? Do i need to adjust tolerance? Or maybe this Somfy hardware is not supported (but it is RTS so I believe it should show something in your tool).