N900 FM radio receiver

The N900 FM receiver allows the reception of broadcast FM radio signals using the headset/headphones as an antenna.

Contents

Hardware

The FM radio is part of the 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 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

Kernel

The FM receiver is implemented as a video4linux radio device by the bcm2048 module. This controls the receiver over the N900 Hardware Bus I2C.

It appears as device /dev/radio1.

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 

The module is only loaded when the radio is used.

User

The only (?) userspace application that uses the FM receiver is FMRadio.