<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://maemo.octonezd.me/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=212.98.176.106</id>
	<title>Maemo Wiki Mirror - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://maemo.octonezd.me/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=212.98.176.106"/>
	<link rel="alternate" type="text/html" href="https://maemo.octonezd.me/index.php/Special:Contributions/212.98.176.106"/>
	<updated>2026-04-22T13:58:03Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.45.1</generator>
	<entry>
		<id>https://maemo.octonezd.me/index.php?title=Gentoo/N900&amp;diff=12395</id>
		<title>Gentoo/N900</title>
		<link rel="alternate" type="text/html" href="https://maemo.octonezd.me/index.php?title=Gentoo/N900&amp;diff=12395"/>
		<updated>2016-01-02T22:54:31Z</updated>

		<summary type="html">&lt;p&gt;212.98.176.106: /* Installation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is the official page for the unofficial port of Gentoo to N900 internet tablets.&lt;br /&gt;
&lt;br /&gt;
If you have any questions/troubles, you can find me on freenode [irc://chat.freenode.net/maemo #maemo] and [irc://chat.freenode.net/gentoo-embededded #gentoo-embedded] ([http://webchat.freenode.net/?channels=%23Maemo,%23Gentoo-Embedded webchat]).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Bootable with X, WiFi, SMS, and GPRS&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Overview / Todo list ==&lt;br /&gt;
* &amp;lt;s&amp;gt;Main display&amp;lt;/s&amp;gt;&lt;br /&gt;
* Battery charger daemon (or kernel integration)&lt;br /&gt;
* &amp;lt;s&amp;gt;Keyboard (X11)&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;GPRS/UMTS data connections&amp;lt;/s&amp;gt;&lt;br /&gt;
** &amp;lt;s&amp;gt;Integrated with Gentoo network subsystems&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;SMS&amp;lt;/s&amp;gt;&lt;br /&gt;
* Audio output (NOT SAFE: see highpass filter)&lt;br /&gt;
* Voice calls&lt;br /&gt;
** Cellular&lt;br /&gt;
** Ring/vibrate&lt;br /&gt;
** SIP&lt;br /&gt;
** XMPP&lt;br /&gt;
* &amp;lt;s&amp;gt;Front camera&amp;lt;/s&amp;gt;&lt;br /&gt;
** Camera button&lt;br /&gt;
** Autofocus&lt;br /&gt;
* Usable GUI&lt;br /&gt;
** Razor-qt?&lt;br /&gt;
** KDE Plasma Active?&lt;br /&gt;
* Video calls (webcam)&lt;br /&gt;
** Skype support?&lt;br /&gt;
* Flashlight (SAFETY RESTRICTIONS NEEDED)&lt;br /&gt;
* GPS (gpsd driver)&lt;br /&gt;
** Road navigation&lt;br /&gt;
** Dead reckoning w/ accelerometers?&lt;br /&gt;
** [http://talk.maemo.org/showthread.php?t=72497 Cellular]&lt;br /&gt;
* [https://gitorious.org/community-ssu/maemo-tvout-control/trees/master/src TV out]&lt;br /&gt;
* FM transmitter&lt;br /&gt;
* Keyboard (console)&lt;br /&gt;
* Bluetooth&lt;br /&gt;
** Headset&lt;br /&gt;
** GPS&lt;br /&gt;
** ??&lt;br /&gt;
* Infrared transmitter&lt;br /&gt;
* 3D acceleration&lt;br /&gt;
* FM receiver&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
=== Partitioning ===&lt;br /&gt;
&lt;br /&gt;
If you use the internal memory card, be sure to leave your Maemo partitions in the same partition order as before (unless you don&#039;t want to run Maemo anymore, of course)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Unless you&#039;re super-careful doing this, you will probably lose all the data on the partitions you change. Backup!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
First, dump your current partition layout:&lt;br /&gt;
 sfdisk -d /dev/mmcblk0 &amp;gt; ptable&lt;br /&gt;
Now, edit the ptable file with your favourite editor and load the modified one:&lt;br /&gt;
 sfdisk --no-reread /dev/mmcblk0 &amp;lt; ptable&lt;br /&gt;
&lt;br /&gt;
Here is how I partitioned my internal SSD:&lt;br /&gt;
 unit: sectors&lt;br /&gt;
 /dev/mmcblk0p1 : start=       64, size=  4194304, Id= c&lt;br /&gt;
 /dev/mmcblk0p2 : start= 56631360, size=  4194304, Id=83&lt;br /&gt;
 /dev/mmcblk0p3 : start= 60825664, size=  1572864, Id=82&lt;br /&gt;
 /dev/mmcblk0p4 : start=  4194368, size= 52436992, Id= 5&lt;br /&gt;
 /dev/mmcblk0p5 : start=  4194384, size= 20971568, Id=83&lt;br /&gt;
 /dev/mmcblk0p6 : start= 25165968, size= 31465392, Id=83&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you&#039;re more conforable with standard Linux fdisk, [https://garage.maemo.org/plugins/wiki/index.php?RepartitionInstructions&amp;amp;id=1382&amp;amp;type=g supposedly] [http://archive.debian.org/debian/pool/main/u/util-linux/util-linux_2.13.1.1-1_armel.deb the deb from Debian Lenny] works.&lt;br /&gt;
See the [http://www.gentoo.org/doc/en/handbook/handbook-arm.xml?part=1&amp;amp;chap=4#doc_chap3 official Gentoo handbook] if you need help using fdisk to edit your partition table.&lt;br /&gt;
&lt;br /&gt;
===Creating Filesystems===&lt;br /&gt;
&lt;br /&gt;
Since you are installing on a SSD that may very well queue its writes out of order, ext3 and other journaling filesystems designed for magnetic/write-in-order drives are generally a bad idea and may be very dangerous to use.&lt;br /&gt;
If you&#039;re using an old kernel, such as the original Fremantle kernel, you&#039;ll have to stick to ext2. If you are using a recent &amp;quot;power&amp;quot; kernel (or modern kernel), you can use ext4 without journal support (but possibly these do not have ext4 ACLs/xattrs enabled).&lt;br /&gt;
&lt;br /&gt;
I recommend making swap on an external MicroSD so when you destroy it, it can be replaced (unlike the internal one).&lt;br /&gt;
&lt;br /&gt;
===Mounting===&lt;br /&gt;
&lt;br /&gt;
Due to Maemo using the FHS /media for other partitions, I chose to use it for the Gentoo mount too. You can use Gentoo&#039;s standard /mnt here if you want, I think.&lt;br /&gt;
&lt;br /&gt;
 mount -t ext2 /dev/mmcblk0p5 /mnt/gentoo&lt;br /&gt;
&lt;br /&gt;
===Installing Gentoo===&lt;br /&gt;
&lt;br /&gt;
Be sure your system clock is correct before proceeding. Weird things happen when it&#039;s not.&lt;br /&gt;
&lt;br /&gt;
Download [http://distfiles.gentoo.org/experimental/arm/musl/ the latest *vanilla* armv7a_hardfp musl stage3 from Gentoo].&lt;br /&gt;
Note that standard glibc stage3 will no longer work as it includes glibc 2.20, which is incompatible with the older kernels needed for N900.&lt;br /&gt;
You could try uclibc instead, but nobody has tried that thus far, so you&#039;re on your own.&lt;br /&gt;
&lt;br /&gt;
Just in case, download the .DIGESTS file too, and verify your download with:&lt;br /&gt;
 grep -A1 SHA512 stage3-*DIGESTS | sha512sum -c&lt;br /&gt;
&lt;br /&gt;
Now, proceed to unpack the stage3:&lt;br /&gt;
 cd /media/gentoo&lt;br /&gt;
 tar xvjpf stage3-*.tar.bz2&lt;br /&gt;
&lt;br /&gt;
Configure your compile options (/media/gentoo/etc/portage/make.conf) next.&lt;br /&gt;
&lt;br /&gt;
Recommended (only safe to use unmodified for musl hardfp ABI!):&lt;br /&gt;
 CHOST=&amp;quot;armv7a-hardfloat-linux-musleabi&amp;quot;&lt;br /&gt;
 # WARNING: -mthumb -mthumb-interwork require a Thumb-safe kernel! Remove them otherwise.&lt;br /&gt;
 CFLAGS=&amp;quot;-O2 -pipe -mcpu=cortex-a8 -mfpu=neon -mfloat-abi=hard -mthumb -mthumb-interwork&amp;quot;&lt;br /&gt;
 CXXFLAGS=&amp;quot;${CFLAGS}&amp;quot;&lt;br /&gt;
 ASFLAGS=&amp;quot;-mcpu=cortex-a8 -mfpu=neon -mfloat-abi=hard -mthumb -mthumb-interwork&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 # Distcc is a good idea, if you [http://www.gentoo.org/doc/en/cross-compiling-distcc.xml setup a cross-compiler on another Gentoo system]&lt;br /&gt;
 FEATURES=&amp;quot;${FEATURES} distcc&amp;quot;&lt;br /&gt;
 # MAKEOPTS -jN should probably be the number of systems in your distcc array; but never more than 2 when building KDE software (meinproc uses a lot of memory and won&#039;t be distributed)!&lt;br /&gt;
 MAKEOPTS=&amp;quot;-j2&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 # Since the N900 doesn&#039;t have a lot of RAM, you&#039;ll probably need to sacrifice some CPU time to minimize memory usage&lt;br /&gt;
 LDFLAGS=&amp;quot;${LDFLAGS} -Wl,--no-keep-memory -Wl,--reduce-memory-overheads&amp;quot;&lt;br /&gt;
 # The following thing increased building times of some packages (paludis and cryptography, for instance) insanely and the man page suggests it is of questionable utility&lt;br /&gt;
 CFLAGS=&amp;quot;${CFLAGS} --param ggc-min-expand=0 --param ggc-min-heapsize=32768&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 PORTAGE_NICENESS=&amp;quot;10&amp;quot;&lt;br /&gt;
 PORTAGE_IONICE_COMMAND=&amp;quot;ionice -c 3 -p \${PID}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===Chroot===&lt;br /&gt;
 cp -L /etc/resolv.conf etc/&lt;br /&gt;
 mount -t proc proc proc&lt;br /&gt;
 mount -o bind /dev dev&lt;br /&gt;
 mount -t devpts devpts dev/pts&lt;br /&gt;
 env -i chroot . /bin/bash&lt;br /&gt;
 env-update&lt;br /&gt;
 source /etc/profile&lt;br /&gt;
 export PS1=&amp;quot;(chroot) $PS1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===Install and configure the Portage tree, with N900 overlay===&lt;br /&gt;
 emerge --sync --quiet&lt;br /&gt;
 USE=&#039;-* git curl ssl curl_ssl_openssl python_targets_python2_7&#039; emerge layman&lt;br /&gt;
 # be sure to follow layman post-install instructions to edit make.conf&lt;br /&gt;
 layman -fa n900&lt;br /&gt;
 eselect profile set n900:n900/armv7a-hardfloat-linux-musleabi&lt;br /&gt;
 layman -a musl&lt;br /&gt;
&lt;br /&gt;
===Configure timezone===&lt;br /&gt;
 USE=-nls emerge -1 timezone-data&amp;lt;!-- timezone-data[nls] broken in current musl stage3 as of 2015-07-21 --&amp;gt;&lt;br /&gt;
 ls /usr/share/zoneinfo&lt;br /&gt;
 echo &amp;quot;UTC&amp;quot; &amp;gt; /etc/timezone&lt;br /&gt;
 emerge --config timezone-data&lt;br /&gt;
&lt;br /&gt;
==Booting==&lt;br /&gt;
&lt;br /&gt;
===Configuring your kernel===&lt;br /&gt;
If you just want to use your Maemo kernel, simply copy /lib/modules/* from your Maemo partition into Gentoo (you&#039;ll need to exit the chroot first) and emerge the appropriate kernel sources: fremantle-sources, fremantle-power-sources, and meego-sources are available.&lt;br /&gt;
&lt;br /&gt;
However, if you want to build one yourself (required for any custom kernel modules, or non-X11 console), follow these steps:&lt;br /&gt;
 emerge fremantle-power-sources&lt;br /&gt;
 cd /usr/src/linux&lt;br /&gt;
 make menuconfig&lt;br /&gt;
 # (configure the kernel as you like here)&lt;br /&gt;
 make &amp;amp;&amp;amp; make modules_install&lt;br /&gt;
 # (copy arch/arm/boot/zImage to your host system to flash as the N900&#039;s kernel)&lt;br /&gt;
&lt;br /&gt;
Note that this kernel will not boot Maemo without setting up the modules on the Maemo partition. I believe this is as simple as copying the directory and running depmod on that side, but I&#039;ll have to review it before I&#039;m sure.&lt;br /&gt;
&lt;br /&gt;
===Configuring your system etc===&lt;br /&gt;
All of these are optional if you just want a chroot.&lt;br /&gt;
&lt;br /&gt;
The following steps from Gentoo&#039;s official handbook are just fine here:&lt;br /&gt;
* [https://wiki.gentoo.org/wiki/Handbook:X86/Full/Installation#Filesystem_information Filesystem information]&lt;br /&gt;
* [https://wiki.gentoo.org/wiki/Handbook:X86/Full/Installation#Networking_information Networking information]&lt;br /&gt;
* [https://wiki.gentoo.org/wiki/Handbook:X86/Full/Installation#System_information System information]&lt;br /&gt;
* [https://wiki.gentoo.org/wiki/Handbook:X86/Full/Installation#System_logger System logger]&lt;br /&gt;
* [https://wiki.gentoo.org/wiki/Handbook:X86/Full/Installation#Optional:_Cron_daemon Optional: Cron daemon]&lt;br /&gt;
* [https://wiki.gentoo.org/wiki/Handbook:X86/Full/Installation#Optional:_File_indexing Optional: File indexing]&lt;br /&gt;
* [https://wiki.gentoo.org/wiki/Handbook:X86/Full/Installation#Optional:_Remote_access Optional: Remote access]&lt;br /&gt;
* [https://wiki.gentoo.org/wiki/Handbook:X86/Full/Installation#Filesystem_tools Filesystem tools]&lt;br /&gt;
* [https://wiki.gentoo.org/wiki/Handbook:X86/Full/Installation#Networking_tools Networking tools]&lt;br /&gt;
&lt;br /&gt;
===Installing N900-required stuff===&lt;br /&gt;
The n900-env metapackage should pull in all the essentials for your N900.&lt;br /&gt;
If you don&#039;t want some N900 functionality, you can change your USE flags in make.conf prior to installing it.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! USE flag !! Description&lt;br /&gt;
|-&lt;br /&gt;
| bluetooth || BlueZ and Bluetooth firmware&lt;br /&gt;
|-&lt;br /&gt;
| cellular or gps || Ofono&lt;br /&gt;
|-&lt;br /&gt;
| nokia-osso-linux || Maemo &amp;quot;bootmenu&amp;quot; compatibility&lt;br /&gt;
|-&lt;br /&gt;
| v4l || Camera firmware&lt;br /&gt;
|-&lt;br /&gt;
| wifi || Wifi firmware and tools&lt;br /&gt;
|-&lt;br /&gt;
| X || X11 drivers&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 emerge n900-env&lt;br /&gt;
&lt;br /&gt;
==X11 setup==&lt;br /&gt;
Create /etc/X11/xorg.conf with the following:&lt;br /&gt;
 Section &amp;quot;Device&amp;quot;&lt;br /&gt;
     Identifier &amp;quot;Configured Video Device&amp;quot;&lt;br /&gt;
     Driver &amp;quot;omapfb&amp;quot;&lt;br /&gt;
     Option &amp;quot;fb&amp;quot; &amp;quot;/dev/fb0&amp;quot;&lt;br /&gt;
 EndSection&lt;br /&gt;
 &lt;br /&gt;
 Section &amp;quot;InputClass&amp;quot;&lt;br /&gt;
     Identifier &amp;quot;calibration&amp;quot;&lt;br /&gt;
     MatchProduct &amp;quot;TSC2005 touchscreen&amp;quot;&lt;br /&gt;
     Option &amp;quot;Calibration&amp;quot; &amp;quot;194 3901 3739 241&amp;quot;&lt;br /&gt;
 EndSection&lt;br /&gt;
 &lt;br /&gt;
 Section &amp;quot;InputClass&amp;quot;&lt;br /&gt;
     Identifier  &amp;quot;keyboard&amp;quot;&lt;br /&gt;
     MatchProduct    &amp;quot;omap_twl4030keypad&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
     Option &amp;quot;XkbOptions&amp;quot; &amp;quot;grp:ctrl_shift_toggle&amp;quot;&lt;br /&gt;
     Option &amp;quot;XkbLayout&amp;quot; &amp;quot;nokia_vndr/rx-51(common)+nokia_vndr/rx-51(us)&amp;quot;&lt;br /&gt;
     Option &amp;quot;XkbModel&amp;quot; &amp;quot;nokia&amp;quot;&lt;br /&gt;
 EndSection&lt;br /&gt;
 &lt;br /&gt;
 Section &amp;quot;InputClass&amp;quot;&lt;br /&gt;
     Identifier &amp;quot;touchscreen&amp;quot;&lt;br /&gt;
     MatchProduct &amp;quot;TSC2005 touchscreen&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
     Driver &amp;quot;tslib&amp;quot;&lt;br /&gt;
     Option &amp;quot;EmulateRightButton&amp;quot;    &amp;quot;1&amp;quot;&lt;br /&gt;
 EndSection&lt;br /&gt;
&lt;br /&gt;
==Sound setup==&lt;br /&gt;
&lt;br /&gt;
This basically &amp;quot;just works&amp;quot;, but be careful when unmuting - it&#039;s possible to play audio that destroys the internal speakers! If you&#039;re experienced in writing highpass filters, please contact me to help resolve this.&lt;br /&gt;
&lt;br /&gt;
==Cellular setup==&lt;br /&gt;
&lt;br /&gt;
=== Install Ofono ===&lt;br /&gt;
 emerge net-misc/ofono&lt;br /&gt;
&lt;br /&gt;
===Configure GPRS networking===&lt;br /&gt;
 ln -s net.lo /etc/init.d/net.gprs0&lt;br /&gt;
Edit /etc/conf.d/net:&lt;br /&gt;
 rc_need_gprs0=&#039;ofono&#039;&lt;br /&gt;
 modem_gprs0=&#039;n9000&#039;  # The extra zero is the n900 instance number 0 :)&lt;br /&gt;
 context_apn_gprs0=&#039;epc-scpcf000.t-mobile.com&#039;  # Other providers need other APNs!&lt;br /&gt;
 context_protocol_gprs0=&#039;ipv6&#039;&lt;br /&gt;
&lt;br /&gt;
Start the GPRS interface:&lt;br /&gt;
 /etc/init.d/net.gprs0 start&lt;br /&gt;
&lt;br /&gt;
=== Send SMS ===&lt;br /&gt;
 ofono-send-sms n9000 15555551212 &#039;Hey there!&#039;&lt;br /&gt;
&lt;br /&gt;
=== Voice call ===&lt;br /&gt;
 ofono-dial-number n9000 15555551212&lt;br /&gt;
&lt;br /&gt;
Note the other end will probably get silence, and you won&#039;t hear them either.&lt;br /&gt;
I&#039;m working on an ALSA plugin to fix this.&lt;br /&gt;
&lt;br /&gt;
== WiFi setup ==&lt;br /&gt;
&lt;br /&gt;
 ln -s net.lo /etc/init.d/net.wlan0&lt;br /&gt;
Edit /etc/conf.d/net:&lt;br /&gt;
 mac_wlan0=&#039;00:1f:df:xx:xx:xx&#039;  # You MUST set this, or N900&#039;s wlan MAC won&#039;t be initialized!&lt;br /&gt;
 preferred_aps=&#039;my_wep_network my_public_network linksys etc&#039;&lt;br /&gt;
 key_my_wep_network=&#039;abcd-ef00-1234-5678-9abc-def0-12&#039;&lt;br /&gt;
 modules=&amp;quot;!wpa_supplicant&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Start the wlan interface:&lt;br /&gt;
 /etc/init.d/net.wlan0 start&lt;br /&gt;
&lt;br /&gt;
==Bluetooth setup==&lt;br /&gt;
&lt;br /&gt;
It&#039;s on my todo list, but not very high priority since I don&#039;t really use anything Bluetooth...&lt;br /&gt;
&lt;br /&gt;
==GPS setup==&lt;br /&gt;
&lt;br /&gt;
I&#039;ve reverse engineered the cellmo GPS protocols, and written [http://luke.dashjr.org/tmp/code/gps3.c a NMEA proxy] that mostly works with gpsd. When I get to properly integrating GPS support, I plan to write an actual gpsd driver so a proxy isn&#039;t needed.&lt;br /&gt;
&lt;br /&gt;
==Known problems==&lt;br /&gt;
===Webkit linking memory usage===&lt;br /&gt;
WebKit requires an absurd amount of memory to link. I build binary packages inside qemu when it needs to be bumped. I suggest you use them.&lt;br /&gt;
&lt;br /&gt;
==Modern kernel==&lt;br /&gt;
Current status: http://elinux.org/N900&lt;/div&gt;</summary>
		<author><name>212.98.176.106</name></author>
	</entry>
	<entry>
		<id>https://maemo.octonezd.me/index.php?title=Gentoo/N900&amp;diff=12396</id>
		<title>Gentoo/N900</title>
		<link rel="alternate" type="text/html" href="https://maemo.octonezd.me/index.php?title=Gentoo/N900&amp;diff=12396"/>
		<updated>2016-01-02T22:54:08Z</updated>

		<summary type="html">&lt;p&gt;212.98.176.106: /* Installation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is the official page for the unofficial port of Gentoo to N900 internet tablets.&lt;br /&gt;
&lt;br /&gt;
If you have any questions/troubles, you can find me on freenode [irc://chat.freenode.net/maemo #maemo] and [irc://chat.freenode.net/gentoo-embededded #gentoo-embedded] ([http://webchat.freenode.net/?channels=%23Maemo,%23Gentoo-Embedded webchat]).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Bootable with X, WiFi, SMS, and GPRS&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Overview / Todo list ==&lt;br /&gt;
* &amp;lt;s&amp;gt;Main display&amp;lt;/s&amp;gt;&lt;br /&gt;
* Battery charger daemon (or kernel integration)&lt;br /&gt;
* &amp;lt;s&amp;gt;Keyboard (X11)&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;GPRS/UMTS data connections&amp;lt;/s&amp;gt;&lt;br /&gt;
** &amp;lt;s&amp;gt;Integrated with Gentoo network subsystems&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;SMS&amp;lt;/s&amp;gt;&lt;br /&gt;
* Audio output (NOT SAFE: see highpass filter)&lt;br /&gt;
* Voice calls&lt;br /&gt;
** Cellular&lt;br /&gt;
** Ring/vibrate&lt;br /&gt;
** SIP&lt;br /&gt;
** XMPP&lt;br /&gt;
* &amp;lt;s&amp;gt;Front camera&amp;lt;/s&amp;gt;&lt;br /&gt;
** Camera button&lt;br /&gt;
** Autofocus&lt;br /&gt;
* Usable GUI&lt;br /&gt;
** Razor-qt?&lt;br /&gt;
** KDE Plasma Active?&lt;br /&gt;
* Video calls (webcam)&lt;br /&gt;
** Skype support?&lt;br /&gt;
* Flashlight (SAFETY RESTRICTIONS NEEDED)&lt;br /&gt;
* GPS (gpsd driver)&lt;br /&gt;
** Road navigation&lt;br /&gt;
** Dead reckoning w/ accelerometers?&lt;br /&gt;
** [http://talk.maemo.org/showthread.php?t=72497 Cellular]&lt;br /&gt;
* [https://gitorious.org/community-ssu/maemo-tvout-control/trees/master/src TV out]&lt;br /&gt;
* FM transmitter&lt;br /&gt;
* Keyboard (console)&lt;br /&gt;
* Bluetooth&lt;br /&gt;
** Headset&lt;br /&gt;
** GPS&lt;br /&gt;
** ??&lt;br /&gt;
* Infrared transmitter&lt;br /&gt;
* 3D acceleration&lt;br /&gt;
* FM receiver&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
---&lt;br /&gt;
=== Partitioning ===&lt;br /&gt;
&lt;br /&gt;
If you use the internal memory card, be sure to leave your Maemo partitions in the same partition order as before (unless you don&#039;t want to run Maemo anymore, of course)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Unless you&#039;re super-careful doing this, you will probably lose all the data on the partitions you change. Backup!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
First, dump your current partition layout:&lt;br /&gt;
 sfdisk -d /dev/mmcblk0 &amp;gt; ptable&lt;br /&gt;
Now, edit the ptable file with your favourite editor and load the modified one:&lt;br /&gt;
 sfdisk --no-reread /dev/mmcblk0 &amp;lt; ptable&lt;br /&gt;
&lt;br /&gt;
Here is how I partitioned my internal SSD:&lt;br /&gt;
 unit: sectors&lt;br /&gt;
 /dev/mmcblk0p1 : start=       64, size=  4194304, Id= c&lt;br /&gt;
 /dev/mmcblk0p2 : start= 56631360, size=  4194304, Id=83&lt;br /&gt;
 /dev/mmcblk0p3 : start= 60825664, size=  1572864, Id=82&lt;br /&gt;
 /dev/mmcblk0p4 : start=  4194368, size= 52436992, Id= 5&lt;br /&gt;
 /dev/mmcblk0p5 : start=  4194384, size= 20971568, Id=83&lt;br /&gt;
 /dev/mmcblk0p6 : start= 25165968, size= 31465392, Id=83&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you&#039;re more conforable with standard Linux fdisk, [https://garage.maemo.org/plugins/wiki/index.php?RepartitionInstructions&amp;amp;id=1382&amp;amp;type=g supposedly] [http://archive.debian.org/debian/pool/main/u/util-linux/util-linux_2.13.1.1-1_armel.deb the deb from Debian Lenny] works.&lt;br /&gt;
See the [http://www.gentoo.org/doc/en/handbook/handbook-arm.xml?part=1&amp;amp;chap=4#doc_chap3 official Gentoo handbook] if you need help using fdisk to edit your partition table.&lt;br /&gt;
&lt;br /&gt;
===Creating Filesystems===&lt;br /&gt;
&lt;br /&gt;
Since you are installing on a SSD that may very well queue its writes out of order, ext3 and other journaling filesystems designed for magnetic/write-in-order drives are generally a bad idea and may be very dangerous to use.&lt;br /&gt;
If you&#039;re using an old kernel, such as the original Fremantle kernel, you&#039;ll have to stick to ext2. If you are using a recent &amp;quot;power&amp;quot; kernel (or modern kernel), you can use ext4 without journal support (but possibly these do not have ext4 ACLs/xattrs enabled).&lt;br /&gt;
&lt;br /&gt;
I recommend making swap on an external MicroSD so when you destroy it, it can be replaced (unlike the internal one).&lt;br /&gt;
&lt;br /&gt;
===Mounting===&lt;br /&gt;
&lt;br /&gt;
Due to Maemo using the FHS /media for other partitions, I chose to use it for the Gentoo mount too. You can use Gentoo&#039;s standard /mnt here if you want, I think.&lt;br /&gt;
&lt;br /&gt;
 mount -t ext2 /dev/mmcblk0p5 /mnt/gentoo&lt;br /&gt;
&lt;br /&gt;
===Installing Gentoo===&lt;br /&gt;
&lt;br /&gt;
Be sure your system clock is correct before proceeding. Weird things happen when it&#039;s not.&lt;br /&gt;
&lt;br /&gt;
Download [http://distfiles.gentoo.org/experimental/arm/musl/ the latest *vanilla* armv7a_hardfp musl stage3 from Gentoo].&lt;br /&gt;
Note that standard glibc stage3 will no longer work as it includes glibc 2.20, which is incompatible with the older kernels needed for N900.&lt;br /&gt;
You could try uclibc instead, but nobody has tried that thus far, so you&#039;re on your own.&lt;br /&gt;
&lt;br /&gt;
Just in case, download the .DIGESTS file too, and verify your download with:&lt;br /&gt;
 grep -A1 SHA512 stage3-*DIGESTS | sha512sum -c&lt;br /&gt;
&lt;br /&gt;
Now, proceed to unpack the stage3:&lt;br /&gt;
 cd /media/gentoo&lt;br /&gt;
 tar xvjpf stage3-*.tar.bz2&lt;br /&gt;
&lt;br /&gt;
Configure your compile options (/media/gentoo/etc/portage/make.conf) next.&lt;br /&gt;
&lt;br /&gt;
Recommended (only safe to use unmodified for musl hardfp ABI!):&lt;br /&gt;
 CHOST=&amp;quot;armv7a-hardfloat-linux-musleabi&amp;quot;&lt;br /&gt;
 # WARNING: -mthumb -mthumb-interwork require a Thumb-safe kernel! Remove them otherwise.&lt;br /&gt;
 CFLAGS=&amp;quot;-O2 -pipe -mcpu=cortex-a8 -mfpu=neon -mfloat-abi=hard -mthumb -mthumb-interwork&amp;quot;&lt;br /&gt;
 CXXFLAGS=&amp;quot;${CFLAGS}&amp;quot;&lt;br /&gt;
 ASFLAGS=&amp;quot;-mcpu=cortex-a8 -mfpu=neon -mfloat-abi=hard -mthumb -mthumb-interwork&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 # Distcc is a good idea, if you [http://www.gentoo.org/doc/en/cross-compiling-distcc.xml setup a cross-compiler on another Gentoo system]&lt;br /&gt;
 FEATURES=&amp;quot;${FEATURES} distcc&amp;quot;&lt;br /&gt;
 # MAKEOPTS -jN should probably be the number of systems in your distcc array; but never more than 2 when building KDE software (meinproc uses a lot of memory and won&#039;t be distributed)!&lt;br /&gt;
 MAKEOPTS=&amp;quot;-j2&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 # Since the N900 doesn&#039;t have a lot of RAM, you&#039;ll probably need to sacrifice some CPU time to minimize memory usage&lt;br /&gt;
 LDFLAGS=&amp;quot;${LDFLAGS} -Wl,--no-keep-memory -Wl,--reduce-memory-overheads&amp;quot;&lt;br /&gt;
 # The following thing increased building times of some packages (paludis and cryptography, for instance) insanely and the man page suggests it is of questionable utility&lt;br /&gt;
 CFLAGS=&amp;quot;${CFLAGS} --param ggc-min-expand=0 --param ggc-min-heapsize=32768&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 PORTAGE_NICENESS=&amp;quot;10&amp;quot;&lt;br /&gt;
 PORTAGE_IONICE_COMMAND=&amp;quot;ionice -c 3 -p \${PID}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===Chroot===&lt;br /&gt;
 cp -L /etc/resolv.conf etc/&lt;br /&gt;
 mount -t proc proc proc&lt;br /&gt;
 mount -o bind /dev dev&lt;br /&gt;
 mount -t devpts devpts dev/pts&lt;br /&gt;
 env -i chroot . /bin/bash&lt;br /&gt;
 env-update&lt;br /&gt;
 source /etc/profile&lt;br /&gt;
 export PS1=&amp;quot;(chroot) $PS1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===Install and configure the Portage tree, with N900 overlay===&lt;br /&gt;
 emerge --sync --quiet&lt;br /&gt;
 USE=&#039;-* git curl ssl curl_ssl_openssl python_targets_python2_7&#039; emerge layman&lt;br /&gt;
 # be sure to follow layman post-install instructions to edit make.conf&lt;br /&gt;
 layman -fa n900&lt;br /&gt;
 eselect profile set n900:n900/armv7a-hardfloat-linux-musleabi&lt;br /&gt;
 layman -a musl&lt;br /&gt;
&lt;br /&gt;
===Configure timezone===&lt;br /&gt;
 USE=-nls emerge -1 timezone-data&amp;lt;!-- timezone-data[nls] broken in current musl stage3 as of 2015-07-21 --&amp;gt;&lt;br /&gt;
 ls /usr/share/zoneinfo&lt;br /&gt;
 echo &amp;quot;UTC&amp;quot; &amp;gt; /etc/timezone&lt;br /&gt;
 emerge --config timezone-data&lt;br /&gt;
&lt;br /&gt;
==Booting==&lt;br /&gt;
&lt;br /&gt;
===Configuring your kernel===&lt;br /&gt;
If you just want to use your Maemo kernel, simply copy /lib/modules/* from your Maemo partition into Gentoo (you&#039;ll need to exit the chroot first) and emerge the appropriate kernel sources: fremantle-sources, fremantle-power-sources, and meego-sources are available.&lt;br /&gt;
&lt;br /&gt;
However, if you want to build one yourself (required for any custom kernel modules, or non-X11 console), follow these steps:&lt;br /&gt;
 emerge fremantle-power-sources&lt;br /&gt;
 cd /usr/src/linux&lt;br /&gt;
 make menuconfig&lt;br /&gt;
 # (configure the kernel as you like here)&lt;br /&gt;
 make &amp;amp;&amp;amp; make modules_install&lt;br /&gt;
 # (copy arch/arm/boot/zImage to your host system to flash as the N900&#039;s kernel)&lt;br /&gt;
&lt;br /&gt;
Note that this kernel will not boot Maemo without setting up the modules on the Maemo partition. I believe this is as simple as copying the directory and running depmod on that side, but I&#039;ll have to review it before I&#039;m sure.&lt;br /&gt;
&lt;br /&gt;
===Configuring your system etc===&lt;br /&gt;
All of these are optional if you just want a chroot.&lt;br /&gt;
&lt;br /&gt;
The following steps from Gentoo&#039;s official handbook are just fine here:&lt;br /&gt;
* [https://wiki.gentoo.org/wiki/Handbook:X86/Full/Installation#Filesystem_information Filesystem information]&lt;br /&gt;
* [https://wiki.gentoo.org/wiki/Handbook:X86/Full/Installation#Networking_information Networking information]&lt;br /&gt;
* [https://wiki.gentoo.org/wiki/Handbook:X86/Full/Installation#System_information System information]&lt;br /&gt;
* [https://wiki.gentoo.org/wiki/Handbook:X86/Full/Installation#System_logger System logger]&lt;br /&gt;
* [https://wiki.gentoo.org/wiki/Handbook:X86/Full/Installation#Optional:_Cron_daemon Optional: Cron daemon]&lt;br /&gt;
* [https://wiki.gentoo.org/wiki/Handbook:X86/Full/Installation#Optional:_File_indexing Optional: File indexing]&lt;br /&gt;
* [https://wiki.gentoo.org/wiki/Handbook:X86/Full/Installation#Optional:_Remote_access Optional: Remote access]&lt;br /&gt;
* [https://wiki.gentoo.org/wiki/Handbook:X86/Full/Installation#Filesystem_tools Filesystem tools]&lt;br /&gt;
* [https://wiki.gentoo.org/wiki/Handbook:X86/Full/Installation#Networking_tools Networking tools]&lt;br /&gt;
&lt;br /&gt;
===Installing N900-required stuff===&lt;br /&gt;
The n900-env metapackage should pull in all the essentials for your N900.&lt;br /&gt;
If you don&#039;t want some N900 functionality, you can change your USE flags in make.conf prior to installing it.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! USE flag !! Description&lt;br /&gt;
|-&lt;br /&gt;
| bluetooth || BlueZ and Bluetooth firmware&lt;br /&gt;
|-&lt;br /&gt;
| cellular or gps || Ofono&lt;br /&gt;
|-&lt;br /&gt;
| nokia-osso-linux || Maemo &amp;quot;bootmenu&amp;quot; compatibility&lt;br /&gt;
|-&lt;br /&gt;
| v4l || Camera firmware&lt;br /&gt;
|-&lt;br /&gt;
| wifi || Wifi firmware and tools&lt;br /&gt;
|-&lt;br /&gt;
| X || X11 drivers&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 emerge n900-env&lt;br /&gt;
&lt;br /&gt;
==X11 setup==&lt;br /&gt;
Create /etc/X11/xorg.conf with the following:&lt;br /&gt;
 Section &amp;quot;Device&amp;quot;&lt;br /&gt;
     Identifier &amp;quot;Configured Video Device&amp;quot;&lt;br /&gt;
     Driver &amp;quot;omapfb&amp;quot;&lt;br /&gt;
     Option &amp;quot;fb&amp;quot; &amp;quot;/dev/fb0&amp;quot;&lt;br /&gt;
 EndSection&lt;br /&gt;
 &lt;br /&gt;
 Section &amp;quot;InputClass&amp;quot;&lt;br /&gt;
     Identifier &amp;quot;calibration&amp;quot;&lt;br /&gt;
     MatchProduct &amp;quot;TSC2005 touchscreen&amp;quot;&lt;br /&gt;
     Option &amp;quot;Calibration&amp;quot; &amp;quot;194 3901 3739 241&amp;quot;&lt;br /&gt;
 EndSection&lt;br /&gt;
 &lt;br /&gt;
 Section &amp;quot;InputClass&amp;quot;&lt;br /&gt;
     Identifier  &amp;quot;keyboard&amp;quot;&lt;br /&gt;
     MatchProduct    &amp;quot;omap_twl4030keypad&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
     Option &amp;quot;XkbOptions&amp;quot; &amp;quot;grp:ctrl_shift_toggle&amp;quot;&lt;br /&gt;
     Option &amp;quot;XkbLayout&amp;quot; &amp;quot;nokia_vndr/rx-51(common)+nokia_vndr/rx-51(us)&amp;quot;&lt;br /&gt;
     Option &amp;quot;XkbModel&amp;quot; &amp;quot;nokia&amp;quot;&lt;br /&gt;
 EndSection&lt;br /&gt;
 &lt;br /&gt;
 Section &amp;quot;InputClass&amp;quot;&lt;br /&gt;
     Identifier &amp;quot;touchscreen&amp;quot;&lt;br /&gt;
     MatchProduct &amp;quot;TSC2005 touchscreen&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
     Driver &amp;quot;tslib&amp;quot;&lt;br /&gt;
     Option &amp;quot;EmulateRightButton&amp;quot;    &amp;quot;1&amp;quot;&lt;br /&gt;
 EndSection&lt;br /&gt;
&lt;br /&gt;
==Sound setup==&lt;br /&gt;
&lt;br /&gt;
This basically &amp;quot;just works&amp;quot;, but be careful when unmuting - it&#039;s possible to play audio that destroys the internal speakers! If you&#039;re experienced in writing highpass filters, please contact me to help resolve this.&lt;br /&gt;
&lt;br /&gt;
==Cellular setup==&lt;br /&gt;
&lt;br /&gt;
=== Install Ofono ===&lt;br /&gt;
 emerge net-misc/ofono&lt;br /&gt;
&lt;br /&gt;
===Configure GPRS networking===&lt;br /&gt;
 ln -s net.lo /etc/init.d/net.gprs0&lt;br /&gt;
Edit /etc/conf.d/net:&lt;br /&gt;
 rc_need_gprs0=&#039;ofono&#039;&lt;br /&gt;
 modem_gprs0=&#039;n9000&#039;  # The extra zero is the n900 instance number 0 :)&lt;br /&gt;
 context_apn_gprs0=&#039;epc-scpcf000.t-mobile.com&#039;  # Other providers need other APNs!&lt;br /&gt;
 context_protocol_gprs0=&#039;ipv6&#039;&lt;br /&gt;
&lt;br /&gt;
Start the GPRS interface:&lt;br /&gt;
 /etc/init.d/net.gprs0 start&lt;br /&gt;
&lt;br /&gt;
=== Send SMS ===&lt;br /&gt;
 ofono-send-sms n9000 15555551212 &#039;Hey there!&#039;&lt;br /&gt;
&lt;br /&gt;
=== Voice call ===&lt;br /&gt;
 ofono-dial-number n9000 15555551212&lt;br /&gt;
&lt;br /&gt;
Note the other end will probably get silence, and you won&#039;t hear them either.&lt;br /&gt;
I&#039;m working on an ALSA plugin to fix this.&lt;br /&gt;
&lt;br /&gt;
== WiFi setup ==&lt;br /&gt;
&lt;br /&gt;
 ln -s net.lo /etc/init.d/net.wlan0&lt;br /&gt;
Edit /etc/conf.d/net:&lt;br /&gt;
 mac_wlan0=&#039;00:1f:df:xx:xx:xx&#039;  # You MUST set this, or N900&#039;s wlan MAC won&#039;t be initialized!&lt;br /&gt;
 preferred_aps=&#039;my_wep_network my_public_network linksys etc&#039;&lt;br /&gt;
 key_my_wep_network=&#039;abcd-ef00-1234-5678-9abc-def0-12&#039;&lt;br /&gt;
 modules=&amp;quot;!wpa_supplicant&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Start the wlan interface:&lt;br /&gt;
 /etc/init.d/net.wlan0 start&lt;br /&gt;
&lt;br /&gt;
==Bluetooth setup==&lt;br /&gt;
&lt;br /&gt;
It&#039;s on my todo list, but not very high priority since I don&#039;t really use anything Bluetooth...&lt;br /&gt;
&lt;br /&gt;
==GPS setup==&lt;br /&gt;
&lt;br /&gt;
I&#039;ve reverse engineered the cellmo GPS protocols, and written [http://luke.dashjr.org/tmp/code/gps3.c a NMEA proxy] that mostly works with gpsd. When I get to properly integrating GPS support, I plan to write an actual gpsd driver so a proxy isn&#039;t needed.&lt;br /&gt;
&lt;br /&gt;
==Known problems==&lt;br /&gt;
===Webkit linking memory usage===&lt;br /&gt;
WebKit requires an absurd amount of memory to link. I build binary packages inside qemu when it needs to be bumped. I suggest you use them.&lt;br /&gt;
&lt;br /&gt;
==Modern kernel==&lt;br /&gt;
Current status: http://elinux.org/N900&lt;/div&gt;</summary>
		<author><name>212.98.176.106</name></author>
	</entry>
</feed>