Skip to content

Commit 99f2366

Browse files
committed
rak7391: Add support for RAK7391 gateway.
1 parent 28ab7fe commit 99f2366

File tree

11 files changed

+7194
-0
lines changed

11 files changed

+7194
-0
lines changed

conf/rak_rak7267/.config

Lines changed: 6805 additions & 0 deletions
Large diffs are not rendered by default.

conf/rak_rak7267/files/etc/banner

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
________ _ _____ __ __ _
2+
/ ____/ /_ (_)________ / ___// /_____ ______/ /__ (_)___
3+
/ / / __ \/ / ___/ __ \\__ \/ __/ __ `/ ___/ //_/ / / __ \
4+
/ /___/ / / / / / / /_/ /__/ / /_/ /_/ / /__/ ,< _ / / /_/ /
5+
\____/_/ /_/_/_/ / .___/____/\__/\__,_/\___/_/|_(_)_/\____/
6+
/_/
7+
8+
Documentation and copyright information:
9+
> www.chirpstack.io
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
if ! uci get wireless; then
2+
exit 0
3+
fi
4+
5+
if [ "$(uci -q get wireless.default_radio0.ssid)" != "OpenWrt" ]; then
6+
exit 0
7+
fi
8+
9+
GWID_END=""
10+
11+
ip link show eth0
12+
if [ $? -eq 0 ]; then
13+
GWID_END=$(ip link show eth0 | awk '/ether/ {print $2}' | awk -F\: '{print $4$5$6}')
14+
else
15+
GWID_END=$(ip link show wlan0 | awk '/ether/ {print $2}' | awk -F\: '{print $4$5$6}')
16+
fi
17+
18+
uci -q batch << EOI
19+
set dhcp.wwan=dhcp
20+
set dhcp.wwan.interface='wwan'
21+
set dhcp.wwan.start='100'
22+
set dhcp.wwan.limit='150'
23+
set dhcp.wwan.leasetime='12h'
24+
commit dhcp
25+
26+
set network.wwan=interface
27+
set network.wwan.proto='static'
28+
set network.wwan.ipaddr='192.168.0.1'
29+
set network.wwan.netmask='255.255.255.0'
30+
commit network
31+
32+
delete wireless.radio0.disabled
33+
set wireless.default_radio0=wifi-iface
34+
set wireless.default_radio0.device='radio0'
35+
set wireless.default_radio0.network='wwan'
36+
set wireless.default_radio0.mode='ap'
37+
set wireless.default_radio0.ssid="ChirpStackAP-${GWID_END}"
38+
set wireless.default_radio0.encryption='psk2'
39+
set wireless.default_radio0.key='ChirpStackAP'
40+
commit wireless
41+
42+
add_list firewall.@zone[0].network='wwan'
43+
set firewall.@zone[0].masq='1'
44+
commit firewall
45+
46+
EOI
47+
48+
service network restart
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
uci -q batch << EOI
2+
set network.lan.proto='dhcp'
3+
delete network.lan.ipaddr
4+
delete network.lan.netmask
5+
delete network.lan.ip6assign
6+
EOI
7+
8+
service network restart
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
uci -q batch << EOI
2+
add firewall rule
3+
set firewall.@rule[-1].name='Allow HTTPS'
4+
set firewall.@rule[-1].src='wan'
5+
set firewall.@rule[-1].dest_port='443'
6+
set firewall.@rule[-1].proto='tcp'
7+
set firewall.@rule[-1].target='ACCEPT'
8+
add firewall rule
9+
set firewall.@rule[-1].name='Allow SSH'
10+
set firewall.@rule[-1].src='wan'
11+
set firewall.@rule[-1].dest_port='22'
12+
set firewall.@rule[-1].proto='tcp'
13+
set firewall.@rule[-1].target='ACCEPT'
14+
commit firewall
15+
16+
EOI
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
uci -q batch << EOI
2+
set system.led_wifi_led.sysfs='mediatek:orange:wifi'
3+
set system.led_wifi_led.dev='phy0-sta0'
4+
set system.led_wifi_led.mode='link'
5+
6+
set system.led_eth_led.sysfs='rak:green:eth'
7+
set system.led_eth_led.trigger='netdev'
8+
set system.led_eth_led.dev='eth0.1'
9+
10+
delete system.led_eth_led.mode
11+
add_list system.led_eth_led.mode='link'
12+
add_list system.led_eth_led.mode='tx'
13+
add_list system.led_eth_led.mode='rx'
14+
EOI
15+
uci commit system
16+
service led restart
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
GWID_END=""
2+
3+
ip link show eth0
4+
if [ $? -eq 0 ]; then
5+
GWID_END=$(ip link show eth0 | awk '/ether/ {print $2}' | awk -F\: '{print $4$5$6}')
6+
else
7+
GWID_END=$(ip link show wlan0 | awk '/ether/ {print $2}' | awk -F\: '{print $4$5$6}')
8+
fi
9+
10+
uci set system.@system[0].hostname="chirpstack-${GWID_END}"
11+
uci commit system
12+
echo $(uci get system.@system[0].hostname) > /proc/sys/kernel/hostname
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
Index: openwrt/target/linux/ramips/base-files/etc/inittab
2+
===================================================================
3+
--- openwrt.orig/target/linux/ramips/base-files/etc/inittab
4+
+++ openwrt/target/linux/ramips/base-files/etc/inittab
5+
@@ -1,3 +1,3 @@
6+
::sysinit:/etc/init.d/rcS S boot
7+
::shutdown:/etc/init.d/rcS K shutdown
8+
-::askconsole:/usr/libexec/login.sh
9+
+::askconsole:/bin/login
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
Index: openwrt/target/linux/ramips/patches-5.15/950-0578-spi-spidev-Restore-loading-from-Device-Tree.patch
2+
===================================================================
3+
--- /dev/null
4+
+++ openwrt/target/linux/ramips/patches-5.15/950-0578-spi-spidev-Restore-loading-from-Device-Tree.patch
5+
@@ -0,0 +1,25 @@
6+
+From 98ffb29a71923d14a79b3b8ef4d2540e6c6a6363 Mon Sep 17 00:00:00 2001
7+
+From: Phil Elwell <[email protected]>
8+
+Date: Mon, 29 Nov 2021 12:14:49 +0000
9+
+Subject: [PATCH] spi: spidev: Restore loading from Device Tree
10+
+
11+
+As happens occasionally, an upstream change has once again prevented
12+
+spidev from being loaded via Device Tree. We now need "spidev" to be
13+
+included in the new spi_device_id list, otherwise although the
14+
+spidev driver gets loaded no /dev/spidev*.* entries will appear.
15+
+
16+
+Signed-off-by: Phil Elwell <[email protected]>
17+
+---
18+
+ drivers/spi/spidev.c | 1 +
19+
+ 1 file changed, 1 insertion(+)
20+
+
21+
+--- a/drivers/spi/spidev.c
22+
++++ b/drivers/spi/spidev.c
23+
+@@ -678,6 +678,7 @@ static const struct file_operations spid
24+
+ static struct class *spidev_class;
25+
+
26+
+ static const struct spi_device_id spidev_spi_ids[] = {
27+
++ { .name = "spidev" },
28+
+ { .name = "dh2228fv" },
29+
+ { .name = "ltc2488" },
30+
+ { .name = "sx1301" },
Lines changed: 238 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,238 @@
1+
Index: openwrt/target/linux/ramips/dts/mt7628an_rakwireless_rak636.dts
2+
===================================================================
3+
--- /dev/null
4+
+++ openwrt/target/linux/ramips/dts/mt7628an_rakwireless_rak636.dts
5+
@@ -0,0 +1,175 @@
6+
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
7+
+
8+
+#include "mt7628an.dtsi"
9+
+
10+
+#include <dt-bindings/gpio/gpio.h>
11+
+#include <dt-bindings/input/input.h>
12+
+
13+
+/ {
14+
+ compatible = "rakwireless,rak636", "mediatek,mt7628an-soc";
15+
+ model = "Rakwireless RAK636";
16+
+
17+
+ leds {
18+
+ compatible = "gpio-leds";
19+
+ lora {
20+
+ label = "rak:green:lora";
21+
+ gpios = <&gpio 15 GPIO_ACTIVE_LOW>;
22+
+ };
23+
+ ethernet {
24+
+ label = "rak:green:eth";
25+
+ gpios = <&gpio 43 GPIO_ACTIVE_LOW>;
26+
+ };
27+
+ lora1 {
28+
+ label = "rak:green:lora1";
29+
+ gpios = <&gpio 14 GPIO_ACTIVE_LOW>;
30+
+ };
31+
+
32+
+ wifi {
33+
+ label = "mediatek:orange:wifi";
34+
+ gpios = <&gpio 44 GPIO_ACTIVE_LOW>;
35+
+ };
36+
+ };
37+
+
38+
+ keys {
39+
+ compatible = "gpio-keys-polled";
40+
+
41+
+ #address-cells = <1>;
42+
+ #size-cells = <0>;
43+
+ poll-interval = <20>;
44+
+
45+
+ reset {
46+
+ label = "reset";
47+
+ gpios = <&gpio 38 1>;
48+
+ linux,code = <0x198>;
49+
+ };
50+
+
51+
+ dying-gasp {
52+
+ label = "dying-gasp";
53+
+ gpios = <&gpio 18 GPIO_ACTIVE_LOW>;
54+
+ linux,code = <BTN_7>;
55+
+ };
56+
+ };
57+
+};
58+
+
59+
+&state_default {
60+
+ i2s {
61+
+ groups = "i2s";
62+
+ function = "gpio";
63+
+ };
64+
+ spis {
65+
+ groups = "spis";
66+
+ function = "gpio";
67+
+ };
68+
+ p0led_an {
69+
+ groups = "p0led_an";
70+
+ function = "gpio";
71+
+ };
72+
+ p1led_an {
73+
+ groups = "p1led_an";
74+
+ function = "gpio";
75+
+ };
76+
+ p2led_an {
77+
+ groups = "p2led_an";
78+
+ function = "gpio";
79+
+ };
80+
+ p3led_an {
81+
+ groups = "p3led_an";
82+
+ function = "gpio";
83+
+ };
84+
+ p4led_an {
85+
+ groups = "p4led_an";
86+
+ function = "gpio";
87+
+ };
88+
+ wled_an {
89+
+ groups = "wled_an";
90+
+ function = "gpio";
91+
+ };
92+
+};
93+
+
94+
+&spi0 {
95+
+ status = "okay";
96+
+
97+
+ pinctrl-names = "default";
98+
+ pinctrl-0 = <&spi_pins>, <&spi_cs1_pins>;
99+
+
100+
+ flash@0 {
101+
+ compatible = "jedec,spi-nor";
102+
+ reg = <0>;
103+
+ spi-max-frequency = <10000000>;
104+
+
105+
+ partitions {
106+
+ compatible = "fixed-partitions";
107+
+ #address-cells = <1>;
108+
+ #size-cells = <1>;
109+
+
110+
+ partition@0 {
111+
+ label = "u-boot";
112+
+ reg = <0x0 0x30000>;
113+
+ read-only;
114+
+ };
115+
+
116+
+ partition@30000 {
117+
+ label = "u-boot-env";
118+
+ reg = <0x30000 0x10000>;
119+
+ read-only;
120+
+ };
121+
+
122+
+ factory: partition@40000 {
123+
+ label = "factory";
124+
+ reg = <0x40000 0xe000>;
125+
+ };
126+
+
127+
+ partition@4e000 {
128+
+ label = "pst-data"; /* persistent data */
129+
+ reg = <0x4e000 0x2000>;
130+
+ };
131+
+
132+
+ partition@50000 {
133+
+ compatible = "denx,uimage";
134+
+ label = "firmware";
135+
+ reg = <0x50000 0x1fb0000>; /* support 32MB norflash */
136+
+ };
137+
+ };
138+
+ };
139+
+
140+
+ spidev@1 {
141+
+ #address-cells = <1>;
142+
+ #size-cells = <1>;
143+
+ compatible = "spidev";
144+
+ reg = <1>;
145+
+ spi-max-frequency = <40000000>;
146+
+ };
147+
+};
148+
+
149+
+&i2c {
150+
+ status = "okay";
151+
+};
152+
+
153+
+&i2s {
154+
+ status = "disabled";
155+
+};
156+
+
157+
+&uart1 {
158+
+ status = "okay";
159+
+};
160+
+
161+
+&uart2 {
162+
+ status = "okay";
163+
+};
164+
+
165+
+&gdma {
166+
+ status = "okay";
167+
+};
168+
+
169+
+&ethernet {
170+
+ mtd-mac-address = <&factory 0x4>;
171+
+};
172+
+
173+
+&sdhci {
174+
+ status = "okay";
175+
+ mediatek,cd-poll;
176+
+};
177+
+
178+
+&wmac {
179+
+ status = "okay";
180+
+};
181+
Index: openwrt/target/linux/ramips/image/mt76x8.mk
182+
===================================================================
183+
--- openwrt.orig/target/linux/ramips/image/mt76x8.mk
184+
+++ openwrt/target/linux/ramips/image/mt76x8.mk
185+
@@ -489,6 +489,14 @@ define Device/rakwireless_rak633
186+
endef
187+
TARGET_DEVICES += rakwireless_rak633
188+
189+
+define Device/rakwireless_rak636
190+
+ IMAGE_SIZE := 32448k
191+
+ DEVICE_VENDOR := Rakwireless
192+
+ DEVICE_MODEL := RAK636
193+
+ DEVICE_PACKAGES := kmod-usb2 kmod-usb-ohci uboot-envtools kmod-sdhci-mt7620
194+
+endef
195+
+TARGET_DEVICES += rakwireless_rak636
196+
+
197+
define Device/ravpower_rp-wd009
198+
IMAGE_SIZE := 14272k
199+
DEVICE_VENDOR := RAVPower
200+
Index: openwrt/target/linux/ramips/mt76x8/base-files/etc/board.d/01_leds
201+
===================================================================
202+
--- openwrt.orig/target/linux/ramips/mt76x8/base-files/etc/board.d/01_leds
203+
+++ openwrt/target/linux/ramips/mt76x8/base-files/etc/board.d/01_leds
204+
@@ -65,6 +65,10 @@ oraybox,x1)
205+
rakwireless,rak633)
206+
ucidef_set_led_netdev "wifi_led" "wifi" "blue:wifi" "wlan0"
207+
;;
208+
+rakwireless,rak636)
209+
+ ucidef_set_led_netdev "wifi_led" "wifi" "mediatek:orange:wifi" "ra0" "tx"
210+
+ ucidef_set_led_switch "eth_led" "eth" "rak:green:eth" "switch0" "0x1"
211+
+ ;;
212+
tama,w06)
213+
ucidef_set_led_netdev "wan" "WAN" "green:wan" "eth0"
214+
ucidef_set_led_wlan "wlan" "WLAN" "green:wlan" "phy0tpt"
215+
Index: openwrt/target/linux/ramips/mt76x8/base-files/etc/board.d/02_network
216+
===================================================================
217+
--- openwrt.orig/target/linux/ramips/mt76x8/base-files/etc/board.d/02_network
218+
+++ openwrt/target/linux/ramips/mt76x8/base-files/etc/board.d/02_network
219+
@@ -145,7 +145,8 @@ ramips_setup_interfaces()
220+
ucidef_add_switch "switch0" \
221+
"3:lan" "6@eth0"
222+
;;
223+
- rakwireless,rak633)
224+
+ rakwireless,rak633|\
225+
+ rakwireless,rak636)
226+
ucidef_add_switch "switch0" \
227+
"0:wan" "1:lan" "2:lan" "3:lan" "4:lan" "6t@eth0"
228+
;;
229+
@@ -260,6 +261,9 @@ ramips_setup_macs()
230+
zyxel,keenetic-extra-ii)
231+
wan_mac=$(mtd_get_mac_binary rf-eeprom 0x28)
232+
;;
233+
+ rakwireless,rak636)
234+
+ wan_mac=$(mtd_get_mac_binary factory 0x4)
235+
+ ;;
236+
linksys,e5400)
237+
wan_mac=$(mtd_get_mac_binary factory 0x22)
238+
;;

conf/rak_rak7267/patches/series

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
rak636_device.patch
2+
kernel_spidev.patch
3+
console-login.diff

0 commit comments

Comments
 (0)