N900 Hardware Subsystems

There are many interacting hardware subsystems in the N900.

These can be split roughly into several areas.

Contents

Audio

Software

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

Main Speakers

Earpiece

Headphones

The headphone amplifier is a TPA6130a2 manufactured by Texas Instruments.

Composite out

FM radio transmitter

Main article: N900 FM radio transmitter


FM radio receiver

Main article: N900 FM radio receiver


Bluetooth audio

Video

The GPU is a SGX530 licensed from Imagination Technologies.

Display

Built in LCD

Main article: N900 LCD panel


Composite out

Front camera (VGA)

Main article: N900 VGA camera


Rear camera (5MP)

Main article: N900 camera sensor


Rear camera autofocus

Main article: N900 Hardware Autofocus


Rear camera LED flash

Main article: N900 Hardware Flash Torch


Rear camera warning light

Rear camera shutter

USB

Main article: N900 Hardware USB


USB socket

Main article: N900 Hardware USB Socket


User interaction

Touchscreen

The touch screen controller is a TSC 2005.

Accelerometer

Main article: N900 accelerometer


Switches

Lock Switch

Headset Switch

Jack Switch

Camera Button

Power Button

Volume control

Rear cover presence switch

Camera cover

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_)
QROW7: VOL- VOL+ I
QROW6: U
QROW5: Y
QROW4: Shft Fn CTRL Rght Down T
QROW3: Left SPC M N B V R
QROW2: C X Z CR Up . E
QROW1: L K J H G F D W
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:
Sh-Fn-J/K
Sh-Fn-X/Z
Sh-CTL-K/H
Sh-CTL-A/Del
Fn-CTL-Space/M
Fn-CTL-J/H

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)

Keyboard Slide

Proximity sensor

Ambient Light Meter

Main article: N900 light meter


Power management

Main article: N900 Hardware Power management


Battery

Charge meter

Main article: N900 Hardware Charge Meter


Battery Charger

Main article: N900 Hardware Battery Charger


Gaia

CPU

Phone

Main article: N900 Hardware Phone


GPS

Main article: N900 Hardware GPS


2G/3G phone module

SIM

Local Network

Bluetooth

Main article: N900 Hardware Bluetooth


Wifi

Main article: N900 Hardware Wifi


USB Networking

Computing

CPU

Main article: N900 CPU


Many functional blocks of the CPU

Chipset

Main article: N900 Hardware Chipset


Memory

Flash Memory

Internal 32GB eMMC
Internal 'OneNand' 256MB
External microSD card

RAM

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:

http://repository.maemo.org/pool/fremantle/free/k/kernel/