Editing N900 The Perfect Setup
Warning: You are not logged in.
Your IP address will be recorded in this page's edit history.
The edit can be undone.
Please check the comparison below to verify that this is what you want to do, and then save the changes below to finish undoing the edit.
Latest revision | Your text | ||
Line 1: | Line 1: | ||
- | |||
- | |||
- | |||
- | |||
=Introduction= | =Introduction= | ||
- | + | This page serves the purpose of assembling a complete and current howto-guide for the perfect N900 setup. | |
- | + | The initial information here is based on my personal experience and the rich trove of experience which is talk.maemo.org. | |
+ | Please keep this page alive by adding your improvements and keeping it up to date as Maemo evolves. | ||
- | + | {{warning}} '''Disclaimer:''' ''This page is a work in progress and will probably never be finished. Some of the procedures might prove to be quite risky. There's no guarantee that your phone won't start to eat your cat. You do everything at your own risk.'' | |
- | = | + | = Recommended hardware = |
- | + | * A Nokia N900, obviously | |
+ | * SanDisk Ultra 32GB Class 10 / UHS-1 SDHC Card (SU32-G) | ||
+ | * PolarCell 1520 mAh battery | ||
+ | * Standalone battery charger | ||
+ | * USB A-A adapter | ||
+ | * (Linux box) | ||
- | ==Hardware Specifications== | + | === Hardware Specifications === |
+ | NAND Layout | ||
- | + | '''dev''' '''size''' '''erasesize''' '''name''' | |
+ | mtd0: 00020000 00020000 "bootloader" | ||
+ | mtd1: 00060000 00020000 "config" | ||
+ | mtd2: 00040000 00020000 "log" | ||
+ | mtd3: 00200000 00020000 "kernel" | ||
+ | mtd4: 00200000 00020000 "initfs" | ||
+ | mtd5: 0fb40000 00020000 "rootfs" | ||
- | + | eMMC Partition Layout | |
- | + | '''dev''' '''size''' '''fs''' '''mountpoint''' | |
- | + | mmcblk0p1 27648MiB vfat /home/user/MyDocs | |
- | + | mmcblk0p2 2048MiB ext2 /home | |
- | + | mmcblk0p3 768MiB swap | |
- | + | [http://natisbad.org/N900/n900-commented-hardware-specs.html Detailed specs] | |
- | [http://talk.maemo.org/showthread.php?t= | + | [http://talk.maemo.org/showthread.php?t=65568 N900 battery options] |
- | + | === Hardware modifications === | |
- | + | /* TODO: USB pre-broken fix */ | |
- | + | ||
- | + | ||
- | + | ||
- | = | + | [http://talk.maemo.org/showthread.php?t=75920] |
- | + | [http://talk.maemo.org/showthread.php?t=79878] | |
- | + | = Initial setup = | |
+ | [http://wiki.maemo.org/Updating_the_tablet_firmware#N900 Everything about Firmware Flashing] | ||
- | |||
- | + | Download flasher from the repositories | |
- | + | /* TODO: Use open source flasher */ | |
- | + | Download the firmware flasher: | |
+ | [http://skeiron.org/tablets-dev/maemo-dev-env-downloads/ Flasher & SDK Downloads] | ||
- | + | Download the latest official Nokia Firmware Images for your N900: | |
+ | [http://skeiron.org/tablets-dev/nokia_N900/ Firmware Image Downloads] | ||
+ | RX-51_2009SE_10.2010.13-2.VANILLA_PR_EMMC_MR0_ARM.bin | ||
+ | md5sum: 488809ff96a0a05479d692e9f77aeb4f | ||
+ | RX-51_2009SE_20.2010.36-2_PR_COMBINED_MR0_ARM.bin | ||
+ | md5sum: b9f8690318a3be61767826d15b8c1784 | ||
- | + | == Flashing the device == | |
- | The | + | The following flashing procedure has proven the most stable to me: |
- | + | ||
+ | {{warning}}Always use a fully charged battery! | ||
- | + | * Turn your device off, disconnect USB | |
- | + | * (As root) flash the FIASCO firmware image: | |
+ | flasher-3.5 -F RX-51_2009SE_20.2010.36-2_PR_COMBINED_MR0_ARM.bin -f | ||
+ | * When you get "No suitable USB device found" connect your N900 through USB. | ||
+ | * Wait for the flashing to finish. | ||
+ | {{warning}} Don't reboot | ||
- | + | * Flash original eMMC image: | |
+ | flasher-3.5 -F RX-51_2009SE_20.2010.36-2_PR_COMBINED_MR0_ARM.bin -f | ||
+ | * Wait for the flashing to finish. | ||
+ | * Reboot the device by _reinserting_ the battery | ||
- | + | Upon first login, enter your locale settings (Timezone, local time, etc.). | |
- | + | ||
- | + | Run latest official Nokia SSU (upgrades your device firmware to V1.3.1) by launching App manager / Update from the applications menu. | |
- | == | + | == Getting root access == |
+ | [http://wiki.maemo.org/Root_access 1001 ways of becoming root] | ||
- | + | * Add the Extras-Testing repository to the Hildon Application Managers catalog | |
+ | name: Maemo extras-testing | ||
+ | uri: deb http://skeiron.org/repo/repository.maemo.org/extras-testing/ fremantle free non-free | ||
+ | dist: fremantle | ||
+ | components: free non-free | ||
- | + | * Add the Extras-Devel repository as well | |
+ | name: Maemo extras-development | ||
+ | uri: http://extras-devel.merlin1991.at/ fremantle free non-free | ||
+ | dist: fremantle | ||
+ | components: free non-free | ||
- | + | * Disable OVI repository (conflicts with CSSU) | |
- | + | * Wait for repository update to finish (Hildon Application Manager is slooow) and install 'rootsh' from the system section. | |
- | + | * To get remote access over the network (way more comfy) install SSH server by launching XTerminal from the application menu and running: | |
+ | sudo gainroot | ||
+ | apt-get install openssh | ||
+ | You will be asked for your new root password. | ||
+ | /*TODO: Change PW hash to enable passwords > 8 chars */ | ||
- | + | * Finally launch xterm and run | |
+ | ifconfig wlan0 | ||
- | + | * Write down the IP address - from now on you can use the SSH client of your choice to connect to your favorite pocket computer - enjoy! | |
- | + | = Upgrade to CSSU-thumb = | |
+ | [http://wiki.maemo.org/CSSU What's CSSU?] | ||
- | + | [http://talk.maemo.org/showthread.php?t=84829 What's thumb2 ISA?] | |
- | + | {{info}} cssu-thumb contains a kernel based on kp51r1, therefore you automatically benefit from all kernel-power features (undervolting, overclocking, framebuffer, ...). See [http://wiki.maemo.org/Kernel_Power Kernel Power Wiki] and [http://talk.maemo.org/showthread.php?t=85665 Kernel Power 51r1 on tmo] | |
- | + | ||
- | === | + | == Repositories == |
+ | Disable extras-testing - it will be replaced by its thump-compiled counterpart from the CSSU repository. Make sure Nokia and Maemo Extras repositories are enabled though. | ||
- | + | To avoid thumb-compiled binaries being overwritten by upgrades from non-thumb repositories use the following /etc/apt/preferences file | |
+ | Package: * | ||
+ | Pin: release a=community-thumb | ||
+ | Pin-Priority: 700 | ||
+ | |||
+ | Package: * | ||
+ | Pin: release a=Extras-devel-light | ||
+ | Pin-Priority: 500 | ||
+ | |||
+ | Package: * | ||
+ | Pin: release l=Extras | ||
+ | Pin-Priority: 550 | ||
+ | |||
+ | Package: * | ||
+ | Pin: release l=community-testing | ||
+ | Pin-Priority: 600 | ||
- | + | == Remove unneeded software == | |
+ | [http://talk.maemo.org/showthread.php?s=bcad4cd2389b67dd0911decdebb4b503&t=82641 tmo thread] | ||
- | + | apt-get remove --purge hildon-theme-beta osso-chess-ui gnuchess osso-graphics-game-chess osso-lmarbles osso-graphics-game-lmarbles osso-sounds-game-chess maemoblocks ap-installer amazon-installer foreca-installer facebook-installer skype-installer dtg-installer tutorial-home-applet osso-tutorial-l10n-engb osso-tutorial-l10n-ptpt osso-tutorial-l10n-frca osso-tutorial-l10n-nlnl osso-tutorial-l10n-cscz osso-tutorial-l10n-itit osso-tutorial-l10n-eses osso-tutorial-l10n-svse osso-tutorial-l10n-frfr osso-tutorial-l10n-dede osso-tutorial-l10n-fifi osso-tutorial-l10n-nono osso-tutorial-l10n-esmx osso-tutorial-l10n-enus osso-tutorial-l10n-ruru osso-tutorial-l10n-mr0 osso-tutorial-l10n-plpl cherry osso-systemui-splashscreen sharing-service-flickr sharing-service-ovi chinese-font google-search-widget tutorial-home-applet osso-mahjong osso-graphics-game-mahjong osso-sounds-game-mahjong ovi-promotion-widget | |
- | + | == Installing CSSU-Thumb == | |
+ | * Visit this link using your N900s web browser: http://maemo.merlin1991.at/cssu/community-thumb/community-thumb-fremantle.install and confirm the prompts displayed in HAM | ||
- | * | + | * Launch community SSU from applications menu. |
- | * | + | * Install the proposed updates. |
- | = | + | = Essential software packages = |
- | + | The following is a list of applications which (IMHO) constitute a reasonable base set | |
- | + | apt-get install <pkgname> | |
- | + | {| | |
+ | ! align="left"| Package Name | ||
+ | ! Description | ||
+ | ! Votes | ||
+ | |- | ||
+ | |backupmenu | ||
+ | | | ||
+ | | | ||
+ | |- | ||
+ | |busybox-power | ||
+ | |Required for encryption (s. below) | ||
+ | | | ||
+ | |- | ||
+ | |tracker-cfg | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | |- | ||
+ | |tracker-extractor-vorbis | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | |- | ||
+ | |gstreamer0.10-plugins-good-extra-formats | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | |- | ||
+ | |filebox | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | |- | ||
+ | |catoriseplus | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | |- | ||
+ | |mce-ledpattern | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | |- | ||
+ | |cssufeatures | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | |- | ||
+ | |cl-launcher | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | |} | ||
- | + | Other recommendations include: xournal fm-boost fmradio recaller swappolube flashlight-applet cal-home-widget adflashblock-css | |
- | = | + | == Install non-optified cryptsetup == |
+ | wget http://maemo.merlin1991.at/apt-mirror/extras-devel/pool/fremantle/free/c/cryptsetup/cryptsetup_1.0.4%2bsvn26-3_armel.deb | ||
+ | dpkg -i cryptsetup_1.0.4%2bsvn26-3_armel.deb | ||
+ | echo "cryptsetup hold" | dpkg --set-selections | ||
- | == | + | == Install & configure bootloader == |
- | + | apt-get install u-boot-flasher kernel-cssu-bootimg | |
+ | ln -s /etc/bootmenu.d/20-Maemo5-kernel-cssu-2.6.28.10-cssu3.item /etc/default/bootmenu.item | ||
+ | u-boot-update-bootmenu | ||
- | + | == USB Host mode == | |
+ | [http://talk.maemo.org/showthread.php?t=85658 Host mode announcement] | ||
+ | wget http://atrey.karlin.mff.cuni.cz/~pali/usbmode/usbmode_1.0-3_armel.deb | ||
+ | dpkg -i usbmode_1.0-3_armel.deb | ||
- | + | * USB mode can be set through the status menu | |
+ | * To connect USB peripherals use a [http://www.cablechick.com.au/product_images/usb-adaptor-a-female-to-a.jpg USB A-to-A adapter] | ||
- | + | == Configure openmediaplayer == | |
+ | [http://wiki.maemo.org/Open_Media_Player OMP Wiki] | ||
- | : | + | * Get a thumb-compiled version of openmediaplayer [http://www69.zippyshare.com/v/23534616/file.html OMP-thumb download] |
+ | dpkg -i openmediaplayer_20121220-1+thumb0_armel.deb | ||
- | + | * As [[root]], edit file: | |
- | + | :''/usr/share/dbus-1/services/com.nokia.mediaplayer.service'' | |
+ | so the line: | ||
+ | Exec=/usr/bin/mediaplayer | ||
- | + | ...becomes: | |
- | + | Exec=/usr/bin/openmediaplayer | |
- | + | This will replace execution of '''MP''' binary with '''OMP''' one - without physically replacing files, so you can revert back to '''MP''' by reverting changes. | |
- | + | * tracker-cfg | |
+ | /* TODO */ | ||
- | + | == Faking Flash Player 12 == | |
+ | [http://talk.maemo.org/showpost.php?p=1276589&postcount=2219 Flash Player on tmo] | ||
- | + | * Get [http://www.sendspace.pl/download/YTo0OntzOjc6ImRhdGVfaW4iO2k6MTM0Mzc4MTUxMTtzOjU6InRpdGxlIjtzOjA6IiI7czo5OiJmaWxlX25hbWUiO3M6MjQ6ImFkb2JlLWZsYXNocGxheWVyLTEwLmRlYiI7czo1OiJ0b2tlbiI7czoyMzoiY2MzM2I0MDcyZTgyM2VlMTU4MDkzOWIiO30dfASDF34vasd3245bvs flashplayer 10 binaries] for maemo. | |
- | + | apt-get remove --purge adobe-flashplayer | |
+ | apt-get install hexedit | ||
+ | dpkg -i adobe-flashplayer-10.deb | ||
+ | hexedit /usr/lib/browser/plugins/libflashplayer.so | ||
- | + | * Once in Hexedit, press CTRL+S and type in 31302e31 and press enter, the string you've just found need to be changed to 31322e31 | |
- | + | * Now, press CTRL+S, type "y" and search for 31302c31 and change it to 31322c31 | |
- | + | * Press CTRL+S then "y" again. | |
- | + | * Close terminal and enjoy new faked v12.1.98.88 flash player | |
- | = | + | = Tweaks = |
- | == | + | == Kernel Power Settings == |
+ | /* TODO: Rewrite this section using smartreflex */ | ||
- | + | To enable overclocking (more horsepower) and undervolting (less power consumption) run the following commands | |
- | + | kernel-config save stock | |
+ | kernel-config load ideal | ||
+ | kernel-config default ideal | ||
- | + | To revert to stock settings run | |
+ | kernel-config load stock | ||
+ | kernel-config default stock | ||
- | + | == swappolube == | |
+ | [http://wiki.maemo.org/Swappolube Config details] | ||
+ | == cssu-features == | ||
+ | * Launch cssu-features from the applications menu | ||
+ | * On first run choose "Fix config" | ||
+ | * Launch cssu-features again | ||
+ | * Configure to your [http://wiki.maemo.org/CSSU_Features_Configuration_Editor taste] | ||
- | ==== | + | == Theme customizer == |
+ | * Set nokia-pure as default font | ||
- | + | == Disable Nokia Hands == | |
+ | * Edit the file | ||
+ | :''/etc/hildon-welcome.d/default.conf'' | ||
+ | [hildon-welcome] | ||
+ | filename=Hands-v32-h264.avi | ||
+ | * Comment out the last line or specify gstreamer compatible movie file | ||
- | = | + | = Backup your device = |
- | + | * Don't backup unnecessary stuff, so | |
+ | rm /var/cache/apt/archives/* | ||
+ | * Reboot with keyboard open | ||
+ | * Select default kernel | ||
+ | * In backupmenu press 'b' to start backup | ||
+ | * Press 'q' to backup both rootfs and optfs | ||
+ | * Select 'p' twice to store backup on /home/user/MyDocs | ||
+ | * Wait for backup to finish | ||
+ | * Connect USB to Linux box | ||
+ | * Press 'w' to export eMMC as mass storage device | ||
+ | * On your Linux box check 'dmesg' to identify device names (e.g. /dev/sdX), mount /dev/sdX1, switch to the mount point (e.g. /media/usb) and run | ||
+ | tar -cf /home/user/MyDocs_backup.tar | ||
- | + | = Adjust eMMC partitioning = | |
+ | /* TODO: Evaluate better filesystems and possibly alignment */ | ||
+ | * With eMMC still exported as mass storage device using backupmenu point your favorite partition manager to /dev/sdX | ||
+ | * Adjust partitions to your needs (align to MiB, not cylinders), for example | ||
+ | '''dev''' '''size''' '''fs''' '''mountpoint''' | ||
+ | mmcblk0p1 24576MiB vfat /home/user/MyDocs | ||
+ | mmcblk0p2 5120MiB ext2 /home | ||
+ | mmcblk0p3 835MiB swap | ||
- | [http:// | + | It's recommended to leave /dev/mmcblk0p1 as vfat for /home/user/MyDocs as it needs less tweaks to maemos mmc-scripts. For other options visit [http://wiki.maemo.org/Repartitioning_the_flash repartitioning the flash] |
- | = | + | = Disk Encryption = |
- | + | /* TODO: Verify that HW accel is being used */ | |
- | + | /* TODO: Use initrd in NAND and encrypt rootfs */ | |
- | + | ||
- | + | ||
- | + | ||
- | : / | + | |
- | + | [http://talk.maemo.org/showthread.php?t=40154 Discussion on tmo] | |
- | + | ||
- | : | + | |
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | == Preparing userland == | |
- | + | {{warning}} Don't reboot your device before having performed all steps described in this chapter or else you'll have to reflash your phone! | |
- | + | ||
- | + | ||
- | + | * Make sure cryptsetup and busybox-power packages are installed to rootfs | |
- | + | dpkg -L <pkgname> | |
- | * Get [ | + | * Get modified [https://gitorious.org/maemo5-encrypted-home rcS and rcS-late scripts] and copy them to your device |
+ | scp rcS root@<n900-ip-addr>:/etc/init.d/ | ||
+ | scp rcS-late root@<n900-ip-addr>:/etc/event.d/ | ||
- | + | * Edit the file | |
- | + | :''/sbin/preinit'' | |
- | + | and insert the command ''modprobe fbcon'' as the last line in function init_system() (just above the }) | |
- | + | ||
- | * | + | * Get an [http://bazaar.launchpad.net/~pali/+junk/maemo_recovery-boot/view/head:/nokia-n900.map n900 keymap] and convert it (on your Linux box): |
+ | loadkeys -b nokia-n900.map > nokia-n900.kmap | ||
- | * | + | * Copy the keymap to your phone's root directory |
+ | scp nokia-n900.kmap root@<n900-ip-addr>:/ | ||
- | * | + | * Create [http://wiki.maemo.org/Community_SSU/Features/ke-recv /etc/default/osso-mmc-blacklist.sh] and corresponding /etc/default/osso-mmc-blacklist containing devices which should not be mounted to MyDocs - /dev/dm-0 and /dev/dm-1) |
- | * | + | Edit the files |
+ | :''/usr/sbin/osso-usb-mass-storage-enable.sh'' and :''/usr/sbin/osso-usb-mass-storage-disable.sh'' | ||
+ | and add the following lines at the beginning | ||
+ | case $1 in | ||
+ | /dev/dm-*) | ||
+ | set /dev/mmcblk0p1 | ||
+ | ;; | ||
+ | esac | ||
+ | |||
+ | == Move optfs to encrypted partition == | ||
+ | * On your Linux box extract the :''optfs.tar'' file from the previously created MyDocs backup | ||
+ | cd /tmp | ||
+ | tar -xf ~/backups/MyDocs_backup.tar | ||
+ | |||
+ | * Boot your phone into boot manager and export eMMC to USB. On your linux box run the following commands to create an encrypted ext3 filesystem on mmcblk0p2 | ||
+ | cryptsetup luksFormat /dev/sdX2 # Confirm by typing YES, specify a looong passphrase | ||
+ | cryptsetup luksOpen /dev/sdX2 n900 | ||
+ | mkfs.ext3 /dev/mapper/n900 | ||
+ | |||
+ | * Now you can restore your optfs backup to the encrypted partition | ||
+ | mount /dev/mapper/n900 /mnt | ||
+ | cd /mnt | ||
+ | tar -xf /tmp/systemBackups/optfs.tar | ||
+ | umount /mnt | ||
+ | cryptsetup luksClose n900 | ||
+ | |||
+ | * Reboot your phone and enjoy the password prompt! | ||
+ | |||
+ | = SD card usage = | ||
+ | == Testing == | ||
+ | == Alignment == | ||
+ | == Swap on SD card == | ||
+ | To avoid concurrent I/O access to swap and optfs (both mmcblk0), move swap to your SD card (mmcblk1) | ||
+ | * On your SD card create a swap partition /dev/mmcblk1pX of approx. 1.5GiB | ||
+ | * Edit /etc/event.d/rcS-late and change the line | ||
+ | /sbin/cryptsetup -d /dev/urandom create swapenc /dev/mmcblk0p3 | ||
+ | |||
+ | to | ||
+ | |||
+ | /sbin/cryptsetup -d /dev/urandom create swapenc /dev/mmcblk1pX | ||
+ | |||
+ | |||
+ | === More swap tweaks === | ||
+ | /* TODO: Find current best practice for running swap on sd card */ | ||
+ | * [http://wiki.maemo.org/Ereswap Fight swap fragmentation] | ||
+ | * [http://wiki.maemo.org/Swap_on_microSD#Using_microSD_partition_as_swap Swap on wiki] | ||
+ | |||
+ | = Miscellaneous = | ||
+ | == VoIP == | ||
+ | === Encrypted SIP === | ||
+ | * linphone | ||
+ | |||
+ | == eMail == | ||
+ | === GPG support === | ||
+ | * mutt | ||
+ | * claws | ||
+ | * patches for modest anyone? | ||
+ | |||
+ | == Camera == | ||
+ | * pcam | ||
+ | * stock/cssu | ||
+ | * blessn900 | ||
+ | * fcam | ||
+ | * hdr | ||
+ | * lowlight | ||
== Watch 720p movies == | == Watch 720p movies == | ||
- | [http://talk.maemo.org/showthread.php?t=77695 | + | [http://talk.maemo.org/showthread.php?t=77695 HD movie guide] |
- | == | + | == Synchronization == |
- | + | === dpush === | |
+ | === Certificates === | ||
+ | === Client configuration === | ||
- | [[ | + | == Battery calibration == |
+ | |||
+ | == Unbricking == | ||
+ | === Dead battery === | ||
+ | |||
+ | = Additional information = | ||
+ | * [http://talk.maemo.org The one and only] | ||
+ | * [http://talk.maemo.org/showthread.php?t=88707 Repository Mirrors] | ||
+ | * [http://symbians60soft.blogspot.com Blog still posting some maemo news] | ||
= Credits = | = Credits = | ||
My thanks go to jebba, titan, pali, NIN101, MentalistTraceur, sixwheeledbeast, DocScrutinizer05, sEKI, kerio, freemangordon, qwazix, ShadowJK and everyone on #maemo | My thanks go to jebba, titan, pali, NIN101, MentalistTraceur, sixwheeledbeast, DocScrutinizer05, sEKI, kerio, freemangordon, qwazix, ShadowJK and everyone on #maemo | ||
- | + | [[Category:Power users]] | |
- | + | ||
- | + | ||
- | [[Category: | + | |
[[Category:N900]] | [[Category:N900]] |
Learn more about Contributing to the wiki.