N950

= N950 =

The Nokia N950 is a Linux based smartphone from Nokia, which has been released in July 2011 as developer device.

Custom Kernel Trees

 * https://wiki.merproject.org/wiki/N9_Kernel_update_project
 * https://github.com/nemomobile/kernel-adaptation-n950-n9

Kernel Status
This table represents the mainline kernel status. It's expected, that features marked as missing are available in the N950 specific kernel tree from Nokia. The Hardware column contains the Chip/IP-Core name and Description is a human readable description for the hardware (as short as possible). The Docs column describes the documentation status and, if available, a link to the datasheet. The driver column gives the current driver status (green = available in mainline, yellow + link = patch on mailinglists, yellow + ? = status unknown, red = not available in mainline) and the DT column gives the current device tree file status (entry in arch/arm/boot/omap3-n950.dts) with the same color usage. Last but not least the FW column gives hints about any required firmwares.

Battery fuel gauge
The bq27521/sn27521 seems to be a bq27xxx series chip specially manufactured for Nokia devices. In opposit to other devices from the same series it does not measure the battery's state of charge. This is done in software with a battery discharge profile.

sn27521 register map
Rev. 13 and Rev. 14 can be distinguished via the device info register, which should have 0x21 in its upper byte.

BL-4D Information

 * max. allowed current: 750 mA
 * max. voltage: 4200 mV
 * high voltage: 4179 mV
 * low voltage: 3640 mV
 * nominal capacity: 1200 mAh
 * internal resistance: 140 mOhm

GPS
The kernel driver only forwards MEIF encoded data from userspace to the device. The protocol itself was implemented in userspace. [this page] works on reverse engineering the protocol.

= Running upstream kernel on N950 = A work in progress guide using Debian as the example operating system. First, make sure to turn off the watchdogs

sudo 0xFFFF -F no-omap-wd,no-ext-wd,no-lifeguard-reset

Then flash Ubiboot and bootstrap a Debian system, as described here.

Currently the armmp kernel doesn't work, this guide will be updated.

Booting custom kernels
Run your kernels with something like:

sudo ../maemo/0xffff/src/0xFFFF -l -m kernel:arch/arm/boot/$IMG -b Your usually get an error here:
 * 1) power off your phone
 * 1) plug in the phone.

Waiting for ASIC ID... Error: Invalid size of ASIC ID Error: Reading ASIC ID failed Error: No device detected ^C

Hit ^c, and restart 0xFFFF. You should get

Sending image... 100% [#################################################################] Done

now.

You should get /!\ Warning! screen now. Some bootloader versions way for ~10 seconds, some don't. Some bootloader versions power off immediately if you attempt to supply command line arguments.

Watch the screen. It will go dark. If it blinks, it is a good sign. You may want to check with flashlight, maybe there's almost invisible text there.

Ignore the notification LED. It seems to blink even without kernel involvement.

Keyboard "debug enabled" LED can be used for debugging.