← Documents Documentation/admin-guide/media/si470x.rst GitHub 원문 ↗

Linux 6.18.37 · Administration / Media

Silicon Labs Si470x FM Radio Receivers

Si4700-Si4709 FM radio receiver의 I2C·USB 구성, 지원 device, tuning·audio routing, parameter, error와 미해결 기능을 설명합니다.

Source pathDocumentation/admin-guide/media/si470x.rst
Source versionLinux v6.18.37
TranslationDUJINLABS 전문 번역 + 해설

요약·해설과 원문, 전문 번역을 서로 분리했습니다. API 이름, symbol, source path는 원문 표기를 사용합니다.

1. 요약·해설

원문의 핵심 논리와 kernel programming 관점의 보충 설명입니다. 아래의 전문 번역과는 별도로 작성했습니다.

Driver 동작 경로

si470x.rst:1-167

Si470x 계열은 I2C IC 또는 USB reference design 형태로 연결됩니다. Radio tuning은 V4L2 경로가, sound는 ALSA USB audio 경로가 담당하며 RDS와 firmware·LED 확장 지점도 별도로 존재합니다.

영역핵심 interface운영 포인트
Radio interfaceI2C 또는 C8051F321을 포함한 USB reference designSi4700-Si4709 계열 register set을 다룹니다.
Tuning/dev/radio0, v4l2-ctl, libv4lFrequency 설정과 hardware seek 경로를 제공합니다.
Audiosnd_usb_audio, SND_USB_AUDIOOSS·ALSA·aRts·mplayer로 USB audio를 route합니다.
RDSPolling 지원, interrupt mode 미사용RDS 처리 project는 있으나 TMC 문장 변환 project는 없습니다.
Runtime·error/sys/module/radio_si470x/parameterstune_timeout, -EIO, -EAGAIN과 read-only parameter 동작을 확인합니다.

2. 영어 원문 전체

번역 기준이 된 Linux v6.18.37 원문입니다. 줄 번호는 이 버전의 파일 좌표입니다.

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

3. 한국어 전문 번역

영어 원문의 문단 순서와 의미를 유지한 전체 번역입니다. 코드, 함수명, symbol과 URL은 원문 표기를 유지합니다.

Si470x driver 소개

1-8

이 문서는 GPL-2.0 라이선스를 따릅니다. Copyright |copy| 2009 Tobias Lorenz <tobias.lorenz@gmx.net>.

Silicon Labs 정보

9-21

Silicon Laboratories는 현재 휴대전화에서 널리 사용되는 radio IC 제조사입니다. 보통 IC는 I2C로 연결됩니다. SiLabs는 이 IC와 작은 C8051F321 microcontroller를 통합해 USB radio를 구성하는 reference design도 제공합니다.

이 reference design에는 binary와 source code 형태의 radio application이 포함됩니다. Software에는 최신 version으로 자동 firmware upgrade하는 기능도 들어 있습니다. 관련 정보는 다음 위치에서 내려받을 수 있습니다.

지원 IC

22-43

다음 IC는 매우 유사한 register set을 사용하므로 driver가 현재 지원하거나 향후 지원할 수 있습니다.

IC기능
Si4700FM radio receiver
Si4701FM radio receiver, RDS support
Si4702FM radio receiver
Si4703FM radio receiver, RDS support
Si4704FM radio receiver, external antenna 불필요
Si4705FM radio receiver, external antenna 불필요, RDS support, Dig I/O
Si4706Enhanced FM RDS/TMC radio receiver, external antenna 불필요, RDS support
Si4707SAME decoder를 갖춘 dedicated weather band radio receiver, RDS support
Si4708Smallest FM receiver
Si4709Smallest FM receiver, RDS support

지원 USB device

44-55

Silicon Labs si470x chip을 사용하며 현재 동작이 확인된 USB radio의 vendor:product ID는 다음과 같습니다.

Vendor:productUSB radio
10c4:818aSilicon Labs USB FM Radio Reference Design
06e1:a155ADS/Tech FM Radio Receiver (formerly Instant FM Music) (RDX-155-EF)
1b80:d700KWorld USB FM Radio SnapMusic Mobile 700 (FM700)
10c5:819aSanei Electric, Inc. FM USB Radio (sold as DealExtreme.com PCear)

Software

56-85

Test는 보통 Debian/testing에서 다음 application을 사용해 수행합니다.

  • fmtools - FM tuner card 관리 utility
  • gnomeradio - GNOME desktop용 FM-radio tuner
  • gradio - GTK FM radio tuner
  • kradio - KDE용 radio application
  • radio - ncurses 기반 radio application
  • mplayer - Linux용 media player
  • v4l2-ctl - Video4Linux command-line utility 모음

예를 들어 다음 명령을 사용할 수 있습니다.

v4l2-ctl -d /dev/radio0 --set-ctrl=volume=10,mute=0 --set-freq=95.21 --all

libv4l library도 사용할 수 있습니다. 이 library에는 radio-si470x처럼 hardware 기능을 이용하거나, 현재 위 각 program에 따로 구현된 방식으로 frequency seek를 수행하는 function이 들어갈 예정입니다. 장기적으로 radio program은 libv4l을 사용해야 합니다.

RDS 정보를 처리하는 project는 다음 위치에서 진행 중입니다.

현재 TMC 문장을 사람이 읽을 수 있게 만드는 project는 없습니다.

Audio 청취

86-126

USB Audio는 ALSA `snd_usb_audio` module이 제공합니다. Radio에서 sound를 받으려면 `SND_USB_AUDIO`도 선택하는 것이 좋습니다. 청취하려면 sound를 redirect해야 하며, 다음 명령 중 하나를 사용할 수 있습니다. `/dev/dsp*`와 `hw:x,x` audio device는 환경에 맞게 조정하십시오.

Audio만 간단히 시험하려면 다음을 사용합니다. 품질은 매우 낮습니다.

cat /dev/dsp1 > /dev/dsp

sox와 OSS를 사용한다면 다음을 시도하십시오.

sox -2 --endian little -r 96000 -t oss /dev/dsp1 -t oss /dev/dsp

sox와 ALSA를 사용한다면 다음을 사용하십시오.

sox --endian little -c 2 -S -r 96000 -t alsa hw:1 -t alsa -r 96000 hw:0

aRts를 사용한다면 다음을 시도하십시오.

arecord -D hw:1,0 -r96000 -c2 -f S16_LE | artsdsp aplay -B -

mplayer를 사용한다면 다음을 시도하십시오.

mplayer -radio adevice=hw=1.0:arate=96000 \
	-rawaudio rate=96000 \
	radio://<frequency>/capture

Module parameter

127-134

Module을 load한 뒤에도 sysfs mount의 `/sys/module/radio_si470x/parameters` 아래에서 일부 parameter에 접근할 수 있습니다. Read-only file(0444)의 내용은 private video control로 `space`, `band`, `de`가 바뀌어도 update되지 않습니다. 나머지 parameter는 runtime에 변경할 수 있습니다.

Error

135-145

`-EIO` error가 자주 발생하면 `tune_timeout`을 늘리십시오.

Timeout이 발생하거나 band limit에 도달하면 `hw_freq_seek`는 `-EAGAIN`을 반환합니다.

`snd_usb_audio`에서 error가 발생하면 ALSA 담당자에게 report하십시오.

미해결 사항

146-161
  • V4L minor device 할당과 parameter 설정은 아직 완전하지 않으며 해결책을 논의 중입니다.
  • 새 firmware image를 download/upload하는 USB interface가 있습니다. `request_firmware` interface를 사용해 지원을 구현할 수 있습니다.
  • RDS interrupt mode가 있습니다. Driver는 RDS 정보를 polling할 때 이미 같은 interface를 사용하지만 현재 interrupt mode는 사용하지 않습니다.
  • Firmware에 programming된 LED control을 override할 수 있는 LED interface가 있습니다. Kernel의 LED support function으로 이를 노출할 수 있습니다.