2 * u-blox UBX protocol dissection.
4 * By Timo Warns <timo.warns@gmail.com>
5 * Copyright 2023 Timo Warns
7 * Wireshark - Network traffic analyzer
8 * By Gerald Combs <gerald@unicom.net>
9 * Copyright 1998 Gerald Combs
11 * SPDX-License-Identifier: GPL-2.0-or-later
18 /* Length of the UBX message header
19 * (without payload and checksum) */
20 #define UBX_HEADER_SIZE 6
21 /* Length of the checksum at the end of a UBX message */
22 #define UBX_CHKSUM_SIZE 2
24 /* UBX GNSS Type IDs */
26 #define GNSS_ID_SBAS 1
27 #define GNSS_ID_GALILEO 2
28 #define GNSS_ID_BEIDOU 3
29 #define GNSS_ID_IMES 4
30 #define GNSS_ID_QZSS 5
31 #define GNSS_ID_GLONASS 6
33 /* UBX message mnemonics for message class / id */
34 #define UBX_ACK_ACK 0x0501
35 #define UBX_ACK_NAK 0x0500
36 #define UBX_AID_ALM 0x0B30
37 #define UBX_AID_AOP 0x0B33
38 #define UBX_AID_EPH 0x0B31
39 #define UBX_AID_HUI 0x0B02
40 #define UBX_AID_INI 0x0B01
41 #define UBX_CFG_ANT 0x0613
42 #define UBX_CFG_BATCH 0x0693
43 #define UBX_CFG_CFG 0x0609
44 #define UBX_CFG_DAT 0x0606
45 #define UBX_CFG_DGNSS 0x0670
46 #define UBX_CFG_DOSC 0x0661
47 #define UBX_CFG_ESFALG 0x0656
48 #define UBX_CFG_ESFA 0x064C
49 #define UBX_CFG_ESFG 0x064D
50 #define UBX_CFG_ESFWT 0x0682
51 #define UBX_CFG_ESRC 0x0660
52 #define UBX_CFG_GEOFENCE 0x0669
53 #define UBX_CFG_GNSS 0x063E
54 #define UBX_CFG_HNR 0x065C
55 #define UBX_CFG_INF 0x0602
56 #define UBX_CFG_ITFM 0x0639
57 #define UBX_CFG_LOGFILTER 0x0647
58 #define UBX_CFG_MSG 0x0601
59 #define UBX_CFG_NAV5 0x0624
60 #define UBX_CFG_NAVX5 0x0623
61 #define UBX_CFG_NMEA 0x0617
62 #define UBX_CFG_ODO 0x061E
63 #define UBX_CFG_PM2 0x063B
64 #define UBX_CFG_PMS 0x0686
65 #define UBX_CFG_PRT 0x0600
66 #define UBX_CFG_PWR 0x0657
67 #define UBX_CFG_RATE 0x0608
68 #define UBX_CFG_RINV 0x0634
69 #define UBX_CFG_RST 0x0604
70 #define UBX_CFG_RXM 0x0611
71 #define UBX_CFG_SBAS 0x0616
72 #define UBX_CFG_SENIF 0x0688
73 #define UBX_CFG_SLAS 0x068D
74 #define UBX_CFG_SMGR 0x0662
75 #define UBX_CFG_SPT 0x0664
76 #define UBX_CFG_TMODE2 0x063D
77 #define UBX_CFG_TMODE3 0x0671
78 #define UBX_CFG_TP5 0x0631
79 #define UBX_CFG_TXSLOT 0x0653
80 #define UBX_CFG_USB 0x061B
81 #define UBX_ESF_ALG 0x1014
82 #define UBX_ESF_INS 0x1015
83 #define UBX_ESF_MEAS 0x1002
84 #define UBX_ESF_RAW 0x1003
85 #define UBX_ESF_STATUS 0x1010
86 #define UBX_HNR_ATT 0x2801
87 #define UBX_HNR_INS 0x2802
88 #define UBX_HNR_PVT 0x2800
89 #define UBX_INF_DEBUG 0x0404
90 #define UBX_INF_ERROR 0x0400
91 #define UBX_INF_NOTICE 0x0402
92 #define UBX_INF_TEST 0x0403
93 #define UBX_INF_WARNING 0x0401
94 #define UBX_LOG_BATCH 0x2111
95 #define UBX_LOG_CREATE 0x2107
96 #define UBX_LOG_ERASE 0x2103
97 #define UBX_LOG_FINDTIME 0x210E
98 #define UBX_LOG_INFO 0x2108
99 #define UBX_LOG_RETRIEVEBATCH 0x2110
100 #define UBX_LOG_RETRIEVEPOSEXTRA 0x210f
101 #define UBX_LOG_RETRIEVEPOS 0x210b
102 #define UBX_LOG_RETRIEVESTRING 0x210d
103 #define UBX_LOG_RETRIEVE 0x2109
104 #define UBX_LOG_STRING 0x2104
105 #define UBX_MGA_ACK_DATA0 0x1360
106 #define UBX_MGA_ANO 0x1320
107 #define UBX_MGA_BDS 0x1303
108 #define UBX_MGA_DBD 0x1380
109 #define UBX_MGA_FLASH 0x1321
110 #define UBX_MGA_GAL 0x1302
111 #define UBX_MGA_GLO 0x1306
112 #define UBX_MGA_GPS 0x1300
113 #define UBX_MGA_INI 0x1340
114 #define UBX_MGA_QZSS 0x1305
115 #define UBX_MON_BATCH 0x0A32
116 #define UBX_MON_GNSS 0x0A28
117 #define UBX_MON_HW2 0x0A0B
118 #define UBX_MON_HW 0x0A09
119 #define UBX_MON_IO 0x0A02
120 #define UBX_MON_MSGPP 0x0A06
121 #define UBX_MON_PATCH 0x0A27
122 #define UBX_MON_RXBUF 0x0A07
123 #define UBX_MON_RXR 0x0A21
124 #define UBX_MON_SMGR 0x0A2E
125 #define UBX_MON_SPT 0x0A2F
126 #define UBX_MON_TXBUF 0x0A08
127 #define UBX_MON_VER 0x0A04
128 #define UBX_NAV_AOPSTATUS 0x0160
129 #define UBX_NAV_ATT 0x0105
130 #define UBX_NAV_CLOCK 0x0122
131 #define UBX_NAV_COV 0x0136
132 #define UBX_NAV_DGPS 0x0131
133 #define UBX_NAV_DOP 0x0104
134 #define UBX_NAV_EELL 0x013d
135 #define UBX_NAV_EOE 0x0161
136 #define UBX_NAV_GEOFENCE 0x0139
137 #define UBX_NAV_HPPOSECEF 0x0113
138 #define UBX_NAV_HPPOSLLH 0x0114
139 #define UBX_NAV_NMI 0x0128
140 #define UBX_NAV_ODO 0x0109
141 #define UBX_NAV_ORB 0x0134
142 #define UBX_NAV_POSECEF 0x0101
143 #define UBX_NAV_POSLLH 0x0102
144 #define UBX_NAV_PVT 0x0107
145 #define UBX_NAV_RELPOSNED 0x013C
146 #define UBX_NAV_RESETODO 0x0110
147 #define UBX_NAV_SAT 0x0135
148 #define UBX_NAV_SBAS 0x0132
149 #define UBX_NAV_SLAS 0x0142
150 #define UBX_NAV_SOL 0x0106
151 #define UBX_NAV_STATUS 0x0103
152 #define UBX_NAV_SVINFO 0x0130
153 #define UBX_NAV_SVIN 0x013B
154 #define UBX_NAV_TIMEBDS 0x0124
155 #define UBX_NAV_TIMEGAL 0x0125
156 #define UBX_NAV_TIMEGLO 0x0123
157 #define UBX_NAV_TIMEGPS 0x0120
158 #define UBX_NAV_TIMELS 0x0126
159 #define UBX_NAV_TIMEUTC 0x0121
160 #define UBX_NAV_VELECEF 0x0111
161 #define UBX_NAV_VELNED 0x0112
162 #define UBX_RXM_IMES 0x0261
163 #define UBX_RXM_MEASX 0x0214
164 #define UBX_RXM_PMREQ 0x0241
165 #define UBX_RXM_RAWX 0x0215
166 #define UBX_RXM_RLM 0x0259
167 #define UBX_RXM_RTCM 0x0232
168 #define UBX_RXM_SFRBX 0x0213
169 #define UBX_RXM_SVSI 0x0220
170 #define UBX_SEC_UNIQID 0x2703
171 #define UBX_TIM_DOSC 0x0D11
172 #define UBX_TIM_FCHG 0x0D16
173 #define UBX_TIM_HOC 0x0D17
174 #define UBX_TIM_SMEAS 0x0D13
175 #define UBX_TIM_SVIN 0x0D04
176 #define UBX_TIM_TM2 0x0D03
177 #define UBX_TIM_TOS 0x0D12
178 #define UBX_TIM_TP 0x0D01
179 #define UBX_TIM_VCOCAL 0x0D15
180 #define UBX_TIM_VRFY 0x0D06
181 #define UBX_UPD_SOS 0x0914
183 #define UBX_REGISTER_DISSECTOR(d,m) dissector_add_uint("ubx.msg_class_id", m, create_dissector_handle(d, proto_ubx));