This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
wiki:lora:advanced_features [2022/10/26 10:35] ehe [DevAddr/NetID Filtering] |
wiki:lora:advanced_features [2024/04/11 12:14] (current) ehe [DevAddr/NetID Filtering] |
||
---|---|---|---|
Line 52: | Line 52: | ||
- | ===== DevAddr/NetID Filtering ===== | + | ===== LoRaWAN frame Filtering ===== |
- | This feature is available from Keros firmware 4.3 and above. \\ | + | ==== DevAddr/NetID Filtering ==== |
+ | |||
+ | This feature is available from Keros firmware 5.7 and above. \\ | ||
It allows to save data consumption by forwarding only LoRaWAN packets from a given DevAddr range. \\ | It allows to save data consumption by forwarding only LoRaWAN packets from a given DevAddr range. \\ | ||
A DevAddr is the ID used by a LoRaWAN device to communicate on a LoRaWAN network, NetID is a part of this DevAddr. \\ | A DevAddr is the ID used by a LoRaWAN device to communicate on a LoRaWAN network, NetID is a part of this DevAddr. \\ | ||
Line 63: | Line 65: | ||
Examples: | Examples: | ||
- | * **Filtering on full Type-0 (/7) Kerlink NetID (12)**: <code bash>lorafwdctl -s filter.lorawan.netid "0x24000000/7"</code>Once activated, the gateway will only forward packets from devices with DevAddr from 0x24000001 to 0x245FFFFF. | + | * **Filtering on full Type-0 (/7) Kerlink NetID (12)**: <code bash>lorafwdctl -s filter.lorawan.netid "0x24000000/7"</code>Once activated, the gateway will only forward packets from devices with DevAddr from 0x24000001 to 0x25FFFFFF. |
- | * **Filtering on Type-3 (/14) Kerlink NetID (600014)**: <code bash>lorafwdctl -s filter.lorawan.netid "0xE0500000/14"</code>Once activated, the gateway will only forward packets from devices with DevAddr from E0500000 to E053FFFF. | + | * **Filtering on Type-3 (/14) Kerlink NetID (600014)**: <code bash>lorafwdctl -s filter.lorawan.netid "0xE0280000/14"</code>Once activated, the gateway will only forward packets from devices with DevAddr from 0xE0280000 to 0xE029FFFF. |
* **Filtering on a specific device (/32) with DevAddr E0501234**: <code bash>lorafwdctl -s filter.lorawan.netid "0xE0501234/32"</code>Once activated, the gateway will only forward packets from the device E0501234. | * **Filtering on a specific device (/32) with DevAddr E0501234**: <code bash>lorafwdctl -s filter.lorawan.netid "0xE0501234/32"</code>Once activated, the gateway will only forward packets from the device E0501234. | ||
Line 72: | Line 74: | ||
''Drop message from 0x24f52627 (not in NetID range 0xE0501234/32)'' | ''Drop message from 0x24f52627 (not in NetID range 0xE0501234/32)'' | ||
+ | ==== JoinEUI Filtering ==== | ||
+ | |||
+ | This feature is available from Keros firmware 5.7 and above. \\ | ||
+ | It allows to save data consumption by forwarding only LoRaWAN packets from a given JoinEUI range. \\ | ||
+ | A JoinEUI is an ID used by a LoRaWAN device to join on a LoRaWAN network. \\ | ||
+ | |||
+ | In order to activate this filtering, configuration is done by a [[https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing|CIDR notation]] of wanted mask in lorafwd configuration. \\ | ||
+ | |||
+ | |||
+ | Examples: | ||
+ | * **Filtering on JoinEUI:** <code bash>lorafwdctl -s filter.lorawan.joineui "0x7076FF0001000000/40"</code>Once activated, the gateway will only forward join requests from devices with JoinEui from 0x7076FF0001000000 to 0x7076FF0001FFFFFF. \\ | ||
+ | * **Filtering on a specific device with JoinEUI 7076FF0001005554:** <code bash>lorafwdctl -s filter.lorawan.joineui "0x7076FF0001005554/64"</code>Once activated, the gateway will only forward join requests from devices with JoinEUI 7076FF0001005554. \\ | ||
+ | |||
+ | |||
+ | ==== DevEUI Filtering ==== | ||
+ | |||
+ | This feature is available from Keros firmware 5.7 and above. \\ | ||
+ | It allows to save data consumption by forwarding only LoRaWAN packets from a given DevEUI range. \\ | ||
+ | A DevEUI is an ID used by a LoRaWAN device to communicate on a LoRaWAN network. \\ | ||
+ | |||
+ | In order to activate this filtering, configuration is done by a [[https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing|CIDR notation]] of wanted mask in lorafwd configuration. \\ | ||
+ | |||
+ | Examples: | ||
+ | * **Filtering on DevEUI:** <code bash>lorafwdctl -s filter.lorawan.deveui "0x7777777700000000/32"</code>Once activated, the gateway will only forward packets from devices with DevEui from 0x7777777700000000 to 0x77777777FFFFFFFF. \\ | ||
+ | * **Filtering on a specific device with DevEUI 7076FF0001005554:** <code bash>lorafwdctl -s filter.lorawan.deveui "0x7076FF0001005554/64"</code>Once activated, the gateway will only forward packets from devices with DevEUI 7076FF0001005554. \\ | ||
+ | |||
+ | ==== Multiple range filter and reverse filter ==== | ||
+ | |||
+ | === Multiple range filter === | ||
+ | |||
+ | Multiple range filter can be applied on NetID/DevAddr, JoinEUI, DevEUI filters.\\ | ||
+ | It is useful when several range of IDs need to be filtered in.\\ | ||
+ | Examples: | ||
+ | * **Filtering on DevAddr:** <code bash>lorafwdctl -s filter.lorawan.netid "0x24000000/8" "0x26000000/8"</code>Once activated, the gateway will only forward packets from devices with DevAddr from 24000000 to 24FFFFFF **and** from 26000000 to 26FFFFFF. | ||
+ | |||
+ | === Reverse filtering === | ||
+ | |||
+ | Reverse filter can be applied on NetID/DevAddr, JoinEUI, DevEUI filters.\\ | ||
+ | It is useful when several range of IDs need to be filtered out.\\ | ||
+ | In this case, filter has to start with "!". \\ | ||
+ | Examples: | ||
+ | * **Filtering on DevAddr:** <code bash>lorafwdctl -s filter.lorawan.netid "!0x24000000/7"</code>Once activated, the gateway will reject packets from devices with DevAddr from 0x24000001 to 0x25FFFFFF and will forward any other packets. | ||
+ | |||
+ | |||
+ | <note>It is possible to combine multiple and reverse filter\\ | ||
+ | For example : ''lorafwdctl -s filter.lorawan.netid "!0x11111100/24" "0x11111110/28"'' | ||
+ | </note> | ||
+ | <note warning>Be careful at the order of filter when you use simple and reverse filter \\ | ||
+ | Filter [ "!0x24000000/7", "0x24000000/7" ] is different from filter [ "0x24000000/7", "!0x24000000/7" ] \\ | ||
+ | See the [[#filter_cheat_sheet|Filter cheat sheet]] for a better understanding. | ||
+ | </note> | ||
+ | |||
+ | === Filter cheat sheet === | ||
+ | |||
+ | {{ :wiki:lora:filter-cheat-sheet.png?nolink |}} | ||
+ | |||
+ | ==== Proprietary frame ==== | ||
+ | It is possible to filter proprietary LoRaWAN frame.\\ | ||
+ | To do so : <code bash>lorafwdctl -s filter.lorawan.proprietary true</code> | ||
===== Fine timestamp ===== | ===== Fine timestamp ===== | ||
==== General information ==== | ==== General information ==== | ||
- | This feature is only available on Wirnet iBTS gateways. | + | This feature is only available on Wirnet iBTS and iStation gateways. |
Fine timestamps are the nanosecond accurate dates at which a packet is received by the gateway. | Fine timestamps are the nanosecond accurate dates at which a packet is received by the gateway. | ||
Line 148: | Line 209: | ||
For __debug purposes__, fine timestamps can be directly deciphered from the gateway. Please note it should not be used in production environments. | For __debug purposes__, fine timestamps can be directly deciphered from the gateway. Please note it should not be used in production environments. | ||
- | To activate deciphering from the gateway, edit the frequency plan (in ''/user/etc/lorad/''): | + | To activate deciphering from the gateway, edit the frequency plan (in ''/etc/lorad/''): |
* ''"aes_key": "00112233445566778899AABBCCDDEEFF",'' | * ''"aes_key": "00112233445566778899AABBCCDDEEFF",'' |