-
Notifications
You must be signed in to change notification settings - Fork 0
/
README
170 lines (139 loc) · 6.66 KB
/
README
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
08-MAY-2020 Matthew J. Wolf Email: matthew.wolf.hpsdr at speciosus.net
The openHPSDR Plug-in for Wireshark is written to disassemble the openHPSDR
Ethernet protocol. The protocol is also is referred to as "Protocol 2".
The protocol is still under development.
The current public released protocol documentation list located at:
https://github.com/TAPR/OpenHPSDR-Firmware/tree/master/Protocol%202/Documentation
Version 0.0.7.2:
- No changes from version 0.0.7.1
- Binaries compiled with Wireshark 3.2.3
- The protocol specification has been stable for longer then thirteen months.
This version of the plug-in by be the first candidate for release.
Version 0.0.7.1
- Due to issue with the Microsoft Windows build. The "-"
in the source file system names has been replaced with "_".
Version 0.0.7:
- Wireshark version 3.0.1
- Changed source file names from openhpsdr to openhpsdr-e.
- Added references for Protocol 2 to text strings.
-- Added "P2" to the heuristic dissectors display_name.
-- New Name: "OpenHPSDR Ethernet - Protocol 2"
-- New Short Name: "HPSDR-ETH_P2"
-- No change to Abbreviation: "hpsdr-e"
- Fixed the location of line in gain in DUC Command (DUCC), byte 51.
- In High Priority Command (HPC)
-- Removed the non-existing 8th open collector.
-- Moved CWX0 into a sub menu.
-- changed fields:
openhpsdr-e.hpc.cwx0 is now openhpsdr-e.hpc.cwx0-cwx
openhpsdr-e.hpc.cw-dot is now openhpsdr-e.hpc.cwx0-dot
openhpsdr-e.hpc.cw-dash is now openhpsdr-e.hpc.cwx0-dash
- Fixed incorrect multiple use of the same field:
-- openhpsdr-e.cr.discovery.mac
--- Added fields:
openhpsdr-e.cr.erase.mac
openhpsdr-e.cr.program.mac
-- openhpsdr-e.cr.discovery.board
--- Added fields:
openhpsdr-e.cr.erase.board
openhpsdr-e.cr.program.board
-- openhpsdr-e.cr.discovery.proto-ver
--- Added field:
openhpsdr-e.cr.erase.proto-ver
- Version 3.7 Changes
--In High Priority Status (HPS) added text string to warn about DUC I&Q FIFO
almost full and almost empty are no longer supported as of version 3.7
of the protocol.
--- Should they be removed at some point in the future?
-- Removed Multiplexed Mode
--- In DUC Command (DUCC) changed DDC Multiplex sub menu to a warning
text string.
--- In Command Reply (CR) Hardware Discovery Reply for Full Hardware
Description. DDC Multiplex changed to a warning text string.
- Version 3.8 changes
-- The DUC Command (DUCC) byte 6, CW side tone level, is definded as a 7
bit value. Added a bit mask so that the last bit is not displayed.
-- Open collector numbering changed from starting at 0 to starting at 1.
-- Added Beta Version to Command Reply (CR).
-- Changed the format of the Command Reply (CR) Hardware "Response
to Program"
Non-default Ports
-----------------
The plug in does support using service ports other then the default service
ports. The plug in needs to see the non-default ports in a
Command Reply (CR) General datagram before it will correctly disassemble
traffic using non-default ports.
Protocol Datagrams
------------------
The openHPSDR Ethernet protocol is comprised of eleven different datagram
formats. Below is a table that lists the default ports and the protocol names
and abbreviation that I use in the Wireshark dissector. Traffic originated by
the host uses the port number as the UDP destination port. Traffic originated
by the hardware uses the port as the source UDP port.
The name below are not the same as the in the protocol documentation. These
are names that I created.
Host and Hardware Use the Same Port
-----------------------------------
- Port Name
- 1024 Command Reply (CR)
- xxxx Memory Mapped (MEM)
Host to Hardware - destination UDP port
---------------------------------------
- 1025 DDC Command (DDCC)
- 1026 DUC Command (DUCC)
- 1027 High Priority Command (HPC)
- 1028 DDC Audio (DDCA)
- 1029 to 1036 DUC I&Q Data (DUCIQ)
Hardware to Host -source UDP port
---------------------------------
- 1025 High Priority Status (HPS)
- 1026 Mic / Line Samples (MICL)
- 1027 to 1034 Wide Band Data (WBD)
- 1035 to 1114 DDC I&Q Data (DDCIQ)
Plug In Preferences
-------------------
There are three configurable preferences in the Wireshark dissector.
They are all Boolean (on or off) preferences.
- "Strict Checking of Datagram Size"
Disable checking for added bytes at the end of the datagrams.
Turning off disables a warning message.
- "Strict Pad Checking"
Strict checking of the amount of pad bytes at the end of the datagrams.
When enabled, Wireshark (not the openHPSDR dissector) will display
a "Malformed Packet" error for a datagram without the correct
number of pad bytes.
When disabled, checking is only for one pad byte instead of checking
for the correct number of pad bytes.
- "ddciq_iq_mtu_check"
Check to see if the number of I&Q Samples
will exceed the maximum Ethernet MTU (1500 bytes).
When disabled, there will be no checking
to see if the MTU will be exceeded.
Display Filters
---------------
In Wireshark you can filter packets by using display filters. The display
filters use fields that are created when the packets are disassembled. I tried to
add fields for every thing in the protocol except the samples (audio, I&Q) and
mapped memory (address, data).
The samples and mapped memory have a repetitive format. I created a index field
for these datagrams. A few examples are below.
Here is an example display filter for finding a Mic / Line Samples (MICL)
datagrams.
openhpsdr-e.micl.sample-idx==718 && openhpsdr-e.micl.sample == 0x1111
- Find all the MICL datagrams in which sample number 718 has a value of 0x1111.
Here is an example display filter for finding Wide Band (WBD) datagrams.
openhpsdr-e.wbd.adc == 4 && openhpsdr-e.wbd.sample-idx == 2 && openhpsdr-e.wbd.sample == 0x66ee
- Find all WDB datagrams from ADC number 4 in which sample number 2 has the value
of 0x66ee.
The easiest way to find a field name is to click on a item in Wireshark. The
field label will appear on the bottom of the Wireshark window. All the field
labels start with "openhpsdr-e." . You can also click on the bytes in the raw
display to select the field labels.
Known Issues
------------
There is one known issue. Switching, in the same capture, from a non-default
port to default a default port, in a Command Reply (CR) General datagram, can
cause Wireshark to crash. The default port numbers where explicitly specified
in the CR General datagram datagram. They where not set to "0". Zero is the
datagrams also mean use the default ports. The cause of the issue may be a fix
I implemented to allow for columns to added and deleted.