Mysensors Gateway on OrangePi (Zero) (opi)
-
i have problem with compile source domoticz(i must use source domoticz for my changes) in armbian, so i have to use ubuntu.
@marceloaqno can you help me to run mysensors gateway in orangepi one (ubuntu os).thank you -
Hi All,
I put together the steps to get MySensors running on the OrangePi Zero:
Take note of the SPI part, 1 typo and you will not see /dev/spidev1.0-
Download and Install the ARMbian(debian) OS image
https://www.armbian.com/orange-pi-zero/ -
Install sunxi-tools:
These tools are required to make changes in the boot area of the system
sudo apt-get update sudo apt-get install sunxi-tools- How to add /dev/spidev1.0 (which is required since /dev/spidev0.0 is used for the onboard NAND flash)
cd /boot bin2fex /boot/script.bin /root/myscript.txtNow edit /root/myscript.bin and add/change the following so it looks exactly like the part below:
[spi0] spi_used = 1 spi_cs_bitmap = 1 spi_mosi = port:PC00<3><default><default><default> spi_miso = port:PC01<3><default><default><default> spi_sclk = port:PC02<3><default><default><default> spi_cs0 = port:PC03<3><1><default><default> [spi1] spi_used = 1 spi_cs_bitmap = 1 spi_cs0 = port:PA13<2><1><default><default> spi_sclk = port:PA14<2><default><default><default> spi_mosi = port:PA15<2><default><default><default> spi_miso = port:PA16<2><default><default><default> [spi_devices] spi_dev_num = 2 [spi_board0] modalias = "spidev" max_speed_hz = 33000000 bus_num = 0 chip_select = 0 mode = 0 full_duplex = 1 manual_cs = 0 [spi_board1] modalias = "spidev" max_speed_hz = 33000000 bus_num = 1 chip_select = 0 mode = 0 full_duplex = 1 manual_cs = 0- Then recompile the script file:
fex2bin /root/myscript.txt /boot/script.binReboot the system
reboot2 device files should exist now:
root@orangepizero:~# ls -l /dev/spi* crw------- 1 root root 153, 0 Jan 11 16:31 /dev/spidev0.0 crw------- 1 root root 153, 1 Jan 11 16:31 /dev/spidev1.0Load the gpio module
modprobe gpio-sunxiTo load the module gpio-sunxi automagically load at boot time, add gpio-sunxi to /etc/modules
echo gpio-sunxi >> /etc/modules- Now it is time to install the GW.
cd /root git clone https://github.com/marceloaqno/MySensors.git orangepi cd orangepi/ git pull origin spidev ./configure --spi-spidev-device=/dev/spidev1.0 makeWorking like a charm!
If you tested "/bin/mysgw -d" and all works as expected, make the installation permanent:
make installAdditional
If you want to read data into a controller using a device file (i.e Mycontroller) use the build string below./configure --spi-spidev-device=/dev/spidev1.0 --my-gateway=serial --my-serial-is-pty --my-serial-pty=/dev/ttyMySensorsGatewayHope this helps!! have fun!!
-
-
Hi All,
I put together the steps to get MySensors running on the OrangePi Zero:
Take note of the SPI part, 1 typo and you will not see /dev/spidev1.0-
Download and Install the ARMbian(debian) OS image
https://www.armbian.com/orange-pi-zero/ -
Install sunxi-tools:
These tools are required to make changes in the boot area of the system
sudo apt-get update sudo apt-get install sunxi-tools- How to add /dev/spidev1.0 (which is required since /dev/spidev0.0 is used for the onboard NAND flash)
cd /boot bin2fex /boot/script.bin /root/myscript.txtNow edit /root/myscript.bin and add/change the following so it looks exactly like the part below:
[spi0] spi_used = 1 spi_cs_bitmap = 1 spi_mosi = port:PC00<3><default><default><default> spi_miso = port:PC01<3><default><default><default> spi_sclk = port:PC02<3><default><default><default> spi_cs0 = port:PC03<3><1><default><default> [spi1] spi_used = 1 spi_cs_bitmap = 1 spi_cs0 = port:PA13<2><1><default><default> spi_sclk = port:PA14<2><default><default><default> spi_mosi = port:PA15<2><default><default><default> spi_miso = port:PA16<2><default><default><default> [spi_devices] spi_dev_num = 2 [spi_board0] modalias = "spidev" max_speed_hz = 33000000 bus_num = 0 chip_select = 0 mode = 0 full_duplex = 1 manual_cs = 0 [spi_board1] modalias = "spidev" max_speed_hz = 33000000 bus_num = 1 chip_select = 0 mode = 0 full_duplex = 1 manual_cs = 0- Then recompile the script file:
fex2bin /root/myscript.txt /boot/script.binReboot the system
reboot2 device files should exist now:
root@orangepizero:~# ls -l /dev/spi* crw------- 1 root root 153, 0 Jan 11 16:31 /dev/spidev0.0 crw------- 1 root root 153, 1 Jan 11 16:31 /dev/spidev1.0Load the gpio module
modprobe gpio-sunxiTo load the module gpio-sunxi automagically load at boot time, add gpio-sunxi to /etc/modules
echo gpio-sunxi >> /etc/modules- Now it is time to install the GW.
cd /root git clone https://github.com/marceloaqno/MySensors.git orangepi cd orangepi/ git pull origin spidev ./configure --spi-spidev-device=/dev/spidev1.0 makeWorking like a charm!
If you tested "/bin/mysgw -d" and all works as expected, make the installation permanent:
make installAdditional
If you want to read data into a controller using a device file (i.e Mycontroller) use the build string below./configure --spi-spidev-device=/dev/spidev1.0 --my-gateway=serial --my-serial-is-pty --my-serial-pty=/dev/ttyMySensorsGatewayHope this helps!! have fun!!
@Tag great! Thanks for the detailed explanation :clap:
I will add to the instructions page -
-
out of curiousity: this all relates to 3.x kernel in armbian right? which has proprietary stuff in there?
i read somewhere that mainline 4.10 SPI is "work in progress"
-
Instructions page updated, let me know if there is any mistake.
-
Instructions page updated, let me know if there is any mistake.
looks great!! thx!!:thumbsup:
-
Excellent work !!! It finally works, I believe the slight mistake was with the damn SPI device ID. Now that I've enabled /dev/spidev1.0 everything works perfect. Really nice job and awesome commitment to showing people that it's time for them to pull their heads out of their a.... and spend less for way more awesome boards because let's face it, RPi has the greatest community support but it's a nothing more than an expensive closed source crappy board.
-
Excellent work !!! It finally works, I believe the slight mistake was with the damn SPI device ID. Now that I've enabled /dev/spidev1.0 everything works perfect. Really nice job and awesome commitment to showing people that it's time for them to pull their heads out of their a.... and spend less for way more awesome boards because let's face it, RPi has the greatest community support but it's a nothing more than an expensive closed source crappy board.
@mihai.aldea
Great!!, found out the SPI0 is used for the NAND flash, once you add SPI1 to the script.bin, also the need board paragraph with bus 1 needs to be added otherwise it will not work.... anyway great you got mysensors up and running!!
About the RPI, i like both boards, and in my opinion the enormous success of the RPI is responsible, for the large collection of OPI boards that is available these days ;) -
There are few who know that lots of asian compaines were producing SBC's long before RPi ever existed. RPi has to take credit for the SBC boom, but the connaisseurs will always prefer a top notch SBC that costs less than half of an RPi and is piled with features. Take the OPi Zero for instance, it's way smaller than RPi 3, has half the RAM and doesn't have Bluetooth. But you can buy 4 OPi Zeros with the money you'd spend on an RPi 3.
Anyway it's an endless debate here, I'm just glad I could help a bit bringing this to life, even though you and @marceloaqno did the heavy lifting. -
Thank you for the hard work guys, I have a fresh orange pi zero and I will install armbian and try this hack as soon as possible. Looks like a great way to have an ultra compact&cheap controller + gateway system !
-
Support for OrangePi is now part of the official MySensors development repository.
In the official version, it is necessary to define the CE and CS pins, as the default ones will not work. This will change in the future, but more work needs to be done to better detect the different types of Orange Pi and other H3 soc boards.
For now, if you have set your system in the same way as the wiring instructions, use:./configure --spi-spidev-device=/dev/spidev1.0 --my-transport=nrf24 --my-rf24-ce-pin=2 --my-rf24-cs-pin=13 -
Support for OrangePi is now part of the official MySensors development repository.
In the official version, it is necessary to define the CE and CS pins, as the default ones will not work. This will change in the future, but more work needs to be done to better detect the different types of Orange Pi and other H3 soc boards.
For now, if you have set your system in the same way as the wiring instructions, use:./configure --spi-spidev-device=/dev/spidev1.0 --my-transport=nrf24 --my-rf24-ce-pin=2 --my-rf24-cs-pin=13Thank you for your hard work and continued support on this!!
-
I confirm it's not working on the OPi PC where TMRh20 works.
@mihai.aldea
It's working on my OPi One with Armbian. MySensors and TMRh20 works!Only in ./MySensors: bin Only in ./MySensors: build diff -ruBdX ex ./_MySensors/drivers/RF24/RF24.cpp ./MySensors/drivers/RF24/RF24.cpp --- ./_MySensors/drivers/RF24/RF24.cpp<>2017-01-28 10:24:03.557215399 +0200 +++ ./MySensors/drivers/RF24/RF24.cpp<->2017-01-28 10:58:51.757543157 +0200 @@ -29,7 +29,7 @@ LOCAL RF24_receiveCallbackType RF24_receiveCallback = NULL; #endif . -#ifdef LINUX_SPI_BCM +#if defined (LINUX_SPI_BCM) || (LINUX_SPI_SPIDEV) uint8_t spi_rxbuff[32+1] ; //SPI receive buffer (payload max 32 bytes) uint8_t spi_txbuff[32+1] ; //SPI transmit buffer (payload max 32 bytes + 1 byte for the command) #endif @@ -56,7 +56,7 @@ <----->RF24_csn(LOW); <----->// timing <----->delayMicroseconds(10); -#ifdef LINUX_SPI_BCM +#if defined (LINUX_SPI_BCM) || (LINUX_SPI_SPIDEV) <----->uint8_t * prx = spi_rxbuff; <----->uint8_t * ptx = spi_txbuff; <----->uint8_t size = len + 1; // Add register value to transmit buffer diff -ruBdX ex ./_MySensors/Makefile.inc ./MySensors/Makefile.inc --- ./_MySensors/Makefile.inc<->2017-01-28 10:49:53.990638008 +0200 +++ ./MySensors/Makefile.inc<-->2017-01-28 11:12:57.601198157 +0200 @@ -1,5 +1,5 @@ SOC=H3 -CPPFLAGS=-march=armv7-a -mtune=cortex-a7 -mfpu=neon-vfpv4 -mfloat-abi=hard -DMY_RADIO_NRF24 -DMY_GATEWAY_LINUX -DMY_DEBUG -DLINUX_SPI_SPIDEV. +CPPFLAGS=-march=armv7-a -mtune=cortex-a7 -mfpu=neon-vfpv4 -mfloat-abi=hard -DMY_RADIO_NRF24 -DMY_GATEWAY_LINUX -DLINUX_SPI_SPIDEV -DMY_RF24_CE_PIN=7 -DSPI_S LDFLAGS=-pthread. PREFIX=/usr/local CC=gcc -
Hi to all, I don't know if this is the right thread, but I'm trying to use an odroid c1 as a gateway. I'm posting here because I think you all could help me.
The original thread I have done is this one
https://forum.mysensors.org/topic/6083/odroid-c1-as-getaway
Feel free to go over there and give me advises.