162306a36Sopenharmony_ci.. SPDX-License-Identifier: GPL-2.0
262306a36Sopenharmony_ci
362306a36Sopenharmony_ci.. include:: <isonum.txt>
462306a36Sopenharmony_ci
562306a36Sopenharmony_ciThe Silicon Labs Si470x FM Radio Receivers driver
662306a36Sopenharmony_ci=================================================
762306a36Sopenharmony_ci
862306a36Sopenharmony_ciCopyright |copy| 2009 Tobias Lorenz <tobias.lorenz@gmx.net>
962306a36Sopenharmony_ci
1062306a36Sopenharmony_ci
1162306a36Sopenharmony_ciInformation from Silicon Labs
1262306a36Sopenharmony_ci-----------------------------
1362306a36Sopenharmony_ci
1462306a36Sopenharmony_ciSilicon Laboratories is the manufacturer of the radio ICs, that nowadays are the
1562306a36Sopenharmony_cimost often used radio receivers in cell phones. Usually they are connected with
1662306a36Sopenharmony_ciI2C. But SiLabs also provides a reference design, which integrates this IC,
1762306a36Sopenharmony_citogether with a small microcontroller C8051F321, to form a USB radio.
1862306a36Sopenharmony_ciPart of this reference design is also a radio application in binary and source
1962306a36Sopenharmony_cicode. The software also contains an automatic firmware upgrade to the most
2062306a36Sopenharmony_cicurrent version. Information on these can be downloaded here:
2162306a36Sopenharmony_cihttp://www.silabs.com/usbradio
2262306a36Sopenharmony_ci
2362306a36Sopenharmony_ci
2462306a36Sopenharmony_ciSupported ICs
2562306a36Sopenharmony_ci-------------
2662306a36Sopenharmony_ci
2762306a36Sopenharmony_ciThe following ICs have a very similar register set, so that they are or will be
2862306a36Sopenharmony_cisupported somewhen by the driver:
2962306a36Sopenharmony_ci
3062306a36Sopenharmony_ci- Si4700: FM radio receiver
3162306a36Sopenharmony_ci- Si4701: FM radio receiver, RDS Support
3262306a36Sopenharmony_ci- Si4702: FM radio receiver
3362306a36Sopenharmony_ci- Si4703: FM radio receiver, RDS Support
3462306a36Sopenharmony_ci- Si4704: FM radio receiver, no external antenna required
3562306a36Sopenharmony_ci- Si4705: FM radio receiver, no external antenna required, RDS support, Dig I/O
3662306a36Sopenharmony_ci- Si4706: Enhanced FM RDS/TMC radio receiver, no external antenna required, RDS
3762306a36Sopenharmony_ci	  Support
3862306a36Sopenharmony_ci- Si4707: Dedicated weather band radio receiver with SAME decoder, RDS Support
3962306a36Sopenharmony_ci- Si4708: Smallest FM receivers
4062306a36Sopenharmony_ci- Si4709: Smallest FM receivers, RDS Support
4162306a36Sopenharmony_ci
4262306a36Sopenharmony_ciMore information on these can be downloaded here:
4362306a36Sopenharmony_cihttp://www.silabs.com/products/mcu/Pages/USBFMRadioRD.aspx
4462306a36Sopenharmony_ci
4562306a36Sopenharmony_ci
4662306a36Sopenharmony_ciSupported USB devices
4762306a36Sopenharmony_ci---------------------
4862306a36Sopenharmony_ci
4962306a36Sopenharmony_ciCurrently the following USB radios (vendor:product) with the Silicon Labs si470x
5062306a36Sopenharmony_cichips are known to work:
5162306a36Sopenharmony_ci
5262306a36Sopenharmony_ci- 10c4:818a: Silicon Labs USB FM Radio Reference Design
5362306a36Sopenharmony_ci- 06e1:a155: ADS/Tech FM Radio Receiver (formerly Instant FM Music) (RDX-155-EF)
5462306a36Sopenharmony_ci- 1b80:d700: KWorld USB FM Radio SnapMusic Mobile 700 (FM700)
5562306a36Sopenharmony_ci- 10c5:819a: Sanei Electric, Inc. FM USB Radio (sold as DealExtreme.com PCear)
5662306a36Sopenharmony_ci
5762306a36Sopenharmony_ci
5862306a36Sopenharmony_ciSoftware
5962306a36Sopenharmony_ci--------
6062306a36Sopenharmony_ci
6162306a36Sopenharmony_ciTesting is usually done with most application under Debian/testing:
6262306a36Sopenharmony_ci
6362306a36Sopenharmony_ci- fmtools - Utility for managing FM tuner cards
6462306a36Sopenharmony_ci- gnomeradio - FM-radio tuner for the GNOME desktop
6562306a36Sopenharmony_ci- gradio - GTK FM radio tuner
6662306a36Sopenharmony_ci- kradio - Comfortable Radio Application for KDE
6762306a36Sopenharmony_ci- radio - ncurses-based radio application
6862306a36Sopenharmony_ci- mplayer - The Ultimate Movie Player For Linux
6962306a36Sopenharmony_ci- v4l2-ctl - Collection of command line video4linux utilities
7062306a36Sopenharmony_ci
7162306a36Sopenharmony_ciFor example, you can use:
7262306a36Sopenharmony_ci
7362306a36Sopenharmony_ci.. code-block:: none
7462306a36Sopenharmony_ci
7562306a36Sopenharmony_ci	v4l2-ctl -d /dev/radio0 --set-ctrl=volume=10,mute=0 --set-freq=95.21 --all
7662306a36Sopenharmony_ci
7762306a36Sopenharmony_ciThere is also a library libv4l, which can be used. It's going to have a function
7862306a36Sopenharmony_cifor frequency seeking, either by using hardware functionality as in radio-si470x
7962306a36Sopenharmony_cior by implementing a function as we currently have in every of the mentioned
8062306a36Sopenharmony_ciprograms. Somewhen the radio programs should make use of libv4l.
8162306a36Sopenharmony_ci
8262306a36Sopenharmony_ciFor processing RDS information, there is a project ongoing at:
8362306a36Sopenharmony_cihttp://rdsd.berlios.de/
8462306a36Sopenharmony_ci
8562306a36Sopenharmony_ciThere is currently no project for making TMC sentences human readable.
8662306a36Sopenharmony_ci
8762306a36Sopenharmony_ci
8862306a36Sopenharmony_ciAudio Listing
8962306a36Sopenharmony_ci-------------
9062306a36Sopenharmony_ci
9162306a36Sopenharmony_ciUSB Audio is provided by the ALSA snd_usb_audio module. It is recommended to
9262306a36Sopenharmony_cialso select SND_USB_AUDIO, as this is required to get sound from the radio. For
9362306a36Sopenharmony_cilisting you have to redirect the sound, for example using one of the following
9462306a36Sopenharmony_cicommands. Please adjust the audio devices to your needs (/dev/dsp* and hw:x,x).
9562306a36Sopenharmony_ci
9662306a36Sopenharmony_ciIf you just want to test audio (very poor quality):
9762306a36Sopenharmony_ci
9862306a36Sopenharmony_ci.. code-block:: none
9962306a36Sopenharmony_ci
10062306a36Sopenharmony_ci	cat /dev/dsp1 > /dev/dsp
10162306a36Sopenharmony_ci
10262306a36Sopenharmony_ciIf you use sox + OSS try:
10362306a36Sopenharmony_ci
10462306a36Sopenharmony_ci.. code-block:: none
10562306a36Sopenharmony_ci
10662306a36Sopenharmony_ci	sox -2 --endian little -r 96000 -t oss /dev/dsp1 -t oss /dev/dsp
10762306a36Sopenharmony_ci
10862306a36Sopenharmony_cior using sox + alsa:
10962306a36Sopenharmony_ci
11062306a36Sopenharmony_ci.. code-block:: none
11162306a36Sopenharmony_ci
11262306a36Sopenharmony_ci	sox --endian little -c 2 -S -r 96000 -t alsa hw:1 -t alsa -r 96000 hw:0
11362306a36Sopenharmony_ci
11462306a36Sopenharmony_ciIf you use arts try:
11562306a36Sopenharmony_ci
11662306a36Sopenharmony_ci.. code-block:: none
11762306a36Sopenharmony_ci
11862306a36Sopenharmony_ci	arecord -D hw:1,0 -r96000 -c2 -f S16_LE | artsdsp aplay -B -
11962306a36Sopenharmony_ci
12062306a36Sopenharmony_ciIf you use mplayer try:
12162306a36Sopenharmony_ci
12262306a36Sopenharmony_ci.. code-block:: none
12362306a36Sopenharmony_ci
12462306a36Sopenharmony_ci	mplayer -radio adevice=hw=1.0:arate=96000 \
12562306a36Sopenharmony_ci		-rawaudio rate=96000 \
12662306a36Sopenharmony_ci		radio://<frequency>/capture
12762306a36Sopenharmony_ci
12862306a36Sopenharmony_ciModule Parameters
12962306a36Sopenharmony_ci-----------------
13062306a36Sopenharmony_ci
13162306a36Sopenharmony_ciAfter loading the module, you still have access to some of them in the sysfs
13262306a36Sopenharmony_cimount under /sys/module/radio_si470x/parameters. The contents of read-only files
13362306a36Sopenharmony_ci(0444) are not updated, even if space, band and de are changed using private
13462306a36Sopenharmony_civideo controls. The others are runtime changeable.
13562306a36Sopenharmony_ci
13662306a36Sopenharmony_ci
13762306a36Sopenharmony_ciErrors
13862306a36Sopenharmony_ci------
13962306a36Sopenharmony_ci
14062306a36Sopenharmony_ciIncrease tune_timeout, if you often get -EIO errors.
14162306a36Sopenharmony_ci
14262306a36Sopenharmony_ciWhen timed out or band limit is reached, hw_freq_seek returns -EAGAIN.
14362306a36Sopenharmony_ci
14462306a36Sopenharmony_ciIf you get any errors from snd_usb_audio, please report them to the ALSA people.
14562306a36Sopenharmony_ci
14662306a36Sopenharmony_ci
14762306a36Sopenharmony_ciOpen Issues
14862306a36Sopenharmony_ci-----------
14962306a36Sopenharmony_ci
15062306a36Sopenharmony_ciV4L minor device allocation and parameter setting is not perfect. A solution is
15162306a36Sopenharmony_cicurrently under discussion.
15262306a36Sopenharmony_ci
15362306a36Sopenharmony_ciThere is an USB interface for downloading/uploading new firmware images. Support
15462306a36Sopenharmony_cifor it can be implemented using the request_firmware interface.
15562306a36Sopenharmony_ci
15662306a36Sopenharmony_ciThere is a RDS interrupt mode. The driver is already using the same interface
15762306a36Sopenharmony_cifor polling RDS information, but is currently not using the interrupt mode.
15862306a36Sopenharmony_ci
15962306a36Sopenharmony_ciThere is a LED interface, which can be used to override the LED control
16062306a36Sopenharmony_ciprogrammed in the firmware. This can be made available using the LED support
16162306a36Sopenharmony_cifunctions in the kernel.
16262306a36Sopenharmony_ci
16362306a36Sopenharmony_ci
16462306a36Sopenharmony_ciOther useful information and links
16562306a36Sopenharmony_ci----------------------------------
16662306a36Sopenharmony_ci
16762306a36Sopenharmony_cihttp://www.silabs.com/usbradio
168