Back to home page

OSCL-LXR

 
 

    


0001 .. SPDX-License-Identifier: GPL-2.0
0002 
0003 .. include:: <isonum.txt>
0004 
0005 The Silicon Labs Si470x FM Radio Receivers driver
0006 =================================================
0007 
0008 Copyright |copy| 2009 Tobias Lorenz <tobias.lorenz@gmx.net>
0009 
0010 
0011 Information from Silicon Labs
0012 -----------------------------
0013 
0014 Silicon Laboratories is the manufacturer of the radio ICs, that nowadays are the
0015 most often used radio receivers in cell phones. Usually they are connected with
0016 I2C. But SiLabs also provides a reference design, which integrates this IC,
0017 together with a small microcontroller C8051F321, to form a USB radio.
0018 Part of this reference design is also a radio application in binary and source
0019 code. The software also contains an automatic firmware upgrade to the most
0020 current version. Information on these can be downloaded here:
0021 http://www.silabs.com/usbradio
0022 
0023 
0024 Supported ICs
0025 -------------
0026 
0027 The following ICs have a very similar register set, so that they are or will be
0028 supported somewhen by the driver:
0029 
0030 - Si4700: FM radio receiver
0031 - Si4701: FM radio receiver, RDS Support
0032 - Si4702: FM radio receiver
0033 - Si4703: FM radio receiver, RDS Support
0034 - Si4704: FM radio receiver, no external antenna required
0035 - Si4705: FM radio receiver, no external antenna required, RDS support, Dig I/O
0036 - Si4706: Enhanced FM RDS/TMC radio receiver, no external antenna required, RDS
0037           Support
0038 - Si4707: Dedicated weather band radio receiver with SAME decoder, RDS Support
0039 - Si4708: Smallest FM receivers
0040 - Si4709: Smallest FM receivers, RDS Support
0041 
0042 More information on these can be downloaded here:
0043 http://www.silabs.com/products/mcu/Pages/USBFMRadioRD.aspx
0044 
0045 
0046 Supported USB devices
0047 ---------------------
0048 
0049 Currently the following USB radios (vendor:product) with the Silicon Labs si470x
0050 chips are known to work:
0051 
0052 - 10c4:818a: Silicon Labs USB FM Radio Reference Design
0053 - 06e1:a155: ADS/Tech FM Radio Receiver (formerly Instant FM Music) (RDX-155-EF)
0054 - 1b80:d700: KWorld USB FM Radio SnapMusic Mobile 700 (FM700)
0055 - 10c5:819a: Sanei Electric, Inc. FM USB Radio (sold as DealExtreme.com PCear)
0056 
0057 
0058 Software
0059 --------
0060 
0061 Testing is usually done with most application under Debian/testing:
0062 
0063 - fmtools - Utility for managing FM tuner cards
0064 - gnomeradio - FM-radio tuner for the GNOME desktop
0065 - gradio - GTK FM radio tuner
0066 - kradio - Comfortable Radio Application for KDE
0067 - radio - ncurses-based radio application
0068 - mplayer - The Ultimate Movie Player For Linux
0069 - v4l2-ctl - Collection of command line video4linux utilities
0070 
0071 For example, you can use:
0072 
0073 .. code-block:: none
0074 
0075         v4l2-ctl -d /dev/radio0 --set-ctrl=volume=10,mute=0 --set-freq=95.21 --all
0076 
0077 There is also a library libv4l, which can be used. It's going to have a function
0078 for frequency seeking, either by using hardware functionality as in radio-si470x
0079 or by implementing a function as we currently have in every of the mentioned
0080 programs. Somewhen the radio programs should make use of libv4l.
0081 
0082 For processing RDS information, there is a project ongoing at:
0083 http://rdsd.berlios.de/
0084 
0085 There is currently no project for making TMC sentences human readable.
0086 
0087 
0088 Audio Listing
0089 -------------
0090 
0091 USB Audio is provided by the ALSA snd_usb_audio module. It is recommended to
0092 also select SND_USB_AUDIO, as this is required to get sound from the radio. For
0093 listing you have to redirect the sound, for example using one of the following
0094 commands. Please adjust the audio devices to your needs (/dev/dsp* and hw:x,x).
0095 
0096 If you just want to test audio (very poor quality):
0097 
0098 .. code-block:: none
0099 
0100         cat /dev/dsp1 > /dev/dsp
0101 
0102 If you use sox + OSS try:
0103 
0104 .. code-block:: none
0105 
0106         sox -2 --endian little -r 96000 -t oss /dev/dsp1 -t oss /dev/dsp
0107 
0108 or using sox + alsa:
0109 
0110 .. code-block:: none
0111 
0112         sox --endian little -c 2 -S -r 96000 -t alsa hw:1 -t alsa -r 96000 hw:0
0113 
0114 If you use arts try:
0115 
0116 .. code-block:: none
0117 
0118         arecord -D hw:1,0 -r96000 -c2 -f S16_LE | artsdsp aplay -B -
0119 
0120 If you use mplayer try:
0121 
0122 .. code-block:: none
0123 
0124         mplayer -radio adevice=hw=1.0:arate=96000 \
0125                 -rawaudio rate=96000 \
0126                 radio://<frequency>/capture
0127 
0128 Module Parameters
0129 -----------------
0130 
0131 After loading the module, you still have access to some of them in the sysfs
0132 mount under /sys/module/radio_si470x/parameters. The contents of read-only files
0133 (0444) are not updated, even if space, band and de are changed using private
0134 video controls. The others are runtime changeable.
0135 
0136 
0137 Errors
0138 ------
0139 
0140 Increase tune_timeout, if you often get -EIO errors.
0141 
0142 When timed out or band limit is reached, hw_freq_seek returns -EAGAIN.
0143 
0144 If you get any errors from snd_usb_audio, please report them to the ALSA people.
0145 
0146 
0147 Open Issues
0148 -----------
0149 
0150 V4L minor device allocation and parameter setting is not perfect. A solution is
0151 currently under discussion.
0152 
0153 There is an USB interface for downloading/uploading new firmware images. Support
0154 for it can be implemented using the request_firmware interface.
0155 
0156 There is a RDS interrupt mode. The driver is already using the same interface
0157 for polling RDS information, but is currently not using the interrupt mode.
0158 
0159 There is a LED interface, which can be used to override the LED control
0160 programmed in the firmware. This can be made available using the LED support
0161 functions in the kernel.
0162 
0163 
0164 Other useful information and links
0165 ----------------------------------
0166 
0167 http://www.silabs.com/usbradio