{{attachment:plasma-n900.png|N900 image|align="right"}} <> = TODO = * look into flash-kernel package {{{ It's the pile of scripts that hook into kernel postinst and put the kernel somewhere useful to boot. 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 == * Download latest kubuntu-mobile image http://cdimage.ubuntu.com/kubuntu-mobile/daily-preinstalled/current/ * Create three partitions in the sd card * 1. an ext3 partition using the most part of the disc * 2. a swap partition * 3. a small VFAT partition, so Maemo will not complain * zcat the kubuntu-mobile image to the ext3 partition {{{ 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 :) * 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 :) == 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 < 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) {{{ #!/bin/bash # Copyright © 2010 Harald Sitter 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' }}} * DKMS building with our kernel requires [[attachment:0155.1-omap3-modified-Add-macros-for-comparing-si-revision.patch]] which is a reduced version of 0155-omap3-Add-macros-for-comparing-si-revision.patch from AM35x-OMAP35x-PSP-SDK-03.00.01.06 === 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: Receive: * dbus-monitor --system "type='signal',interface='org.ofono.MessageManager'" 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 = See also: https://wiki.ubuntu.com/OneiricOcelot/ReleaseNotes#Known_issues == Hardware support == See also: http://wiki.maemo.org/Category:N900_Hardware <
> http://wiki.maemo.org/N900_Software_Kernel_Modules ||'''Component/Feature'''||'''Status'''||'''Last check date'''||'''Bug link'''||'''Workaround/Notes'''||'''Kernel module'''|| || CPU ||<#A2E913> OK || 2011-11-08 || || CPU Overclocking ||<#E9E913> Unknown || || GPU ||<#E9E913> Unknown || || || || || Display ||<#A2E913> OK || 2011-11-08 || || || || Touch Screen ||<#A2E913> OK || 2011-11-08 || || || || Keyboard ||<#A2E913> OK <> || 2011-11-08 || || Needs N900 keymap || || Volume buttons ||<#A2E913> OK || 2011-11-08 || || They are basically F7/F8 || || Wifi ||<#A2E913> OK <> || 2011-11-08 || || Needs wl1251 firmware || || Bluetooth ||<#A2E913> OK <> || 2011-11-13 || || Needs firmware || hci_h4p || || Battery management ||<#C5E813> Semi || 2011-11-08 || || Check: <
> http://mer-project.blogspot.com/2010/01/enabling-rtc-clock-battery-charging-and.html <
> http://talk.maemo.org/showpost.php?p=1124480&postcount=182 (Only for wall charger!) || bq27x00_battery || || USB/Charging ||<#E9E913> Unknown || || || USB/Network ||<#A2E913> OK <> || 2011-08-29 || || USB/Storage ||<#E9E913> Unknown || || || USB/OTG ||<#E9E913> Unknown || || || Clock ||<#A2E913> OK <> || 2012-03-07 || || echo "hwclock -u -s" >> /etc/rc.local || twl_rtc || || Power Button ||<#A2E913> OK <> || 2011-11-08 || || Needs acpid installed || || Lock Switch ||<#E94213> - || 2011-11-08 || || Generates ''button/screenlock SCRNLCK 00000080'' event || || Speakers ||<#A2E913> OK || 2011-11-10 || || || || Microphone ||<#A2E913> OK || 2011-11-10 || || || || Headphone Jack ||<#A2E913> OK || 2012-06-21 || || /sys/class/gpio/gpio177/value || || Phone/Voice ||<#E9E913> Unknown || || || Needs re-check with ofono 1.0 || || Phone/SMS ||<#E9E913> Unknown || || || Needs re-check with ofono 1.0 || || Phone/GPRS ||<#E9E913> Unknown || || || Needs re-check with ofono 1.0 || || Phone/USSD ||<#E9E913> Unknown || || || Needs re-check with ofono 1.0 || || Phone/3G ||<#E9E913> Unknown || || || Needs re-check with ofono 1.0 || || Accelerometer ||<#A2E913> OK || 2012-06-20 || || http://talk.maemo.org/showpost.php?p=1224829 || || Ambient Light Sensor ||<#A2E913> OK || 2012-06-20 || || http://talk.maemo.org/showpost.php?p=1224829 || || Keyboard slide sensor ||<#E94213> - || 2011-11-08 || || Check /sys/devices/platform/gpio-keys/ || || Keyboard backlight ||<#E94213> - || 2011-11-13 || || || || Proximity sensor ||<#E9E913> Unknown || || || || || 5Mpx Camera ||<#E9E913> Unknown || || || || || Front Camera ||<#E9E913> Unknown || || || || || Camera Button ||<#C5E813> Semi || 2011-11-15 || || Full press recognized as ''Webcam'' in 12.04 <
> 11.10: dmesg: ''keyboard: can't emulate rawmode for keycode 212'' || || Camera Lid ||<#E94213> - || 2011-11-13 || || || || Camera Flash LEDs ||<#E9E913> Unknown || || || || || eMMC ||<#A2E913> OK || 2011-11-08 || || || || OneNAND root (256Mb) ||<#A2E913> OK || 2012-11-08 || || http://www.linux-mtd.infradead.org/faq/ubifs.html#L_enable_ubifs || || || FM Receiver ||<#E9E913> Unknown || || || || || FM Transmitter ||<#E9E913> Unknown || || || || || GPS ||<#E9E913> Unknown || || || || || Information LED ||<#E9E913> Unknown || || || dmesg: ''lp5523 2-0032: LP5523 Programmable led chip found'' || lp5523 || || Infrared port ||<#E9E913> Unknown || || || || || Vibrator ||<#E9E913> Unknown || || || || || Video out ||<#E9E913> Unknown || || || || || Watchdog ||<#E9E913> Unknown || || || Check http://mer-project.blogspot.com/2010/01/enabling-rtc-clock-battery-charging-and.html <
> dmesg: ''twl4030_wdt: Failed to register misc device ... probe ... failed with error -16'' || twl4030_wdt? || || DSP ||<#E9E913> Unknown || || || Check http://wiki.meego.com/ARM/N900/Tips_and_Tricks/DSP and http://dismantle-it.blogspot.com/2011/12/install-arch-linux-on-nokia-n900.html || || <> == Software == ||'''Description'''||'''Last confirmed'''||'''Bug link'''||'''Workaround'''|| || No acpid installed by default || 2011-11-08 || || # apt-get install acpid || || No N900-specific keymap by default || 2011-11-08 || || Copy from Meego || || No wl1251 firmware by default || 2011-11-08 || || Copy from Meego || || No software to work with Phone functions || 2011-11-08 || || TODO: Check empathy with telepathy-ring and ofono 1.0 || || Only basic power-saving || 2011-11-08 || || $ xset dpms force off<
>to switch off the screen || || No acpi support || 2011-11-08 || || ||