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",'' | ||