N900 Hardware Subsystems

(GPS and wifi already linked)
m (Protected "N900 Hardware Subsystems": Excessive vandalism ([edit=autoconfirmed] (indefinite) [move=autoconfirmed] (indefinite)))
 
(34 intermediate revisions not shown)
Line 12: Line 12:
===Main Speakers===
===Main Speakers===
===Earpiece===
===Earpiece===
-
===Headset===
+
===Headphones===
 +
 
 +
The [[N900 headphone amplifier|headphone amplifier]] is a TPA6130a2 manufactured by Texas Instruments.
 +
 
===Composite out===
===Composite out===
 +
 +
===FM radio transmitter===
 +
 +
{{main|N900 FM radio transmitter}}
 +
 +
===FM radio receiver===
 +
 +
{{main|N900 FM radio receiver}}
 +
===Bluetooth audio===
===Bluetooth audio===
==Video==
==Video==
 +
 +
The GPU is a SGX530 licensed from Imagination Technologies.
 +
===Display===
===Display===
====Built in LCD====
====Built in LCD====
 +
 +
{{main|N900 LCD panel}}
 +
====Composite out====
====Composite out====
===Front camera (VGA)===
===Front camera (VGA)===
-
{{main|N900 Hardware VGA Camera}}
+
{{main|N900 VGA camera}}
===Rear camera (5MP)===
===Rear camera (5MP)===
-
{{main|N900 Hardware Camera Sensor}}
+
{{main|N900 camera sensor}}
 +
 
 +
====Rear camera autofocus====
 +
 
 +
{{main|N900 Hardware Autofocus}}
====Rear camera LED flash====
====Rear camera LED flash====
Line 38: Line 60:
{{main|N900 Hardware USB}}
{{main|N900 Hardware USB}}
 +
 +
===USB socket===
 +
 +
{{main|N900 Hardware USB Socket}}
==User interaction==
==User interaction==
===Touchscreen===
===Touchscreen===
 +
 +
The touch screen controller is a [http://www.ti.com/product/tsc2005 TSC 2005].
 +
===Accelerometer===
===Accelerometer===
-
{{main|N900 Hardware Accelerometer}}
+
{{main|N900 accelerometer}}
===Switches===
===Switches===
Line 57: Line 86:
===Keyboard===
===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
 +
 +
{| class="wikitable" border=1
 +
!(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.<br>
 +
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:<br>
 +
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.<br>
 +
for 3-key tupels the combinations are:<br>
 +
Sh-Fn-J/K<br>
 +
Sh-Fn-X/Z<br>
 +
Sh-CTL-K/H<br>
 +
Sh-CTL-A/Del<br>
 +
Fn-CTL-Space/M<br>
 +
Fn-CTL-J/H<br>
 +
 +
Looking at this matrix, we notice two things:<br>
 +
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<br>
 +
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.<br>
 +
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====
====Keyboard Slide====
 +
===Proximity sensor===
===Proximity sensor===
===Ambient Light Meter===
===Ambient Light Meter===
-
{{main|N900 Hardware Light Meter}}
+
{{main|N900 light meter}}
==Power management==
==Power management==
Line 69: Line 148:
===Battery===
===Battery===
 +
====Charge meter====
====Charge meter====
 +
 +
{{main|N900 Hardware Charge Meter}}
 +
===Battery Charger===
===Battery Charger===
Line 102: Line 185:
===CPU===
===CPU===
-
{{main|N900 Hardware CPU}}
+
{{main|N900 CPU}}
====Many functional blocks of the CPU====
====Many functional blocks of the CPU====
Line 117: Line 200:
====RAM====
====RAM====
-
==Other hardware (needs merging into heirarchy above)==
+
==Other hardware (needs merging into hierarchy above)==
(Click on device for wiki page with more information)
(Click on device for wiki page with more information)
Line 126: Line 209:
!Description
!Description
!Driver
!Driver
-
|-
 
-
|[[N900 Hardware Flash Torch|Flash Torch]] || [http://www.analog.com/en/power-management/display-and-lighting/adp1653/products/product.html ADP1653] (Analog Devices) || Dual LED flash controller || adp1653 module over I2C bus
 
-
|-
 
-
|[[N900 Hardware Autofocus|Autofocus]] || [http://www.analog.com/en/digital-to-analog-converters/da-converters/ad5821/products/product.html AD5820] (link is 5821) (Analog Devices) ||Autofocus coil driver || ad5820 module over I2C bus
 
-
|-
 
-
|[[N900 Hardware LCD Panel|LCD Panel]] || ACX565AKM (Sony) || ||
 
|-
|-
|[[N900 Hardware LED|LED Controller]] || LP5523  || ||
|[[N900 Hardware LED|LED Controller]] || LP5523  || ||
-
|-
 
-
|[[N900 Hardware GPU|GPU]] || SGX 530 (Imagination Technologies) || ||
 
-
|-
 
-
|[[N900 Hardware Touch Screen Controller|Touch Screen Controller]] || tsc 2005 || ||
 
-
|-
 
-
|[[N900 Hardware CPU|CPU]] || OMAP3430 [http://focus.ti.com/general/docs/wtbu/wtbuproductcontent.tsp?contentId=14649&navigationId=12643&templateId=6123] (Texas Instruments) || ||
 
-
|-
 
-
|[[N900 Hardware Power management|Power management]] || TWL4030 (Texas Instruments) || ||
 
-
|-
 
-
|[[N900 Hardware Charge Meter|Battery status]] || BQ27200 (Texas Instruments) || [http://focus.ti.com/lit/ds/symlink/bq27200.pdf] ||
 
-
|-
 
-
|[[N900 Hardware Bluetooth|Bluetooth]] || BCM2048 [http://www.broadcom.com/products/Bluetooth/Bluetooth-RF-Silicon-and-Software-Solutions/BCM2048] (Broadcom) || ||
 
-
|-
 
-
|[[N900 Hardware FM Radio Transmitter|FM Radio Transmitter]] || Si4713 (Silicon Labs) || [http://www.datasheetdir.com/SI4713+Rf-Transmitters] ||
 
-
|-
 
-
|[[N900 Headphone Amplifier|Headphone Amplifier]] || TPA6130a2 (Texas Instruments) || ||
 
|-
|-
|[[N900 Hardware Digital Audio Data Serial Interface|Digital Audio Data Serial Interface]] || TLV320AIC3x || ||
|[[N900 Hardware Digital Audio Data Serial Interface|Digital Audio Data Serial Interface]] || TLV320AIC3x || ||
-
|-
 
-
|[[N900 Hardware Camera Sensor|Main Camera]] || ET8EK8 (Toshiba) || ||
 
-
|-
 
-
|[[N900 Hardware VGA Camera|Front Camera]] || VS6555 (ST Microelectronics) || ||
 
-
|-
 
-
|[[N900 Hardware USB|USB]] || Micro USB (data and charging) || [[N900 Hardware USB Socket|socket]] may depend on Build Date ||
 
|-
|-
|}
|}
Line 163: Line 218:
For those wanting to hack on the hardware drivers, the Maemo Kernel source code can be downloaded here:
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/
  http://repository.maemo.org/pool/fremantle/free/k/kernel/
-
 
[[Category:N900 Hardware]]
[[Category:N900 Hardware]]

Latest revision as of 23:45, 24 March 2018

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/