Wiki source code of Add GPS Support in LG308N / LPS8v2
Last modified by Xiaoling on 2024/07/31 17:46
Hide last authors
author | version | line-number | content |
---|---|---|---|
9.1 | 1 | **Table of Contents:** | |
2 | |||
3 | {{toc/}} | ||
4 | |||
5 | |||
1.8 | 6 | ((( | |
9.1 | 7 | = 1. Introduction = | |
5.2 | 8 | ||
9 | ---- | ||
10 | |||
8.1 | 11 | It is possible to GPS supports in LG308N-EC25 version and LPS8v2-EC25 version so device will add location info to uplink packet to LoRaWAN server. | |
1.8 | 12 | ))) | |
1.1 | 13 | ||
5.2 | 14 | ||
23.1 | 15 | = 2. Connect GPS Antenna to Cellular modules = | |
8.1 | 16 | ||
25.1 | 17 | ||
22.1 | 18 | Connect GNSS port to GPS antenna. The connector type is i-pex connector, please make sure the GPS antenna can be extended outdoor for GPS signal. | |
18.1 | 19 | ||
22.1 | 20 | **For LPS8v2:** | |
21 | |||
22 | [[image:image-20231208153214-1.png||height="426" width="590"]] | ||
23 | |||
24 | |||
25 | **For LG308N:** | ||
26 | |||
27 | [[image:image-20220527160148-2.png]] | ||
28 | |||
29 | |||
30 | = 3. Use Cellular Module GPS feature for LoRaWAN Timing. = | ||
31 | |||
32 | == 3.1 Configure on LG308N / LPS8N == | ||
33 | |||
1.8 | 34 | ((( | |
25.1 | 35 | ||
36 | |||
5.2 | 37 | (% style="color:blue" %)**Below are the steps:** | |
1.8 | 38 | ))) | |
1.1 | 39 | ||
1.8 | 40 | ((( | |
5.2 | 41 | **~1. Open the box and connect GPS antenna to GNSS port of EC25** | |
1.8 | 42 | ))) | |
1.1 | 43 | ||
5.2 | 44 | **2. modify the two files:** | |
1.1 | 45 | ||
1.9 | 46 | ((( | |
1.2 | 47 | /etc/chatscripts/3g.chat | |
1.9 | 48 | ))) | |
1.1 | 49 | ||
1.3 | 50 | (% class="box" %) | |
51 | ((( | ||
52 | ABORT BUSY | ||
53 | ABORT 'NO CARRIER' | ||
54 | ABORT ERROR | ||
55 | REPORT CONNECT | ||
1.2 | 56 | TIMEOUT 10 | |
1.3 | 57 | "" "AT&F" | |
58 | OK "ATE1" | ||
4.1 | 59 | (% style="color:red" %)**OK "AT+QGPS=1" ~-~-> Add this line, so EC25 module GPS will be enable when dial up**(%%) | |
1.3 | 60 | (% style="color:black" %)OK 'AT+CGDCONT=1,"IP","$USE_APN"' | |
61 | SAY "Calling UMTS/GPRS" | ||
1.2 | 62 | TIMEOUT 30 | |
1.3 | 63 | OK "ATD$DIALNUMBER" | |
1.2 | 64 | CONNECT ' ' | |
1.3 | 65 | ))) | |
1.1 | 66 | ||
7.2 | 67 | ||
1.8 | 68 | ((( | |
6.2 | 69 | (% style="color:red" %)**Note: **(%%)**After above settings, the GPS will be enable when dial up, if user doesn't use Cellular for Internet access, above script won't execute, in this case, user can (% style="color:red" %)run "echo AT+QGPS=1 > /dev/ttyUSB2" (%%)to (% style="color:blue" %)enable GPS /usr/bin/generate-config.sh,(%%) after configure this, in the web page, select any frequency band and save to make this take affect.** | |
1.8 | 70 | ))) | |
1.1 | 71 | ||
7.2 | 72 | ||
1.3 | 73 | (% class="box" %) | |
74 | ((( | ||
1.9 | 75 | ((( | |
4.2 | 76 | ((( | |
1.3 | 77 | gen_gw_cfg() { | |
1.2 | 78 | json_init | |
79 | json_add_object gateway_conf | ||
80 | json_add_string "gateway_ID" "$gwid" | ||
81 | json_add_string "server_address" "$server" | ||
82 | json_add_int "serv_port_up" "$upp" | ||
83 | json_add_int "serv_port_down" "$dpp" | ||
84 | json_add_int "stat_interval" "$stat" | ||
85 | json_add_boolean "forward_crc_valid" 1 | ||
86 | json_add_boolean "forward_crc_error" 0 | ||
4.2 | 87 | ))) | |
88 | |||
89 | ((( | ||
90 | (% style="color:red" %)**json_add_string "gps_tty_path" "/dev/ttyUSB1" ~-~-~-~--> Add this line so lora program knows to get the gps info from EC25** | ||
91 | ))) | ||
92 | |||
93 | ((( | ||
1.8 | 94 | (% style="color:black" %) json_close_object | |
4.2 | 95 | json_dump > /etc/lora/local_conf.json(%%) | |
96 | (% style="color:black" %)**}** | ||
1.3 | 97 | ))) | |
1.9 | 98 | ))) | |
4.2 | 99 | ))) | |
1.1 | 100 | ||
7.2 | 101 | ||
1.8 | 102 | ((( | |
5.2 | 103 | **3. Reboot the device and run logread -f to verify if GPS already works.** | |
1.8 | 104 | ))) | |
1.1 | 105 | ||
1.3 | 106 | (% class="box" %) | |
107 | ((( | ||
4.3 | 108 | Fri Mar 6 04:08:59 2020 daemon.info lora_pkt_fwd[3016]: (% style="color:red" %)**INFO~~ GPS serial port path is configured to "/dev/ttyUSB1"**(%%) | |
1.3 | 109 | Fri Mar 6 04:08:59 2020 daemon.info lora_pkt_fwd[3016]: INFO~~ [main] TTY port /dev/ttyUSB1 open for GPS synchronization | |
110 | Fri Mar 6 04:09:00 2020 cron.err crond[1689]: time disparity of 4301528 minutes detected | ||
111 | Fri Mar 6 04:09:00 2020 daemon.info lora_pkt_fwd[3016]: INFO~~ sockfd=4 | ||
112 | Fri Mar 6 04:09:00 2020 daemon.info lora_pkt_fwd[3016]: INFO~~ sockfd=5 | ||
113 | Fri Mar 6 04:09:00 2020 daemon.info lora_pkt_fwd[3016]: INFO~~ FPort Filter: 0 | ||
114 | Fri Mar 6 04:09:00 2020 daemon.info lora_pkt_fwd[3016]: INFO~~ DevAddrMask: 0x0 | ||
115 | Fri Mar 6 04:09:34 2020 daemon.info lora_pkt_fwd[3016]: INFO: [jit] queue is empty | ||
4.3 | 116 | Fri Mar 6 04:09:34 2020 daemon.info lora_pkt_fwd[3016]: STAT~~ {"stat":{"time":"2020-03-06 04:09:34 UTC"**,(% style="color:red" %)"lati":22.70627,"long":114.24277,"alti":58,(%%)** | |
1.3 | 117 | (% style="color:black" %)"rxnb":0,"rxok":0,"rxfw":0,"ackr":0.0,"dwnb":0,"txnb":0}} | |
118 | Fri Mar 6 04:09:35 2020 daemon.info lora_pkt_fwd[3016]: INFO~~ [up] PUSH_ACK received in 293 ms | ||
119 | Fri Mar 6 04:09:35 2020 daemon.info lora_pkt_fwd[3016]: INFO~~ [down] PULL_ACK received in 596 ms | ||
120 | ))) | ||
8.1 | 121 | ||
122 | |||
22.1 | 123 | == 3.2. Configure on LPS8v2 == | |
8.1 | 124 | ||
16.1 | 125 | ((( | |
25.1 | 126 | ||
127 | |||
16.1 | 128 | (% style="color:blue" %)**Below are the steps:** | |
129 | ))) | ||
130 | |||
131 | ((( | ||
132 | **~1. Open the box and connect GPS antenna to GNSS port of EC25** | ||
133 | ))) | ||
134 | |||
135 | **2. modify the two files:** | ||
136 | |||
137 | /etc/rc.local | ||
138 | |||
139 | (% class="box" %) | ||
140 | ((( | ||
141 | #!/bin/sh -e | ||
142 | # | ||
143 | # rc.local | ||
144 | # | ||
145 | # This script is executed at the end of each multiuser runlevel. | ||
146 | # Make sure that the script will "exit 0" on success or any other | ||
147 | # value on error. | ||
148 | # | ||
149 | # In order to enable or disable this script just change the execution | ||
150 | # bits. | ||
151 | # | ||
152 | # By default this script does nothing. | ||
153 | |||
154 | echo 0 > /sys/class/leds/dragino\:blue\:opt/brightness | ||
155 | echo 0 > /sys/class/leds/dragino\:green\:stat/brightness | ||
156 | echo 0 > /sys/class/leds/dragino\:red\:sys/brightness | ||
157 | (% style="color:red" %)**echo AT+QGPS=1 > /dev/ttyUSB2** | ||
158 | |||
159 | |||
160 | exit 0 | ||
161 | ))) | ||
162 | |||
17.1 | 163 | (% style="color:red" %)**Note: **(%%) **After above settings, LPS8v2 will (% style="color:blue" %)enable GPS(%%) automatically on boot.** | |
16.1 | 164 | ||
165 | |||
17.1 | 166 | **The user can run (% style="color:red" %)"echo AT+QGPS=1 > /dev/ttyUSB2" (%%)to manually (% style="color:blue" %)enable GPS.(%%)** | |
16.1 | 167 | ||
17.1 | 168 | **/usr/local/dragino/generate-config.sh, after configuring this, on the web page, select any frequency band and save to make this take effect.** | |
16.1 | 169 | ||
170 | (% class="box" %) | ||
171 | ((( | ||
172 | gen_gw_cfg() { | ||
173 | json_init | ||
174 | json_add_object gateway_conf | ||
175 | json_add_string "platform" "SX1$chip" | ||
176 | json_add_string "description" "Dragino LoRaWAN Gateway" | ||
177 | json_add_string "gateway_ID" "$gwid" | ||
178 | json_add_boolean "radiostream_enable" 1 | ||
179 | json_add_string "ghost_host" "localhost" | ||
180 | json_add_string "ghost_port" "1760" | ||
181 | json_add_boolean "manage_enable" 0 | ||
182 | json_add_boolean "custom_downlink" 0 | ||
183 | json_add_int "stat_interval" "30" | ||
184 | json_add_boolean "wd_enable" 1 | ||
185 | json_add_boolean "mac_decode" 0 | ||
186 | json_add_boolean "mac2file" 0 | ||
187 | json_add_boolean "mac2db" 0 | ||
188 | json_add_string "log_mask" "1111" | ||
25.1 | 189 | (% style="color:red" %)**json_add_string "gps_tty_path" "/dev/ttyUSB1" ~-~-~-~--> Add this line so lora program knows to get the gps info from EC25**(%%) | |
16.1 | 190 | json_add_double "ref_latitude" "$latitude" | |
191 | json_add_double "ref_longitude" "$longitude" | ||
192 | json_add_double "ref_altitude" "$altitude" | ||
193 | json_add_int "beacon_period" "0" | ||
194 | json_add_int "beacon_freq_hz" "869525000" | ||
195 | ))) | ||
196 | |||
197 | **3. Reboot the device and run journalctl -u draginofwd -f to verify if GPS already works.** | ||
198 | |||
199 | [[image:image-20231208160114-2.png||height="288" width="907"]] | ||
200 | |||
201 | |||
202 | [[image:image-20231208161058-5.png||height="548" width="965"]] | ||
203 | |||
204 | |||
22.1 | 205 | = 4. Use Cellular Module GPS feature for System Timing. = | |
18.1 | 206 | ||
22.1 | 207 | == 4.1 Configure on LPS8v2 == | |
18.1 | 208 | ||
25.1 | 209 | ||
20.1 | 210 | This introduction shows how to use the Cellular Module GPS feature for System Timing. | |
211 | |||
212 | |||
213 | 1. Download script from dragino site and move it to properly directory | ||
214 | |||
21.1 | 215 | (% class="box" %) | |
20.1 | 216 | ((( | |
217 | root@dragino-e4e891:# wget http://repo.dragino.com/release/tool/gpstime/gpstodate.sh | ||
218 | 2023-12-21 07:25:25 http://repo.dragino.com/release/tool/gpstime/gpstodate.sh | ||
219 | Resolving repo.dragino.com (repo.dragino.com)... 47.89.8.92 | ||
220 | Connecting to repo.dragino.com (repo.dragino.com)|47.89.8.92|:80... connected. | ||
221 | HTTP request sent, awaiting response... 200 OK | ||
222 | Length: 1114 (1.1K) [application/octet-stream] | ||
223 | Saving to: ‘gpstodate.sh’ | ||
224 | |||
225 | gpstodate.sh 100%[===========================================================================================================>] 1.09K .-KB/s in 0s | ||
226 | |||
227 | 2023-12-21 07:25:25 (16.5 MB/s) - ‘gpstodate.sh’ saved [1114/1114] | ||
228 | |||
229 | root@dragino-e4e891:# chmod +x gpstodate.sh;mv gpstodate.sh /usr/bin/ | ||
230 | root@dragino-e4e891:# | ||
231 | ))) | ||
232 | |||
233 | 2. Run **cat /dev/ttyUSB1** to check if the GPS location is successful. | ||
234 | |||
235 | [[image:image-20231221153129-1.png||height="440" width="632"]] | ||
236 | |||
237 | |||
238 | 3. Run the **date** and **/usr/bin/gpstodate.sh** **&** to check if the system time is correct | ||
239 | |||
240 | |||
21.1 | 241 | 4. Add **gpstodate.sh** to cron work **/etc/rc.local** , LPS8v2 will Use Cellular Module GPS feature for System Timing automatically on boot | |
242 | |||
243 | (% class="box" %) | ||
244 | ((( | ||
245 | #!/bin/sh -e | ||
246 | # | ||
247 | # rc.local | ||
248 | # | ||
249 | # This script is executed at the end of each multiuser runlevel. | ||
250 | # Make sure that the script will "exit 0" on success or any other | ||
251 | # value on error. | ||
252 | # | ||
253 | # In order to enable or disable this script just change the execution | ||
254 | # bits. | ||
255 | # | ||
256 | # By default this script does nothing. | ||
257 | |||
258 | echo 0 > /sys/class/leds/dragino\:blue\:opt/brightness | ||
259 | echo 0 > /sys/class/leds/dragino\:green\:stat/brightness | ||
260 | echo 0 > /sys/class/leds/dragino\:red\:sys/brightness | ||
22.1 | 261 | (% style="color:red" %)**echo AT+QGPS=1 > /dev/ttyUSB2**(%%) | |
21.1 | 262 | (% style="color:red" %)**/usr/bin/gpstodate.sh** | |
263 | |||
264 | exit 0 | ||
265 | ))) | ||
24.1 | 266 | ||
267 | |||
25.1 | 268 | = 5. Use external GPS module = | |
24.1 | 269 | ||
270 | |||
271 | |||
272 | == 5.1 Set up for LoRaWAN Time == | ||
273 | |||
274 | == 5.2 Set up for System Time == | ||
275 | |||
276 |