aboutsummaryrefslogtreecommitdiffstats
path: root/docs/software.html
blob: 961418624a3c433a651e34e08f68206d79dd13f5 (plain)
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
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
<html>
<head>
<link href="style.css" rel="stylesheet" type="text/css" />
<title>osmocom-analog</title>
</head>
<body>
<center><table><tr><td>

<h2><center>Software usage</center></h2>

<center><img src="signal.png"/></center>

<p>
To get a list of all options, run the base station software (E.g bnetz) with no parameter or '-h' or '--help'.
</p>

<p class="toppic">
Sound interface
</p>

<p>
Most machines have only one sound adapter installed.
A second sound adapter is required to talk through the base station to have a conversation.
To get a list of devices, run 'arecord -l'.
This is how it looks, if there are two sound adapters installed:
</p>

<pre>

# arecord -l
**** List of CAPTURE Hardware Devices ****
card 0: Intel [HDA Intel], device 0: ALC269VB Analog [ALC269VB Analog]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 2: Set [C-Media USB Headphone Set], device 0: USB Audio [USB Audio]
  Subdevices: 1/1
  Subdevice #0: subdevice #0

</pre>

<p>
Sound card 0, device 0 is used by default.
Run B-Netz base station on channel 1 to test if your default sound adapter works:
</p>

<pre>

# src/bnetz/bnetz -k 1
...
bnetz.c:268 info   : Entering IDLE state, sending 'Gruppenfreisignal' 2 on channel 1.
Base station ready, please tune transmitter to 153.010 MHz and receiver to 148.410 MHz.
To call phone, switch transmitter (using pilot signal) to 153.370 MHz.

</pre>

<p>
Alternatively select a different sound adapter.
If you prefer card 2, device 0, add '-a hw:2,0' or '--audio-device hw:2,0' to the command line:
</p>

<pre>

# src/bnetz/bnetz -k 1 -a hw:2,0

</pre>

<p class="toppic">
Basic level adjustment
</p>

<p>
To adjust input and output levels of your sound card, run 'alsamixer'.
</p>

<center><img src="alsa.png"/></center>

<p>
To avoid echo of audio input (mic), mute the input (select item and press 'm').
We want to capture microphone, but not echo it back to the audio output.
Also we want audio on line/headset output and capture from microphone input.
Do not use input gain on the microphone.
</p>

<p>
Now we want to calibrate transmitter and receiver audio level.
Run the B-Netz base station in loopback test mode (-l 2).
Even if you plan to setup A-Netz base station, use B-Netz base station for calibration.
</p>

<pre>

# src/bnetz/bnetz -k 1 -l 2
bnetz.c:268 info   : Entering IDLE state, sending 'Gruppenfreisignal' 2 on channel 1.
Base station ready, please tune transmitter to 153.010 MHz and receiver to 148.410 MHz.
To call phone, switch transmitter (using pilot signal) to 153.370 MHz.

</pre>

<p>
Tune your transmitter AND receiver to 153.010 MHz.
Press the PTT button on you transmitter and talk into it.
Check if you hear your voice at a normal level from the receiver.
Then connect the audio output (headphone) of your sound adapter to your transmitter, by using a variable resistor.
You should hear now the whistle sound clearly on the receiver, once you turn up the variable resistor.
Adjust the audio output so that the tone is not over-driven, but the volume similar to your voice when you talked into the transmitter.
The sound must be clear without any background noise or distortion.
</p>

<p>
Now connect the audio input (microphone) to your receiver, by using a variable resistor.
Enable the transmitter. (PTT button)
You should now see the signal being decoded by the base station:
</p>

<pre>

bnetz.c:474 notice : Received telegramm 'Ziffer 2'. (quality=99% level=133%)
bnetz.c:478 notice : Round trip delay is 0.053 seconds
bnetz.c:474 notice : Received telegramm 'Ziffer 3'. (quality=98% level=133%)
bnetz.c:478 notice : Round trip delay is 0.054 seconds
bnetz.c:474 notice : Received telegramm 'Ziffer 4'. (quality=99% level=131%)
bnetz.c:478 notice : Round trip delay is 0.053 seconds
bnetz.c:474 notice : Received telegramm 'Ziffer 5'. (quality=97% level=130%)
bnetz.c:478 notice : Round trip delay is 0.054 seconds

</pre>

<p>
Adjust the input level so that the received signal level is around 100%.
If the input level cannot be adjusted up to 100%, leave it as it is.
There is an option later in this manual to add RX gain.
The quality should be 90% or better.
Now you have connected the base station to your radio equipment and roughly adjusted the levels.
For fine-tuning, refer to each network description.
</p>

<p>
Finally store the settings using "alsactl store" command.
Do this whenever you want to keep your adjustments.
</p>

<p class="toppic">
Channel crossing
</p>

<p>
By default, the right channel of your sound adapter is used to connect to the radio.
Some adapters have mono input, especially on microphone jack.
In this case you will always receive audio, no matter if you cross the channels or not.
If you cross the channels, the left channel of your sound adapter is used.
I use mono cables with only one channel on the tip of the plug.
Usual sound adapters connect left channel on the tip of the plug, so we need to swap channels to use mono plugs.
Use the command line option '-x' or '--cross':
</p>

<pre>

# src/bnetz/bnetz -k 1 -x -l 2
bnetz.c:268 info   : Entering IDLE state, sending 'Gruppenfreisignal' 2 on channel 1.
Base station ready, please tune transmitter to 153.010 MHz and receiver to 148.410 MHz.
To call phone, switch transmitter (using pilot signal) to 153.370 MHz.

</pre>

<p class="toppic">
Emphasis
</p>

<p>
Pre-emphasis is used on the transmitter and de-emphasis is used on the receiver side.
The nature of FM causes noise amplitude to be proportional to the transmitted frequency.
(double frequency = double noise volume)
To compensate this, most FM radios, as well as all analog mobile networks use emphasis.
</p>

<center><img src="emphasis.gif"/></center>

<p>
As depicted, a frequency of 1000 Hz passes the pre-emphasis without any change.
The double frequency (2000 Hz) is amplified to double amplitude (+6 dB).
The result is that higher frequencies are transmitted with more deviation (louder) than lower frequencies.
On the receiver, the process is reversed.
A frequency of 2000 Hz is lowered down to half of it's amplitude (-6 db), so it becomes the original amplitude again.
</p>

<p>
Generally a transmitter is doing pre-emphasis for you.
If you are connected directly to the PLL of your transmitter, you will also not have pre-emphasis.
In this case you need to do it inside the base station software. Use the command line option '-p' or '--pre-emphasis':
</p>

<pre>

# src/bnetz/bnetz -k 1 --pre-emphasis

</pre>

<p>
The receiver is doing the de-emphasis for you.
If you are connected directly to the discriminator of your receiver, you will also not have de-emphasis.
In this case you need to do it inside the base station software. Use the command line option '-d' or '--de-emphasis':
</p>

<pre>

# src/bnetz/bnetz -k 1 --de-emphasis

</pre>

<p class="toppic">
RX-Gain
</p>

<p>
Especially if you use discriminator output, you might have low output voltage.
In my experiments it helps to amplify the amplitude by factor two in order adjust a received signal to 100%.
A gain of 6 dB will amplify the amplitude by factor two.
Also the noise of the sound adapter will be amplified by factor two, but this is not relevant at 16 bit resolution.
Use the command line option '-g 6' or '--rx-gain 6'.
In this example I use both, transmitter and receiver without emphasis (so software must do it) and add extra 6 dB gain to the input from the receiver:
</p>

<pre>

# src/bnetz/bnetz -k 1 -p -d -g 6

</pre>

<p class="toppic">
Loop-back Test
</p>

<p>
As used before, the loop-back test can be used to verify the signal process, such as level, delay and quality.
</p>

<p>
If command line option '-l 1' or '--loopback 1' is given, a loop-back inside the software is performed.
Also the audio signal is sent to the audio adapter, but not received from it.
This test is used to debug the software.
It can be used to see what the output of an external loop would look like.
</p>

<pre>

./bnetz/bnetz -k 1 -l 1
bnetz.c:351 info   : Entering IDLE state, sending 'Gruppenfreisignal' 2.
Base station for channel 1 ready, please tune transmitter to 153.010 MHz and receiver to 148.410 MHz.
To call phone, switch transmitter (using pilot signal) to 153.370 MHz.
bnetz.c:509 info   : RX Level: 100% Quality=99
bnetz.c:524 notice : Received telegramm 'Ziffer 0'.
bnetz.c:528 notice : Round trip delay is -0.048 seconds
bnetz.c:509 info   : RX Level: 100% Quality=98
bnetz.c:524 notice : Received telegramm 'Ziffer 1'.
bnetz.c:528 notice : Round trip delay is 0.000 seconds
bnetz.c:509 info   : RX Level: 100% Quality=98
bnetz.c:524 notice : Received telegramm 'Ziffer 2'.
bnetz.c:528 notice : Round trip delay is 0.000 seconds
bnetz.c:509 info   : RX Level: 100% Quality=99
bnetz.c:524 notice : Received telegramm 'Ziffer 3'.
bnetz.c:528 notice : Round trip delay is 0.000 seconds
bnetz.c:509 info   : RX Level: 100% Quality=99
bnetz.c:524 notice : Received telegramm 'Ziffer 4'.
bnetz.c:528 notice : Round trip delay is 0.001 seconds

</pre>

<p>
If command line option '-l 2' or '--loopback 2' is given, an external loop-back is performed.
The receiver needs to be tuned to transmitter, so the software receives its own signal.
The received quality level is relevant. It should be not less than 90 for B-Netz.
</p>

<p>
If command line option '-l 3' or '--loopback 3' is given, the audio from the input is sent back to the output.
It can be used to check a headset.
Everything that is spoken into the microphone should appear on the headphone.
</p>

<hr><center>[<a href="index.html">Back to main page</a>]</center><hr>
</td></tr></table></center>
</body>
</html>