-
Notifications
You must be signed in to change notification settings - Fork 1
/
README
311 lines (208 loc) · 9.65 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
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
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
About this driver :
*******************
--
WARNING: This driver implements DVB API v3 only and should be considered
deprecated, you should probably use Webcamd (multimedia/webcamd) instead.
--
Sms1xxx is a native FreeBSD driver for Siano-based DVB-T USB devices.
It should work on any version of FreeBSD >= 8.0 (see older versions
for FreeBSD 7.x).
It is a port of linux' sms1xxx driver (see drivers/media/dvb/siano
in the Linux source tree), initially from Linux kernel v.2.6.27.
The following web page presents an initial version of the Linux driver :
http://linuxtv.org/wiki/index.php/TerraTec_Cinergy_Piranha
The FreeBSD driver has been successfully tested with two devices :
- Terratec Cinergy Piranha
- Hauppauge WinTV MiniStick (HD)
Other devices should work, just give a try (you will need to edit the
sms1xxx.c file and add new VIDs/PIDs to make your device detected).
The FreeBSD version of the driver is based on the great dvbusb driver
written by Raaf :
http://raaf.atspace.org/dvbusb
with a few modifications to the demuxer (fixing issues with clones'
management).
License / availability :
************************
The sms1xxx driver is released under the GPL v2.0 license.
It is available on http://contribs.martymac.org and in the
FreeBSD ports tree (multimedia/sms1xxx-kmod).
This file explains how to install the driver from sources.
Getting firmware files :
************************
Before using the driver, you have to get the official firmwares for your
hardware, unpack and move them to each firmwares/* subdirectory.
Each firmware will then be used to build a corresponding firmware module
that will have to be loaded with the main kernel module.
For your convenience, a 'distinfo' file is present in each firmware directory,
allowing you to check if your firmware files match the firmwares I used for
development.
* Terratec Cinergy Piranha :
For the Terratec Cinergy Piranha USB key, get the following file :
ftp://ftp.terratec.net/Receiver/Cinergy_Piranha/Update/Cinergy_Piranha_Drv_Vista_XP_3.09.02.00.exe
Unpack the 3 firmware files :
unzip -j Cinergy_Piranha_Drv_Vista_XP_3.09.02.00.exe \
Cinergy\ Piranha/BDA\ Driver\ 3.09.02.00/Windos\ XP\ \(32Bit\)/SMS100x_Dvbt.inp \
Cinergy\ Piranha/BDA\ Driver\ 3.09.02.00/Windos\ XP\ \(32Bit\)/SMS100x_Dvbh.inp \
Cinergy\ Piranha/BDA\ Driver\ 3.09.02.00/Windos\ XP\ \(32Bit\)/SMS100x_DabTdmb.inp
And move each file to its own directory :
mv SMS100x_Dvbt.inp firmwares/stellar_dvbt/stellar_dvbt.fw
mv SMS100x_Dvbh.inp firmwares/stellar_dvbh/stellar_dvbh.fw
mv SMS100x_DabTdmb.inp firmwares/stellar_dabtdmb/stellar_dabtdmb.fw
* Hauppauge WinTV MiniStick
Get the following file :
http://www.wintvcd.co.uk/drivers/WinTV-MiniStick_4_2_26_28027_WHQL.zip
Unpack the 2 firmware files :
unzip -j WinTV-MiniStick_4_2_26_28027_WHQL.zip \
driver17/hcw17dvb.1b0 \
driver17/hcw17isd.1b0
And move them to their own directories :
mv hcw17dvb.1b0 firmwares/novab0_dvbbda/novab0_dvbbda.fw
mv hcw17isd.1b0 firmwares/novab0_isdbtbda/novab0_isdbtbda.fw
Building and installing everything :
************************************
First, if you do not want to build every single firmware file,
you may want to change the SUBDIR variable in firmwares/Makefile
to remove firmwares you do not need.
Then, just do :
make && make install
The main kernel module (sms1xxx.ko) and additional firmware modules
will be built and installed to /boot/modules.
Loading and using the driver :
******************************
Run :
kldload <your firmware module(s)>
e.g. :
kldload stellar_dvbt.ko
kldload stellar_dvbh.ko
[...]
Depending on the mode(s) you wish to run.
Then, run :
kldload sms1xxx
Finally, it might be necessary to tune a few sysctls :
* hw.usb.sms1xxx.freq_offset: Global frequency offset (Hz)
This sysctl will apply a global offset each time a tuning is performed.
166000 is necessary for Paris (France). It may or may not be necessary to
change that value, depending on where you live and the kind of hardware
you use.
* hw.usb.sms1xxx.requested_mode: Requested mode
(0=DVB-T, 1=DVB-H, 2=DAB/T-DMB, 4=DVB-T/BDA, 5=ISDBT, 6=ISDBT/BDA)
This sysctl is the mode that will be requested when plugging the next device.
You must have loaded the corresponding firmware in the previous step.
Please note that currently, only DVB-T (mode 4) is supported (this is the
default mode).
Testing the driver :
********************
First, plug the device (or it won't work :p). You can have a look at
/var/log/messages and see what happens.
If your device is detected and the firmware successfully loaded, two
device nodes should appear :
/dev/dvb/adapter0/dvr0
/dev/dvb/adapter0/frontend0
They will be used by applications to interact with your device.
While using the device, you will also see other nodes appear and disappear :
/dev/dvb/adapter0/demux0.n
They are dynamically created and destroyed when you have successfully tuned
the device to a specific frequency and when a PID filter has been set.
Once everything works, you will have to scan for channels. See the following
paragraph to build the w_scan and the scan utilities.
(if nothing works, you can try to build the module using 'make debug' and
tune the 'debug' sysctl to set the desired log level).
Building applications :
***********************
The driver is provided with a few applications :
w_scan : searches for channels (initial or full search)
scan-dvb-apps : searches for channels (using an initial frequency list)
tzap-dvb-apps : tunes to a specific channel
dvbtools : various DVB tools (dvbstream, dvbtune, dvbdate)
rc5watch : displays IR codes sent by the remote controller (see below)
There is also a conf/ directory which contains my configuration files. They
are suitable for France (Paris) and need a freq_offset set to 166000.
To build an utility, go into its directory and use 'gmake'.
See apps/README for more details.
Using your device :
*******************
First, perform an initial search using w_scan. It will generate a file
containing frequencies airing on your location :
w_scan -x > xx-MyCity
(e.g. for me : w_scan -x > fr-Paris)
Then, scan for channels using the previous file and the scan utility :
scan xx-MyCity > channels.conf
channels.conf now contains a list of channels you can watch.
Then, tune the device to a specific channel :
tzap -rc channels.conf "MYCHANNEL"
Finally, you can view (or record) streamed data using the dvr0 device :
mplayer /dev/dvb/adapter0/dvr0
or :
dd if=/dev/dvb/adapter0/dvr0 of=mystream.ts
Other applications :
********************
* ffplay (multimedia/ffmpeg)
* xine (multimedia/xine) can be used to watch TV directly (without
having to use tzap) : xine 'dvb://MYCHANNEL'.
* vlc (multimedia/vlc) natively supports DVB : just check the V4L option
before building the port.
Then, you should be able to watch TV by launching it this way :
vlc dtv://frequency=562000000:bandwidth=8
or by selecting the "open capture device" entry in the "media' menu.
* mplayer (multimedia/mplayer) can also handle DVB devices.
Build the port with V4L support, then copy your channels.conf file to
/usr/local/etc/mplayer/. Now, launch Mplayer using the channel name
as URL, e.g. :
mplayer "dvb://ARTE"
IR (infrared) support :
***********************
If IR is supported by your device, an 'ir0' device will appear in your
DVB adapter's device directory (/dev/dvb/adapter0/ir0).
Reading this device will give you access to raw IR data received by the
adapter (use the provided remote control, if any).
If the IR module is sucessfully started, the 'ir_module_started' sysctl
of your device's node will also be set to 1.
For your convenience, an utility that decodes and prints received
events in a human-friendly format is available in the apps/rc5watch
directory.
Type 'make' to build it, then, once your device is plugged, run :
./rc5watch
Each received event will appear on stdout in the following form :
toggle:address:command
It is then possible to use this utility in a script that will perform
various actions given received key codes (see rc5exec.sh.sample).
It might also be possible to use the 'ir0' device with LIRC, but it has not
been tested. If you manage to make it work, please tell me :)
GPIO support :
**************
GPIO (General purpose Inpout Output) brings LEDs handling as well as LNA
(Low Noise Amplifier) support to some devices.
* If LEDs handling is supported by your device, LED colors will indicate
reception quality and device activity.
You can check if your device supports LEDs handling by buildind the driver
with debug support and check if the sysctl 'dev.sms1xxx.n.led_status' appears
once the device is plugged in. This sysctl can be used to test LEDs by setting
it to special values. See the sysctl's description for more details.
* If LNA handling is supported by your device, the sysctl 'dev.sms1xxx.n.use_lna'
will appear. Setting it to 1 will make the driver turn LNA on before each tuning
request. See the sysctl's description for more details.
See also :
**********
See also sms1xxx(4) man page.
Links :
*******
LinuxTV website :
http://www.linuxtv.org
Terratec Cinergy Piranha page on LinuxTV :
http://www.linuxtv.org/wiki/index.php/TerraTec_Cinergy_Piranha
Linux DVB API documentation :
http://www.linuxtv.org/docs/dvbapi/Contents.html
If you are looking for some additional firmwares, you can follow this post :
http://www.linuxtv.org/pipermail/linux-dvb/2009-January/031537.html
And this link :
http://www.steventoth.net/linux/sms1xxx
Raaf's original work for the dvbusb driver :
http://raaf.atspace.org/dvbusb
V4L-Compat :
http://www.tangobravo.co.uk/v4l-compat
Video4BSD :
http://www.selasky.org/hans_petter/video4bsd/index.html
Author :
********
This driver has been written by Ganaël Laplanche
([email protected]). Any comment is welcome !