From 0627440d3673cfdaef95b897dbfeb821f218424b Mon Sep 17 00:00:00 2001 From: sky Date: Sat, 7 Dec 2024 22:11:37 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=20ADB-Usage-cn.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ADB-Usage-cn.md | 633 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 633 insertions(+) create mode 100644 ADB-Usage-cn.md diff --git a/ADB-Usage-cn.md b/ADB-Usage-cn.md new file mode 100644 index 0000000..57e268d --- /dev/null +++ b/ADB-Usage-cn.md @@ -0,0 +1,633 @@ +# Quectel 调制解调器 Wiki +================================= +> :warning: 这是一个动态文档。随着更多发现的出现或社区软件的开发,内容可能会更新。如果您觉得有信息可以贡献给这个wiki,请提交pull request。 + +> :heavy_check_mark: 本wiki主要关注Quectel的M.2规格蜂窝调制解调器。 + +# M.2调制解调器直连以太网指南 + +许多Quectel调制解调器支持直接连接到PCIe以太网芯片组。这对于将蜂窝连接用作WAN接口很有用 - 您只需将调制解调器插入路由器的WAN端口,进行一些配置,就可以使用了。性能良好,调制解调器的板载连接管理通常比许多路由器使用的脚本更好地保持连接。 + +# 目录 + +- [硬件推荐](#硬件推荐) + - [正确的组装](#正确的组装) + - [推荐的12v 5A电源](#推荐的12v-5a电源) + - [其他已知的M.2转RJ45 PCB](#其他已知的m2转rj45-pcb) + - [室外天线外壳组合设置](#室外天线外壳组合设置) + - [硬件推荐](#硬件推荐) + +- [调制解调器资源库](#调制解调器资源库) + +- [基本配置](#基本配置) + - [首次设置](#首次设置) + - [固件刷新后;首次设置后](#固件刷新后首次设置后) + - [使用AT命令更改调制解调器IP地址](#使用at命令更改调制解调器ip地址) + - [启用IP透传](#启用ip透传) + - [DMZ方法](#dmz方法) + - [实际IP透传](#实际ip透传) + - [在IPPT模式下禁用NAT到VLAN](#在ippt模式下禁用nat到vlan) + +- [高级配置](#高级配置) + - [解锁和使用ADB](#解锁和使用adb) + - [使用ADB](#使用adb) + - [基本命令](#基本命令) + - [Web GUI和工具包](#web-gui和工具包) + - [概述](#概述) + - [如何安装](#如何安装) + - [Tailscale安装和配置](#tailscale安装和配置) + - [启用每日重启](#启用每日重启) + - [如何卸载](#如何卸载) + +# 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连接器提供蜂窝信号。 + +## 室内 + +**以下是我推荐用于室内或移动场景的硬件:** + +![rework-5G2PHYmain](https://www.rework.network/cdn/shop/files/5G2PHY_bottom_W_antenna_1024x1024@2x.jpg?v=1719465175) + +![enter image description here](https://www.rework.network/cdn/shop/files/5G2PHY_inside_with_modem_1024x1024@2x.jpg?v=1719465175) + +**购买链接:** + +不含调制解调器: +[Dual-Q 5G2PHY](https://rework.network/collections/lte-home-gateway/products/5g2phy) + +**或者** + +带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线缆 +- 2x 10cm MHF4转SMA线缆 +- 2x 15cm MHF4转SMA线缆 +- 1x 3x3.5x0.15 硅胶垫 +- 1x 3x3x0.02 硅胶垫 +- 安装硬件 +- 板载RTL8125芯片组的小型散热片 + +**不包含:** +- 电源适配器 +- 无源PoE注入器/适配器 +- 天线 + +**主要特点:** +- 2.5千兆RTL8125单RJ45端口 +- **支持无源PoE**,我使用24v无源注入器 + - :warning: **主动PoE如802.11将不工作** :warning: 因为它不进行协商 +- USB 3.0 +- 5.5x2.5mm DC端口接受12-50V的宽电压范围 +- 内置的厚铝制散热片放置在调制解调器下方,并延伸到板子下方,即使在重负载下也能保持良好的散热 +- M.2插槽靠近板子边缘的位置,方便访问调制解调器背面的触点,以防需要进入EDL模式 + +## 室外 + +(正在完善中) +目前仅提供链接 :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) + +- 无源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) + +- 室内天线 [亚马逊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)(未测试;请自行选择) + +- 家用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) + +## 示例配置: + +### 固定场景 + +#### [GL.iNet Flint 2路由器](https://www.amazon.com/dp/B0CP7S3117?ref=ppx_yo2ov_dt_b_fed_asin_title) 加 [室内调制解调器](#室内) + +### 移动场景 + +#### [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/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=) + - 橡皮筋或扎带 :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输出,支持直通充电 + + - [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) + +结果: +![:trollface:](https://raw.githubusercontent.com/iamromulan/quectel-rgmii-configuration-notes/main/images/to-go_bad.jpg) + +# 基本配置 + +建议在继续之前先刷入最新的可用固件。 + +查看我的[RM520资源库](#rm520-resource-repository) + +> 请记住: + +刷新固件会执行以下操作: + + - 两种方法的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和每日重启功能 + +## 首次设置 +通过USB连接到调制解调器并在Qnavigator中运行这些AT命令。如果您没有Qnavigator或其他发送AT命令的方式,请查看我的[RM520资源库](#rm520-resource-repository) +``` +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+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+CFUN=1,1`后,调制解调器将重启,您应该从以太网端口获得一个本地IP地址。通常是192.168.225.x。 + +## 固件刷新后;首次设置后 + +### 固件刷新后需要运行这些命令才能重新上线 +# +#### 如果您不在ECM模式下(AT+QCFG="usbnet",1),则需要先执行以下操作: +``` +AT+QMAPWAC=1 +AT+CFUN=1,1(重启) +``` +# + +#### 运行我的[工具包](https://github.com/iamromulan/quectel-rgmii-toolkit) +固件刷新会移除工具包所做的内容: +- 安装Telnet守护程序 +- 安装Simpleadmin网页界面 +- 安装和配置Tailscale +- 如果您需要,设置重启定时器 +- 如果您需要,发送一两个AT命令 + +## 使用AT命令更改调制解调器IP地址 +默认情况下,调制解调器对IPv4充当真正的NAT路由器,并通过IPv6提供地址。调制解调器的IPv4地址是192.168.225.1 - 这可以通过AT命令更改[参见第228页:AT+QMAP="LANIP"](https://mega.nz/file/zEEmCYTb#Y_YVlSEWNn9tz9dpHvY1rSZuDR_gEB6XEVIQ0nGrCJQ) + +有很多原因可能需要更改调制解调器的IP..例如,您可能有多个调制解调器连接到同一个路由器用于WAN负载均衡或绑定,或者它可能与您的内部网络IP范围冲突,或者(其他原因)。在最新的固件版本中,可以使用命令来完成这个操作! + +命令是: +``` +AT+QMAP="LANIP",,,<路由器ip>,<是否立即应用?> +AT+QMAP="LANIP",192.168.227.20,192.168.227.100,192.168.227.1,1 +``` + +'是否立即应用?'表示路由器是否应该立即应用更改,或等待重启。1表示是,0表示否。 + +``` +## 启用IP透传 + +如果您想启用IP透传,让从运营商分配的IP地址传递给连接到以太网端口的设备,您可以做到!即使在启用IPPT(IP透传)的情况下,包括网关在内的LAN IP地址仍然可以访问。 + +**IP透传有3个阶段:** + +# + +### DMZ方法 +这种方法严格来说不是真正的IP透传,但它也能有效地消除双重NAT。基本上,您在这里所做的是将DHCP限制为只分配1个IP地址,然后将其设置为DMZ,有效地将每个端口转发到该内部IP。 + +#### 启用IP透传(DMZ方法): +``` +AT+QMAP="LAN",192.168.225.2 +AT+QMAP="DMZ",1,4,192.168.225.2 +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透传(QMAP方法): +``` +AT+QMAP="MPDN_rule",0,1,0,1,1,"FF:FF:FF:FF:FF:FF" +``` + +发送此命令后,以太网端口应该会关闭一两秒钟,然后重新启动并启用IPV4透传。注意:IPV6有时也会分配?这只是DHCP IPV6吗?我会研究这个问题。 + +##### MPDN规则参数: +* 第一个 = 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地址。 + +##### DHCPV4DNS +打开和关闭IPV4 DNS代理,以便运营商的DNS也会透传。 +所以... +内部有一个DNS服务器/代理,用于通过AT命令设置域名并使其实际工作。通过adb shell/ssh shell有一种方法可以自己设置DNS覆盖到您自己的名称服务器。Tailscale会自动完成这个操作,我稍后会讨论这个问题。 +``` +AT+QMAP="DHCPV4DNS","disable" +``` +#### 禁用IP透传(QMAP方法): +``` +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访问网关地址。 + +``` + +# 高级配置 + +这些调制解调器在底层是一个完整的Linux路由器。一旦获得访问权限,您可以修改文件系统上的任何内容。这很酷,也有点危险..但很有趣。访问是通过'adb'实现的 - 这与用于对Android手机进行有趣操作的工具相同。如果您安装了Tailscale,您也可以通过Tailscale使用SSH。我稍后会详细讨论这个问题。 + +## 解锁和使用ADB +默认情况下,这些调制解调器没有启用通过USB的ADB,需要解锁才能启用。一旦解锁,除非您禁用它,否则它会保持解锁状态。 +# +> :bowtie: 感谢[carp4](https://github.com/carp4)在[qadbkey-unlock python脚本](https://github.com/carp4/qadbkey-unlock)上的工作,我们现在可以不需要Quectel的帮助就能做到这一点! + +要获得访问权限,您需要从调制解调器获取锁定代码,然后将其提供给python ADB解锁密钥生成器,获取它给出的解锁密钥代码,解锁ADB,然后实际启用通过USB的ADB。这只需要做一次,因为这在固件刷新后仍然有效。 +# +要获取锁定代码,运行AT命令"AT+QADBKEY?"。调制解调器将回复: +``` +AT+QADBKEY? ++QADBKEY: 12345678 +OK +``` +12345678就是这种情况下的锁定代码 + +然后您可以前往[Python ADB解锁密钥生成器](https://onecompiler.com/python/3znepjcsq) + +![pythonadbkey](https://github.com/iamromulan/quectel-rgmii-configuration-notes/blob/main/images/qadbkeypython.png?raw=true) + +**用运行`AT+QADBKEY?`得到的响应替换12345678**然后点击运行。在输出下方将生成您的解锁密钥。 +# +获得解锁密钥后,您可以这样应用密钥: +``` +AT+QADBKEY="0jXKXQwSwMxYoeg" +``` + +然后,要实际启用ADB,运行`AT+QCFG="usbcfg"`,取出输出,将倒数第二个0改为1,然后将新的usbcfg字符串发送到调制解调器(不要只是复制/粘贴下面的内容;您的调制解调器的USB VID/PID很可能不同): + +```control +AT+QCFG="usbcfg" ++QCFG: "usbcfg",0x2C7C,0x0801,1,1,1,1,1,0,0 // 初始响应 +AT+QCFG="usbcfg",0x2C7C,0x0801,1,1,1,1,1,1,0 // 启用ADB +``` + +并使用`AT+CFUN=1,1`重启以实际应用。 + +``` + +### 使用ADB +:warning: 将很快重新组织 +:warning: adb现在已随QFlash 7.1+从QuecDeploy安装 +:warning: 已过时 + +一旦调制解调器重新上线,您应该能够使用ADB通过USB连接来管理主机上的调制解调器。在使用之前,您需要安装ADB驱动程序和ADB命令行工具。最简单的方法就是使用我的RM520仓库脚本。或者自己动手:https://github.com/K3V1991/ADB-and-FastbootPlusPlus/releases + +- 下载.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) +- 之后会打开这样的窗口。 + +![adb3](https://github.com/iamromulan/quectel-rgmii-configuration-notes/blob/main/images/adb3.png?raw=true) + +- 任何时候想使用adb都要打开ADB & Fastboot++ + +![adbcmd](https://github.com/iamromulan/quectel-rgmii-configuration-notes/blob/main/images/adbcmd.png?raw=true) + +> :warning: **调制解调器不需要其他图标/快捷方式。它们对Android手机有用。如果您只需要这个用于Quectel调制解调器,可以删除图标/快捷方式** +> +![enter image description here](https://github.com/iamromulan/quectel-rgmii-configuration-notes/blob/main/images/notneededadb.png?raw=true) + +### 基本命令: +在ADB & Fastboot++中输入`adb devices`并按回车。如果您的调制解调器已解锁ADB并通过USB连接,列表中应该至少显示一个设备。这是测试adb是否安装并正确识别您的调制解调器或Android手机的好方法。 +**示例:** + +![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通过IP在以太网接口上监听都没有成功。警告 - `adb tcp `命令会使ADB和所有其他通过USB暴露的串行端口崩溃,直到调制解调器重启。所以现在坚持使用USB上的ADB。如果有人了解这个设备上adbd是如何工作的,请随时打开issue/discussion/PR。现在您可以通过tailscale使用SSH。 + +``` + +### Web GUI和工具包 + +#### 概述 +这些调制解调器有一个Web GUI界面,可以通过http://192.168.225.1(或您设置的任何其他IP)访问。它允许您查看状态、设置APN、设置PIN、查看日志等。它还允许您通过Web界面发送AT命令。 + +#### 如何安装 +我已经创建了一个[工具包](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二进制文件上传到调制解调器: +``` +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 + +Restart=on-failure + +RuntimeDirectory=tailscale +RuntimeDirectoryMode=0755 +StateDirectory=tailscale +StateDirectoryMode=0700 +CacheDirectory=tailscale +CacheDirectoryMode=0750 +Type=notify + +[Install] +WantedBy=multi-user.target' > /etc/systemd/system/tailscaled.service" +``` +6. 创建必要的目录: +``` +adb shell mkdir -p /var/lib/tailscale +adb shell mkdir -p /run/tailscale +``` +7. 启用并启动服务: +``` +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 +``` + +#### 卸载Tailscale +要完全卸载Tailscale: +``` +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 +adb shell systemctl daemon-reload + +``` + +## 每日重启 + +如果您经常遇到调制解调器需要重启的情况,您可以设置一个每日重启计划。这可以通过创建一个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" +``` + +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" +``` + +3. 启用并启动计时器: +``` +adb shell systemctl daemon-reload +adb shell systemctl enable modem-reboot.timer +adb shell systemctl start modem-reboot.timer +``` + +### 禁用每日重启 +要禁用每日重启,您可以: +``` +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 + +``` + +# 故障排除 + +## 常见问题 + +### 调制解调器无法连接到网络 +1. 检查SIM卡是否正确插入 +2. 确认APN设置是否正确 +3. 检查信号强度 +4. 尝试重启调制解调器 + +### ADB连接问题 +1. 确保已正确安装ADB驱动程序 +2. 检查USB连接 +3. 确认已解锁ADB并正确配置 +4. 尝试使用不同的USB端口或线缆 + +### IP透传问题 +1. 确认已正确配置MPDN规则 +2. 检查MAC地址设置 +3. 验证VLAN配置 +4. 确保运营商支持IP透传 + +### Tailscale连接问题 +1. 检查Tailscale服务状态 +2. 确认登录状态 +3. 验证网络连接 +4. 检查防火墙设置 + +## 有用的调试命令 + +### 检查网络状态 +``` +adb shell ifconfig +adb shell ip addr +adb shell route -n +``` + +### 查看系统日志 +``` +adb shell journalctl -f +adb shell dmesg +``` + +### 检查服务状态 +``` +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社区的所有贡献者 +- 所有帮助测试和改进本文档的用户