blob: 955d8ca159fed93c574f5e051638a5137a423d24 [file] [log] [blame]
Mauro Carvalho Chehabb4a41382016-07-17 19:52:48 -03001.. include:: <isonum.txt>
Tobias Lorenz6aadf822008-10-28 08:48:27 -03002
Mauro Carvalho Chehabb4a41382016-07-17 19:52:48 -03003The Silicon Labs Si470x FM Radio Receivers driver
4=================================================
5
6Copyright |copy| 2009 Tobias Lorenz <tobias.lorenz@gmx.net>
Tobias Lorenz6aadf822008-10-28 08:48:27 -03007
8
9Information from Silicon Labs
Mauro Carvalho Chehabb4a41382016-07-17 19:52:48 -030010-----------------------------
11
Tobias Lorenz6aadf822008-10-28 08:48:27 -030012Silicon Laboratories is the manufacturer of the radio ICs, that nowadays are the
13most often used radio receivers in cell phones. Usually they are connected with
14I2C. But SiLabs also provides a reference design, which integrates this IC,
15together with a small microcontroller C8051F321, to form a USB radio.
16Part of this reference design is also a radio application in binary and source
17code. The software also contains an automatic firmware upgrade to the most
18current version. Information on these can be downloaded here:
19http://www.silabs.com/usbradio
20
21
22Supported ICs
Mauro Carvalho Chehabb4a41382016-07-17 19:52:48 -030023-------------
24
Tobias Lorenz6aadf822008-10-28 08:48:27 -030025The following ICs have a very similar register set, so that they are or will be
26supported somewhen by the driver:
Mauro Carvalho Chehabb4a41382016-07-17 19:52:48 -030027
Tobias Lorenz6aadf822008-10-28 08:48:27 -030028- Si4700: FM radio receiver
29- Si4701: FM radio receiver, RDS Support
30- Si4702: FM radio receiver
31- Si4703: FM radio receiver, RDS Support
32- Si4704: FM radio receiver, no external antenna required
33- Si4705: FM radio receiver, no external antenna required, RDS support, Dig I/O
34- Si4706: Enhanced FM RDS/TMC radio receiver, no external antenna required, RDS
35 Support
36- Si4707: Dedicated weather band radio receiver with SAME decoder, RDS Support
37- Si4708: Smallest FM receivers
38- Si4709: Smallest FM receivers, RDS Support
Mauro Carvalho Chehabb4a41382016-07-17 19:52:48 -030039
Tobias Lorenz6aadf822008-10-28 08:48:27 -030040More information on these can be downloaded here:
41http://www.silabs.com/products/mcu/Pages/USBFMRadioRD.aspx
42
43
44Supported USB devices
Mauro Carvalho Chehabb4a41382016-07-17 19:52:48 -030045---------------------
46
Tobias Lorenz6aadf822008-10-28 08:48:27 -030047Currently the following USB radios (vendor:product) with the Silicon Labs si470x
48chips are known to work:
Mauro Carvalho Chehabb4a41382016-07-17 19:52:48 -030049
Tobias Lorenz6aadf822008-10-28 08:48:27 -030050- 10c4:818a: Silicon Labs USB FM Radio Reference Design
51- 06e1:a155: ADS/Tech FM Radio Receiver (formerly Instant FM Music) (RDX-155-EF)
52- 1b80:d700: KWorld USB FM Radio SnapMusic Mobile 700 (FM700)
Tobias Lorenz00ec8d02009-02-12 14:55:45 -030053- 10c5:819a: Sanei Electric, Inc. FM USB Radio (sold as DealExtreme.com PCear)
Tobias Lorenz6aadf822008-10-28 08:48:27 -030054
55
56Software
Mauro Carvalho Chehabb4a41382016-07-17 19:52:48 -030057--------
58
Tobias Lorenz6aadf822008-10-28 08:48:27 -030059Testing is usually done with most application under Debian/testing:
Mauro Carvalho Chehabb4a41382016-07-17 19:52:48 -030060
Tobias Lorenz6aadf822008-10-28 08:48:27 -030061- fmtools - Utility for managing FM tuner cards
62- gnomeradio - FM-radio tuner for the GNOME desktop
63- gradio - GTK FM radio tuner
64- kradio - Comfortable Radio Application for KDE
65- radio - ncurses-based radio application
Tobias Lorenz00ec8d02009-02-12 14:55:45 -030066- mplayer - The Ultimate Movie Player For Linux
Alexey Klimov4db45af2013-02-11 19:04:51 -030067- v4l2-ctl - Collection of command line video4linux utilities
Mauro Carvalho Chehabb4a41382016-07-17 19:52:48 -030068
Alexey Klimov4db45af2013-02-11 19:04:51 -030069For example, you can use:
Mauro Carvalho Chehabb4a41382016-07-17 19:52:48 -030070
71.. code-block:: none
72
73 v4l2-ctl -d /dev/radio0 --set-ctrl=volume=10,mute=0 --set-freq=95.21 --all
Tobias Lorenz6aadf822008-10-28 08:48:27 -030074
75There is also a library libv4l, which can be used. It's going to have a function
76for frequency seeking, either by using hardware functionality as in radio-si470x
77or by implementing a function as we currently have in every of the mentioned
78programs. Somewhen the radio programs should make use of libv4l.
79
80For processing RDS information, there is a project ongoing at:
81http://rdsd.berlios.de/
82
83There is currently no project for making TMC sentences human readable.
84
85
86Audio Listing
Mauro Carvalho Chehabb4a41382016-07-17 19:52:48 -030087-------------
88
Tobias Lorenz6aadf822008-10-28 08:48:27 -030089USB Audio is provided by the ALSA snd_usb_audio module. It is recommended to
90also select SND_USB_AUDIO, as this is required to get sound from the radio. For
91listing you have to redirect the sound, for example using one of the following
Tobias Lorenz00ec8d02009-02-12 14:55:45 -030092commands. Please adjust the audio devices to your needs (/dev/dsp* and hw:x,x).
Tobias Lorenz6aadf822008-10-28 08:48:27 -030093
94If you just want to test audio (very poor quality):
Mauro Carvalho Chehabb4a41382016-07-17 19:52:48 -030095
96.. code-block:: none
97
98 cat /dev/dsp1 > /dev/dsp
Tobias Lorenz6aadf822008-10-28 08:48:27 -030099
Alexey Klimov4db45af2013-02-11 19:04:51 -0300100If you use sox + OSS try:
Mauro Carvalho Chehabb4a41382016-07-17 19:52:48 -0300101
102.. code-block:: none
103
104 sox -2 --endian little -r 96000 -t oss /dev/dsp1 -t oss /dev/dsp
105
Alexey Klimov4db45af2013-02-11 19:04:51 -0300106or using sox + alsa:
Mauro Carvalho Chehabb4a41382016-07-17 19:52:48 -0300107
108.. code-block:: none
109
110 sox --endian little -c 2 -S -r 96000 -t alsa hw:1 -t alsa -r 96000 hw:0
Tobias Lorenz6aadf822008-10-28 08:48:27 -0300111
112If you use arts try:
Mauro Carvalho Chehabb4a41382016-07-17 19:52:48 -0300113
114.. code-block:: none
115
116 arecord -D hw:1,0 -r96000 -c2 -f S16_LE | artsdsp aplay -B -
Tobias Lorenz6aadf822008-10-28 08:48:27 -0300117
Tobias Lorenz00ec8d02009-02-12 14:55:45 -0300118If you use mplayer try:
Mauro Carvalho Chehabb4a41382016-07-17 19:52:48 -0300119
120.. code-block:: none
121
122 mplayer -radio adevice=hw=1.0:arate=96000 \
123 -rawaudio rate=96000 \
124 radio://<frequency>/capture
Tobias Lorenz6aadf822008-10-28 08:48:27 -0300125
126Module Parameters
Mauro Carvalho Chehabb4a41382016-07-17 19:52:48 -0300127-----------------
128
Tobias Lorenz6aadf822008-10-28 08:48:27 -0300129After loading the module, you still have access to some of them in the sysfs
130mount under /sys/module/radio_si470x/parameters. The contents of read-only files
131(0444) are not updated, even if space, band and de are changed using private
132video controls. The others are runtime changeable.
133
134
135Errors
Mauro Carvalho Chehabb4a41382016-07-17 19:52:48 -0300136------
137
Tobias Lorenz6aadf822008-10-28 08:48:27 -0300138Increase tune_timeout, if you often get -EIO errors.
139
140When timed out or band limit is reached, hw_freq_seek returns -EAGAIN.
141
142If you get any errors from snd_usb_audio, please report them to the ALSA people.
143
144
145Open Issues
Mauro Carvalho Chehabb4a41382016-07-17 19:52:48 -0300146-----------
147
Tobias Lorenz6aadf822008-10-28 08:48:27 -0300148V4L minor device allocation and parameter setting is not perfect. A solution is
149currently under discussion.
150
151There is an USB interface for downloading/uploading new firmware images. Support
152for it can be implemented using the request_firmware interface.
153
154There is a RDS interrupt mode. The driver is already using the same interface
155for polling RDS information, but is currently not using the interrupt mode.
156
157There is a LED interface, which can be used to override the LED control
158programmed in the firmware. This can be made available using the LED support
159functions in the kernel.
160
161
162Other useful information and links
Mauro Carvalho Chehabb4a41382016-07-17 19:52:48 -0300163----------------------------------
164
Tobias Lorenz6aadf822008-10-28 08:48:27 -0300165http://www.silabs.com/usbradio