Now we port the #LoRaWAN Driver ... From Apache #Mynewt OS to #BL602
https://github.com/lupyuen/bl_iot_sdk/tree/lorawan/components/3rdparty/lorawan
Our #BL602 #LoRaWAN Driver has many Layers (like Shrek) ... Let's peel the Shrek ... (erm) Layers 🧅
https://github.com/lupyuen/bl_iot_sdk/tree/lorawan/components/3rdparty/lorawan
The Application Layer (left) of our #BL602 #LoRaWAN Driver exposes LoRaWAN Functions to Application Firmware ... Join Network, Open/Close Port, Transmit/Receive Packets
https://github.com/lupyuen/bl_iot_sdk/blob/lorawan/components/3rdparty/lorawan/src/lora_app.c
#Mynewt OS has a #LoRaWAN Command-Line App that calls the Application Layer of the LoRaWAN Driver ... We shall port this app to #BL602 too
https://mynewt.apache.org/latest/tutorials/lora/lorawanapp.html
For #Arduino Fans: RAKwireless has a #WisBlock #LoRaWAN Tutorial ... We shall try this later
https://github.com/RAKWireless/WisBlock/tree/master/examples/communications/LoRa/LoRaWAN
The Node Layer (centre) in our #BL602 #LoRaWAN Driver handles the networking operations for our BL602 LoRaWAN Node ... It's called by the Application Layer (left)
https://github.com/lupyuen/bl_iot_sdk/blob/lorawan/components/3rdparty/lorawan/src/lora_node.c
What's MCPS in the #BL602 #LoRaWAN Driver? ... That's the "MAC Common Part Sublayer", which is defined in the Semtech LoRaWAN Stack
https://stackforce.github.io/LoRaMac-doc/LoRaMac-doc-v4.4.7/index.html
The Medium Access Control Layer (right) of our #BL602 #LoRaWAN Driver implements the LoRaWAN Protocol: Encryption, Receive Window, Duty Cycle, ... It exposes the MCPS Messaging Interface (IEEE 802.15.4) to the Node Layer (centre) via an Event Queue
https://github.com/lupyuen/bl_iot_sdk/blob/lorawan/components/3rdparty/lorawan/src/mac/LoRaMac.c
The #LoRaWAN Protocol is explained in this thread: Encryption, Receive Window, Duty Cycle, ...
How shall we implement the #BL602 #LoRaWAN Event Queue for the Medium Access Control Layer? With the NimBLE Porting Layer of course!
https://lupyuen.github.io/articles/lora2#multitask-with-nimble-porting-layer
Curiously, our #BL602 #LoRaWAN Driver includes a Command-Line Interface (bottom) that Transmits and Receives LoRa Packets ... Directly calling the SX1276 Driver 🤔
https://github.com/lupyuen/bl_iot_sdk/blob/lorawan/components/3rdparty/lorawan/src/lora_cli.c
Porting pbuf Packet Buffer Queue from Mynewt OS to #BL602 ... Makes me hungry for Peanut Butter Jelly Sandwich 🤤
https://github.com/lupyuen/bl_iot_sdk/blob/lorawan/components/3rdparty/lorawan/src/pbuf_queue.c
Using this simpler Windows CMD script to build the #BL602 #LoRaWAN Driver ... Quicker for fixing build errors
https://github.com/lupyuen/bl_iot_sdk/blob/lorawan/customer_app/sdk_app_lorawan/run.cmd
Add the "c_cpp_properties.json" file to #VSCode ... So that our #BL602 #LoRaWAN Build Errors are highlighted
https://github.com/lupyuen/bl_iot_sdk/blob/lorawan/.vscode/c_cpp_properties.json
Reference Implementation of Semtech #LoRaWAN Stack is here ... Includes drivers for SX1262 and SX1276
Bought the RAKwireless #LoRaWAN Gateway: #WisGate Developer D4H ... Will benchmark this with #Pine64 LoRa Gateway (Also based on RAKwireless RAK2287)
https://docs.rakwireless.com/Product-Categories/WisGate/RAK7248/Datasheet/
#ChirpStack on RAKwireless #WisGate can generate random Application Keys for #LoRaWAN Over-The-Air Activation (OTAA) ... We shall use keys to activate our #BL602 and #WisBlock devices wirelessly
https://www.thethingsindustries.com/docs/devices/abp-vs-otaa/
Still fixing #LoRaWAN Driver for #BL602 ... So let's test WisGate with WisBlock first
https://github.com/lupyuen/bl_iot_sdk/tree/lorawan/components/3rdparty/lorawan
#LoRaWAN Driver for #BL602 ... One last build error
https://github.com/lupyuen/bl_iot_sdk/tree/lorawan/components/3rdparty/lorawan
#LoRaWAN Driver for #BL602 ... Builds and links OK yay! 🎉 Heading out for second dose of Moderna ... And some downtime
https://github.com/lupyuen/bl_iot_sdk/tree/lorawan/components/3rdparty/lorawan
Let's test RAKwireless #WisGate with #WisBlock ... With this #Arduino #LoRaWAN program ... Once I get home from vaccination
https://github.com/RAKWireless/WisBlock/tree/master/examples/RAK4630/communications/LoRa/LoRaWAN
#WisBlock #LoRaWAN sample fails to compile ... Let's find out why 🤔 (Hope it's not because of the vaccination)
https://github.com/lupyuen/wisblock-lorawan/blob/master/src/main.cpp
#WisBlock #LoRaWAN sample now builds OK ... After upgrading SX126x Arduino Library to Version 2 ... Released 2 weeks ago!
https://github.com/lupyuen/wisblock-lorawan/blob/master/platformio.ini#L15
We copy the Device EUI and Application Key from #WisGate #ChirpStack to the #WisBlock #LoRaWAN client ... For Over-The-Air Activation (OTAA)
https://github.com/lupyuen/wisblock-lorawan/blob/master/src/main.cpp#L46-L53
#WisBlock joins the #WisGate #LoRaWAN Network ... And gets accepted!
https://github.com/lupyuen/wisblock-lorawan/blob/master/src/main.cpp
What's inside the #LoRaWAN Packet received by #WisGate #ChirpStack? Check the Device Data ... "Hello!"
Inside the #LoRaWAN Join Network Request (Over-The-Air Activation) ... Received by #WisGate #ChirpStack from #WisBlock
#LoRaWAN Receive Windows are explained in the LoRaWAN Specs
https://lora-alliance.org/resource_hub/lorawan-104-specification-package/
#BL602 tries to join the #LoRaWAN Network ... But no Join Request gets transmitted to WisGate 🤔
https://github.com/lupyuen/bl_iot_sdk/tree/lorawan/customer_app/sdk_app_lorawan#lorawan-commands
@lupyuen
One more hint. Try to measure signal strength and drive around with detector and record gps plus power detected.
That should help to narrow it down.
Good luck.
Someday I might walk around with RAKwireless #WisGate to find the Mystery #LoRaWAN Transmitter ... But for now let's test WisGate with WisBlock and BL602!
https://docs.rakwireless.com/Product-Categories/WisGate/RAK7248/Datasheet/