Implement a secure ICS protocol targeting LoRa Node151 microcontroller for controlling irrigation.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
John-Mark Gurney 7aeaed651f add code that does binary to three level + clock recovery... 1 year ago
blinkled add code that does binary to three level + clock recovery... 1 year ago
board use family independent main.h to support l1.. 2 years ago
loramac add pin description, and use the analog pin to provide randomness.. 3 years ago
mk big drop adding the USB HID part of this project... 2 years ago
rs485hid disable test key. 2 years ago
stm32 big drop adding the USB HID part of this project... 2 years ago
strobe add the start of the C version for the uC... 3 years ago
.gitignore ignore my standard venv dir name.. 2 years ago
EXCLUDEST.txt add warning about the license excluding use by ST. 2 years ago
LICENSE.txt add warning about the license excluding use by ST. 2 years ago
LINKS.md add some useful reference links.. 2 years ago
LORA-IRR.md comment which pins for programming to save me looking at the pdf.. 2 years ago
Makefile move more into mu.progs.mk, reorder depends.. 2 years ago
NOTES.md add info on how to debug irq handler issues.. 2 years ago
PROTOCOL.md mention the specific curve/dh used.. 2 years ago
README.md describe board directory.. 2 years ago
RS485HID.md big drop adding the USB HID part of this project... 2 years ago
arch.getxt add some diagrams, and the infrastructure to make them... 3 years ago
board-config.h get tx/rx working between two Node151's.. 3 years ago
board.c missed setting up routing for the analog pin.. 3 years ago
box.sh add some diagrams, and the infrastructure to make them... 3 years ago
comms.c if the pending session returns a packet, use it, might be first of neg 2 years ago
comms.h add an include guard... 2 years ago
conns.getxt add some diagrams, and the infrastructure to make them... 3 years ago
hal_generic.c use SYSINIT and break things out/make more generic and modular... 2 years ago
irr_main.c fix UB... 2 years ago
linker_set.h add framework to get things started... 2 years ago
lora.py big drop adding the USB HID part of this project... 2 years ago
loraserv.py make sure we don't buffer the serial port, we need the packets to 3 years ago
main.c use funopen/stdio to buffer output, "fix" for FreeBSD... 2 years ago
misc.c wrap debugpos when at end of buffer.. 2 years ago
misc.h add memory debug buffer.. Fix FreeBSD by adding a delay.. 2 years ago
multicast.py drop debug print 2 years ago
requirements.txt big drop adding the USB HID part of this project... 2 years ago
si_usb.c big drop adding the USB HID part of this project... 2 years ago
si_usb.h add wrapper, si_usb.h, clean up si_usb a little, and use wrapper 2 years ago
strobe_rng_init.c big drop adding the USB HID part of this project... 2 years ago
strobe_rng_init.h big drop adding the USB HID part of this project... 2 years ago
syote_comms.py s/liblora/libsyote/ s/lora_comms/syote_comms/ 2 years ago
sysIrqHandlers.h get tx/rx working between two Node151's.. 3 years ago
sysinit.c add framework to get things started... 2 years ago
sysinit.h add USB, add proper _LAST, and verify range, support void functions 2 years ago
util.py forgot to add the copyright for this file.. 3 years ago
util_load.py change the default to be func.. 3 years ago

README.md

Syote: Secure IoT

This project started off as a project to control an irrigation system via a LoRa radio, but the core architecture of the communication and security can easily be reused for other projects.

The projects that make use of the core protocol are included in this repo to make development easier for now, but if/when the project gets large enough, they will be broken out into their own repositories.

Projects

LoRa Irrigation: Control over LoRa radio.

RS-485 USB HID KVM: USB Keyboard over RS-485

File Layout

Note that things are a mess as they stand right now. The first project was based upon the SemTech reference code which implemented their own HAL on top of ST’s HAL which is partly implemented on top of ARM’s HAL, and in some cases bypasses them. It was also originally written not expecting to be used for another board.

board/ - Board specific code loramac/ - SemTech reference code. Has reference code for LoRa and the Node151 based board. mk/ - Files supporting the build infrastructure. rs485hid/ - Files relating to the RS-485 HID project stm32/ - This is the HAL for ST based parts. It comtains the ARM CMSIS HAL as well, for the parts the ST chose to use. strobe/ - Crypto code that form the basis of the protocol.

Options

Default on: STROBE - This contains all the cryptography parts. SYSINIT - This contains the initalization frmae work, similar to FreeBSD.

Default off: NODE151 - Code necessary for the Heltech Node151 module. RS485FRAME - Code implementing framing tx/rx over RS-485. STM32F103 - Code for a STM32F103 based board. SX1276 - Code necessary for the LoRa Radio. USB_CDC - Code for implementing a USB CDC Endpoint.