This page lists the details of the various hardware components of the N900 and provides additional information about how it is supported by the Linux kernel, open and closed-source binaries provided in Maemo 5 distribution.
If you do not find the information you are looking for here, take a look at the Wikipedia page dedicated to the device, the page available on maemo wiki or drop me an email.
The page is under construction. Some items need more polishing.
Display

The N900 has a 3.5 inch touch-sensitive widescreen display with a 800x480 pixel resolution (105 pixels/cm, 267 ppi). The touchscreen is resistive (i.e. not multi-touch).
For comparison purpose, the N810 has a 4.1 inch resistive touchscreen with the same resolution. The iPhone has a 3.5 inch capacitive touchscreen with a 480x320 capacitive (multi-touch capable) touchscreen.
The 16M colors TFT LCD panel is a Sony ACX565AKM. As discussed on talk.maemo.org, it seems that the format of the part number is indeed referenced on a product list page of Sony web site:
ACX1 7042 A3 K4 M5
- 1 : Sony low temperature LCD mark
- 2 : Product number : 300 to 499 (Transmission) / 700 to 999 (Reflection)
- 3 : Improvement mark
- 4 : Classification for display
- 5 : Mount, module format mark
The panel is supported by panel-acx565akm driver (drivers/video/omap2/displays/panel-acx565akm.c), which is enabled by PANEL_ACX565AKM option:
config PANEL_ACX565AKM tristate "ACX565AKM LCD Panel" depends on OMAP2_DSS_SDI select BACKLIGHT_CLASS_DEVICE help LCD Panel used in Rover
oslo:/sys/class/backlight/acx565akm# dmesg | grep acx [ 3.074279] omapfb: acx565akm rev 8b LCD detected oslo:~# ls -l /sys/class/backlight/acx565akm/ -r--r--r-- 1 root root 4096 Dec 8 21:15 actual_brightness -rw-r--r-- 1 root root 4096 Dec 8 21:16 bl_power -rw-r--r-- 1 root root 4096 Dec 8 21:15 brightness -r--r--r-- 1 root root 4096 Dec 8 20:10 cabc_available_modes -rw-r--r-- 1 root root 4096 Dec 8 20:10 cabc_mode lrwxrwxrwx 1 root root 0 Dec 8 20:10 device -> ../../../devices/platform/omap2_mcspi.1/spi1.2 -r--r--r-- 1 root root 4096 Dec 8 20:10 max_brightness drwxr-xr-x 2 root root 0 Dec 8 21:16 power lrwxrwxrwx 1 root root 0 Dec 8 20:10 subsystem -> ../../backlight -rw-r--r-- 1 root root 4096 Jan 1 1970 uevent
If you wonder, CABC stands for Content Adaptive Backlight Control. It allows reducing backlight or brightness levels depending on the image being shown to save power. For instance, if the image contains only dark pixels, the brightness of the backlight can be reduced. This will naturally boost the pixel value. Available modes are:
oslo:/sys/class/backlight/acx565akm# cat cabc_available_modes off ui still-image moving-image
Touchscreen controller
The touchscreen controller is a Texas Instrument TSC2005. The datasheet is available here. It is supported by tsc2005 driver (drivers/input/touchscreen/tsc2005.c) which is specifically being pushed upstream by Nokia developers for the N900 (here).
oslo:/proc# dmesg | grep TSC2005 [ 6.308837] TSC2005 driver initializing [ 6.324615] input: TSC2005 touchscreen as /class/input/input3
Processor
The N900 is powered by a Texas Instruments OMAP 3430 ARM Cortex-A8 running at 600 MHz.
The OMAP 3430 consists of:
- ARM Cortex A8 processor running at 600Mhz: designed in 65-nm CMOS process
- Imagination Technologies PowerVR SGX530 GPU: supports OpenGL ES 1.1/2.0, OpenVG 1.1, OpenGL 2.0/3.0, DirectX 9/10.1 and OpenCL (
- TMS320C64x DSP/ISP: Digital/Image Signal Processor running at 430 Mhz. A technical overview is available here. A product bulletin is available here
- IVA 2+ accelerator: as described on TI web site, a second generation power-optimized version of the imaging video and audio accelerator used in TI's DaVinci technology. Enables multi-standard (MPEG-4, H.264, WMV) encode and decode at DVD up to HD resolutions. IVA 2+ provides H.264-based video at greater than CIF resolutions.
A 6 pages product bulletin is available here if you are interested by additional details. There is also an interesting presentation of Cortex A8 Processor here
Below is what Linux kernel reports for the processor:
oslo:~# cat /proc/cpuinfo Processor : ARMv7 Processor rev 3 (v7l) BogoMIPS : 249.96 Features : swp half thumb fastmult vfp edsp neon vfpv3 CPU implementer : 0x41 CPU architecture: 7 CPU variant : 0x1 CPU part : 0xc08 CPU revision : 3 Hardware : Nokia RX-51 board Revision : 2101 Serial : 0000000000000000
oslo:~# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies 600000 550000 500000 250000
The BogoMIPS value reported above corresponds to the one matching the current frequency at which the processor is running. Here, 250MHz. Below is the list of frequencies reported by the device:
arno@oslo:~# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies 600000 550000 500000 250000
Regarding the features reported by the processor:
- swp: XXX
- half: XXX
- thumb: the processor in fact supports thumb-2, which is an extension of thumb
- fastmult: XXX
- edsp: XXX
- neon: supports the NEON instruction set. There are interesting information on the way it can be used by gcc on http://elinux.org/BeagleBoard
- vfp: VFP (Vector Floating Point) technology is a coprocessor extension to the ARM architecture. It provides low-cost single-precision and double-precision floating-point computation.
- vfpv3: the ARM 3430 supports VFPv3 floating point instruction set, used for single/double precision scalar operations. This is used by gcc for C floating point operations on float and double.
Memory
The N900 has 256 MB of RAM.
Mass storage
The Nokia N900 has 32 GB eMMC and 256 MB NAND non-removable storage. A microSDHC extension slot (not directly accessible, i.e. it requires removing the battery cover, though, as you can see on top left corner of following picture, and top right corner of the one after).


The 256 MB NAND is formatted using UBIFS. It contains the bootloader, the kernel and root filesystem.
The 32GB eMMC is split into 3 partitions:
- 768 MB of swap
- 2 GB mounted as /home (ext3).
- 25 GB of free space mounted as /home/user/MyDocs (VFAT). When the device is put in mass storage mode, this partition is the exported partition.
oslo:~# cat /proc/partitions major minor #blocks name 179 0 31264768 mmcblk0 179 1 28315648 mmcblk0p1 179 2 2097152 mmcblk0p2 179 3 786432 mmcblk0p3 oslo:~# df -h Filesystem Size Used Available Use% Mounted on rootfs 227.9M 196.3M 27.4M 88% / ubi0:rootfs 227.9M 196.3M 27.4M 88% / tmpfs 1.0M 88.0k 936.0k 9% /tmp tmpfs 256.0k 80.0k 176.0k 31% /var/run none 10.0M 72.0k 9.9M 1% /dev tmpfs 64.0M 4.0k 64.0M 0% /dev/shm /dev/mmcblk0p2 2.0G 566.2M 1.3G 30% /home /dev/mmcblk0p1 27.0G 1.6G 25.4G 6% /home/user/MyDocs
Power management/I2C
The N900 includes a Texas Instruments TWL4030 which acts as an all-in-one audio and power manager. The TWL4030 is pin-compatible with the TPS65590 chip
The key features advertised on TI's site include:
- Audio
- Integrated Voice and Audio Codecs
- Dual Stereo up-link and down-link
- Stereo and Mono support
- Audio Amplifiers
- Analog/Digital Mixing
- Speaker drivers
- Digital MICs support
- Battery Charger
- Regulated supply support
- USB Charging
- Car Kit
- Back-up battery switch
- Clocks
- 32KHz Oscillator and integrated RTC
- Transceivers
- High Speed USB2.0 On-The-Go transceiver
- Drivers
- LED drivers
- Vibrator drivers
If you are interested by OMAP Power Management under Linux, there is a very interesting page on elinux.org.
Linux support for the various parts (and associated features) of the TWL4030 is spread among various subsytems. The list below is for the 2.6.28-omap1 kernel found on the N900 (Note that twl4030 support has been merged upstream in Linux kernel 2.6.32):
arno@small:~/kernel-2.6.28$ find . -name '*twl4030*.[ch]' ./arch/arm/mach-omap2/mmc-twl4030.h ./arch/arm/mach-omap2/mmc-twl4030.c ./arch/arm/mach-omap2/twl4030-generic-scripts.h ./arch/arm/mach-omap2/twl4030-generic-scripts.c ./sound/soc/codecs/twl4030.c ./sound/soc/codecs/twl4030.h ./drivers/input/keyboard/omap-twl4030keypad.c # Keypad ./drivers/input/keyboard/twl4030-keypad.h ./drivers/usb/otg/twl4030-usb.c # USB On-The-Go (Not avail. on N900) ./drivers/rtc/rtc-twl4030.c # RTC ./drivers/mfd/twl4030-power.c ./drivers/mfd/twl4030-irq.c ./drivers/mfd/twl4030-core.c ./drivers/regulator/twl4030-regulator.c ./drivers/gpio/twl4030-gpio.c ./drivers/watchdog/twl4030_wdt.c ./drivers/i2c/chips/twl4030-madc.c ./drivers/i2c/chips/twl4030-poweroff.c ./drivers/i2c/chips/twl4030-pwrbutton.c # Power button ./drivers/power/twl4030_bci_battery.c ./drivers/leds/leds-twl4030-vibra.c # Vibrator ./include/config/rtc/drv/twl4030.h ./include/config/regulator/twl4030.h ./include/config/gpio/twl4030.h ./include/config/keyboard/twl4030.h ./include/linux/i2c/twl4030-madc.h ./include/linux/i2c/twl4030.h
Audio
The audio features of the devices are provided by the TWL4030 Audio and Power Mangement chip described above.
Audio support is enabled in kernel configuration by SND_OMAP_SOC_RX51 option:
Symbol: SND_OMAP_SOC_RX51 [=y] Prompt: SoC Audio support for Nokia RX51 Defined at sound/soc/omap/Kconfig:17 Depends on: SOUND && !M68K && SND && SND_SOC && SND_OMAP_SOC && MACH_NOKIA_RX51 Location: -> Device Drivers -> Sound card support (SOUND [=y]) -> Advanced Linux Sound Architecture (SND [=y]) -> ALSA for SoC audio support (SND_SOC [=y]) Selects: OMAP_MCBSP && SND_OMAP_SOC_MCBSP && SND_SOC_TLV320AIC3X && TPA6130A2
Here is what /proc/ reports:
oslo:~# ls -l /proc/asound/ lrwxrwxrwx 1 root root 5 Dec 29 20:02 RX51 -> card0 dr-xr-xr-x 6 root root 0 Dec 29 20:02 card0 -r--r--r-- 1 root root 0 Dec 29 20:02 cards -r--r--r-- 1 root root 0 Dec 29 20:02 devices -r--r--r-- 1 root root 0 Dec 29 20:02 pcm -r--r--r-- 1 root root 0 Dec 29 20:02 timers -r--r--r-- 1 root root 0 Dec 29 20:02 version oslo:~# cat /proc/asound/cards 0 [RX51 ]: tlv320aic3x - RX51 RX51 (tlv320aic3x) oslo:~# cat /proc/asound/devices 0: [ 0] : control 16: [ 0- 0]: digital audio playback 17: [ 0- 1]: digital audio playback 24: [ 0- 0]: digital audio capture 25: [ 0- 1]: digital audio capture 33: : timer
Flash Torch
A dual LED ADP 1653 flash controller from Analog Devices. The associated kernel module is adp1653 (drivers/media/video/adp1653.c). At the time of writing, it is not yet available upstream. On provided 2.6.28-omap1 kernel, support is enabled by the following option:
config VIDEO_ADP1653 tristate "ADP1653 flash support" depends on I2C && VIDEO_V4L2 ---help--- This is a driver for the ADP1653 flash. It is used for example in Nokia RX51.
There is a dedicated page on maemo wiki about this flash torch.
Autofocus
an AD5820 from Analog Devices. The associated kernel module is ad5820 over I2C bus. The associated kernel module is ad5820 (drivers/media/video/ad5820.c). At the time of writing, it is not yet available upstream. On provided 2.6.28-omap1 kernel, support is enabled by the following option.
config VIDEO_AD5820 tristate "AD5820 lens voice coil support" depends on I2C && VIDEO_V4L2 ---help--- This is a driver for the AD5820 camera lens voice coil. It is used for example in Nokia RX51.
Programmable LED Driver
The LED Driver is a National Semiconductor LP5523. It is a 9-channel LED driver. The component's datasheet can be found here.
It is supported by leds-lp5523 driver (drivers/leds/leds-lp5523.c). It is controlled by the following kernel configuration option:
Symbol: LEDS_LP5523 [=m] Prompt: LP5523 LED driver chip Defined at drivers/leds/Kconfig:195 Depends on: NEW_LEDS && LEDS_CLASS && I2C Location: -> Device Drivers -> LED Support (NEW_LEDS [=y])
Control and status information are exported via sysfs:
oslo:~# ls -l /sys/class/leds/ drwxr-xr-x 3 root root 0 Dec 19 20:52 lp5523:b drwxr-xr-x 3 root root 0 Dec 19 20:52 lp5523:g drwxr-xr-x 3 root root 0 Dec 20 00:32 lp5523:kb1 drwxr-xr-x 3 root root 0 Dec 20 00:32 lp5523:kb2 drwxr-xr-x 3 root root 0 Dec 20 00:32 lp5523:kb3 drwxr-xr-x 3 root root 0 Dec 20 00:32 lp5523:kb4 drwxr-xr-x 3 root root 0 Dec 20 00:32 lp5523:kb5 drwxr-xr-x 3 root root 0 Dec 20 00:32 lp5523:kb6 drwxr-xr-x 3 root root 0 Dec 19 20:52 lp5523:r drwxr-xr-x 3 root root 0 Dec 20 02:00 twl4030:vibrator
The backlight under the keyboard is provided via 6 indepedent lights. Control and status information for those lights are found in /sys/class/leds/lp5523:kb*
oslo:~# ls -l /sys/class/leds/lp5523:kb1/ -rw-r--r-- 1 root root 4096 Dec 20 02:34 brightness lrwxrwxrwx 1 root root 0 Dec 20 02:21 device -> ../../i2c-adapter/i2c-2/2-0032 -rw-rw-rw- 1 root root 4096 Dec 20 02:22 led_current drwxr-xr-x 2 root root 0 Dec 20 02:21 power lrwxrwxrwx 1 root root 0 Dec 20 02:21 subsystem -> ../../leds -rw-r--r-- 1 root root 4096 Dec 20 02:21 trigger -rw-r--r-- 1 root root 4096 Dec 20 02:21 uevent
The following loop sequentially sets the brightness of each of the 6 lights located under the keyboard to 255 (i.e. on) and then back to 0 (i.e. off). If you do it in the dark, you should see the position of each light.
oslo:~# cat kb-backlights.sh #! /bin/sh for i in 1 2 3 4 5 6 ; do echo 255 > /sys/class/leds/lp5523:kb${i}/brightness ; sleep 1 ; echo 0 > /sys/class/leds/lp5523:kb${i}/brightness ; done

The remaining lp5523:r, lp5523:g and lp5523:b folders in /sys/class/leds/ are use for control and status information of the color components of the status led (circled in yellow on previous picture).
The following script switches the leds on in order (the red and green leds seem stronger than the blue one):
oslo:~# cat leds-on.sh #! /bin/bash RED=/sys/class/leds/lp5523:r/brightness GREEN=/sys/class/leds/lp5523:g/brightness BLUE=/sys/class/leds/lp5523:b/brightness while true; do for led in $RED $GREEN $BLUE; do echo 255 > $led ; sleep 1 ; echo 0 > $led done done
There is a very complete page on Maemo wiki about LED patterns.
802.11 Wireless LAN
The wifi chipset is a Texas Instruments WL1251. A product bulletin for the WL1251 is available here. The chipset supports the common 802.11 b/g but also
- 802.11e extensions for QoS
- 802.11i security extensions (also called WPA2 or RSN)
- 802.11d extensions for regulatory domains
- 802.11k extensions for Radio Resource Management
The chipset is supported by wl12xx driver and enabled by the following option:
Symbol: WL1251 [=m] Prompt: TI wl1251 support Defined at drivers/net/wireless/wl12xx/Kconfig:8 Depends on: NETDEVICES && !S390 && WL12XX && SPI_MASTER && GENERIC_HARDIRQS Location: -> Device Drivers -> Network device support (NETDEVICES [=y]) -> Wireless LAN -> TI wl12xx driver support (WL12XX [=y]) Selects: FW_LOADER && CRC7
wl12xx has been pushed upstream by Kalle Valo (commit 2f01a1f58889fbfeb68b1bc1b52e4197f3333490) and then later improved.
Battery

The device is powered by a BL-5J 3.7V 1320mAh Li-Ion battery. This is not the same battery as the one which powered the N810: a BP-4L 3.7V 1500 mAh Li-Polymer.
The BL-5J is less powerful than the BP-4L but it is also less expansive (at the time of writing, 25€ vs. 35€ on the French Nokia online store)
Size and weight
- Volume: Approx 113cc
- Dimensions: 110.9mm × 59.8mm × 18mm (19.55mm at thickest part)
- Weight: Approx 181g
USB

The N900 has a a High-Speed USB 2.0 Micro-B connector provided for data synchronization, mass storage mode (client) and battery charging.
Contrary to the N810, the Nokia N900 does not support USB On-The-Go. This is a hardware limitation.
There is an interesting page on maemo wiki describing the configuration of USB networking for the N900.
A/V Connector
The N900 has an 3.5mm A/V connector. It is located on the right side of the device, between the stylus and the lock/unlock button, as you can see on following picture.

TV (PAL/SECAM or NTSC) and audio output can be obtained using (provided) Nokia CA-75U cable. The cable has a 3.5 mm jack with 4 rings (ground, audio left and right, and composite video) on one side and 3 RCA connectors on the other side (yellow for composite, red and white for audio):

The kind of output (PAL/SECAM or NTSC) can be selected via the paramater control panel (TV-out menu).
The N900 also comes with a WH-205 stereo headset. The headset includes an answer/end call button. It is provided with three sets of soft earpads. The headset also serves as FM antenna when the phone acts as receiver (the transmitter uses an internal antenna).
Accelerometers
The N900 has builtin STMicroelectronics LIS302DL accelerometers. The datasheet of the component is available here.
There is a dedicated page on Maemo wiki which describes how to access and use the information they provide.
The accelerometers are handled by lis302dl kernel driver (drivers/i2c/chips/lis302dl.c), not to be mistaken with lis3lv02d driver (drivers/hwmon/lis3lv02d.c). Kernel configuration option to enable the driver is provided below:
Symbol: LIS302DL [=m] Prompt: STMicroelectronics LIS302DL Acceleration Sensor Driver Defined at drivers/i2c/chips/Kconfig:208 Depends on: I2C Location: -> Device Drivers -> I2C support (I2C [=y]) -> Miscellaneous I2C Chip support
Bluetooth
The bluetooth chipset is a Broadcom BCM2048. (The chipset also provides the FM/RDS receiver support for the device).
All the Bluetooth subsystem options are enabled in N900 kernel configuration:
--- Bluetooth subsystem support <M> L2CAP protocol support <M> SCO links support <M> RFCOMM protocol support [*] RFCOMM TTY support <M> BNEP protocol support [*] Multicast filter support [*] Protocol filter support <M> HIDP protocol support Bluetooth device drivers --->
Support for bluetooth is enabled by hci_h4p module, enabled by the following kernel configuration option:
Symbol: BT_HCIH4P [=m] Prompt: HCI driver with H4 Nokia extensions Defined at drivers/bluetooth/Kconfig:195 Depends on: NET && BT && ARCH_OMAP Location: -> Networking support (NET [=y]) -> Bluetooth subsystem support (BT [=m]) -> Bluetooth device drivers
The firmware loaded by the module is located (as expected) in /lib/firmware:
oslo:~# ls -l /lib/firmware/bcmfw.bin -rw-r--r-- 1 root root 9642 Sep 21 12:48 /lib/firmware/bcmfw.bin
Below is what hciconfig reports for the device (after enabling bluetooth via the GUI or hciconfig hci0 up):
oslo:~# hciconfig -a hci0: Type: UART BD Address: 34:7E:39:XX:XX:XX ACL MTU: 1017:4 SCO MTU: 64:1 UP RUNNING PSCAN RX bytes:2537 acl:0 sco:0 events:58 errors:0 TX bytes:20838 acl:0 sco:0 commands:58 errors:0 Features: 0xbf 0xee 0x0f 0xc6 0x98 0x3d 0x59 0x82 Packet type: DM1 DM3 DM5 DH1 DH3 DH5 HV1 HV3 Link policy: RSWITCH HOLD SNIFF PARK Link mode: SLAVE ACCEPT Name: 'oslo' Class: 0x58020c Service Classes: Capturing, Object Transfer, Telephony Device Class: Phone, Smart phone HCI Ver: 2.1 (0x4) HCI Rev: 0xac LMP Ver: 2.1 (0x4) LMP Subver: 0x410b Manufacturer: Broadcom Corporation (15)
The devices supports bluetooth 2.1 +EDR with HFP, HSP, A2DP, AVRCP, FTP and OPP
FM Receiver
FM/RDS receiver support is provided by the Broadcom BCM2048 (which also provide the bluetooth support for the device).
Kernel support for the device is enabled by the following option:
Symbol: I2C_BCM2048 [=m] Prompt: Broadcom BCM2048 FM Radio Receiver support Defined at drivers/media/radio/Kconfig:390 Depends on: HAS_IOMEM && RADIO_ADAPTERS && I2C && VIDEO_V4L2 Location: -> Device Drivers -> Multimedia devices -> Radio Adapters (RADIO_ADAPTERS [=y])
No software is currently installed on the device to use the FM receiver but some are available as intallable apps.
FM Transmitter
The FM transmitter support is provided by Silicon Labs Si4713. chipset.
Linux support is provided by fmtx_si4713 module (drivers/media/radio/si4713.c). It can be enabled via the following kernel configuration option:
Symbol: I2C_SI4713 [=m] Prompt: Silicon Labs Si4713 FM Radio Transmitter support Defined at drivers/media/radio/Kconfig:342 Depends on: HAS_IOMEM && RADIO_ADAPTERS && I2C && VIDEO_V4L2 Location: -> Device Drivers -> Multimedia devices -> Radio Adapters (RADIO_ADAPTERS [=y])
The FM Transmitter has an internal antenna and supports frequencies from at least 76.00Mhz to 108.00MHz (see si4713.c for more details; it seems to depend on the region).
Nonetheless, the FM Transmitter GUI limits settings from 88.1MHz to 107.9 MHz (at least, on the french version of the N900).
After having compiled v4l2-ctl and having uploaded it to the device (the FM transmitter being enabled and configured on 89.60MHz):
oslo:~# v4l2-ctl -d /dev/radio0 -l --all Driver Info: Driver name : radio-si4713 Card type : Silicon Labs Si4713 FM Radio Tr Bus info : I2C: 0x63 Driver version: 1 Capabilities : 0x00010000 Tuner Video input : 0 Frequency: 1433600 (89.600000 MHz) Video Standard = 0x00000000 Streaming Parameters Video Capture: Frames per second: 25.000 (25/1) Read buffers : 0 Tuner: Name : FM Transmitter 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 mute (bool) : default=1 value=0
The driver for the si4713 has been merged upstream in 2.6.32 kernel and some documentation for it is now available in kernel Documentation/ folder.
Disclaimer: Note however that the driver shipped with the 2.6.28-omap1 kernel running on the N900 is very different from the one in 2.6.32. Consider the content of 2.6.32 documentation file an introduction to what the hardware is capable of and what will be possible using standard interfaces when 2.6.32 will be available for the N900:
arno@small:/usr/src/linux-2.6.32$ head -20 Documentation/video4linux/si4713.txt Driver for I2C radios for the Silicon Labs Si4713 FM Radio Transmitters Copyright (c) 2009 Nokia Corporation Contact: Eduardo Valentin <eduardo.valentin@nokia.com> Information about the Device ============================ This chip is a Silicon Labs product. It is a I2C device, currently on 0x63 address. Basically, it has transmission and signal noise level measurement features. The Si4713 integrates transmit functions for FM broadcast stereo transmission. The chip also allows integrated receive power scanning to identify low signal power FM channels. The chip is programmed using commands and responses. There are also several properties which can change the behavior of this chip. Users must comply with local regulations on radio frequency (RF) transmission. ...
There is a page on the N900 FM Radio Transmitter on Maemo Wiki.
Infrared (IR)

Infrared support is provided by lirc_rx51 module (drivers/input/lirc/lirc_rx51.c). It can be enabled via the following configuration option:
Symbol: LIRC_RX51 [=m] Prompt: RX51 CIR transmitter Defined at drivers/input/lirc/Kconfig:19 Depends on: !S390 && INPUT && INPUT_LIRC && LIRC_DEV && ARCH_OMAP Location: -> Device Drivers -> Input device support -> Generic input layer (needed for keyboard, mouse, ...) (INPUT [=y]) -> Linux Infrared Remote Control IR receiver/transmitter drivers (INPUT_LIRC [=y]) -> LIRC device loadable module support (LIRC_DEV [=m])
The IR sensor is located on the top of the device near the main camera button. It is circled in yellow on previous picture.
Headphone Amplifier
The headphone amplifier is a Texas Instruments TPA6130a2. The datasheet is available here.
It is supported by tpa6130a2 module (drivers/i2c/chips/tpa6130a2.c). Kernel configuration option is the following:
Symbol: TPA6130A2 [=y] Prompt: TPA6130a2 headphone amplifier support Defined at drivers/i2c/chips/Kconfig:56 Depends on: I2C Location: -> Device Drivers -> I2C support (I2C [=y]) -> Miscellaneous I2C Chip support Selected by: SND_OMAP_SOC_RX51 && SOUND && !M68K && SND && SND_SOC && SND_OMAP_SOC && MACH_NOKIA_RX51
Digital Audio Data Serial Interface
The N900 has a Texas Instruments TLV320AIC3X (do not know precisely which model). It is supported by tlv320aic3x module (sound/soc/codecs/tlv320aic3x.c). Support is enabled by the following kernel configuration option:Symbol: SND_SOC_TLV320AIC3X [=y] Selected by: SND_DAVINCI_SOC_EVM && SOUND && !M68K && SND && SND_SOC ...
Main camera

The main camera is a Toshiba ET8EK8. The datasheet of the ET8EK8 is not publicly available. It is supported by et8k8 module (drivers/media/video/et8ek8.c) and enabled by following kernel configuration option:
Symbol: VIDEO_ET8EK8 [=m] Prompt: ET8EK8 camera sensor support Defined at drivers/media/video/Kconfig:308 Depends on: HAS_IOMEM && VIDEO_CAPTURE_DRIVERS && !VIDEO_HELPER_CHIPS_AUTO && I2C && VIDEO_V4L2 Location: -> Device Drivers -> Multimedia devices -> Video capture adapters (VIDEO_CAPTURE_DRIVERS [=y]) -> Autoselect pertinent enc/dec and other helper chips (VIDEO_HELPER_CHIPS_AUTO [=n]) -> Encoders/decoders and other helper chips Selects: VIDEO_SMIAREGS Selected by: MACH_NOKIA_RX51 && ARCH_OMAP3 && ARCH_OMAP34XX && VIDEO_OMAP3 && VIDEO_HELPER_CHIPS_AUTO
The firmware for the camera is located in /lib/firmware:
oslo:/lib/firmware# ls -l et8* -rw-r--r-- 1 root root 1708 Sep 4 11:15 et8ek8-0002.bin
The camera is a V4L2 device available as /dev/video0
The main camera is associated with Carl Zeiss optics, Tessar lens.

The N900 main (rear) camera specification are below:
- 5 megapixel camera (2584 × 1938 pixels), 3.5 mega-pixel 1920x1080 pixels.
- Image formats: JPEG
- CMOS sensor, Carl Zeiss optics, Tessar lens
- 3 × digital zoom
- Video recording file format: .mp4; codec: MPEG-4
- Video recording at up to 848 × 480 pixels (WVGA) and up to 25fps
- Video playback file formats: .mp4, .avi, .wmv, .3gp; codecs: H.264, MPEG-4, Xvid, WMV, H.263
Camera button

The camera button is circled in orange on previous picture.
rx51_camera_btn module (arch/arm/mach-omap2/rx51_camera_btn.c)
Symbol: RX51_CAMERA_BUTTON [=n] Prompt: RX51 Camera Button Defined at arch/arm/mach-omap2/Kconfig:157 Depends on: VIDEO_MACH_RX51 Location: -> System Type
XXX is it used by the N900? It is not enabled in rx51_defconfig
Front camera

The front camera of the N900 is a ST Microelectronics VS6555. It is circled in green on previous picture. I have cached here a copy of the component's datasheet.
The camera has a 640x480 VGA resolution (0.3 megapixel.
XXX Find which module handles it. vs6555 appears in smia-sensor module.
GPS
The GPS of the N900 is a TI NaviLink™ NL5350. It supports:- Integrated GPS, Assisted-GPS (via supl.nokia.com), and Cell-based receivers
- Pre-loaded Ovi Maps application
- Automatic geotagging
XXX See http://wiki.maemo.org/N900_Hardware_GPS
Vibrator
The vibrator is driven by the TWL4030 Audio and Power Mangement chip described above.
oslo:~# ls -l /sys/class/leds/ drwxr-xr-x 3 root root 0 Dec 19 20:52 lp5523:b drwxr-xr-x 3 root root 0 Dec 19 20:52 lp5523:g drwxr-xr-x 3 root root 0 Dec 20 00:32 lp5523:kb1 drwxr-xr-x 3 root root 0 Dec 20 00:32 lp5523:kb2 drwxr-xr-x 3 root root 0 Dec 20 00:32 lp5523:kb3 drwxr-xr-x 3 root root 0 Dec 20 00:32 lp5523:kb4 drwxr-xr-x 3 root root 0 Dec 20 00:32 lp5523:kb5 drwxr-xr-x 3 root root 0 Dec 20 00:32 lp5523:kb6 drwxr-xr-x 3 root root 0 Dec 19 20:52 lp5523:r drwxr-xr-x 3 root root 0 Dec 20 02:00 twl4030:vibrator
# ls /sys/class/leds/twl4030:vibrator/ brightness device power subsystem trigger uevent
RTC
The RTC is provided by the TWL4030 Audio and Power Mangement chip described above.
It is enabled by the following kernel configuration option:
Symbol: RTC_DRV_TWL4030 [=m] Prompt: TI TWL4030/TWL5030/TPS659x0 Defined at drivers/rtc/Kconfig:249 Depends on: I2C && RTC_CLASS && TWL4030_CORE Location: -> Device Drivers -> Real Time Clock (RTC_CLASS [=m])
Ambient Light Sensor (ALS)

The N900 has a Taos TSL2563 ambient light sensor (it is not clear which specific variation of the TSL2563 is in the N900). It is circled in blue on previous picture. A datasheet is available here
oslo:~# dmesg | grep 2563 [ 337.825592] tsl2563 2-0029: model 7, rev. 0
It is handled by the tsl2563 module (drivers/i2c/chips/tsl2563.c). Support is enabled by the following kernel configuration option:
Symbol: SENSORS_TSL2563 [=m] Prompt: Taos TSL2563 ambient light sensor Defined at drivers/i2c/chips/Kconfig:191 Depends on: I2C && HWMON Location: -> Device Drivers -> I2C support (I2C [=y]) -> Miscellaneous I2C Chip support
The module has a sysfs interface which provides various information:
oslo:~# ls -l /sys/bus/i2c/drivers/tsl2563/2-0029/ -r--r--r-- 1 root root 4096 Dec 29 22:12 adc0 -r--r--r-- 1 root root 4096 Dec 29 22:12 adc1 lrwxrwxrwx 1 root root 0 Dec 29 22:12 bus -> ../../../../bus/i2c -rw-r--r-- 1 root root 4096 Dec 29 15:51 calib0 -rw-r--r-- 1 root root 4096 Dec 29 15:51 calib1 lrwxrwxrwx 1 root root 0 Dec 29 22:12 driver -> ../../../../bus/i2c/drivers/tsl2563 lrwxrwxrwx 1 root root 0 Dec 29 22:12 hwmon:hwmon1 -> ../../../hwmon/hwmon1 -r--r--r-- 1 root root 4096 Dec 29 19:22 lux -r--r--r-- 1 root root 4096 Dec 29 22:12 modalias -r--r--r-- 1 root root 4096 Dec 29 22:12 name drwxr-xr-x 2 root root 0 Dec 29 22:12 power lrwxrwxrwx 1 root root 0 Dec 29 22:12 subsystem -> ../../../../bus/i2c -rw-r--r-- 1 root root 4096 Dec 29 22:12 uevent
And yes, the lux entry returns normalized illuminance in lux value as reported by the device. Here is what it says respectively about my living room ambient light, in the dark and at a one meter distance from light bulb:
oslo:~# cat /sys/bus/i2c/drivers/tsl2563/2-0029/lux 29 oslo:~# cat /sys/bus/i2c/drivers/tsl2563/2-0029/lux 0 oslo:~# cat /sys/bus/i2c/drivers/tsl2563/2-0029/lux 1046
Proximity sensor

The proximity sensor is circled in red on previous picture. It is used to lock the touch screen when the device is near the head during phone calls so that there are no accidental touch interactions from the cheek
Keyboard and additional buttons
The N900 has a 38 keys sliding backlit keyboard. Various layouts are available (AZERTY, QWERTY, ...). Here is an AZERTY one:

The device also has additional buttons on the top ...:
- A +/- button, which is either used (depending on the application) for volume or zoom purposes (circled in green on following picture).
- A power button (circled in red on following picture). When the device is running and unlocked, it is used to spawn a menu providing access to useful shortcuts (pressing it twice locks the screen and keyboard). When running with the device locked, it provides a sliding button on the touchscreen to unlock the device.
- A camera button: circled in orange on following picture, located near the IR sensor, when pressed gently, it first triggers autofocus. When pressed fully, it then takes the picture. Support is described below.

... and another button on the right side:
- A screen lock/unlock button: located near the audio/video plug, this sliding button can be used to lock/unlock the screen. See following picture.

Phone/3G
The Nokia N900 supports EGSM 850/900/1800/1900 and WCDMA 2100/1700/900. The Nokia N900 is a 3GPP Release 5 terminal supporting WCDMA/HSDPA and GPRS data bearers.
For 2G and 2.5G networks, the Nokia N900 is a Class A GPRS, multislot class 32, maximum speed of up to 107/64.2 kbps (DL/UL). EDGE maximum speed is 296/177.6 kbps (DL/UL)
For WCDMA 900, 1700/2100, 2100 the maximum speed is PS 384/384 kbps (DL/UL); HSPA maximum speed is 10 Mbps (DL).
The Nokia N900 has Dual Transfer Mode (DTM) support for simultaneous voice and packet data connection in GSM/EDGE networks. The device supports EDGE class A, multislot class 32, with a maximum speed of 296/177.6 kbps (DL/UL)
Nokia High Efficiency Charger (AC-10)

The N900 is provided with an Nokia AC-10 charger (AC-10E, for Europe).
Input/Output current information:
- Input: AC 100/240V / 50-60Hz
- Output: DC 5.0V / 1200 mA
The charger has a long cable (1.8m) terminated by a micro USB connector.
Nokia Stereo Headset (WH-205)

See comments above about N900 A/V connector.
Video out cable (CA-75U)

See comments above about N900 A/V connector.
CA-101 (Nokia USB to micro-USB cable)

This may sounds stupid but (unlike the N810) the device does not come with a USB to micro USB cable, i.e. you need to buy one separately if you want to flash the device, access the storage space from your PC, ...
I use the CA-101 which was provided with my N810 to do that but you may find cheaper alternatives (at the time of writing, it is sold for 14,90€ on the french Nokia store).
Nokia charger adapter (CA-146C)



The N900 is delivered with a CA-146C Charger Adapter. It converts power from a commmon 2mm or 3.5mm nokia charger to a microUSB connection.
Note that the adapter cannot be used with all combinations of chargers and devices. Before using it with your charger and Nokia device, check the support pages on Nokia web site to verify it is ok.
Here is an excerpt of what I found on the site when looking for information on the compatibility of the charger ("Does the Nokia Charger Adapter CA-146C work with all Nokia chargers and car chargers?"):
The Nokia Charger Adapter CA-146C can be used to convert power from above 500mA, 5V charging resource to uUSB standard charging interface. For example the following chargers are compatible: Nokia AC-4, AC-5, DC-4, DC-9, ACP-12/AC-10C with CA-101. Some features of the Nokia Charger Adapter CA-146C may not be compatible with all chargers or uUSB enabled devices. Also, all chargers that are compatible with CA-146C may not be compatible with all devices that are compatible with the adapter. For example, to be able use CA-146C with Nokia N97 use only AC-4 or AC-5 charger. For more information about compatible chargers, see the user guide of your device, or www.nokia.com.
Some people have reported the CA-146C is overheating when charging their device (not a N900 though, AFAICT). Someone has even published that picture. This may be the result of using incompatible chargers and devices with the CA-146C adapter. I have not experienced it myself but it is worth being cautious when using the adapter (after having checked Nokia web site about compatibility).