From 309cee0d954e79a7b89856ce08b595cfe27f2603 Mon Sep 17 00:00:00 2001 From: sky Date: Sun, 8 Dec 2024 20:14:49 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20ADB-Usage-cn.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ADB-Usage-cn.md | 825 +++++++++++++++++++++++++++--------------------- 1 file changed, 469 insertions(+), 356 deletions(-) diff --git a/ADB-Usage-cn.md b/ADB-Usage-cn.md index 57e268d..76224ff 100644 --- a/ADB-Usage-cn.md +++ b/ADB-Usage-cn.md @@ -1,31 +1,30 @@ -# Quectel 调制解调器 Wiki +Quectel 调制解调器维基 ================================= -> :warning: 这是一个动态文档。随着更多发现的出现或社区软件的开发,内容可能会更新。如果您觉得有信息可以贡献给这个wiki,请提交pull request。 +> :warning: 这是一个动态文档。随着新发现的增加或社区软件的开发,内容可能会有所变化。如果您觉得有信息可以贡献给这个维基,请提交拉取请求。 -> :heavy_check_mark: 本wiki主要关注Quectel的M.2规格蜂窝调制解调器。 +> :heavy_check_mark: 本维基主要关注Quectel的M.2规格蜂窝调制解调器。 -# M.2调制解调器直连以太网指南 +# 直接M.2调制解调器到以太网指南 -许多Quectel调制解调器支持直接连接到PCIe以太网芯片组。这对于将蜂窝连接用作WAN接口很有用 - 您只需将调制解调器插入路由器的WAN端口,进行一些配置,就可以使用了。性能良好,调制解调器的板载连接管理通常比许多路由器使用的脚本更好地保持连接。 +许多Quectel调制解调器支持直接连接到PCIe以太网芯片组。这对于将蜂窝连接用作WAN接口非常有用 - 您只需将调制解调器插入路由器的WAN端口,进行一些配置,就可以使用了。性能良好,调制解调器的板载连接管理通常比许多路由器用来保持连接的脚本工作得更好。 # 目录 - [硬件推荐](#硬件推荐) - - [正确的组装](#正确的组装) - - [推荐的12v 5A电源](#推荐的12v-5a电源) - - [其他已知的M.2转RJ45 PCB](#其他已知的m2转rj45-pcb) + - [正确组装](#正确组装) + - [推荐12v 5A电源](#推荐12v-5a电源) + - [其他已知的M.2到RJ45 PCB](#其他已知的m2到rj45-pcb) - [室外天线外壳组合设置](#室外天线外壳组合设置) - - [硬件推荐](#硬件推荐) -- [调制解调器资源库](#调制解调器资源库) - +- [调制解调器资源库](#rm520-资源库) + - [基本配置](#基本配置) - [首次设置](#首次设置) - - [固件刷新后;首次设置后](#固件刷新后首次设置后) + - [固件刷新后;首次设置后](#固件刷新后首次设置后) - [使用AT命令更改调制解调器IP地址](#使用at命令更改调制解调器ip地址) - - [启用IP透传](#启用ip透传) + - [启用IP直通](#启用ip直通) - [DMZ方法](#dmz方法) - - [实际IP透传](#实际ip透传) + - [实际IP直通](#实际ip直通) - [在IPPT模式下禁用NAT到VLAN](#在ippt模式下禁用nat到vlan) - [高级配置](#高级配置) @@ -39,18 +38,9 @@ - [启用每日重启](#启用每日重启) - [如何卸载](#如何卸载) -# QuecDeploy和调制解调器资源 -建议您查看我的 **[RM520N-GL资源库](https://github.com/iamromulan/RM520N-GL)** - -有一个自动安装程序.cmd文件,它会为您安装Windows所需的所有内容并放在正确的位置。使用.cmd后,请查看C:/Quectel/firmware文件夹中的固件。 - -那里还有一个[Windows固件刷写指南](https://github.com/iamromulan/RM520N-GL/tree/main#how-to-install-firmware-with-qflash-windows-) - -还有一个[Windows下的AT命令使用指南](https://github.com/iamromulan/RM520N-GL#how-to-use-qnavigator-to-send-at-commands) - # 硬件推荐 -我们实际上是将调制解调器置于PCIe Root Complex模式,以便通过PCIe使用以太网芯片组。您需要一个带有M.2 B-Key插槽的板子,具有电源、以太网、SIM卡槽和USB功能,并且需要一种方式为调制解调器的4个MHF4连接器提供蜂窝信号。 +本质上,我们是将调制解调器置于PCIe Root Complex模式,以便通过PCIe使用以太网芯片组。您需要一个具有M.2 B-Key插槽的主板,该插槽具有电源、以太网、SIM卡槽和USB功能,并且需要一种方式为调制解调器的4个MHF4连接器提供蜂窝信号。 ## 室内 @@ -62,24 +52,24 @@ **购买链接:** -不含调制解调器: +不含调制解调器: [Dual-Q 5G2PHY](https://rework.network/collections/lte-home-gateway/products/5g2phy) **或者** -带x62 RM520N-GL(AP版本修改/转换为普通AA)。 -预装自定义Arixolink固件(如果您想要Simpleadmin 2.0,请刷入最新的官方固件) +包含x62 RM520N-GL (AP版本修改/转换为普通AA)。 +预刷入自定义Arixolink固件(如果您想要Simpleadmin 2.0,请刷入最新的官方固件) [Dual-Q 5G2PHY-RM520](https://www.rework.network/collections/lte-home-gateway/products/5g2phy-rm520) **包含:** - 主板和外壳 -- 40cm USB3.0 A转Micro B线缆 +- 40cm USB3.0 A Micro B线缆 - 2x 10cm MHF4转SMA线缆 - 2x 15cm MHF4转SMA线缆 -- 1x 3x3.5x0.15 硅胶垫 -- 1x 3x3x0.02 硅胶垫 +- 1x 3x3.5x0.15硅胶垫 +- 1x 3x3x0.02硅胶垫 - 安装硬件 -- 板载RTL8125芯片组的小型散热片 +- 板载RTL8125芯片组的小型散热器 **不包含:** - 电源适配器 @@ -89,203 +79,218 @@ **主要特点:** - 2.5千兆RTL8125单RJ45端口 - **支持无源PoE**,我使用24v无源注入器 - - :warning: **主动PoE如802.11将不工作** :warning: 因为它不进行协商 + - :warning: **主动PoE如802.11将不起作用** :warning: 因为它不进行协商 - USB 3.0 - 5.5x2.5mm DC端口接受12-50V的宽电压范围 -- 内置的厚铝制散热片放置在调制解调器下方,并延伸到板子下方,即使在重负载下也能保持良好的散热 -- M.2插槽靠近板子边缘的位置,方便访问调制解调器背面的触点,以防需要进入EDL模式 +- 内置厚铝散热器放置在调制解调器下方并延伸到主板下方,即使在重负载下也能保持良好的散热 +- M.2插槽靠近主板边缘的位置,便于在需要进入EDL模式时接触调制解调器背面的触点 ## 室外 -(正在完善中) -目前仅提供链接 :smile:: +(进行中) +目前仅提供链接 :smile:: https://www.rework.network/collections/lte-home-gateway/products/5g-rgm-o ## 推荐配件 -- DC适配器:[来自亚马逊的12v 5A适配器](https://www.amazon.com/gp/product/B01GEA8PQA/ref=ppx_yo_dt_b_search_asin_title?ie=UTF8&psc=1) +- DC适配器: [12v 5A 适配器](https://www.amazon.com/gp/product/B01GEA8PQA) -- 无源PoE:室外天线附带的是最佳选择,但任何19至60v电压范围内的适配器都应该可以 +- 无源PoE: 室外天线附带的是最佳选择,但任何19-60v电压的适配器都应该可以 -- [MicroB转USB C转换器2件装](https://www.amazon.com/gp/product/B09LS3728B/ref=ppx_yo_dt_b_search_asin_title?ie=UTF8&psc=1) +- [MicroB转USB C转换器 2件装](https://www.amazon.com/gp/product/B09LS3728B) -- 室内天线 [亚马逊4件装](https://www.amazon.com/dp/B0C58V4Y3B/ref=sspa_dk_detail_1?psc=1&pd_rd_i=B0C58V4Y3B&pd_rd_w=0g4A7&content-id=amzn1.sym.f2f1cf8f-cab4-44dc-82ba-0ca811fb90cc&pf_rd_p=f2f1cf8f-cab4-44dc-82ba-0ca811fb90cc&pf_rd_r=QSXJ1GHVACPJ42PEANDH&pd_rd_wg=9Y5yj&pd_rd_r=5f2a8db9-81a5-4f3a-97b4-654548e56cbf&s=aht&sp_csd=d2lkZ2V0TmFtZT1zcF9kZXRhaWxfdGhlbWF0aWM)(未测试;请自行选择) +- 室内天线 [4件装](https://www.amazon.com/dp/B0C58V4Y3B) (未测试;根据喜好选择) -- 家用WiFi路由器:[GL.iNet Flint 2](https://www.amazon.com/GL-iNet-GL-MT6000-Multi-Gig-Connectivity-WireGuard/dp/B0CP7S3117?pd_rd_w=lAXSz&content-id=amzn1.sym.59910fa8-b73c-408a-aa5f-d0b4e0aa42cb&pf_rd_p=59910fa8-b73c-408a-aa5f-d0b4e0aa42cb&pf_rd_r=J8P5E4BQEY676GT05NP3&pd_rd_wg=QQO8w&pd_rd_r=f3fae9ae-ab4a-45d1-97bf-e43d119674bf&pd_rd_i=B0CP7S3117&psc=1&ref_=pd_bap_d_grid_rp_0_1_ec_nped_pd_rhf_cr_s_rp_c_d_sccl_1_2_t) +- 家用WiFi路由器: [GL.iNet Flint 2](https://www.amazon.com/GL-iNet-GL-MT6000-Multi-Gig-Connectivity-WireGuard/dp/B0CP7S3117) -## 示例配置: +## 示例配置: -### 固定场景 +### 固定式 -#### [GL.iNet Flint 2路由器](https://www.amazon.com/dp/B0CP7S3117?ref=ppx_yo2ov_dt_b_fed_asin_title) 加 [室内调制解调器](#室内) +#### [GL.iNet Flint 2 路由器](#)加[室内调制解调器](#室内) -### 移动场景 +### 移动式 -#### [Beryl AX](https://www.amazon.com/GL-iNet-GL-MT3000-Pocket-Sized-Wireless-Gigabit/dp/B0BPSGJN7T/ref=pd_dp_d_dp_dealz_related_hxwDSD_sspa_dk_detail_d_sccl_1_4/143-6202989-9416117?pd_rd_w=gyXrF&content-id=amzn1.sym.718c0e9e-df60-4a61-87d8-27ff0362dee1&pf_rd_p=718c0e9e-df60-4a61-87d8-27ff0362dee1&pf_rd_r=717MSS1MXJGNVW36931C&pd_rd_wg=vCfwG&pd_rd_r=69dba604-feb1-4a18-9faa-fae36dbd6813&pd_rd_i=B0BPSGJN7T&psc=1&sp_csd=d2lkZ2V0TmFtZT1zcF9kZXRhaWxfdGhlbWF0aWM=) 加 [室内调制解调器](#室内) +#### [Beryl AX](https://www.amazon.com/GL-iNet-GL-MT3000-Pocket-Sized-Wireless-Gigabit/dp/B0BPSGJN7T)加[室内调制解调器](#室内) - [室内调制解调器](#室内) -- 便携WiFi路由器:[GL.iNet Beryl AX](https://www.amazon.com/GL-iNet-GL-MT3000-Pocket-Sized-Wireless-Gigabit/dp/B0BPSGJN7T/ref=pd_dp_d_dp_dealz_related_hxwDSD_sspa_dk_detail_d_sccl_1_4/143-6202989-9416117?pd_rd_w=gyXrF&content-id=amzn1.sym.718c0e9e-df60-4a61-87d8-27ff0362dee1&pf_rd_p=718c0e9e-df60-4a61-87d8-27ff0362dee1&pf_rd_r=717MSS1MXJGNVW36931C&pd_rd_wg=vCfwG&pd_rd_r=69dba604-feb1-4a18-9faa-fae36dbd6813&pd_rd_i=B0BPSGJN7T&psc=1&sp_csd=d2lkZ2V0TmFtZT1zcF9kZXRhaWxfdGhlbWF0aWM=) +- 便携WiFi路由器: [GL.iNet Beryl AX](https://www.amazon.com/GL-iNet-GL-MT3000-Pocket-Sized-Wireless-Gigabit/dp/B0BPSGJN7T) - 橡皮筋或扎带 :trollface: - - [短USB-C转A线缆](https://www.amazon.com/etguuds-Charging-Charger-Braided-Compatible/dp/B08933P982/ref=sr_1_3?crid=J131ZX2M386O&dib=eyJ2IjoiMSJ9.GywjpYp2bc5-8SJISwTc6W3kwgchqqXWTqo1Fo1FAXDa7-ieJoPDahrWkyWIC758tSzKuE3xykGy2XwQxcMk6IEHljpIgOvSpUME-TlAuGkmYSmTu01wFvSUN51DnWZRnKFiFQH8DpxEVZWLL6WRZXGvzUVdrOzs3vcKwnUn01DvZ9OvjfCyoxBFuLhveA0EqhQqz4LkotsyZqbp7-fQbgRAQdqvlXsRVJb7-038TVg.e31Plwf8cD1vndpIeQazjeQWFrPOC_vuTjInix2aobg&dib_tag=se&keywords=USBC+to+A+short&qid=1732753798&sprefix=usbc+to+a+shor%2Caps%2C197&sr=8-3) - - [此电池](https://www.amazon.com/gp/product/B0CQNQ7K8K/ref=ppx_yo_dt_b_search_asin_title?ie=UTF8&psc=1) 12v3A DC输出,USB 5v3A输出,支持直通充电 + - [短USBC转A线缆](https://www.amazon.com/etguuds-Charging-Charger-Braided-Compatible/dp/B08933P982) + - [此电池](https://www.amazon.com/gp/product/B0CQNQ7K8K) 12v3A DC输出,USB 5v3A输出带直通充电 - - [5.5x2.1mm DC转5.5x2.5mm DC适配器](https://www.amazon.com/gp/product/B07YWQ9N5S/ref=ppx_yo_dt_b_search_asin_title?ie=UTF8&psc=1) + - [5.5x2.1mm DC转5.5x2.5mm DC适配器](https://www.amazon.com/gp/product/B07YWQ9N5S) -结果: +结果: ![:trollface:](https://raw.githubusercontent.com/iamromulan/quectel-rgmii-configuration-notes/main/images/to-go_bad.jpg) +# QuecDeploy和调制解调器资源 +建议您查看我的 **[RM520N-GL资源库](https://github.com/iamromulan/RM520N-GL)** + +有一个自动安装.cmd文件可以帮助您在Windows上安装所需的一切并放在正确的位置。使用.cmd后请查看C:/Quectel/firmware文件夹中的固件。 + +那里还有一个[Windows固件刷写指南](https://github.com/iamromulan/RM520N-GL/tree/main#how-to-install-firmware-with-qflash-windows-) + +还有一个[Windows下的AT命令使用指南](https://github.com/iamromulan/RM520N-GL#how-to-use-qnavigator-to-send-at-commands) + # 基本配置 -建议在继续之前先刷入最新的可用固件。 +建议在继续之前刷入最新的可用固件。 -查看我的[RM520资源库](#rm520-resource-repository) +查看我的[RM520资源库](#RM520-资源库) -> 请记住: +> 请记住: -刷新固件会执行以下操作: +刷新固件将执行以下操作: - - 两种方法的IPPT都会恢复为默认关闭状态 - - AT+QMAPWAC=1会恢复为AT+QMAPWAC=0,关闭自动连接 - 发送AT+QMAPWAC=1并重启来修复这个问题。如果您之前解锁并启用了adb,也可以通过adb这样做: + - 两种方法的IPPT都将恢复为默认关闭状态 + - AT+QMAPWAC=1将恢复为AT+QMAPWAC=0,关闭自动连接 + 发送AT+QMAPWAC=1并重启以修复。如果您之前解锁并启用了adb,也可以通过adb执行: ``` adb shell "echo -e 'AT+QMAPWAC=1 \r' > /dev/smd7" adb shell reboot ``` - - 通过/通过adb shell安装的自定义软件/服务将被移除。您可以[使用我的组合安装程序](https://github.com/iamromulan/quectel-rgmii-simpleadmin-at-telnet-daemon)重新安装Telnet守护程序、Simple Admin和每日重启功能 + - 通过/通过adb shell安装的自定义软件/服务将被删除。您可以[使用我的组合安装程序](https://github.com/iamromulan/quectel-rgmii-simpleadmin-at-telnet-daemon)重新安装Telnet守护程序、Simple Admin和每日重启功能。 +``` ## 首次设置 -通过USB连接到调制解调器并在Qnavigator中运行这些AT命令。如果您没有Qnavigator或其他发送AT命令的方式,请查看我的[RM520资源库](#rm520-resource-repository) +通过USB连接到调制解调器并在Qnavigator中运行这些AT命令。如果您没有Qnavigator或其他发送AT命令的方式,请查看我的[RM520资源库](#RM520-资源库) ``` AT+QCFG="data_interface",0,0 AT+QETH="eth_driver","r8125",1 AT+QCFG="pcie/mode",1 -AT+QCFG="usbnet",1 #[如果您因为某些原因需要处于不同的USB模式,请记住发送AT+QMAPWAC=1] +AT+QCFG="usbnet",1 #[如果您因某种原因需要处于不同的USB模式,请记住发送AT+QMAPWAC=1] AT+QMAPWAC=1 #[在ECM模式下可选,因为这会自动发生] AT+CGDCONT=1,"IPV4V6","在此处填写apn" -任何其他您想运行的用于正确蜂窝连接的*魔法*命令 +任何其他您想运行的*特殊*命令以实现正确的蜂窝连接 AT+QPRTPARA=1 [可选] AT+CFUN=1,1 ``` -这些命令的作用: -* `AT+QCFG="data_interface"`:通过PCIe和USB配置网络端口/诊断端口通信。第一个参数用于网络通信;0表示USB,1表示PCIe。第二个参数用于诊断端口;只有0选项表示USB。请注意,即使在PCIe网络模式下,USB端口仍然可用于连接。似乎调制解调器会使用不同的APN配置从运营商请求第二个IP地址。在2023-07-31 AT文档的第41/42页中有一个命令,应该可以启用在同一APN上使用。[RM520N-GL资源库](https://github.com/iamromulan/RM520N-GL)中有相关说明。当然,如果您的运营商允许为SIM卡/线路分配第二个IP,这*应该*都能正常工作。我需要进一步研究这个问题。 -* `AT+QETH="eth_driver","r8125",1`:这配置了在模块启动时要加载的以太网驱动程序。这是RTL8125以太网芯片组的正确驱动程序。您可以运行`AT+QETH="eth_driver"`来获取选项列表;我相信只能启用一个。第一个参数是驱动程序名称,第二个参数是布尔值,用于启用或禁用。 -* `AT+QCFG="pcie/mode"`:1 = RC(Root Complex),即主机。0 = EP(Endpoint),用于具有RC的设备中 -* `AT+QCFG="usbnet",1`:USB ECM模式下的NIC数据呼叫方法。1=ECM(以太网控制模型)内部,即使没有物理以太网端口可用,调制解调器也会在这种模式下设置自己来维持连接。了解ECM的工作原理就知道为什么了。 -* `AT+QMAPWAC`:启用或禁用移动AP自动拨号:0=禁用 1=启用(重启生效)。您可以运行`AT+QMAPWAC?`来获取当前保存/设置的值。我的发现:将其视为通用自动连接设置。如果设置为0,无线电会连接(或者会吗?)以便您可以看到信号统计,但不会从运营商获取IP地址。在大多数USB模式下(除了ECM),完成该过程取决于连接的设备。如果设置为1,它将在注册到网络后始终请求IP。 -* `AT+CGDCONT`:设置APN命令。运行`AT+CGDCONT`可以查看APN配置文件1到8的设置。要清除APN,只需发送=和要清除的配置文件号码。例如,如果我想清除APN配置文件1,我会发送`AT+CGDCONT=1`。要设置APN,您需要指定配置文件号码、协议(IPV4、IPV6或IPV4V6表示两者都用)然后是APN。例如,如果我想将APN 1设置为APNGOESHERE并同时使用IPV4和IPV6,我会发送`AT+CGDCONT=1,"IPV4V6","APNGOESHERE"` - * 注意:您的APN将根据SIM卡和调制解调器内置MDM配置文件的了解自动填充。有时您想使用不同于默认使用的APN。通常您可以通过运行命令手动设置,它会保持不变。但在某些情况下,比如当您从SIM1切换到SIM2然后再切回SIM1或反之时,APN会恢复到其MBN配置文件中的设置。运行`AT+CGDCONT?`来查看。将ICCID锁定到APN的脚本在我的待办列表中。 -* `AT+QPRTPARA=1`:应该将当前配置保存到内存。虽然不是必需的,但我总是运行它以防万一。 +这些命令的作用: +* `AT+QCFG="data_interface"`: 配置通过PCIe和USB的网络端口/诊断端口通信。第一个参数用于网络通信;0表示USB,1表示PCIe。第二个参数用于诊断端口;只有0选项表示USB。请注意,即使在PCIe网络模式下,USB端口仍然可用于连接。似乎调制解调器会使用不同的APN配置文件向运营商请求第二个IP地址。在2023-07-31 AT文档第41/42页中有一个命令应该可以启用使用相同的APN,该文档在[RM520N-GL资源库](https://github.com/iamromulan/RM520N-GL)中。当然,如果您的运营商允许为SIM/线路分配第二个IP,这*应该*都可以工作。我需要进一步研究这个问题。 -..运行`AT+CFUN=1,1`后,调制解调器将重启,您应该从以太网端口获得一个本地IP地址。通常是192.168.225.x。 +* `AT+QETH="eth_driver","r8125",1`: 这配置在模块启动时加载哪个以太网驱动程序。这是RTL8125以太网芯片组的正确驱动程序。您可以运行`AT+QETH="eth_driver"`获取选项列表;我相信只能启用一个。第一个参数是驱动程序名称,第二个参数是启用或禁用的布尔值。 + +* `AT+QCFG="pcie/mode"`: 1 = RC (Root Complex),即主机。0 = EP (Endpoint),用于具有RC的设备中 + +* `AT+QCFG="usbnet",1`: USB ECM模式下的NIC数据呼叫方法。1=ECM(以太网控制模型)。在这种模式下,即使没有物理以太网端口可用,调制解调器也会设置自己来维持连接。了解ECM的工作原理可以知道原因。 + +* `AT+QMAPWAC`: 启用或禁用移动AP自动拨号:0=禁用 1=启用(重启生效)。您可以运行`AT+QMAPWAC?`查看当前保存/设置的值。我的发现:将其视为通用自动连接设置。如果设置为0,无线电会连接(或者会吗?)以便您可以看到信号统计信息,但不会从运营商获取IP地址。在大多数USB模式下(除了ECM),完成该过程取决于连接的设备。如果设置为1,它将在注册到网络后始终请求IP。 + +* `AT+CGDCONT`: 设置APN命令。运行`AT+CGDCONT`查看APN配置文件1到8的设置。要清除APN,只需发送=和要清除的配置文件编号。例如,如果我想清除APN配置文件1,我会发送`AT+CGDCONT=1`。要设置APN,您需要指定配置文件编号、协议(IPV4、IPV6或IPV4V6表示两者)然后是APN。例如,如果我想将APN 1设置为APNGOESHERE并同时使用IPV4和IPV6,我会发送`AT+CGDCONT=1,"IPV4V6","APNGOESHERE"` + * 注意:您的APN将根据SIM卡和调制解调器内置MDM配置文件的了解自动填充。有时您想使用不同于默认的APN。通常您可以通过运行命令手动设置并使其生效。但在某些情况下,比如从SIM1切换到SIM2然后再切回SIM1或反之,APN会恢复为MBN配置文件中的APN。运行`AT+CGDCONT?"` 查看。将ICCID锁定到APN的脚本在我的待办列表中。 + +* `AT+QPRTPARA=1`: 应该将当前配置保存到内存。虽然不是必需的,但我总是运行它以防万一。 + +..运行`AT+CFUN=1,1`后调制解调器将重启,您应该从以太网端口获得一个本地IP地址。通常是192.168.225.x。 ## 固件刷新后;首次设置后 ### 固件刷新后需要运行这些命令才能重新上线 # -#### 如果您不在ECM模式下(AT+QCFG="usbnet",1),则需要先执行以下操作: +#### 如果您不在ECM模式下(AT+QCFG="usbnet",1),则需要先执行以下操作: ``` AT+QMAPWAC=1 -AT+CFUN=1,1(重启) +AT+CFUN=1,1 (或直接重启) ``` # #### 运行我的[工具包](https://github.com/iamromulan/quectel-rgmii-toolkit) -固件刷新会移除工具包所做的内容: +固件刷新会删除工具包所做的更改: - 安装Telnet守护程序 - 安装Simpleadmin网页界面 - 安装和配置Tailscale -- 如果您需要,设置重启定时器 -- 如果您需要,发送一两个AT命令 +- 如果需要,设置重启定时器 +- 如果需要,发送一两个AT命令 ## 使用AT命令更改调制解调器IP地址 -默认情况下,调制解调器对IPv4充当真正的NAT路由器,并通过IPv6提供地址。调制解调器的IPv4地址是192.168.225.1 - 这可以通过AT命令更改[参见第228页:AT+QMAP="LANIP"](https://mega.nz/file/zEEmCYTb#Y_YVlSEWNn9tz9dpHvY1rSZuDR_gEB6XEVIQ0nGrCJQ) +默认情况下,调制解调器对IPv4使用真正的NAT路由器,并通过IPv6提供地址。调制解调器的IPv4地址是192.168.225.1 - 这可以通过AT命令更改[参见第228页:AT+QMAP="LANIP"](https://mega.nz/file/zEEmCYTb#Y_YVlSEWNn9tz9dpHvY1rSZuDR_gEB6XEVIQ0nGrCJQ) -有很多原因可能需要更改调制解调器的IP..例如,您可能有多个调制解调器连接到同一个路由器用于WAN负载均衡或绑定,或者它可能与您的内部网络IP范围冲突,或者(其他原因)。在最新的固件版本中,可以使用命令来完成这个操作! +有很多原因可能需要更改调制解调器的IP地址。例如,您可能有多个调制解调器连接到同一路由器用于WAN负载均衡或绑定,或者它可能与您的内部网络IP范围冲突,或者(其他原因)。在最新的固件版本中,一个命令就可以做到这一点! 命令是: ``` -AT+QMAP="LANIP",,,<路由器ip>,<是否立即应用?> +AT+QMAP="LANIP",,,<路由器ip>,<是否立即应用> AT+QMAP="LANIP",192.168.227.20,192.168.227.100,192.168.227.1,1 ``` -'是否立即应用?'表示路由器是否应该立即应用更改,或等待重启。1表示是,0表示否。 +'是否立即应用'表示路由器是否应该立即应用更改,还是等到重启。1表示是,0表示否。 -``` -## 启用IP透传 +## 启用IP直通 -如果您想启用IP透传,让从运营商分配的IP地址传递给连接到以太网端口的设备,您可以做到!即使在启用IPPT(IP透传)的情况下,包括网关在内的LAN IP地址仍然可以访问。 +如果您想启用IP直通,让从运营商分配的IP地址传递给连接到以太网端口的设备,您可以!即使启用了IPPT(IP直通),LAN IP地址(包括网关)仍然可以访问。 -**IP透传有3个阶段:** +**IP直通有3个阶段:** # ### DMZ方法 -这种方法严格来说不是真正的IP透传,但它也能有效地消除双重NAT。基本上,您在这里所做的是将DHCP限制为只分配1个IP地址,然后将其设置为DMZ,有效地将每个端口转发到该内部IP。 +这种方法严格来说不是真正的IP直通,但它也能有效消除双重NAT。基本上,您要做的是将DHCP限制为只分配1个IP地址,然后将其设置为DMZ,有效地将每个端口转发到该内部IP。 -#### 启用IP透传(DMZ方法): +#### 启用IP直通(DMZ方法): ``` AT+QMAP="LAN",192.168.225.2 AT+QMAP="DMZ",1,4,192.168.225.2 -AT+CFUN=1,1(重启) +AT+CFUN=1,1 (重启) ``` 如果"LAN"命令不起作用,则使用"LANIP"来定义起始范围、结束范围、网关,1 使起始范围和结束范围相同 -# -### 实际IP透传 -这是在[2023-07-31 AT手册](https://github.com/iamromulan/RM520N-GL/blob/main/Documents/Quectel_RG520N&RG525F&RG5x0F&RM5x0N_Series_AT_Commands_Manual_V1.0.0_Preliminary_20230731.pdf)第231页记录的方法 +### 实际IP直通 -#### 启用IP透传(QMAP方法): +这是在[2023-07-31 AT手册](https://github.com/iamromulan/RM520N-GL/blob/main/Documents/Quectel_RG520N&RG525F&RG5x0F&RM5x0N_Series_AT_Commands_Manual_V1.0.0_Preliminary_20230731.pdf)第231页记录的方法。 + +#### 启用IP直通(QMAP方法): ``` AT+QMAP="MPDN_rule",0,1,0,1,1,"FF:FF:FF:FF:FF:FF" ``` -发送此命令后,以太网端口应该会关闭一两秒钟,然后重新启动并启用IPV4透传。注意:IPV6有时也会分配?这只是DHCP IPV6吗?我会研究这个问题。 +发送此命令后,以太网端口应该会关闭一两秒然后重新启动,并启用IPV4直通。注意:IPV6有时也会分配?这只是DHCP IPV6吗?我会继续研究这个问题。 ##### MPDN规则参数: -* 第一个 = MPDN规则号码,范围0-3(除非您在做一些复杂的事情,否则您会使用0。)[提示:多个数据呼叫规则] -* 第二个 = 要使用的APN配置文件ID(CGDCONT)。您可能想要使用1。 -* 第三个 = VLAN ID。这通常是0,但您可以运行`AT+QMAP="VLAN"`来查看应该是什么。 -* 第四个 = IPPT模式,使用1表示以太网,使用0表示禁用(AT PDF中有更多模式) +* 第一个 = MPDN规则编号,范围0-3(除非您在做复杂的配置,否则使用0。)[提示:多个数据呼叫规则] +* 第二个 = 要使用的APN配置文件ID(CGDCONT)。您可能想使用1。 +* 第三个 = VLAN ID。通常为0,但您可以运行`AT+QMAP="VLAN"`查看应该是什么。 +* 第四个 = IPPT模式,以太网使用1,禁用使用0(AT PDF中有更多模式) * 第五个 = 自动连接。如果设置为0=禁用 1=启用 -* 第六个 = 要透传到的MAC地址。`FF:FF:FF:FF:FF:FF`将IP传递给最后连接的以太网设备。`"00:00:00:00:00:00"`将只传递给第一个连接的以太网设备。您也可以指定自定义MAC地址。 +* 第六个 = 要传递的MAC地址。`FF:FF:FF:FF:FF:FF`将IP传递给最后连接的以太网设备。`"00:00:00:00:00:00"`将只传递给第一个连接的以太网设备。您也可以指定自定义MAC地址。 ##### DHCPV4DNS -打开和关闭IPV4 DNS代理,以便运营商的DNS也会透传。 +打开和关闭IPV4 DNS代理,这样运营商的DNS也会直通。 所以... -内部有一个DNS服务器/代理,用于通过AT命令设置域名并使其实际工作。通过adb shell/ssh shell有一种方法可以自己设置DNS覆盖到您自己的名称服务器。Tailscale会自动完成这个操作,我稍后会讨论这个问题。 +内部有一个DNS服务器/代理,用于通过AT命令设置域名并使其实际工作。通过adb shell/ssh shell可以自己设置DNS覆盖到您自己的名称服务器。Tailscale会自动完成这个操作,我稍后会讨论这个问题。 ``` AT+QMAP="DHCPV4DNS","disable" ``` -#### 禁用IP透传(QMAP方法): + +#### 禁用IP直通(QMAP方法): ``` -AT+QMAP="MPDN_rule",0(以太网端口将关闭并重新启动) -AT+QMAPWAC=1(如果不在ECM模式下) -AT+CFUN=1,1(重启)(可选) +AT+QMAP="MPDN_rule",0 (以太网端口将关闭并重新启动) +AT+QMAPWAC=1 (如果不在ECM模式下) +AT+CFUN=1,1 (重启)(可选) ``` 或者 刷新固件---> 按照[固件刷新后;首次设置后](#固件刷新后首次设置后)的步骤操作 ### 在IPPT模式下禁用NAT到VLAN -在启用MDPN规则并打开IPPT后,您可以禁用到VLAN0的NAT(192.168.225.x地址)并进行完全透传(除非您不需要/不想要本地访问网关,否则我不建议这样做)。您应该仍然可以使用Tailscale访问网关地址。 - +在启用带IPPT的MDPN规则后,您可以禁用到VLAN0的NAT(192.168.225.x地址)并进行完全直通(除非您不需要/不想要本地访问网关,否则我不建议这样做)。您应该仍然可以使用Tailscale访问网关地址。 ``` # 高级配置 -这些调制解调器在底层是一个完整的Linux路由器。一旦获得访问权限,您可以修改文件系统上的任何内容。这很酷,也有点危险..但很有趣。访问是通过'adb'实现的 - 这与用于对Android手机进行有趣操作的工具相同。如果您安装了Tailscale,您也可以通过Tailscale使用SSH。我稍后会详细讨论这个问题。 +这些调制解调器在底层是一个完整的Linux路由器。一旦获得访问权限,您可以修改文件系统上的任何内容。这很酷,也有点危险..但很有趣。访问是通过'adb'实现的 - 这与用于对Android手机进行有趣操作的工具相同。如果您安装了Tailscale,也可以通过Tailscale使用SSH。我稍后会详细讨论这个问题。 ## 解锁和使用ADB -默认情况下,这些调制解调器没有启用通过USB的ADB,需要解锁才能启用。一旦解锁,除非您禁用它,否则它会保持解锁状态。 +默认情况下,这些调制解调器没有启用USB上的ADB,需要解锁才能启用。一旦解锁,除非您禁用它,否则它保持解锁状态。 # -> :bowtie: 感谢[carp4](https://github.com/carp4)在[qadbkey-unlock python脚本](https://github.com/carp4/qadbkey-unlock)上的工作,我们现在可以不需要Quectel的帮助就能做到这一点! +> :bowtie: 感谢[carp4](https://github.com/carp4)在[qadbkey-unlock python脚本](https://github.com/carp4/qadbkey-unlock)上的工作,现在我们可以不需要Quectel的帮助就能做到这一点! -要获得访问权限,您需要从调制解调器获取锁定代码,然后将其提供给python ADB解锁密钥生成器,获取它给出的解锁密钥代码,解锁ADB,然后实际启用通过USB的ADB。这只需要做一次,因为这在固件刷新后仍然有效。 +要获得访问权限,您需要从调制解调器获取锁定代码,然后将其提供给python ADB解锁密钥生成器,获取它给出的解锁密钥代码,解锁ADB,然后实际启用USB上的ADB。这只需要做一次,因为这在固件刷新后仍然有效。 # 要获取锁定代码,运行AT命令"AT+QADBKEY?"。调制解调器将回复: ``` @@ -306,7 +311,7 @@ OK AT+QADBKEY="0jXKXQwSwMxYoeg" ``` -然后,要实际启用ADB,运行`AT+QCFG="usbcfg"`,取出输出,将倒数第二个0改为1,然后将新的usbcfg字符串发送到调制解调器(不要只是复制/粘贴下面的内容;您的调制解调器的USB VID/PID很可能不同): +然后,要实际启用ADB,运行`AT+QCFG="usbcfg"`,取出输出,将倒数第二个0改为1,然后将新的usbcfg字符串发送到调制解调器(不要只是复制/粘贴下面的内容;您的调制解调器的USB VID/PID很可能不同): ```control AT+QCFG="usbcfg" @@ -314,38 +319,38 @@ AT+QCFG="usbcfg" AT+QCFG="usbcfg",0x2C7C,0x0801,1,1,1,1,1,1,0 // 启用ADB ``` -并使用`AT+CFUN=1,1`重启以实际应用。 - -``` +并用`AT+CFUN=1,1`重启以实际应用。 ### 使用ADB -:warning: 将很快重新组织 -:warning: adb现在已随QFlash 7.1+从QuecDeploy安装 +:warning: 即将重构 +:warning: adb现在随QFlash 7.1+从QuecDeploy安装 :warning: 已过时 -一旦调制解调器重新上线,您应该能够使用ADB通过USB连接来管理主机上的调制解调器。在使用之前,您需要安装ADB驱动程序和ADB命令行工具。最简单的方法就是使用我的RM520仓库脚本。或者自己动手:https://github.com/K3V1991/ADB-and-FastbootPlusPlus/releases +一旦调制解调器重新上线,您应该能够使用ADB通过USB连接的主机来管理调制解调器。在使用之前,您需要安装ADB驱动程序和ADB命令行工具。最简单的方法是使用我的RM520仓库脚本。或者自行安装:https://github.com/K3V1991/ADB-and-FastbootPlusPlus/releases -- 下载.exe非便携版 +- 下载.exe非便携版本 ![downloadadb](https://github.com/iamromulan/quectel-rgmii-configuration-notes/blob/main/images/downloadadb.png?raw=true) -- 接受、是、下一步、允许基本上是您想要按的所有按钮。如果您收到这样的安全警告,请点击更多信息 +- 基本上点击接受、是、下一步、允许即可。如果出现这样的安全警告,点击更多信息 ![secerror](https://github.com/iamromulan/quectel-rgmii-configuration-notes/blob/main/images/secerror.png?raw=true) -- 在安装过程中,您一定要选择这些。 +- 安装过程中,确保选择这些选项。 ![adb1](https://github.com/iamromulan/quectel-rgmii-configuration-notes/blob/main/images/adb1.png?raw=true) -- 最后,确保这些选项如下所示: +- 最后,确保这些选项如图所示: ![adb2](https://github.com/iamromulan/quectel-rgmii-configuration-notes/blob/main/images/adb2.png?raw=true) -- 之后会打开这样的窗口。 +- 通用Adb驱动程序安装程序将在之后打开,继续接受、是、下一步、允许、完成即可。 + +- 将打开如下窗口。 ![adb3](https://github.com/iamromulan/quectel-rgmii-configuration-notes/blob/main/images/adb3.png?raw=true) -- 任何时候想使用adb都要打开ADB & Fastboot++ +- 任何时候想使用adb都需要打开ADB & Fastboot++ ![adbcmd](https://github.com/iamromulan/quectel-rgmii-configuration-notes/blob/main/images/adbcmd.png?raw=true) -> :warning: **调制解调器不需要其他图标/快捷方式。它们对Android手机有用。如果您只需要这个用于Quectel调制解调器,可以删除图标/快捷方式** +> :warning: **其他图标/快捷方式对调制解调器来说不需要。它们对Android手机有用。如果您只需要这个用于Quectel调制解调器,可以删除图标/快捷方式** > ![enter image description here](https://github.com/iamromulan/quectel-rgmii-configuration-notes/blob/main/images/notneededadb.png?raw=true) @@ -356,278 +361,386 @@ AT+QCFG="usbcfg",0x2C7C,0x0801,1,1,1,1,1,1,0 // 启用ADB ![adb3](https://github.com/iamromulan/quectel-rgmii-configuration-notes/blob/main/images/adb3.png?raw=true) - `adb pull /path/to/file` - 从调制解调器下载文件到当前工作目录 -- `adb push /path/on/computer /path/on/modem` - 上传文件到调制解调器 -- `adb shell` - 远程控制调制解调器上的root linux shell/命令行,完成后输入exit(注意在shell中运行通常以`adb shell`开头的命令时,需要跳过该部分) - - 在Quectel调制解调器的adb shell中,它会像unix shell一样工作。像`uname -a`这样的命令会显示操作系统名称、处理器类型、构建日期信息等;`ls`会显示文件结构,而`systemctl list-units --type=service --all`会显示所有已安装的服务,无论是否运行。 +- `adb push /path/on/computer /path/on/modem` - 将文件上传到调制解调器 +- `adb shell` - 远程控制调制解调器上的root linux shell/命令行,完成后输入exit(注意在shell中运行命令时,通常以`adb shell`开头的命令需要跳过这部分) + - 在Quectel调制解调器的adb shell中,它会表现得像一个unix shell。像`uname -a`这样的命令会显示操作系统名称、处理器类型、构建日期信息等;`ls`会显示文件结构,而`systemctl list-units --type=service --all`会显示所有已安装的服务,无论是否运行。 -到目前为止,我尝试让ADB通过IP在以太网接口上监听都没有成功。警告 - `adb tcp `命令会使ADB和所有其他通过USB暴露的串行端口崩溃,直到调制解调器重启。所以现在坚持使用USB上的ADB。如果有人了解这个设备上adbd是如何工作的,请随时打开issue/discussion/PR。现在您可以通过tailscale使用SSH。 +到目前为止,我尝试让ADB在以太网接口上通过IP监听都没有成功。警告 - `adb tcp `命令会使ADB和所有其他通过USB暴露的串口崩溃,直到调制解调器重启。所以现在请坚持使用USB上的ADB。如果有人了解这个设备上adbd的工作原理,请随时打开issue/discussion/PR。目前您可以通过tailscale使用SSH。 +## Web GUI和工具包 +:warning: 即将重构 + +### 概述 +获得adb访问权限后,您可以安装一个简单的网页界面,可以使用调制解调器的网关IP地址访问。您可以查看一些基本的信号统计信息,从浏览器发送AT命令,并直接在调制解调器上更改TTL。默认情况下,这将在443端口上使用https,并从80端口重定向到443。所以如果您没有更改网关IP地址,您可以访问https://192.168.225.1/ (SDXLEMUR),您会看到这个... + +![主页](https://github.com/iamromulan/quectel-rgmii-configuration-notes/blob/main/images/dev_home.png?raw=true) +![AT命令](https://github.com/iamromulan/quectel-rgmii-configuration-notes/blob/main/images/dev_simplenetwork.png?raw=true) +![TTL](https://github.com/iamromulan/quectel-rgmii-configuration-notes/blob/main/images/dev_simplescan.png?raw=true) +![TTL](https://github.com/iamromulan/quectel-rgmii-configuration-notes/blob/main/images/dev_simplesettings.png?raw=true) +![TTL](https://github.com/iamromulan/quectel-rgmii-configuration-notes/blob/main/images/dev_sms.png?raw=true) +控制台: +![TTL](https://github.com/iamromulan/quectel-rgmii-configuration-notes/blob/main/images/dev_console.png?raw=true) +![TTL](https://github.com/iamromulan/quectel-rgmii-configuration-notes/blob/main/images/dev_deviceinfo.png?raw=true) + +^^^ SDXLEMUR分支上的Simple Admin 2.0 ^^^ +感谢[dr-dolomite](github.com/dr-dolomite)的工作,我们可以安装这样的东西! + +### 如何安装 +- 对于**RM500/502/520/521/530**(SDXLEMUR和SDXPRAIRIE平台armv7 32位) + - 使用[SDXLEMUR分支](https://github.com/iamromulan/quectel-rgmii-toolkit/tree/SDXLEMUR)(即将重命名为SDXLEMUR)而不是main分支,它包含最新的更改并已准备好供一般使用。:) + +- 对于**RM550/551**(SDXPINN平台OpenWRT系统armv8-A 64位) + - 使用[SDXPINN分支](https://github.com/iamromulan/quectel-rgmii-toolkit/tree/SDXPINN) + +## Tailscale安装和配置 + +> :warning: 您的调制解调器必须已经连接到互联网才能安装 + +### 安装: +打开工具包主菜单并按4进入Tailscale菜单 +![Toolkit](https://github.com/iamromulan/quectel-rgmii-configuration-notes/blob/main/images/tailscalemenu.png?raw=true) +**按1,等待安装完成。这对系统来说是一个非常大的文件,所以请给它一些时间。一旦完成并显示tailscaled已启动,按2进行配置。** +![Toolkit](https://github.com/iamromulan/quectel-rgmii-configuration-notes/blob/main/images/tailscaleconfig.png?raw=true) + +首次连接时会给您一个登录链接 + - 按1仅连接。 + - 按2连接并启用通过tailscale的SSH访问(远程命令行)。 + - 按3在启用SSH的情况下重新连接 + - 按4断开连接 + - 按5注销 + +**重要提示** + +**您需要前往Tailscale DNS设置https://login.tailscale.com/admin/dns 并打开覆盖本地DNS并添加DNS提供商,以避免在调制解调器上失去互联网连接。** + +这是因为Tailscale二进制文件创建了`/etc/reslov.conf`来覆盖调制解调器的DNS以使用来自您的Tailnet的DNS。如果您没有公共DNS,您将无法使用互联网。我使用Cloudflare和Google。我稍后会在工具包中添加一个选项来关闭DNS连接,这在待办列表中。 + +就是这样!从运行tailscale的另一个设备,您应该能够通过tailnet分配给它的IP访问您的调制解调器。要从tailnet上的另一个设备访问SSH,打开终端/命令提示符并输入 + + tailscale ssh root@(IP或主机名) +IP或主机名是在您的tailnet中分配给它的IP或主机名 + + - 注意您的SSH客户端必须能够在连接时给您一个登录链接。这就是会话授权的方式。在Windows CMD中运行正常,在Android上使用JuiceSSH。 + +## 启用每日重启 + +> :warning: 您的调制解调器必须已经连接到互联网才能安装 + +### 安装: +使用[调制解调器AP工具包项目](https://github.com/iamromulan/quectel-rgmii-toolkit) + +### 如何卸载 + +参见[调制解调器AP工具包项目](https://github.com/iamromulan/quectel-rgmii-toolkit) + +# 其他通过ADB可以检查的有趣内容 +:warning: 即将重构 +:warning: 已过时 + +## 启动FTP服务器 + +一旦您获得了调制解调器的root访问权限(adb),如果您想的话,可以启动一个临时FTP服务器,让您通过网络而不是adb传输文件。它会一直运行,直到您按ctrl-c停止它。在这里要小心,它允许任何可以访问IP的人完全不受认证地访问文件系统(如果您有路由的公共IP,也包括该IP,除非您添加防火墙规则!)您可以将IP更改为调制解调器的LAN地址(默认为192.168.225.1),如果您愿意的话。 + +```bash +tcpsvd -vE 0.0.0.0 21 ftpd / ``` -### Web GUI和工具包 +通过FTP连接时,您可以将用户名和密码留空。 -#### 概述 -这些调制解调器有一个Web GUI界面,可以通过http://192.168.225.1(或您设置的任何其他IP)访问。它允许您查看状态、设置APN、设置PIN、查看日志等。它还允许您通过Web界面发送AT命令。 +注意,调制解调器上的BusyBox二进制文件编译时没有FTP写入支持。如果您想启用写入支持,可以将files/busybox-armv7l复制到调制解调器上的某个位置(任何在/usrdata下的内容都是持久的;在这个例子中我创建了/usrdata/bin),并调用该二进制文件,在ftpd和/之间加上'-w'标志;我也建议使用当前的busybox作为tcpsvd。您还需要为匿名访问添加'-A'到ftpd。示例命令: -#### 如何安装 -我已经创建了一个[工具包](https://github.com/iamromulan/quectel-rgmii-toolkit),它可以自动安装以下所有内容。您只需要在安装后配置Tailscale。 - -如果您想手动安装,请继续阅读。 - -#### Tailscale安装和配置 -> 我已经创建了一个[工具包](https://github.com/iamromulan/quectel-rgmii-toolkit),它可以自动安装以下所有内容。您只需要在安装后配置Tailscale。 - -> 如果您想要更多信息,请查看[Tailscale的文档](https://tailscale.com/kb/installation/) - -1. 从[Tailscale的GitHub仓库](https://github.com/tailscale/tailscale/releases)下载最新的arm64版本。 -2. 解压缩下载的文件。 -3. 将tailscale和tailscaled二进制文件上传到调制解调器: +```bash +/usrdata/bin/busybox-armv7l tcpsvd -xE 0.0.0.0 21 /usrdata/bin/busybox-armv7l ftpd -wA / ``` -adb push tailscale /usr/bin/ -adb push tailscaled /usr/sbin/ -``` -4. 使二进制文件可执行: -``` -adb shell chmod +x /usr/bin/tailscale -adb shell chmod +x /usr/sbin/tailscaled -``` -5. 创建systemd服务文件: -``` -adb shell "echo '[Unit] -Description=Tailscale node agent -Documentation=https://tailscale.com -Wants=network-pre.target -After=network-pre.target NetworkManager.service systemd-resolved.service -[Service] -ExecStartPre=/usr/sbin/tailscaled --cleanup -ExecStart=/usr/sbin/tailscaled --state=/var/lib/tailscale/tailscaled.state --socket=/run/tailscale/tailscaled.sock --port=41641 --tun=userspace-networking -ExecStopPost=/usr/sbin/tailscaled --cleanup +## 通过adb shell更改调制解调器IP地址 +:warning: 即将重构 +:warning: 已过时 -Restart=on-failure +**注意**:我将此处保留作为参考,但在现代调制解调器上,您确实可以使用AT命令更改IP。请参考:[使用AT命令更改调制解调器IP地址](#使用at命令更改调制解调器ip地址) -RuntimeDirectory=tailscale -RuntimeDirectoryMode=0755 -StateDirectory=tailscale -StateDirectoryMode=0700 -CacheDirectory=tailscale -CacheDirectoryMode=0750 -Type=notify +有很多原因可能需要更改调制解调器的IP地址。例如,您可能有多个调制解调器连接到同一路由器用于WAN负载均衡或绑定,或者它可能与您的内部网络IP范围冲突,或者(其他原因)。不幸的是,Quectel不正式支持这一点,也没有AT命令可以做到这一点。但是,这并不难做到。 -[Install] -WantedBy=multi-user.target' > /etc/systemd/system/tailscaled.service" +确保您已按上述说明获得ADB访问权限。 + +警告:您正在修改调制解调器根文件系统上的文件。如果您弄坏了它,您就买下它了,而且可以保留两块碎片! + +1. 通过`adb shell`登录到调制解调器(如果您通过USB连接了多个启用了ADB的调制解调器,您可以使用`adb devices`获取调制解调器列表,并通过`adb -s <编号> shell`连接到您想要的那个) +2. 切换到`/etc`目录 +3. 在编辑器中打开`/etc/data/mobileap_cfg.xml`,将每个出现的192.168.225更改为您想要的内容 - 对于我的,我只是改成了192.168.226。 +4. 退出ADB,并用`AT+CFUN=1,1`重启路由器 + +注意,192.168.225.1地址也在`/etc/ql_nf_preload.conf`中被引用;我没有修改该文件,一切似乎都能正常工作,但是让您知道一下。 + +## TTL修改 + +> :warning: 不要与Simpleadmin TTL修改同时使用。使用其中之一 +> :warning: 即将重构 +:warning: 已过时 + +这是一个使用iptables的Linux路由器 - 所以您可以添加iptables规则来覆盖传出TTL。出于各种原因,某些运营商套餐可能需要这样做。 + +值得注意的是,这对于通过USB外壳连接的调制解调器也有效..这样做是直接在数据包离开调制解调器时更改TTL/HL,所以它真的不在乎它是如何连接到您的网络的。 + +确保您已按上述说明获得ADB访问权限。 + +警告:您正在修改调制解调器根文件系统上的文件。如果您弄坏了它,您就买下它了,而且可以保留两块碎片! + +文件: +* `files/ttl-override`:一个简单的shell脚本,用于启动/停止TTL覆盖。在脚本顶部用'TTLVALUE='设置所需的TTL;默认值是64,这将使所有数据包看起来像是来自调制解调器本身。 +* `files/ttl-override.service`:一个systemd服务,用于启动上述脚本 + +### 安装TTL覆盖: + +* 将根文件系统挂载为读写: ``` -6. 创建必要的目录: +adb shell mount -o remount,rw / ``` -adb shell mkdir -p /var/lib/tailscale -adb shell mkdir -p /run/tailscale +* 将文件推送到系统: ``` -7. 启用并启动服务: +adb push ttl-override /etc/initscripts +adb push ttl-override.service /lib/systemd/system ``` +``` + +## 启用Qualcomm网页服务器 +> :warning: 不要同时使用这个和Simpleadmin。使用其中之一 + +> :bowtie: 本节由[GitHub用户aesthernr](https://github.com/aesthernr)贡献。感谢贡献! + +:warning: 即将重构 +:warning: 已过时 + +Qualcomm为其OEM提供了一个名为QCMAP的工具,用于管理WAN连接、调制解调器IP配置等。他们还提供了一个简单的网页界面,应该能够管理调制解调器的一些功能。在RM500Q上,它默认启用,但实际上不工作。RM520上有这些组件,它确实可以工作,只需要一些工作来启用它! + +- 将根文件系统挂载为读写: + +```bash +adb shell mount -o remount,rw / +``` + +- 将文件推送到系统: + +```bash +cd /path/to/quectel-rgmii-configuration-notes/files +adb push qcmap_httpd.service /lib/systemd/system +adb push qcmap_web_client.service /lib/systemd/system +``` + +- 重置用户名/密码为admin/admin。您可以在首次登录后更新这些信息。 + +```bash +adb push lighttpd.user /data/www +adb shell chown www-data:www-data /data/www/lighttpd.user +``` + +- 创建systemd单元的符号链接,重新加载systemd,启动服务,并将root重新挂载为只读: + +```bash +adb shell chmod +x /etc/initscripts/start_qcmap_httpd +adb shell chmod +x /etc/initscripts/start_qcmap_web_client_le +adb shell ln -s /lib/systemd/system/qcmap_httpd.service /lib/systemd/system/multi-user.target.wants/ +adb shell ln -s /lib/systemd/system/qcmap_web_client.service /lib/systemd/system/multi-user.target.wants/ adb shell systemctl daemon-reload -adb shell systemctl enable tailscaled -adb shell systemctl start tailscaled -``` -8. 登录到您的Tailscale账户: -``` -adb shell tailscale up --accept-routes --accept-dns=false --ssh -``` -9. 访问调制解调器的URL以完成登录过程。 - -#### 使用Tailscale SSH -一旦您完成了Tailscale的设置,您就可以使用`ssh root@`从任何连接到您的Tailnet的设备访问调制解调器。 - -#### 禁用Tailscale -要禁用Tailscale,您可以: -``` -adb shell systemctl stop tailscaled -adb shell systemctl disable tailscaled +adb shell systemctl start qcmap_httpd +adb shell systemctl start qcmap_web_client +adb shell mount -o remount,ro / ``` -#### 卸载Tailscale -要完全卸载Tailscale: +- 打开浏览器访问[http://192.168.225.1/QCMAP.html](http://192.168.225.1/QCMAP.html)(如有必要请替换IP) - 您可以使用admin/admin认证。登录后会提示您更改密码。请注意,除非您通过PCIe连接了支持的无线网卡,否则WLAN设置将不起作用;这超出了本文档的范围。目前还不知道其他功能是否都能按预期工作 - 但是,恢复出厂设置应该会清除所有这些设置。 ``` -adb shell systemctl stop tailscaled -adb shell systemctl disable tailscaled -adb shell rm /usr/bin/tailscale -adb shell rm /usr/sbin/tailscaled -adb shell rm /etc/systemd/system/tailscaled.service -adb shell rm -r /var/lib/tailscale -adb shell rm -r /run/tailscale + +## 启用journald日志记录 + +默认情况下,journald在调制解调器上是被屏蔽的 - 也就是说,systemd所做的任何事情都不会有持久的日志。要修复这个问题,我们需要手动修改根文件系统中的文件,因为在启动这个服务时/etc不可用。 + +在启用之前,我建议修改/lib/systemd/journald.conf.d/00-systemd-conf.conf,添加一些调整以防止它使用太多空间: + +```bash +adb shell mount -o remount,rw / +adb shell +# vi /lib/systemd/journald.conf.d/00-systemd-conf.conf +###按如下参数编辑,然后保存更改,并退出shell### +adb shell mount -o remount,ro / +``` + +配置文件默认包含: + +```bash +[Journal] +ForwardToSyslog=yes +RuntimeMaxUse=64M +``` + +我建议使用: + +```bash +[Journal] +ForwardToSyslog=no +RuntimeMaxUse=16M +Storage=volatile +# 很多垃圾日志单元,所以限制日志记录突发。 +RateLimitIntervalSec=5m +RateLimitBurst=100 +``` + +这禁用了转发到syslog守护程序(以避免占用两次空间),强制运行时(RAM)存储,并将其限制为16mb。它还启用了相当激进的速率限制,这样像ipacm这样的应用程序就不会强制持续轮换。(每个服务都有自己的速率限制。) + +以下是如何启用该服务: + +```bash +adb shell mount -o remount,rw / +adb shell rm /lib/systemd/system/sysinit.target.wants/systemd-journald.service /lib/systemd/system/sockets.target.wants/systemd-journald.socket /lib/systemd/system/sockets.target.wants/systemd-journald-dev-log.socket +adb shell ln -s /lib/systemd/system/systemd-journald.service /lib/systemd/system/sysinit.target.wants/systemd-journald.service +adb shell ln -s /lib/systemd/system/systemd-journald.socket /lib/systemd/system/sockets.target.wants/systemd-journald.socket adb shell systemctl daemon-reload - +adb shell systemctl start systemd-journald.socket systemd-journald.service systemd-journald-dev-log.socket +# 另外,为了避免大量关于单元文件写入权限的垃圾信息..如果您从windows盒子推送systemd单元,您可能需要更频繁地清理这个! +adb shell chmod 644 /lib/systemd/system/*.service /lib/systemd/system/*.socket /lib/systemd/system/*.conf +adb shell chmod 644 /lib/systemd/system/dbus.service.d/dbus.conf /lib/systemd/system/systemrw.mount.d/systemrw.conf +adb shell mount -o remount,ro / ``` -## 每日重启 +然后,我们必须卸载已挂载的/etc目录,并移除journald的底层屏蔽。我们需要重启系统才能恢复真正的/etc: -如果您经常遇到调制解调器需要重启的情况,您可以设置一个每日重启计划。这可以通过创建一个systemd服务和计时器来实现。 - -### 安装每日重启服务 - -1. 创建重启服务文件: -``` -adb shell "echo '[Unit] -Description=Daily modem reboot service - -[Service] -Type=oneshot -ExecStart=/sbin/reboot - -[Install] -WantedBy=multi-user.target' > /etc/systemd/system/modem-reboot.service" +```bash +adb shell umount -l /etc +adb shell mount -o remount,rw / +adb shell rm /etc/systemd/system/systemd-journald.service +adb shell mount -o remount,ro / +adb shell sync +adb shell reboot -f ``` -2. 创建计时器文件(默认为每天凌晨3点重启): -``` -adb shell "echo '[Unit] -Description=Daily modem reboot timer +如果您还想启用审计日志,作为上述操作的一部分也要执行以下操作: -[Timer] -OnCalendar=*-*-* 03:00:00 -Persistent=true - -[Install] -WantedBy=timers.target' > /etc/systemd/system/modem-reboot.timer" +```bash +adb shell rm /lib/systemd/system/sockets.target.wants/systemd-journald-audit.socket +adb shell ln -s /lib/systemd/system/systemd-journald-audit.socket /lib/systemd/system/sockets.target.wants/systemd-journald-audit.socket ``` -3. 启用并启动计时器: -``` -adb shell systemctl daemon-reload -adb shell systemctl enable modem-reboot.timer -adb shell systemctl start modem-reboot.timer -``` +我保持systemd-journal-flush禁用(屏蔽)状态,因为我们不想将日志数据写入持久存储。好吧 - 如果您确实想这样做,可以在配置文件中将Storage更改为"persistent",并且还要创建systemd-journal-flush的符号链接,以在启动时实际从易失性切换到持久性存储。 -### 禁用每日重启 -要禁用每日重启,您可以: -``` -adb shell systemctl stop modem-reboot.timer -adb shell systemctl disable modem-reboot.timer -``` +### 确保您连接到正确的调制解调器 -### 卸载每日重启 -要完全卸载每日重启服务: -``` -adb shell systemctl stop modem-reboot.timer -adb shell systemctl disable modem-reboot.timer -adb shell rm /etc/systemd/system/modem-reboot.service -adb shell rm /etc/systemd/system/modem-reboot.timer -adb shell systemctl daemon-reload -``` - -## 其他高级功能 - -### 设置自定义DNS服务器 -您可以通过修改`/etc/resolv.conf`文件来设置自定义DNS服务器: -``` -adb shell "echo 'nameserver 1.1.1.1' > /etc/resolv.conf" -``` - -### 查看系统日志 -要查看系统日志,您可以使用以下命令: -``` -adb shell journalctl -f -``` - -### 检查网络连接 -要检查网络连接状态,您可以使用以下命令: -``` -adb shell ifconfig -adb shell ip addr -adb shell route -n -``` - -### 查看进程 -要查看运行中的进程,您可以使用: -``` -adb shell ps -adb shell top -``` - -### 检查服务状态 -要查看所有服务的状态: -``` -adb shell systemctl list-units --type=service -``` - -### 查看系统信息 -要查看系统信息: -``` -adb shell uname -a -adb shell cat /proc/cpuinfo -adb shell cat /proc/meminfo +如果您有多个调制解调器连接到一个主机,就像我一样,可能很难记住哪个序列号对应哪个调制解调器。在/etc中有一个文件至少显示了型号: ``` +/ # cat /etc/quectel-project-version +Project Name: RM520NGL_VC +Project Rev : RM520NGLAAR01A07M4G_01.201 +Branch Name: SDX6X +Custom Name: STD +Package Time: 2023-03-14,09:49 +``` + +### 从ADB访问AT命令 +:warning: 即将重构 +:warning: 已过时 + +为了简化这个过程,我创建了一个sh脚本,您可以使用它来输入AT命令并获取响应。像这样下载并安装它: +``` +adb shell mount -o remount,rw / +adb shell wget -P /usrdata https://raw.githubusercontent.com/iamromulan/quectel-rgmii-configuration-notes/main/files/atcomm.sh +adb shell chmod +x /usrdata/atcomm.sh +adb shell mount -o remount,ro / +``` +安装后,您可以这样运行它: +``` +adb shell sh /usrdata/atcomm.sh +``` + +#### 发现 + +:warning: 即将重构 +:warning: 已过时 + +看起来以下进程用于通过USB暴露串口: +``` + 155 root 0:00 /usr/bin/port_bridge at_mdm0 at_usb0 0 + 162 root 0:00 /usr/bin/port_bridge smd7 at_usb2 1 +``` + +AT over Ethernet的守护程序也与smd7接口: +``` +/tmp # fuser /dev/smd7 +162 809 +/tmp # ps | grep -E '(162|809)' + 162 root 0:00 /usr/bin/port_bridge smd7 at_usb2 1 + 809 root 28:22 /usr/bin/ql_nw_service +23314 root 0:00 grep -E (162|809) +/tmp # lsof -p 809 2>/dev/null | grep -Ev '/usr/bin|/lib/|/dev/null|/$' +COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME +ql_nw_ser 809 0 3u unix 0x00000000 0t0 18565 type=SEQPACKET +ql_nw_ser 809 0 4u sock 0,8 0t0 18740 protocol: QIPCRTR +ql_nw_ser 809 0 5r FIFO 0,11 0t0 18741 pipe +ql_nw_ser 809 0 6w FIFO 0,11 0t0 18741 pipe +ql_nw_ser 809 0 7u sock 0,8 0t0 18863 protocol: QIPCRTR +ql_nw_ser 809 0 8r FIFO 0,11 0t0 18864 pipe +ql_nw_ser 809 0 9w FIFO 0,11 0t0 18864 pipe +ql_nw_ser 809 0 10u CHR 246,4 0t0 6291 /dev/smd7 +ql_nw_ser 809 0 11u IPv4 20353 0t0 TCP *:1555 (LISTEN) +ql_nw_ser 809 0 12u a_inode 0,12 0 6222 [eventpoll] +``` + +所以,一个简单的发送/接收命令的方法..在调制解调器上打开两个adb shell会话,在一个中运行`cat /dev/smd7`。在另一个中,运行AT命令。示例: + +监听shell: +``` +/ # cat /dev/smd7 +AT +OK +ATI +Quectel +RM520N-GL +Revision: RM520NGLAAR01A07M4G + +OK +``` + +命令shell: +``` +/tmp # echo -e 'AT \r' > /dev/smd7 +/tmp # echo -e 'ATI \r' > /dev/smd7 +``` + +看起来smd11和at_mdm0也可以用于此目的。在默认配置的调制解调器上,似乎smd7和at_mdm0都被运行的守护程序使用,所以Nate为他们的AT守护程序选择了smd11。有一个名为'quectel-uart-smd.service'的服务,在其单元文件中它禁用了quectel_uart_smd,并说smd11被MCM_atcop_svc使用。但是,我在系统上看不到任何迹象..所以它可能是最安全的选择。 # 故障排除 -## 常见问题 +:warning: 即将重构 +:warning: 已过时 -### 调制解调器无法连接到网络 -1. 检查SIM卡是否正确插入 -2. 确认APN设置是否正确 -3. 检查信号强度 -4. 尝试重启调制解调器 +## 无法从以太网端口获得互联网访问(常见) -### ADB连接问题 -1. 确保已正确安装ADB驱动程序 -2. 检查USB连接 -3. 确认已解锁ADB并正确配置 -4. 尝试使用不同的USB端口或线缆 +### AT+QMAPWAC +*启动时没有互联网* -### IP透传问题 -1. 确认已正确配置MPDN规则 -2. 检查MAC地址设置 -3. 验证VLAN配置 -4. 确保运营商支持IP透传 - -### Tailscale连接问题 -1. 检查Tailscale服务状态 -2. 确认登录状态 -3. 验证网络连接 -4. 检查防火墙设置 - -## 有用的调试命令 - -### 检查网络状态 +如果您不在ECM模式下,这很可能是您的问题。运行`AT+QMAPWAC?`查看它设置为什么。如果显示0,则表示它已关闭,您的调制解调器不会自动从提供商/运营商请求IP。要修复它,请启用它: ``` -adb shell ifconfig -adb shell ip addr -adb shell route -n +AT+QMAPWAC=1 +AT+CFUN=1,1 (或直接重启) ``` -### 查看系统日志 +### 以太网端口停止响应 +*使用过程中随机,切换基站/失去信号,以及某些其他情况* + +:warning: 此信息假设您阅读了Nate的原始指南 +:warning: 如果您有此问题且此功能已禁用,那么您可能有一个旧的MCUZONE板或具有PCIe眼图质量问题的不同板。 + +这是我一直在处理的一个问题,直到我发现使用`AT+QETH="rgmii"`命令是个坏主意。最初这是在固件上设置IPPT的方法,那时还没有添加QMAP命令。运行`AT+QETH="rgmii"`检查它设置为什么。如果显示`AT+QETH="RGMII","ENABLE",1,-1`,那可能就是问题所在。运行`AT+QETH="RGMII","DISABLE",1`修复它,然后重启。 + +## 调制解调器在启动时不自动连接(不常见) + +有人报告说,当您重启调制解调器时,它会以CFUN=0(最小功能)模式启动。要让它连接,您需要发出`AT+CFUN=1`。 + +我自己也遇到过这种情况,但我发现通过USB AT端口运行以下AT命令可以修复这个问题。 +```bash +AT+CFUN=1,1 ``` -adb shell journalctl -f -adb shell dmesg +等待调制解调器重启,然后运行 +```bash +AT+QPRTPARA=1 ``` - -### 检查服务状态 -``` -adb shell systemctl status tailscaled -adb shell systemctl status modem-reboot.timer -``` - -### 网络连接测试 -``` -adb shell ping 8.8.8.8 -adb shell traceroute 8.8.8.8 -``` - -# 贡献 - -欢迎通过以下方式贡献: -- 报告问题 -- 提交改进建议 -- 创建拉取请求 -- 分享您的经验 - -# 许可证 - -本文档采用MIT许可证。详情请参见LICENSE文件。 - -# 致谢 - -特别感谢: -- [carp4](https://github.com/carp4) - 提供ADB解锁工具 -- Quectel社区的所有贡献者 -- 所有帮助测试和改进本文档的用户 +如果您仍然遇到这个问题,并且上述方法没有解决,一个快速简单的解决方法是安装现在包含在[工具包](https://github.com/iamromulan/quectel-rgmii-toolkit)中的修复程序。 +如果有人知道为什么某些人会遇到这种情况,请告诉我! \ No newline at end of file