Skip to content

Commit d0bd7ad

Browse files
mmlrrobimarko
authored andcommitted
qualcommax: ipq807x: add Netgear RBx750 support
Netgear RBx750 are tri band, 2.4GHz and 2x 5GHz, 8 stream 802.11ax mesh devices from the Orbi series. The RBR750 is a router with a WAN and 3 LAN ports. The RBS750 is a satellite without WAN port, only 2 LAN ports and half the flash. The hardware is otherwise identical. They were sold in kits as RBK752-RBK757, with one router and 1-6 satellites. Hardware: * SoC: Qualcomm IPQ8074 * RAM: 1GiB 1x Samsung * Flash: 512MiB Winbond W29N04GZ or 256MiB Winbond W29N02GZ * WLAN 2.4GHz: QCN5024 2x2:2 b/g/n/ax * WLAN 5GHz Low Band: QCN5054 2x2:2 a/n/ac/ax 5180-5320MHz * WLAN 5GHz High Band: QCN5054 4x4:4 a/n/ac/ax 5500-5700MHz * Ethernet: QCA8075 switch with 1 WAN and 3 LAN ports or 2 LAN ports * Serial Config: 3.3V TTL 115200-8-N-1, internal populated header * Serial Layout: Bottom <- RX, TX, GND, 3.3V (don't connect) -> Top * LEDs: green/red power, white/red/green/blue status * Buttons: 1x Reset, 1x WPS MAC addresses: LAN1: base address on label LAN2: base + 1 LAN3: base + 2 WAN: base + 1 2.4GHz: base + 2 5GHz-Low: base + 3 5GHz-High: base + 4 Flashing Notes: The stock firmware images are signed. Both the bootloader and the stock web interface check the signature and will fail to boot/flash. The bootloader automatically does NMRP when a gigabit LAN connection is present. The stock and factory images contain a U-Boot script that is executed when flashing using NMRP. This is used to alter and persist the U-Boot env with a boot command that works with unsigned firmware. Install OpenWrt: * Get the nmrpflash utility [0] and OpenWrt factory image * Find network interface to use: nmrpflash -L * Start nmrpflash: nmrpflash -i interface -f openwrt-...-factory.img * Connect the device LAN port closest to the power jack to the same network using gigabit * Plug the device in and wait for the bootloader to flash * Unplug and replug the device once the power LED blinks amber Revert to Stock: The boot command needs to be reverted before flashing the stock firmware, otherwise it will fail to boot and get stuck in recovery mode (red power LED flashing). * Run: fw_setenv bootcmd bootipq * Restart the device * Flash the stock firmware RBx750-Va.b.c.d.img using nmrpflash [0]: https://github.com/jclehner/nmrpflash Signed-off-by: Michael Lotz <mmlr@mlotz.ch> Link: openwrt/openwrt#21938 Signed-off-by: Robert Marko <robimarko@gmail.com>
1 parent c6eb8b8 commit d0bd7ad

File tree

10 files changed

+393
-0
lines changed

10 files changed

+393
-0
lines changed

package/boot/uboot-tools/uboot-envtools/files/qualcommax_ipq807x

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,8 @@ qnap,301w)
4040
;;
4141
dynalink,dl-wrx36|\
4242
netgear,rax120v2|\
43+
netgear,rbr750|\
44+
netgear,rbs750|\
4345
netgear,sxr80|\
4446
netgear,sxs80|\
4547
netgear,wax218|\

package/firmware/ipq-wifi/Makefile

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,7 @@ ALLWIFIBOARDS:= \
6868
netgear_rax120v2 \
6969
netgear_rbk20 \
7070
netgear_rbk40 \
71+
netgear_rbk750 \
7172
netgear_sxk80 \
7273
netgear_wax214 \
7374
netgear_wax218 \
@@ -256,6 +257,7 @@ $(eval $(call generate-ipq-wifi-package,netgear_lbr20,Netgear LBR20))
256257
$(eval $(call generate-ipq-wifi-package,netgear_rax120v2,Netgear RAX120v2))
257258
$(eval $(call generate-ipq-wifi-package,netgear_rbk20,Netgear RBK20))
258259
$(eval $(call generate-ipq-wifi-package,netgear_rbk40,Netgear RBK40))
260+
$(eval $(call generate-ipq-wifi-package,netgear_rbk750,Netgear RBK750))
259261
$(eval $(call generate-ipq-wifi-package,netgear_sxk80,Netgear SXK80))
260262
$(eval $(call generate-ipq-wifi-package,netgear_wax214,Netgear WAX214))
261263
$(eval $(call generate-ipq-wifi-package,netgear_wax218,Netgear WAX218))
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
2+
/*
3+
* Copyright (c) 2026 Michael Lotz <mmlr@mlotz.ch>
4+
*/
5+
6+
/dts-v1/;
7+
8+
#include "ipq8074-rbx750.dtsi"
9+
10+
/ {
11+
model = "Netgear RBR750";
12+
compatible = "netgear,rbr750", "qcom,ipq8074";
13+
};
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
2+
/*
3+
* Copyright (c) 2026 Michael Lotz <mmlr@mlotz.ch>
4+
*/
5+
6+
/dts-v1/;
7+
8+
#include "ipq8074-rbx750.dtsi"
9+
10+
/ {
11+
model = "Netgear RBS750";
12+
compatible = "netgear,rbs750", "qcom,ipq8074";
13+
};
14+
15+
&dp1 {
16+
status = "disabled";
17+
};
18+
19+
&dp2 {
20+
status = "disabled";
21+
};
Lines changed: 292 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,292 @@
1+
// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
2+
/*
3+
* Copyright (c) 2026 Michael Lotz <mmlr@mlotz.ch>
4+
*/
5+
6+
/dts-v1/;
7+
8+
#include "ipq8074.dtsi"
9+
#include "ipq8074-hk-cpu.dtsi"
10+
#include "ipq8074-ess.dtsi"
11+
#include <dt-bindings/gpio/gpio.h>
12+
#include <dt-bindings/input/input.h>
13+
#include <dt-bindings/leds/common.h>
14+
15+
/ {
16+
aliases {
17+
led-boot = &lp5562_white;
18+
led-failsafe = &lp5562_red;
19+
led-upgrade = &lp5562_blue;
20+
serial0 = &blsp1_uart5;
21+
label-mac-device = &dp5;
22+
};
23+
24+
chosen {
25+
stdout-path = "serial0:115200n8";
26+
bootargs-append = " ubi.mtd=rootfs root=/dev/ubiblock0_1";
27+
};
28+
29+
keys {
30+
compatible = "gpio-keys";
31+
32+
reset {
33+
label = "reset";
34+
gpios = <&tlmm 33 GPIO_ACTIVE_LOW>;
35+
linux,code = <KEY_RESTART>;
36+
};
37+
38+
wps {
39+
label = "wps";
40+
gpios = <&tlmm 34 GPIO_ACTIVE_HIGH>;
41+
linux,code = <KEY_WPS_BUTTON>;
42+
};
43+
};
44+
45+
leds {
46+
compatible = "gpio-leds";
47+
48+
power_green {
49+
gpios = <&tlmm 54 GPIO_ACTIVE_LOW>;
50+
color = <LED_COLOR_ID_GREEN>;
51+
function = LED_FUNCTION_POWER;
52+
linux,default-trigger = "default-on";
53+
};
54+
55+
power_red {
56+
gpios = <&tlmm 56 GPIO_ACTIVE_LOW>;
57+
color = <LED_COLOR_ID_RED>;
58+
function = LED_FUNCTION_POWER;
59+
};
60+
};
61+
};
62+
63+
&blsp1_uart5 {
64+
status = "okay";
65+
};
66+
67+
&prng {
68+
status = "okay";
69+
};
70+
71+
&cryptobam {
72+
status = "okay";
73+
};
74+
75+
&crypto {
76+
status = "okay";
77+
};
78+
79+
&edma {
80+
status = "okay";
81+
};
82+
83+
&tlmm {
84+
mdio_pins: mdio-pins {
85+
mdc {
86+
pins = "gpio68";
87+
function = "mdc";
88+
drive-strength = <8>;
89+
bias-pull-up;
90+
};
91+
92+
mdio {
93+
pins = "gpio69";
94+
function = "mdio";
95+
drive-strength = <8>;
96+
bias-pull-up;
97+
};
98+
};
99+
};
100+
101+
&switch {
102+
status = "okay";
103+
104+
switch_lan_bmp = <(ESS_PORT2 | ESS_PORT4 | ESS_PORT5)>;
105+
switch_wan_bmp = <ESS_PORT1>;
106+
switch_mac_mode = <MAC_MODE_PSGMII>;
107+
108+
qcom,port_phyinfo {
109+
port@1 {
110+
port_id = <1>;
111+
phy_address = <0>;
112+
};
113+
114+
port@2 {
115+
port_id = <2>;
116+
phy_address = <1>;
117+
};
118+
119+
port@4 {
120+
port_id = <4>;
121+
phy_address = <3>;
122+
};
123+
124+
port@5 {
125+
port_id = <5>;
126+
phy_address = <4>;
127+
};
128+
};
129+
};
130+
131+
&mdio {
132+
status = "okay";
133+
pinctrl-0 = <&mdio_pins>;
134+
pinctrl-names = "default";
135+
reset-gpios = <&tlmm 37 GPIO_ACTIVE_LOW>;
136+
137+
ethernet-phy-package@0 {
138+
#address-cells = <1>;
139+
#size-cells = <0>;
140+
compatible = "qcom,qca8075-package";
141+
reg = <0>;
142+
143+
phy0: ethernet-phy@0 {
144+
compatible = "ethernet-phy-ieee802.3-c22";
145+
reg = <0>;
146+
};
147+
148+
phy1: ethernet-phy@1 {
149+
compatible = "ethernet-phy-ieee802.3-c22";
150+
reg = <1>;
151+
};
152+
153+
phy3: ethernet-phy@3 {
154+
compatible = "ethernet-phy-ieee802.3-c22";
155+
reg = <3>;
156+
};
157+
158+
phy4: ethernet-phy@4 {
159+
compatible = "ethernet-phy-ieee802.3-c22";
160+
reg = <4>;
161+
};
162+
};
163+
};
164+
165+
&dp1 {
166+
status = "okay";
167+
phy-handle = <&phy0>;
168+
label = "wan";
169+
nvmem-cell-names = "mac-address";
170+
nvmem-cells = <&macaddr_boarddata 1>;
171+
};
172+
173+
&dp2 {
174+
status = "okay";
175+
phy-handle = <&phy1>;
176+
label = "lan3";
177+
nvmem-cell-names = "mac-address";
178+
nvmem-cells = <&macaddr_boarddata 2>;
179+
};
180+
181+
&dp4 {
182+
status = "okay";
183+
phy-handle = <&phy3>;
184+
label = "lan2";
185+
nvmem-cell-names = "mac-address";
186+
nvmem-cells = <&macaddr_boarddata 1>;
187+
};
188+
189+
&dp5 {
190+
status = "okay";
191+
phy-handle = <&phy4>;
192+
label = "lan1";
193+
nvmem-cell-names = "mac-address";
194+
nvmem-cells = <&macaddr_boarddata 0>;
195+
};
196+
197+
&qpic_bam {
198+
status = "okay";
199+
};
200+
201+
&qpic_nand {
202+
status = "okay";
203+
204+
nand@0 {
205+
reg = <0>;
206+
nand-ecc-strength = <4>;
207+
nand-ecc-step-size = <512>;
208+
nand-bus-width = <8>;
209+
210+
partitions {
211+
compatible = "qcom,smem-part";
212+
213+
partition-board_data {
214+
label = "board_data";
215+
216+
nvmem-layout {
217+
compatible = "fixed-layout";
218+
#address-cells = <1>;
219+
#size-cells = <1>;
220+
221+
macaddr_boarddata: macaddr@40 {
222+
compatible = "mac-base";
223+
reg = <0x40 0x6>;
224+
#nvmem-cell-cells = <1>;
225+
};
226+
};
227+
};
228+
229+
partition-0-appsblenv {
230+
label = "0:appsblenv";
231+
232+
nvmem-layout {
233+
compatible = "u-boot,env";
234+
env-size = <0x40000>;
235+
};
236+
};
237+
};
238+
};
239+
};
240+
241+
&wifi {
242+
status = "okay";
243+
qcom,ath11k-calibration-variant = "Netgear-RBK750";
244+
};
245+
246+
&blsp1_i2c2 {
247+
status = "okay";
248+
249+
lp5562@31 {
250+
compatible = "ti,lp5562";
251+
reg = <0x31>;
252+
clock-mode = [02];
253+
#address-cells = <1>;
254+
#size-cells = <0>;
255+
256+
lp5562_red: led@0 {
257+
chan-name = "lp5562_red";
258+
led-cur = [20];
259+
max-cur = [60];
260+
color = <LED_COLOR_ID_RED>;
261+
function = LED_FUNCTION_STATUS;
262+
reg = <0>;
263+
};
264+
265+
lp5562_green: led@1 {
266+
chan-name = "lp5562_green";
267+
led-cur = [20];
268+
max-cur = [60];
269+
color = <LED_COLOR_ID_GREEN>;
270+
function = LED_FUNCTION_STATUS;
271+
reg = <1>;
272+
};
273+
274+
lp5562_blue: led@2 {
275+
chan-name = "lp5562_blue";
276+
led-cur = [20];
277+
max-cur = [60];
278+
color = <LED_COLOR_ID_BLUE>;
279+
function = LED_FUNCTION_STATUS;
280+
reg = <2>;
281+
};
282+
283+
lp5562_white: led@3 {
284+
chan-name = "lp5562_white";
285+
led-cur = [20];
286+
max-cur = [60];
287+
color = <LED_COLOR_ID_WHITE>;
288+
function = LED_FUNCTION_STATUS;
289+
reg = <3>;
290+
};
291+
};
292+
};

0 commit comments

Comments
 (0)