n900

Differences between revisions 42 and 43
Revision 42 as of 2011-11-10 13:48:29
Size: 10979
Editor: client96-47
Comment: Known problems template
Revision 43 as of 2011-11-10 14:03:03
Size: 12408
Editor: client96-47
Comment: Hardware support
Deletions are marked like this. Additions are marked like this.
Line 229: Line 229:
|| CPU || Unknown || 2011-11-08 || || ||
CPU/OC
GPU
Display
Touch Screen
Keyboard
Wifi
Bluetooth
Battery management
Power Button
Lock Switch
Phone/3G
Microphone
Accelerometer
Ambient Light Sensor
Keyboard slide sensor
Proximity sensor
5Mpx Camera
Front Camera
Camera Button
Camera Lid
eMMC
FM Receiver
FM Transmitter
GPS
Headphone Jack
Information LED
Infrared port
Vibrator
Video out
|| CPU ||<#A2E913> OK || 2011-11-08 || || ||
|| CPU/OC ||<#E9E913> Unknown || 2011-11-08 || || ||
|| GPU ||<#E9E913> Unknown || 2011-11-08 || || ||
|| Display ||<#A2E913> OK || 2011-11-08 || || ||
|| Touch Screen ||<#A2E913> OK || 2011-11-08 || || ||
|| Keyboard ||<#A2E913> OK || 2011-11-08 || || Needs N900 keymap ||
|| Wifi ||<#A2E913> OK || 2011-11-08 || || Needs wl1251 firmware ||
|| Bluetooth ||<#E9E913> Unknown || 2011-11-08 || || ||
|| Battery management ||<#E94213> - || 2011-11-08 || || ||
|| Power Button ||<#A2E913> OK || 2011-11-08 || || Needs acpid installed ||
|| Lock Switch ||<#E94213> - || 2011-11-08 || || Generates _button/screenlock SCRNLCK 00000080_ event ||
|| Phone/3G ||<#E9E913> Unknown || 2011-11-08 || || Needs re-check with ofono 1.0 ||
|| Microphone ||<#E9E913> Unknown || 2011-11-08 || || ||
|| Accelerometer ||<#E9E913> Unknown || 2011-11-08 || || ||
|| Ambient Light Sensor ||<#E9E913> Unknown || 2011-11-08 || || ||
|| Keyboard slide sensor ||<#E94213> - || 2011-11-08 || || ||
|| Proximity sensor ||<#E9E913> Unknown || 2011-11-08 || || ||
|| 5Mpx Camera ||<#E9E913> Unknown || 2011-11-08 || || ||
|| Front Camera ||<#E9E913> Unknown || 2011-11-08 || || ||
|| Camera Button ||<#E94213> - || 2011-11-08 || || ||
|| Camera Lid ||<#E9E913> Unknown || 2011-11-08 || || ||
|| eMMC ||<#A2E913> OK || 2011-11-08 || || ||
|| FM Receiver ||<#E9E913> Unknown || 2011-11-08 || || ||
|| FM Transmitter ||<#E9E913> Unknown || 2011-11-08 || || ||
|| GPS ||<#E9E913> Unknown || 2011-11-08 || || ||
|| Headphone Jack ||<#E9E913> Unknown || 2011-11-08 || || ||
|| Information LED ||<#E9E913> Unknown || 2011-11-08 || || ||
|| Infrared port ||<#E9E913> Unknown || 2011-11-08 || || ||
|| Vibrator ||<#E9E913> Unknown || 2011-11-08 || || ||
|| Video out ||<#E9E913> Unknown || 2011-11-08 || || ||

plasma-n900.png

TODO

  • look into flash-kernel package

<persia> It's the pile of scripts that hook into kernel postinst and put the kernel somewhere useful to boot.
<persia> Interesting bits are ./flash-kernel and ./debian/flash-kernel-installer.postinst
  • get meego integration package in the archives
  • cleanup seeds (introduce new seed kubuntu-minimal and change dependencies to kubuntu-minimal: minimal, kubuntu-common: desktop-common kubuntu-minimal, kubuntu-mobile: kubuntu-minimal)
  • pimp default settings
  • get gles working with plasma-mobile (requires pvr drivers, see below)

Installing Kubuntu on n900

Requirements:

  • Maemo5 pr1.3 installed
  • MicroSD 8GB, at least, class 6 or better.

Getting started

zcat maverick-preinstalled-mobile-armel+omap.img.gz > /dev/sdc1
  • fsck.ext3 the first partition (the one with the image on it)
  • mount the first microsd partition where you want
  • Enter it as chroot (you'll need to install qemu-arm-static and copy it from /usr/sbin to the partition)
  • Set a nameserver (e.g. echo "nameserver 8.8.8.8" >> /etc/resolv.conf)

  • Install the kubuntu mobile integration package from http://people.ubuntu.com/~apachelogger/mobile/n900-integration/

  • Add a new user to the system and ensure the user is member of the admin and sudo groups
  • You should install openssh-server very much Smile :)

  • Ideally run sudo sync before unplugging to prevent issues
  • The system is now ready to do an initial boot...

UBoot

  • Enable the maemo.org extras-devel repository in n900, see http://wiki.maemo.org/Extras-devel

  • Install the 'uboot-pr13' package with apt-get install or from 'System' section
  • Verify it's installed by restarting your N900. A penguin should show up at startup and U-boot will be mentioned, let it time out and boot into Maemo.
  • Place a uImage on the 3rd partition, when uboot times out it will look there for the uImage and if found look for the OS on partition 1 (i.e. exactly our setup).
  • To boot to maemo execute 'run noloboot' in the uboot prompt

New uImage

  • To create a new uImage you will need the target kernel's vmlinuz file (usually to be found in /boot)

apt-get install uboot-mkimage
mkimage -A arm -O linux -T kernel -C none -a 0x80008000 -e 0x80008000 -n "Ubuntu" -d ./vmlinuz-* ./uImage
  • Please note that you will have to use a full qualified file name for vmlinuz if you have more than one in the PWD

Flasher Boot

This method is based on the Meego instructions from http://meego.com/devices/handset/installing-meego-nokia-n900 and starts the Meego kernel.

  • Get the Meego vmlinuz and raw.bz2 files
    • bunzip the raw.bz2
    • inspect it using sudo fdisk -l -u $FILENAME
      • depending on the image you should see a couple of paritions, eventually you will need to try them
    • to mount you need to specify the offset of the partition, which is calculated by multiplying the start point of the partition (as per fdisk) with 512. e.g. if it starts at 1, the offset will be 1*512=512

sudo mount -o loop,offset=512 -t auto meego-handset-armv7l-n900-1.1-mmcblk0p.raw /mnt/
  • cp /mnt/boot/* /where/you/mounted/boot/
  • cp /mnt/lib/modules/2.6.35.3-10.3-n900 /where/you/mounted/lib/modules/
  • Additionally you want to replace your usb networking init with nokia-usb-networking from meego, as theirs is actually working
  • Turn off device (and unplug USB)
  • sudo flasher-3.5 -l -k meego-handset-armv7l-n900-*-vmlinuz-*-n900 -b
  • plug in USB, device should autostart and kernel should be transfered
  • kubuntu mobile starts Smile :)

After Boot

  • for usb control you should make sure that the interface is up on mobile (modprobe g_nokia && ifconfig usb0 192.168.2.16 up) and follow http://wiki.meego.com/ARM/N900/Tips_and_Tricks/N900_USB_Networking mind that there is instructions are silly and that you need to make sure your udev does not contain cdc_ether but cdc_eem, after that you should be able to connect to the n900 (given that your own usb0 is also up, which should be handled by nm)

  • It is recommended to edit the /etc/network/interfaces file on the mobile system to autoset usb0

auto usb0
iface usb0 inet static
       address 192.168.2.16
       netmask 255.255.255.0
       gateway 192.168.2.14
      up route del default
      up route add default gw  192.168.2.14
  • Note: using .16 is key, otherwise you will get SSH key clashes with maemo
  • Since we are using .16 you will need to ensure the iptables route on your host machine also includes .16 (the meego setup only routes .15)

Performance Tweaks

  • rm /usr/bin/nepomuk*; rm /usr/bin/akonadi*
  • Remove everything from /usr/share/autostart other than plasma-mobile
  • Switch widget style from Oxygen to Plastique
  • Switch off desktop effects
  • Deactivate man-db updates:

debconf-set-selections <<EOF
man-db man-db/auto-update boolean false
EOF
  • See packages the script below removes...

btrfs

Meego uses btrfs, and since we are using a SD card it makes sense that you convert your ext3 to btrfs.

Our kernel

Scripts

Setup

For your convenience here is a script. Note that you need to change the 2 first consts to match your mount path and your git checkout path. The script will copy the most essential bits into your chroot, install ssh, shoot some pointless packages in the head, set rendering to raster, deactivate some fat autostart apps and leave you with creating a user named user (i.e. you just need to set the pw).

# Copyright © 2010 Harald Sitter <apachelogger@ubuntu.com>

MPATH="/media/disk-2"
GITPATH="/home/me/src/git/meego/"

export LANG=C

cp $GITPATH/n900_udev-rules-nokia-n900/*rules $MPATH/etc/udev/rules.d/
cp $GITPATH/n900_nokia-n900-configs/nokia-n900-input-rules.conf $MPATH/etc/X11/xorg.conf
# comment line?
cp $GITPATH/n900_nokia-n900-configs/*.init $MPATH/etc/init.d/
# should be different path...
mkdir -p $MPATH/lib/kbd/keymaps/arm/qwerty
cp $GITPATH/n900_nokia-n900-configs/nokia-n900-keys.map $MPATH/lib/kbd/keymaps/arm/qwerty/
echo 'setxkbmap -rules evdev -model nokiarx51 -option grp:ctrl_shift_toggle -layout us -variant ",qwerty"' > $MPATH/etc/rc.local
echo 'exit 0' >> $MPATH/etc/rc.local

apt-get install qemu-arm-static
cp /usr/bin/qemu-arm-static $MPATH/usr/bin/qemu-arm-static
mount -o remount,dev $MPATH
for f in n900-alsamixer-settings.init nokia-n900-cmt-gpio.init nokia-n900-keys.init; do
  chroot $MPATH update-rc.d $f defaults 50 50
done

chroot $MPATH echo "nameserver 8.8.8.8" >> /etc/resolv.config
chroot $MPATH apt-get update
chroot $MPATH apt-get install openssh-server

chroot $MPATH apt-get purge libcups2 printer-applet jockey-kde apparmor plymouth-x11 ubiquity oem-config
# kdm -> nodm

chroot $MPATH echo "QT_GRAPHICSSYSTEM=raster" >> /etc/environment

mkdir -p $MPATH/usr/share/autostart-bak
for f in ; do
  mv $MPATH/usr/share/autostart/$f $MPATH/usr/share/autostart-bak/
done

chmod -x $MPATH/usr/bin/akonadi*
chmod -x $MPATH/usr/bin/*akonadi
chmod -x $MPATH/usr/bin/nepo*
chmod -x $MPATH/usr/bin/virtuoso*

chroot $MPATH adduser user 

CHROOT

This script mounts your mobile install with dev, proc and sys mounted (necessary to upgrade via chroot). Just call it with the partition device as argument (e.g. ./script.sh /dev/sdc1)

# Copyright © 2010 Harald Sitter <apachelogger@ubuntu.com>

if [[ "$@" == "" ]]; then
  echo "please define partition id as arg"
  exit 1
fi

sudo mount $@ /mnt 
sudo mount -o bind /dev /mnt/dev
sudo mount -o bind /dev/pts /mnt/dev/pts # necessary for do-release-upgrade
sudo mount -o bind /sys /mnt/sys
sudo mount -t proc /proc /mnt/proc
sudo chroot /mnt
sudo umount /mnt/dev/pts /mnt/dev /mnt/sys /mnt/proc
sudo umount /mnt

exit 0

Testing

GLES

Install packages from https://wiki.ubuntu.com/ARM/OMAP/Graphics then you can try the demo binaries as described on the same page. Note that Qt and probably also KDELibs and Plasma Mobile need rebuilding for GLES support.

Fixes

/var/lib/dkms/powervr-omap3/3.01.00.07/build/services4/3rdparty/bufferclass_ti/bc_cat.c:491:5: error: implicit declaration of function 'omap_rev_lt_3_0'

GSM

Should be working with ofono, see http://wiki.maemo.org/User:Jebba/Ofono and http://wiki.maemo.org/User:Jebba/Fedora

  • Install ofono
  • sudo stop ofono
  • sudo ofonod -d -n

As root:

  • dbus-send --system --print-reply --dest=org.ofono /n9000 org.ofono.Modem.SetProperty string:"Powered" variant:boolean:true

  • dbus-send --system --print-reply --dest=org.ofono /n9000 org.ofono.Modem.SetProperty string:"Online" variant:boolean:true

SMS:

  • pending cmd

Call is defunct (no audio) though generally the call itself is deployed:

  • dbus-send --system --print-reply --dest=org.ofono /n9000 org.ofono.VoiceCallManager.Dial string:"5551212" string:""

Known Problems

Also see https://wiki.ubuntu.com/OneiricOcelot/ReleaseNotes#Known_issues

Hardware support

Component/Feature

Status

Last check date

Bug link

Workaround/Notes

CPU

OK

2011-11-08

CPU/OC

Unknown

2011-11-08

GPU

Unknown

2011-11-08

Display

OK

2011-11-08

Touch Screen

OK

2011-11-08

Keyboard

OK

2011-11-08

Needs N900 keymap

Wifi

OK

2011-11-08

Needs wl1251 firmware

Bluetooth

Unknown

2011-11-08

Battery management

-

2011-11-08

Power Button

OK

2011-11-08

Needs acpid installed

Lock Switch

-

2011-11-08

Generates _button/screenlock SCRNLCK 00000080_ event

Phone/3G

Unknown

2011-11-08

Needs re-check with ofono 1.0

Microphone

Unknown

2011-11-08

Accelerometer

Unknown

2011-11-08

Ambient Light Sensor

Unknown

2011-11-08

Keyboard slide sensor

-

2011-11-08

Proximity sensor

Unknown

2011-11-08

5Mpx Camera

Unknown

2011-11-08

Front Camera

Unknown

2011-11-08

Camera Button

-

2011-11-08

Camera Lid

Unknown

2011-11-08

eMMC

OK

2011-11-08

FM Receiver

Unknown

2011-11-08

FM Transmitter

Unknown

2011-11-08

GPS

Unknown

2011-11-08

Headphone Jack

Unknown

2011-11-08

Information LED

Unknown

2011-11-08

Infrared port

Unknown

2011-11-08

Vibrator

Unknown

2011-11-08

Video out

Unknown

2011-11-08

Software

Description

Last confirmed

Bug link

Workaround

The only working kernel is the linux-n900_2.6.35-1.x

2011-11-08

No sound output

2011-11-08

ARM/n900 (last edited 2012-11-08 03:14:48 by ip-602f)