曾售 1899 的礦渣,靈車競鬥雲 G-DOCK 2.0(P&W R619AC)上車及 TTL 灌系統

上次更新時間爲

聽聞有新的礦渣路由器,單台 CNY 90 不含郵費,有 ipq40xx + 512MB RAM 的、雙頻 1200Mbps 無線和全 1000Mbps 接口可以玩。想了想乾脆就上車看看風景。

硬體和做工

競鬥雲 2.0 是全鐵皮外殼,拿起來沉甸甸的,兩臺競鬥雲帶上箱說用順豐速運郵寄更是花掉了 32 元的運費。雖然原價 CNY 1899,但是包裝內容非常簡單,除去說明書就只有路由器、電源適配器和 4 根天線。值得一提的是天線上標有對應的頻段,雖然有報導說天線縮水了,但是起碼是可拆裝的 SMA,留給 WWAN 模塊用也好嘛

别换天线了,还是翻车了,虽然缩水的5db软膜确实很垃圾

原廠家產品爲 P&W R619 AC1300M 企业级全千兆无线路由器,廠家韌體可以從官方網站下載。路由器整體方方正正的,頗有一股可以上架子的感覺(畢竟 P&W 方面表示是企業級產品),不過前燈號、後接口的設計否定了淺羽的這個想法,更別說還有兩根 5GHz 的天線設計在兩側。

鐵殼分上下兩部分,把底下的 4 枚螺絲全部卸除,再從 SMA 口和散熱口撬開就可以了。內裏的硬體配置不能算豪華,但以 CNY 90 來說可以算超值。

  • IPQ4019 SoC / Wave-2 802.11ac SoC for Routers, Gateways and Access Points
  • 25Q128JVS / 16MB Flash
  • QCA8075 / 1000Mbps Switch
  • S34ML01G100TF100 / 128MB Flash
  • MT41K256M16HA-125:E(FBGA Code: D9PXV) / 512MB, DRAM Chip DDR3L SDRAM 4Gbit 256Mx16 1.35V 96-Pin FBGA
  • SKY85309-11 / 2.4GHz FEM (PA+LNA)
  • SKY85728-11 / 5GHz FEM (PA+LNA)

內部有散熱金屬罩,不過個別機器可能沒有導熱膠。TTL 口很明顯,有絲印備註,並且跳針已經焊好。雖然原裝魔改 OpenWRT 過於陽春,但是 TTL 就擺明了是留下的後路。

TTL 灌入 OpenWRT

OpenWRT 對競鬥雲支援的 patch 已經在 LGA1150/openwrt 項目中有實現,可以直接拿到其他 OpenWRT 中使用。打包好 OpenWRT 後,可以透過 TTL 灌入

  1. 連接串口(RX-TX / 115200bps);
  2. 開機過程中在 console 不斷地 f + Enter 直到進入 failsafe root;
....
Press the [f] key and hit [enter] to enter failsafe mode
Press the [1], [2], [3] or [4] key and hit [enter] to select the debug level
....
 ================= FAILSAFE MODE active ================
special commands:
* firstboot          reset settings to factory defaults
* mount_root     mount root-partition with config files

after mount_root:
* passwd                         change root's password
* /etc/config               directory with config files

for more help see:
http://wiki.openwrt.org/doc/howto/generic.failsafe
root@(none):/# 
  1. 掛載檔案系統
root@(none):/# mount_root
  1. 打開串口輸出並重啓
root@(none):/#  sed -i 's/^#ttyM/ttyM/' /etc/inittab
root@(none):/#  reboot
  1. 重啓完成後可以關閉無線減少 log 輸出量
BusyBox v1.25.1 (2018-02-17 15:42:05 CST) built-in shell (ash)

 MM           NM                    MMMMMMM          M       M
$MMMMM        MMMMM                MMMMMMMMMMM      MMM     MMM
  MMMMMMMM     MM MMMMM.              MMMMM:MMMMMM:   MMMM   MMMMM
MMMM= MMMMMM  MMM   MMMM       MMMMM   MMMM  MMMMMM   MMMM  MMMMM'
MMMM=  MMMMM MMMM    MM       MMMMM    MMMM    MMMM   MMMMNMMMMM
MMMM=   MMMM  MMMMM          MMMMM     MMMM    MMMM   MMMMMMMM
MMMM=   MMMM   MMMMMM       MMMMM      MMMM    MMMM   MMMMMMMMM
MMMM=   MMMM     MMMMM,    NMMMMMMMM   MMMM    MMMM   MMMMMMMMMMM
MMMM=   MMMM      MMMMMM   MMMMMMMM    MMMM    MMMM   MMMM  MMMMMM
MMMM=   MMMM   MM    MMMM    MMMM      MMMM    MMMM   MMMM    MMMM
MMMM$ ,MMMMM  MMMMM  MMMM    MMM       MMMM   MMMMM   MMMM    MMMM
  MMMMMMM:      MMMMMMM     M         MMMMMMMMMMMM  MMMMMMM MMMMMMM
    MMMMMM       MMMMN     M           MMMMMMMMM      MMMM    MMMM
     MMMM          M                    MMMMMMM        M       M
       M
 ---------------------------------------------------------------
   For those about to rock... (Chaos Calmer, unknown)
 ---------------------------------------------------------------

root@(none):/# ifconfig wifi1 down
root@(none):/# ifconfig wifi0 down
  1. 將 OpenWRT 或者其他地方韌體放到 HTTP 伺服器上並下載到路由器中灌入
root@(none):/# wget -O /tmp/factory.bin http://example.com/${wrt-fatory}.bin
root@(none):/# sysupgrade -n /tmp/factory.bin
Sending TERM to remaining processes ... netifd ubusd nmbd gservices Sending KILL to remaining processes ... rngd
[ 1104.796098] UBI error: ubi_detach_mtd_dev: ubi0 reference count 1, destroy anyway
[ 1104.804239] UBI: detaching mtd0 from ubi0
[ 1104.809033] UBI: mtd0 is detached from ubi0
ubiformat: mtd0 (nand), size 67108864 bytes (64.0 MiB), 512 eraseblocks of 131072 bytes (128.0 KiB), min. I/O size 2048 bytes
libscan: scanning eraseblock 511 -- 100 % complete  e  7 -- 95 % complete  7 -- 32 % complete  
ubiformat: 512 eraseblocks have valid erase counter, mean value is 2
ubiformat: flashing eraseblock 106 -- 100 % complete  
ubiformat: formatting eraseblock 504 grep: /sys/block/mmcblk0/mmcblk*p*/uevent: No such file or directory
Upgrade completed
Rebooting system...
[ 1115.226983] mdss_fb_release_all: try to close unopened fb 0! from reboot
[ 1115.236007] reboot: Restarting

灌入時需要用 nand-factory.bin 檔案;後續更新則使用 sysupgrade.bin 檔案。

韌體下載地址:

灌入不死 uboot & OpBoot

  1. 灌入 X-WRT 後,進入 Web 升級介面,選擇「升級不要保留數據」並灌入 openwrt-ipq40xx-p2w_r619ac-squashfs-nand-sysupgrade-bootloader.bin
  1. 等待重啓後 SSH 連接競鬥雲,查看一下分割狀態;
# cat /proc/mtd
dev:    size   erasesize  namemtd0: 04000000 00020000 "rootfs"
mtd1: 04000000 00020000 "unused1"
mtd2: 00170000 00010000 "BootLoader"
mtd3: 00010000 00010000 "ART"
mtd4: 008e0000 00010000 "unused"
  1. 解鎖 Bootloader 分割並灌入不死 uboot;
# mtd unlock /dev/mtd2
# mtd write  /tmp/opboot-p2w-r619ac-flash-v1.0.7.bin BootLoader
# reboot

灌入後,如果需要進入 uboot 操作,需要在競鬥雲斷電後按住復位開機,並等待燈號全部亮起再熄滅即可。此時競鬥雲的 IP 地址應爲 192.168.1.1/24

更多參考資料:

復活 mini PCIe

競鬥雲的 mini PCIe 供電有大問題,並且在 OpenWRT 中也缺少 device tree,同時還沒有 REFCLK。缺失的電阻如下。

  • R489 PCIE_VCC3.3_PIN2_PIN52
  • R443 PCIE_VCC5_PIN45_PIN47
  • R447 PCIE_VCC5_PIN49_PIN51
  • R436 PCIE_REFCLK+_PIN13
  • R444 PCIE_REFCLK-_PIN11

關於供電問題,恩山上給出的解決方案是短路以上 5 處電阻。

其中5V供电(VCC5)不是所有网卡都需要
(那四个针脚mpcie里定义里是NC 但一般有PA的网卡会定义为5V 也不确定是否所有网卡都是NC 如果网卡定义是GND的话可能烧卡或烧路由 不确定的情况下最好不要接)
所有位置接0欧电阻即可(找不到电阻可以短接)

不過 imi415 給出了更簡單的 3.3V AUX 供電問題解決方案。

根据依次尝试,GPIO2 即为我们要找的GPIO。

之后我们需要在设备树里让kernel在配置PCIe的时候初始化好这个GPIO,如下所示

+&pcie0 {
+        status = "okay";
+
+        perst-gpio = <&tlmm 4 GPIO_ACTIVE_LOW>;
+        wake-gpio = <&tlmm 40 GPIO_ACTIVE_HIGH>;
+
+       pinctrl-0 = <&pcie_pins>;
+       pinctrl-names = "default";
+
+        bridge@0,0 {
+                reg = <0x00000000 0 0 0 0>;
+                #address-cells = <3>;
+                #size-cells = <2>;
+                ranges;
+
+                wifi2: wifi@1,0 {
+                        compatible = "qcom,ath10k";
+                        reg = <0x00010000 0 0 0 0>;
+                };
+        };
+};

我在miniPCIe插槽里插入的是QCA9880 3×3模块,如果是其他模块可以修改或者干脆删除 wifi2 节点。

其中要注意的是pinctrl字段,我们并不需要使用pinctrl初始化已经有了的perst和wake,但是由于这个电源控制并不在我们的pcie能配置的GPIO里,我们需要单独配置他。

&tlmm 设备节点中添加我们的GPIO2配置,配置为输出低电平,2mA(默认)和下拉。之所以在配置下拉的同时还要设置输出是为了防止下拉强度不够导致MOS工作在线性区无法正常供电。

+       pcie_pins: pcie_pinmux {
+               mux {
+                       pins = "gpio2";
+                       function = "gpio";
+                       bias-pull-down;
+                       output-low;
+               };
+       };

按照这种方式修改编译得到的OpenWrt就可以在加载驱动时自动配置给卡供电了。

接下來還需要修復 REFCLK

REFCLK的焊盘出厂时默认留空,补焊上即可,如下图:
手头没有 0402 的 0 欧电阻了,用跳线短上

一般大多数的 miniPCIe 卡只需要 3.3V 供电,不过板子还预留了 RESERVED pin 的 5V 供电电路,据恩山说法是为内置 PA 的大功率无线网卡准备的。有需求可以短掉 R443 和 R447。如果不清楚所用模块型号则不需要,这里不做赘述。

更多參考資料:

值不值得買?

以淺羽的實際使用情況來看,無線覆蓋可以滿足需求,比起另一臺靈車斐訊 K3 來說也不遑多讓,而且更加安全可靠。當然具體的穩定性上淺羽沒有太過於留意,也有反應有斷流現象的。

竞斗云 无线速度很好,但是覆盖差,最关键是会丢信号然后重连,普通用问题不大,打游戏就别想了

其實競鬥雲 2.0 本身效能不弱,如果玩玩透明代理、去廣告等之類的家庭網關的玩法的話也算得上是 C/P 值出衆了。加上好拆、好擴展的特點,可以說附加值不低。不過雖然內建 mini PCIe 但卻別有用心地限制了功能,因此完全發揮靈車的漂移能力還是需要一些動手能力的。淺羽已經下單了一塊洋垃圾 EC20 CEFAG,等收到貨後嘗試改造成 CPE 使用。

參考條目

4 comments on “曾售 1899 的礦渣,靈車競鬥雲 G-DOCK 2.0(P&W R619AC)上車及 TTL 灌系統

  1. 我使用内置FPC天线替换了目前2.4G天线,LTE天线部分采用38db高增益外置天线;目前遇到问题SIM初始化玩不成,所以想请教下。(查询模块版本/信号均正常,无法完成网络注册,提示如下)
    Tue Dec 10 21:28:05 2019 daemon.notice netifd: wan1 (5166): Stopping network wan1
    Tue Dec 10 21:28:05 2019 daemon.notice netifd: wan1 (5166): Command failed: Permission denied
    Tue Dec 10 21:28:05 2019 daemon.notice netifd: Interface 『wan1』 is now down
    Tue Dec 10 21:28:05 2019 daemon.notice netifd: Interface 『wan1』 is setting up now

    [ 43.930511] IPv6: ADDRCONF(NETDEV_UP): wlan1: link is not ready
    [ 45.562013] IPv6: ADDRCONF(NETDEV_UP): wlan0: link is not ready
    [ 45.563211] br-lan: port 2(wlan1) entered blocking state
    [ 45.566830] br-lan: port 2(wlan1) entered disabled state
    [ 45.572699] device wlan1 entered promiscuous mode
    [ 45.578771] br-lan: port 3(wlan0) entered blocking state
    [ 45.582212] br-lan: port 3(wlan0) entered disabled state
    [ 45.588069] device wlan0 entered promiscuous mode
    [ 45.821570] IPv6: ADDRCONF(NETDEV_CHANGE): wlan0: link becomes ready
    [ 45.821943] br-lan: port 3(wlan0) entered blocking state
    [ 45.827078] br-lan: port 3(wlan0) entered forwarding state
    [ 46.109031] IPv6: ADDRCONF(NETDEV_CHANGE): wlan1: link becomes ready
    [ 46.109411] br-lan: port 2(wlan1) entered blocking state
    [ 46.114577] br-lan: port 2(wlan1) entered forwarding state

    Tue Dec 10 21:28:05 2019 daemon.notice netifd: wan1 (5180): Waiting for SIM initialization

    1. 不太清楚你那邊具體的環境是什麼。比如說系統、軟體版本、卡的型號和設定檔都會對此產生影響。可以嘗試用 qmiuqmi 看一下 LTE 模塊的狀態。

      因爲可能會涉及到比較多的討論,方便的話,可以使用電郵或 Telegram 交流嗎?你可以在右上角的關於中找到我的電郵和其他聯繫方式。

發表回覆

你的電郵地址並不會被公開。 必要欄位標記為 *

This site uses Akismet to reduce spam. Learn how your comment data is processed.