7.20. Silicon Labs Si470x 調頻收音機接收器驅動¶
版權所有 © 2009 Tobias Lorenz <tobias.lorenz@gmx.net>
7.20.1. 來自 Silicon Labs 的資訊¶
Silicon Laboratories 是收音機 IC 的製造商,這些 IC 如今在手機中是最常用的收音機接收器。它們通常透過 I2C 連線。但 SiLabs 也提供了一個參考設計,該設計將此 IC 與一個小型微控制器 C8051F321 整合,以形成一個 USB 收音機。此參考設計的一部分還包括二進位制和原始碼的收音機應用程式。該軟體還包含自動韌體升級到最新版本的功能。有關這些的資訊可在此處下載:http://www.silabs.com/usbradio
7.20.2. 支援的 IC¶
以下 IC 具有非常相似的暫存器集,因此它們已被或將在某個時候被驅動程式支援:
Si4700: 調頻收音機接收器
Si4701: 調頻收音機接收器,支援 RDS
Si4702: 調頻收音機接收器
Si4703: 調頻收音機接收器,支援 RDS
Si4704: 調頻收音機接收器,無需外接天線
Si4705: 調頻收音機接收器,無需外接天線,支援 RDS,數字 I/O
- Si4706: 增強型 FM RDS/TMC 收音機接收器,無需外接天線,支援 RDS
支援
Si4707: 帶 SAME 解碼器的專用氣象波段收音機接收器,支援 RDS
Si4708: 最小的調頻接收器
Si4709: 最小的調頻接收器,支援 RDS
有關這些的更多資訊可在此處下載:http://www.silabs.com/products/mcu/Pages/USBFMRadioRD.aspx
7.20.3. 支援的 USB 裝置¶
目前已知以下帶有 Silicon Labs si470x 晶片的 USB 收音機(廠商:產品)可以正常工作:
10c4:818a: Silicon Labs USB FM Radio 參考設計
06e1:a155: ADS/Tech FM Radio Receiver (原 Instant FM Music) (RDX-155-EF)
1b80:d700: KWorld USB FM Radio SnapMusic Mobile 700 (FM700)
10c5:819a: Sanei Electric, Inc. FM USB Radio (以 DealExtreme.com PCear 銷售)
7.20.4. 軟體¶
測試通常在 Debian/testing 下使用大多數應用程式進行
fmtools - 用於管理 FM 調諧器卡的實用程式
gnomeradio - GNOME 桌面的 FM 收音機調諧器
gradio - GTK FM 收音機調諧器
kradio - 舒適的 KDE 收音機應用程式
radio - 基於 ncurses 的收音機應用程式
mplayer - Linux 的終極電影播放器
v4l2-ctl - 命令列 video4linux 實用程式集合
例如,你可以使用
v4l2-ctl -d /dev/radio0 --set-ctrl=volume=10,mute=0 --set-freq=95.21 --all
還有一個 libv4l 庫可以使用。它將包含一個頻率搜尋功能,可以透過使用 radio-si470x 中的硬體功能實現,也可以透過實現我們目前在每個上述程式中都有的功能來實現。總有一天,收音機程式應該會使用 libv4l。
對於 RDS 資訊處理,目前有一個專案正在進行中:http://rdsd.berlios.de/
目前還沒有將 TMC 語句轉換為人類可讀形式的專案。
7.20.5. 音訊收聽¶
USB 音訊由 ALSA 的 snd_usb_audio 模組提供。建議同時選擇 SND_USB_AUDIO,因為這是從收音機獲取聲音所必需的。為了收聽,你需要重定向聲音,例如使用以下命令之一。請根據你的需要調整音訊裝置(/dev/dsp* 和 hw:x,x)。
如果你只想測試音訊(質量非常差)
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
7.20.6. 模組引數¶
載入模組後,你仍然可以透過 sysfs 掛載點 /sys/module/radio_si470x/parameters 訪問其中一些引數。只讀檔案 (0444) 的內容不會更新,即使使用私有影片控制更改了 space, band 和 de。其他引數是執行時可更改的。
7.20.7. 錯誤¶
如果你經常遇到 -EIO 錯誤,請增加 tune_timeout。
當超時或達到頻段限制時,hw_freq_seek 返回 -EAGAIN。
如果你從 snd_usb_audio 收到任何錯誤,請向 ALSA 團隊報告。
7.20.8. 開放問題¶
V4L 次要裝置分配和引數設定不完善。目前正在討論解決方案。
有一個用於下載/上傳新韌體映像的 USB 介面。可以透過 request_firmware 介面實現對其的支援。
有一個 RDS 中斷模式。驅動程式已經使用相同的介面輪詢 RDS 資訊,但目前未使用中斷模式。
有一個 LED 介面,可用於覆蓋韌體中程式設計的 LED 控制。這可以透過核心中的 LED 支援功能來實現。