General Properties
本页记录在 MikroTik RouterOS 上设置 LoRaWAN 网关的配置设置,包括天线增益、信道计划、服务器连接和流量转发规则。它解释了如何启用网关、选择频段、配置 LBT 协议,以及通过
/iot/lora和/iot/lora/channels等子菜单管理信道。
通用属性
每个带有支持 LTE 调制解调器的 miniPCI-e 插槽的 RouterBOARD 都可以通过安装 R11e-LR8 或 R11e-LR9 卡用作 LoRaWAN 网关。同时支持 UDP 和 LNS(从 v7.12rc1 测试版本开始)协议。
信息
要使用 LoRa,应安装 IoT 软件包。您可以在 download 页面的 extra packages 归档中找到适用于您设备架构的软件包。
重要: 从 v7.11(稳定版)开始,LoRa 功能被移入 IoT package,可在 download 页面的 extra packages 下获取。单独的 Lora 软件包仍可下载。
使用 IoT 软件包时,LoRa 功能将移至
/iot/lora子菜单。使用 LoRa 软件包时,LoRa 功能可通过/lora子菜单使用。LoRa 软件包不再是必需的,仅为兼容性原因而保留。
注意: Note:RouterOS 不支持第三方 LoRaWAN 网关卡。
属性
此菜单用于将设置应用到 LoRa 接口。
子菜单: /iot/lora
| Property | Description |
|---|---|
| antenna-gain (integer [-128..127]; Default: 0) | 天线增益,单位为 dBi。此值应等于 setup-antenna-gain 减去 cable-loss。使用 6.5 dBi 天线时,应配置的值为 6.5(不考虑线缆损耗)。网关的输出功率由服务器决定。网关将通过从 server_value(下行消息中接收到的值)中减去 antenna-gain 设置来计算其实际输出功率。 |
| channel-plan (2.4-ghz | as-923 | as-923-2 | as-923-3 | as-923-4 | au-915 | au-915-1 | au-915-2 | custom | eu-868 | in-865 | kr-920 | ru-864 | ru-864-mid | us-915 | us-915-1 | us-915-2 | us-915-3 | us-915-4 | us-915-5 | us-915-6 | us-915-7 | us-915-8; Default: eu-868) | 各区域的频率计划。 |
| disabled (yes | no; Default: yes) | LoRaWAN 网关是否被禁用。 |
| forward (crc-validation | dev-addr-validation | proprietary-traffic; Default: crc-validation) | 定义应将何种数据包转发到 Network server:crc-validation - 转发具有正确 CRC 的有效数据包。dev-addr-validation - 检查数据包的 DevAddr 是否对应于 NetID,如果不对应,则丢弃该数据包。发生以下顺序:1) 从接收到的 LoRa 数据包中"获取" Dev. Addr 值;2) 将 Dev. Addr 与"有效" Net ID 列表进行"比较";3) 如果 Dev. Addr 没有对应的 Net ID,则不转发该数据包;4) 如果 Net ID 有效、Dev. Addr 范围有效,则转发该数据包。proprietary-traffic - 检查 LoRa 数据包的内容,如果帧的 "type" 为 "proprietary",则不转发该数据包。 |
| gateway-id(string) | Gateway ID 或 Gateway EUI 用于向服务器注册网关。 |
| lbt-enabled (yes | no; Default: no) | 网关是否应使用 LBT(Listen Before Talk,先听后说)协议。 |
| listen-time (integer [0us..4294967295us]; Default: 5000us) | 在 TX 之前跟踪 RSSI 的时间(以微秒为单位)(当 lbt-enabled=yes 时使用)。 |
| name (string; Default: ) | LoRaWAN 网关的名称。 |
| network (private | public; Default: public) | 通信时是否应使用 sync word(network=private)或不使用(network=public)。 |
| rssi-threshold (integer [-32,768 .. 32,767]; Default: -65dBm) | 用于确定转发器是否可以使用特定信道进行通信的 RSSI 值。如果 RSSI 值低于 rssi-threshold,则可以使用该信道(当 lbt-enabled=yes 时使用)。 |
| servers (list of string; Default: ) | 来自 /iot/lora/servers 部分的服务器名称。 |
| src-address (IP; Default: ) | 如有必要,指定上行数据包的源地址(该地址应与 RB 上配置的地址匹配)。 |
| spoof-gps (bool | lat | long | alt; Default: ) | 设置自定义 GPS 位置。使用 lat、long、alt 指定纬度、经度和海拔值。 |
信息
一旦选择了服务器并使用
/iot/lora/enable [find]命令启用了 LoRa 接口,设备将开始作为 LoRaWAN 网关运行。它将开始把/iot/lora/traffic选项卡中的 LoRa 载荷转发到已配置的服务器。
信道
本节用于修改与信道/频率相关的设置。
子菜单: /iot/lora/channels
| Property | Description |
|---|---|
| bandwidth (200_kHz | 400_kHz | 62.5_kHz | 125_kHz | 250_kHz | 500_kHz; Default: 125_kHz) | 特定信道的带宽,在使用任何 channel-plan 预设时预定义,但当 channel-plan 设置为 custom 时可以手动更改。 |
| disabled (yes | no; Default: no) | 禁用或启用该信道。 |
| freq-off (integer [-400000..400000]; Default: ) | 信道相对于无线电中心频率的频率偏移,它可以调整信道频率以避免信道重叠。 |
| radio (radio0 | radio1; Default: ) | 定义哪个无线电使用所选信道。 |
| spread-factor (SF5 | SF6 | SF7 | SF8 | SF9 | SF10 | SF11 | SF12; Default: ) | 定义 type=LoRa 的信道的扩频因子(Spread Factor)。较低的扩频因子意味着更高的数据速率。 |
要查看当前信道,请执行命令 /iot/lora/channels/print:
/iot/lora/channels/print
Columns: NAME, TYPE, RADIO, FREQ-OFF, BANDWIDTH, FREQ, SPREAD-FACTOR, DATARATE
# NAME TYPE RADIO FREQ-OFF BANDWIDTH FREQ SPREAD-FACTOR DATARATE
0 gateway-0 MSF radio1 -400000 125_kHz 868.1
1 gateway-0 MSF radio1 -200000 125_kHz 868.3
2 gateway-0 MSF radio1 0 125_kHz 868.5
3 gateway-0 MSF radio0 -400000 125_kHz 867.1
4 gateway-0 MSF radio0 -200000 125_kHz 867.3
5 gateway-0 MSF radio0 0 125_kHz 867.5
6 gateway-0 MSF radio0 200000 125_kHz 867.7
7 gateway-0 MSF radio0 400000 125_kHz 867.9
8 gateway-0 LoRa radio1 -200000 250_kHz 868.3 SF7
9 gateway-0 FSK radio1 300000 125_kHz 868.8 50000
信道使用 freq-off 和无线电的 center-freq 频率创建。要查看无线电的中心频率,请使用命令 /iot/lora/radios/print。
要了解每个信道的频率是如何计算的,请查看以下示例:
# NAME TYPE RADIO FREQ-OFF BANDWIDTH FREQ SPREAD-FACTOR DATARATE
0 gateway-0 MSF radio1 -400000 125_kHz 868.1
radio1 被选择用于信道 #0,并且配置为 center-freq=868500000(868500000 Hz 或 868.5 MHz)。
通过使用频率偏移 freq-off=-400000(-400000 Hz 或 -0.4 MHz),我们定义信道 #0 为 868500000-400000=868100000 Hz 或 868.1 MHz。
信息
要配置自定义信道,请借助以下命令选择 "custom" 信道配置文件:
/iot/lora/set [find] channel-plan=custom
Join EUI
网关会将它接收到的每一个 LoRaWAN 载荷都转发到服务器。这也包括邻近 LoRaWAN 节点的载荷。转发所有内容可能并不理想,例如,它会增加使用的数据量(并直接影响 ISP 套餐费用)。
Join EUI 菜单允许您指定 JOIN EUI 的黑名单或白名单范围,网关应转发(如果是"白名单")或应阻止(如果是"黑名单")。添加范围后,请确保将其应用到服务器设置。
这些过滤器按以下原则工作:
-
默认情况下,允许所有内容(除非添加了白名单/黑名单过滤器);
-
如果添加了 "blacklist" 过滤器范围,然后附近出现匹配黑名单范围的 JOIN EUI 数据包 → 它将被丢弃;
-
如果添加了 "whitelist" 过滤器范围,它的优先级高于 "blacklisted" 过滤器。这意味着如果 "blacklist" 和 "whitelist" 都匹配同一个 JOIN EUI,"whitelist" 优先,数据包将被转发。
您可以借助 RouterOS GUI 找到您的节点使用的 Join EUI。转到 "LoRa" 部分和 "Traffic" 子菜单(仅可通过图形界面使用)。为 LoRaWAN 节点通电后,节点应发送 "Join-request" 数据包。双击它以进行检查:

子菜单: /iot/lora/joineui
| Property | Description |
|---|---|
| joineuis (string; Default: ) | 定义 Join EUI 的范围。 |
| logging(yes | no; Default: no) | 为过滤器功能启用额外日志记录。 |
| name (string; Default: ) | 定义范围的名称。 |
| type (blacklist | whitelist; Default: whitelist) | 定义过滤器的类型:blacklist(如果范围匹配,则阻止/丢弃数据包)whitelist(如果范围匹配,则转发数据包) |
Join EUI 的示例看起来像这样 E0 E1 E2 01 02 03 04 05。它由 HEX 格式的 8 个八位字节组成。
要添加一个阻止所有内容的范围,请添加如下过滤器:
/iot/lora/joineui/add name=block_all joineuis=0000000000000000-ffffffffffffffff type=blacklist logging=yes
要允许特定的单个 Join EUI,请添加如下过滤器:
/iot/lora/joineui/add name=allow_my_node joineuis=E0E1E20102030405-E0E1E20102030405 type=whitelist logging=yes
禁用 LoRa 接口:
/iot/lora/disable [find where ]
将这两个范围应用到您正在使用的 LoRa 服务器,然后再次启用接口:
/iot/lora/servers/set joineui=block_all,allow_my_node [find where address ~ "eu1.cloud.thethings.network"]
/iot/lora/enable [find where ]
结果,我们将只允许 "JOIN EUI=E0 E1 E2 01 02 03 04 05" 节点的载荷被转发,而所有其他可能的 JOIN EUI 将被黑名单规则丢弃。
Network ID
网关会将它接收到的每一个 LoRaWAN 载荷都转发到服务器。这也包括邻近 LoRaWAN 节点的载荷。转发所有内容可能并不理想,例如,它会增加使用的数据量(并直接影响 ISP 套餐费用)。
NetID 菜单允许您指定 NetID 的黑名单或白名单范围,网关应转发(如果是"白名单")或应阻止(如果是"黑名单")。添加列表后,请确保将其应用到服务器设置。
这些过滤器按以下原则工作:
-
默认情况下,允许所有内容(除非添加了白名单/黑名单过滤器);
-
如果添加了 "blacklist" 过滤器范围,然后数据包的 NetID 匹配黑名单范围 → 它将被丢弃;
-
如果添加了 "whitelist" 过滤器范围,它的优先级高于 "blacklisted" 过滤器。这意味着如果 "blacklist" 和 "whitelist" 都匹配同一个 NetID,"whitelist" 优先,数据包将被转发。
NetID 定义了 LoRaWAN Alliance 分配给不同运营商/服务器的设备地址(DevAddr)范围。大多数范围的列表可在 TTN 指南中找到。
DevAddr 在 LoRaWAN 节点与服务器通信完成后由 LoRaWAN 服务器分配给该节点。例如,TTN 将从 26000000 - 27FFFFFF 范围内为您的节点分配一个地址。您可以在 LoRaWAN 服务器仪表盘下找到它,或使用 RouterOS GUI 在 "Traffic" 子菜单下(在 "join-request" 和 "join-accept" 通信完成后)的 Dev Addr 列/字段中找到它。
假设 TTN 为您的节点分配了 26 1B D8 D1 Dev Addr。根据 TTN 指南,它属于 26000000 - 27FFFFFF DevAddr 范围,并且属于 000013 NetID。
子菜单: /iot/lora/netid
| Property | Description |
|---|---|
| netids (string; Default: ) | 定义 NetID |
| logging(yes | no; Default: no) | 为过滤器功能启用额外日志记录。 |
| name (string; Default: ) | 定义 ID 的名称。 |
| type (blacklist | whitelist; Default: whitelist) | 定义过滤器的类型:blacklist(如果范围匹配,则阻止/丢弃数据包)whitelist(如果范围匹配,则转发数据包) |
要添加一个允许特定 NetID 的过滤器(在此示例中为属于 TTN 的 000013 NetID),请使用命令:
/iot/lora/netid/add name=allow_TTN netids=000013-000013 type=whitelist
要阻止所有其他 NetID,请使用 type=blacklist:
/iot/lora/netid/add name=block_all netids=000000-ffffff type=blacklist
禁用 LoRa 接口:
/iot/lora/disable [find where ]
将这两个范围应用到您正在使用的 LoRa 服务器,然后再次启用接口:
/iot/lora/servers/set netid=block_all,allow_TTN [find where address ~ "eu1.cloud.thethings.network"]
/iot/lora/enable [find where ]
服务器
本节用于添加新服务器设置或修改当前服务器设置。
子菜单: /iot/lora/servers
有一些预定义的服务器可以使用(使用它们需要创建一个 The Things Network 账户):
[admin@MikroTik] /iot/lora/servers/print
Columns: NAME, UP-PORT, DOWN-PORT, ADDRESS
# NAME UP-PORT DOWN-PORT ADDRESS
0 TTS Cloud (eu1) 1700 1700 eu1.cloud.thethings.industries
1 TTS Cloud (nam1) 1700 1700 nam1.cloud.thethings.industries
2 TTS Cloud (au1) 1700 1700 au1.cloud.thethings.industries
3 TTN V3 (eu1) 1700 1700 eu1.cloud.thethings.network
4 TTN V3 (nam1) 1700 1700 nam1.cloud.thethings.network
5 TTN V3 (au1) 1700 1700 au1.cloud.thethings.network
也可以添加自定义服务器。如果第一个服务器不更改数据包的 "DevAddress" 部分,并且在所有服务器都能够解码该数据包的条件下,向多个服务器的数据转发可以同时进行。
| Property | Description |
|---|---|
| address (domain name or IP address; Default: ) | 定义 LoRaWAN Network 服务器地址。 |
| name (string; Default: ) | 定义服务器名称。 |
| protocol (UDP | LNS | CUPS; Default: UDP) | 指定与 LoRaWAN 服务器通信时使用 UDP、LNS 还是 CUPS 协议。 |
| down-port (integer [0..65535]; Default: 1700) | 选择 UDP 协议时使用的参数。定义与 LoRaWAN Network 服务器进行下行通信(从服务器到节点)的端口。大多数已知的开源服务器默认使用端口 1700,但如果同一台机器上配置了多个服务器,该端口可能会更改。 |
| up-port (integer [0..65535]; Default: 1700) | 选择 UDP 协议时使用的参数。定义与 LoRaWAN Network 服务器进行上行通信(从节点到服务器)的端口。大多数已知的开源服务器默认使用端口 1700,但如果同一台机器上配置了多个服务器,该端口可能会更改。 |
| netid(list of string; Default: ) | 选择 UDP 协议时使用的参数。应用过滤器,仅发送匹配已配置 Network ID (Net ID) 过滤器的 LoRaWAN 载荷。 |
| joineui (list of string; Default: ) | 选择 UDP 协议时使用的参数。应用过滤器,仅发送匹配已配置 Join EUI 过滤器的 LoRaWAN 载荷。 |
| port (integer [0..65535]; Default: 8887) | 选择 LNS 或 CUPS 协议时使用的参数。对于 LNS,定义 WSS (WebSocket) 端口;对于 CUPS,定义 HTTPS 端口。 |
| key (string; Default: ) sensitive | 选择 LNS 或 CUPS 协议时使用的参数。指定 LoRa Basics Station LNS Authentication Key 或 CUPS API KEY(均在服务器上生成)。 |
| ssl (yes or no; Default: no) | 选择 LNS 或 CUPS 协议时使用的参数。指定是否使用 SSL(如果服务器支持 TLS 服务器身份验证)。选择此选项时,必须在证书菜单下上传根 SSL 证书。 |
| certificate (list of string; Default: none) | 选择 LNS 或 CUPS 协议时使用的参数。从证书存储中选择客户端证书(如果服务器等待 TLS 客户端身份验证)。如果服务器不要求 TLS 客户端身份验证,请使用默认的 "none" 设置。 |
| interval(integer [0..65535]; Default: ) | 选择 CUPS 协议时使用的参数。指定 LoRa Basics Station 查询 CUPS 服务器以获取配置更新/更改的间隔。 |
有一些预配置的 The Things 默认服务器。如果您删除了其中一个并想恢复默认服务器,可以使用命令:
/iot/lora/servers/reset-servers
警告
请注意,重置服务器也会删除所有先前配置的服务器,因此请务必事先"保存"它们。
流量
本节显示由周围节点广播的 LoRa 载荷。
子菜单: /iot/lora/traffic
| Property | Description |
|---|---|
| options | 允许为 traffic 选项卡配置附加选项:crc-errors (yes | no) → 设置为 "no" 可将状态为 "crc error" 的数据包从 traffic 选项卡中丢弃;pckt-limit (10...1024) → 限制 traffic 选项卡的日志列表。 |
| clear | 清除列表(删除所有条目)。 |
要查看列表,请使用 print 命令:
[admin@MikroTik] /iot/lora/traffic/print
Columns: TIME, GWID, MSGTYPE, DEVADDR, MVER, FCNT, CRC, TYPE, JOINEUI, DEVEUI
# TIME GWID MSGTYPE DEVADDR MVER FCNT CRC TY JOINEUI DEVEUI
0 2024-11-08 13:33:28 xxxxxxxxxxxxxxxx Unconfirmed Data Up 6C B9 XX XX LoRaWAN R1 59434 Error Rx
1 2024-11-08 13:33:50 xxxxxxxxxxxxxxxx Rejoin-request LoRaWAN R1 Error Rx 50 62 9F FE XX XX XX XX
2 2024-11-08 13:34:09 xxxxxxxxxxxxxxxx Unconfirmed Data Down 5E 00 XX XX RFU 41736 Error Rx
3 2024-11-08 13:34:15 xxxxxxxxxxxxxxxx Rejoin-request RFU Error Rx D9 C2 BD 4B XX XX XX XX
4 2024-11-08 13:34:55 xxxxxxxxxxxxxxxx Join-request LoRaWAN R1 Error Rx A1 AE B1 8A XX XX XX XX F4 62 81 BE XX XX XX XX
要清除列表(删除所有条目),请执行 clear 命令:
[admin@MikroTik] /iot/lora/traffic/clear
Traffic 选项卡显示 "LoRa" 载荷。一旦使用 /iot/lora/enable [find] 命令启用了 LoRa 接口,列表中的所有载荷将被转换为 TCP/UDP 数据包(取决于您使用的是 UDP 1700 还是 LNS/CUPS 协议)并转发到已配置的服务器。
如果您不希望使用 LoRaWAN 拓扑,并且希望将"原始" LoRa 载荷转发到自己的服务器,则可以选择这样做,使用 MQTT 或 Fetch 以您选择的间隔运行脚本,持续发送数据。
关于如何将 traffic 载荷转换为名为 "traffic" 的变量的基本示例(脚本的第一步):
[admin@MikroTik] > :global traffic;:set traffic [/iot/lora/traffic/print as-value ];put $traffic
.id=*4f;band=125 kHz;coderate=?/?;counter=890652548;crc=Error;datarate=SF 7;freqhz=868300;gwid=50313xxxxxx;ifcha
in=1;mod=LoRa;msgtype=Proprietary;mver=RFU;rfchain=1;rssi=-116.00;rxcrc=3809;size=213;snr=-12.00;snrmax=-8.25;snrmin=
-14.25;time=2024-11-08 14:39:45;type=Rx
调试
如果您遇到连接问题,请确保启用日志:
/system/logging/add topics=debug,lora
这将启用调试日志记录,帮助您确定潜在问题所在。可以使用以下命令查看日志:
/log/print
成功的连接看起来像这样:
13:50:33 lora,info gateway-0 forwarder started
13:50:38 lora,info [LNS] connecting to wss://eu1.cloud.thethings.network:8887/router-info
13:50:39 lora,info [LNS] eu1.cloud.thethings.network discovered
13:50:39 lora,info [LNS] eu1.cloud.thethings.network disconnected
13:50:39 lora,info [LNS] connecting to wss://eu1.cloud.thethings.network:8887/traffic/eui-xxxx
13:50:39 lora,info [LNS] eu1.cloud.thethings.network configured
13:50:52 lora,info gateway-0 forwarder is ready
更多日志信息可在我们的 Log 指南中找到。