Latest revision |
Your text |
Line 3: |
Line 3: |
| ==Hardware== | | ==Hardware== |
| | | |
- | The FM radio is part of the [[N900 Hardware Bluetooth|Bluetooth chip]]. It receives FM radio signals using the headset or earphones plugged into the 3.5 mm socket as an antenna (actually arbitrary headset/headphones, or any other cable, for this purpose). | + | The FM radio is part of the [[N900 Hardware Bluetooth|Bluetooth chip]]. It receives FM radio signals using the headset or earphones plugged into the 3.5 mm socket as an antenna. |
- | | + | |
- | The audio output of the FM radio is connected to the audio codec chip.
| + | |
- | This can be routed directly to the headphones - but possibly not the speaker due to concerns about speaker damage due to the speakers not being able to handle bass.
| + | |
- | | + | |
- | The existing software that uses the radio passes the audio through the CPU, implementing a software filter for speaker protection when the speakers are enabled.
| + | |
| | | |
| ==Software== | | ==Software== |
- |
| |
- | ===Kernel===
| |
- |
| |
- | The FM receiver is implemented as a video4linux radio device by the [http://mxr.maemo.org/fremantle/source/kernel/drivers/media/radio/radio-bcm2048.c bcm2048] module. This controls the receiver over the [[N900 Hardware Bus I2C]].
| |
- |
| |
- | It appears as device <code>/dev/radio1</code>.
| |
- | <pre>
| |
- | v4l2-ctl --all -d /dev/radio1
| |
- | Driver Info:
| |
- | Driver name : bcm2048
| |
- | Card type : Broadcom bcm2048 FM Radio Recei
| |
- | Bus info : I2C: 0x22
| |
- | Driver version: 1
| |
- | Capabilities : 0x00050400
| |
- | Tuner
| |
- | Radio
| |
- | Video input : 0
| |
- | Frequency: 1518400 (94.900000 MHz)
| |
- | Video Standard = 0x00000000
| |
- | Streaming Parameters Video Capture:
| |
- | Frames per second: 25.000 (25/1)
| |
- | Read buffers : 0
| |
- | Tuner:
| |
- | Name : FM Receiver
| |
- | Capabilities : 62.5 Hz stereo
| |
- | Frequency range : 87.5 MHz - 108.0 MHz
| |
- | Signal strength/AFC : 0%/0
| |
- | Current audio mode : stereo
| |
- | Available subchannels: stereo
| |
- | </pre>
| |
- |
| |
- | The module is only loaded when the radio is used.
| |
- |
| |
- | It is also exposed under sysfs.
| |
- | <pre>
| |
- | /sys/class/i2c-adapter/i2c-3/3-0022# ls
| |
- | audio_route fm_rssi rds_data
| |
- | bus fm_search_mode_direction rds_pi
| |
- | dac_output fm_search_rssi_threshold rds_pi_mask
| |
- | driver fm_search_tune_mode rds_pi_match
| |
- | fm_af_frequency modalias rds_ps
| |
- | fm_best_tune_mode mute rds_rt
| |
- | fm_carrier_error name rds_wline
| |
- | fm_deemphasis power region
| |
- | fm_frequency power_state region_bottom_frequency
| |
- | fm_hi_lo_injection rds region_top_frequency
| |
- | fm_rds_flags rds_b_block_mask subsystem
| |
- | fm_rds_mask rds_b_block_match uevent
| |
- | </pre>
| |
- | The sysfs interface allows configuration of region (which affects frequency ranges and other parameters).
| |
- |
| |
- | ===User===
| |
- |
| |
- | There are 3 userspace application that uses the FM receiver:
| |
- |
| |
- | [http://maemo.org/packages/view/fmradio/ FMRadio],
| |
- | [http://maemo.org/packages/view/qradio/ QRadio]
| |
- | and
| |
- | [http://maemo.org/packages/view/cfmradio/ C FM Radio]
| |
| | | |
| [[Category:N900 Hardware]] | | [[Category:N900 Hardware]] |