Nokia N900 Commented Hardware specs

 

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

N900 Overview

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

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:

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:

 


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).

N900 back opened (microSDHC slot, battery, rear camera) N900 main camera details

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:

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:

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

 

N900 status led, phone speaker, proximity sensor, front camera and light sensor

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

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

N900 back opened (microSDHC slot, battery, rear camera)

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

 


USB

N900 left side (left speaker, micro USB plug)

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.

N900 A/V plug, screen lock/unlock buttton, right stereo speaker

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):

Nokia CA-75U Video-out cable

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)

N900 IR sensor, rear camera button, power button, +/- volume button

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

N900 back

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.

N900 main camera

The N900 main (rear) camera specification are below:

 


Camera button

N900 IR sensor, rear camera button, power button, +/- volume 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

N900 status led, phone speaker, proximity sensor, front camera and light sensor

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:

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)

N900 status led, phone speaker, proximity sensor, front camera and light sensor

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

N900 status led, phone speaker, proximity sensor, front camera and light 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:

N900 AZERTY keyboard

The device also has additional buttons on the top ...:

N900 IR sensor, rear camera button, power button, +/- volume button

... and another button on the right side:

N900 A/V plug, screen lock/unlock buttton, right stereo speaker

 


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)

Nokia AC-10E High Efficiency Charger

The N900 is provided with an Nokia AC-10 charger (AC-10E, for Europe).

Input/Output current information:

The charger has a long cable (1.8m) terminated by a micro USB connector.

 


Nokia Stereo Headset (WH-205)

Nokia WH-205 Stereo Headset

See comments above about N900 A/V connector.

 


Video out cable (CA-75U)

Nokia CA-75U Video-out cable

See comments above about N900 A/V connector.

 


CA-101 (Nokia USB to micro-USB cable)

Nokia CA-101 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)

Nokia CA-146C Charger Adapter (recto) Nokia CA-146C Charger Adapter (verso) Nokia CA-146C Charger Adapter (connectors)

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).