N900 Hardware Subsystems

There are many interacting hardware subsystems in the N900.

These can be split roughly into several areas.


[edit] Audio

[edit] Software

Most of the audio on the N900 is handled by gstreamer and PulseAudio. See the API documentation on sound

[edit] Main Speakers

[edit] Earpiece

[edit] Headphones

The headphone amplifier is a TPA6130a2 manufactured by Texas Instruments.

[edit] Composite out

[edit] FM radio transmitter

Main article: N900 FM radio transmitter

[edit] FM radio receiver

Main article: N900 FM radio receiver

[edit] Bluetooth audio

[edit] Video

The GPU is a SGX530 licensed from Imagination Technologies.

[edit] Display

[edit] Built in LCD

Main article: N900 LCD panel

[edit] Composite out

[edit] Front camera (VGA)

Main article: N900 VGA camera

[edit] Rear camera (5MP)

Main article: N900 camera sensor

[edit] Rear camera autofocus

Main article: N900 Hardware Autofocus

[edit] Rear camera LED flash

Main article: N900 Hardware Flash Torch

[edit] Rear camera warning light

[edit] Rear camera shutter

[edit] USB

Main article: N900 Hardware USB

[edit] USB socket

Main article: N900 Hardware USB Socket

[edit] User interaction

[edit] Touchscreen

The touch screen controller is a TSC 2005.

[edit] Accelerometer

Main article: N900 accelerometer

[edit] Switches

[edit] Lock Switch

[edit] Headset Switch

[edit] Jack Switch

[edit] Camera Button

[edit] Power Button

[edit] Volume control

[edit] Rear cover presence switch

[edit] Camera cover

[edit] Keyboard

Matrix keyboard connected to row[7:0] x col[7:0] dedicated matrixscanner IO at GAIA.

All QCOL traces and QROW7 trace are equipped with ESD protection against static discharge.

Each switch under a key is connected to one col and one row trace

(QCOL-> __7__ __ 6__ __5__ __4__ __3__ __ 2__ __1__ __0_)
QROW4: Shft Fn CTRL Rght Down T
QROW2: C X Z CR Up . E
QROW0: S A Del , P O Q

For example pressing W connects QCOL0 to QROW1.
The matrix controller applies a certain level (say +3V) to first col QCOL0 and checks which rows are going to same level (QROW1 for 'W'). Then next col is the one to get +3V, and so on.

For Shift-X QCOL6 will pull up QROW4 and QROW2. For Shift-T QCOL6 and QCOL0 will pull up QROW4.

Now the nasty part of it:
Shift-Fn-K means QCOL5 will pull up QROW4, and QCOL6 will pull up QROW4 and QROW1. BUT: when QROW4 is pulled high by QCOL5, then via the closed Shift key QROW4 will pull high QCOL6, and QCOL6 will pull high QROW1 via K switch. So the matrix controller will see QROW4 and QROW1 both be high, for either of QCOL5 and QCOL6, which looks like 4 keys shift, Fn, K, and(!) J are pressed. Situation for Shift-Fn-J is absolutely identical, and so Sh-Fn-J and Sh-Fn-K are not distinguishable.
for 3-key tupels the combinations are:

Looking at this matrix, we notice two things:
1: Nokia missed to give real dedicated col-lines to the qualifier keys, though there would have been plenty, by simply arranging the keys in matrix in a smarter way. That would have completely avoided the above described N-key rollover issue
Another common method to fix this problem is to use diodes in series with the key switches. A diode for Ctrl, Shift, and Fn would be just enough here, adding to the BOM with only 3 parts a 2ct each.
2: U has its own row, and U is used for flashing (USB-flashing mode). Coincidence? Let's assume Nokia EE thought (for whatever weird reason) it might be clever to have a dedicated row for U (so they just pull high QCOL0 in NOLO bootloader and check the 8 row lines by reading in that byte). Then we might start to wonder what's with Y. And with I? And with T R W E Q? Nota bene press&hold multiple of those keys will always still deliver a nice clean easy-to-read 8bit result, on the presumed test during boot in NOLO

(p.s: maybe the rows are driven high - or even low - and the cols are the sensing inputs. I've not checked this, as it doesn't change anything in the basic function principle and neither changes the problem with N-key rollover. For the NOLO speculations it makes more sense to have inputs on rows and drivers on cols, though)

[edit] Keyboard Slide

[edit] Proximity sensor

[edit] Ambient Light Meter

Main article: N900 light meter

[edit] Power management

Main article: N900 Hardware Power management

[edit] Battery

[edit] Charge meter

Main article: N900 Hardware Charge Meter

[edit] Battery Charger

Main article: N900 Hardware Battery Charger

[edit] Gaia

[edit] CPU

[edit] Phone

Main article: N900 Hardware Phone

[edit] GPS

Main article: N900 Hardware GPS

[edit] 2G/3G phone module

[edit] SIM

[edit] Local Network

[edit] Bluetooth

Main article: N900 Hardware Bluetooth

[edit] Wifi

Main article: N900 Hardware Wifi

[edit] USB Networking

[edit] Computing

[edit] CPU

Main article: N900 CPU

[edit] Many functional blocks of the CPU

[edit] Chipset

Main article: N900 Hardware Chipset

[edit] Memory

[edit] Flash Memory

[edit] Internal 32GB eMMC
[edit] Internal 'OneNand' 256MB
[edit] External microSD card

[edit] RAM

[edit] Other hardware (needs merging into hierarchy above)

(Click on device for wiki page with more information)

Device Model (Manufacturer) Description Driver
LED Controller LP5523
Digital Audio Data Serial Interface TLV320AIC3x

For those wanting to hack on the hardware drivers, the Maemo Kernel source code can be downloaded here: