π¬ Building a Raspberry Pi Gateway
-
Hi All
I'm just venturing into this world of building my own sensors - but perhaps i am a tad late? Two months since last update.. Typically me - showing up to the party when everybody else has left.
My main issue is, i am running the Raspberry Pi 4 - and when trying to build (i've tried both the development and master builds) i get from 4 (master build) to A BUNCH (development) of errors. First of all, the autodetect of SoC does not work for me either (just like @alowhum, and with the same warnings), and when using --help the actual SoC is not listed either, so should i just assume it does not work for Raspberry Pi 4?
Is there any chance the 4 will be supported soon?
Just a note - i can actually complete the configure and then make - but unfortunately i just get a TSP error when trying to fire up the radio.
Hope i can get this working as it was the main reason for upgrading my RaspberryPi version 1 to a version 4 :man-facepalming:
Thanks in advance for any and all help!
-
Hi All
I'm just venturing into this world of building my own sensors - but perhaps i am a tad late? Two months since last update.. Typically me - showing up to the party when everybody else has left.
My main issue is, i am running the Raspberry Pi 4 - and when trying to build (i've tried both the development and master builds) i get from 4 (master build) to A BUNCH (development) of errors. First of all, the autodetect of SoC does not work for me either (just like @alowhum, and with the same warnings), and when using --help the actual SoC is not listed either, so should i just assume it does not work for Raspberry Pi 4?
Is there any chance the 4 will be supported soon?
Just a note - i can actually complete the configure and then make - but unfortunately i just get a TSP error when trying to fire up the radio.
Hope i can get this working as it was the main reason for upgrading my RaspberryPi version 1 to a version 4 :man-facepalming:
Thanks in advance for any and all help!
Thanks for sharing your experience @swedchef
From the problems reported by users (you included), it seems like the rpi4 is quite different fom the earlier rpis. To add support, the following ingredients are needed in one person
- person needs to have sufficient knowledge and skills to figure out how to support the rpi4
- person needs to have sufficient time to do the work
- person needs to have a rpi4
- person needs to be sufficiently interested/motivated to do the work
It seems like, so far, we haven't found this person (or this person hasn't found us).
-
Thanks for sharing your experience @swedchef
From the problems reported by users (you included), it seems like the rpi4 is quite different fom the earlier rpis. To add support, the following ingredients are needed in one person
- person needs to have sufficient knowledge and skills to figure out how to support the rpi4
- person needs to have sufficient time to do the work
- person needs to have a rpi4
- person needs to be sufficiently interested/motivated to do the work
It seems like, so far, we haven't found this person (or this person hasn't found us).
Re: π¬ Building a Raspberry Pi Gateway
Hi all,
i compile with success the gateway in Raspberry PI 4 (with some code modification)
this is not perfect.. but it works.
if someone wants to try, i upload the gateway compiled with this options :
--my-transport=rf24 --my-gateway=ethernet --my-port=5003 -
Re: π¬ Building a Raspberry Pi Gateway
Hi all,
i compile with success the gateway in Raspberry PI 4 (with some code modification)
this is not perfect.. but it works.
if someone wants to try, i upload the gateway compiled with this options :
--my-transport=rf24 --my-gateway=ethernet --my-port=5003@phildefer could you please share what you changed? The security concerned might not be comfortable running a binary with unspecified changes that manages their home automation setup. Especially not a project supposed to be open source.
-
Re: π¬ Building a Raspberry Pi Gateway
Hi all,
i compile with success the gateway in Raspberry PI 4 (with some code modification)
this is not perfect.. but it works.
if someone wants to try, i upload the gateway compiled with this options :
--my-transport=rf24 --my-gateway=ethernet --my-port=5003 -
@phildefer would you mind sharing the code modifications that were needed?
@mfalkvidd @Anticimex : yes i sharing the code perhaps this week end. I need to find time to make a PR to GITHUB
As I said, my code may not be as clean as you'd like, but it works. -
Hey all,
I got the same problem as @swedchef and saw the warnings @alowhum mentioned.
Simply upping the buffer that is declared in GPIO.cpp solved the warnings and made it compile without issue but the radio still won't work.
Maybe it has to do with the soc not being detected, as mentioned, and that the pin positions on the new soc are different from previous ones.@phildefer, weekend has come and gone buddy. Patience is a virtue some do not have. :)
Edit: So looking a little more through the files today i see that configure looks for the soc type in /proc/cpuinfo and funnily my raspi 4 reports a BCM2835
-
Hey all,
I got the same problem as @swedchef and saw the warnings @alowhum mentioned.
Simply upping the buffer that is declared in GPIO.cpp solved the warnings and made it compile without issue but the radio still won't work.
Maybe it has to do with the soc not being detected, as mentioned, and that the pin positions on the new soc are different from previous ones.@phildefer, weekend has come and gone buddy. Patience is a virtue some do not have. :)
Edit: So looking a little more through the files today i see that configure looks for the soc type in /proc/cpuinfo and funnily my raspi 4 reports a BCM2835
@patrikr76 I beleive @phildefer pushed the code 4 days ago. See https://github.com/mysensors/MySensors/pull/1353
Something has seriously mangled whitespace in the modified code, but apart from that it looks good to me, but I am not that familiar with the rpi code and I have not tested it myself.
-
@patrikr76 I beleive @phildefer pushed the code 4 days ago. See https://github.com/mysensors/MySensors/pull/1353
Something has seriously mangled whitespace in the modified code, but apart from that it looks good to me, but I am not that familiar with the rpi code and I have not tested it myself.
@mfalkvidd said in π¬ Building a Raspberry Pi Gateway:
@patrikr76 I beleive @phildefer pushed the code 4 days ago. See https://github.com/mysensors/MySensors/pull/1353
You are correct.
@phildefer, thank you.
There were a couple of minor warnings about indentations and the buffer size i mentioned earlier fixed by upping the declared buffer in GPIO.cpp. Not sure if that is a good fix or not, the warning goes away though.
A few other warnings looks like this:In member function βchar* MyMessage::getString(char*) constβ, inlined from βbool transportSendWrite(uint8_t, MyMessage&)β at ./core/MyTransport.cpp:987:2, inlined from βbool transportRouteMessage(MyMessage&)β at ./core/MyTransport.cpp:560:40, inlined from βvoid stUplinkTransition()β at ./core/MyTransport.cpp:252:29: ./core/MyMessage.cpp:284:17: warning: βchar* strncpy(char*, const char*, size_t)β output may be truncated copying between 0 and 25 bytes from a string of length 25 [-Wstringop-truncation] (void)strncpy(buffer, this->data, this->getLength()); ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~Not sure how to fix those.
Edit: Forgot to mention, it seems to be working though.
-
Thanks guys for the effort to port MySensors for the Pi 4.
I'm very interested, but my coding skills are not sufficient to help in the development. Maybe I can do some debug when my Pi4 will arrive
MySensors for the Pi4 is a must-have!π
-
@patrikr76 I beleive @phildefer pushed the code 4 days ago. See https://github.com/mysensors/MySensors/pull/1353
Something has seriously mangled whitespace in the modified code, but apart from that it looks good to me, but I am not that familiar with the rpi code and I have not tested it myself.
I can confirm that the code compiles and runs on my rasbperry pi 4 model b. I am using a rfm69 radio and that seems to be working too. I couldn't test it yet though since I haven't wired any rfm69 nodes up yet.
-
I can confirm that the code compiles and runs on my rasbperry pi 4 model b. I am using a rfm69 radio and that seems to be working too. I couldn't test it yet though since I haven't wired any rfm69 nodes up yet.
@kiesel Good news!π
I will test both (nrf24 and rfm69) when my Pi 4 arrive. -
Ok my Pi 4 is arrived. I have 2 gateway, one RFM69 and one NRF24 connected respectively to spi0 and spi1. Details here.
With a Raspberry Pi 3 all works fine (compilation and execution) with both Rasbian Stretch and with Raspbian Buster.
With a Raspberry Pi 4 and the same version of Rasbian Buster the situation is a bit different:
-
The RFM69 gateway on the SPI0 compiles and can be executed without problems. In this days I don't have an RFM69 radio module, so I don't know if it works, but the daemon start in a regular way.
-
The NRF24 gateway compile, but after few seconds of execution the daemon stops with the following error.
Oct 26 13:59:47 ERROR Could not open /sys/class/gpio/gpio12/directionConsidering that the same configuration works for a Pi 3, it is possible that the error is caused by the autodetect of SoC issue mentioned above?
The details of my /boot/config.txt file are here
-
-
Update:
-
tested the RFM69 gateway with a radio module attached -> Not working
-
tried to compile and execute the NRF24 gateway on the first spi bus (--spi-spidev-device=/dev/spidev0.0) -> same error as above
ERROR Could not open /sys/class/gpio/gpio12/directionI have checked my Makefile and configure files and they don't contain the modification proposed by @phildefer . Is this normal? I'm using the development branch.
-
-
Tested with this commit of @phildefer, now both gateways compiles and starts but for both I got this error.
Oct 27 20:50:41 DEBUG !TSM:INIT:TSP FAIL -
Hi, if someone needs more info (debug, log, etc...) I'm here.
I can perform tests on Rpi 3 and Rpi 4 (Raspbian Buster) with NRF24 and RFM69 radio modules and then report the results. Not so much but maybe this can help the development.
-
I'm doing a brand new install of Openhab2 and the mysensors gateway on a new Raspberry Pi 4 after having run Openhab(1) and the mysensors gateway successfully on a Raspberry Pi 3 for years. I used the development branch of the mysensorsgateway as discussed here: https://github.com/mysensors/MySensors/pull/1364
I wrote down my step by step procedure here in case it helps someone else. I'm starting out with the pre-built Openhabian image found here: https://www.openhab.org/docs/installation/openhabian.html
Install the PiGatewaySerial using these instructions:
- First get to your Downloads directory
cd cd Downloads- Clone the MySensors repository into your Downloads directory and then go into that folder
git clone https://github.com/mysensors/MySensors.git --branch development cd MySensors- Set configuration options (you can use β./configure βhelpβ to see your options)
a. In this case we are choosing to use the serial gateway with a pseudo terminal and a symbolic link to that pseudoterminal called ttyUSB20 in /dev. We then set the group to tty.
./configure --my-gateway=serial --my-serial-is-pty --my-serial-pty=/dev/ttyUSB20 --my-serial-groupname=ttyEdit: If building this on a 64bit operating system you will need to edit the configure file before running make. Do the following:
cp configure configure_bk nano configureFind this function
function gcc_cpu_flags { local soc=$1 case $soc inand find your CPU. In my case it is the BCM2711 (I've only done this on this one CPU so your mileage may vary) and I changed this:
BCM2711) flags="-march=armv8-a+crc -mtune=cortex-a72 -mfpu=neon-fp-armv8 -mfloat-abi=hard"to this:
BCM2711) flags="-march=armv8-a+crc -mtune=cortex-a72"Then proceed to step 4 below.
- Run make and make install
make sudo make install- We can set it to launch on boot up by running
sudo systemctl enable mysgw.service- To launch it manually right now run (skip this step to run and see output for confirmation that it works)
sudo systemctl start mysgw.service- Executable in located:
cd /usr/local/bin- need root to run it:
sudo mysgwThat's pretty much it. I was happily greeted with:
Dec 29 16:01:50 INFO Starting gateway...
Dec 29 16:01:50 INFO Protocol version - 2.4.0-alpha
Dec 29 16:01:50 DEBUG Serial port /dev/ttyUSB20 (115200 baud) created
Dec 29 16:01:50 DEBUG MCO:BGN:INIT GW,CP=RNNGL---,FQ=NA,REL=0,VER=2.4.0-alpha
Dec 29 16:01:50 DEBUG TSF:LRT:OK
Dec 29 16:01:50 DEBUG TSM:INIT
Dec 29 16:01:50 DEBUG TSF:WUR:MS=0
Dec 29 16:01:50 DEBUG TSM:INIT:TSP OK
Dec 29 16:01:50 DEBUG TSM:INIT:GW MODE
Dec 29 16:01:50 DEBUG TSM:READY:ID=0,PAR=0,DIS=0
Dec 29 16:01:50 DEBUG MCO:REG:NOT NEEDED
Dec 29 16:01:50 DEBUG MCO:BGN:STP
Dec 29 16:01:50 DEBUG MCO:BGN:INIT OK,TSP=1
Dec 29 16:01:50 DEBUG TSM:READY:NWD REQ
Dec 29 16:01:50 DEBUG ?TSF:MSG:SEND,0-0-255-255,s=255,c=3,t=20,pt=0,l=0,sg=0,ft=0,st=OK:
Dec 29 16:01:50 DEBUG TSF:MSG:READ,4-4-0,s=255,c=3,t=21,pt=1,l=1,sg=0:0
Dec 29 16:01:50 DEBUG TSF:MSG:READ,0-4-255,s=255,c=3,t=20,pt=0,l=0,sg=0:
Dec 29 16:01:50 DEBUG TSF:MSG:BC
Dec 29 16:01:52 DEBUG TSF:MSG:READ,4-4-0,s=1,c=1,t=2,pt=2,l=2,sg=0:0
Dec 29 16:01:52 DEBUG TSF:MSG:READ,4-4-0,s=2,c=1,t=2,pt=2,l=2,sg=0:0
Dec 29 16:01:52 DEBUG TSF:MSG:READ,4-4-0,s=3,c=1,t=2,pt=2,l=2,sg=0:1
Dec 29 16:01:52 DEBUG TSF:MSG:READ,4-4-0,s=4,c=1,t=2,pt=2,l=2,sg=0:1
^CDec 29 16:02:35 NOTICE Received SIGINT -
Be advised that there seems to be an issue with rfm69HW on the raspberry pi:
When using the radio directly on the pi (not as a serial gateway) the range drops significantly:
https://github.com/mysensors/MySensors/issues/1367
Apparently this wasn't an issue with mysensors 2.2, so using that is an option if you can compile it for you raspberry pi.
-
I'm getting a bad file descriptor error, any advice? Seems only 1 instance to be running.
pi@raspberrypi:~ $ sudo mysgw Mar 19 20:14:04 INFO Starting gateway... Mar 19 20:14:04 INFO Protocol version - 2.3.2 Mar 19 20:14:04 DEBUG MCO:BGN:INIT GW,CP=RNNGL---,FQ=NA,REL=255,VER=2.3.2 Mar 19 20:14:04 DEBUG TSF:LRT:OK Mar 19 20:14:04 DEBUG TSM:INIT Mar 19 20:14:04 DEBUG TSF:WUR:MS=0 Mar 19 20:14:04 DEBUG TSM:INIT:TSP OK Mar 19 20:14:04 DEBUG TSM:INIT:GW MODE Mar 19 20:14:04 DEBUG TSM:READY:ID=0,PAR=0,DIS=0 Mar 19 20:14:04 DEBUG MCO:REG:NOT NEEDED Mar 19 20:14:04 ERROR bind: Address already in use Mar 19 20:14:04 ERROR Failed to bind! Mar 19 20:14:04 DEBUG MCO:BGN:STP Mar 19 20:14:04 DEBUG MCO:BGN:INIT OK,TSP=1 Mar 19 20:14:04 ERROR accept: Bad file descriptor Mar 19 20:14:04 ERROR accept: Bad file descriptor Mar 19 20:14:04 ERROR accept: Bad file descriptor Mar 19 20:14:04 ERROR accept: Bad file descriptor Mar 19 20:14:04 ERROR accept: Bad file descriptor Mar 19 20:14:04 ERROR accept: Bad file descriptor Mar 19 20:14:04 ERROR accept: Bad file descriptor Mar 19 20:14:04 ERROR accept: Bad file descriptor Mar 19 20:14:04 ERROR accept: Bad file descriptor Mar 19 20:14:04 ERROR accept: Bad file descriptor Mar 19 20:14:04 DEBUG TSM:READY:NWD REQ Mar 19 20:14:04 DEBUG ?TSF:MSG:SEND,0-0-255-255,s=255,c=3,t=20,pt=0,l=0,sg=0,ft=0,st=OK: Mar 19 20:14:04 ERROR accept: Bad file descriptor Mar 19 20:14:04 ERROR accept: Bad file descriptor Mar 19 20:14:04 ERROR accept: Bad file descriptor Mar 19 20:14:04 ERROR accept: Bad file descriptor Mar 19 20:14:04 ERROR accept: Bad file descriptor -
I'm getting a bad file descriptor error, any advice? Seems only 1 instance to be running.
pi@raspberrypi:~ $ sudo mysgw Mar 19 20:14:04 INFO Starting gateway... Mar 19 20:14:04 INFO Protocol version - 2.3.2 Mar 19 20:14:04 DEBUG MCO:BGN:INIT GW,CP=RNNGL---,FQ=NA,REL=255,VER=2.3.2 Mar 19 20:14:04 DEBUG TSF:LRT:OK Mar 19 20:14:04 DEBUG TSM:INIT Mar 19 20:14:04 DEBUG TSF:WUR:MS=0 Mar 19 20:14:04 DEBUG TSM:INIT:TSP OK Mar 19 20:14:04 DEBUG TSM:INIT:GW MODE Mar 19 20:14:04 DEBUG TSM:READY:ID=0,PAR=0,DIS=0 Mar 19 20:14:04 DEBUG MCO:REG:NOT NEEDED Mar 19 20:14:04 ERROR bind: Address already in use Mar 19 20:14:04 ERROR Failed to bind! Mar 19 20:14:04 DEBUG MCO:BGN:STP Mar 19 20:14:04 DEBUG MCO:BGN:INIT OK,TSP=1 Mar 19 20:14:04 ERROR accept: Bad file descriptor Mar 19 20:14:04 ERROR accept: Bad file descriptor Mar 19 20:14:04 ERROR accept: Bad file descriptor Mar 19 20:14:04 ERROR accept: Bad file descriptor Mar 19 20:14:04 ERROR accept: Bad file descriptor Mar 19 20:14:04 ERROR accept: Bad file descriptor Mar 19 20:14:04 ERROR accept: Bad file descriptor Mar 19 20:14:04 ERROR accept: Bad file descriptor Mar 19 20:14:04 ERROR accept: Bad file descriptor Mar 19 20:14:04 ERROR accept: Bad file descriptor Mar 19 20:14:04 DEBUG TSM:READY:NWD REQ Mar 19 20:14:04 DEBUG ?TSF:MSG:SEND,0-0-255-255,s=255,c=3,t=20,pt=0,l=0,sg=0,ft=0,st=OK: Mar 19 20:14:04 ERROR accept: Bad file descriptor Mar 19 20:14:04 ERROR accept: Bad file descriptor Mar 19 20:14:04 ERROR accept: Bad file descriptor Mar 19 20:14:04 ERROR accept: Bad file descriptor Mar 19 20:14:04 ERROR accept: Bad file descriptor